From d9e80b87174b12bad172ef607c26463ab61ded35 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Fri, 29 Oct 2021 12:55:13 +0100 Subject: [PATCH 01/69] Drupal 9.3.0-alpha1 --- composer.lock | 14 +++++--------- composer/Metapackage/CoreRecommended/composer.json | 2 +- .../PinnedDevDependencies/composer.json | 2 +- composer/Template/LegacyProject/composer.json | 2 +- composer/Template/RecommendedProject/composer.json | 2 +- core/lib/Drupal.php | 2 +- 6 files changed, 10 insertions(+), 14 deletions(-) diff --git a/composer.lock b/composer.lock index bd17fb09ea12..bb14932ffe85 100644 --- a/composer.lock +++ b/composer.lock @@ -531,7 +531,7 @@ }, { "name": "drupal/core", - "version": "9.3.x-dev", + "version": "9.3.0-alpha1", "dist": { "type": "path", "url": "core", @@ -787,7 +787,7 @@ }, { "name": "drupal/core-project-message", - "version": "9.3.x-dev", + "version": "9.3.0-alpha1", "dist": { "type": "path", "url": "composer/Plugin/ProjectMessage", @@ -820,7 +820,7 @@ }, { "name": "drupal/core-vendor-hardening", - "version": "9.3.x-dev", + "version": "9.3.0-alpha1", "dist": { "type": "path", "url": "composer/Plugin/VendorHardening", @@ -7900,11 +7900,7 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "drupal/core": 20, - "drupal/core-project-message": 20, - "drupal/core-vendor-hardening": 20 - }, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": [], @@ -7912,5 +7908,5 @@ "platform-overrides": { "php": "7.3.0" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.0.0" } diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 4c7f7ce41063..284cd31fdd59 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-strict": "*" }, "require": { - "drupal/core": "9.3.x-dev", + "drupal/core": "9.3.0-alpha1", "asm89/stack-cors": "1.3.0", "composer/semver": "3.2.5", "doctrine/annotations": "1.13.2", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index 1f0d0884e60b..d290e4a7bc9a 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-require-dev": "*" }, "require": { - "drupal/core": "9.3.x-dev", + "drupal/core": "9.3.0-alpha1", "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.2.11", diff --git a/composer/Template/LegacyProject/composer.json b/composer/Template/LegacyProject/composer.json index 1b1a2af337ab..9421705f8d01 100644 --- a/composer/Template/LegacyProject/composer.json +++ b/composer/Template/LegacyProject/composer.json @@ -27,7 +27,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "alpha", "prefer-stable": true, "config": { "sort-packages": true diff --git a/composer/Template/RecommendedProject/composer.json b/composer/Template/RecommendedProject/composer.json index 99e9f55f2394..b80e0a0f99b1 100644 --- a/composer/Template/RecommendedProject/composer.json +++ b/composer/Template/RecommendedProject/composer.json @@ -26,7 +26,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "alpha", "prefer-stable": true, "config": { "sort-packages": true diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php index 4ffa6c6f0b0b..be6569cb3c2b 100644 --- a/core/lib/Drupal.php +++ b/core/lib/Drupal.php @@ -75,7 +75,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '9.3.0-dev'; + const VERSION = '9.3.0-alpha1'; /** * Core API compatibility. -- GitLab From 4d1d79077bcbdafa7f8ec39b47f8584a97fab334 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Fri, 29 Oct 2021 12:55:13 +0100 Subject: [PATCH 02/69] Back to dev. --- composer.lock | 14 +++++++++----- composer/Metapackage/CoreRecommended/composer.json | 2 +- .../PinnedDevDependencies/composer.json | 2 +- composer/Template/LegacyProject/composer.json | 2 +- composer/Template/RecommendedProject/composer.json | 2 +- core/lib/Drupal.php | 2 +- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/composer.lock b/composer.lock index bb14932ffe85..bd17fb09ea12 100644 --- a/composer.lock +++ b/composer.lock @@ -531,7 +531,7 @@ }, { "name": "drupal/core", - "version": "9.3.0-alpha1", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "core", @@ -787,7 +787,7 @@ }, { "name": "drupal/core-project-message", - "version": "9.3.0-alpha1", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "composer/Plugin/ProjectMessage", @@ -820,7 +820,7 @@ }, { "name": "drupal/core-vendor-hardening", - "version": "9.3.0-alpha1", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "composer/Plugin/VendorHardening", @@ -7900,7 +7900,11 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": { + "drupal/core": 20, + "drupal/core-project-message": 20, + "drupal/core-vendor-hardening": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": [], @@ -7908,5 +7912,5 @@ "platform-overrides": { "php": "7.3.0" }, - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 284cd31fdd59..4c7f7ce41063 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-strict": "*" }, "require": { - "drupal/core": "9.3.0-alpha1", + "drupal/core": "9.3.x-dev", "asm89/stack-cors": "1.3.0", "composer/semver": "3.2.5", "doctrine/annotations": "1.13.2", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index d290e4a7bc9a..1f0d0884e60b 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-require-dev": "*" }, "require": { - "drupal/core": "9.3.0-alpha1", + "drupal/core": "9.3.x-dev", "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.2.11", diff --git a/composer/Template/LegacyProject/composer.json b/composer/Template/LegacyProject/composer.json index 9421705f8d01..1b1a2af337ab 100644 --- a/composer/Template/LegacyProject/composer.json +++ b/composer/Template/LegacyProject/composer.json @@ -27,7 +27,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "alpha", + "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true diff --git a/composer/Template/RecommendedProject/composer.json b/composer/Template/RecommendedProject/composer.json index b80e0a0f99b1..99e9f55f2394 100644 --- a/composer/Template/RecommendedProject/composer.json +++ b/composer/Template/RecommendedProject/composer.json @@ -26,7 +26,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "alpha", + "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php index be6569cb3c2b..4ffa6c6f0b0b 100644 --- a/core/lib/Drupal.php +++ b/core/lib/Drupal.php @@ -75,7 +75,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '9.3.0-alpha1'; + const VERSION = '9.3.0-dev'; /** * Core API compatibility. -- GitLab From beb3bf6e6ce2aa77647ff2cd5c512aa4f967f9bb Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Fri, 29 Oct 2021 19:17:25 +0100 Subject: [PATCH 03/69] Issue #3186992 by hinal05, djsagar, kiran.kadam911, hitvika_verma, tushar_sachdeva, chetanbharambe, ranjith_kumar_k_u, bnjmnm, BhumikaVarshney, Sakthivel M, Abhijith S, babusaheb.vikas, lauriii: Nav menu items can overflow outside of container (cherry picked from commit 4063e76cbe99607621b2a4b22ee75076a1ff72ec) --- .../olivero/css/components/navigation/nav-primary-wide.css | 4 ++-- .../css/components/navigation/nav-primary-wide.pcss.css | 2 +- core/themes/olivero/css/components/navigation/nav-primary.css | 1 + .../olivero/css/components/navigation/nav-primary.pcss.css | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/themes/olivero/css/components/navigation/nav-primary-wide.css b/core/themes/olivero/css/components/navigation/nav-primary-wide.css index 9b5ef1b5c040..625efe4484b6 100644 --- a/core/themes/olivero/css/components/navigation/nav-primary-wide.css +++ b/core/themes/olivero/css/components/navigation/nav-primary-wide.css @@ -111,8 +111,8 @@ } body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner { - padding-top: 2.25rem; - padding-bottom: 2.25rem + padding-top: 1.125rem; + padding-bottom: 1.125rem } body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner:after { diff --git a/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css b/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css index 65c7019c0d7a..16e196c0b290 100644 --- a/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css +++ b/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css @@ -82,7 +82,7 @@ body:not(.is-always-mobile-nav) { } & .primary-nav__menu-link-inner { - padding-block: var(--sp2); + padding-block: var(--sp1); padding-inline-start: 0; padding-inline-end: 0; diff --git a/core/themes/olivero/css/components/navigation/nav-primary.css b/core/themes/olivero/css/components/navigation/nav-primary.css index 4ef04d9538dd..c66931d62cc4 100644 --- a/core/themes/olivero/css/components/navigation/nav-primary.css +++ b/core/themes/olivero/css/components/navigation/nav-primary.css @@ -11,6 +11,7 @@ */ .primary-nav__menu { + flex-wrap: wrap; list-style: none; } diff --git a/core/themes/olivero/css/components/navigation/nav-primary.pcss.css b/core/themes/olivero/css/components/navigation/nav-primary.pcss.css index d8c68795dab3..cc7550e9ae66 100644 --- a/core/themes/olivero/css/components/navigation/nav-primary.pcss.css +++ b/core/themes/olivero/css/components/navigation/nav-primary.pcss.css @@ -6,6 +6,7 @@ @import "../../base/variables.pcss.css"; .primary-nav__menu { + flex-wrap: wrap; list-style: none; } -- GitLab From 3d8ead3c02edfd8ae92fb4ada3ab9bf690075b85 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Fri, 29 Oct 2021 19:19:05 +0100 Subject: [PATCH 04/69] Issue #3214170 by Sakthivel M, manojithape, mitthukumawat, tushar_sachdeva: Claro:The cancel button is not center-aligned in the layout builder (cherry picked from commit f4ff1b59da0f42edc77b7e5585d1411527cbd831) --- core/themes/claro/css/base/off-canvas.theme.css | 4 ++++ core/themes/claro/css/base/off-canvas.theme.pcss.css | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/core/themes/claro/css/base/off-canvas.theme.css b/core/themes/claro/css/base/off-canvas.theme.css index 5e2c412d5b1f..85074a9e59fd 100644 --- a/core/themes/claro/css/base/off-canvas.theme.css +++ b/core/themes/claro/css/base/off-canvas.theme.css @@ -81,3 +81,7 @@ #drupal-off-canvas .ui-widget-content a { color: #85bef4; } + +#drupal-off-canvas .form-actions { + display: block; +} diff --git a/core/themes/claro/css/base/off-canvas.theme.pcss.css b/core/themes/claro/css/base/off-canvas.theme.pcss.css index cafe85fd06d8..ef6ee19cf119 100644 --- a/core/themes/claro/css/base/off-canvas.theme.pcss.css +++ b/core/themes/claro/css/base/off-canvas.theme.pcss.css @@ -69,3 +69,7 @@ #drupal-off-canvas .ui-widget-content a { color: #85bef4; } + +#drupal-off-canvas .form-actions { + display: block; +} -- GitLab From 52524c98bc711c6bd5d8011919a67be997a80f53 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Fri, 29 Oct 2021 19:26:15 +0100 Subject: [PATCH 05/69] Issue #3246053 by quietone: Fix file_managed table for ds9.txt (cherry picked from commit a911353469be2f5ced57a3dd6d96551bafde5485) --- core/modules/migrate_drupal/tests/fixtures/drupal7.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php index 92c1788f8bcb..b7f16908737d 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php @@ -19142,7 +19142,7 @@ 'filename' => 'ds9.txt', 'uri' => 'public://ds9.txt', 'filemime' => 'text/plain', - 'filesize' => '4720', + 'filesize' => '4', 'status' => '1', 'timestamp' => '1421727516', )) -- GitLab From a0f291955f75d6340b9e5aefa0a55e96538829fd Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Sat, 30 Oct 2021 00:51:41 +0100 Subject: [PATCH 06/69] Issue #3227821 by wtrv: Broken svg element with "Auto convert linebreaks" (autop) filter (cherry picked from commit b3a30bae55de7c79bc8719a50cd097bf29b8b203) --- core/modules/filter/filter.module | 2 +- core/modules/filter/tests/src/Kernel/FilterKernelTest.php | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module index 70661d97ce86..04d73fce7aaf 100644 --- a/core/modules/filter/filter.module +++ b/core/modules/filter/filter.module @@ -690,7 +690,7 @@ function _filter_autop($text) { // to avoid messing up code. We look for matched pairs and allow basic // nesting. For example: // "processed <pre> ignored <script> ignored </script> ignored </pre> processed" - $chunks = preg_split('@(<!--.*?-->|</?(?:pre|script|style|object|iframe|drupal-media|!--)[^>]*>)@i', $text, -1, PREG_SPLIT_DELIM_CAPTURE); + $chunks = preg_split('@(<!--.*?-->|</?(?:pre|script|style|object|iframe|drupal-media|svg|!--)[^>]*>)@i', $text, -1, PREG_SPLIT_DELIM_CAPTURE); // Note: PHP ensures the array consists of alternating delimiters and literals // and begins and ends with a literal (inserting NULL as required). $ignore = FALSE; diff --git a/core/modules/filter/tests/src/Kernel/FilterKernelTest.php b/core/modules/filter/tests/src/Kernel/FilterKernelTest.php index f26a1b4286f1..f51f86a6710d 100644 --- a/core/modules/filter/tests/src/Kernel/FilterKernelTest.php +++ b/core/modules/filter/tests/src/Kernel/FilterKernelTest.php @@ -336,12 +336,14 @@ public function testLineBreakFilter() { <pre>aaa\nbbb\n\nccc</pre> <object>aaa\nbbb\n\nccc</object> <iframe>aaa\nbbb\n\nccc</iframe> +<svg>aaa\nbbb\n\nccc</svg> " => [ "<script>aaa\nbbb\n\nccc</script>" => TRUE, "<style>aaa\nbbb\n\nccc</style>" => TRUE, "<pre>aaa\nbbb\n\nccc</pre>" => TRUE, "<object>aaa\nbbb\n\nccc</object>" => TRUE, "<iframe>aaa\nbbb\n\nccc</iframe>" => TRUE, + "<svg>aaa\nbbb\n\nccc</svg>" => TRUE, ], // Skip comments entirely. "One. <!-- comment --> Two.\n<!--\nThree.\n-->\n" => [ -- GitLab From 16d107539f5023a14473488f9cbe4fbe266ffed7 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Mon, 1 Nov 2021 08:36:30 +0000 Subject: [PATCH 07/69] Issue #2569381 by alx_benjamin, init90, vasi, deepakaryan1988, Munavijayalakshmi, Lendude, DuaelFr, alexpott, dawehner: Drupal\views\Plugin\views\area\Result does an unnecessary XSS::adminFilter() (cherry picked from commit f5fdfe3165da71188e4bcb9a4d8491cc274da853) --- core/modules/views/src/Plugin/views/area/Result.php | 3 +-- .../test_views/views.view.test_area_result.yml | 2 +- core/modules/views/tests/src/Kernel/Handler/AreaResultTest.php | 3 +++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/modules/views/src/Plugin/views/area/Result.php b/core/modules/views/src/Plugin/views/area/Result.php index e8d194773282..6fc6805dbc93 100644 --- a/core/modules/views/src/Plugin/views/area/Result.php +++ b/core/modules/views/src/Plugin/views/area/Result.php @@ -3,7 +3,6 @@ namespace Drupal\views\Plugin\views\area; use Drupal\Component\Utility\Html; -use Drupal\Component\Utility\Xss; use Drupal\Core\Form\FormStateInterface; use Drupal\views\Plugin\views\style\DefaultSummary; @@ -114,7 +113,7 @@ public function render($empty = FALSE) { $replacements['@page_count'] = $page_count; // Send the output. if (!empty($total) || !empty($this->options['empty'])) { - $output .= Xss::filterAdmin(str_replace(array_keys($replacements), array_values($replacements), $format)); + $output .= str_replace(array_keys($replacements), array_values($replacements), $format); // Return as render array. return [ '#markup' => $output, diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_area_result.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_area_result.yml index 6b47f153f34f..05f574e59dd5 100644 --- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_area_result.yml +++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_area_result.yml @@ -50,7 +50,7 @@ display: group_type: group admin_label: '' empty: true - content: "start: @start | end: @end | total: @total | label: @label | per page: @per_page | current page: @current_page | current record count: @current_record_count | page count: @page_count" + content: "<script />start: @start | end: @end | total: @total | label: @label | per page: @per_page | current page: @current_page | current record count: @current_record_count | page count: @page_count" plugin_id: result display_plugin: default display_title: Default diff --git a/core/modules/views/tests/src/Kernel/Handler/AreaResultTest.php b/core/modules/views/tests/src/Kernel/Handler/AreaResultTest.php index 31e252aef2cf..a292e5c6a87a 100644 --- a/core/modules/views/tests/src/Kernel/Handler/AreaResultTest.php +++ b/core/modules/views/tests/src/Kernel/Handler/AreaResultTest.php @@ -29,6 +29,9 @@ public function testResult() { $output = \Drupal::service('renderer')->renderRoot($output); $this->setRawContent($output); $this->assertText('start: 1 | end: 5 | total: 5 | label: test_area_result | per page: 0 | current page: 1 | current record count: 5 | page count: 1'); + + // Make sure that potentially dangerous content was stripped. + $this->assertNoRaw('<script />'); } /** -- GitLab From 9d6d5264586a6e34cb4491233a5e09f7f87e2ff8 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Mon, 1 Nov 2021 09:39:31 +0000 Subject: [PATCH 08/69] Issue #3213644 by Beakerboy, daffie: StatementWrapperLegacyTest::testClientStatementMethod() should be less specific (cherry picked from commit 8512e0e93c587f06d82703fa8966635e37364c65) --- .../Core/Database/StatementWrapperLegacyTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/tests/Drupal/KernelTests/Core/Database/StatementWrapperLegacyTest.php b/core/tests/Drupal/KernelTests/Core/Database/StatementWrapperLegacyTest.php index 56609ee8a6a3..9c7457a58aab 100644 --- a/core/tests/Drupal/KernelTests/Core/Database/StatementWrapperLegacyTest.php +++ b/core/tests/Drupal/KernelTests/Core/Database/StatementWrapperLegacyTest.php @@ -20,7 +20,7 @@ class StatementWrapperLegacyTest extends DatabaseTestBase { */ protected function setUp(): void { parent::setUp(); - $this->statement = $this->connection->prepareStatement('SELECT * FROM {test}', []); + $this->statement = $this->connection->prepareStatement('SELECT id FROM {test}', []); if (!$this->statement instanceof StatementWrapper) { $this->markTestSkipped('This test only works for drivers implementing Drupal\Core\Database\StatementWrapper.'); } @@ -31,8 +31,8 @@ protected function setUp(): void { */ public function testQueryString() { $this->expectDeprecation('StatementWrapper::$queryString should not be accessed in drupal:9.1.0 and will error in drupal:10.0.0. Access the client-level statement object via ::getClientStatement(). See https://www.drupal.org/node/3177488'); - $this->assertStringContainsString('SELECT * FROM ', $this->statement->queryString); - $this->assertStringContainsString('SELECT * FROM ', $this->statement->getQueryString()); + $this->assertStringContainsString('SELECT id FROM ', $this->statement->queryString); + $this->assertStringContainsString('SELECT id FROM ', $this->statement->getQueryString()); } /** @@ -49,7 +49,7 @@ public function testMissingMethod() { public function testClientStatementMethod() { $this->expectDeprecation('StatementWrapper::columnCount should not be called in drupal:9.1.0 and will error in drupal:10.0.0. Access the client-level statement object via ::getClientStatement(). See https://www.drupal.org/node/3177488'); $this->statement->execute(); - $this->assertEquals(4, $this->statement->columnCount()); + $this->assertEquals(1, $this->statement->columnCount()); } /** -- GitLab From 24644b71a5f09c92f79e9860a3c6a53e73f7573c Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Mon, 1 Nov 2021 09:45:20 +0000 Subject: [PATCH 09/69] Issue #3246595 by andypost: Update dependencies for 9.3.x (cherry picked from commit 10ca9797ab0a97993f31b8227de9748d0790626c) --- composer.lock | 148 +++++++++--------- .../Metapackage/CoreRecommended/composer.json | 16 +- .../PinnedDevDependencies/composer.json | 8 +- 3 files changed, 86 insertions(+), 86 deletions(-) diff --git a/composer.lock b/composer.lock index bd17fb09ea12..a79552dad19b 100644 --- a/composer.lock +++ b/composer.lock @@ -215,16 +215,16 @@ }, { "name": "composer/semver", - "version": "3.2.5", + "version": "3.2.6", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" + "reference": "83e511e247de329283478496f7a1e114c9517506" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", + "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506", + "reference": "83e511e247de329283478496f7a1e114c9517506", "shasum": "" }, "require": { @@ -276,7 +276,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.5" + "source": "https://github.com/composer/semver/tree/3.2.6" }, "funding": [ { @@ -292,7 +292,7 @@ "type": "tidelift" } ], - "time": "2021-05-24T12:41:47+00:00" + "time": "2021-10-25T11:34:17+00:00" }, { "name": "doctrine/annotations", @@ -2206,16 +2206,16 @@ }, { "name": "symfony/console", - "version": "v4.4.30", + "version": "v4.4.33", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a3f7189a0665ee33b50e9e228c46f50f5acbed22" + "reference": "8dbd23ef7a8884051482183ddee8d9061b5feed0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a3f7189a0665ee33b50e9e228c46f50f5acbed22", - "reference": "a3f7189a0665ee33b50e9e228c46f50f5acbed22", + "url": "https://api.github.com/repos/symfony/console/zipball/8dbd23ef7a8884051482183ddee8d9061b5feed0", + "reference": "8dbd23ef7a8884051482183ddee8d9061b5feed0", "shasum": "" }, "require": { @@ -2276,7 +2276,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.30" + "source": "https://github.com/symfony/console/tree/v4.4.33" }, "funding": [ { @@ -2292,7 +2292,7 @@ "type": "tidelift" } ], - "time": "2021-08-25T19:27:26+00:00" + "time": "2021-10-25T16:36:08+00:00" }, { "name": "symfony/debug", @@ -2364,16 +2364,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v4.4.31", + "version": "v4.4.33", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "75dd7094870feaa5be9ed2b6b1efcfc2b7d3b9b4" + "reference": "ad364e599a4059db29c0aa424537e6ba668f54e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/75dd7094870feaa5be9ed2b6b1efcfc2b7d3b9b4", - "reference": "75dd7094870feaa5be9ed2b6b1efcfc2b7d3b9b4", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ad364e599a4059db29c0aa424537e6ba668f54e6", + "reference": "ad364e599a4059db29c0aa424537e6ba668f54e6", "shasum": "" }, "require": { @@ -2430,7 +2430,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v4.4.31" + "source": "https://github.com/symfony/dependency-injection/tree/v4.4.33" }, "funding": [ { @@ -2446,7 +2446,7 @@ "type": "tidelift" } ], - "time": "2021-09-21T06:20:06+00:00" + "time": "2021-10-17T07:04:24+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2826,16 +2826,16 @@ }, { "name": "symfony/http-foundation", - "version": "v4.4.30", + "version": "v4.4.33", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "09b3202651ab23ac8dcf455284a48a3500e56731" + "reference": "b9a91102f548e0111f4996e8c622fb1d1d479850" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/09b3202651ab23ac8dcf455284a48a3500e56731", - "reference": "09b3202651ab23ac8dcf455284a48a3500e56731", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b9a91102f548e0111f4996e8c622fb1d1d479850", + "reference": "b9a91102f548e0111f4996e8c622fb1d1d479850", "shasum": "" }, "require": { @@ -2874,7 +2874,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.30" + "source": "https://github.com/symfony/http-foundation/tree/v4.4.33" }, "funding": [ { @@ -2890,20 +2890,20 @@ "type": "tidelift" } ], - "time": "2021-08-26T15:51:23+00:00" + "time": "2021-10-07T15:31:35+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.32", + "version": "v4.4.33", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f7bda3ea8f05ae90627400e58af5179b25ce0f38" + "reference": "6f1fcca1154f782796549f4f4e5090bae9525c0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f7bda3ea8f05ae90627400e58af5179b25ce0f38", - "reference": "f7bda3ea8f05ae90627400e58af5179b25ce0f38", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6f1fcca1154f782796549f4f4e5090bae9525c0e", + "reference": "6f1fcca1154f782796549f4f4e5090bae9525c0e", "shasum": "" }, "require": { @@ -2978,7 +2978,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.32" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.33" }, "funding": [ { @@ -2994,7 +2994,7 @@ "type": "tidelift" } ], - "time": "2021-09-28T10:20:04+00:00" + "time": "2021-10-29T08:14:01+00:00" }, { "name": "symfony/mime", @@ -3813,16 +3813,16 @@ }, { "name": "symfony/serializer", - "version": "v4.4.31", + "version": "v4.4.33", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "a10b610f75349dbee1d3ad05c7a2cbf4f1872e34" + "reference": "5cb0dc3028e0f32888fed2d467b7762824fef843" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/a10b610f75349dbee1d3ad05c7a2cbf4f1872e34", - "reference": "a10b610f75349dbee1d3ad05c7a2cbf4f1872e34", + "url": "https://api.github.com/repos/symfony/serializer/zipball/5cb0dc3028e0f32888fed2d467b7762824fef843", + "reference": "5cb0dc3028e0f32888fed2d467b7762824fef843", "shasum": "" }, "require": { @@ -3887,7 +3887,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v4.4.31" + "source": "https://github.com/symfony/serializer/tree/v4.4.33" }, "funding": [ { @@ -3903,7 +3903,7 @@ "type": "tidelift" } ], - "time": "2021-09-17T08:50:49+00:00" + "time": "2021-09-27T18:46:41+00:00" }, { "name": "symfony/service-contracts", @@ -4153,16 +4153,16 @@ }, { "name": "symfony/validator", - "version": "v4.4.31", + "version": "v4.4.33", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "9420a2e8874263a684588283e40252209d80e1a5" + "reference": "ff0397aa280de38a631660f5aa8067cfbc519e11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/9420a2e8874263a684588283e40252209d80e1a5", - "reference": "9420a2e8874263a684588283e40252209d80e1a5", + "url": "https://api.github.com/repos/symfony/validator/zipball/ff0397aa280de38a631660f5aa8067cfbc519e11", + "reference": "ff0397aa280de38a631660f5aa8067cfbc519e11", "shasum": "" }, "require": { @@ -4239,7 +4239,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.31" + "source": "https://github.com/symfony/validator/tree/v4.4.33" }, "funding": [ { @@ -4255,20 +4255,20 @@ "type": "tidelift" } ], - "time": "2021-09-20T16:52:24+00:00" + "time": "2021-10-28T08:11:47+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.3.8", + "version": "v5.3.10", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "eaaea4098be1c90c8285543e1356a09c8aa5c8da" + "reference": "875432adb5f5570fff21036fd22aee244636b7d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/eaaea4098be1c90c8285543e1356a09c8aa5c8da", - "reference": "eaaea4098be1c90c8285543e1356a09c8aa5c8da", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/875432adb5f5570fff21036fd22aee244636b7d1", + "reference": "875432adb5f5570fff21036fd22aee244636b7d1", "shasum": "" }, "require": { @@ -4327,7 +4327,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.8" + "source": "https://github.com/symfony/var-dumper/tree/v5.3.10" }, "funding": [ { @@ -4343,7 +4343,7 @@ "type": "tidelift" } ], - "time": "2021-09-24T15:59:58+00:00" + "time": "2021-10-26T09:30:15+00:00" }, { "name": "symfony/yaml", @@ -4685,16 +4685,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.2.11", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "0b072d51c5a9c6f3412f7ea3ab043d6603cb2582" + "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/0b072d51c5a9c6f3412f7ea3ab043d6603cb2582", - "reference": "0b072d51c5a9c6f3412f7ea3ab043d6603cb2582", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", + "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", "shasum": "" }, "require": { @@ -4741,7 +4741,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.2.11" + "source": "https://github.com/composer/ca-bundle/tree/1.3.1" }, "funding": [ { @@ -4757,20 +4757,20 @@ "type": "tidelift" } ], - "time": "2021-09-25T20:32:43+00:00" + "time": "2021-10-28T20:44:15+00:00" }, { "name": "composer/composer", - "version": "2.1.9", + "version": "2.1.10", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "e558c88f28d102d497adec4852802c0dc14c7077" + "reference": "ea5f64d1a15c66942979b804c9fb3686be852ca0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/e558c88f28d102d497adec4852802c0dc14c7077", - "reference": "e558c88f28d102d497adec4852802c0dc14c7077", + "url": "https://api.github.com/repos/composer/composer/zipball/ea5f64d1a15c66942979b804c9fb3686be852ca0", + "reference": "ea5f64d1a15c66942979b804c9fb3686be852ca0", "shasum": "" }, "require": { @@ -4781,7 +4781,7 @@ "composer/xdebug-handler": "^2.0", "justinrainbow/json-schema": "^5.2.11", "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0", + "psr/log": "^1.0 || ^2.0", "react/promise": "^1.2 || ^2.7", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.0", @@ -4805,7 +4805,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-main": "2.1-dev" } }, "autoload": { @@ -4839,7 +4839,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.1.9" + "source": "https://github.com/composer/composer/tree/2.1.10" }, "funding": [ { @@ -4855,7 +4855,7 @@ "type": "tidelift" } ], - "time": "2021-10-05T07:47:38+00:00" + "time": "2021-10-29T20:34:57+00:00" }, { "name": "composer/metadata-minifier", @@ -7630,16 +7630,16 @@ }, { "name": "symfony/lock", - "version": "v4.4.27", + "version": "v4.4.33", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "6ca476d4ac992802f2a4043929f68f1818449486" + "reference": "567d29b1bc6e3937652054dafc069151d17824a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/6ca476d4ac992802f2a4043929f68f1818449486", - "reference": "6ca476d4ac992802f2a4043929f68f1818449486", + "url": "https://api.github.com/repos/symfony/lock/zipball/567d29b1bc6e3937652054dafc069151d17824a9", + "reference": "567d29b1bc6e3937652054dafc069151d17824a9", "shasum": "" }, "require": { @@ -7688,7 +7688,7 @@ "semaphore" ], "support": { - "source": "https://github.com/symfony/lock/tree/v4.4.27" + "source": "https://github.com/symfony/lock/tree/v4.4.33" }, "funding": [ { @@ -7704,20 +7704,20 @@ "type": "tidelift" } ], - "time": "2021-07-23T15:41:52+00:00" + "time": "2021-10-05T20:27:01+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v5.3.8", + "version": "v5.3.10", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "e9c0548d8d7abcd257f18f0adc0517895996a9c1" + "reference": "325aaf6302501ed3673cffbd3ba88db5949de8ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/e9c0548d8d7abcd257f18f0adc0517895996a9c1", - "reference": "e9c0548d8d7abcd257f18f0adc0517895996a9c1", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/325aaf6302501ed3673cffbd3ba88db5949de8ae", + "reference": "325aaf6302501ed3673cffbd3ba88db5949de8ae", "shasum": "" }, "require": { @@ -7771,7 +7771,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.3.8" + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.3.10" }, "funding": [ { @@ -7787,7 +7787,7 @@ "type": "tidelift" } ], - "time": "2021-09-14T13:57:08+00:00" + "time": "2021-10-28T19:22:18+00:00" }, { "name": "theseer/tokenizer", diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 4c7f7ce41063..4a1ebead515c 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -9,7 +9,7 @@ "require": { "drupal/core": "9.3.x-dev", "asm89/stack-cors": "1.3.0", - "composer/semver": "3.2.5", + "composer/semver": "3.2.6", "doctrine/annotations": "1.13.2", "doctrine/lexer": "1.2.1", "doctrine/reflection": "1.2.2", @@ -34,16 +34,16 @@ "ralouphie/getallheaders": "3.0.3", "stack/builder": "v1.0.6", "symfony-cmf/routing": "2.3.3", - "symfony/console": "v4.4.30", + "symfony/console": "v4.4.33", "symfony/debug": "v4.4.31", - "symfony/dependency-injection": "v4.4.31", + "symfony/dependency-injection": "v4.4.33", "symfony/deprecation-contracts": "v2.4.0", "symfony/error-handler": "v4.4.30", "symfony/event-dispatcher": "v4.4.30", "symfony/event-dispatcher-contracts": "v1.1.9", "symfony/http-client-contracts": "v2.4.0", - "symfony/http-foundation": "v4.4.30", - "symfony/http-kernel": "v4.4.32", + "symfony/http-foundation": "v4.4.33", + "symfony/http-kernel": "v4.4.33", "symfony/mime": "v5.3.8", "symfony/polyfill-ctype": "v1.23.0", "symfony/polyfill-iconv": "v1.23.0", @@ -54,12 +54,12 @@ "symfony/process": "v4.4.30", "symfony/psr-http-message-bridge": "v2.1.1", "symfony/routing": "v4.4.30", - "symfony/serializer": "v4.4.31", + "symfony/serializer": "v4.4.33", "symfony/service-contracts": "v2.4.0", "symfony/translation": "v4.4.32", "symfony/translation-contracts": "v2.4.0", - "symfony/validator": "v4.4.31", - "symfony/var-dumper": "v5.3.8", + "symfony/validator": "v4.4.33", + "symfony/var-dumper": "v5.3.10", "symfony/yaml": "v4.4.29", "twig/twig": "v2.14.7", "typo3/phar-stream-wrapper": "v3.1.7" diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index 1f0d0884e60b..671dc07e5393 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -10,8 +10,8 @@ "drupal/core": "9.3.x-dev", "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", - "composer/ca-bundle": "1.2.11", - "composer/composer": "2.1.9", + "composer/ca-bundle": "1.3.1", + "composer/composer": "2.1.10", "composer/metadata-minifier": "1.0.0", "composer/spdx-licenses": "1.5.5", "composer/xdebug-handler": "2.0.2", @@ -57,8 +57,8 @@ "symfony/dom-crawler": "v4.4.30", "symfony/filesystem": "v4.4.27", "symfony/finder": "v4.4.30", - "symfony/lock": "v4.4.27", - "symfony/phpunit-bridge": "v5.3.8", + "symfony/lock": "v4.4.33", + "symfony/phpunit-bridge": "v5.3.10", "theseer/tokenizer": "1.2.1", "webmozart/assert": "1.10.0" } -- GitLab From 12658bad82782ab2ddebe5d405cdcd3ec0fa9118 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Mon, 1 Nov 2021 10:17:29 +0000 Subject: [PATCH 10/69] Issue #3245820 by paul121, dww, eojthebrave: Remove references to removed node publish actions (cherry picked from commit 055054d592f935c150494d36285e1e3bed009d74) --- core/lib/Drupal/Core/Annotation/Action.php | 3 +-- core/lib/Drupal/Core/Field/FieldUpdateActionBase.php | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/core/lib/Drupal/Core/Annotation/Action.php b/core/lib/Drupal/Core/Annotation/Action.php index 9f215fc87a4d..3a5009cf5965 100644 --- a/core/lib/Drupal/Core/Annotation/Action.php +++ b/core/lib/Drupal/Core/Annotation/Action.php @@ -9,11 +9,10 @@ * * Plugin Namespace: Plugin\Action * - * For a working example, see \Drupal\node\Plugin\Action\UnpublishNode - * * @see \Drupal\Core\Action\ActionInterface * @see \Drupal\Core\Action\ActionManager * @see \Drupal\Core\Action\ActionBase + * @see \Drupal\Core\Action\Plugin\Action\UnpublishAction * @see plugin_api * * @Annotation diff --git a/core/lib/Drupal/Core/Field/FieldUpdateActionBase.php b/core/lib/Drupal/Core/Field/FieldUpdateActionBase.php index 03b5255b3701..b00872f9bec2 100644 --- a/core/lib/Drupal/Core/Field/FieldUpdateActionBase.php +++ b/core/lib/Drupal/Core/Field/FieldUpdateActionBase.php @@ -23,7 +23,7 @@ * } * @endcode * - * @see \Drupal\node\Plugin\Action\PublishNode + * @see \Drupal\Core\Action\Plugin\Action\PublishAction */ abstract class FieldUpdateActionBase extends ActionBase { -- GitLab From 32c93c8b9878096261da619b5e0ceb8a56cb4223 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Wed, 3 Nov 2021 10:42:55 +0000 Subject: [PATCH 11/69] Issue #3163663 by mpp, chrisolof, alexpott, quietone: Too many open files issue with migrating multiple files using "download" process plugin (cherry picked from commit 76b866462ddd7abe83975e4318eb938ef8a061e7) --- .../src/Plugin/migrate/process/Download.php | 4 ++++ .../tests/src/Kernel/process/DownloadTest.php | 14 ++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/modules/migrate/src/Plugin/migrate/process/Download.php b/core/modules/migrate/src/Plugin/migrate/process/Download.php index af7ca4070b17..aedb204d410a 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/Download.php +++ b/core/modules/migrate/src/Plugin/migrate/process/Download.php @@ -155,6 +155,10 @@ public function transform($value, MigrateExecutableInterface $migrate_executable throw new MigrateException("{$e->getMessage()} ($source)"); } + if (is_resource($destination_stream)) { + fclose($destination_stream); + } + return $final_destination; } diff --git a/core/modules/migrate/tests/src/Kernel/process/DownloadTest.php b/core/modules/migrate/tests/src/Kernel/process/DownloadTest.php index c6d63221a39c..a13f1f54ffa4 100644 --- a/core/modules/migrate/tests/src/Kernel/process/DownloadTest.php +++ b/core/modules/migrate/tests/src/Kernel/process/DownloadTest.php @@ -34,7 +34,7 @@ protected function setUp(): void { * Tests a download that overwrites an existing local file. */ public function testOverwritingDownload() { - // Create a pre-existing file at the destination, to test overwrite behavior. + // Create a pre-existing file at the destination. $destination_uri = $this->createUri('existing_file.txt'); // Test destructive download. @@ -47,7 +47,7 @@ public function testOverwritingDownload() { * Tests a download that renames the downloaded file if there's a collision. */ public function testNonDestructiveDownload() { - // Create a pre-existing file at the destination, to test overwrite behavior. + // Create a pre-existing file at the destination. $destination_uri = $this->createUri('another_existing_file.txt'); // Test non-destructive download. @@ -60,7 +60,7 @@ public function testNonDestructiveDownload() { * Tests that an exception is thrown if the destination URI is not writable. */ public function testWriteProtectedDestination() { - // Create a pre-existing file at the destination, to test overwrite behavior. + // Create a pre-existing file at the destination. $destination_uri = $this->createUri('not-writable.txt'); // Make the destination non-writable. @@ -115,7 +115,13 @@ protected function doTransform($destination_uri, $configuration = []) { 'http://drupal.org/favicon.ico', $destination_uri, ]; - return $plugin->transform($value, $executable, $row, 'foo'); + + // Assert that number of stream resources in use is the same before and + // after the download. + $initial_count = count(get_resources('stream')); + $return = $plugin->transform($value, $executable, $row, 'foo'); + $this->assertCount($initial_count, get_resources('stream')); + return $return; } } -- GitLab From c4debe701242cbc8237469b4b042ac4d5a307023 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Wed, 3 Nov 2021 10:51:09 +0000 Subject: [PATCH 12/69] Issue #3087332 by quietone, huzooka, amateescu, danflanagan8: Deprecate the 'd6_url_alias_language' migration process plugin (cherry picked from commit 04f2578519405e5bcf91fe281985402331c8b386) --- .../migrate/process/d6/UrlAliasLanguage.php | 16 +++++++++++- .../d6/UrlAliasLanguageDeprecatedTest.php | 25 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 core/modules/path/tests/src/Unit/migrate/process/d6/UrlAliasLanguageDeprecatedTest.php diff --git a/core/modules/path/src/Plugin/migrate/process/d6/UrlAliasLanguage.php b/core/modules/path/src/Plugin/migrate/process/d6/UrlAliasLanguage.php index b5d527b1877f..774bcf12b57f 100644 --- a/core/modules/path/src/Plugin/migrate/process/d6/UrlAliasLanguage.php +++ b/core/modules/path/src/Plugin/migrate/process/d6/UrlAliasLanguage.php @@ -11,11 +11,25 @@ * Url alias language code process. * * @MigrateProcessPlugin( - * id = "d6_url_alias_language" + * id = "d6_url_alias_language", + * no_ui = TRUE * ) + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. No direct + * replacement is provided. + * + * @see https://www.drupal.org/node/3219051 */ class UrlAliasLanguage extends ProcessPluginBase { + /** + * {@inheritdoc} + */ + public function __construct(array $configuration, $plugin_id, $plugin_definition) { + @trigger_error(__CLASS__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. No direct replacement is provided. See https://www.drupal.org/node/3219051', E_USER_DEPRECATED); + parent::__construct($configuration, $plugin_id, $plugin_definition); + } + /** * {@inheritdoc} */ diff --git a/core/modules/path/tests/src/Unit/migrate/process/d6/UrlAliasLanguageDeprecatedTest.php b/core/modules/path/tests/src/Unit/migrate/process/d6/UrlAliasLanguageDeprecatedTest.php new file mode 100644 index 000000000000..46461af3c8c8 --- /dev/null +++ b/core/modules/path/tests/src/Unit/migrate/process/d6/UrlAliasLanguageDeprecatedTest.php @@ -0,0 +1,25 @@ +<?php + +namespace Drupal\Tests\path\Unit\migrate\process\d6; + +use Drupal\path\Plugin\migrate\process\d6\UrlAliasLanguage; +use Drupal\Tests\migrate\Unit\process\MigrateProcessTestCase; + +/** + * Tests error message from deprecated UrlAliasLanguage process plugin. + * + * @group path + * @group legacy + * @coversDefaultClass \Drupal\path\Plugin\migrate\process\d6\UrlAliasLanguage + */ +class UrlAliasLanguageDeprecatedTest extends MigrateProcessTestCase { + + /** + * Tests legacy UrlAliasLanguage process plugin. + */ + public function testUrlAliasLanguageDeprecation() { + $this->expectDeprecation("Drupal\path\Plugin\migrate\process\d6\UrlAliasLanguage is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. No direct replacement is provided. See https://www.drupal.org/node/3219051"); + new UrlAliasLanguage([], 'test', []); + } + +} -- GitLab From 707121c9cc46266be7d922b5ff096f07cb9461ee Mon Sep 17 00:00:00 2001 From: bnjmnm <bnjmnm@2369194.no-reply.drupal.org> Date: Thu, 4 Nov 2021 22:37:55 +0000 Subject: [PATCH 13/69] Issue #3239509 by hooroomoo, larowlan, bnjmnm, lauriii: Add String.includes polyfill to support IE11 and Opera Mini (cherry picked from commit 0949c10ccb7d2dd706b1667ccc506c87c95c006d) --- core/core.libraries.yml | 5 +++++ core/misc/polyfills/string.includes.es6.js | 26 ++++++++++++++++++++++ core/misc/polyfills/string.includes.js | 22 ++++++++++++++++++ core/modules/block/block.libraries.yml | 1 + core/modules/block/js/block.admin.es6.js | 2 +- core/modules/block/js/block.admin.js | 2 +- 6 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 core/misc/polyfills/string.includes.es6.js create mode 100644 core/misc/polyfills/string.includes.js diff --git a/core/core.libraries.yml b/core/core.libraries.yml index 1023741e42e5..f4449213627e 100644 --- a/core/core.libraries.yml +++ b/core/core.libraries.yml @@ -381,6 +381,11 @@ drupal.states: - core/once - core/jquery.once.bc +drupal.string.includes: + version: VERSION + js: + misc/polyfills/string.includes.js: { weight: -20 } + drupal.tabbingmanager: version: VERSION js: diff --git a/core/misc/polyfills/string.includes.es6.js b/core/misc/polyfills/string.includes.es6.js new file mode 100644 index 000000000000..25eebd8d126c --- /dev/null +++ b/core/misc/polyfills/string.includes.es6.js @@ -0,0 +1,26 @@ +/** + * @file + * Provides a polyfill for String.includes(). + * + * This is needed for Internet Explorer 11 and Opera Mini. + * + * This has been copied from MDN Web Docs code samples. Code samples in the MDN + * Web Docs are licensed under CC0. + * + * @see https://web.archive.org/web/20210916035058/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + * @see https://developer.mozilla.org/en-US/docs/MDN/About#Code_samples_and_snippets + */ +/* eslint-disable strict, lines-around-directive, no-extend-native */ +if (!String.prototype.includes) { + String.prototype.includes = function (search, start) { + 'use strict'; + + if (search instanceof RegExp) { + throw TypeError('first argument must not be a RegExp'); + } + if (start === undefined) { + start = 0; + } + return this.indexOf(search, start) !== -1; + }; +} diff --git a/core/misc/polyfills/string.includes.js b/core/misc/polyfills/string.includes.js new file mode 100644 index 000000000000..1a1ea7cd04cb --- /dev/null +++ b/core/misc/polyfills/string.includes.js @@ -0,0 +1,22 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +if (!String.prototype.includes) { + String.prototype.includes = function (search, start) { + 'use strict'; + + if (search instanceof RegExp) { + throw TypeError('first argument must not be a RegExp'); + } + + if (start === undefined) { + start = 0; + } + + return this.indexOf(search, start) !== -1; + }; +} \ No newline at end of file diff --git a/core/modules/block/block.libraries.yml b/core/modules/block/block.libraries.yml index 80df74c1c726..b67d33870834 100644 --- a/core/modules/block/block.libraries.yml +++ b/core/modules/block/block.libraries.yml @@ -21,5 +21,6 @@ drupal.block.admin: - core/drupal.announce - core/drupal.debounce - core/drupal.dialog.ajax + - core/drupal.string.includes - core/once - core/jquery.once.bc diff --git a/core/modules/block/js/block.admin.es6.js b/core/modules/block/js/block.admin.es6.js index d475348b741c..360fcf41ff02 100644 --- a/core/modules/block/js/block.admin.es6.js +++ b/core/modules/block/js/block.admin.es6.js @@ -46,7 +46,7 @@ function toggleBlockEntry(index, label) { const $label = $(label); const $row = $label.parent().parent(); - const textMatch = $label.text().toLowerCase().indexOf(query) !== -1; + const textMatch = $label.text().toLowerCase().includes(query); $row.toggle(textMatch); } diff --git a/core/modules/block/js/block.admin.js b/core/modules/block/js/block.admin.js index 28cdf71769fa..7469333c70ab 100644 --- a/core/modules/block/js/block.admin.js +++ b/core/modules/block/js/block.admin.js @@ -18,7 +18,7 @@ function toggleBlockEntry(index, label) { var $label = $(label); var $row = $label.parent().parent(); - var textMatch = $label.text().toLowerCase().indexOf(query) !== -1; + var textMatch = $label.text().toLowerCase().includes(query); $row.toggle(textMatch); } -- GitLab From 8182c97eb8b18f714018e573d2c7f3a0c5169daa Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Sun, 7 Nov 2021 14:33:50 +0000 Subject: [PATCH 14/69] Issue #3212891 by vaish, brentgees@gmail.com, srilakshmier, mikelutz, quietone, alexpott: Incorrect type declaration in docblock for class property (cherry picked from commit 2aee2c17b3cf58db295f73b5c356be7011a54092) --- core/modules/migrate/src/Plugin/Migration.php | 2 +- core/modules/migrate/src/Plugin/migrate/id_map/Sql.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/modules/migrate/src/Plugin/Migration.php b/core/modules/migrate/src/Plugin/Migration.php index 66ab6642cec6..021edfd6ba72 100644 --- a/core/modules/migrate/src/Plugin/Migration.php +++ b/core/modules/migrate/src/Plugin/Migration.php @@ -96,7 +96,7 @@ class Migration extends PluginBase implements MigrationInterface, RequirementsIn * * Used to initialize $idMapPlugin. * - * @var string + * @var array */ protected $idMap = []; diff --git a/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php b/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php index 6ecc8ed4ea65..d0f31ffa0b4e 100644 --- a/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php +++ b/core/modules/migrate/src/Plugin/migrate/id_map/Sql.php @@ -111,9 +111,9 @@ class Sql extends PluginBase implements MigrateIdMapInterface, ContainerFactoryP /** * The result. * - * @var null + * @var \Drupal\Core\Database\StatementInterface */ - protected $result = NULL; + protected $result; /** * The source identifiers. @@ -132,7 +132,7 @@ class Sql extends PluginBase implements MigrateIdMapInterface, ContainerFactoryP /** * The current row. * - * @var null + * @var array|false|null */ protected $currentRow = NULL; -- GitLab From 3eccfbd7c9a5584ba301f24809815d1c911963e1 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 8 Nov 2021 14:13:59 +0000 Subject: [PATCH 15/69] Issue #3028837 by quietone, joachim, alexpott: views_hooks group has nothing in it (cherry picked from commit 9f6cef72ee3776a2b038ecd7e820616638a04fb7) --- core/modules/views/views.api.php | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/core/modules/views/views.api.php b/core/modules/views/views.api.php index 215c8ec09475..18a607073326 100644 --- a/core/modules/views/views.api.php +++ b/core/modules/views/views.api.php @@ -69,14 +69,6 @@ * @} */ -/** - * @defgroup views_hooks Views hooks - * @{ - * Hooks that allow other modules to implement the Views API. - * @ingroup views_overview - * @} - */ - /** * @addtogroup hooks * @{ @@ -1249,7 +1241,3 @@ function hook_views_plugins_sort_alter(array &$plugins) { /** * @} End of "addtogroup hooks". */ - -/** - * @} - */ -- GitLab From 19bf95b76ac0498520bad59771bdfcef9b07157e Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 8 Nov 2021 14:15:41 +0000 Subject: [PATCH 16/69] Issue #3248156 by alexpott, longwave: Update dependencies prior to 9.3.0 beta (cherry picked from commit ea01173e6bce792496cfc05bcf4d2c40da938e73) --- composer.lock | 38 +++++++++---------- .../Metapackage/CoreRecommended/composer.json | 2 +- .../PinnedDevDependencies/composer.json | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/composer.lock b/composer.lock index a79552dad19b..eb889b008286 100644 --- a/composer.lock +++ b/composer.lock @@ -3636,32 +3636,32 @@ }, { "name": "symfony/psr-http-message-bridge", - "version": "v2.1.1", + "version": "v2.1.2", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "c9012994c4b4fb23e7c57dd86b763a417a04feba" + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/c9012994c4b4fb23e7c57dd86b763a417a04feba", - "reference": "c9012994c4b4fb23e7c57dd86b763a417a04feba", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", "shasum": "" }, "require": { "php": ">=7.1", "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0" + "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" }, "require-dev": { "nyholm/psr7": "^1.1", "psr/log": "^1.1 || ^2 || ^3", - "symfony/browser-kit": "^4.4 || ^5.0", - "symfony/config": "^4.4 || ^5.0", - "symfony/event-dispatcher": "^4.4 || ^5.0", - "symfony/framework-bundle": "^4.4 || ^5.0", - "symfony/http-kernel": "^4.4 || ^5.0", - "symfony/phpunit-bridge": "^4.4.19 || ^5.2" + "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", + "symfony/config": "^4.4 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.4@dev || ^6.0" }, "suggest": { "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" @@ -3704,7 +3704,7 @@ ], "support": { "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.1" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.2" }, "funding": [ { @@ -3720,7 +3720,7 @@ "type": "tidelift" } ], - "time": "2021-07-27T17:25:39+00:00" + "time": "2021-11-05T13:13:39+00:00" }, { "name": "symfony/routing", @@ -4761,16 +4761,16 @@ }, { "name": "composer/composer", - "version": "2.1.10", + "version": "2.1.11", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "ea5f64d1a15c66942979b804c9fb3686be852ca0" + "reference": "ddc81bb4718747cc93330ccf832e6be8a6c1d015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/ea5f64d1a15c66942979b804c9fb3686be852ca0", - "reference": "ea5f64d1a15c66942979b804c9fb3686be852ca0", + "url": "https://api.github.com/repos/composer/composer/zipball/ddc81bb4718747cc93330ccf832e6be8a6c1d015", + "reference": "ddc81bb4718747cc93330ccf832e6be8a6c1d015", "shasum": "" }, "require": { @@ -4839,7 +4839,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.1.10" + "source": "https://github.com/composer/composer/tree/2.1.11" }, "funding": [ { @@ -4855,7 +4855,7 @@ "type": "tidelift" } ], - "time": "2021-10-29T20:34:57+00:00" + "time": "2021-11-02T11:10:26+00:00" }, { "name": "composer/metadata-minifier", diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 4a1ebead515c..adbc407e71a1 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -52,7 +52,7 @@ "symfony/polyfill-mbstring": "v1.23.1", "symfony/polyfill-php80": "v1.23.1", "symfony/process": "v4.4.30", - "symfony/psr-http-message-bridge": "v2.1.1", + "symfony/psr-http-message-bridge": "v2.1.2", "symfony/routing": "v4.4.30", "symfony/serializer": "v4.4.33", "symfony/service-contracts": "v2.4.0", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index 671dc07e5393..195e0fefa0d9 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -11,7 +11,7 @@ "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.3.1", - "composer/composer": "2.1.10", + "composer/composer": "2.1.11", "composer/metadata-minifier": "1.0.0", "composer/spdx-licenses": "1.5.5", "composer/xdebug-handler": "2.0.2", -- GitLab From 0c936b4f7d49245e771eace8f62a08cf58c96cc1 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 8 Nov 2021 14:22:26 +0000 Subject: [PATCH 17/69] Issue #3214921 by daffie, xurizaemon, alexpott, mondrake, andypost, Taran2L, Mixologic, longwave: Add a requirements warning in Drupal 9 when PostgreSQL is used and the pg_trgm extension is not created (cherry picked from commit 84e8b971c8d65ac93a3848802a1535d45b1585d3) --- .../Core/Database/Driver/pgsql/Schema.php | 17 +++++++++++++++++ core/modules/system/system.install | 15 +++++++++++++++ .../KernelTests/Core/Database/SchemaTest.php | 15 +++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php index 106add49efb0..afb7f604fbde 100644 --- a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php +++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php @@ -1060,6 +1060,23 @@ protected function hashBase64($data) { return strtr($hash, ['+' => '_', '/' => '_', '=' => '']); } + /** + * Determines whether the PostgreSQL extension is created. + * + * @param string $name + * The name of the extension. + * + * @return bool + * Return TRUE when the extension is created, FALSE otherwise. + * + * @internal + */ + public function extensionExists($name): bool { + return (bool) $this->connection->query('SELECT installed_version FROM pg_available_extensions WHERE name = :name', [ + ':name' => $name, + ])->fetchField(); + } + } /** diff --git a/core/modules/system/system.install b/core/modules/system/system.install index e19a96853d93..6eae0bb05095 100644 --- a/core/modules/system/system.install +++ b/core/modules/system/system.install @@ -472,6 +472,21 @@ function system_requirements($phase) { } } + // Test with PostgreSQL databases for the status of the pg_trgm extension. + if ($phase === 'runtime') { + if (Database::isActiveConnection() && (Database::getConnection()->driver() == 'pgsql') && !Database::getConnection()->schema()->extensionExists('pg_trgm')) { + $requirements['pgsql_extension_pg_trgm'] = [ + 'severity' => REQUIREMENT_WARNING, + 'title' => t('PostgreSQL pg_trgm extension'), + 'value' => t('Not created'), + 'description' => t('The <a href=":pg_trgm">pg_trgm</a> PostgreSQL extension is not present. The extension will be required by Drupal 10 to improve performance when using PostgreSQL. See <a href=":requirements">Drupal database server requirements</a> for more information.', [ + ':pg_trgm' => 'https://www.postgresql.org/docs/current/pgtrgm.html', + ':requirements' => 'https://www.drupal.org/docs/system-requirements/database-server-requirements', + ]), + ]; + } + } + // Test PHP memory_limit $memory_limit = ini_get('memory_limit'); $requirements['php_memory_limit'] = [ diff --git a/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php b/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php index da8578bc7386..039e916a33ab 100644 --- a/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php +++ b/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php @@ -1347,4 +1347,19 @@ public function testDefaultAfterAlter() { $this->assertSame('default value', $result->column7); } + /** + * @covers \Drupal\Core\Database\Driver\pgsql\Schema::extensionExists + */ + public function testPgsqlExtensionExists() { + if ($this->connection->databaseType() !== 'pgsql') { + $this->markTestSkipped("This test only runs for PostgreSQL."); + } + + // Test the method for a non existing extension. + $this->assertFalse($this->schema->extensionExists('non_existing_extension')); + + // Test the method for an existing extension. + $this->assertTrue($this->schema->extensionExists('pg_trgm')); + } + } -- GitLab From 66047e701924a557b1a8741a1509f1aa6c9e830c Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 8 Nov 2021 14:27:18 +0000 Subject: [PATCH 18/69] Issue #3231683 by daffie, longwave: [Symfony 6] A number of methods of the class Drupal\Core\TypedData\Validation\ExecutionContext are considered internal and Drupal should not override them (cherry picked from commit b4a6273ebd009d2a271b49cb64833f5b8cbe2fd3) --- .../Core/TypedData/TypedDataManager.php | 2 +- .../Validation/ConstraintViolationBuilder.php | 68 +++++++ .../TypedData/Validation/ExecutionContext.php | 181 ++++++++++++++++++ .../Validation/ExecutionContextFactory.php | 13 ++ .../Core/Validation/DrupalTranslator.php | 10 + .../Core/Validation/TranslatorInterface.php | 4 + .../RecursiveContextualValidatorTest.php | 6 +- .../Core/TypedData/ValidationLegacyTest.php | 51 +++++ 8 files changed, 331 insertions(+), 4 deletions(-) create mode 100644 core/tests/Drupal/Tests/Core/TypedData/ValidationLegacyTest.php diff --git a/core/lib/Drupal/Core/TypedData/TypedDataManager.php b/core/lib/Drupal/Core/TypedData/TypedDataManager.php index aab5850ada17..60270222e4ae 100644 --- a/core/lib/Drupal/Core/TypedData/TypedDataManager.php +++ b/core/lib/Drupal/Core/TypedData/TypedDataManager.php @@ -8,11 +8,11 @@ use Drupal\Core\DependencyInjection\DependencySerializationTrait; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Plugin\DefaultPluginManager; -use Drupal\Core\TypedData\Validation\ExecutionContextFactory; use Drupal\Core\TypedData\Validation\RecursiveValidator; use Drupal\Core\Validation\ConstraintManager; use Drupal\Core\Validation\ConstraintValidatorFactory; use Drupal\Core\Validation\DrupalTranslator; +use Symfony\Component\Validator\Context\ExecutionContextFactory; use Symfony\Component\Validator\Validator\ValidatorInterface; /** diff --git a/core/lib/Drupal/Core/TypedData/Validation/ConstraintViolationBuilder.php b/core/lib/Drupal/Core/TypedData/Validation/ConstraintViolationBuilder.php index a3e62d0b9757..9d5cdff7fe67 100644 --- a/core/lib/Drupal/Core/TypedData/Validation/ConstraintViolationBuilder.php +++ b/core/lib/Drupal/Core/TypedData/Validation/ConstraintViolationBuilder.php @@ -17,6 +17,10 @@ * * We do not use the builder provided by Symfony as it is marked internal. * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the class + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder instead. + * + * @see https://www.drupal.org/node/3238432 */ class ConstraintViolationBuilder implements ConstraintViolationBuilderInterface { @@ -121,6 +125,7 @@ class ConstraintViolationBuilder implements ConstraintViolationBuilderInterface */ public function __construct(ConstraintViolationList $violations, Constraint $constraint, $message, array $parameters, $root, $propertyPath, $invalidValue, TranslatorInterface $translator, $translationDomain = null) { + @trigger_error(__CLASS__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the class \Symfony\Component\Validator\Violation\ConstraintViolationBuilder instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->violations = $violations; $this->message = $message; $this->parameters = $parameters; @@ -134,9 +139,16 @@ public function __construct(ConstraintViolationList $violations, Constraint $con /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::atPath() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function atPath($path) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::atPath() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->propertyPath = PropertyPath::append($this->propertyPath, $path); return $this; @@ -144,9 +156,16 @@ public function atPath($path) /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setParameter() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setParameter($key, $value) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setParameter() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->parameters[$key] = $value; return $this; @@ -154,9 +173,16 @@ public function setParameter($key, $value) /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setParameters() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setParameters(array $parameters) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setParameters() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->parameters = $parameters; return $this; @@ -164,9 +190,16 @@ public function setParameters(array $parameters) /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setTranslationDomain() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setTranslationDomain($translationDomain) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setTranslationDomain() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->translationDomain = $translationDomain; return $this; @@ -174,9 +207,16 @@ public function setTranslationDomain($translationDomain) /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setInvalidValue() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setInvalidValue($invalidValue) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setInvalidValue() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->invalidValue = $invalidValue; return $this; @@ -184,9 +224,16 @@ public function setInvalidValue($invalidValue) /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setPlural() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setPlural($number) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setPlural() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->plural = $number; return $this; @@ -194,9 +241,16 @@ public function setPlural($number) /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setCode() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setCode($code) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setCode() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->code = $code; return $this; @@ -204,9 +258,16 @@ public function setCode($code) /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setCause() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setCause($cause) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::setCause() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->cause = $cause; return $this; @@ -214,9 +275,16 @@ public function setCause($cause) /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::addViolation() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function addViolation() { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Violation\ConstraintViolationBuilder::addViolation() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); if (null === $this->plural) { $translatedMessage = $this->translator->trans( $this->message, diff --git a/core/lib/Drupal/Core/TypedData/Validation/ExecutionContext.php b/core/lib/Drupal/Core/TypedData/Validation/ExecutionContext.php index 1d409b72998f..34eda6a71ecb 100644 --- a/core/lib/Drupal/Core/TypedData/Validation/ExecutionContext.php +++ b/core/lib/Drupal/Core/TypedData/Validation/ExecutionContext.php @@ -18,6 +18,11 @@ * We do not use the context provided by Symfony as it is marked internal, so * this class is pretty much the same, but has some code style changes as well * as exceptions for methods we don't support. + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the class + * \Symfony\Component\Validator\Context\ExecutionContext instead. + * + * @see https://www.drupal.org/node/3238432 */ class ExecutionContext implements ExecutionContextInterface { @@ -122,6 +127,7 @@ class ExecutionContext implements ExecutionContextInterface { * Should not be used in user code. */ public function __construct(ValidatorInterface $validator, $root, TranslatorInterface $translator, $translationDomain = NULL) { + @trigger_error(__CLASS__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the class \Symfony\Component\Validator\Context\ExecutionContext instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->validator = $validator; $this->root = $root; $this->translator = $translator; @@ -131,8 +137,15 @@ public function __construct(ValidatorInterface $validator, $root, TranslatorInte /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::setNode() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setNode($value, $object, MetadataInterface $metadata = NULL, $propertyPath) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::setNode() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->value = $value; $this->data = $object; $this->metadata = $metadata; @@ -141,22 +154,43 @@ public function setNode($value, $object, MetadataInterface $metadata = NULL, $pr /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::setGroup() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setGroup($group) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::setGroup() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->group = $group; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::setConstraint() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function setConstraint(Constraint $constraint) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::setConstraint() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->constraint = $constraint; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::addViolation() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function addViolation($message, array $parameters = [], $invalidValue = NULL, $plural = NULL, $code = NULL) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::addViolation() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); // The parameters $invalidValue and following are ignored by the new // API, as they are not present in the new interface anymore. // You should use buildViolation() instead. @@ -169,148 +203,295 @@ public function addViolation($message, array $parameters = [], $invalidValue = N /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::buildViolation() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function buildViolation($message, array $parameters = []): ConstraintViolationBuilderInterface { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::buildViolation() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return new ConstraintViolationBuilder($this->violations, $this->constraint, $message, $parameters, $this->root, $this->propertyPath, $this->value, $this->translator, $this->translationDomain); } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getViolations() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getViolations() { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getViolations() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return $this->violations; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getValidator() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getValidator() { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getValidator() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return $this->validator; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getRoot() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getRoot() { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getRoot() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return $this->root; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getValue() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getValue() { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getValue() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return $this->value; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getObject() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getObject(): ?object { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getObject() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return $this->data; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getMetadata() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getMetadata(): ?MetadataInterface { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getMetadata() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return $this->metadata; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getGroup() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getGroup(): ?string { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getGroup() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return Constraint::DEFAULT_GROUP; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getClassName() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getClassName(): ?string { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getClassName() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return get_class($this->data); } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getPropertyName() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getPropertyName(): ?string { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getPropertyName() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return $this->data->getName(); } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getPropertyPath() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getPropertyPath($sub_path = ''): string { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getPropertyPath() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return PropertyPath::append($this->propertyPath, $sub_path); } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::addViolationAt() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function addViolationAt($subPath, $message, array $parameters = [], $invalidValue = NULL, $plural = NULL, $code = NULL) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::addViolationAt() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); throw new \LogicException('Legacy validator API is unsupported.'); } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::validate() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function validate($value, $subPath = '', $groups = NULL, $traverse = FALSE, $deep = FALSE) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::validate() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); throw new \LogicException('Legacy validator API is unsupported.'); } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::markConstraintAsValidated() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function markConstraintAsValidated($cache_key, $constraint_hash) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::markConstraintAsValidated() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->validatedConstraints[$cache_key . ':' . $constraint_hash] = TRUE; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::isConstraintValidated() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function isConstraintValidated($cache_key, $constraint_hash) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::isConstraintValidated() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return isset($this->validatedConstraints[$cache_key . ':' . $constraint_hash]); } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::validateValue() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function validateValue($value, $constraints, $subPath = '', $groups = NULL) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::validateValue() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); throw new \LogicException('Legacy validator API is unsupported.'); } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::markGroupAsValidated() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function markGroupAsValidated($cache_key, $group_hash) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::markGroupAsValidated() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->validatedObjects[$cache_key][$group_hash] = TRUE; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::isGroupValidated() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function isGroupValidated($cache_key, $group_hash) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::isGroupValidated() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return isset($this->validatedObjects[$cache_key][$group_hash]); } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::markObjectAsInitialized() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function markObjectAsInitialized($cache_key) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::markObjectAsInitialized() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); // Not supported, so nothing todo. } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::isObjectInitialized() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function isObjectInitialized($cache_key) { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::isObjectInitialized() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); // Not supported, so nothing todo. } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContext::getMetadataFactory() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function getMetadataFactory() { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContext::getMetadataFactory() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); throw new \LogicException('Legacy validator API is unsupported.'); } diff --git a/core/lib/Drupal/Core/TypedData/Validation/ExecutionContextFactory.php b/core/lib/Drupal/Core/TypedData/Validation/ExecutionContextFactory.php index 5c6a8264cd9c..32cb2abb5bfc 100644 --- a/core/lib/Drupal/Core/TypedData/Validation/ExecutionContextFactory.php +++ b/core/lib/Drupal/Core/TypedData/Validation/ExecutionContextFactory.php @@ -11,6 +11,11 @@ * Defines an execution factory for the Typed Data validator. * * We do not use the factory provided by Symfony as it is marked internal. + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the class + * \Symfony\Component\Validator\Context\ExecutionContextFactory instead. + * + * @see https://www.drupal.org/node/3238432 */ class ExecutionContextFactory implements ExecutionContextFactoryInterface { @@ -33,14 +38,22 @@ class ExecutionContextFactory implements ExecutionContextFactoryInterface { * (optional) The translation domain. */ public function __construct(TranslatorInterface $translator, $translationDomain = NULL) { + @trigger_error(__CLASS__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the class \Symfony\Component\Validator\Context\ExecutionContextFactory instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); $this->translator = $translator; $this->translationDomain = $translationDomain; } /** * {@inheritdoc} + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * \Symfony\Component\Validator\Context\ExecutionContextFactory::createContext() + * instead. + * + * @see https://www.drupal.org/node/3238432 */ public function createContext(ValidatorInterface $validator, $root): ExecutionContextInterface { + @trigger_error(__METHOD__ . ' is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use \Symfony\Component\Validator\Context\ExecutionContextFactory::createContext() instead. See https://www.drupal.org/node/3238432', E_USER_DEPRECATED); return new ExecutionContext( $validator, $root, diff --git a/core/lib/Drupal/Core/Validation/DrupalTranslator.php b/core/lib/Drupal/Core/Validation/DrupalTranslator.php index 4025feda37fd..3003c1737c5b 100644 --- a/core/lib/Drupal/Core/Validation/DrupalTranslator.php +++ b/core/lib/Drupal/Core/Validation/DrupalTranslator.php @@ -4,6 +4,7 @@ use Drupal\Component\Render\MarkupInterface; use Drupal\Core\StringTranslation\TranslatableMarkup; +use Symfony\Contracts\Translation\TranslatorInterface; /** * Translates strings using Drupal's translation system. @@ -28,6 +29,15 @@ public function trans($id, array $parameters = [], $domain = NULL, $locale = NUL if ($id instanceof TranslatableMarkup) { return $id; } + + // Symfony violation messages may separate singular and plural versions + // with "|". + $ids = explode('|', $id); + if (count($ids) > 1) { + $number = $parameters['%count%'] ?? 1; + return \Drupal::translation()->formatPlural($number, $ids[0], $ids[1], $this->processParameters($parameters), $this->getOptions($domain, $locale)); + } + return new TranslatableMarkup($id, $this->processParameters($parameters), $this->getOptions($domain, $locale)); } diff --git a/core/lib/Drupal/Core/Validation/TranslatorInterface.php b/core/lib/Drupal/Core/Validation/TranslatorInterface.php index e59e766ffdb6..bc679ca2191c 100644 --- a/core/lib/Drupal/Core/Validation/TranslatorInterface.php +++ b/core/lib/Drupal/Core/Validation/TranslatorInterface.php @@ -9,6 +9,10 @@ * to indicate that the Drupal code is actually independent from the * Symfony translation component. * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the + * interface \Symfony\Contracts\Translation\TranslatorInterface instead. + * + * @see https://www.drupal.org/node/3238432 * @see https://github.com/symfony/symfony/pull/6189 * @see https://github.com/symfony/symfony/issues/15714 */ diff --git a/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php b/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php index 25703e7b734c..7153be5a57e0 100644 --- a/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php +++ b/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php @@ -12,11 +12,11 @@ use Drupal\Core\TypedData\DataDefinition; use Drupal\Core\TypedData\MapDataDefinition; use Drupal\Core\TypedData\TypedDataManager; -use Drupal\Core\TypedData\Validation\ExecutionContextFactory; use Drupal\Core\TypedData\Validation\RecursiveValidator; use Drupal\Core\Validation\ConstraintManager; use Drupal\Tests\UnitTestCase; use Symfony\Component\Validator\ConstraintValidatorFactory; +use Symfony\Component\Validator\Context\ExecutionContextFactory; use Symfony\Component\Validator\Context\ExecutionContextInterface; /** @@ -49,7 +49,7 @@ class RecursiveContextualValidatorTest extends UnitTestCase { /** * The execution context factory. * - * @var \Drupal\Core\TypedData\Validation\ExecutionContextFactory + * @var \Symfony\Component\Validator\Context\ExecutionContextFactory */ protected $contextFactory; @@ -80,7 +80,7 @@ protected function setUp(): void { $container->set('typed_data_manager', $this->typedDataManager); \Drupal::setContainer($container); - $translator = $this->createMock('Drupal\Core\Validation\TranslatorInterface'); + $translator = $this->createMock('Symfony\Contracts\Translation\TranslatorInterface'); $translator->expects($this->any()) ->method('trans') ->willReturnCallback(function ($id) { diff --git a/core/tests/Drupal/Tests/Core/TypedData/ValidationLegacyTest.php b/core/tests/Drupal/Tests/Core/TypedData/ValidationLegacyTest.php new file mode 100644 index 000000000000..90f626aa0ada --- /dev/null +++ b/core/tests/Drupal/Tests/Core/TypedData/ValidationLegacyTest.php @@ -0,0 +1,51 @@ +<?php + +namespace Drupal\Tests\Core\TypedData; + +use Drupal\Core\TypedData\Validation\ConstraintViolationBuilder; +use Drupal\Core\TypedData\Validation\ExecutionContext; +use Drupal\Core\TypedData\Validation\ExecutionContextFactory; +use Drupal\Core\Validation\TranslatorInterface; +use Drupal\Tests\UnitTestCase; +use Symfony\Component\Validator\Constraint; +use Symfony\Component\Validator\ConstraintViolationList; +use Symfony\Component\Validator\Validator\ValidatorInterface; + +/** + * Test the deprecation of TypedData classes. + * @group typedData + * @group legacy + */ +class ValidationLegacyTest extends UnitTestCase { + + /** + * @covers Drupal\Core\TypedData\Validation\ConstraintViolationBuilder::__construct + */ + public function testConstraintViolationBuilderDeprecated() { + $this->expectDeprecation("Drupal\Core\TypedData\Validation\ConstraintViolationBuilder is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the class \Symfony\Component\Validator\Violation\ConstraintViolationBuilder instead. See https://www.drupal.org/node/3238432"); + $constraint_violation_list = $this->prophesize(ConstraintViolationList::class)->reveal(); + $constraint = $this->prophesize(Constraint::class)->reveal(); + $translator = $this->prophesize(TranslatorInterface::class)->reveal(); + $this->assertInstanceOf(ConstraintViolationBuilder::class, new ConstraintViolationBuilder($constraint_violation_list, $constraint, '', [], '', '', '', $translator)); + } + + /** + * @covers Drupal\Core\TypedData\Validation\ExecutionContext::__construct + */ + public function testExecutionContextDeprecated() { + $this->expectDeprecation("Drupal\Core\TypedData\Validation\ExecutionContext is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the class \Symfony\Component\Validator\Context\ExecutionContext instead. See https://www.drupal.org/node/3238432"); + $validator = $this->prophesize(ValidatorInterface::class)->reveal(); + $translator = $this->prophesize(TranslatorInterface::class)->reveal(); + $this->assertInstanceOf(ExecutionContext::class, new ExecutionContext($validator, '', $translator)); + } + + /** + * @covers Drupal\Core\TypedData\Validation\ExecutionContextFactory::__construct + */ + public function testExecutionContextFactoryDeprecated() { + $this->expectDeprecation("Drupal\Core\TypedData\Validation\ExecutionContextFactory is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use the class \Symfony\Component\Validator\Context\ExecutionContextFactory instead. See https://www.drupal.org/node/3238432"); + $translator = $this->prophesize(TranslatorInterface::class)->reveal(); + $this->assertInstanceOf(ExecutionContextFactory::class, new ExecutionContextFactory($translator)); + } + +} -- GitLab From 3ab612994270ac304afe47f8721acb28a666dfd4 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 8 Nov 2021 14:30:37 +0000 Subject: [PATCH 19/69] Issue #3158289 by alexpott, barboza: Deprecate hook_init for theme engines --- core/lib/Drupal/Core/Theme/ThemeInitialization.php | 7 +++++++ .../tests/src/Functional/Theme/EngineNyanCatTest.php | 7 +++++++ core/themes/engines/twig/twig.engine | 10 ---------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/core/lib/Drupal/Core/Theme/ThemeInitialization.php b/core/lib/Drupal/Core/Theme/ThemeInitialization.php index 34b95e955c77..c81be077f54c 100644 --- a/core/lib/Drupal/Core/Theme/ThemeInitialization.php +++ b/core/lib/Drupal/Core/Theme/ThemeInitialization.php @@ -140,11 +140,18 @@ public function loadActiveTheme(ActiveTheme $active_theme) { include_once $this->root . '/' . $active_theme->getOwner(); if (function_exists($theme_engine . '_init')) { + @trigger_error('THEME_ENGINE_init() is deprecated in drupal:9.3.0 and removed in drupal:10.0.0. There is no replacement. See https://www.drupal.org/node/3246978', E_USER_DEPRECATED); foreach ($active_theme->getBaseThemeExtensions() as $base) { call_user_func($theme_engine . '_init', $base); } call_user_func($theme_engine . '_init', $active_theme->getExtension()); } + else { + foreach ($active_theme->getBaseThemeExtensions() as $base) { + $base->load(); + } + $active_theme->getExtension()->load(); + } } else { // include non-engine theme files diff --git a/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php b/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php index 7a227da1ddb2..0b8269a2cd31 100644 --- a/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php +++ b/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php @@ -30,8 +30,15 @@ protected function setUp(): void { /** * Ensures a theme's template is overridable based on the 'template' filename. + * + * @group legacy + * + * @todo https://www.drupal.org/project/drupal/issues/3246981 Remove + * nyan_cat_init() and the legacy group and expected deprecation from this + * test. */ public function testTemplateOverride() { + $this->expectDeprecation('THEME_ENGINE_init() is deprecated in drupal:9.3.0 and removed in drupal:10.0.0. There is no replacement. See https://www.drupal.org/node/3246978'); $this->config('system.theme') ->set('default', 'test_theme_nyan_cat_engine') ->save(); diff --git a/core/themes/engines/twig/twig.engine b/core/themes/engines/twig/twig.engine index 759fafcfb701..bcc984a02e24 100644 --- a/core/themes/engines/twig/twig.engine +++ b/core/themes/engines/twig/twig.engine @@ -26,16 +26,6 @@ function twig_extension() { return '.html.twig'; } -/** - * Includes .theme file from themes. - * - * @param \Drupal\Core\Extension\Extension $theme - * The theme extension object. - */ -function twig_init(Extension $theme) { - $theme->load(); -} - /** * Implements hook_render_template(). * -- GitLab From c0dca8d0302420f489d221b76beb2715796d790c Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 8 Nov 2021 14:36:24 +0000 Subject: [PATCH 20/69] Issue #3247901 by danflanagan8, longwave: ContentTranslationUITestBase should not rely on Classy (cherry picked from commit 84ef68cf9954147789e61d1622a1609b19c27628) --- .../tests/src/Functional/BlockContentTranslationUITest.php | 2 +- .../tests/src/Functional/ContentTestTranslationUITest.php | 2 +- .../tests/src/Functional/ContentTranslationUITestBase.php | 2 +- .../media/tests/src/Functional/MediaTranslationUITest.php | 2 +- .../tests/src/Functional/MenuLinkContentTranslationUITest.php | 2 +- .../shortcut/tests/src/Functional/ShortcutTranslationUITest.php | 2 +- .../taxonomy/tests/src/Functional/TermTranslationUITest.php | 2 +- .../modules/user/tests/src/Functional/UserTranslationUITest.php | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/modules/block_content/tests/src/Functional/BlockContentTranslationUITest.php b/core/modules/block_content/tests/src/Functional/BlockContentTranslationUITest.php index 3d93ed33e854..3f3fea1c2689 100644 --- a/core/modules/block_content/tests/src/Functional/BlockContentTranslationUITest.php +++ b/core/modules/block_content/tests/src/Functional/BlockContentTranslationUITest.php @@ -28,7 +28,7 @@ class BlockContentTranslationUITest extends ContentTranslationUITestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} diff --git a/core/modules/content_translation/tests/src/Functional/ContentTestTranslationUITest.php b/core/modules/content_translation/tests/src/Functional/ContentTestTranslationUITest.php index 3f644b9a8e5e..ba0cbf67071d 100644 --- a/core/modules/content_translation/tests/src/Functional/ContentTestTranslationUITest.php +++ b/core/modules/content_translation/tests/src/Functional/ContentTestTranslationUITest.php @@ -39,7 +39,7 @@ class ContentTestTranslationUITest extends ContentTranslationUITestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php index 776bd654ccdf..e853e595df9d 100644 --- a/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php +++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php @@ -359,7 +359,7 @@ protected function doTestAuthoringInfo() { ]; $this->drupalGet($entity->toUrl('edit-form')); $this->submitForm($edit, $this->getFormSubmitAction($entity, $langcode)); - $this->assertSession()->elementExists('xpath', '//div[contains(@class, "error")]//ul'); + $this->assertSession()->elementExists('xpath', '//div[@aria-label="Error message"]//ul'); $metadata = $this->manager->getTranslationMetadata($entity->getTranslation($langcode)); $this->assertEquals($values[$langcode]['uid'], $metadata->getAuthor()->id(), 'Translation author correctly kept.'); $this->assertEquals($values[$langcode]['created'], $metadata->getCreatedTime(), 'Translation date correctly kept.'); diff --git a/core/modules/media/tests/src/Functional/MediaTranslationUITest.php b/core/modules/media/tests/src/Functional/MediaTranslationUITest.php index 6b1d6442db0e..20d3cd8c6e2c 100644 --- a/core/modules/media/tests/src/Functional/MediaTranslationUITest.php +++ b/core/modules/media/tests/src/Functional/MediaTranslationUITest.php @@ -17,7 +17,7 @@ class MediaTranslationUITest extends ContentTranslationUITestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} diff --git a/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentTranslationUITest.php b/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentTranslationUITest.php index a7ddeed92dd1..8dc2b7865ed7 100644 --- a/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentTranslationUITest.php +++ b/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentTranslationUITest.php @@ -32,7 +32,7 @@ class MenuLinkContentTranslationUITest extends ContentTranslationUITestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} diff --git a/core/modules/shortcut/tests/src/Functional/ShortcutTranslationUITest.php b/core/modules/shortcut/tests/src/Functional/ShortcutTranslationUITest.php index 0d0a80d6a53c..4b059fd0dbd4 100644 --- a/core/modules/shortcut/tests/src/Functional/ShortcutTranslationUITest.php +++ b/core/modules/shortcut/tests/src/Functional/ShortcutTranslationUITest.php @@ -35,7 +35,7 @@ class ShortcutTranslationUITest extends ContentTranslationUITestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; /** * {@inheritdoc} diff --git a/core/modules/taxonomy/tests/src/Functional/TermTranslationUITest.php b/core/modules/taxonomy/tests/src/Functional/TermTranslationUITest.php index 049da47d1483..179b4adea871 100644 --- a/core/modules/taxonomy/tests/src/Functional/TermTranslationUITest.php +++ b/core/modules/taxonomy/tests/src/Functional/TermTranslationUITest.php @@ -41,7 +41,7 @@ class TermTranslationUITest extends ContentTranslationUITestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; protected function setUp(): void { $this->entityTypeId = 'taxonomy_term'; diff --git a/core/modules/user/tests/src/Functional/UserTranslationUITest.php b/core/modules/user/tests/src/Functional/UserTranslationUITest.php index 7ba1a2b9ec01..9e7b2ea2489a 100644 --- a/core/modules/user/tests/src/Functional/UserTranslationUITest.php +++ b/core/modules/user/tests/src/Functional/UserTranslationUITest.php @@ -44,7 +44,7 @@ class UserTranslationUITest extends ContentTranslationUITestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'classy'; + protected $defaultTheme = 'stark'; protected function setUp(): void { $this->entityTypeId = 'user'; -- GitLab From d63941bc1af2e1a31debad1f202e46351eaa149d Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 8 Nov 2021 14:49:50 +0000 Subject: [PATCH 21/69] Issue #2975461 by quietone, Matroskeen, Lendude: Convert query string to array for d6 menu_link migration (cherry picked from commit 55a804ce67ddf1296a0004303baf69512e3892c5) --- .../migrations/d6_menu_links.yml | 4 +- .../Plugin/migrate/process/LinkOptions.php | 48 +++++++++++++++++++ .../Kernel/Migrate/d6/MigrateMenuLinkTest.php | 2 +- .../d6/MigrateMenuLinkTranslationTest.php | 4 +- .../Kernel/Migrate/d7/MigrateMenuLinkTest.php | 9 +++- .../migrate_drupal/tests/fixtures/drupal7.php | 2 +- 6 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 core/modules/menu_link_content/src/Plugin/migrate/process/LinkOptions.php diff --git a/core/modules/menu_link_content/migrations/d6_menu_links.yml b/core/modules/menu_link_content/migrations/d6_menu_links.yml index 86dfb8057361..48faf0e28b11 100644 --- a/core/modules/menu_link_content/migrations/d6_menu_links.yml +++ b/core/modules/menu_link_content/migrations/d6_menu_links.yml @@ -27,7 +27,9 @@ process: 'link/uri': plugin: link_uri source: link_path - 'link/options': options + 'link/options': + plugin: link_options + source: options route: plugin: route source: diff --git a/core/modules/menu_link_content/src/Plugin/migrate/process/LinkOptions.php b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkOptions.php new file mode 100644 index 000000000000..af3e0998a994 --- /dev/null +++ b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkOptions.php @@ -0,0 +1,48 @@ +<?php + +namespace Drupal\menu_link_content\Plugin\migrate\process; + +use Drupal\migrate\MigrateExecutableInterface; +use Drupal\migrate\ProcessPluginBase; +use Drupal\migrate\Row; + +/** + * Converts links options. + * + * Examples: + * + * @code + * process: + * link/options: + * plugin: link_options + * source: options + * @endcode + * + * This will convert the query options of the link. + * + * @MigrateProcessPlugin( + * id = "link_options", + * handle_multiples = TRUE + * ) + */ +class LinkOptions extends ProcessPluginBase { + + /** + * {@inheritdoc} + */ + public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { + if (isset($value['query'])) { + // If the query parameters are stored as a string (as in D6), convert it + // into an array. + if (is_string($value['query'])) { + parse_str($value['query'], $old_query); + } + else { + $old_query = $value['query']; + } + $value['query'] = $old_query; + } + return $value; + } + +} diff --git a/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTest.php b/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTest.php index 5ffe4e6cc036..bc72be37598d 100644 --- a/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTest.php +++ b/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTest.php @@ -89,7 +89,7 @@ protected function assertEntity($id, $title, $menu, $description, $enabled, $exp */ public function testMenuLinks() { $this->assertEntity('138', 'Test 1', 'secondary-links', 'Test menu link 1', TRUE, FALSE, ['attributes' => ['title' => 'Test menu link 1'], 'langcode' => 'en'], 'internal:/user/login', -50); - $this->assertEntity('139', 'Test 2', 'secondary-links', 'Test menu link 2', TRUE, TRUE, ['query' => 'foo=bar', 'attributes' => ['title' => 'Test menu link 2']], 'internal:/admin', -49); + $this->assertEntity('139', 'Test 2', 'secondary-links', 'Test menu link 2', TRUE, TRUE, ['query' => ['foo' => 'bar'], 'attributes' => ['title' => 'Test menu link 2']], 'internal:/admin', -49); $this->assertEntity('140', 'Drupal.org', 'secondary-links', NULL, TRUE, FALSE, ['attributes' => ['title' => '']], 'https://www.drupal.org', -50); // Assert that missing title attributes don't stop or break migration. diff --git a/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTranslationTest.php b/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTranslationTest.php index afdbd7d01215..cedcfbb8fdf5 100644 --- a/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTranslationTest.php +++ b/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTranslationTest.php @@ -53,7 +53,7 @@ public function testMenuLinks() { $this->assertSame('secondary-links', $menu_link->getMenuName()); $this->assertTrue($menu_link->isEnabled()); $this->assertTrue($menu_link->isExpanded()); - $this->assertSame(['query' => 'foo=bar', 'attributes' => ['title' => 'Test menu link 2']], $menu_link->link->options); + $this->assertSame(['query' => ['foo' => 'bar'], 'attributes' => ['title' => 'Test menu link 2']], $menu_link->link->options); $this->assertSame('internal:/admin', $menu_link->link->uri); $this->assertSame(-49, $menu_link->getWeight()); @@ -64,7 +64,7 @@ public function testMenuLinks() { $this->assertSame('secondary-links', $menu_link->getMenuName()); $this->assertTrue($menu_link->isEnabled()); $this->assertTrue($menu_link->isExpanded()); - $this->assertSame(['query' => 'foo=bar', 'attributes' => ['title' => 'Test menu link 2']], $menu_link->link->options); + $this->assertSame(['query' => ['foo' => 'bar'], 'attributes' => ['title' => 'Test menu link 2']], $menu_link->link->options); $this->assertSame('internal:/admin', $menu_link->link->uri); $this->assertSame(-49, $menu_link->getWeight()); diff --git a/core/modules/menu_link_content/tests/src/Kernel/Migrate/d7/MigrateMenuLinkTest.php b/core/modules/menu_link_content/tests/src/Kernel/Migrate/d7/MigrateMenuLinkTest.php index dd3cac07dfcd..cd271f89d516 100644 --- a/core/modules/menu_link_content/tests/src/Kernel/Migrate/d7/MigrateMenuLinkTest.php +++ b/core/modules/menu_link_content/tests/src/Kernel/Migrate/d7/MigrateMenuLinkTest.php @@ -70,7 +70,14 @@ public function testMenuLinks() { $this->assertEntity(245, 'und', 'Home', 'main', NULL, TRUE, FALSE, [], 'internal:/', 0); $this->assertEntity(478, 'und', 'custom link test', 'admin', NULL, TRUE, FALSE, ['attributes' => ['title' => '']], 'internal:/admin/content', 0); - $this->assertEntity(479, 'und', 'node link test', 'tools', 'node 2', TRUE, FALSE, ['attributes' => ['title' => 'node 2']], 'entity:node/2', 3); + $this->assertEntity(479, 'und', 'node link test', 'tools', 'node 2', TRUE, FALSE, [ + 'attributes' => ['title' => 'node 2'], + 'query' => [ + 'name' => 'ferret', + 'color' => 'purple', + ], + ], + 'entity:node/2', 3); $menu_link_tree_service = \Drupal::service('menu.link_tree'); $parameters = new MenuTreeParameters(); diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php index b7f16908737d..26a5b50fdd52 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php @@ -34445,7 +34445,7 @@ 'link_path' => 'node/2', 'router_path' => 'node/%', 'link_title' => 'node link test', - 'options' => 'a:1:{s:10:"attributes";a:1:{s:5:"title";s:6:"node 2";}}', + 'options' => 'a:2:{s:10:"attributes";a:1:{s:5:"title";s:6:"node 2";}s:5:"query";a:2:{s:4:"name";s:6:"ferret";s:5:"color";s:6:"purple";}}', 'module' => 'menu', 'hidden' => '0', 'external' => '0', -- GitLab From bd80b71a6f0539a792b1f925b59d607564706fd1 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Wed, 10 Nov 2021 15:06:19 +0000 Subject: [PATCH 22/69] Issue #3248600 by andypost, longwave: Update dependencies for 9.3.x (cherry picked from commit 7f6603b627692f987cb27abd0a4caea0f3b677e8) --- composer.lock | 26 +++++++++---------- .../Metapackage/CoreRecommended/composer.json | 2 +- .../PinnedDevDependencies/composer.json | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/composer.lock b/composer.lock index eb889b008286..effef11be664 100644 --- a/composer.lock +++ b/composer.lock @@ -2143,21 +2143,21 @@ }, { "name": "symfony-cmf/routing", - "version": "2.3.3", + "version": "2.3.4", "source": { "type": "git", "url": "https://github.com/symfony-cmf/Routing.git", - "reference": "3c97e7b7709b313cecfb76d691ad4cc22acbf3f5" + "reference": "bbcdf2f6301d740454ba9ebb8adaefd436c36a6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/3c97e7b7709b313cecfb76d691ad4cc22acbf3f5", - "reference": "3c97e7b7709b313cecfb76d691ad4cc22acbf3f5", + "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/bbcdf2f6301d740454ba9ebb8adaefd436c36a6b", + "reference": "bbcdf2f6301d740454ba9ebb8adaefd436c36a6b", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "psr/log": "^1.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", "symfony/http-kernel": "^4.4 || ^5.0", "symfony/routing": "^4.4 || ^5.0" }, @@ -2200,9 +2200,9 @@ ], "support": { "issues": "https://github.com/symfony-cmf/Routing/issues", - "source": "https://github.com/symfony-cmf/Routing/tree/2.3.3" + "source": "https://github.com/symfony-cmf/Routing/tree/2.3.4" }, - "time": "2020-10-06T10:15:37+00:00" + "time": "2021-11-08T16:33:10+00:00" }, { "name": "symfony/console", @@ -4761,16 +4761,16 @@ }, { "name": "composer/composer", - "version": "2.1.11", + "version": "2.1.12", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "ddc81bb4718747cc93330ccf832e6be8a6c1d015" + "reference": "6e3c2b122e0ec41a7e885fcaf19fa15e2e0819a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/ddc81bb4718747cc93330ccf832e6be8a6c1d015", - "reference": "ddc81bb4718747cc93330ccf832e6be8a6c1d015", + "url": "https://api.github.com/repos/composer/composer/zipball/6e3c2b122e0ec41a7e885fcaf19fa15e2e0819a0", + "reference": "6e3c2b122e0ec41a7e885fcaf19fa15e2e0819a0", "shasum": "" }, "require": { @@ -4839,7 +4839,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.1.11" + "source": "https://github.com/composer/composer/tree/2.1.12" }, "funding": [ { @@ -4855,7 +4855,7 @@ "type": "tidelift" } ], - "time": "2021-11-02T11:10:26+00:00" + "time": "2021-11-09T15:02:04+00:00" }, { "name": "composer/metadata-minifier", diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index adbc407e71a1..0dc75a816089 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -33,7 +33,7 @@ "psr/log": "1.1.4", "ralouphie/getallheaders": "3.0.3", "stack/builder": "v1.0.6", - "symfony-cmf/routing": "2.3.3", + "symfony-cmf/routing": "2.3.4", "symfony/console": "v4.4.33", "symfony/debug": "v4.4.31", "symfony/dependency-injection": "v4.4.33", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index 195e0fefa0d9..26eb7a5f52c7 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -11,7 +11,7 @@ "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.3.1", - "composer/composer": "2.1.11", + "composer/composer": "2.1.12", "composer/metadata-minifier": "1.0.0", "composer/spdx-licenses": "1.5.5", "composer/xdebug-handler": "2.0.2", -- GitLab From 5082060fa33017ca52170ba940acfa33eb70218a Mon Sep 17 00:00:00 2001 From: Lauri Eskola <lauri.eskola@acquia.com> Date: Wed, 10 Nov 2021 18:32:39 +0200 Subject: [PATCH 23/69] =?UTF-8?q?Issue=20#3244621=20by=20mherchel,=20rikki?= =?UTF-8?q?=5Fiki,=20catch,=20cathwaldron,=20rachel=5Fnorfolk,=20alexpott,?= =?UTF-8?q?=20G=C3=A1bor=20Hojtsy:=20Olivero:=20JS=20error=20when=20second?= =?UTF-8?q?ary=20tabs=20are=20present?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit f8a197f52eaf81a6e6b8ff5de03b41d8b459a48a) --- .../Tests/Olivero/oliveroPrimaryTabsTest.js | 50 +++++++++++++++++++ core/themes/olivero/js/tabs.es6.js | 20 ++++---- core/themes/olivero/js/tabs.js | 4 +- .../navigation/menu-local-tasks.html.twig | 4 +- 4 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 core/tests/Drupal/Nightwatch/Tests/Olivero/oliveroPrimaryTabsTest.js diff --git a/core/tests/Drupal/Nightwatch/Tests/Olivero/oliveroPrimaryTabsTest.js b/core/tests/Drupal/Nightwatch/Tests/Olivero/oliveroPrimaryTabsTest.js new file mode 100644 index 000000000000..1cf43fe169ee --- /dev/null +++ b/core/tests/Drupal/Nightwatch/Tests/Olivero/oliveroPrimaryTabsTest.js @@ -0,0 +1,50 @@ +const primaryTabsWrapper = '[data-drupal-nav-primary-tabs]'; +const activeTab = '.tabs__tab.is-active'; +const inactiveTab = '.tabs__tab:not(.is-active)'; +const mobileToggle = `${activeTab} .tabs__trigger`; + +module.exports = { + '@tags': ['core', 'olivero'], + before(browser) { + browser + .drupalInstall({ + setupFile: + 'core/tests/Drupal/TestSite/TestSiteOliveroInstallTestScript.php', + installProfile: 'minimal', + }) + .drupalCreateUser({ + name: 'user', + password: '123', + permissions: ['administer nodes'], + }) + .drupalLogin({ name: 'user', password: '123' }); + browser.resizeWindow(1600, 800); + }, + after(browser) { + browser.drupalUninstall(); + }, + 'Verify desktop primary tab display': (browser) => { + browser + .drupalRelativeURL('/node/1') + .waitForElementVisible(primaryTabsWrapper) + .assert.visible(activeTab) + .assert.visible(inactiveTab) + .assert.not.visible(mobileToggle); + }, + 'Verify mobile tab display and click functionality': (browser) => { + browser + .resizeWindow(699, 800) + .drupalRelativeURL('/node/1') + .waitForElementVisible(primaryTabsWrapper) + .assert.visible(activeTab) + .assert.not.visible(inactiveTab) + .assert.visible(mobileToggle) + .assert.attributeEquals(mobileToggle, 'aria-expanded', 'false') + .click(mobileToggle) + .waitForElementVisible(inactiveTab) + .assert.attributeEquals(mobileToggle, 'aria-expanded', 'true') + .click(mobileToggle) + .waitForElementNotVisible(inactiveTab) + .assert.attributeEquals(mobileToggle, 'aria-expanded', 'false'); + }, +}; diff --git a/core/themes/olivero/js/tabs.es6.js b/core/themes/olivero/js/tabs.es6.js index 309cdb87f4b1..c5d3e0d52892 100644 --- a/core/themes/olivero/js/tabs.es6.js +++ b/core/themes/olivero/js/tabs.es6.js @@ -1,14 +1,14 @@ /** * @file - * Provides interactivity for showing and hiding the tabs at mobile widths. + * Provides interactivity for showing and hiding the primary tabs at mobile widths. */ ((Drupal, once) => { /** - * Initialize the tabs. + * Initialize the primary tabs. * * @param {HTMLElement} el - * The DOM element containing the tabs. + * The DOM element containing the primary tabs. */ function init(el) { const tabs = el.querySelector('.tabs'); @@ -16,7 +16,7 @@ const activeTab = tabs.querySelector('.is-active'); /** - * Determines if tabs are expanded for mobile layouts. + * Determines if primary tabs are expanded for mobile layouts. * * @return {boolean} * Whether the tabs trigger element is expanded. @@ -26,7 +26,7 @@ } /** - * Controls tab visibility on click events. + * Controls primary tab visibility on click events. * * @param {Event} e * The event object. @@ -54,16 +54,18 @@ } /** - * Initialize the tabs. + * Initialize the primary tabs. * * @type {Drupal~behavior} * * @prop {Drupal~behaviorAttach} attach - * Display tabs according to the screen width. + * Display primary tabs according to the screen width. */ - Drupal.behaviors.tabs = { + Drupal.behaviors.primaryTabs = { attach(context) { - once('olivero-tabs', '[data-drupal-nav-tabs]', context).forEach(init); + once('olivero-tabs', '[data-drupal-nav-primary-tabs]', context).forEach( + init, + ); }, }; })(Drupal, once); diff --git a/core/themes/olivero/js/tabs.js b/core/themes/olivero/js/tabs.js index 6932f9b405f1..81d7475d1af3 100644 --- a/core/themes/olivero/js/tabs.js +++ b/core/themes/olivero/js/tabs.js @@ -35,9 +35,9 @@ tabs.querySelector('.tabs__trigger').addEventListener('click', handleTriggerClick); } - Drupal.behaviors.tabs = { + Drupal.behaviors.primaryTabs = { attach: function attach(context) { - once('olivero-tabs', '[data-drupal-nav-tabs]', context).forEach(init); + once('olivero-tabs', '[data-drupal-nav-primary-tabs]', context).forEach(init); } }; })(Drupal, once); \ No newline at end of file diff --git a/core/themes/olivero/templates/navigation/menu-local-tasks.html.twig b/core/themes/olivero/templates/navigation/menu-local-tasks.html.twig index ad43d52a07fc..0f4d9f7d7120 100644 --- a/core/themes/olivero/templates/navigation/menu-local-tasks.html.twig +++ b/core/themes/olivero/templates/navigation/menu-local-tasks.html.twig @@ -18,13 +18,13 @@ {% if primary %} <h2 id="primary-tabs-title" class="visually-hidden">{{ 'Primary tabs'|t }}</h2> - <nav role="navigation" class="tabs-wrapper" aria-labelledby="primary-tabs-title" data-drupal-nav-tabs> + <nav role="navigation" class="tabs-wrapper" aria-labelledby="primary-tabs-title" data-drupal-nav-primary-tabs> <ul class="tabs tabs--primary">{{ primary }}</ul> </nav> {% endif %} {% if secondary %} <h2 id="secondary-tabs-title" class="visually-hidden">{{ 'Secondary tabs'|t }}</h2> - <nav role="navigation" class="tabs-wrapper" aria-labelledby="secondary-tabs-title" data-drupal-nav-tabs> + <nav role="navigation" class="tabs-wrapper" aria-labelledby="secondary-tabs-title"> <ul class="tabs tabs--secondary">{{ secondary }}</ul> </nav> {% endif %} -- GitLab From 4ddfac1157436674b1f1ac995c7ca68428d7b9cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Hojtsy?= <goba@4166.no-reply.drupal.org> Date: Thu, 11 Nov 2021 20:25:32 +0000 Subject: [PATCH 24/69] =?UTF-8?q?Issue=20#3243041=20by=20G=C3=A1bor=20Hojt?= =?UTF-8?q?sy:=20Mark=20Olivero=20stable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/themes/olivero/olivero.info.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/core/themes/olivero/olivero.info.yml b/core/themes/olivero/olivero.info.yml index a551c234e81d..d3043edab608 100644 --- a/core/themes/olivero/olivero.info.yml +++ b/core/themes/olivero/olivero.info.yml @@ -17,7 +17,6 @@ description: 'A clean, accessible, and flexible Drupal front-end theme.' alt text: 'Screenshot of Olivero, Drupal front-end theme.' package: Core version: VERSION -experimental: true libraries: - olivero/global-styling regions: -- GitLab From 68f2ce3c22dd0e6c9ba11283174b3e74dad7552e Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Thu, 11 Nov 2021 14:06:20 +1000 Subject: [PATCH 25/69] Issue #3248649 by alexpott: \Drupal\views\Plugin\views\display\PathPluginBase::alterRoutes() can become very slow on a site with lots of entities and JsonAPI (cherry picked from commit 1e05f8042a8242daf3cda8bba89560eaf60054e2) --- .../modules/views/src/Plugin/views/display/PathPluginBase.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/views/src/Plugin/views/display/PathPluginBase.php b/core/modules/views/src/Plugin/views/display/PathPluginBase.php index a6d6b81a933d..b733524033cb 100644 --- a/core/modules/views/src/Plugin/views/display/PathPluginBase.php +++ b/core/modules/views/src/Plugin/views/display/PathPluginBase.php @@ -245,8 +245,8 @@ public function collectRoutes(RouteCollection $collection) { * TRUE, when the view should override the given route. */ protected function overrideApplies($view_path, Route $view_route, Route $route) { - return $this->overrideAppliesPathAndMethod($view_path, $view_route, $route) - && (!$route->hasRequirement('_format') || $route->getRequirement('_format') === 'html'); + return (!$route->hasRequirement('_format') || $route->getRequirement('_format') === 'html') + && $this->overrideAppliesPathAndMethod($view_path, $view_route, $route); } /** -- GitLab From cfb5106312cf2e38521ce2498f558973e4740581 Mon Sep 17 00:00:00 2001 From: effulgentsia <alex.bronstein@acquia.com> Date: Thu, 11 Nov 2021 14:10:39 -0800 Subject: [PATCH 26/69] Issue #3231364 by Wim Leers, lauriii, bnjmnm, webchick, xjm, tim.plunkett, larowlan, Luke.Leber, catch, effulgentsia, longwave, gabesullice, caldenjacobs, Reinmar, anand.toshniwal93, Shoshana Mayden, zrpnr, yash.rode, nod_, rkoller, antojose, johnwebdev: Add CKEditor 5 module to Drupal core (cherry picked from commit 35972c91956900343a015a74790c1727f9d767e8) --- composer.lock | 3 +- core/.cspell.json | 1 + core/.eslintignore | 1 + core/assets/vendor/ckeditor5/alignment.js | 5 + core/assets/vendor/ckeditor5/basic-styles.js | 5 + core/assets/vendor/ckeditor5/block-quote.js | 5 + core/assets/vendor/ckeditor5/ckeditor5-dll.js | 5 + .../assets/vendor/ckeditor5/editor-classic.js | 5 + .../vendor/ckeditor5/editor-decoupled.js | 5 + core/assets/vendor/ckeditor5/essentials.js | 5 + core/assets/vendor/ckeditor5/heading.js | 5 + .../vendor/ckeditor5/horizontal-line.js | 5 + core/assets/vendor/ckeditor5/html-support.js | 5 + core/assets/vendor/ckeditor5/image.js | 5 + core/assets/vendor/ckeditor5/indent.js | 5 + core/assets/vendor/ckeditor5/language.js | 5 + core/assets/vendor/ckeditor5/link.js | 5 + core/assets/vendor/ckeditor5/list.js | 5 + .../vendor/ckeditor5/paste-from-office.js | 5 + core/assets/vendor/ckeditor5/remove-format.js | 5 + .../assets/vendor/ckeditor5/source-editing.js | 5 + .../vendor/ckeditor5/special-characters.js | 5 + core/assets/vendor/ckeditor5/table.js | 5 + .../vendor/ckeditor5/translations/af.js | 1 + .../vendor/ckeditor5/translations/ar.js | 1 + .../vendor/ckeditor5/translations/ast.js | 1 + .../vendor/ckeditor5/translations/az.js | 1 + .../vendor/ckeditor5/translations/bg.js | 1 + .../vendor/ckeditor5/translations/ca.js | 1 + .../vendor/ckeditor5/translations/cs.js | 1 + .../vendor/ckeditor5/translations/da.js | 1 + .../vendor/ckeditor5/translations/de-ch.js | 1 + .../vendor/ckeditor5/translations/de.js | 1 + .../vendor/ckeditor5/translations/el.js | 1 + .../vendor/ckeditor5/translations/en-au.js | 1 + .../vendor/ckeditor5/translations/en-gb.js | 1 + .../vendor/ckeditor5/translations/eo.js | 1 + .../vendor/ckeditor5/translations/es.js | 1 + .../vendor/ckeditor5/translations/et.js | 1 + .../vendor/ckeditor5/translations/eu.js | 1 + .../vendor/ckeditor5/translations/fa.js | 1 + .../vendor/ckeditor5/translations/fi.js | 1 + .../vendor/ckeditor5/translations/fr.js | 1 + .../vendor/ckeditor5/translations/gl.js | 1 + .../vendor/ckeditor5/translations/gu.js | 1 + .../vendor/ckeditor5/translations/he.js | 1 + .../vendor/ckeditor5/translations/hi.js | 1 + .../vendor/ckeditor5/translations/hr.js | 1 + .../vendor/ckeditor5/translations/hu.js | 1 + .../vendor/ckeditor5/translations/id.js | 1 + .../vendor/ckeditor5/translations/it.js | 1 + .../vendor/ckeditor5/translations/ja.js | 1 + .../vendor/ckeditor5/translations/kk.js | 1 + .../vendor/ckeditor5/translations/km.js | 1 + .../vendor/ckeditor5/translations/kn.js | 1 + .../vendor/ckeditor5/translations/ko.js | 1 + .../vendor/ckeditor5/translations/ku.js | 1 + .../vendor/ckeditor5/translations/lt.js | 1 + .../vendor/ckeditor5/translations/lv.js | 1 + .../vendor/ckeditor5/translations/nb.js | 1 + .../vendor/ckeditor5/translations/ne.js | 1 + .../vendor/ckeditor5/translations/nl.js | 1 + .../vendor/ckeditor5/translations/no.js | 1 + .../vendor/ckeditor5/translations/oc.js | 1 + .../vendor/ckeditor5/translations/pl.js | 1 + .../vendor/ckeditor5/translations/pt-br.js | 1 + .../vendor/ckeditor5/translations/pt.js | 1 + .../vendor/ckeditor5/translations/ro.js | 1 + .../vendor/ckeditor5/translations/ru.js | 1 + .../vendor/ckeditor5/translations/si.js | 1 + .../vendor/ckeditor5/translations/sk.js | 1 + .../vendor/ckeditor5/translations/sl.js | 1 + .../vendor/ckeditor5/translations/sq.js | 1 + .../vendor/ckeditor5/translations/sr-latn.js | 1 + .../vendor/ckeditor5/translations/sr.js | 1 + .../vendor/ckeditor5/translations/sv.js | 1 + .../vendor/ckeditor5/translations/th.js | 1 + .../vendor/ckeditor5/translations/tk.js | 1 + .../vendor/ckeditor5/translations/tr.js | 1 + .../vendor/ckeditor5/translations/tt.js | 1 + .../vendor/ckeditor5/translations/ug.js | 1 + .../vendor/ckeditor5/translations/uk.js | 1 + .../vendor/ckeditor5/translations/vi.js | 1 + .../vendor/ckeditor5/translations/zh-cn.js | 1 + .../vendor/ckeditor5/translations/zh.js | 1 + core/composer.json | 1 + core/core.libraries.yml | 228 ++ core/modules/ckeditor5/ckeditor5.api.php | 235 ++ .../modules/ckeditor5/ckeditor5.ckeditor5.yml | 510 +++ core/modules/ckeditor5/ckeditor5.info.yml | 8 + .../modules/ckeditor5/ckeditor5.libraries.yml | 184 + core/modules/ckeditor5/ckeditor5.module | 398 +++ core/modules/ckeditor5/ckeditor5.routing.yml | 27 + core/modules/ckeditor5/ckeditor5.services.yml | 15 + .../config/schema/ckeditor5.data_types.yml | 12 + .../config/schema/ckeditor5.pair.schema.yml | 15 + .../config/schema/ckeditor5.schema.yml | 76 + .../modules/ckeditor5/css/alignment.admin.css | 45 + core/modules/ckeditor5/css/basic.admin.css | 27 + .../ckeditor5/css/blockquote.admin.css | 3 + .../ckeditor5/css/drupalmedia.admin.css | 4 + core/modules/ckeditor5/css/filter.admin.css | 4 + core/modules/ckeditor5/css/heading.admin.css | 23 + .../ckeditor5/css/horizontal-line.admin.css | 4 + core/modules/ckeditor5/css/ie-warnings.css | 17 + .../ckeditor5/css/imageupload.admin.css | 4 + core/modules/ckeditor5/css/indent.admin.css | 7 + core/modules/ckeditor5/css/internal.admin.css | 45 + core/modules/ckeditor5/css/language.admin.css | 30 + core/modules/ckeditor5/css/language.css | 19 + core/modules/ckeditor5/css/link.admin.css | 3 + core/modules/ckeditor5/css/list.admin.css | 8 + .../ckeditor5/css/quickedit-override.css | 9 + core/modules/ckeditor5/css/quickedit.css | 4 + core/modules/ckeditor5/css/remove-format.css | 3 + .../ckeditor5/css/source-editing.admin.css | 3 + .../ckeditor5/css/special-characters.css | 3 + core/modules/ckeditor5/css/table.admin.css | 3 + core/modules/ckeditor5/css/toolbar.admin.css | 99 + core/modules/ckeditor5/icons/align-center.svg | 1 + .../modules/ckeditor5/icons/align-justify.svg | 1 + core/modules/ckeditor5/icons/align-left.svg | 1 + core/modules/ckeditor5/icons/align-right.svg | 1 + core/modules/ckeditor5/icons/blockquote.svg | 1 + core/modules/ckeditor5/icons/bold.svg | 1 + core/modules/ckeditor5/icons/bulletedlist.svg | 1 + core/modules/ckeditor5/icons/code.svg | 1 + core/modules/ckeditor5/icons/divider.svg | 1 + .../ckeditor5/icons/horizontalline.svg | 1 + core/modules/ckeditor5/icons/imageupload.svg | 1 + core/modules/ckeditor5/icons/indent.svg | 1 + core/modules/ckeditor5/icons/italic.svg | 1 + core/modules/ckeditor5/icons/link.svg | 1 + core/modules/ckeditor5/icons/medialibrary.svg | 1 + core/modules/ckeditor5/icons/numberedlist.svg | 1 + core/modules/ckeditor5/icons/outdent.svg | 1 + core/modules/ckeditor5/icons/redo.svg | 1 + .../modules/ckeditor5/icons/remove-format.svg | 1 + core/modules/ckeditor5/icons/separator.svg | 1 + .../ckeditor5/icons/source-editing.svg | 1 + .../ckeditor5/icons/special-characters.svg | 1 + .../modules/ckeditor5/icons/strikethrough.svg | 1 + core/modules/ckeditor5/icons/subscript.svg | 1 + core/modules/ckeditor5/icons/superscript.svg | 1 + core/modules/ckeditor5/icons/table.svg | 1 + core/modules/ckeditor5/icons/underline.svg | 1 + core/modules/ckeditor5/icons/undo.svg | 1 + .../ckeditor5/js/build/drupalEmphasis.js | 1 + .../ckeditor5/js/build/drupalHtmlEngine.js | 1 + .../modules/ckeditor5/js/build/drupalImage.js | 1 + .../modules/ckeditor5/js/build/drupalMedia.js | 1 + .../ckeditor5/js/ckeditor5.admin.es6.js | 1025 ++++++ core/modules/ckeditor5/js/ckeditor5.admin.js | 584 ++++ core/modules/ckeditor5/js/ckeditor5.es6.js | 560 ++++ .../js/ckeditor5.filter.admin.es6.js | 156 + .../ckeditor5/js/ckeditor5.filter.admin.js | 87 + core/modules/ckeditor5/js/ckeditor5.js | 348 ++ .../drupalEmphasis/src/drupalemphasis.js | 26 + .../src/drupalemphasisediting.js | 30 + .../drupalEmphasis/src/index.js | 10 + .../drupalHtmlEngine/src/drupalhtmlbuilder.js | 176 + .../drupalHtmlEngine/src/drupalhtmlengine.js | 35 + .../drupalHtmlEngine/src/drupalhtmlwriter.js | 31 + .../drupalHtmlEngine/src/index.js | 9 + .../ckeditor5_plugins/drupalImage/README.md | 16 + .../drupalImage/src/drupalimage.js | 26 + .../drupalImage/src/drupalimageediting.js | 521 +++ .../src/imageupload/drupalfilerepository.js | 47 + .../src/imageupload/drupalimageupload.js | 29 + .../imageupload/drupalimageuploadadapter.js | 148 + .../imageupload/drupalimageuploadediting.js | 36 + .../drupalImage/src/index.js | 12 + .../ckeditor5_plugins/drupalMedia/README.md | 39 + .../src/drupallinkmedia/drupallinkmedia.js | 25 + .../drupallinkmedia/drupallinkmediaediting.js | 230 ++ .../src/drupallinkmedia/drupallinkmediaui.js | 112 + .../drupalMedia/src/drupalmedia.js | 25 + .../drupalMedia/src/drupalmediaediting.js | 174 + .../src/drupalmediageneralhtmlsupport.js | 182 + .../drupalMedia/src/drupalmediatoolbar.js | 31 + .../drupalMedia/src/drupalmediaui.js | 49 + .../drupalMedia/src/index.js | 23 + .../drupalMedia/src/insertdrupalmedia.js | 74 + .../src/mediaimagetextalternative.js | 26 + .../mediaimagetextalternativecommand.js | 77 + .../mediaimagetextalternativeediting.js | 27 + .../mediaimagetextalternativeui.js | 218 ++ .../ui/textalternativeformview.js | 173 + .../drupalMedia/src/ui/utils.js | 53 + .../drupalMedia/src/utils.js | 51 + .../drupalMedia/theme/icons/medialibrary.svg | 1 + .../ckeditor5/js/ie11.filter.warnings.es6.js | 131 + .../ckeditor5/js/ie11.filter.warnings.js | 69 + .../ckeditor5/js/ie11.user.warnings.es6.js | 137 + .../ckeditor5/js/ie11.user.warnings.js | 64 + .../js/media_embed_ckeditor5.theme.es6.js | 19 + .../js/media_embed_ckeditor5.theme.js | 12 + .../src/Annotation/CKEditor4To5Upgrade.php | 50 + .../CKEditor5AspectsOfCKEditor5Plugin.php | 43 + .../src/Annotation/CKEditor5Plugin.php | 88 + .../DrupalAspectsOfCKEditor5Plugin.php | 100 + .../Controller/CKEditor5ImageController.php | 297 ++ .../Controller/CKEditor5MediaController.php | 178 + .../src/HTMLRestrictionsUtilities.php | 253 ++ .../src/Plugin/CKEditor4To5Upgrade/Core.php | 216 ++ .../CKEditor4To5UpgradePluginInterface.php | 93 + .../CKEditor4To5UpgradePluginManager.php | 226 ++ ...namicPluginConfigWithCsrfTokenUrlTrait.php | 52 + .../src/Plugin/CKEditor5Plugin/Heading.php | 226 ++ .../Plugin/CKEditor5Plugin/ImageUpload.php | 106 + .../src/Plugin/CKEditor5Plugin/Language.php | 102 + .../src/Plugin/CKEditor5Plugin/Media.php | 40 + .../Plugin/CKEditor5Plugin/MediaLibrary.php | 102 + .../Plugin/CKEditor5Plugin/SourceEditing.php | 87 + .../CKEditor5PluginConfigurableInterface.php | 26 + .../CKEditor5PluginConfigurableTrait.php | 26 + .../src/Plugin/CKEditor5PluginDefault.php | 40 + .../src/Plugin/CKEditor5PluginDefinition.php | 426 +++ ...CKEditor5PluginElementsSubsetInterface.php | 25 + .../src/Plugin/CKEditor5PluginInterface.php | 39 + .../src/Plugin/CKEditor5PluginManager.php | 420 +++ .../CKEditor5PluginManagerInterface.php | 122 + .../ckeditor5/src/Plugin/Editor/CKEditor5.php | 895 +++++ .../Constraint/CKEditor5ElementConstraint.php | 26 + .../CKEditor5ElementConstraintValidator.php | 37 + .../EnabledConfigurablePluginsConstraint.php | 28 + ...ConfigurablePluginsConstraintValidator.php | 78 + .../FundamentalCompatibilityConstraint.php | 56 + ...mentalCompatibilityConstraintValidator.php | 293 ++ .../PluginManagerDependentValidatorTrait.php | 43 + .../SourceEditingRedundantTagsConstraint.php | 35 + ...ditingRedundantTagsConstraintValidator.php | 103 + ...extEditorObjectDependentValidatorTrait.php | 55 + .../ToolbarItemConditionsMetConstraint.php | 49 + ...arItemConditionsMetConstraintValidator.php | 137 + .../Constraint/ToolbarItemConstraint.php | 28 + .../ToolbarItemConstraintValidator.php | 70 + .../ToolbarItemDependencyConstraint.php | 42 + ...olbarItemDependencyConstraintValidator.php | 40 + .../ckeditor5/src/SmartDefaultSettings.php | 663 ++++ .../ckeditor5-settings-toolbar.html.twig | 26 + .../ckeditor4to5upgrade_plugin_test.info.yml | 7 + .../ckeditor4to5upgrade_plugin_test.module | 51 + ...efinition_supporting_element.ckeditor5.yml | 111 + ...or5_definition_supporting_element.info.yml | 7 + ...itor5_plugin_conditions_test.ckeditor5.yml | 14 + .../ckeditor5_plugin_conditions_test.info.yml | 7 + ...itor5_plugin_elements_subset.ckeditor5.yml | 9 + .../ckeditor5_plugin_elements_subset.info.yml | 7 + ...keditor5_plugin_elements_subset.schema.yml | 10 + .../Plugin/CKEditor5Plugin/SneakySuperset.php | 51 + ...editor5_plugin_elements_test.ckeditor5.yml | 33 + .../ckeditor5_plugin_elements_test.info.yml | 7 + .../ckeditor5_test.ckeditor5.yml | 16 + .../ckeditor5_test/ckeditor5_test.info.yml | 8 + .../ckeditor5_test.libraries.yml | 10 + .../ckeditor5_test/ckeditor5_test.routing.yml | 6 + .../modules/ckeditor5_test/css/layout.css | 14 + .../CKEditor5OffCanvasTestController.php | 35 + .../src/Functional/ImageUploadAccessTest.php | 52 + .../tests/src/Functional/ImageUploadTest.php | 256 ++ .../tests/src/Functional/MediaImageTest.php | 188 ++ .../src/FunctionalJavascript/AdminUiTest.php | 173 + .../CKEditor5AllowedTagsTest.php | 521 +++ .../CKEditor5CKEditor4Compatibility.php | 123 + .../CKEditor5OffCanvasTest.php | 52 + .../FunctionalJavascript/CKEditor5Test.php | 472 +++ .../CKEditor5TestBase.php | 140 + .../src/FunctionalJavascript/ImageTest.php | 313 ++ .../src/FunctionalJavascript/LanguageTest.php | 74 + .../FunctionalJavascript/MediaLibraryTest.php | 253 ++ .../src/FunctionalJavascript/MediaTest.php | 704 ++++ .../QuickEditIntegrationTest.php | 288 ++ .../CKEditor4to5UpgradeCompletenessTest.php | 257 ++ .../src/Kernel/CKEditor5PluginManagerTest.php | 1117 +++++++ .../Kernel/CKEditor5ValidationTestTrait.php | 50 + .../src/Kernel/ConfigurablePluginTest.php | 78 + .../tests/src/Kernel/LanguageTest.php | 122 + .../src/Kernel/SmartDefaultSettingsTest.php | 682 ++++ .../tests/src/Kernel/ValidatorsTest.php | 775 +++++ .../Tests/drupalHtmlBuilderTest.es6.js | 131 + .../Nightwatch/Tests/drupalHtmlBuilderTest.js | 101 + .../tests/src/Traits/CKEditor5TestTrait.php | 127 + .../Traits/SynchronizeCsrfTokenSeedTrait.php | 42 + .../tests/src/Unit/CKEditor5Test.php | 117 + core/modules/ckeditor5/webpack.config.js | 63 + core/package.json | 34 +- core/scripts/dev/commit-code-check.sh | 4 +- core/scripts/js/assets.js | 307 +- core/yarn.lock | 2953 ++++++++++++++++- 290 files changed, 25137 insertions(+), 131 deletions(-) create mode 100644 core/assets/vendor/ckeditor5/alignment.js create mode 100644 core/assets/vendor/ckeditor5/basic-styles.js create mode 100644 core/assets/vendor/ckeditor5/block-quote.js create mode 100644 core/assets/vendor/ckeditor5/ckeditor5-dll.js create mode 100644 core/assets/vendor/ckeditor5/editor-classic.js create mode 100644 core/assets/vendor/ckeditor5/editor-decoupled.js create mode 100644 core/assets/vendor/ckeditor5/essentials.js create mode 100644 core/assets/vendor/ckeditor5/heading.js create mode 100644 core/assets/vendor/ckeditor5/horizontal-line.js create mode 100644 core/assets/vendor/ckeditor5/html-support.js create mode 100644 core/assets/vendor/ckeditor5/image.js create mode 100644 core/assets/vendor/ckeditor5/indent.js create mode 100644 core/assets/vendor/ckeditor5/language.js create mode 100644 core/assets/vendor/ckeditor5/link.js create mode 100644 core/assets/vendor/ckeditor5/list.js create mode 100644 core/assets/vendor/ckeditor5/paste-from-office.js create mode 100644 core/assets/vendor/ckeditor5/remove-format.js create mode 100644 core/assets/vendor/ckeditor5/source-editing.js create mode 100644 core/assets/vendor/ckeditor5/special-characters.js create mode 100644 core/assets/vendor/ckeditor5/table.js create mode 100644 core/assets/vendor/ckeditor5/translations/af.js create mode 100644 core/assets/vendor/ckeditor5/translations/ar.js create mode 100644 core/assets/vendor/ckeditor5/translations/ast.js create mode 100644 core/assets/vendor/ckeditor5/translations/az.js create mode 100644 core/assets/vendor/ckeditor5/translations/bg.js create mode 100644 core/assets/vendor/ckeditor5/translations/ca.js create mode 100644 core/assets/vendor/ckeditor5/translations/cs.js create mode 100644 core/assets/vendor/ckeditor5/translations/da.js create mode 100644 core/assets/vendor/ckeditor5/translations/de-ch.js create mode 100644 core/assets/vendor/ckeditor5/translations/de.js create mode 100644 core/assets/vendor/ckeditor5/translations/el.js create mode 100644 core/assets/vendor/ckeditor5/translations/en-au.js create mode 100644 core/assets/vendor/ckeditor5/translations/en-gb.js create mode 100644 core/assets/vendor/ckeditor5/translations/eo.js create mode 100644 core/assets/vendor/ckeditor5/translations/es.js create mode 100644 core/assets/vendor/ckeditor5/translations/et.js create mode 100644 core/assets/vendor/ckeditor5/translations/eu.js create mode 100644 core/assets/vendor/ckeditor5/translations/fa.js create mode 100644 core/assets/vendor/ckeditor5/translations/fi.js create mode 100644 core/assets/vendor/ckeditor5/translations/fr.js create mode 100644 core/assets/vendor/ckeditor5/translations/gl.js create mode 100644 core/assets/vendor/ckeditor5/translations/gu.js create mode 100644 core/assets/vendor/ckeditor5/translations/he.js create mode 100644 core/assets/vendor/ckeditor5/translations/hi.js create mode 100644 core/assets/vendor/ckeditor5/translations/hr.js create mode 100644 core/assets/vendor/ckeditor5/translations/hu.js create mode 100644 core/assets/vendor/ckeditor5/translations/id.js create mode 100644 core/assets/vendor/ckeditor5/translations/it.js create mode 100644 core/assets/vendor/ckeditor5/translations/ja.js create mode 100644 core/assets/vendor/ckeditor5/translations/kk.js create mode 100644 core/assets/vendor/ckeditor5/translations/km.js create mode 100644 core/assets/vendor/ckeditor5/translations/kn.js create mode 100644 core/assets/vendor/ckeditor5/translations/ko.js create mode 100644 core/assets/vendor/ckeditor5/translations/ku.js create mode 100644 core/assets/vendor/ckeditor5/translations/lt.js create mode 100644 core/assets/vendor/ckeditor5/translations/lv.js create mode 100644 core/assets/vendor/ckeditor5/translations/nb.js create mode 100644 core/assets/vendor/ckeditor5/translations/ne.js create mode 100644 core/assets/vendor/ckeditor5/translations/nl.js create mode 100644 core/assets/vendor/ckeditor5/translations/no.js create mode 100644 core/assets/vendor/ckeditor5/translations/oc.js create mode 100644 core/assets/vendor/ckeditor5/translations/pl.js create mode 100644 core/assets/vendor/ckeditor5/translations/pt-br.js create mode 100644 core/assets/vendor/ckeditor5/translations/pt.js create mode 100644 core/assets/vendor/ckeditor5/translations/ro.js create mode 100644 core/assets/vendor/ckeditor5/translations/ru.js create mode 100644 core/assets/vendor/ckeditor5/translations/si.js create mode 100644 core/assets/vendor/ckeditor5/translations/sk.js create mode 100644 core/assets/vendor/ckeditor5/translations/sl.js create mode 100644 core/assets/vendor/ckeditor5/translations/sq.js create mode 100644 core/assets/vendor/ckeditor5/translations/sr-latn.js create mode 100644 core/assets/vendor/ckeditor5/translations/sr.js create mode 100644 core/assets/vendor/ckeditor5/translations/sv.js create mode 100644 core/assets/vendor/ckeditor5/translations/th.js create mode 100644 core/assets/vendor/ckeditor5/translations/tk.js create mode 100644 core/assets/vendor/ckeditor5/translations/tr.js create mode 100644 core/assets/vendor/ckeditor5/translations/tt.js create mode 100644 core/assets/vendor/ckeditor5/translations/ug.js create mode 100644 core/assets/vendor/ckeditor5/translations/uk.js create mode 100644 core/assets/vendor/ckeditor5/translations/vi.js create mode 100644 core/assets/vendor/ckeditor5/translations/zh-cn.js create mode 100644 core/assets/vendor/ckeditor5/translations/zh.js create mode 100644 core/modules/ckeditor5/ckeditor5.api.php create mode 100644 core/modules/ckeditor5/ckeditor5.ckeditor5.yml create mode 100644 core/modules/ckeditor5/ckeditor5.info.yml create mode 100644 core/modules/ckeditor5/ckeditor5.libraries.yml create mode 100644 core/modules/ckeditor5/ckeditor5.module create mode 100644 core/modules/ckeditor5/ckeditor5.routing.yml create mode 100644 core/modules/ckeditor5/ckeditor5.services.yml create mode 100644 core/modules/ckeditor5/config/schema/ckeditor5.data_types.yml create mode 100644 core/modules/ckeditor5/config/schema/ckeditor5.pair.schema.yml create mode 100644 core/modules/ckeditor5/config/schema/ckeditor5.schema.yml create mode 100644 core/modules/ckeditor5/css/alignment.admin.css create mode 100644 core/modules/ckeditor5/css/basic.admin.css create mode 100644 core/modules/ckeditor5/css/blockquote.admin.css create mode 100644 core/modules/ckeditor5/css/drupalmedia.admin.css create mode 100644 core/modules/ckeditor5/css/filter.admin.css create mode 100644 core/modules/ckeditor5/css/heading.admin.css create mode 100644 core/modules/ckeditor5/css/horizontal-line.admin.css create mode 100644 core/modules/ckeditor5/css/ie-warnings.css create mode 100644 core/modules/ckeditor5/css/imageupload.admin.css create mode 100644 core/modules/ckeditor5/css/indent.admin.css create mode 100644 core/modules/ckeditor5/css/internal.admin.css create mode 100644 core/modules/ckeditor5/css/language.admin.css create mode 100644 core/modules/ckeditor5/css/language.css create mode 100644 core/modules/ckeditor5/css/link.admin.css create mode 100644 core/modules/ckeditor5/css/list.admin.css create mode 100644 core/modules/ckeditor5/css/quickedit-override.css create mode 100644 core/modules/ckeditor5/css/quickedit.css create mode 100644 core/modules/ckeditor5/css/remove-format.css create mode 100644 core/modules/ckeditor5/css/source-editing.admin.css create mode 100644 core/modules/ckeditor5/css/special-characters.css create mode 100644 core/modules/ckeditor5/css/table.admin.css create mode 100644 core/modules/ckeditor5/css/toolbar.admin.css create mode 100644 core/modules/ckeditor5/icons/align-center.svg create mode 100644 core/modules/ckeditor5/icons/align-justify.svg create mode 100644 core/modules/ckeditor5/icons/align-left.svg create mode 100644 core/modules/ckeditor5/icons/align-right.svg create mode 100644 core/modules/ckeditor5/icons/blockquote.svg create mode 100644 core/modules/ckeditor5/icons/bold.svg create mode 100644 core/modules/ckeditor5/icons/bulletedlist.svg create mode 100644 core/modules/ckeditor5/icons/code.svg create mode 100644 core/modules/ckeditor5/icons/divider.svg create mode 100644 core/modules/ckeditor5/icons/horizontalline.svg create mode 100644 core/modules/ckeditor5/icons/imageupload.svg create mode 100644 core/modules/ckeditor5/icons/indent.svg create mode 100644 core/modules/ckeditor5/icons/italic.svg create mode 100644 core/modules/ckeditor5/icons/link.svg create mode 100644 core/modules/ckeditor5/icons/medialibrary.svg create mode 100644 core/modules/ckeditor5/icons/numberedlist.svg create mode 100644 core/modules/ckeditor5/icons/outdent.svg create mode 100644 core/modules/ckeditor5/icons/redo.svg create mode 100644 core/modules/ckeditor5/icons/remove-format.svg create mode 100644 core/modules/ckeditor5/icons/separator.svg create mode 100644 core/modules/ckeditor5/icons/source-editing.svg create mode 100644 core/modules/ckeditor5/icons/special-characters.svg create mode 100644 core/modules/ckeditor5/icons/strikethrough.svg create mode 100644 core/modules/ckeditor5/icons/subscript.svg create mode 100644 core/modules/ckeditor5/icons/superscript.svg create mode 100644 core/modules/ckeditor5/icons/table.svg create mode 100644 core/modules/ckeditor5/icons/underline.svg create mode 100644 core/modules/ckeditor5/icons/undo.svg create mode 100644 core/modules/ckeditor5/js/build/drupalEmphasis.js create mode 100644 core/modules/ckeditor5/js/build/drupalHtmlEngine.js create mode 100644 core/modules/ckeditor5/js/build/drupalImage.js create mode 100644 core/modules/ckeditor5/js/build/drupalMedia.js create mode 100644 core/modules/ckeditor5/js/ckeditor5.admin.es6.js create mode 100644 core/modules/ckeditor5/js/ckeditor5.admin.js create mode 100644 core/modules/ckeditor5/js/ckeditor5.es6.js create mode 100644 core/modules/ckeditor5/js/ckeditor5.filter.admin.es6.js create mode 100644 core/modules/ckeditor5/js/ckeditor5.filter.admin.js create mode 100644 core/modules/ckeditor5/js/ckeditor5.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/drupalemphasis.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/drupalemphasisediting.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/index.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlbuilder.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlengine.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlwriter.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/index.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/README.md create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/drupalimage.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/drupalimageediting.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalfilerepository.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageupload.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageuploadadapter.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageuploadediting.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/index.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/README.md create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmedia.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaediting.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaui.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmedia.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediageneralhtmlsupport.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediatoolbar.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaui.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/index.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/insertdrupalmedia.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeui.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/ui/utils.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/utils.js create mode 100644 core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/theme/icons/medialibrary.svg create mode 100644 core/modules/ckeditor5/js/ie11.filter.warnings.es6.js create mode 100644 core/modules/ckeditor5/js/ie11.filter.warnings.js create mode 100644 core/modules/ckeditor5/js/ie11.user.warnings.es6.js create mode 100644 core/modules/ckeditor5/js/ie11.user.warnings.js create mode 100644 core/modules/ckeditor5/js/media_embed_ckeditor5.theme.es6.js create mode 100644 core/modules/ckeditor5/js/media_embed_ckeditor5.theme.js create mode 100644 core/modules/ckeditor5/src/Annotation/CKEditor4To5Upgrade.php create mode 100644 core/modules/ckeditor5/src/Annotation/CKEditor5AspectsOfCKEditor5Plugin.php create mode 100644 core/modules/ckeditor5/src/Annotation/CKEditor5Plugin.php create mode 100644 core/modules/ckeditor5/src/Annotation/DrupalAspectsOfCKEditor5Plugin.php create mode 100644 core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php create mode 100644 core/modules/ckeditor5/src/Controller/CKEditor5MediaController.php create mode 100644 core/modules/ckeditor5/src/HTMLRestrictionsUtilities.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Core.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor4To5UpgradePluginInterface.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor4To5UpgradePluginManager.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/DynamicPluginConfigWithCsrfTokenUrlTrait.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Heading.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/ImageUpload.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Media.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/MediaLibrary.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/SourceEditing.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5PluginConfigurableInterface.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5PluginConfigurableTrait.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefault.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5PluginElementsSubsetInterface.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5PluginInterface.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php create mode 100644 core/modules/ckeditor5/src/Plugin/CKEditor5PluginManagerInterface.php create mode 100644 core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5ElementConstraint.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5ElementConstraintValidator.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraint.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraint.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/PluginManagerDependentValidatorTrait.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraint.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraintValidator.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/TextEditorObjectDependentValidatorTrait.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConditionsMetConstraint.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConditionsMetConstraintValidator.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConstraint.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConstraintValidator.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemDependencyConstraint.php create mode 100644 core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemDependencyConstraintValidator.php create mode 100644 core/modules/ckeditor5/src/SmartDefaultSettings.php create mode 100644 core/modules/ckeditor5/templates/ckeditor5-settings-toolbar.html.twig create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor4to5upgrade_plugin_test/ckeditor4to5upgrade_plugin_test.info.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor4to5upgrade_plugin_test/ckeditor4to5upgrade_plugin_test.module create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_definition_supporting_element/ckeditor5_definition_supporting_element.ckeditor5.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_definition_supporting_element/ckeditor5_definition_supporting_element.info.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.ckeditor5.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.info.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/ckeditor5_plugin_elements_subset.ckeditor5.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/ckeditor5_plugin_elements_subset.info.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/config/schema/ckeditor5_plugin_elements_subset.schema.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/src/Plugin/CKEditor5Plugin/SneakySuperset.php create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_test/ckeditor5_plugin_elements_test.ckeditor5.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_test/ckeditor5_plugin_elements_test.info.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.ckeditor5.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.info.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.libraries.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.routing.yml create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_test/css/layout.css create mode 100644 core/modules/ckeditor5/tests/modules/ckeditor5_test/src/Controller/CKEditor5OffCanvasTestController.php create mode 100644 core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php create mode 100644 core/modules/ckeditor5/tests/src/Functional/ImageUploadTest.php create mode 100644 core/modules/ckeditor5/tests/src/Functional/MediaImageTest.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5OffCanvasTest.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5TestBase.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTest.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/LanguageTest.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaLibraryTest.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php create mode 100644 core/modules/ckeditor5/tests/src/FunctionalJavascript/QuickEditIntegrationTest.php create mode 100644 core/modules/ckeditor5/tests/src/Kernel/CKEditor4to5UpgradeCompletenessTest.php create mode 100644 core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php create mode 100644 core/modules/ckeditor5/tests/src/Kernel/CKEditor5ValidationTestTrait.php create mode 100644 core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php create mode 100644 core/modules/ckeditor5/tests/src/Kernel/LanguageTest.php create mode 100644 core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php create mode 100644 core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php create mode 100644 core/modules/ckeditor5/tests/src/Nightwatch/Tests/drupalHtmlBuilderTest.es6.js create mode 100644 core/modules/ckeditor5/tests/src/Nightwatch/Tests/drupalHtmlBuilderTest.js create mode 100644 core/modules/ckeditor5/tests/src/Traits/CKEditor5TestTrait.php create mode 100644 core/modules/ckeditor5/tests/src/Traits/SynchronizeCsrfTokenSeedTrait.php create mode 100644 core/modules/ckeditor5/tests/src/Unit/CKEditor5Test.php create mode 100644 core/modules/ckeditor5/webpack.config.js diff --git a/composer.lock b/composer.lock index effef11be664..74c5c365ef38 100644 --- a/composer.lock +++ b/composer.lock @@ -535,7 +535,7 @@ "dist": { "type": "path", "url": "core", - "reference": "f3d27c6d13a1d3b6b5e3f2bf2074f63d24c17603" + "reference": "1349b63771ae6c0b66e9d870c692bf7f51024171" }, "require": { "asm89/stack-cors": "^1.1", @@ -599,6 +599,7 @@ "drupal/book": "self.version", "drupal/breakpoint": "self.version", "drupal/ckeditor": "self.version", + "drupal/ckeditor5": "self.version", "drupal/claro": "self.version", "drupal/classy": "self.version", "drupal/color": "self.version", diff --git a/core/.cspell.json b/core/.cspell.json index ca08c426d021..56df9c720214 100644 --- a/core/.cspell.json +++ b/core/.cspell.json @@ -13,6 +13,7 @@ "**/LICENSE.txt", "../**/LICENSE.txt", "modules/**/Migrate*Test.php", + "modules/ckeditor5/js/build/*", "modules/color/preview.html", "modules/color/tests/modules/color_test/themes/color_test_theme/color/preview.html", "modules/media/tests/fixtures/oembed/*", diff --git a/core/.eslintignore b/core/.eslintignore index 0cf12c6e2554..655ca871470f 100644 --- a/core/.eslintignore +++ b/core/.eslintignore @@ -3,6 +3,7 @@ node_modules/**/* **/js_test_files/**/* *.js !*.es6.js +!modules/ckeditor5/js/ckeditor5_plugins/**/*.js modules/locale/tests/locale_test.es6.js !tests/Drupal/Nightwatch/**/*.js misc/polyfills/array.find.es6.js diff --git a/core/assets/vendor/ckeditor5/alignment.js b/core/assets/vendor/ckeditor5/alignment.js new file mode 100644 index 000000000000..9c07cac3f41a --- /dev/null +++ b/core/assets/vendor/ckeditor5/alignment.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(t){const e=t.en=t.en||{};e.dictionary=Object.assign(e.dictionary||{},{"Align center":"Align center","Align left":"Align left","Align right":"Align right",Justify:"Justify","Text alignment":"Text alignment","Text alignment toolbar":"Text alignment toolbar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.alignment=function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=4)}([function(t,e,n){t.exports=n(3)("./src/core.js")},function(t,e,n){t.exports=n(3)("./src/utils.js")},function(t,e,n){t.exports=n(3)("./src/ui.js")},function(t,e){t.exports=CKEditor5.dll},function(t,e,n){"use strict";n.r(e),n.d(e,"Alignment",(function(){return f})),n.d(e,"AlignmentEditing",(function(){return u})),n.d(e,"AlignmentUI",(function(){return m}));var i=n(0),o=n(1);const r=["left","right","center","justify"];function a(t){return r.includes(t)}function l(t,e){return"rtl"==e.contentLanguageDirection?"right"===t:"left"===t}function s(t){const e=t.map(t=>{let e;return e="string"==typeof t?{name:t}:t,e}).filter(t=>{const e=!!r.includes(t.name);return e||Object(o.logWarning)("alignment-config-name-not-recognized",{option:t}),e}),n=e.filter(t=>!!t.className).length;if(n&&n<e.length)throw new o.CKEditorError("alignment-config-classnames-are-missing",{configuredOptions:t});return e.forEach((e,n,i)=>{const r=i.slice(n+1);if(r.some(t=>t.name==e.name))throw new o.CKEditorError("alignment-config-name-already-defined",{option:e,configuredOptions:t});if(e.className){if(r.some(t=>t.className==e.className))throw new o.CKEditorError("alignment-config-classname-already-defined",{option:e,configuredOptions:t})}}),e}class c extends i.Command{refresh(){const t=this.editor.locale,e=Object(o.first)(this.editor.model.document.selection.getSelectedBlocks());this.isEnabled=!!e&&this._canBeAligned(e),this.isEnabled&&e.hasAttribute("alignment")?this.value=e.getAttribute("alignment"):this.value="rtl"===t.contentLanguageDirection?"right":"left"}execute(t={}){const e=this.editor,n=e.locale,i=e.model,o=i.document,r=t.value;i.change(t=>{const e=Array.from(o.selection.getSelectedBlocks()).filter(t=>this._canBeAligned(t)),i=e[0].getAttribute("alignment");l(r,n)||i===r||!r?function(t,e){for(const n of t)e.removeAttribute("alignment",n)}(e,t):function(t,e,n){for(const i of t)e.setAttribute("alignment",n,i)}(e,t,r)})}_canBeAligned(t){return this.editor.model.schema.checkAttribute(t,"alignment")}}class u extends i.Plugin{static get pluginName(){return"AlignmentEditing"}constructor(t){super(t),t.config.define("alignment",{options:[...r.map(t=>({name:t}))]})}init(){const t=this.editor,e=t.locale,n=t.model.schema,i=s(t.config.get("alignment.options")).filter(t=>a(t.name)&&!l(t.name,e)),o=i.some(t=>!!t.className);n.extend("$block",{allowAttributes:"alignment"}),t.model.schema.setAttributeProperties("alignment",{isFormatting:!0}),o?t.conversion.attributeToAttribute(function(t){const e={model:{key:"alignment",values:t.map(t=>t.name)},view:{}};for(const n of t)e.view[n.name]={key:"class",value:n.className};return e}(i)):t.conversion.for("downcast").attributeToAttribute(function(t){const e={model:{key:"alignment",values:t.map(t=>t.name)},view:{}};for(const{name:n}of t)e.view[n]={key:"style",value:{"text-align":n}};return e}(i));const r=function(t){const e=[];for(const{name:n}of t)e.push({view:{key:"style",value:{"text-align":n}},model:{key:"alignment",value:n}});return e}(i);for(const e of r)t.conversion.for("upcast").attributeToAttribute(e);const u=function(t){const e=[];for(const{name:n}of t)e.push({view:{key:"align",value:n},model:{key:"alignment",value:n}});return e}(i);for(const e of u)t.conversion.for("upcast").attributeToAttribute(e);t.commands.add("alignment",new c(t))}}var g=n(2);const d=new Map([["left",i.icons.alignLeft],["right",i.icons.alignRight],["center",i.icons.alignCenter],["justify",i.icons.alignJustify]]);class m extends i.Plugin{get localizedOptionTitles(){const t=this.editor.t;return{left:t("Align left"),right:t("Align right"),center:t("Align center"),justify:t("Justify")}}static get pluginName(){return"AlignmentUI"}init(){const t=this.editor,e=t.ui.componentFactory,n=t.t,i=s(t.config.get("alignment.options"));i.map(t=>t.name).filter(a).forEach(t=>this._addButton(t)),e.add("alignment",t=>{const o=Object(g.createDropdown)(t),r=i.map(t=>e.create("alignment:"+t.name));Object(g.addToolbarToDropdown)(o,r),o.buttonView.set({label:n("Text alignment"),tooltip:!0}),o.toolbarView.isVertical=!0,o.toolbarView.ariaLabel=n("Text alignment toolbar"),o.extendTemplate({attributes:{class:"ck-alignment-dropdown"}});const a="rtl"===t.contentLanguageDirection?d.get("right"):d.get("left");return o.buttonView.bind("icon").toMany(r,"isOn",(...t)=>{const e=t.findIndex(t=>t);return e<0?a:r[e].icon}),o.bind("isEnabled").toMany(r,"isEnabled",(...t)=>t.some(t=>t)),o})}_addButton(t){const e=this.editor;e.ui.componentFactory.add("alignment:"+t,n=>{const i=e.commands.get("alignment"),o=new g.ButtonView(n);return o.set({label:this.localizedOptionTitles[t],icon:d.get(t),tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(i),o.bind("isOn").to(i,"value",e=>e===t),this.listenTo(o,"execute",()=>{e.execute("alignment",{value:t}),e.editing.view.focus()}),o})}}class f extends i.Plugin{static get requires(){return[u,m]}static get pluginName(){return"Alignment"}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/basic-styles.js b/core/assets/vendor/ckeditor5/basic-styles.js new file mode 100644 index 000000000000..8a8c7c10d7f4 --- /dev/null +++ b/core/assets/vendor/ckeditor5/basic-styles.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(t){const e=t.en=t.en||{};e.dictionary=Object.assign(e.dictionary||{},{Bold:"Bold",Code:"Code",Italic:"Italic",Strikethrough:"Strikethrough",Subscript:"Subscript",Superscript:"Superscript",Underline:"Underline"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.basicStyles=function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=7)}([function(t,e,i){t.exports=i(3)("./src/core.js")},function(t,e,i){t.exports=i(3)("./src/ui.js")},function(t,e,i){t.exports=i(3)("./src/typing.js")},function(t,e){t.exports=CKEditor5.dll},function(t,e,i){var n=i(5),r=i(6);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[t.i,r,""]]);var s={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(r,s);t.exports=r.locals||{}},function(t,e,i){"use strict";var n,r=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},s=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),o=[];function c(t){for(var e=-1,i=0;i<o.length;i++)if(o[i].identifier===t){e=i;break}return e}function a(t,e){for(var i={},n=[],r=0;r<t.length;r++){var s=t[r],a=e.base?s[0]+e.base:s[0],u=i[a]||0,l="".concat(a," ").concat(u);i[a]=u+1;var d=c(l),g={css:s[1],media:s[2],sourceMap:s[3]};-1!==d?(o[d].references++,o[d].updater(g)):o.push({identifier:l,updater:b(g,e),references:1}),n.push(l)}return n}function u(t){var e=document.createElement("style"),n=t.attributes||{};if(void 0===n.nonce){var r=i.nc;r&&(n.nonce=r)}if(Object.keys(n).forEach((function(t){e.setAttribute(t,n[t])})),"function"==typeof t.insert)t.insert(e);else{var o=s(t.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(e)}return e}var l,d=(l=[],function(t,e){return l[t]=e,l.filter(Boolean).join("\n")});function g(t,e,i,n){var r=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(t.styleSheet)t.styleSheet.cssText=d(e,r);else{var s=document.createTextNode(r),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(s,o[e]):t.appendChild(s)}}function p(t,e,i){var n=i.css,r=i.media,s=i.sourceMap;if(r?t.setAttribute("media",r):t.removeAttribute("media"),s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var m=null,h=0;function b(t,e){var i,n,r;if(e.singleton){var s=h++;i=m||(m=u(e)),n=g.bind(null,i,s,!1),r=g.bind(null,i,s,!0)}else i=u(e),n=p.bind(null,i,e),r=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else r()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=r());var i=a(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var n=0;n<i.length;n++){var r=c(i[n]);o[r].references--}for(var s=a(t,e),u=0;u<i.length;u++){var l=c(i[u]);0===o[l].references&&(o[l].updater(),o.splice(l,1))}i=s}}}},function(t,e){t.exports=".ck-content code{background-color:hsla(0,0%,78%,.3);padding:.15em;border-radius:2px}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}"},function(t,e,i){"use strict";i.r(e),i.d(e,"Bold",(function(){return a})),i.d(e,"BoldEditing",(function(){return s})),i.d(e,"BoldUI",(function(){return c})),i.d(e,"Code",(function(){return p})),i.d(e,"CodeEditing",(function(){return d})),i.d(e,"CodeUI",(function(){return g})),i.d(e,"Italic",(function(){return b})),i.d(e,"ItalicEditing",(function(){return m})),i.d(e,"ItalicUI",(function(){return h})),i.d(e,"Strikethrough",(function(){return w})),i.d(e,"StrikethroughEditing",(function(){return f})),i.d(e,"StrikethroughUI",(function(){return v})),i.d(e,"Subscript",(function(){return E})),i.d(e,"SubscriptEditing",(function(){return x})),i.d(e,"SubscriptUI",(function(){return y})),i.d(e,"Superscript",(function(){return k})),i.d(e,"SuperscriptEditing",(function(){return S})),i.d(e,"SuperscriptUI",(function(){return T})),i.d(e,"Underline",(function(){return I})),i.d(e,"UnderlineEditing",(function(){return A})),i.d(e,"UnderlineUI",(function(){return C}));var n=i(0);class r extends n.Command{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,i=e.document.selection,n=void 0===t.forceValue?!this.value:t.forceValue;e.change(t=>{if(i.isCollapsed)n?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const r=e.schema.getValidRanges(i.getRanges(),this.attributeKey);for(const e of r)n?t.setAttribute(this.attributeKey,n,e):t.removeAttribute(this.attributeKey,e)}})}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,i=t.document.selection;if(i.isCollapsed)return i.hasAttribute(this.attributeKey);for(const t of i.getRanges())for(const i of t.getItems())if(e.checkAttribute(i,this.attributeKey))return i.hasAttribute(this.attributeKey);return!1}}class s extends n.Plugin{static get pluginName(){return"BoldEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"bold"}),t.model.schema.setAttributeProperties("bold",{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:"bold",view:"strong",upcastAlso:["b",t=>{const e=t.getStyle("font-weight");return e?"bold"==e||Number(e)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),t.commands.add("bold",new r(t,"bold")),t.keystrokes.set("CTRL+B","bold")}}var o=i(1);class c extends n.Plugin{static get pluginName(){return"BoldUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("bold",i=>{const n=t.commands.get("bold"),r=new o.ButtonView(i);return r.set({label:e("Bold"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.187 17H5.773c-.637 0-1.092-.138-1.364-.415-.273-.277-.409-.718-.409-1.323V4.738c0-.617.14-1.062.419-1.332.279-.27.73-.406 1.354-.406h4.68c.69 0 1.288.041 1.793.124.506.083.96.242 1.36.478.341.197.644.447.906.75a3.262 3.262 0 0 1 .808 2.162c0 1.401-.722 2.426-2.167 3.075C15.05 10.175 16 11.315 16 13.01a3.756 3.756 0 0 1-2.296 3.504 6.1 6.1 0 0 1-1.517.377c-.571.073-1.238.11-2 .11zm-.217-6.217H7v4.087h3.069c1.977 0 2.965-.69 2.965-2.072 0-.707-.256-1.22-.768-1.537-.512-.319-1.277-.478-2.296-.478zM7 5.13v3.619h2.606c.729 0 1.292-.067 1.69-.2a1.6 1.6 0 0 0 .91-.765c.165-.267.247-.566.247-.897 0-.707-.26-1.176-.778-1.409-.519-.232-1.31-.348-2.375-.348H7z"/></svg>',keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(r,"execute",()=>{t.execute("bold"),t.editing.view.focus()}),r})}}class a extends n.Plugin{static get requires(){return[s,c]}static get pluginName(){return"Bold"}}var u=i(2);const l="code";class d extends n.Plugin{static get pluginName(){return"CodeEditing"}static get requires(){return[u.TwoStepCaretMovement]}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:l}),t.model.schema.setAttributeProperties(l,{isFormatting:!0,copyOnEnter:!1}),t.conversion.attributeToElement({model:l,view:"code",upcastAlso:{styles:{"word-wrap":"break-word"}}}),t.commands.add(l,new r(t,l)),t.plugins.get(u.TwoStepCaretMovement).registerAttribute(l),Object(u.inlineHighlight)(t,l,"code","ck-code_selected")}}i(4);class g extends n.Plugin{static get pluginName(){return"CodeUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("code",i=>{const n=t.commands.get("code"),r=new o.ButtonView(i);return r.set({label:e("Code"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 5.7 5.2 3.9v1.3l-5.6 4c-.1.2-.3.2-.5.2-.3-.1-.6-.7-.6-1l.3-.4 4.7-3.5L11.5 7l-.2-.2c-.1-.3-.1-.6 0-.8.2-.2.5-.4.8-.4a.8.8 0 0 1 .4.1zm-5.2 0L2 9.6v1.3l5.6 4c.1.2.3.2.5.2.3-.1.7-.7.6-1 0-.1 0-.3-.2-.4l-5-3.5L8.2 7l.2-.2c.1-.3.1-.6 0-.8-.2-.2-.5-.4-.8-.4a.8.8 0 0 0-.3.1z"/></svg>',tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(r,"execute",()=>{t.execute("code"),t.editing.view.focus()}),r})}}class p extends n.Plugin{static get requires(){return[d,g]}static get pluginName(){return"Code"}}class m extends n.Plugin{static get pluginName(){return"ItalicEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"italic"}),t.model.schema.setAttributeProperties("italic",{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:"italic",view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),t.commands.add("italic",new r(t,"italic")),t.keystrokes.set("CTRL+I","italic")}}class h extends n.Plugin{static get pluginName(){return"ItalicUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("italic",i=>{const n=t.commands.get("italic"),r=new o.ButtonView(i);return r.set({label:e("Italic"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.586 14.633.021.004c-.036.335.095.655.393.962.082.083.173.15.274.201h1.474a.6.6 0 1 1 0 1.2H5.304a.6.6 0 0 1 0-1.2h1.15c.474-.07.809-.182 1.005-.334.157-.122.291-.32.404-.597l2.416-9.55a1.053 1.053 0 0 0-.281-.823 1.12 1.12 0 0 0-.442-.296H8.15a.6.6 0 0 1 0-1.2h6.443a.6.6 0 1 1 0 1.2h-1.195c-.376.056-.65.155-.823.296-.215.175-.423.439-.623.79l-2.366 9.347z"/></svg>',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(r,"execute",()=>{t.execute("italic"),t.editing.view.focus()}),r})}}class b extends n.Plugin{static get requires(){return[m,h]}static get pluginName(){return"Italic"}}class f extends n.Plugin{static get pluginName(){return"StrikethroughEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"strikethrough"}),t.model.schema.setAttributeProperties("strikethrough",{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:"strikethrough",view:"s",upcastAlso:["del","strike",{styles:{"text-decoration":"line-through"}}]}),t.commands.add("strikethrough",new r(t,"strikethrough")),t.keystrokes.set("CTRL+SHIFT+X","strikethrough")}}class v extends n.Plugin{static get pluginName(){return"StrikethroughUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("strikethrough",i=>{const n=t.commands.get("strikethrough"),r=new o.ButtonView(i);return r.set({label:e("Strikethrough"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 16.4c-.8-.4-1.5-.9-2.2-1.5a.6.6 0 0 1-.2-.5l.3-.6h1c1 1.2 2.1 1.7 3.7 1.7 1 0 1.8-.3 2.3-.6.6-.4.6-1.2.6-1.3.2-1.2-.9-2.1-.9-2.1h2.1c.3.7.4 1.2.4 1.7v.8l-.6 1.2c-.6.8-1.1 1-1.6 1.2a6 6 0 0 1-2.4.6c-1 0-1.8-.3-2.5-.6zM6.8 9 6 8.3c-.4-.5-.5-.8-.5-1.6 0-.7.1-1.3.5-1.8.4-.6 1-1 1.6-1.3a6.3 6.3 0 0 1 4.7 0 4 4 0 0 1 1.7 1l.3.7c0 .1.2.4-.2.7-.4.2-.9.1-1 0a3 3 0 0 0-1.2-1c-.4-.2-1-.3-2-.4-.7 0-1.4.2-2 .6-.8.6-1 .8-1 1.5 0 .8.5 1 1.2 1.5.6.4 1.1.7 1.9 1H6.8z"/><path d="M3 10.5V9h14v1.5z"/></svg>',keystroke:"CTRL+SHIFT+X",tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(r,"execute",()=>{t.execute("strikethrough"),t.editing.view.focus()}),r})}}class w extends n.Plugin{static get requires(){return[f,v]}static get pluginName(){return"Strikethrough"}}class x extends n.Plugin{static get pluginName(){return"SubscriptEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"subscript"}),t.model.schema.setAttributeProperties("subscript",{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:"subscript",view:"sub",upcastAlso:[{styles:{"vertical-align":"sub"}}]}),t.commands.add("subscript",new r(t,"subscript"))}}class y extends n.Plugin{static get pluginName(){return"SubscriptUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("subscript",i=>{const n=t.commands.get("subscript"),r=new o.ButtonView(i);return r.set({label:e("Subscript"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.03 10.349 3.818-3.819a.8.8 0 1 1 1.132 1.132L8.16 11.48l3.819 3.818a.8.8 0 1 1-1.132 1.132L7.03 12.61l-3.818 3.82a.8.8 0 1 1-1.132-1.132L5.9 11.48 2.08 7.662A.8.8 0 1 1 3.212 6.53l3.818 3.82zm8.147 7.829h2.549c.254 0 .447.05.58.152a.49.49 0 0 1 .201.413.54.54 0 0 1-.159.393c-.105.108-.266.162-.48.162h-3.594c-.245 0-.435-.066-.572-.197a.621.621 0 0 1-.205-.463c0-.114.044-.265.132-.453a1.62 1.62 0 0 1 .288-.444c.433-.436.824-.81 1.172-1.122.348-.312.597-.517.747-.615.267-.183.49-.368.667-.553.177-.185.312-.375.405-.57.093-.194.139-.384.139-.57a1.008 1.008 0 0 0-.554-.917 1.197 1.197 0 0 0-.56-.133c-.426 0-.761.182-1.005.546a2.332 2.332 0 0 0-.164.39 1.609 1.609 0 0 1-.258.488c-.096.114-.237.17-.423.17a.558.558 0 0 1-.405-.156.568.568 0 0 1-.161-.427c0-.218.05-.446.151-.683.101-.238.252-.453.452-.646s.454-.349.762-.467a2.998 2.998 0 0 1 1.081-.178c.498 0 .923.076 1.274.228a1.916 1.916 0 0 1 1.004 1.032 1.984 1.984 0 0 1-.156 1.794c-.2.32-.405.572-.613.754-.208.182-.558.468-1.048.857-.49.39-.826.691-1.008.906a2.703 2.703 0 0 0-.24.309z"/></svg>',tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(r,"execute",()=>{t.execute("subscript"),t.editing.view.focus()}),r})}}class E extends n.Plugin{static get requires(){return[x,y]}static get pluginName(){return"Subscript"}}class S extends n.Plugin{static get pluginName(){return"SuperscriptEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"superscript"}),t.model.schema.setAttributeProperties("superscript",{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:"superscript",view:"sup",upcastAlso:[{styles:{"vertical-align":"super"}}]}),t.commands.add("superscript",new r(t,"superscript"))}}class T extends n.Plugin{static get pluginName(){return"SuperscriptUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("superscript",i=>{const n=t.commands.get("superscript"),r=new o.ButtonView(i);return r.set({label:e("Superscript"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M15.677 8.678h2.549c.254 0 .447.05.58.152a.49.49 0 0 1 .201.413.54.54 0 0 1-.159.393c-.105.108-.266.162-.48.162h-3.594c-.245 0-.435-.066-.572-.197a.621.621 0 0 1-.205-.463c0-.114.044-.265.132-.453a1.62 1.62 0 0 1 .288-.444c.433-.436.824-.81 1.172-1.122.348-.312.597-.517.747-.615.267-.183.49-.368.667-.553.177-.185.312-.375.405-.57.093-.194.139-.384.139-.57a1.008 1.008 0 0 0-.554-.917 1.197 1.197 0 0 0-.56-.133c-.426 0-.761.182-1.005.546a2.332 2.332 0 0 0-.164.39 1.609 1.609 0 0 1-.258.488c-.096.114-.237.17-.423.17a.558.558 0 0 1-.405-.156.568.568 0 0 1-.161-.427c0-.218.05-.446.151-.683.101-.238.252-.453.452-.646s.454-.349.762-.467a2.998 2.998 0 0 1 1.081-.178c.498 0 .923.076 1.274.228a1.916 1.916 0 0 1 1.004 1.032 1.984 1.984 0 0 1-.156 1.794c-.2.32-.405.572-.613.754-.208.182-.558.468-1.048.857-.49.39-.826.691-1.008.906a2.703 2.703 0 0 0-.24.309zM7.03 10.349l3.818-3.819a.8.8 0 1 1 1.132 1.132L8.16 11.48l3.819 3.818a.8.8 0 1 1-1.132 1.132L7.03 12.61l-3.818 3.82a.8.8 0 1 1-1.132-1.132L5.9 11.48 2.08 7.662A.8.8 0 1 1 3.212 6.53l3.818 3.82z"/></svg>',tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(r,"execute",()=>{t.execute("superscript"),t.editing.view.focus()}),r})}}class k extends n.Plugin{static get requires(){return[S,T]}static get pluginName(){return"Superscript"}}class A extends n.Plugin{static get pluginName(){return"UnderlineEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"underline"}),t.model.schema.setAttributeProperties("underline",{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:"underline",view:"u",upcastAlso:{styles:{"text-decoration":"underline"}}}),t.commands.add("underline",new r(t,"underline")),t.keystrokes.set("CTRL+U","underline")}}class C extends n.Plugin{static get pluginName(){return"UnderlineUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("underline",i=>{const n=t.commands.get("underline"),r=new o.ButtonView(i);return r.set({label:e("Underline"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 18v-1.5h14V18zm2.2-8V3.6c0-.4.4-.6.8-.6.3 0 .7.2.7.6v6.2c0 2 1.3 2.8 3.2 2.8 1.9 0 3.4-.9 3.4-2.9V3.6c0-.3.4-.5.8-.5.3 0 .7.2.7.5V10c0 2.7-2.2 4-4.9 4-2.6 0-4.7-1.2-4.7-4z"/></svg>',keystroke:"CTRL+U",tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(r,"execute",()=>{t.execute("underline"),t.editing.view.focus()}),r})}}class I extends n.Plugin{static get requires(){return[A,C]}static get pluginName(){return"Underline"}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/block-quote.js b/core/assets/vendor/ckeditor5/block-quote.js new file mode 100644 index 000000000000..8900c3492a41 --- /dev/null +++ b/core/assets/vendor/ckeditor5/block-quote.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"Block quote":"Block quote"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.blockQuote=function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){e.exports=n(1)("./src/core.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,n){e.exports=n(1)("./src/utils.js")},function(e,t,n){e.exports=n(1)("./src/enter.js")},function(e,t,n){e.exports=n(1)("./src/typing.js")},function(e,t,n){e.exports=n(1)("./src/ui.js")},function(e,t,n){var o=n(7),r=n(8);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[e.i,r,""]]);var i={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o(r,i);e.exports=r.locals||{}},function(e,t,n){"use strict";var o,r=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),c=[];function s(e){for(var t=-1,n=0;n<c.length;n++)if(c[n].identifier===e){t=n;break}return t}function l(e,t){for(var n={},o=[],r=0;r<e.length;r++){var i=e[r],l=t.base?i[0]+t.base:i[0],u=n[l]||0,a="".concat(l," ").concat(u);n[l]=u+1;var d=s(a),f={css:i[1],media:i[2],sourceMap:i[3]};-1!==d?(c[d].references++,c[d].updater(f)):c.push({identifier:a,updater:b(f,t),references:1}),o.push(a)}return o}function u(e){var t=document.createElement("style"),o=e.attributes||{};if(void 0===o.nonce){var r=n.nc;r&&(o.nonce=r)}if(Object.keys(o).forEach((function(e){t.setAttribute(e,o[e])})),"function"==typeof e.insert)e.insert(t);else{var c=i(e.insert||"head");if(!c)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");c.appendChild(t)}return t}var a,d=(a=[],function(e,t){return a[e]=t,a.filter(Boolean).join("\n")});function f(e,t,n,o){var r=n?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(e.styleSheet)e.styleSheet.cssText=d(t,r);else{var i=document.createTextNode(r),c=e.childNodes;c[t]&&e.removeChild(c[t]),c.length?e.insertBefore(i,c[t]):e.appendChild(i)}}function p(e,t,n){var o=n.css,r=n.media,i=n.sourceMap;if(r?e.setAttribute("media",r):e.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}var m=null,h=0;function b(e,t){var n,o,r;if(t.singleton){var i=h++;n=m||(m=u(t)),o=f.bind(null,n,i,!1),r=f.bind(null,n,i,!0)}else n=u(t),o=p.bind(null,n,t),r=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else r()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=r());var n=l(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var o=0;o<n.length;o++){var r=s(n[o]);c[r].references--}for(var i=l(e,t),u=0;u<n.length;u++){var a=s(n[u]);0===c[a].references&&(c[a].updater(),c.splice(a,1))}n=i}}}},function(e,t){e.exports=".ck-content blockquote{overflow:hidden;padding-right:1.5em;padding-left:1.5em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}"},function(e,t,n){"use strict";n.r(t),n.d(t,"BlockQuote",(function(){return m})),n.d(t,"BlockQuoteEditing",(function(){return d})),n.d(t,"BlockQuoteUI",(function(){return p}));var o=n(0),r=n(3),i=n(4),c=n(2);class s extends o.Command{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,n=t.schema,o=t.document.selection,r=Array.from(o.getSelectedBlocks()),i=void 0===e.forceValue?!this.value:e.forceValue;t.change(e=>{if(i){const t=r.filter(e=>l(e)||a(n,e));this._applyQuote(e,t)}else this._removeQuote(e,r.filter(l))})}_getValue(){const e=this.editor.model.document.selection,t=Object(c.first)(e.getSelectedBlocks());return!(!t||!l(t))}_checkEnabled(){if(this.value)return!0;const e=this.editor.model.document.selection,t=this.editor.model.schema,n=Object(c.first)(e.getSelectedBlocks());return!!n&&a(t,n)}_removeQuote(e,t){u(e,t).reverse().forEach(t=>{if(t.start.isAtStart&&t.end.isAtEnd)return void e.unwrap(t.start.parent);if(t.start.isAtStart){const n=e.createPositionBefore(t.start.parent);return void e.move(t,n)}t.end.isAtEnd||e.split(t.end);const n=e.createPositionAfter(t.end.parent);e.move(t,n)})}_applyQuote(e,t){const n=[];u(e,t).reverse().forEach(t=>{let o=l(t.start);o||(o=e.createElement("blockQuote"),e.wrap(t,o)),n.push(o)}),n.reverse().reduce((t,n)=>t.nextSibling==n?(e.merge(e.createPositionAfter(t)),t):n)}}function l(e){return"blockQuote"==e.parent.name?e.parent:null}function u(e,t){let n,o=0;const r=[];for(;o<t.length;){const i=t[o],c=t[o+1];n||(n=e.createPositionBefore(i)),c&&i.nextSibling==c||(r.push(e.createRange(n,e.createPositionAfter(i))),n=null),o++}return r}function a(e,t){const n=e.checkChild(t.parent,"blockQuote"),o=e.checkChild(["$root","blockQuote"],t);return n&&o}class d extends o.Plugin{static get pluginName(){return"BlockQuoteEditing"}static get requires(){return[r.Enter,i.Delete]}init(){const e=this.editor,t=e.model.schema;e.commands.add("blockQuote",new s(e)),t.register("blockQuote",{allowWhere:"$block",allowContentOf:"$root"}),e.conversion.elementToElement({model:"blockQuote",view:"blockquote"}),e.model.document.registerPostFixer(n=>{const o=e.model.document.differ.getChanges();for(const e of o)if("insert"==e.type){const o=e.position.nodeAfter;if(!o)continue;if(o.is("element","blockQuote")&&o.isEmpty)return n.remove(o),!0;if(o.is("element","blockQuote")&&!t.checkChild(e.position,o))return n.unwrap(o),!0;if(o.is("element")){const e=n.createRangeIn(o);for(const o of e.getItems())if(o.is("element","blockQuote")&&!t.checkChild(n.createPositionBefore(o),o))return n.unwrap(o),!0}}else if("remove"==e.type){const t=e.position.parent;if(t.is("element","blockQuote")&&t.isEmpty)return n.remove(t),!0}return!1});const n=this.editor.editing.view.document,o=e.model.document.selection,r=e.commands.get("blockQuote");this.listenTo(n,"enter",(t,n)=>{if(!o.isCollapsed||!r.value)return;o.getLastPosition().parent.isEmpty&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),n.preventDefault(),t.stop())},{context:"blockquote"}),this.listenTo(n,"delete",(t,n)=>{if("backward"!=n.direction||!o.isCollapsed||!r.value)return;const i=o.getLastPosition().parent;i.isEmpty&&!i.previousSibling&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),n.preventDefault(),t.stop())},{context:"blockquote"})}}var f=n(5);n(6);class p extends o.Plugin{static get pluginName(){return"BlockQuoteUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("blockQuote",n=>{const r=e.commands.get("blockQuote"),i=new f.ButtonView(n);return i.set({label:t("Block quote"),icon:o.icons.quote,tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(i,"execute",()=>{e.execute("blockQuote"),e.editing.view.focus()}),i})}}class m extends o.Plugin{static get requires(){return[d,p]}static get pluginName(){return"BlockQuote"}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/ckeditor5-dll.js b/core/assets/vendor/ckeditor5/ckeditor5-dll.js new file mode 100644 index 000000000000..878b81535de0 --- /dev/null +++ b/core/assets/vendor/ckeditor5/ckeditor5-dll.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Restore default":"Restore default","Rich Text Editor":"Rich Text Editor","Rich Text Editor, %0":"Rich Text Editor, %0",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.dll=function(e){var t={};function o(i){if(t[i])return t[i].exports;var s=t[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,o),s.l=!0,s.exports}return o.m=e,o.c=t,o.d=function(e,t,i){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(o.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)o.d(i,s,function(t){return e[t]}.bind(null,s));return i},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}({"./node_modules/lodash-es/_ListCache.js":function(e,t,o){"use strict";var i=function(){this.__data__=[],this.size=0},s=o("./node_modules/lodash-es/eq.js");var r=function(e,t){for(var o=e.length;o--;)if(Object(s.a)(e[o][0],t))return o;return-1},n=Array.prototype.splice;var a=function(e){var t=this.__data__,o=r(t,e);return!(o<0)&&(o==t.length-1?t.pop():n.call(t,o,1),--this.size,!0)};var c=function(e){var t=this.__data__,o=r(t,e);return o<0?void 0:t[o][1]};var l=function(e){return r(this.__data__,e)>-1};var d=function(e,t){var o=this.__data__,i=r(o,e);return i<0?(++this.size,o.push([e,t])):o[i][1]=t,this};function u(e){var t=-1,o=null==e?0:e.length;for(this.clear();++t<o;){var i=e[t];this.set(i[0],i[1])}}u.prototype.clear=i,u.prototype.delete=a,u.prototype.get=c,u.prototype.has=l,u.prototype.set=d;t.a=u},"./node_modules/lodash-es/_Map.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_getNative.js"),s=o("./node_modules/lodash-es/_root.js"),r=Object(i.a)(s.a,"Map");t.a=r},"./node_modules/lodash-es/_MapCache.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_getNative.js"),s=Object(i.a)(Object,"create");var r=function(){this.__data__=s?s(null):{},this.size=0};var n=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},a=Object.prototype.hasOwnProperty;var c=function(e){var t=this.__data__;if(s){var o=t[e];return"__lodash_hash_undefined__"===o?void 0:o}return a.call(t,e)?t[e]:void 0},l=Object.prototype.hasOwnProperty;var d=function(e){var t=this.__data__;return s?void 0!==t[e]:l.call(t,e)};var u=function(e,t){var o=this.__data__;return this.size+=this.has(e)?0:1,o[e]=s&&void 0===t?"__lodash_hash_undefined__":t,this};function h(e){var t=-1,o=null==e?0:e.length;for(this.clear();++t<o;){var i=e[t];this.set(i[0],i[1])}}h.prototype.clear=r,h.prototype.delete=n,h.prototype.get=c,h.prototype.has=d,h.prototype.set=u;var p=h,g=o("./node_modules/lodash-es/_ListCache.js"),f=o("./node_modules/lodash-es/_Map.js");var m=function(){this.size=0,this.__data__={hash:new p,map:new(f.a||g.a),string:new p}};var k=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var b=function(e,t){var o=e.__data__;return k(t)?o["string"==typeof t?"string":"hash"]:o.map};var _=function(e){var t=b(this,e).delete(e);return this.size-=t?1:0,t};var w=function(e){return b(this,e).get(e)};var v=function(e){return b(this,e).has(e)};var y=function(e,t){var o=b(this,e),i=o.size;return o.set(e,t),this.size+=o.size==i?0:1,this};function j(e){var t=-1,o=null==e?0:e.length;for(this.clear();++t<o;){var i=e[t];this.set(i[0],i[1])}}j.prototype.clear=m,j.prototype.delete=_,j.prototype.get=w,j.prototype.has=v,j.prototype.set=y;t.a=j},"./node_modules/lodash-es/_Stack.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_ListCache.js");var s=function(){this.__data__=new i.a,this.size=0};var r=function(e){var t=this.__data__,o=t.delete(e);return this.size=t.size,o};var n=function(e){return this.__data__.get(e)};var a=function(e){return this.__data__.has(e)},c=o("./node_modules/lodash-es/_Map.js"),l=o("./node_modules/lodash-es/_MapCache.js");var d=function(e,t){var o=this.__data__;if(o instanceof i.a){var s=o.__data__;if(!c.a||s.length<199)return s.push([e,t]),this.size=++o.size,this;o=this.__data__=new l.a(s)}return o.set(e,t),this.size=o.size,this};function u(e){var t=this.__data__=new i.a(e);this.size=t.size}u.prototype.clear=s,u.prototype.delete=r,u.prototype.get=n,u.prototype.has=a,u.prototype.set=d;t.a=u},"./node_modules/lodash-es/_Symbol.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_root.js").a.Symbol;t.a=i},"./node_modules/lodash-es/_Uint8Array.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_root.js").a.Uint8Array;t.a=i},"./node_modules/lodash-es/_arrayLikeKeys.js":function(e,t,o){"use strict";var i=function(e,t){for(var o=-1,i=Array(e);++o<e;)i[o]=t(o);return i},s=o("./node_modules/lodash-es/isArguments.js"),r=o("./node_modules/lodash-es/isArray.js"),n=o("./node_modules/lodash-es/isBuffer.js"),a=o("./node_modules/lodash-es/_isIndex.js"),c=o("./node_modules/lodash-es/isTypedArray.js"),l=Object.prototype.hasOwnProperty;t.a=function(e,t){var o=Object(r.a)(e),d=!o&&Object(s.a)(e),u=!o&&!d&&Object(n.a)(e),h=!o&&!d&&!u&&Object(c.a)(e),p=o||d||u||h,g=p?i(e.length,String):[],f=g.length;for(var m in e)!t&&!l.call(e,m)||p&&("length"==m||u&&("offset"==m||"parent"==m)||h&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||Object(a.a)(m,f))||g.push(m);return g}},"./node_modules/lodash-es/_arrayPush.js":function(e,t,o){"use strict";t.a=function(e,t){for(var o=-1,i=t.length,s=e.length;++o<i;)e[s+o]=t[o];return e}},"./node_modules/lodash-es/_assignValue.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseAssignValue.js"),s=o("./node_modules/lodash-es/eq.js"),r=Object.prototype.hasOwnProperty;t.a=function(e,t,o){var n=e[t];r.call(e,t)&&Object(s.a)(n,o)&&(void 0!==o||t in e)||Object(i.a)(e,t,o)}},"./node_modules/lodash-es/_baseAssignValue.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_defineProperty.js");t.a=function(e,t,o){"__proto__"==t&&i.a?Object(i.a)(e,t,{configurable:!0,enumerable:!0,value:o,writable:!0}):e[t]=o}},"./node_modules/lodash-es/_baseClone.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_Stack.js");var s=function(e,t){for(var o=-1,i=null==e?0:e.length;++o<i&&!1!==t(e[o],o,e););return e},r=o("./node_modules/lodash-es/_assignValue.js"),n=o("./node_modules/lodash-es/_copyObject.js"),a=o("./node_modules/lodash-es/keys.js");var c=function(e,t){return e&&Object(n.a)(t,Object(a.a)(t),e)},l=o("./node_modules/lodash-es/keysIn.js");var d=function(e,t){return e&&Object(n.a)(t,Object(l.a)(t),e)},u=o("./node_modules/lodash-es/_cloneBuffer.js"),h=o("./node_modules/lodash-es/_copyArray.js"),p=o("./node_modules/lodash-es/_getSymbols.js");var g=function(e,t){return Object(n.a)(e,Object(p.a)(e),t)},f=o("./node_modules/lodash-es/_arrayPush.js"),m=o("./node_modules/lodash-es/_getPrototype.js"),k=o("./node_modules/lodash-es/stubArray.js"),b=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Object(f.a)(t,Object(p.a)(e)),e=Object(m.a)(e);return t}:k.a;var _=function(e,t){return Object(n.a)(e,b(e),t)},w=o("./node_modules/lodash-es/_getAllKeys.js"),v=o("./node_modules/lodash-es/_baseGetAllKeys.js");var y=function(e){return Object(v.a)(e,l.a,b)},j=o("./node_modules/lodash-es/_getTag.js"),x=Object.prototype.hasOwnProperty;var P=function(e){var t=e.length,o=new e.constructor(t);return t&&"string"==typeof e[0]&&x.call(e,"index")&&(o.index=e.index,o.input=e.input),o},O=o("./node_modules/lodash-es/_cloneArrayBuffer.js");var A=function(e,t){var o=t?Object(O.a)(e.buffer):e.buffer;return new e.constructor(o,e.byteOffset,e.byteLength)},T=/\w*$/;var C=function(e){var t=new e.constructor(e.source,T.exec(e));return t.lastIndex=e.lastIndex,t},E=o("./node_modules/lodash-es/_Symbol.js"),S=E.a?E.a.prototype:void 0,R=S?S.valueOf:void 0;var M=function(e){return R?Object(R.call(e)):{}},N=o("./node_modules/lodash-es/_cloneTypedArray.js");var I=function(e,t,o){var i=e.constructor;switch(t){case"[object ArrayBuffer]":return Object(O.a)(e);case"[object Boolean]":case"[object Date]":return new i(+e);case"[object DataView]":return A(e,o);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Object(N.a)(e,o);case"[object Map]":return new i;case"[object Number]":case"[object String]":return new i(e);case"[object RegExp]":return C(e);case"[object Set]":return new i;case"[object Symbol]":return M(e)}},z=o("./node_modules/lodash-es/_initCloneObject.js"),V=o("./node_modules/lodash-es/isArray.js"),D=o("./node_modules/lodash-es/isBuffer.js"),B=o("./node_modules/lodash-es/isObjectLike.js");var F=function(e){return Object(B.a)(e)&&"[object Map]"==Object(j.a)(e)},L=o("./node_modules/lodash-es/_baseUnary.js"),W=o("./node_modules/lodash-es/_nodeUtil.js"),H=W.a&&W.a.isMap,q=H?Object(L.a)(H):F,$=o("./node_modules/lodash-es/isObject.js");var U=function(e){return Object(B.a)(e)&&"[object Set]"==Object(j.a)(e)},K=W.a&&W.a.isSet,G=K?Object(L.a)(K):U,J={};J["[object Arguments]"]=J["[object Array]"]=J["[object ArrayBuffer]"]=J["[object DataView]"]=J["[object Boolean]"]=J["[object Date]"]=J["[object Float32Array]"]=J["[object Float64Array]"]=J["[object Int8Array]"]=J["[object Int16Array]"]=J["[object Int32Array]"]=J["[object Map]"]=J["[object Number]"]=J["[object Object]"]=J["[object RegExp]"]=J["[object Set]"]=J["[object String]"]=J["[object Symbol]"]=J["[object Uint8Array]"]=J["[object Uint8ClampedArray]"]=J["[object Uint16Array]"]=J["[object Uint32Array]"]=!0,J["[object Error]"]=J["[object Function]"]=J["[object WeakMap]"]=!1;t.a=function e(t,o,n,p,f,m){var k,b=1&o,v=2&o,x=4&o;if(n&&(k=f?n(t,p,f,m):n(t)),void 0!==k)return k;if(!Object($.a)(t))return t;var O=Object(V.a)(t);if(O){if(k=P(t),!b)return Object(h.a)(t,k)}else{var A=Object(j.a)(t),T="[object Function]"==A||"[object GeneratorFunction]"==A;if(Object(D.a)(t))return Object(u.a)(t,b);if("[object Object]"==A||"[object Arguments]"==A||T&&!f){if(k=v||T?{}:Object(z.a)(t),!b)return v?_(t,d(k,t)):g(t,c(k,t))}else{if(!J[A])return f?t:{};k=I(t,A,b)}}m||(m=new i.a);var C=m.get(t);if(C)return C;m.set(t,k),G(t)?t.forEach((function(i){k.add(e(i,o,n,i,t,m))})):q(t)&&t.forEach((function(i,s){k.set(s,e(i,o,n,s,t,m))}));var E=x?v?y:w.a:v?l.a:a.a,S=O?void 0:E(t);return s(S||t,(function(i,s){S&&(i=t[s=i]),Object(r.a)(k,s,e(i,o,n,s,t,m))})),k}},"./node_modules/lodash-es/_baseGetAllKeys.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_arrayPush.js"),s=o("./node_modules/lodash-es/isArray.js");t.a=function(e,t,o){var r=t(e);return Object(s.a)(e)?r:Object(i.a)(r,o(e))}},"./node_modules/lodash-es/_baseGetTag.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_Symbol.js"),s=Object.prototype,r=s.hasOwnProperty,n=s.toString,a=i.a?i.a.toStringTag:void 0;var c=function(e){var t=r.call(e,a),o=e[a];try{e[a]=void 0;var i=!0}catch(e){}var s=n.call(e);return i&&(t?e[a]=o:delete e[a]),s},l=Object.prototype.toString;var d=function(e){return l.call(e)},u=i.a?i.a.toStringTag:void 0;t.a=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":u&&u in Object(e)?c(e):d(e)}},"./node_modules/lodash-es/_baseIsEqual.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_Stack.js"),s=o("./node_modules/lodash-es/_MapCache.js");var r=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};var n=function(e){return this.__data__.has(e)};function a(e){var t=-1,o=null==e?0:e.length;for(this.__data__=new s.a;++t<o;)this.add(e[t])}a.prototype.add=a.prototype.push=r,a.prototype.has=n;var c=a;var l=function(e,t){for(var o=-1,i=null==e?0:e.length;++o<i;)if(t(e[o],o,e))return!0;return!1};var d=function(e,t){return e.has(t)};var u=function(e,t,o,i,s,r){var n=1&o,a=e.length,u=t.length;if(a!=u&&!(n&&u>a))return!1;var h=r.get(e),p=r.get(t);if(h&&p)return h==t&&p==e;var g=-1,f=!0,m=2&o?new c:void 0;for(r.set(e,t),r.set(t,e);++g<a;){var k=e[g],b=t[g];if(i)var _=n?i(b,k,g,t,e,r):i(k,b,g,e,t,r);if(void 0!==_){if(_)continue;f=!1;break}if(m){if(!l(t,(function(e,t){if(!d(m,t)&&(k===e||s(k,e,o,i,r)))return m.push(t)}))){f=!1;break}}else if(k!==b&&!s(k,b,o,i,r)){f=!1;break}}return r.delete(e),r.delete(t),f},h=o("./node_modules/lodash-es/_Symbol.js"),p=o("./node_modules/lodash-es/_Uint8Array.js"),g=o("./node_modules/lodash-es/eq.js");var f=function(e){var t=-1,o=Array(e.size);return e.forEach((function(e,i){o[++t]=[i,e]})),o};var m=function(e){var t=-1,o=Array(e.size);return e.forEach((function(e){o[++t]=e})),o},k=h.a?h.a.prototype:void 0,b=k?k.valueOf:void 0;var _=function(e,t,o,i,s,r,n){switch(o){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!r(new p.a(e),new p.a(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return Object(g.a)(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=f;case"[object Set]":var c=1&i;if(a||(a=m),e.size!=t.size&&!c)return!1;var l=n.get(e);if(l)return l==t;i|=2,n.set(e,t);var d=u(a(e),a(t),i,s,r,n);return n.delete(e),d;case"[object Symbol]":if(b)return b.call(e)==b.call(t)}return!1},w=o("./node_modules/lodash-es/_getAllKeys.js"),v=Object.prototype.hasOwnProperty;var y=function(e,t,o,i,s,r){var n=1&o,a=Object(w.a)(e),c=a.length;if(c!=Object(w.a)(t).length&&!n)return!1;for(var l=c;l--;){var d=a[l];if(!(n?d in t:v.call(t,d)))return!1}var u=r.get(e),h=r.get(t);if(u&&h)return u==t&&h==e;var p=!0;r.set(e,t),r.set(t,e);for(var g=n;++l<c;){var f=e[d=a[l]],m=t[d];if(i)var k=n?i(m,f,d,t,e,r):i(f,m,d,e,t,r);if(!(void 0===k?f===m||s(f,m,o,i,r):k)){p=!1;break}g||(g="constructor"==d)}if(p&&!g){var b=e.constructor,_=t.constructor;b==_||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof _&&_ instanceof _||(p=!1)}return r.delete(e),r.delete(t),p},j=o("./node_modules/lodash-es/_getTag.js"),x=o("./node_modules/lodash-es/isArray.js"),P=o("./node_modules/lodash-es/isBuffer.js"),O=o("./node_modules/lodash-es/isTypedArray.js"),A="[object Object]",T=Object.prototype.hasOwnProperty;var C=function(e,t,o,s,r,n){var a=Object(x.a)(e),c=Object(x.a)(t),l=a?"[object Array]":Object(j.a)(e),d=c?"[object Array]":Object(j.a)(t),h=(l="[object Arguments]"==l?A:l)==A,p=(d="[object Arguments]"==d?A:d)==A,g=l==d;if(g&&Object(P.a)(e)){if(!Object(P.a)(t))return!1;a=!0,h=!1}if(g&&!h)return n||(n=new i.a),a||Object(O.a)(e)?u(e,t,o,s,r,n):_(e,t,l,o,s,r,n);if(!(1&o)){var f=h&&T.call(e,"__wrapped__"),m=p&&T.call(t,"__wrapped__");if(f||m){var k=f?e.value():e,b=m?t.value():t;return n||(n=new i.a),r(k,b,o,s,n)}}return!!g&&(n||(n=new i.a),y(e,t,o,s,r,n))},E=o("./node_modules/lodash-es/isObjectLike.js");t.a=function e(t,o,i,s,r){return t===o||(null==t||null==o||!Object(E.a)(t)&&!Object(E.a)(o)?t!=t&&o!=o:C(t,o,i,s,e,r))}},"./node_modules/lodash-es/_baseUnary.js":function(e,t,o){"use strict";t.a=function(e){return function(t){return e(t)}}},"./node_modules/lodash-es/_cloneArrayBuffer.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_Uint8Array.js");t.a=function(e){var t=new e.constructor(e.byteLength);return new i.a(t).set(new i.a(e)),t}},"./node_modules/lodash-es/_cloneBuffer.js":function(e,t,o){"use strict";(function(e){var i=o("./node_modules/lodash-es/_root.js"),s="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=s&&"object"==typeof e&&e&&!e.nodeType&&e,n=r&&r.exports===s?i.a.Buffer:void 0,a=n?n.allocUnsafe:void 0;t.a=function(e,t){if(t)return e.slice();var o=e.length,i=a?a(o):new e.constructor(o);return e.copy(i),i}}).call(this,o("./node_modules/webpack/buildin/harmony-module.js")(e))},"./node_modules/lodash-es/_cloneTypedArray.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_cloneArrayBuffer.js");t.a=function(e,t){var o=t?Object(i.a)(e.buffer):e.buffer;return new e.constructor(o,e.byteOffset,e.length)}},"./node_modules/lodash-es/_copyArray.js":function(e,t,o){"use strict";t.a=function(e,t){var o=-1,i=e.length;for(t||(t=Array(i));++o<i;)t[o]=e[o];return t}},"./node_modules/lodash-es/_copyObject.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_assignValue.js"),s=o("./node_modules/lodash-es/_baseAssignValue.js");t.a=function(e,t,o,r){var n=!o;o||(o={});for(var a=-1,c=t.length;++a<c;){var l=t[a],d=r?r(o[l],e[l],l,o,e):void 0;void 0===d&&(d=e[l]),n?Object(s.a)(o,l,d):Object(i.a)(o,l,d)}return o}},"./node_modules/lodash-es/_createAssigner.js":function(e,t,o){"use strict";var i=function(e){return e};var s=function(e,t,o){switch(o.length){case 0:return e.call(t);case 1:return e.call(t,o[0]);case 2:return e.call(t,o[0],o[1]);case 3:return e.call(t,o[0],o[1],o[2])}return e.apply(t,o)},r=Math.max;var n=function(e,t,o){return t=r(void 0===t?e.length-1:t,0),function(){for(var i=arguments,n=-1,a=r(i.length-t,0),c=Array(a);++n<a;)c[n]=i[t+n];n=-1;for(var l=Array(t+1);++n<t;)l[n]=i[n];return l[t]=o(c),s(e,this,l)}};var a=function(e){return function(){return e}},c=o("./node_modules/lodash-es/_defineProperty.js"),l=c.a?function(e,t){return Object(c.a)(e,"toString",{configurable:!0,enumerable:!1,value:a(t),writable:!0})}:i,d=Date.now;var u=function(e){var t=0,o=0;return function(){var i=d(),s=16-(i-o);if(o=i,s>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(l);var h=function(e,t){return u(n(e,t,i),e+"")},p=o("./node_modules/lodash-es/eq.js"),g=o("./node_modules/lodash-es/isArrayLike.js"),f=o("./node_modules/lodash-es/_isIndex.js"),m=o("./node_modules/lodash-es/isObject.js");var k=function(e,t,o){if(!Object(m.a)(o))return!1;var i=typeof t;return!!("number"==i?Object(g.a)(o)&&Object(f.a)(t,o.length):"string"==i&&t in o)&&Object(p.a)(o[t],e)};t.a=function(e){return h((function(t,o){var i=-1,s=o.length,r=s>1?o[s-1]:void 0,n=s>2?o[2]:void 0;for(r=e.length>3&&"function"==typeof r?(s--,r):void 0,n&&k(o[0],o[1],n)&&(r=s<3?void 0:r,s=1),t=Object(t);++i<s;){var a=o[i];a&&e(t,a,i,r)}return t}))}},"./node_modules/lodash-es/_defineProperty.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_getNative.js"),s=function(){try{var e=Object(i.a)(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();t.a=s},"./node_modules/lodash-es/_freeGlobal.js":function(e,t,o){"use strict";(function(e){var o="object"==typeof e&&e&&e.Object===Object&&e;t.a=o}).call(this,o("./node_modules/webpack/buildin/global.js"))},"./node_modules/lodash-es/_getAllKeys.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseGetAllKeys.js"),s=o("./node_modules/lodash-es/_getSymbols.js"),r=o("./node_modules/lodash-es/keys.js");t.a=function(e){return Object(i.a)(e,r.a,s.a)}},"./node_modules/lodash-es/_getNative.js":function(e,t,o){"use strict";var i,s=o("./node_modules/lodash-es/isFunction.js"),r=o("./node_modules/lodash-es/_root.js").a["__core-js_shared__"],n=(i=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+i:"";var a=function(e){return!!n&&n in e},c=o("./node_modules/lodash-es/isObject.js"),l=o("./node_modules/lodash-es/_toSource.js"),d=/^\[object .+?Constructor\]$/,u=Function.prototype,h=Object.prototype,p=u.toString,g=h.hasOwnProperty,f=RegExp("^"+p.call(g).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var m=function(e){return!(!Object(c.a)(e)||a(e))&&(Object(s.a)(e)?f:d).test(Object(l.a)(e))};var k=function(e,t){return null==e?void 0:e[t]};t.a=function(e,t){var o=k(e,t);return m(o)?o:void 0}},"./node_modules/lodash-es/_getPrototype.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_overArg.js"),s=Object(i.a)(Object.getPrototypeOf,Object);t.a=s},"./node_modules/lodash-es/_getSymbols.js":function(e,t,o){"use strict";var i=function(e,t){for(var o=-1,i=null==e?0:e.length,s=0,r=[];++o<i;){var n=e[o];t(n,o,e)&&(r[s++]=n)}return r},s=o("./node_modules/lodash-es/stubArray.js"),r=Object.prototype.propertyIsEnumerable,n=Object.getOwnPropertySymbols,a=n?function(e){return null==e?[]:(e=Object(e),i(n(e),(function(t){return r.call(e,t)})))}:s.a;t.a=a},"./node_modules/lodash-es/_getTag.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_getNative.js"),s=o("./node_modules/lodash-es/_root.js"),r=Object(i.a)(s.a,"DataView"),n=o("./node_modules/lodash-es/_Map.js"),a=Object(i.a)(s.a,"Promise"),c=Object(i.a)(s.a,"Set"),l=Object(i.a)(s.a,"WeakMap"),d=o("./node_modules/lodash-es/_baseGetTag.js"),u=o("./node_modules/lodash-es/_toSource.js"),h=Object(u.a)(r),p=Object(u.a)(n.a),g=Object(u.a)(a),f=Object(u.a)(c),m=Object(u.a)(l),k=d.a;(r&&"[object DataView]"!=k(new r(new ArrayBuffer(1)))||n.a&&"[object Map]"!=k(new n.a)||a&&"[object Promise]"!=k(a.resolve())||c&&"[object Set]"!=k(new c)||l&&"[object WeakMap]"!=k(new l))&&(k=function(e){var t=Object(d.a)(e),o="[object Object]"==t?e.constructor:void 0,i=o?Object(u.a)(o):"";if(i)switch(i){case h:return"[object DataView]";case p:return"[object Map]";case g:return"[object Promise]";case f:return"[object Set]";case m:return"[object WeakMap]"}return t});t.a=k},"./node_modules/lodash-es/_initCloneObject.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/isObject.js"),s=Object.create,r=function(){function e(){}return function(t){if(!Object(i.a)(t))return{};if(s)return s(t);e.prototype=t;var o=new e;return e.prototype=void 0,o}}(),n=o("./node_modules/lodash-es/_getPrototype.js"),a=o("./node_modules/lodash-es/_isPrototype.js");t.a=function(e){return"function"!=typeof e.constructor||Object(a.a)(e)?{}:r(Object(n.a)(e))}},"./node_modules/lodash-es/_isIndex.js":function(e,t,o){"use strict";var i=/^(?:0|[1-9]\d*)$/;t.a=function(e,t){var o=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==o||"symbol"!=o&&i.test(e))&&e>-1&&e%1==0&&e<t}},"./node_modules/lodash-es/_isPrototype.js":function(e,t,o){"use strict";var i=Object.prototype;t.a=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||i)}},"./node_modules/lodash-es/_nodeUtil.js":function(e,t,o){"use strict";(function(e){var i=o("./node_modules/lodash-es/_freeGlobal.js"),s="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=s&&"object"==typeof e&&e&&!e.nodeType&&e,n=r&&r.exports===s&&i.a.process,a=function(){try{var e=r&&r.require&&r.require("util").types;return e||n&&n.binding&&n.binding("util")}catch(e){}}();t.a=a}).call(this,o("./node_modules/webpack/buildin/harmony-module.js")(e))},"./node_modules/lodash-es/_overArg.js":function(e,t,o){"use strict";t.a=function(e,t){return function(o){return e(t(o))}}},"./node_modules/lodash-es/_root.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_freeGlobal.js"),s="object"==typeof self&&self&&self.Object===Object&&self,r=i.a||s||Function("return this")();t.a=r},"./node_modules/lodash-es/_toSource.js":function(e,t,o){"use strict";var i=Function.prototype.toString;t.a=function(e){if(null!=e){try{return i.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},"./node_modules/lodash-es/assignIn.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_copyObject.js"),s=o("./node_modules/lodash-es/_createAssigner.js"),r=o("./node_modules/lodash-es/keysIn.js"),n=Object(s.a)((function(e,t){Object(i.a)(t,Object(r.a)(t),e)}));t.a=n},"./node_modules/lodash-es/clone.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseClone.js");t.a=function(e){return Object(i.a)(e,4)}},"./node_modules/lodash-es/cloneDeep.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseClone.js");t.a=function(e){return Object(i.a)(e,5)}},"./node_modules/lodash-es/cloneDeepWith.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseClone.js");t.a=function(e,t){return t="function"==typeof t?t:void 0,Object(i.a)(e,5,t)}},"./node_modules/lodash-es/debounce.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/isObject.js"),s=o("./node_modules/lodash-es/_root.js"),r=function(){return s.a.Date.now()},n=/\s/;var a=function(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t},c=/^\s+/;var l=function(e){return e?e.slice(0,a(e)+1).replace(c,""):e},d=o("./node_modules/lodash-es/isSymbol.js"),u=/^[-+]0x[0-9a-f]+$/i,h=/^0b[01]+$/i,p=/^0o[0-7]+$/i,g=parseInt;var f=function(e){if("number"==typeof e)return e;if(Object(d.a)(e))return NaN;if(Object(i.a)(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Object(i.a)(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=l(e);var o=h.test(e);return o||p.test(e)?g(e.slice(2),o?2:8):u.test(e)?NaN:+e},m=Math.max,k=Math.min;t.a=function(e,t,o){var s,n,a,c,l,d,u=0,h=!1,p=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var o=s,i=n;return s=n=void 0,u=t,c=e.apply(i,o)}function _(e){return u=e,l=setTimeout(v,t),h?b(e):c}function w(e){var o=e-d;return void 0===d||o>=t||o<0||p&&e-u>=a}function v(){var e=r();if(w(e))return y(e);l=setTimeout(v,function(e){var o=t-(e-d);return p?k(o,a-(e-u)):o}(e))}function y(e){return l=void 0,g&&s?b(e):(s=n=void 0,c)}function j(){var e=r(),o=w(e);if(s=arguments,n=this,d=e,o){if(void 0===l)return _(d);if(p)return clearTimeout(l),l=setTimeout(v,t),b(d)}return void 0===l&&(l=setTimeout(v,t)),c}return t=f(t)||0,Object(i.a)(o)&&(h=!!o.leading,a=(p="maxWait"in o)?m(f(o.maxWait)||0,t):a,g="trailing"in o?!!o.trailing:g),j.cancel=function(){void 0!==l&&clearTimeout(l),u=0,s=d=n=l=void 0},j.flush=function(){return void 0===l?c:y(r())},j}},"./node_modules/lodash-es/eq.js":function(e,t,o){"use strict";t.a=function(e,t){return e===t||e!=e&&t!=t}},"./node_modules/lodash-es/isArguments.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseGetTag.js"),s=o("./node_modules/lodash-es/isObjectLike.js");var r=function(e){return Object(s.a)(e)&&"[object Arguments]"==Object(i.a)(e)},n=Object.prototype,a=n.hasOwnProperty,c=n.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return Object(s.a)(e)&&a.call(e,"callee")&&!c.call(e,"callee")};t.a=l},"./node_modules/lodash-es/isArray.js":function(e,t,o){"use strict";var i=Array.isArray;t.a=i},"./node_modules/lodash-es/isArrayLike.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/isFunction.js"),s=o("./node_modules/lodash-es/isLength.js");t.a=function(e){return null!=e&&Object(s.a)(e.length)&&!Object(i.a)(e)}},"./node_modules/lodash-es/isBuffer.js":function(e,t,o){"use strict";(function(e){var i=o("./node_modules/lodash-es/_root.js"),s=o("./node_modules/lodash-es/stubFalse.js"),r="object"==typeof exports&&exports&&!exports.nodeType&&exports,n=r&&"object"==typeof e&&e&&!e.nodeType&&e,a=n&&n.exports===r?i.a.Buffer:void 0,c=(a?a.isBuffer:void 0)||s.a;t.a=c}).call(this,o("./node_modules/webpack/buildin/harmony-module.js")(e))},"./node_modules/lodash-es/isElement.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/isObjectLike.js"),s=o("./node_modules/lodash-es/isPlainObject.js");t.a=function(e){return Object(i.a)(e)&&1===e.nodeType&&!Object(s.a)(e)}},"./node_modules/lodash-es/isFunction.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseGetTag.js"),s=o("./node_modules/lodash-es/isObject.js");t.a=function(e){if(!Object(s.a)(e))return!1;var t=Object(i.a)(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},"./node_modules/lodash-es/isLength.js":function(e,t,o){"use strict";t.a=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},"./node_modules/lodash-es/isObject.js":function(e,t,o){"use strict";t.a=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},"./node_modules/lodash-es/isObjectLike.js":function(e,t,o){"use strict";t.a=function(e){return null!=e&&"object"==typeof e}},"./node_modules/lodash-es/isPlainObject.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseGetTag.js"),s=o("./node_modules/lodash-es/_getPrototype.js"),r=o("./node_modules/lodash-es/isObjectLike.js"),n=Function.prototype,a=Object.prototype,c=n.toString,l=a.hasOwnProperty,d=c.call(Object);t.a=function(e){if(!Object(r.a)(e)||"[object Object]"!=Object(i.a)(e))return!1;var t=Object(s.a)(e);if(null===t)return!0;var o=l.call(t,"constructor")&&t.constructor;return"function"==typeof o&&o instanceof o&&c.call(o)==d}},"./node_modules/lodash-es/isSymbol.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseGetTag.js"),s=o("./node_modules/lodash-es/isObjectLike.js");t.a=function(e){return"symbol"==typeof e||Object(s.a)(e)&&"[object Symbol]"==Object(i.a)(e)}},"./node_modules/lodash-es/isTypedArray.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_baseGetTag.js"),s=o("./node_modules/lodash-es/isLength.js"),r=o("./node_modules/lodash-es/isObjectLike.js"),n={};n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1;var a=function(e){return Object(r.a)(e)&&Object(s.a)(e.length)&&!!n[Object(i.a)(e)]},c=o("./node_modules/lodash-es/_baseUnary.js"),l=o("./node_modules/lodash-es/_nodeUtil.js"),d=l.a&&l.a.isTypedArray,u=d?Object(c.a)(d):a;t.a=u},"./node_modules/lodash-es/keys.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_arrayLikeKeys.js"),s=o("./node_modules/lodash-es/_isPrototype.js"),r=o("./node_modules/lodash-es/_overArg.js"),n=Object(r.a)(Object.keys,Object),a=Object.prototype.hasOwnProperty;var c=function(e){if(!Object(s.a)(e))return n(e);var t=[];for(var o in Object(e))a.call(e,o)&&"constructor"!=o&&t.push(o);return t},l=o("./node_modules/lodash-es/isArrayLike.js");t.a=function(e){return Object(l.a)(e)?Object(i.a)(e):c(e)}},"./node_modules/lodash-es/keysIn.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_arrayLikeKeys.js"),s=o("./node_modules/lodash-es/isObject.js"),r=o("./node_modules/lodash-es/_isPrototype.js");var n=function(e){var t=[];if(null!=e)for(var o in Object(e))t.push(o);return t},a=Object.prototype.hasOwnProperty;var c=function(e){if(!Object(s.a)(e))return n(e);var t=Object(r.a)(e),o=[];for(var i in e)("constructor"!=i||!t&&a.call(e,i))&&o.push(i);return o},l=o("./node_modules/lodash-es/isArrayLike.js");t.a=function(e){return Object(l.a)(e)?Object(i.a)(e,!0):c(e)}},"./node_modules/lodash-es/stubArray.js":function(e,t,o){"use strict";t.a=function(){return[]}},"./node_modules/lodash-es/stubFalse.js":function(e,t,o){"use strict";t.a=function(){return!1}},"./node_modules/lodash-es/throttle.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/debounce.js"),s=o("./node_modules/lodash-es/isObject.js");t.a=function(e,t,o){var r=!0,n=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return Object(s.a)(o)&&(r="leading"in o?!!o.leading:r,n="trailing"in o?!!o.trailing:n),Object(i.a)(e,t,{leading:r,maxWait:t,trailing:n})}},"./node_modules/lodash-es/toString.js":function(e,t,o){"use strict";var i=o("./node_modules/lodash-es/_Symbol.js");var s=function(e,t){for(var o=-1,i=null==e?0:e.length,s=Array(i);++o<i;)s[o]=t(e[o],o,e);return s},r=o("./node_modules/lodash-es/isArray.js"),n=o("./node_modules/lodash-es/isSymbol.js"),a=i.a?i.a.prototype:void 0,c=a?a.toString:void 0;var l=function e(t){if("string"==typeof t)return t;if(Object(r.a)(t))return s(t,e)+"";if(Object(n.a)(t))return c?c.call(t):"";var o=t+"";return"0"==o&&1/t==-1/0?"-0":o};t.a=function(e){return null==e?"":l(e)}},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-clipboard/theme/clipboard.css":function(e,t){e.exports='.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;position:relative;pointer-events:none}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-0.5);top:calc(var(--ck-clipboard-drop-target-dot-height)*-0.5);border:1px solid var(--ck-clipboard-drop-target-color);background:var(--ck-clipboard-drop-target-color);margin-left:-1px}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{content:"";width:0;height:0;display:block;position:absolute;left:50%;top:calc(var(--ck-clipboard-drop-target-dot-height)*-0.5);transform:translateX(-50%);border-left:calc(var(--ck-clipboard-drop-target-dot-width)*0.5) solid transparent;border-bottom:0 solid transparent;border-right:calc(var(--ck-clipboard-drop-target-dot-width)*0.5) solid transparent;border-top:calc(var(--ck-clipboard-drop-target-dot-height)) solid var(--ck-clipboard-drop-target-color)}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}'},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-engine/theme/placeholder.css":function(e,t){e.exports=".ck.ck-placeholder,.ck .ck-placeholder{position:relative}.ck.ck-placeholder:before,.ck .ck-placeholder:before{position:absolute;left:0;right:0;content:attr(data-placeholder);pointer-events:none}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-placeholder:before,.ck .ck-placeholder:before{cursor:text;color:var(--ck-color-engine-placeholder-text)}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-engine/theme/renderer.css":function(e,t){e.exports=".ck.ck-editor__editable span[data-ck-hidden]{display:none}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/button/button.css":function(e,t){e.exports=".ck.ck-button,a.ck.ck-button{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:block}@media (hover:none){.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:none}}.ck.ck-button,a.ck.ck-button{position:relative;display:inline-flex;align-items:center;justify-content:left}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button:hover .ck-tooltip,a.ck.ck-button:hover .ck-tooltip{visibility:visible;opacity:1}.ck.ck-button:focus:not(:hover) .ck-tooltip,a.ck.ck-button:focus:not(:hover) .ck-tooltip{display:none}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-default-active-shadow)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{white-space:nowrap;cursor:default;vertical-align:middle;padding:var(--ck-spacing-tiny);text-align:center;min-width:var(--ck-ui-component-min-height);min-height:var(--ck-ui-component-min-height);line-height:1;font-size:inherit;border:1px solid transparent;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;-webkit-appearance:none}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{font-size:inherit;font-weight:inherit;color:inherit;cursor:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__icon{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-right:calc(var(--ck-spacing-small)*-1);margin-left:var(--ck-spacing-small)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-on-active-shadow)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-action-active-shadow)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/button/switchbutton.css":function(e,t){e.exports=".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:1.0769230769em;--ck-switch-button-toggle-spacing:1px;--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - var(--ck-switch-button-toggle-spacing)*2)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{transition:background .4s ease;width:var(--ck-switch-button-toggle-width);background:var(--ck-color-switch-button-off-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*0.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{margin:var(--ck-switch-button-toggle-spacing);width:var(--ck-switch-button-toggle-inner-size);height:var(--ck-switch-button-toggle-inner-size);background:var(--ck-color-switch-button-inner-background);transition:all .3s ease}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var(--ck-switch-button-translation))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var(--ck-switch-button-translation)*-1))}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css":function(e,t){e.exports=".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#000}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{width:var(--ck-color-grid-tile-size);height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;border:0}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-table__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{display:none;color:var(--ck-color-color-grid-check-icon)}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css":function(e,t){e.exports=":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on .ck-tooltip{display:none}.ck.ck-dropdown .ck-dropdown__panel{-webkit-backface-visibility:hidden;display:none;z-index:var(--ck-z-modal);max-width:var(--ck-dropdown-max-width);position:absolute}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{top:100%;bottom:auto}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{width:7em;overflow:hidden;text-overflow:ellipsis}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{box-shadow:var(--ck-drop-shadow),0 0;background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css":function(e,t){e.exports=".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css":function(e,t){e.exports='.ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button .ck-tooltip{display:none}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-top-right-radius:unset;border-bottom-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-top-left-radius:unset;border-bottom-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-top-left-radius:unset;border-bottom-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-top-right-radius:unset;border-bottom-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{content:"";position:absolute;width:1px;height:100%;background-color:var(--ck-color-split-button-hover-border)}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{left:-1px}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{right:-1px}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}'},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css":function(e,t){e.exports=":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{width:max-content;max-width:var(--ck-toolbar-dropdown-max-width)}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/editorui/editorui.css":function(e,t){e.exports=":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-focused{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0}.ck.ck-editor__editable_inline{overflow:auto;padding:0 var(--ck-spacing-standard);border:1px solid transparent}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/formheader/formheader.css":function(e,t){e.exports=".ck.ck-form__header{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{padding:var(--ck-spacing-small) var(--ck-spacing-large);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);border-bottom:1px solid var(--ck-color-base-border)}.ck.ck-form__header .ck-form__header__label{font-weight:700}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/icon/icon.css":function(e,t){e.exports=".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{width:var(--ck-icon-size);height:var(--ck-icon-size);font-size:.8333350694em;will-change:transform}.ck.ck-icon,.ck.ck-icon *{color:inherit;cursor:inherit}.ck.ck-icon :not([fill]){fill:currentColor}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/inputtext/inputtext.css":function(e,t){e.exports=":root{--ck-input-text-width:18em}.ck.ck-input-text{border-radius:0}.ck-rounded-corners .ck.ck-input-text,.ck.ck-input-text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-text{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);min-width:var(--ck-input-text-width);min-height:var(--ck-ui-component-min-height);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck.ck-input-text:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-input-text[readonly]{border:1px solid var(--ck-color-input-disabled-border);background:var(--ck-color-input-disabled-background);color:var(--ck-color-input-disabled-text)}.ck.ck-input-text[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input-text.ck-error{border-color:var(--ck-color-input-error-border);animation:ck-text-input-shake .3s ease both}.ck.ck-input-text.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-text-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/label/label.css":function(e,t){e.exports=".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css":function(e,t){e.exports=".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{pointer-events:none;transform-origin:0 0;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);background:var(--ck-color-labeled-field-label-background);padding:0 calc(var(--ck-font-size-tiny)*0.5);line-height:normal;font-weight:400;text-overflow:ellipsis;overflow:hidden;max-width:100%;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-spacing-medium),calc(var(--ck-font-size-base)*0.6)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-spacing-medium)*-1),calc(var(--ck-font-size-base)*0.6)) scale(1)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));background:transparent;padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/list/list.css":function(e,t){e.exports=".ck.ck-list{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{list-style-type:none;background:var(--ck-color-list-background)}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{min-height:unset;width:100%;text-align:left;border-radius:0;padding:calc(var(--ck-line-height-base)*0.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*0.4*var(--ck-font-size-base))}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{height:1px;width:100%;background:var(--ck-color-base-border)}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css":function(e,t){e.exports=':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{width:0;height:0;border-style:solid}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:var(--ck-balloon-arrow-height);border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:0}.ck.ck-balloon-panel[class*=arrow_n]:before{border-bottom-color:var(--ck-color-panel-border)}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-color:transparent;border-right-color:transparent;border-top-color:transparent}.ck.ck-balloon-panel[class*=arrow_n]:after{border-bottom-color:var(--ck-color-panel-background);margin-top:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:0;border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-top-color:var(--ck-color-panel-border);filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent}.ck.ck-balloon-panel[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background);margin-bottom:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{right:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{right:25%;margin-right:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{right:25%;margin-right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}'},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css":function(e,t){e.exports=".ck .ck-balloon-rotator__navigation{display:flex;align-items:center;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-small)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css":function(e,t){e.exports=".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);width:100%;height:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css":function(e,t){e.exports=".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{z-index:var(--ck-z-modal);position:fixed;top:0}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{top:auto;position:absolute}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{box-shadow:var(--ck-drop-shadow),0 0;border-width:0 1px 1px;border-top-left-radius:0;border-top-right-radius:0}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css":function(e,t){e.exports=".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css":function(e,t){e.exports=".ck.ck-toolbar{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-flow:row nowrap;align-items:center}.ck.ck-toolbar>.ck-toolbar__items{display:flex;flex-flow:row wrap;align-items:center;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);padding:0 var(--ck-spacing-small);border:1px solid var(--ck-color-toolbar-border)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;width:1px;min-width:1px;background:var(--ck-color-toolbar-border);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{width:100%;margin:0;border-radius:0;border:0}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-right:var(--ck-spacing-small)}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css":function(e,t){e.exports='.ck.ck-tooltip,.ck.ck-tooltip .ck-tooltip__text:after{position:absolute;pointer-events:none;-webkit-backface-visibility:hidden}.ck.ck-tooltip{visibility:hidden;opacity:0;display:none;z-index:var(--ck-z-modal)}.ck.ck-tooltip .ck-tooltip__text{display:inline-block}.ck.ck-tooltip .ck-tooltip__text:after{content:"";width:0;height:0}:root{--ck-tooltip-arrow-size:5px}.ck.ck-tooltip{left:50%;top:0;transition:opacity .2s ease-in-out .2s}.ck.ck-tooltip .ck-tooltip__text{border-radius:0}.ck-rounded-corners .ck.ck-tooltip .ck-tooltip__text,.ck.ck-tooltip .ck-tooltip__text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-tooltip .ck-tooltip__text{font-size:.9em;line-height:1.5;color:var(--ck-color-tooltip-text);padding:var(--ck-spacing-small) var(--ck-spacing-medium);background:var(--ck-color-tooltip-background);position:relative;left:-50%}.ck.ck-tooltip .ck-tooltip__text:after{transition:opacity .2s ease-in-out .2s;border-style:solid;left:50%}.ck.ck-tooltip.ck-tooltip_s,.ck.ck-tooltip.ck-tooltip_se,.ck.ck-tooltip.ck-tooltip_sw{bottom:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateY(100%)}.ck.ck-tooltip.ck-tooltip_s .ck-tooltip__text:after,.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text:after,.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text:after{top:calc(var(--ck-tooltip-arrow-size)*-1 + 1px);transform:translateX(-50%);border-left-color:transparent;border-bottom-color:var(--ck-color-tooltip-background);border-right-color:transparent;border-top-color:transparent;border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:var(--ck-tooltip-arrow-size);border-right-width:var(--ck-tooltip-arrow-size);border-top-width:0}.ck.ck-tooltip.ck-tooltip_sw{right:50%;left:auto}.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text{left:auto;right:calc(var(--ck-tooltip-arrow-size)*-2)}.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text:after{left:auto;right:0}.ck.ck-tooltip.ck-tooltip_se{left:50%;right:auto}.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text{right:auto;left:calc(var(--ck-tooltip-arrow-size)*-2)}.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text:after{right:auto;left:0;transform:translateX(50%)}.ck.ck-tooltip.ck-tooltip_n{top:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateY(-100%)}.ck.ck-tooltip.ck-tooltip_n .ck-tooltip__text:after{bottom:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateX(-50%);border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent;border-top-color:var(--ck-color-tooltip-background);border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:0;border-right-width:var(--ck-tooltip-arrow-size);border-top-width:var(--ck-tooltip-arrow-size)}.ck.ck-tooltip.ck-tooltip_e{left:calc(100% + var(--ck-tooltip-arrow-size));top:50%}.ck.ck-tooltip.ck-tooltip_e .ck-tooltip__text{left:0;transform:translateY(-50%)}.ck.ck-tooltip.ck-tooltip_e .ck-tooltip__text:after{left:calc(var(--ck-tooltip-arrow-size)*-1);top:calc(50% - var(--ck-tooltip-arrow-size)*1);border-left-color:transparent;border-bottom-color:transparent;border-right-color:var(--ck-color-tooltip-background);border-top-color:transparent;border-left-width:0;border-bottom-width:var(--ck-tooltip-arrow-size);border-right-width:var(--ck-tooltip-arrow-size);border-top-width:var(--ck-tooltip-arrow-size)}.ck.ck-tooltip.ck-tooltip_w{right:calc(100% + var(--ck-tooltip-arrow-size));left:auto;top:50%}.ck.ck-tooltip.ck-tooltip_w .ck-tooltip__text{left:0;transform:translateY(-50%)}.ck.ck-tooltip.ck-tooltip_w .ck-tooltip__text:after{left:100%;top:calc(50% - var(--ck-tooltip-arrow-size)*1);border-left-color:var(--ck-color-tooltip-background);border-bottom-color:transparent;border-right-color:transparent;border-top-color:transparent;border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:var(--ck-tooltip-arrow-size);border-right-width:0;border-top-width:var(--ck-tooltip-arrow-size)}'},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/globals/globals.css":function(e,t){e.exports=".ck-hidden{display:none!important}.ck.ck-reset,.ck.ck-reset_all,.ck.ck-reset_all *{box-sizing:border-box;width:auto;height:auto;position:static}:root{--ck-z-default:1;--ck-z-modal:calc(var(--ck-z-default) + 999)}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#c4c4c4;--ck-color-base-action:#61b045;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#198cf0;--ck-color-base-active-focus:#0e7fe1;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:208,79%,51%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#bcdefb;--ck-color-focus-disabled-shadow:rgba(119,186,248,0.3);--ck-color-focus-error-shadow:rgba(255,64,31,0.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,0.15);--ck-color-shadow-drop-active:rgba(0,0,0,0.2);--ck-color-shadow-inner:rgba(0,0,0,0.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#e6e6e6;--ck-color-button-default-active-background:#d9d9d9;--ck-color-button-default-active-shadow:#bfbfbf;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#dedede;--ck-color-button-on-hover-background:#c4c4c4;--ck-color-button-on-active-background:#bababa;--ck-color-button-on-active-shadow:#a1a1a1;--ck-color-button-on-disabled-background:#dedede;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#579e3d;--ck-color-button-action-active-background:#53973b;--ck-color-button-action-active-shadow:#498433;--ck-color-button-action-disabled-background:#7ec365;--ck-color-button-action-text:var(--ck-color-base-background);--ck-color-button-save:#008a00;--ck-color-button-cancel:#db3700;--ck-color-switch-button-off-background:#b0b0b0;--ck-color-switch-button-off-hover-background:#a3a3a3;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#579e3d;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(0,0,0,0.1);--ck-color-dropdown-panel-background:var(--ck-color-base-background);--ck-color-dropdown-panel-border:var(--ck-color-base-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:#c7c7c7;--ck-color-input-error-border:var(--ck-color-base-error);--ck-color-input-text:var(--ck-color-base-text);--ck-color-input-disabled-background:#f2f2f2;--ck-color-input-disabled-border:#c7c7c7;--ck-color-input-disabled-text:#757575;--ck-color-list-background:var(--ck-color-base-background);--ck-color-list-button-hover-background:var(--ck-color-button-default-hover-background);--ck-color-list-button-on-background:var(--ck-color-base-active);--ck-color-list-button-on-background-focus:var(--ck-color-base-active-focus);--ck-color-list-button-on-text:var(--ck-color-base-background);--ck-color-panel-background:var(--ck-color-base-background);--ck-color-panel-border:var(--ck-color-base-border);--ck-color-toolbar-background:var(--ck-color-base-foreground);--ck-color-toolbar-border:var(--ck-color-base-border);--ck-color-tooltip-background:var(--ck-color-base-text);--ck-color-tooltip-text:var(--ck-color-base-background);--ck-color-engine-placeholder-text:#707070;--ck-color-upload-bar-background:#6cb5f9;--ck-color-link-default:#0000f0;--ck-color-link-selected-background:rgba(31,177,255,0.1);--ck-color-link-fake-selection:rgba(31,177,255,0.3);--ck-disabled-opacity:.5;--ck-focus-outer-shadow-geometry:0 0 0 3px;--ck-focus-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);--ck-focus-disabled-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);--ck-focus-error-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);--ck-focus-ring:1px solid var(--ck-color-focus-border);--ck-font-size-base:13px;--ck-line-height-base:1.84615;--ck-font-face:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;--ck-font-size-tiny:0.7em;--ck-font-size-small:0.75em;--ck-font-size-normal:1em;--ck-font-size-big:1.4em;--ck-font-size-large:1.8em;--ck-ui-component-min-height:2.3em}.ck.ck-reset,.ck.ck-reset_all,.ck.ck-reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;vertical-align:middle;transition:none;word-wrap:break-word}.ck.ck-reset_all,.ck.ck-reset_all *{border-collapse:collapse;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);color:var(--ck-color-text);text-align:left;white-space:nowrap;cursor:auto;float:none}.ck.ck-reset_all .ck-rtl *{text-align:right}.ck.ck-reset_all iframe{vertical-align:inherit}.ck.ck-reset_all textarea{white-space:pre-wrap}.ck.ck-reset_all input[type=password],.ck.ck-reset_all input[type=text],.ck.ck-reset_all textarea{cursor:text}.ck.ck-reset_all input[type=password][disabled],.ck.ck-reset_all input[type=text][disabled],.ck.ck-reset_all textarea[disabled]{cursor:default}.ck.ck-reset_all fieldset{padding:10px;border:2px groove #dfdee3}.ck.ck-reset_all button::-moz-focus-inner{padding:0;border:0}.ck[dir=rtl],.ck[dir=rtl] .ck{text-align:right}:root{--ck-border-radius:2px;--ck-inner-shadow:2px 2px 3px var(--ck-color-shadow-inner) inset;--ck-drop-shadow:0 1px 2px 1px var(--ck-color-shadow-drop);--ck-drop-shadow-active:0 3px 6px 1px var(--ck-color-shadow-drop-active);--ck-spacing-unit:0.6em;--ck-spacing-large:calc(var(--ck-spacing-unit)*1.5);--ck-spacing-standard:var(--ck-spacing-unit);--ck-spacing-medium:calc(var(--ck-spacing-unit)*0.8);--ck-spacing-small:calc(var(--ck-spacing-unit)*0.5);--ck-spacing-tiny:calc(var(--ck-spacing-unit)*0.3);--ck-spacing-extra-tiny:calc(var(--ck-spacing-unit)*0.16)}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-widget/theme/widget.css":function(e,t){e.exports=":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px;--ck-resizer-tooltip-height:calc(var(--ck-spacing-small)*2 + 10px)}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);color:var(--ck-color-resizer-tooltip-text);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);font-size:var(--ck-font-size-tiny);display:block;padding:0 var(--ck-spacing-small);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height)}.ck .ck-size-view.ck-orientation-above-center,.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{top:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{top:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-above-center{top:calc(var(--ck-resizer-tooltip-height)*-1);left:50%;transform:translate(-50%)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-width:var(--ck-widget-outline-thickness);outline-style:solid;outline-color:transparent;transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;background-color:var(--ck-color-widget-editable-focus-background)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{padding:4px;box-sizing:border-box;background-color:transparent;opacity:0;transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;transform:translateY(-100%);left:calc(0px - var(--ck-widget-outline-thickness));top:0}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{width:var(--ck-widget-handler-icon-size);height:var(--ck-widget-handler-icon-size);color:var(--ck-color-widget-drag-handler-icon-color)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-focus-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-widget/theme/widgetresize.css":function(e,t){e.exports=".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;position:absolute;pointer-events:none;left:0;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{position:absolute;pointer-events:all}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{width:var(--ck-resizer-size);height:var(--ck-resizer-size);background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{top:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{top:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}"},"./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-widget/theme/widgettypearound.css":function(e,t){e.exports='.ck .ck-widget .ck-widget__type-around__button{display:block;position:absolute;overflow:hidden;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{position:absolute;top:50%;left:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{top:calc(var(--ck-widget-outline-thickness)*-0.5);left:min(10%,30px);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-0.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;position:absolute;top:1px;left:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;position:absolute;left:0;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{top:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{width:var(--ck-widget-type-around-button-size);height:var(--ck-widget-type-around-button-size);background:var(--ck-color-widget-type-around-button);border-radius:100px;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);opacity:0;pointer-events:none}.ck .ck-widget .ck-widget__type-around__button svg{width:10px;height:8px;transform:translate(-50%,-50%);transition:transform .5s ease;margin-top:1px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{width:calc(var(--ck-widget-type-around-button-size) - 2px);height:calc(var(--ck-widget-type-around-button-size) - 2px);border-radius:100px;background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3))}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{pointer-events:none;height:1px;animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;outline:1px solid hsla(0,0%,100%,.5);background:var(--ck-color-base-text)}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}'},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":function(e,t,o){"use strict";var i,s=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(e){o=null}e[t]=o}return e[t]}}(),n=[];function a(e){for(var t=-1,o=0;o<n.length;o++)if(n[o].identifier===e){t=o;break}return t}function c(e,t){for(var o={},i=[],s=0;s<e.length;s++){var r=e[s],c=t.base?r[0]+t.base:r[0],l=o[c]||0,d="".concat(c," ").concat(l);o[c]=l+1;var u=a(d),h={css:r[1],media:r[2],sourceMap:r[3]};-1!==u?(n[u].references++,n[u].updater(h)):n.push({identifier:d,updater:m(h,t),references:1}),i.push(d)}return i}function l(e){var t=document.createElement("style"),i=e.attributes||{};if(void 0===i.nonce){var s=o.nc;s&&(i.nonce=s)}if(Object.keys(i).forEach((function(e){t.setAttribute(e,i[e])})),"function"==typeof e.insert)e.insert(t);else{var n=r(e.insert||"head");if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,o,i){var s=o?"":i.media?"@media ".concat(i.media," {").concat(i.css,"}"):i.css;if(e.styleSheet)e.styleSheet.cssText=u(t,s);else{var r=document.createTextNode(s),n=e.childNodes;n[t]&&e.removeChild(n[t]),n.length?e.insertBefore(r,n[t]):e.appendChild(r)}}function p(e,t,o){var i=o.css,s=o.media,r=o.sourceMap;if(s?e.setAttribute("media",s):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=i;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(i))}}var g=null,f=0;function m(e,t){var o,i,s;if(t.singleton){var r=f++;o=g||(g=l(t)),i=h.bind(null,o,r,!1),s=h.bind(null,o,r,!0)}else o=l(t),i=p.bind(null,o,t),s=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(o)};return i(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;i(e=t)}else s()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=s());var o=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var i=0;i<o.length;i++){var s=a(o[i]);n[s].references--}for(var r=c(e,t),l=0;l<o.length;l++){var d=a(o[l]);0===n[d].references&&(n[d].updater(),n.splice(d,1))}o=r}}}},"./node_modules/webpack/buildin/global.js":function(e,t){var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(e){"object"==typeof window&&(o=window)}e.exports=o},"./node_modules/webpack/buildin/harmony-module.js":function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},"./packages/ckeditor5-clipboard/theme/clipboard.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-clipboard/theme/clipboard.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-core/src/command.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-utils/src/observablemixin.js"),s=o("./packages/ckeditor5-utils/src/mix.js");class r{constructor(e){this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this.affectsData=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",()=>{this.refresh()}),this.on("execute",e=>{this.isEnabled||e.stop()},{priority:"high"}),this.listenTo(e,"change:isReadOnly",(e,t,o)=>{o&&this.affectsData?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.refresh())}execute(){}destroy(){this.stopListening()}}function n(e){e.return=!1,e.stop()}Object(s.a)(r,i.a)},"./packages/ckeditor5-core/src/contextplugin.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-utils/src/observablemixin.js"),s=o("./packages/ckeditor5-utils/src/mix.js");class r{constructor(e){this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}}Object(s.a)(r,i.a)},"./packages/ckeditor5-core/src/pendingactions.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-core/src/contextplugin.js"),s=o("./packages/ckeditor5-utils/src/observablemixin.js"),r=o("./packages/ckeditor5-utils/src/collection.js"),n=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class a extends i.a{static get pluginName(){return"PendingActions"}init(){this.set("hasAny",!1),this._actions=new r.a({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if("string"!=typeof e)throw new n.a("pendingactions-add-invalid-message",this);const t=Object.create(s.a);return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}remove(e){this._actions.remove(e),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}},"./packages/ckeditor5-core/src/plugin.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-utils/src/observablemixin.js"),s=o("./packages/ckeditor5-utils/src/mix.js");class r{constructor(e){this.editor=e,this.set("isEnabled",!0),this._disableStack=new Set}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}}function n(e){e.return=!1,e.stop()}Object(s.a)(r,i.a)},"./packages/ckeditor5-core/theme/icons/pilcrow.svg":function(e,t,o){"use strict";t.a='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.999 2H15a1 1 0 0 1 0 2h-1.004v13a1 1 0 1 1-2 0V4H8.999v13a1 1 0 1 1-2 0v-7A4 4 0 0 1 3 6a4 4 0 0 1 3.999-4z"/></svg>'},"./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg":function(e,t,o){"use strict";t.a='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="9.5" cy="4.5" r="1.5"/><circle cx="9.5" cy="10.5" r="1.5"/><circle cx="9.5" cy="16.5" r="1.5"/></svg>'},"./packages/ckeditor5-engine/src/controller/datacontroller.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return j}));var i=o("./packages/ckeditor5-utils/src/mix.js"),s=o("./packages/ckeditor5-utils/src/observablemixin.js"),r=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),n=o("./packages/ckeditor5-engine/src/conversion/mapper.js"),a=o("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.js"),c=o("./packages/ckeditor5-engine/src/conversion/downcasthelpers.js"),l=o("./node_modules/lodash-es/isArray.js");class d{constructor(){this._consumables=new Map}add(e,t){let o;e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):(this._consumables.has(e)?o=this._consumables.get(e):(o=new u(e),this._consumables.set(e,o)),o.add(t))}test(e,t){const o=this._consumables.get(e);return void 0===o?null:e.is("$text")||e.is("documentFragment")?o:o.test(t)}consume(e,t){return!!this.test(e,t)&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!1):this._consumables.get(e).consume(t),!0)}revert(e,t){const o=this._consumables.get(e);void 0!==o&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):o.revert(t))}static consumablesFromElement(e){const t={element:e,name:!0,attributes:[],classes:[],styles:[]},o=e.getAttributeKeys();for(const e of o)"style"!=e&&"class"!=e&&t.attributes.push(e);const i=e.getClassNames();for(const e of i)t.classes.push(e);const s=e.getStyleNames();for(const e of s)t.styles.push(e);return t}static createFrom(e,t){if(t||(t=new d(e)),e.is("$text"))return t.add(e),t;e.is("element")&&t.add(e,d.consumablesFromElement(e)),e.is("documentFragment")&&t.add(e);for(const o of e.getChildren())t=d.createFrom(o,t);return t}}class u{constructor(e){this.element=e,this._canConsumeName=null,this._consumables={attributes:new Map,styles:new Map,classes:new Map}}add(e){e.name&&(this._canConsumeName=!0);for(const t in this._consumables)t in e&&this._add(t,e[t])}test(e){if(e.name&&!this._canConsumeName)return this._canConsumeName;for(const t in this._consumables)if(t in e){const o=this._test(t,e[t]);if(!0!==o)return o}return!0}consume(e){e.name&&(this._canConsumeName=!1);for(const t in this._consumables)t in e&&this._consume(t,e[t])}revert(e){e.name&&(this._canConsumeName=!0);for(const t in this._consumables)t in e&&this._revert(t,e[t])}_add(e,t){const o=Object(l.a)(t)?t:[t],i=this._consumables[e];for(const t of o){if("attributes"===e&&("class"===t||"style"===t))throw new r.a("viewconsumable-invalid-attribute",this);if(i.set(t,!0),"styles"===e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))i.set(e,!0)}}_test(e,t){const o=Object(l.a)(t)?t:[t],i=this._consumables[e];for(const t of o)if("attributes"!==e||"class"!==t&&"style"!==t){const e=i.get(t);if(void 0===e)return null;if(!e)return!1}else{const e="class"==t?"classes":"styles",o=this._test(e,[...this._consumables[e].keys()]);if(!0!==o)return o}return!0}_consume(e,t){const o=Object(l.a)(t)?t:[t],i=this._consumables[e];for(const t of o)if("attributes"!==e||"class"!==t&&"style"!==t){if(i.set(t,!1),"styles"==e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))i.set(e,!1)}else{const e="class"==t?"classes":"styles";this._consume(e,[...this._consumables[e].keys()])}}_revert(e,t){const o=Object(l.a)(t)?t:[t],i=this._consumables[e];for(const t of o)if("attributes"!==e||"class"!==t&&"style"!==t){!1===i.get(t)&&i.set(t,!0)}else{const e="class"==t?"classes":"styles";this._revert(e,[...this._consumables[e].keys()])}}}var h=o("./packages/ckeditor5-engine/src/model/range.js"),p=o("./packages/ckeditor5-engine/src/model/position.js"),g=o("./packages/ckeditor5-engine/src/model/schema.js"),f=o("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.js"),m=o("./packages/ckeditor5-utils/src/emittermixin.js");class k{constructor(e={}){this._splitParts=new Map,this._cursorParents=new Map,this._modelCursor=null,this.conversionApi=Object.assign({},e),this.conversionApi.convertItem=this._convertItem.bind(this),this.conversionApi.convertChildren=this._convertChildren.bind(this),this.conversionApi.safeInsert=this._safeInsert.bind(this),this.conversionApi.updateConversionResult=this._updateConversionResult.bind(this),this.conversionApi.splitToAllowedParent=this._splitToAllowedParent.bind(this),this.conversionApi.getSplitParts=this._getSplitParts.bind(this)}convert(e,t,o=["$root"]){this.fire("viewCleanup",e),this._modelCursor=function(e,t){let o;for(const i of new g.a(e)){const e={};for(const t of i.getAttributeKeys())e[t]=i.getAttribute(t);const s=t.createElement(i.name,e);o&&t.append(s,o),o=p.a._createAt(s,0)}return o}(o,t),this.conversionApi.writer=t,this.conversionApi.consumable=d.createFrom(e),this.conversionApi.store={};const{modelRange:i}=this._convertItem(e,this._modelCursor),s=t.createDocumentFragment();if(i){this._removeEmptyElements();for(const e of Array.from(this._modelCursor.parent.getChildren()))t.append(e,s);s.markers=function(e,t){const o=new Set,i=new Map,s=h.a._createIn(e).getItems();for(const e of s)"$marker"==e.name&&o.add(e);for(const e of o){const o=e.getAttribute("data-name"),s=t.createPositionBefore(e);i.has(o)?i.get(o).end=s.clone():i.set(o,new h.a(s.clone())),t.remove(e)}return i}(s,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,s}_convertItem(e,t){const o=Object.assign({viewItem:e,modelCursor:t,modelRange:null});if(e.is("element")?this.fire("element:"+e.name,o,this.conversionApi):e.is("$text")?this.fire("text",o,this.conversionApi):this.fire("documentFragment",o,this.conversionApi),o.modelRange&&!(o.modelRange instanceof h.a))throw new r.a("view-conversion-dispatcher-incorrect-result",this);return{modelRange:o.modelRange,modelCursor:o.modelCursor}}_convertChildren(e,t){let o=t.is("position")?t:p.a._createAt(t,0);const i=new h.a(o);for(const t of Array.from(e.getChildren())){const e=this._convertItem(t,o);e.modelRange instanceof h.a&&(i.end=e.modelRange.end,o=e.modelCursor)}return{modelRange:i,modelCursor:o}}_safeInsert(e,t){const o=this._splitToAllowedParent(e,t);return!!o&&(this.conversionApi.writer.insert(e,o.position),!0)}_updateConversionResult(e,t){const o=this._getSplitParts(e),i=this.conversionApi.writer;t.modelRange||(t.modelRange=i.createRange(i.createPositionBefore(e),i.createPositionAfter(o[o.length-1])));const s=this._cursorParents.get(e);t.modelCursor=s?i.createPositionAt(s,0):t.modelRange.end}_splitToAllowedParent(e,t){const{schema:o,writer:i}=this.conversionApi;let s=o.findAllowedParent(t,e);if(s){if(s===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(s)&&(s=null)}if(!s)return Object(f.b)(t,e,o)?{position:Object(f.c)(t,i)}:null;const r=this.conversionApi.writer.split(t,s),n=[];for(const e of r.range.getWalker())if("elementEnd"==e.type)n.push(e.item);else{const t=n.pop(),o=e.item;this._registerSplitPair(t,o)}const a=r.range.end.parent;return this._cursorParents.set(e,a),{position:r.position,cursorParent:a}}_registerSplitPair(e,t){this._splitParts.has(e)||this._splitParts.set(e,[e]);const o=this._splitParts.get(e);this._splitParts.set(t,o),o.push(t)}_getSplitParts(e){let t;return t=this._splitParts.has(e)?this._splitParts.get(e):[e],t}_removeEmptyElements(){let e=!1;for(const t of this._splitParts.keys())t.isEmpty&&(this.conversionApi.writer.remove(t),this._splitParts.delete(t),e=!0);e&&this._removeEmptyElements()}}Object(i.a)(k,m.c);var b=o("./packages/ckeditor5-engine/src/conversion/upcasthelpers.js"),_=o("./packages/ckeditor5-engine/src/view/documentfragment.js"),w=o("./packages/ckeditor5-engine/src/view/document.js"),v=o("./packages/ckeditor5-engine/src/view/downcastwriter.js"),y=o("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js");class j{constructor(e,t){this.model=e,this.mapper=new n.a,this.downcastDispatcher=new a.a({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",Object(c.e)(),{priority:"lowest"}),this.upcastDispatcher=new k({schema:e.schema}),this.viewDocument=new w.a(t),this.stylesProcessor=t,this.htmlProcessor=new y.a(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new v.a(this.viewDocument),this.upcastDispatcher.on("text",Object(b.b)(),{priority:"lowest"}),this.upcastDispatcher.on("element",Object(b.c)(),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",Object(b.c)(),{priority:"lowest"}),this.decorate("init"),this.decorate("set"),this.decorate("get"),this.on("init",()=>{this.fire("ready")},{priority:"lowest"}),this.on("ready",()=>{this.model.enqueueChange("transparent",f.a)},{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:o="empty"}=e;if(!this._checkIfRootsExists([t]))throw new r.a("datacontroller-get-non-existent-root",this);const i=this.model.document.getRoot(t);return"empty"!==o||this.model.hasContent(i,{ignoreWhitespaces:!0})?this.stringify(i,e):""}stringify(e,t={}){const o=this.toView(e,t);return this.processor.toData(o)}toView(e,t={}){const o=this.viewDocument,i=this._viewWriter;this.mapper.clearBindings();const s=h.a._createIn(e),r=new _.a(o);this.mapper.bindElements(e,r),this.downcastDispatcher.conversionApi.options=t,this.downcastDispatcher.convertInsert(s,i);const n=e.is("documentFragment")?Array.from(e.markers):function(e){const t=[],o=e.root.document;if(!o)return[];const i=h.a._createIn(e);for(const e of o.model.markers){const o=e.getRange(),s=o.isCollapsed,r=o.start.isEqual(i.start)||o.end.isEqual(i.end);if(s&&r)t.push([e.name,o]);else{const s=i.getIntersection(o);s&&t.push([e.name,s])}}return t.sort(([e,t],[o,i])=>{if("after"!==t.end.compareWith(i.start))return 1;if("before"!==t.start.compareWith(i.end))return-1;switch(t.start.compareWith(i.start)){case"before":return 1;case"after":return-1;default:switch(t.end.compareWith(i.end)){case"before":return 1;case"after":return-1;default:return o.localeCompare(e)}}})}(e);for(const[e,t]of n)this.downcastDispatcher.convertMarkerAdd(e,t,i);return delete this.downcastDispatcher.conversionApi.options,r}init(e){if(this.model.document.version)throw new r.a("datacontroller-init-document-not-empty",this);let t={};if("string"==typeof e?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new r.a("datacontroller-init-non-existent-root",this);return this.model.enqueueChange("transparent",e=>{for(const o of Object.keys(t)){const i=this.model.document.getRoot(o);e.insert(this.parse(t[o],i),i,0)}}),Promise.resolve()}set(e,t={}){let o={};if("string"==typeof e?o.main=e:o=e,!this._checkIfRootsExists(Object.keys(o)))throw new r.a("datacontroller-set-non-existent-root",this);const i=t.batchType||"default";this.model.enqueueChange(i,e=>{e.setSelection(null),e.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const t of Object.keys(o)){const i=this.model.document.getRoot(t);e.remove(e.createRangeIn(i)),e.insert(this.parse(o[t],i),i,0)}})}parse(e,t="$root"){const o=this.processor.toView(e);return this.toModel(o,t)}toModel(e,t="$root"){return this.model.change(o=>this.upcastDispatcher.convert(e,o,t))}addStyleProcessorRules(e){e(this.stylesProcessor)}registerRawContentMatcher(e){this.processor&&this.processor!==this.htmlProcessor&&this.processor.registerRawContentMatcher(e),this.htmlProcessor.registerRawContentMatcher(e)}destroy(){this.stopListening()}_checkIfRootsExists(e){for(const t of e)if(!this.model.document.getRootNames().includes(t))return!1;return!0}}Object(i.a)(j,s.a)},"./packages/ckeditor5-engine/src/controller/editingcontroller.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return Q}));var i=o("./packages/ckeditor5-engine/src/view/editableelement.js");const s=Symbol("rootName");class r extends i.a{constructor(e,t){super(e,t),this.rootName="main"}is(e,t=null){return t?t===this.name&&("rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}get rootName(){return this.getCustomProperty(s)}set rootName(e){this._setCustomProperty(s,e)}set _name(e){this.name=e}}var n=o("./packages/ckeditor5-engine/src/view/document.js"),a=o("./packages/ckeditor5-engine/src/view/downcastwriter.js"),c=o("./packages/ckeditor5-engine/src/view/renderer.js"),l=o("./packages/ckeditor5-engine/src/view/domconverter.js"),d=o("./packages/ckeditor5-engine/src/view/position.js"),u=o("./packages/ckeditor5-engine/src/view/range.js"),h=o("./packages/ckeditor5-engine/src/view/selection.js"),p=o("./packages/ckeditor5-engine/src/view/observer/observer.js"),g=o("./packages/ckeditor5-engine/src/view/filler.js"),f=o("./node_modules/lodash-es/_baseIsEqual.js");var m=function(e,t,o){var i=(o="function"==typeof o?o:void 0)?o(e,t):void 0;return void 0===i?Object(f.a)(e,t,void 0,o):!!i};class k extends p.a{constructor(e){super(e),this._config={childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},this.domConverter=e.domConverter,this.renderer=e._renderer,this._domElements=[],this._mutationObserver=new window.MutationObserver(this._onMutations.bind(this))}flush(){this._onMutations(this._mutationObserver.takeRecords())}observe(e){this._domElements.push(e),this.isEnabled&&this._mutationObserver.observe(e,this._config)}enable(){super.enable();for(const e of this._domElements)this._mutationObserver.observe(e,this._config)}disable(){super.disable(),this._mutationObserver.disconnect()}destroy(){super.destroy(),this._mutationObserver.disconnect()}_onMutations(e){if(0===e.length)return;const t=this.domConverter,o=new Map,i=new Set;for(const o of e)if("childList"===o.type){const e=t.mapDomToView(o.target);if(e&&(e.is("uiElement")||e.is("rawElement")))continue;e&&!this._isBogusBrMutation(o)&&i.add(e)}for(const s of e){const e=t.mapDomToView(s.target);if((!e||!e.is("uiElement")&&!e.is("rawElement"))&&"characterData"===s.type){const e=t.findCorrespondingViewText(s.target);e&&!i.has(e.parent)?o.set(e,{type:"text",oldText:e.data,newText:Object(g.f)(s.target),node:e}):!e&&Object(g.i)(s.target)&&i.add(t.mapDomToView(s.target.parentNode))}}const s=[];for(const e of o.values())this.renderer.markToSync("text",e.node),s.push(e);for(const e of i){const o=t.mapViewToDom(e),i=Array.from(e.getChildren()),r=Array.from(t.domChildrenToView(o,{withChildren:!1}));m(i,r,a)||(this.renderer.markToSync("children",e),s.push({type:"children",oldChildren:i,newChildren:r,node:e}))}const r=e[0].target.ownerDocument.getSelection();let n=null;if(r&&r.anchorNode){const e=t.domPositionToView(r.anchorNode,r.anchorOffset),o=t.domPositionToView(r.focusNode,r.focusOffset);e&&o&&(n=new h.a(e),n.setFocus(o))}function a(e,t){if(!Array.isArray(e))return e===t||!(!e.is("$text")||!t.is("$text"))&&e.data===t.data}s.length&&(this.document.fire("mutations",s,n),this.view.forceRender())}_isBogusBrMutation(e){let t=null;return null===e.nextSibling&&0===e.removedNodes.length&&1==e.addedNodes.length&&(t=this.domConverter.domToView(e.addedNodes[0],{withChildren:!1})),t&&t.is("element","br")}}var b=o("./packages/ckeditor5-engine/src/view/observer/domeventobserver.js"),_=o("./packages/ckeditor5-utils/src/keyboard.js");class w extends b.a{constructor(e){super(e),this.domEventType=["keydown","keyup"]}onDomEvent(e){this.fire(e.type,e,{keyCode:e.keyCode,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,get keystroke(){return Object(_.a)(this)}})}}var v=o("./node_modules/lodash-es/debounce.js");class y extends p.a{constructor(e){super(e),this._fireSelectionChangeDoneDebounced=Object(v.a)(e=>this.document.fire("selectionChangeDone",e),200)}observe(){const e=this.document;e.on("arrowKey",(t,o)=>{e.selection.isFake&&this.isEnabled&&o.preventDefault()},{context:"$capture"}),e.on("arrowKey",(t,o)=>{e.selection.isFake&&this.isEnabled&&this._handleSelectionMove(o.keyCode)},{priority:"lowest"})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(e){const t=this.document.selection,o=new h.a(t.getRanges(),{backward:t.isBackward,fake:!1});e!=_.f.arrowleft&&e!=_.f.arrowup||o.setTo(o.getFirstPosition()),e!=_.f.arrowright&&e!=_.f.arrowdown||o.setTo(o.getLastPosition());const i={oldSelection:t,newSelection:o,domSelection:null};this.document.fire("selectionChange",i),this._fireSelectionChangeDoneDebounced(i)}}class j extends p.a{constructor(e){super(e),this.mutationObserver=e.getObserver(k),this.selection=this.document.selection,this.domConverter=e.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=Object(v.a)(e=>this.document.fire("selectionChangeDone",e),200),this._clearInfiniteLoopInterval=setInterval(()=>this._clearInfiniteLoop(),1e3),this._documentIsSelectingInactivityTimeoutDebounced=Object(v.a)(()=>this.document.isSelecting=!1,5e3),this._loopbackCounter=0}observe(e){const t=e.ownerDocument,o=()=>{this.document.isSelecting=!1,this._documentIsSelectingInactivityTimeoutDebounced.cancel()};this.listenTo(e,"selectstart",()=>{this.document.isSelecting=!0,this._documentIsSelectingInactivityTimeoutDebounced()},{priority:"highest"}),this.listenTo(e,"keydown",o,{priority:"highest"}),this.listenTo(e,"keyup",o,{priority:"highest"}),this._documents.has(t)||(this.listenTo(t,"mouseup",o,{priority:"highest"}),this.listenTo(t,"selectionchange",(e,o)=>{this._handleSelectionChange(o,t),this._documentIsSelectingInactivityTimeoutDebounced()}),this._documents.add(t))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel(),this._documentIsSelectingInactivityTimeoutDebounced.cancel()}_handleSelectionChange(e,t){if(!this.isEnabled)return;const o=t.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(o.anchorNode))return;this.mutationObserver.flush();const i=this.domConverter.domSelectionToView(o);if(0!=i.rangeCount){if(this.view.hasDomSelection=!0,!(this.selection.isEqual(i)&&this.domConverter.isDomSelectionCorrect(o)||++this._loopbackCounter>60))if(this.selection.isSimilar(i))this.view.forceRender();else{const e={oldSelection:this.selection,newSelection:i,domSelection:o};this.document.fire("selectionChange",e),this._fireSelectionChangeDoneDebounced(e)}}else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class x extends b.a{constructor(e){super(e),this.domEventType=["focus","blur"],this.useCapture=!0;const t=this.document;t.on("focus",()=>{t.isFocused=!0,this._renderTimeoutId=setTimeout(()=>e.change(()=>{}),50)}),t.on("blur",(o,i)=>{const s=t.selection.editableElement;null!==s&&s!==i.target||(t.isFocused=!1,e.change(()=>{}))})}onDomEvent(e){this.fire(e.type,e)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}class P extends b.a{constructor(e){super(e),this.domEventType=["compositionstart","compositionupdate","compositionend"];const t=this.document;t.on("compositionstart",()=>{t.isComposing=!0}),t.on("compositionend",()=>{t.isComposing=!1})}onDomEvent(e){this.fire(e.type,e)}}class O extends b.a{constructor(e){super(e),this.domEventType=["beforeinput"]}onDomEvent(e){this.fire(e.type,e)}}var A=o("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js"),T=o("./packages/ckeditor5-utils/src/index.js");class C extends p.a{constructor(e){super(e),this.document.on("keydown",(e,t)=>{if(this.isEnabled&&Object(T.v)(t.keyCode)){const o=new A.a(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(o,t),o.stop.called&&e.stop()}})}observe(){}}var E=o("./packages/ckeditor5-utils/src/observablemixin.js"),S=o("./packages/ckeditor5-utils/src/mix.js"),R=o("./packages/ckeditor5-utils/src/dom/isrange.js"),M=o("./packages/ckeditor5-utils/src/dom/rect.js"),N=o("./packages/ckeditor5-utils/src/dom/istext.js");function I({target:e,viewportOffset:t=0}){const o=W(e);let i=o,s=null;for(;i;){let r;r=H(i==o?e:s),V(r,()=>q(e,i));const n=q(e,i);if(z(i,n,t),i.parent!=i){if(s=i.frameElement,i=i.parent,!s)return}else i=null}}function z(e,t,o){const i=t.clone().moveBy(0,o),s=t.clone().moveBy(0,-o),r=new M.a(e).excludeScrollbarsAndBorders();if(![s,i].every(e=>r.contains(e))){let{scrollX:n,scrollY:a}=e;B(s,r)?a-=r.top-t.top+o:D(i,r)&&(a+=t.bottom-r.bottom+o),F(t,r)?n-=r.left-t.left+o:L(t,r)&&(n+=t.right-r.right+o),e.scrollTo(n,a)}}function V(e,t){const o=W(e);let i,s;for(;e!=o.document.body;)s=t(),i=new M.a(e).excludeScrollbarsAndBorders(),i.contains(s)||(B(s,i)?e.scrollTop-=i.top-s.top:D(s,i)&&(e.scrollTop+=s.bottom-i.bottom),F(s,i)?e.scrollLeft-=i.left-s.left:L(s,i)&&(e.scrollLeft+=s.right-i.right)),e=e.parentNode}function D(e,t){return e.bottom>t.bottom}function B(e,t){return e.top<t.top}function F(e,t){return e.left<t.left}function L(e,t){return e.right>t.right}function W(e){return Object(R.a)(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function H(e){if(Object(R.a)(e)){let t=e.commonAncestorContainer;return Object(N.a)(t)&&(t=t.parentNode),t}return e.parentNode}function q(e,t){const o=W(e),i=new M.a(e);if(o===t)return i;{let e=o;for(;e!=t;){const t=e.frameElement,o=new M.a(t).excludeScrollbarsAndBorders();i.moveBy(o.left,o.top),e=e.parent}}return i}Object.assign({},{scrollViewportToShowTarget:I,scrollAncestorsToShowTarget:function(e){V(H(e),()=>new M.a(e))}});var $=o("./packages/ckeditor5-engine/src/view/uielement.js"),U=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),K=o("./packages/ckeditor5-utils/src/env.js");class G{constructor(e){this.document=new n.a(e),this.domConverter=new l.a(this.document),this.domRoots=new Map,this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new c.a(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting").to(this.document),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new a.a(this.document),this.addObserver(k),this.addObserver(j),this.addObserver(x),this.addObserver(w),this.addObserver(y),this.addObserver(P),this.addObserver(C),K.a.isAndroid&&this.addObserver(O),Object(g.g)(this),Object($.b)(this),this.on("render",()=>{this._render(),this.document.fire("layoutChanged"),this._hasChangedSinceTheLastRendering=!1}),this.listenTo(this.document.selection,"change",()=>{this._hasChangedSinceTheLastRendering=!0}),this.listenTo(this.document,"change:isFocused",()=>{this._hasChangedSinceTheLastRendering=!0})}attachDomRoot(e,t="main"){const o=this.document.getRoot(t);o._name=e.tagName.toLowerCase();const i={};for(const{name:t,value:s}of Array.from(e.attributes))i[t]=s,"class"===t?this._writer.addClass(s.split(" "),o):this._writer.setAttribute(t,s,o);this._initialDomRootAttributes.set(e,i);const s=()=>{this._writer.setAttribute("contenteditable",!o.isReadOnly,o),o.isReadOnly?this._writer.addClass("ck-read-only",o):this._writer.removeClass("ck-read-only",o)};s(),this.domRoots.set(t,e),this.domConverter.bindElements(e,o),this._renderer.markToSync("children",o),this._renderer.markToSync("attributes",o),this._renderer.domDocuments.add(e.ownerDocument),o.on("change:children",(e,t)=>this._renderer.markToSync("children",t)),o.on("change:attributes",(e,t)=>this._renderer.markToSync("attributes",t)),o.on("change:text",(e,t)=>this._renderer.markToSync("text",t)),o.on("change:isReadOnly",()=>this.change(s)),o.on("change",()=>{this._hasChangedSinceTheLastRendering=!0});for(const o of this._observers.values())o.observe(e,t)}detachDomRoot(e){const t=this.domRoots.get(e);Array.from(t.attributes).forEach(({name:e})=>t.removeAttribute(e));const o=this._initialDomRootAttributes.get(t);for(const e in o)t.setAttribute(e,o[e]);this.domRoots.delete(e),this.domConverter.unbindDomElement(t)}getDomRoot(e="main"){return this.domRoots.get(e)}addObserver(e){let t=this._observers.get(e);if(t)return t;t=new e(this),this._observers.set(e,t);for(const[e,o]of this.domRoots)t.observe(o,e);return t.enable(),t}getObserver(e){return this._observers.get(e)}disableObservers(){for(const e of this._observers.values())e.disable()}enableObservers(){for(const e of this._observers.values())e.enable()}scrollToTheSelection(){const e=this.document.selection.getFirstRange();e&&I({target:this.domConverter.viewRangeToDom(e),viewportOffset:20})}focus(){if(!this.document.isFocused){const e=this.document.selection.editableElement;e&&(this.domConverter.focus(e),this.forceRender())}}change(e){if(this.isRenderingInProgress||this._postFixersInProgress)throw new U.a("cannot-change-view-tree",this);try{if(this._ongoingChange)return e(this._writer);this._ongoingChange=!0;const t=e(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),t}catch(e){U.a.rethrowUnexpectedError(e,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.change(()=>{})}destroy(){for(const e of this._observers.values())e.destroy();this.document.destroy(),this.stopListening()}createPositionAt(e,t){return d.a._createAt(e,t)}createPositionAfter(e){return d.a._createAfter(e)}createPositionBefore(e){return d.a._createBefore(e)}createRange(e,t){return new u.a(e,t)}createRangeOn(e){return u.a._createOn(e)}createRangeIn(e){return u.a._createIn(e)}createSelection(e,t,o){return new h.a(e,t,o)}_disableRendering(e){this._renderingDisabled=e,0==e&&this.change(()=>{})}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}Object(S.a)(G,E.a);var J=o("./packages/ckeditor5-engine/src/conversion/mapper.js"),Y=o("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.js"),X=o("./packages/ckeditor5-engine/src/conversion/downcasthelpers.js"),Z=o("./packages/ckeditor5-engine/src/conversion/upcasthelpers.js");class Q{constructor(e,t){this.model=e,this.view=new G(t),this.mapper=new J.a,this.downcastDispatcher=new Y.a({mapper:this.mapper,schema:e.schema});const o=this.model.document,i=o.selection,s=this.model.markers;this.listenTo(this.model,"_beforeChanges",()=>{this.view._disableRendering(!0)},{priority:"highest"}),this.listenTo(this.model,"_afterChanges",()=>{this.view._disableRendering(!1)},{priority:"lowest"}),this.listenTo(o,"change",()=>{this.view.change(e=>{this.downcastDispatcher.convertChanges(o.differ,s,e),this.downcastDispatcher.convertSelection(i,s,e)})},{priority:"low"}),this.listenTo(this.view.document,"selectionChange",Object(Z.a)(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",Object(X.e)(),{priority:"lowest"}),this.downcastDispatcher.on("remove",Object(X.f)(),{priority:"low"}),this.downcastDispatcher.on("selection",Object(X.a)(),{priority:"high"}),this.downcastDispatcher.on("selection",Object(X.c)(),{priority:"low"}),this.downcastDispatcher.on("selection",Object(X.b)(),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using(e=>{if("$graveyard"==e.rootName)return null;const t=new r(this.view.document,e.name);return t.rootName=e.rootName,this.mapper.bindElements(e,t),t})}destroy(){this.view.destroy(),this.stopListening()}}Object(S.a)(Q,E.a)},"./packages/ckeditor5-engine/src/conversion/conversion.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),s=o("./packages/ckeditor5-engine/src/conversion/upcasthelpers.js"),r=o("./packages/ckeditor5-engine/src/conversion/downcasthelpers.js"),n=o("./packages/ckeditor5-utils/src/toarray.js");class a{constructor(e,t){this._helpers=new Map,this._downcast=Object(n.a)(e),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=Object(n.a)(t),this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(e,t){const o=this._downcast.includes(t);if(!this._upcast.includes(t)&&!o)throw new i.a("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:e,dispatchers:[t],isDowncast:o})}for(e){if(!this._helpers.has(e))throw new i.a("conversion-for-unknown-group",this);return this._helpers.get(e)}elementToElement(e){this.for("downcast").elementToElement(e);for(const{model:t,view:o}of c(e))this.for("upcast").elementToElement({model:t,view:o,converterPriority:e.converterPriority})}attributeToElement(e){this.for("downcast").attributeToElement(e);for(const{model:t,view:o}of c(e))this.for("upcast").elementToAttribute({view:o,model:t,converterPriority:e.converterPriority})}attributeToAttribute(e){this.for("downcast").attributeToAttribute(e);for(const{model:t,view:o}of c(e))this.for("upcast").attributeToAttribute({view:o,model:t})}_createConversionHelpers({name:e,dispatchers:t,isDowncast:o}){if(this._helpers.has(e))throw new i.a("conversion-group-exists",this);const n=o?new r.d(t):new s.d(t);this._helpers.set(e,n)}}function*c(e){if(e.model.values)for(const t of e.model.values){const o={key:e.model.key,value:t},i=e.view[t],s=e.upcastAlso?e.upcastAlso[t]:void 0;yield*l(o,i,s)}else yield*l(e.model,e.view,e.upcastAlso)}function*l(e,t,o){if(yield{model:e,view:t},o)for(const t of Object(n.a)(o))yield{model:e,view:t}}},"./packages/ckeditor5-engine/src/conversion/conversionhelpers.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return i}));class i{constructor(e){this._dispatchers=e}add(e){for(const t of this._dispatchers)e(t);return this}}},"./packages/ckeditor5-engine/src/conversion/downcastdispatcher.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return d}));var i=o("./packages/ckeditor5-engine/src/model/textproxy.js");class s{constructor(){this._consumable=new Map,this._textProxyRegistry=new Map}add(e,t){t=r(t),e instanceof i.a&&(e=this._getSymbolForTextProxy(e)),this._consumable.has(e)||this._consumable.set(e,new Map),this._consumable.get(e).set(t,!0)}consume(e,t){return t=r(t),e instanceof i.a&&(e=this._getSymbolForTextProxy(e)),!!this.test(e,t)&&(this._consumable.get(e).set(t,!1),!0)}test(e,t){t=r(t),e instanceof i.a&&(e=this._getSymbolForTextProxy(e));const o=this._consumable.get(e);if(void 0===o)return null;const s=o.get(t);return void 0===s?null:s}revert(e,t){t=r(t),e instanceof i.a&&(e=this._getSymbolForTextProxy(e));const o=this.test(e,t);return!1===o?(this._consumable.get(e).set(t,!0),!0):!0!==o&&null}_getSymbolForTextProxy(e){let t=null;const o=this._textProxyRegistry.get(e.startOffset);if(o){const i=o.get(e.endOffset);i&&(t=i.get(e.parent))}return t||(t=this._addSymbolForTextProxy(e.startOffset,e.endOffset,e.parent)),t}_addSymbolForTextProxy(e,t,o){const i=Symbol("textProxySymbol");let s,r;return s=this._textProxyRegistry.get(e),s||(s=new Map,this._textProxyRegistry.set(e,s)),r=s.get(t),r||(r=new Map,s.set(t,r)),r.set(o,i),i}}function r(e){const t=e.split(":");return"addMarker"==t[0]||"removeMarker"==t[0]?e:t.length>1?t[0]+":"+t[1]:t[0]}var n=o("./packages/ckeditor5-engine/src/model/range.js"),a=o("./packages/ckeditor5-engine/src/model/position.js"),c=o("./packages/ckeditor5-utils/src/emittermixin.js"),l=o("./packages/ckeditor5-utils/src/mix.js");class d{constructor(e){this.conversionApi=Object.assign({dispatcher:this},e),this._reconversionEventsMapping=new Map}convertChanges(e,t,o){for(const t of e.getMarkersToRemove())this.convertMarkerRemove(t.name,t.range,o);const i=this._mapChangesWithAutomaticReconversion(e);for(const e of i)"insert"===e.type?this.convertInsert(n.a._createFromPositionAndShift(e.position,e.length),o):"remove"===e.type?this.convertRemove(e.position,e.length,e.name,o):"reconvert"===e.type?this.reconvertElement(e.element,o):this.convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,o);for(const e of this.conversionApi.mapper.flushUnboundMarkerNames()){const i=t.get(e).getRange();this.convertMarkerRemove(e,i,o),this.convertMarkerAdd(e,i,o)}for(const t of e.getMarkersToAdd())this.convertMarkerAdd(t.name,t.range,o)}convertInsert(e,t){this.conversionApi.writer=t,this.conversionApi.consumable=this._createInsertConsumable(e);for(const t of Array.from(e).map(h))this._convertInsertWithAttributes(t);this._clearConversionApi()}convertRemove(e,t,o,i){this.conversionApi.writer=i,this.fire("remove:"+o,{position:e,length:t},this.conversionApi),this._clearConversionApi()}convertAttribute(e,t,o,i,s){this.conversionApi.writer=s,this.conversionApi.consumable=this._createConsumableForRange(e,"attribute:"+t);for(const s of e){const e={item:s.item,range:n.a._createFromPositionAndShift(s.previousPosition,s.length),attributeKey:t,attributeOldValue:o,attributeNewValue:i};this._testAndFire("attribute:"+t,e)}this._clearConversionApi()}reconvertElement(e,t){const o=n.a._createOn(e);this.conversionApi.writer=t,this.conversionApi.consumable=this._createInsertConsumable(o);const i=this.conversionApi.mapper,s=i.toViewElement(e);t.remove(s),this._convertInsertWithAttributes({item:e,range:o});const r=i.toViewElement(e);for(const o of n.a._createIn(e)){const{item:e}=o,s=p(e,i);s?s.root!==r.root&&t.move(t.createRangeOn(s),i.toViewPosition(a.a._createBefore(e))):this._convertInsertWithAttributes(h(o))}i.unbindViewElement(s),this._clearConversionApi()}convertSelection(e,t,o){const i=Array.from(t.getMarkersAtPosition(e.getFirstPosition()));if(this.conversionApi.writer=o,this.conversionApi.consumable=this._createSelectionConsumable(e,i),this.fire("selection",{selection:e},this.conversionApi),e.isCollapsed){for(const t of i){const o=t.getRange();if(!u(e.getFirstPosition(),t,this.conversionApi.mapper))continue;const i={item:e,markerName:t.name,markerRange:o};this.conversionApi.consumable.test(e,"addMarker:"+t.name)&&this.fire("addMarker:"+t.name,i,this.conversionApi)}for(const t of e.getAttributeKeys()){const o={item:e,range:e.getFirstRange(),attributeKey:t,attributeOldValue:null,attributeNewValue:e.getAttribute(t)};this.conversionApi.consumable.test(e,"attribute:"+o.attributeKey)&&this.fire("attribute:"+o.attributeKey+":$text",o,this.conversionApi)}this._clearConversionApi()}else this._clearConversionApi()}convertMarkerAdd(e,t,o){if("$graveyard"==t.root.rootName)return;this.conversionApi.writer=o;const i="addMarker:"+e,r=new s;if(r.add(t,i),this.conversionApi.consumable=r,this.fire(i,{markerName:e,markerRange:t},this.conversionApi),r.test(t,i)){this.conversionApi.consumable=this._createConsumableForRange(t,i);for(const o of t.getItems()){if(!this.conversionApi.consumable.test(o,i))continue;const s={item:o,range:n.a._createOn(o),markerName:e,markerRange:t};this.fire(i,s,this.conversionApi)}this._clearConversionApi()}else this._clearConversionApi()}convertMarkerRemove(e,t,o){"$graveyard"!=t.root.rootName&&(this.conversionApi.writer=o,this.fire("removeMarker:"+e,{markerName:e,markerRange:t},this.conversionApi),this._clearConversionApi())}_mapReconversionTriggerEvent(e,t){this._reconversionEventsMapping.set(t,e)}_createInsertConsumable(e){const t=new s;for(const o of e){const e=o.item;t.add(e,"insert");for(const o of e.getAttributeKeys())t.add(e,"attribute:"+o)}return t}_createConsumableForRange(e,t){const o=new s;for(const i of e.getItems())o.add(i,t);return o}_createSelectionConsumable(e,t){const o=new s;o.add(e,"selection");for(const i of t)o.add(e,"addMarker:"+i.name);for(const t of e.getAttributeKeys())o.add(e,"attribute:"+t);return o}_testAndFire(e,t){this.conversionApi.consumable.test(t.item,e)&&this.fire(function(e,t){const o=t.item.name||"$text";return`${e}:${o}`}(e,t),t,this.conversionApi)}_clearConversionApi(){delete this.conversionApi.writer,delete this.conversionApi.consumable}_convertInsertWithAttributes(e){this._testAndFire("insert",e);for(const t of e.item.getAttributeKeys())e.attributeKey=t,e.attributeOldValue=null,e.attributeNewValue=e.item.getAttribute(t),this._testAndFire("attribute:"+t,e)}_mapChangesWithAutomaticReconversion(e){const t=new Set,o=[];for(const i of e.getChanges()){const e=i.position||i.range.start,s=e.parent;if(Object(a.d)(e,s)){o.push(i);continue}const r="attribute"===i.type?Object(a.b)(e,s,null):s;if(r.is("$text")){o.push(i);continue}let n;if(n="attribute"===i.type?`attribute:${i.attributeKey}:${r.name}`:`${i.type}:${i.name}`,this._isReconvertTriggerEvent(n,r.name)){if(t.has(r))continue;t.add(r),o.push({type:"reconvert",element:r})}else o.push(i)}return o}_isReconvertTriggerEvent(e,t){return this._reconversionEventsMapping.get(e)===t}}function u(e,t,o){const i=t.getRange(),s=Array.from(e.getAncestors());s.shift(),s.reverse();return!s.some(e=>{if(i.containsItem(e)){return!!o.toViewElement(e).getCustomProperty("addHighlight")}})}function h(e){return{item:e.item,range:n.a._createFromPositionAndShift(e.previousPosition,e.length)}}function p(e,t){if(e.is("textProxy")){const o=t.toViewPosition(a.a._createBefore(e)).parent;return o.is("$text")?o:null}return t.toViewElement(e)}Object(l.a)(d,c.c)},"./packages/ckeditor5-engine/src/conversion/downcasthelpers.js":function(e,t,o){"use strict";o.d(t,"d",(function(){return h})),o.d(t,"e",(function(){return p})),o.d(t,"f",(function(){return g})),o.d(t,"c",(function(){return m})),o.d(t,"b",(function(){return k})),o.d(t,"a",(function(){return b}));var i=o("./packages/ckeditor5-engine/src/model/range.js"),s=o("./packages/ckeditor5-engine/src/model/selection.js"),r=o("./packages/ckeditor5-engine/src/model/element.js"),n=o("./packages/ckeditor5-engine/src/view/attributeelement.js"),a=o("./packages/ckeditor5-engine/src/model/documentselection.js"),c=o("./packages/ckeditor5-engine/src/conversion/conversionhelpers.js"),l=o("./node_modules/lodash-es/cloneDeep.js"),d=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),u=o("./packages/ckeditor5-utils/src/toarray.js");class h extends c.a{elementToElement(e){return this.add(function(e){return(e=Object(l.a)(e)).view=w(e.view,"container"),t=>{var o;if(t.on("insert:"+e.model,(o=e.view,(e,t,i)=>{const s=o(t.item,i);if(!s)return;if(!i.consumable.consume(t.item,"insert"))return;const r=i.mapper.toViewPosition(t.range.start);i.mapper.bindElements(t.item,s),i.writer.insert(r,s)}),{priority:e.converterPriority||"normal"}),e.triggerBy){if(e.triggerBy.attributes)for(const o of e.triggerBy.attributes)t._mapReconversionTriggerEvent(e.model,`attribute:${o}:${e.model}`);if(e.triggerBy.children)for(const o of e.triggerBy.children)t._mapReconversionTriggerEvent(e.model,"insert:"+o),t._mapReconversionTriggerEvent(e.model,"remove:"+o)}}}(e))}attributeToElement(e){return this.add(function(e){e=Object(l.a)(e);let t="attribute:"+(e.model.key?e.model.key:e.model);e.model.name&&(t+=":"+e.model.name);if(e.model.values)for(const t of e.model.values)e.view[t]=w(e.view[t],"attribute");else e.view=w(e.view,"attribute");const o=v(e);return i=>{i.on(t,function(e){return(t,o,i)=>{const r=e(o.attributeOldValue,i),n=e(o.attributeNewValue,i);if(!r&&!n)return;if(!i.consumable.consume(o.item,t.name))return;const c=i.writer,l=c.document.selection;if(o.item instanceof s.a||o.item instanceof a.a)c.wrap(l.getFirstRange(),n);else{let e=i.mapper.toViewRange(o.range);null!==o.attributeOldValue&&r&&(e=c.unwrap(e,r)),null!==o.attributeNewValue&&n&&c.wrap(e,n)}}}(o),{priority:e.converterPriority||"normal"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=Object(l.a)(e);let t="attribute:"+(e.model.key?e.model.key:e.model);e.model.name&&(t+=":"+e.model.name);if(e.model.values)for(const t of e.model.values)e.view[t]=y(e.view[t]);else e.view=y(e.view);const o=v(e);return i=>{var s;i.on(t,(s=o,(e,t,o)=>{const i=s(t.attributeOldValue,o),r=s(t.attributeNewValue,o);if(!i&&!r)return;if(!o.consumable.consume(t.item,e.name))return;const n=o.mapper.toViewElement(t.item),a=o.writer;if(!n)throw new d.a("conversion-attribute-to-attribute-on-text",[t,o]);if(null!==t.attributeOldValue&&i)if("class"==i.key){const e=Object(u.a)(i.value);for(const t of e)a.removeClass(t,n)}else if("style"==i.key){const e=Object.keys(i.value);for(const t of e)a.removeStyle(t,n)}else a.removeAttribute(i.key,n);if(null!==t.attributeNewValue&&r)if("class"==r.key){const e=Object(u.a)(r.value);for(const t of e)a.addClass(t,n)}else if("style"==r.key){const e=Object.keys(r.value);for(const t of e)a.setStyle(t,r.value[t],n)}else a.setAttribute(r.key,r.value,n)}),{priority:e.converterPriority||"normal"})}}(e))}markerToElement(e){return this.add(function(e){return(e=Object(l.a)(e)).view=w(e.view,"ui"),t=>{var o;t.on("addMarker:"+e.model,(o=e.view,(e,t,i)=>{t.isOpening=!0;const s=o(t,i);t.isOpening=!1;const r=o(t,i);if(!s||!r)return;const n=t.markerRange;if(n.isCollapsed&&!i.consumable.consume(n,e.name))return;for(const t of n)if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper,c=i.writer;c.insert(a.toViewPosition(n.start),s),i.mapper.bindElementToMarker(s,t.markerName),n.isCollapsed||(c.insert(a.toViewPosition(n.end),r),i.mapper.bindElementToMarker(r,t.markerName)),e.stop()}),{priority:e.converterPriority||"normal"}),t.on("removeMarker:"+e.model,(e.view,(e,t,o)=>{const i=o.mapper.markerNameToElements(t.markerName);if(i){for(const e of i)o.mapper.unbindElementFromMarkerName(e,t.markerName),o.writer.clear(o.writer.createRangeOn(e),e);o.writer.clearClonedElementsGroup(t.markerName),e.stop()}}),{priority:e.converterPriority||"normal"})}}(e))}markerToHighlight(e){return this.add(function(e){return t=>{var o;t.on("addMarker:"+e.model,(o=e.view,(e,t,i)=>{if(!t.item)return;if(!(t.item instanceof s.a||t.item instanceof a.a||t.item.is("$textProxy")))return;const r=j(o,t,i);if(!r)return;if(!i.consumable.consume(t.item,e.name))return;const n=i.writer,c=f(n,r),l=n.document.selection;if(t.item instanceof s.a||t.item instanceof a.a)n.wrap(l.getFirstRange(),c,l);else{const e=i.mapper.toViewRange(t.range),o=n.wrap(e,c);for(const e of o.getItems())if(e.is("attributeElement")&&e.isSimilar(c)){i.mapper.bindElementToMarker(e,t.markerName);break}}}),{priority:e.converterPriority||"normal"}),t.on("addMarker:"+e.model,function(e){return(t,o,s)=>{if(!o.item)return;if(!(o.item instanceof r.a))return;const n=j(e,o,s);if(!n)return;if(!s.consumable.test(o.item,t.name))return;const a=s.mapper.toViewElement(o.item);if(a&&a.getCustomProperty("addHighlight")){s.consumable.consume(o.item,t.name);for(const e of i.a._createIn(o.item))s.consumable.consume(e.item,t.name);a.getCustomProperty("addHighlight")(a,n,s.writer),s.mapper.bindElementToMarker(a,o.markerName)}}}(e.view),{priority:e.converterPriority||"normal"}),t.on("removeMarker:"+e.model,function(e){return(t,o,i)=>{if(o.markerRange.isCollapsed)return;const s=j(e,o,i);if(!s)return;const r=f(i.writer,s),n=i.mapper.markerNameToElements(o.markerName);if(n){for(const e of n)i.mapper.unbindElementFromMarkerName(e,o.markerName),e.is("attributeElement")?i.writer.unwrap(i.writer.createRangeOn(e),r):e.getCustomProperty("removeHighlight")(e,s.id,i.writer);i.writer.clearClonedElementsGroup(o.markerName),t.stop()}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}markerToData(e){return this.add(function(e){const t=(e=Object(l.a)(e)).model;e.view||(e.view=o=>({group:t,name:o.substr(e.model.length+1)}));return o=>{var i;o.on("addMarker:"+t,(i=e.view,(e,t,o)=>{const s=i(t.markerName,o);if(!s)return;const r=t.markerRange;o.consumable.consume(r,e.name)&&(_(r,!1,o,t,s),_(r,!0,o,t,s),e.stop())}),{priority:e.converterPriority||"normal"}),o.on("removeMarker:"+t,function(e){return(t,o,i)=>{const s=e(o.markerName,i);if(!s)return;const r=i.mapper.markerNameToElements(o.markerName);if(r){for(const e of r)i.mapper.unbindElementFromMarkerName(e,o.markerName),e.is("containerElement")?(n(`data-${s.group}-start-before`,e),n(`data-${s.group}-start-after`,e),n(`data-${s.group}-end-before`,e),n(`data-${s.group}-end-after`,e)):i.writer.clear(i.writer.createRangeOn(e),e);i.writer.clearClonedElementsGroup(o.markerName),t.stop()}function n(e,t){if(t.hasAttribute(e)){const o=new Set(t.getAttribute(e).split(","));o.delete(s.name),0==o.size?i.writer.removeAttribute(e,t):i.writer.setAttribute(e,Array.from(o).join(","),t)}}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}}function p(){return(e,t,o)=>{if(!o.consumable.consume(t.item,"insert"))return;const i=o.writer,s=o.mapper.toViewPosition(t.range.start),r=i.createText(t.item.data);i.insert(s,r)}}function g(){return(e,t,o)=>{const i=o.mapper.toViewPosition(t.position),s=t.position.getShiftedBy(t.length),r=o.mapper.toViewPosition(s,{isPhantom:!0}),n=o.writer.createRange(i,r),a=o.writer.remove(n.getTrimmed());for(const e of o.writer.createRangeIn(a).getItems())o.mapper.unbindViewElement(e)}}function f(e,t){const o=e.createAttributeElement("span",t.attributes);return t.classes&&o._addClass(t.classes),"number"==typeof t.priority&&(o._priority=t.priority),o._id=t.id,o}function m(){return(e,t,o)=>{const i=t.selection;if(i.isCollapsed)return;if(!o.consumable.consume(i,"selection"))return;const s=[];for(const e of i.getRanges()){const t=o.mapper.toViewRange(e);s.push(t)}o.writer.setSelection(s,{backward:i.isBackward})}}function k(){return(e,t,o)=>{const i=t.selection;if(!i.isCollapsed)return;if(!o.consumable.consume(i,"selection"))return;const s=o.writer,r=i.getFirstPosition(),n=o.mapper.toViewPosition(r),a=s.breakAttributes(n);s.setSelection(a)}}function b(){return(e,t,o)=>{const i=o.writer,s=i.document.selection;for(const e of s.getRanges())e.isCollapsed&&e.end.parent.isAttached()&&o.writer.mergeAttributes(e.start);i.setSelection(null)}}function _(e,t,o,i,s){const r=t?e.start:e.end,n=r.nodeAfter&&r.nodeAfter.is("element")?r.nodeAfter:null,a=r.nodeBefore&&r.nodeBefore.is("element")?r.nodeBefore:null;if(n||a){let e,r;t&&n||!t&&!a?(e=n,r=!0):(e=a,r=!1);const c=o.mapper.toViewElement(e);if(c)return void function(e,t,o,i,s,r){const n=`data-${r.group}-${t?"start":"end"}-${o?"before":"after"}`,a=e.hasAttribute(n)?e.getAttribute(n).split(","):[];a.unshift(r.name),i.writer.setAttribute(n,a.join(","),e),i.mapper.bindElementToMarker(e,s.markerName)}(c,t,r,o,i,s)}!function(e,t,o,i,s){const r=`${s.group}-${t?"start":"end"}`,n=s.name?{name:s.name}:null,a=o.writer.createUIElement(r,n);o.writer.insert(e,a),o.mapper.bindElementToMarker(a,i.markerName)}(o.mapper.toViewPosition(r),t,o,i,s)}function w(e,t){return"function"==typeof e?e:(o,i)=>function(e,t,o){"string"==typeof e&&(e={name:e});let i;const s=t.writer,r=Object.assign({},e.attributes);if("container"==o)i=s.createContainerElement(e.name,r);else if("attribute"==o){const t={priority:e.priority||n.a.DEFAULT_PRIORITY};i=s.createAttributeElement(e.name,r,t)}else i=s.createUIElement(e.name,r);if(e.styles){const t=Object.keys(e.styles);for(const o of t)s.setStyle(o,e.styles[o],i)}if(e.classes){const t=e.classes;if("string"==typeof t)s.addClass(t,i);else for(const e of t)s.addClass(e,i)}return i}(e,i,t)}function v(e){return e.model.values?(t,o)=>{const i=e.view[t];return i?i(t,o):null}:e.view}function y(e){return"string"==typeof e?t=>({key:e,value:t}):"object"==typeof e?e.value?()=>e:t=>({key:e.key,value:t}):e}function j(e,t,o){const i="function"==typeof e?e(t,o):e;return i?(i.priority||(i.priority=10),i.id||(i.id=t.markerName),i):null}},"./packages/ckeditor5-engine/src/conversion/mapper.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return d}));var i=o("./packages/ckeditor5-engine/src/model/position.js"),s=o("./packages/ckeditor5-engine/src/model/range.js"),r=o("./packages/ckeditor5-engine/src/view/position.js"),n=o("./packages/ckeditor5-engine/src/view/range.js"),a=o("./packages/ckeditor5-engine/src/view/text.js"),c=o("./packages/ckeditor5-utils/src/emittermixin.js"),l=o("./packages/ckeditor5-utils/src/mix.js");class d{constructor(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._viewToModelLengthCallbacks=new Map,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set,this.on("modelToViewPosition",(e,t)=>{if(t.viewPosition)return;const o=this._modelToViewMapping.get(t.modelPosition.parent);t.viewPosition=this.findPositionIn(o,t.modelPosition.offset)},{priority:"low"}),this.on("viewToModelPosition",(e,t)=>{if(t.modelPosition)return;const o=this.findMappedViewAncestor(t.viewPosition),s=this._viewToModelMapping.get(o),r=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,o);t.modelPosition=i.a._createAt(s,r)},{priority:"low"})}bindElements(e,t){this._modelToViewMapping.set(e,t),this._viewToModelMapping.set(t,e)}unbindViewElement(e){const t=this.toModelElement(e);if(this._viewToModelMapping.delete(e),this._elementToMarkerNames.has(e))for(const t of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(t);this._modelToViewMapping.get(t)==e&&this._modelToViewMapping.delete(t)}unbindModelElement(e){const t=this.toViewElement(e);this._modelToViewMapping.delete(e),this._viewToModelMapping.get(t)==e&&this._viewToModelMapping.delete(t)}bindElementToMarker(e,t){const o=this._markerNameToElements.get(t)||new Set;o.add(e);const i=this._elementToMarkerNames.get(e)||new Set;i.add(t),this._markerNameToElements.set(t,o),this._elementToMarkerNames.set(e,i)}unbindElementFromMarkerName(e,t){const o=this._markerNameToElements.get(t);o&&(o.delete(e),0==o.size&&this._markerNameToElements.delete(t));const i=this._elementToMarkerNames.get(e);i&&(i.delete(t),0==i.size&&this._elementToMarkerNames.delete(e))}flushUnboundMarkerNames(){const e=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),e}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set}toModelElement(e){return this._viewToModelMapping.get(e)}toViewElement(e){return this._modelToViewMapping.get(e)}toModelRange(e){return new s.a(this.toModelPosition(e.start),this.toModelPosition(e.end))}toViewRange(e){return new n.a(this.toViewPosition(e.start),this.toViewPosition(e.end))}toModelPosition(e){const t={viewPosition:e,mapper:this};return this.fire("viewToModelPosition",t),t.modelPosition}toViewPosition(e,t={isPhantom:!1}){const o={modelPosition:e,mapper:this,isPhantom:t.isPhantom};return this.fire("modelToViewPosition",o),o.viewPosition}markerNameToElements(e){const t=this._markerNameToElements.get(e);if(!t)return null;const o=new Set;for(const e of t)if(e.is("attributeElement"))for(const t of e.getElementsWithSameId())o.add(t);else o.add(e);return o}registerViewToModelLength(e,t){this._viewToModelLengthCallbacks.set(e,t)}findMappedViewAncestor(e){let t=e.parent;for(;!this._viewToModelMapping.has(t);)t=t.parent;return t}_toModelOffset(e,t,o){if(o!=e){return this._toModelOffset(e.parent,e.index,o)+this._toModelOffset(e,t,e)}if(e.is("$text"))return t;let i=0;for(let o=0;o<t;o++)i+=this.getModelLength(e.getChild(o));return i}getModelLength(e){if(this._viewToModelLengthCallbacks.get(e.name)){return this._viewToModelLengthCallbacks.get(e.name)(e)}if(this._viewToModelMapping.has(e))return 1;if(e.is("$text"))return e.data.length;if(e.is("uiElement"))return 0;{let t=0;for(const o of e.getChildren())t+=this.getModelLength(o);return t}}findPositionIn(e,t){let o,i=0,s=0,n=0;if(e.is("$text"))return new r.a(e,t);for(;s<t;)o=e.getChild(n),i=this.getModelLength(o),s+=i,n++;return s==t?this._moveViewPositionToTextNode(new r.a(e,n)):this.findPositionIn(o,t-(s-i))}_moveViewPositionToTextNode(e){const t=e.nodeBefore,o=e.nodeAfter;return t instanceof a.a?new r.a(t,t.data.length):o instanceof a.a?new r.a(o,0):e}}Object(l.a)(d,c.c)},"./packages/ckeditor5-engine/src/conversion/upcasthelpers.js":function(e,t,o){"use strict";o.d(t,"d",(function(){return c})),o.d(t,"c",(function(){return l})),o.d(t,"b",(function(){return d})),o.d(t,"a",(function(){return u}));var i=o("./packages/ckeditor5-engine/src/view/matcher.js"),s=o("./packages/ckeditor5-engine/src/conversion/conversionhelpers.js"),r=o("./node_modules/lodash-es/cloneDeep.js"),n=o("./packages/ckeditor5-utils/src/priorities.js"),a=o("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.js");class c extends s.a{elementToElement(e){return this.add(h(e))}elementToAttribute(e){return this.add(function(e){f(e=Object(r.a)(e));const t=m(e,!1),o=p(e.view),i=o?"element:"+o:"element";return o=>{o.on(i,t,{priority:e.converterPriority||"low"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=Object(r.a)(e);let t=null;("string"==typeof e.view||e.view.key)&&(t=function(e){"string"==typeof e.view&&(e.view={key:e.view});const t=e.view.key;let o;if("class"==t||"style"==t){o={["class"==t?"classes":"styles"]:e.view.value}}else{const i=void 0===e.view.value?/[\s\S]*/:e.view.value;o={attributes:{[t]:i}}}e.view.name&&(o.name=e.view.name);return e.view=o,t}(e));f(e,t);const o=m(e,!0);return t=>{t.on("element",o,{priority:e.converterPriority||"low"})}}(e))}elementToMarker(e){return this.add(function(e){return function(e){const t=e.model;e.model=(e,o)=>{const i="string"==typeof t?t:t(e,o);return o.writer.createElement("$marker",{"data-name":i})}}(e=Object(r.a)(e)),h(e)}(e))}dataToMarker(e){return this.add(function(e){(e=Object(r.a)(e)).model||(e.model=t=>t?e.view+":"+t:e.view);const t=g(k(e,"start")),o=g(k(e,"end"));return i=>{i.on("element:"+e.view+"-start",t,{priority:e.converterPriority||"normal"}),i.on("element:"+e.view+"-end",o,{priority:e.converterPriority||"normal"});const s=n.a.get("low"),r=n.a.get("highest"),a=n.a.get(e.converterPriority)/r;i.on("element",function(e){return(t,o,i)=>{const s="data-"+e.view;function r(t,s){for(const r of s){const s=e.model(r,i),n=i.writer.createElement("$marker",{"data-name":s});i.writer.insert(n,t),o.modelCursor.isEqual(t)?o.modelCursor=o.modelCursor.getShiftedBy(1):o.modelCursor=o.modelCursor._getTransformedByInsertion(t,1),o.modelRange=o.modelRange._getTransformedByInsertion(t,1)[0]}}(i.consumable.test(o.viewItem,{attributes:s+"-end-after"})||i.consumable.test(o.viewItem,{attributes:s+"-start-after"})||i.consumable.test(o.viewItem,{attributes:s+"-end-before"})||i.consumable.test(o.viewItem,{attributes:s+"-start-before"}))&&(o.modelRange||Object.assign(o,i.convertChildren(o.viewItem,o.modelCursor)),i.consumable.consume(o.viewItem,{attributes:s+"-end-after"})&&r(o.modelRange.end,o.viewItem.getAttribute(s+"-end-after").split(",")),i.consumable.consume(o.viewItem,{attributes:s+"-start-after"})&&r(o.modelRange.end,o.viewItem.getAttribute(s+"-start-after").split(",")),i.consumable.consume(o.viewItem,{attributes:s+"-end-before"})&&r(o.modelRange.start,o.viewItem.getAttribute(s+"-end-before").split(",")),i.consumable.consume(o.viewItem,{attributes:s+"-start-before"})&&r(o.modelRange.start,o.viewItem.getAttribute(s+"-start-before").split(",")))}}(e),{priority:s+a})}}(e))}}function l(){return(e,t,o)=>{if(!t.modelRange&&o.consumable.consume(t.viewItem,{name:!0})){const{modelRange:e,modelCursor:i}=o.convertChildren(t.viewItem,t.modelCursor);t.modelRange=e,t.modelCursor=i}}}function d(){return(e,t,{schema:o,consumable:i,writer:s})=>{let r=t.modelCursor;if(!i.test(t.viewItem))return;if(!o.checkChild(r,"$text")){if(!Object(a.b)(r,"$text",o))return;r=Object(a.c)(r,s)}i.consume(t.viewItem);const n=s.createText(t.viewItem.data);s.insert(n,r),t.modelRange=s.createRange(r,r.getShiftedBy(n.offsetSize)),t.modelCursor=t.modelRange.end}}function u(e,t){return(o,i)=>{const s=i.newSelection,r=[];for(const e of s.getRanges())r.push(t.toModelRange(e));const n=e.createSelection(r,{backward:s.isBackward});n.isEqual(e.document.selection)||e.change(e=>{e.setSelection(n)})}}function h(e){const t=g(e=Object(r.a)(e)),o=p(e.view),i=o?"element:"+o:"element";return o=>{o.on(i,t,{priority:e.converterPriority||"normal"})}}function p(e){return"string"==typeof e?e:"object"==typeof e&&"string"==typeof e.name?e.name:null}function g(e){const t=new i.a(e.view);return(o,i,s)=>{const r=t.match(i.viewItem);if(!r)return;const n=r.match;if(n.name=!0,!s.consumable.test(i.viewItem,n))return;const a=function(e,t,o){return e instanceof Function?e(t,o):o.writer.createElement(e)}(e.model,i.viewItem,s);a&&s.safeInsert(a,i.modelCursor)&&(s.consumable.consume(i.viewItem,n),s.convertChildren(i.viewItem,a),s.updateConversionResult(a,i))}}function f(e,t=null){const o=null===t||(e=>e.getAttribute(t)),i="object"!=typeof e.model?e.model:e.model.key,s="object"!=typeof e.model||void 0===e.model.value?o:e.model.value;e.model={key:i,value:s}}function m(e,t){const o=new i.a(e.view);return(i,s,r)=>{const n=o.match(s.viewItem);if(!n)return;if(!function(e,t){const o="function"==typeof e?e(t):e;if("object"==typeof o&&!p(o))return!1;return!o.classes&&!o.attributes&&!o.styles}(e.view,s.viewItem)?delete n.match.name:n.match.name=!0,!r.consumable.test(s.viewItem,n.match))return;const a=e.model.key,c="function"==typeof e.model.value?e.model.value(s.viewItem,r):e.model.value;if(null===c)return;s.modelRange||Object.assign(s,r.convertChildren(s.viewItem,s.modelCursor));(function(e,t,o,i){let s=!1;for(const r of Array.from(e.getItems({shallow:o})))i.schema.checkAttribute(r,t.key)&&(s=!0,r.hasAttribute(t.key)||i.writer.setAttribute(t.key,t.value,r));return s})(s.modelRange,{key:a,value:c},t,r)&&r.consumable.consume(s.viewItem,n.match)}}function k(e,t){const o={};return o.view=e.view+"-"+t,o.model=(t,o)=>{const i=t.getAttribute("name"),s=e.model(i,o);return o.writer.createElement("$marker",{"data-name":s})},o}},"./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));class i{getHtml(e){const t=document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(e),t.innerHTML}}var s=o("./packages/ckeditor5-engine/src/view/domconverter.js");class r{constructor(e){this.domParser=new DOMParser,this.domConverter=new s.a(e,{renderingMode:"data"}),this.htmlWriter=new i}toData(e){const t=this.domConverter.viewToDom(e,document);return this.htmlWriter.getHtml(t)}toView(e){const t=this._toDom(e);return this.domConverter.domToView(t)}registerRawContentMatcher(e){this.domConverter.registerRawContentMatcher(e)}useFillerType(e){this.domConverter.blockFillerMode="marked"==e?"markedNbsp":"nbsp"}_toDom(e){const t=this.domParser.parseFromString(e,"text/html"),o=t.createDocumentFragment();let i=t.firstChild;for(;!i.isSameNode(t.documentElement);){const e=i;i=i.nextSibling,e.nodeType==Node.COMMENT_NODE&&o.appendChild(e)}const s=t.body.childNodes;for(;s.length>0;)o.appendChild(s[0]);return o}}},"./packages/ckeditor5-engine/src/model/documentfragment.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return c}));var i=o("./packages/ckeditor5-engine/src/model/nodelist.js"),s=o("./packages/ckeditor5-engine/src/model/element.js"),r=o("./packages/ckeditor5-engine/src/model/text.js"),n=o("./packages/ckeditor5-engine/src/model/textproxy.js"),a=o("./packages/ckeditor5-utils/src/isiterable.js");class c{constructor(e){this.markers=new Map,this._children=new i.a,e&&this._insertChild(0,e)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(e){return"documentFragment"===e||"model:documentFragment"===e}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}getPath(){return[]}getNodeByPath(e){let t=this;for(const o of e)t=t.getChild(t.offsetToIndex(o));return t}offsetToIndex(e){return this._children.offsetToIndex(e)}toJSON(){const e=[];for(const t of this._children)e.push(t.toJSON());return e}static fromJSON(e){const t=[];for(const o of e)o.name?t.push(s.a.fromJSON(o)):t.push(r.a.fromJSON(o));return new c(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const o=function(e){if("string"==typeof e)return[new r.a(e)];Object(a.a)(e)||(e=[e]);return Array.from(e).map(e=>"string"==typeof e?new r.a(e):e instanceof n.a?new r.a(e.data,e.getAttributes()):e)}(t);for(const e of o)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,o)}_removeChildren(e,t=1){const o=this._children._removeNodes(e,t);for(const e of o)e.parent=null;return o}}},"./packages/ckeditor5-engine/src/model/documentselection.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return p}));var i=o("./packages/ckeditor5-utils/src/mix.js"),s=o("./packages/ckeditor5-utils/src/emittermixin.js"),r=o("./packages/ckeditor5-engine/src/model/selection.js"),n=o("./packages/ckeditor5-engine/src/model/liverange.js"),a=o("./packages/ckeditor5-engine/src/model/text.js"),c=o("./packages/ckeditor5-engine/src/model/textproxy.js"),l=o("./packages/ckeditor5-utils/src/tomap.js"),d=o("./packages/ckeditor5-utils/src/collection.js"),u=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),h=o("./packages/ckeditor5-utils/src/uid.js");class p{constructor(e){this._selection=new g(e),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this),this._selection.delegate("change:marker").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(e){return this._selection.containsEntireContent(e)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(e){return this._selection.getAttribute(e)}hasAttribute(e){return this._selection.hasAttribute(e)}refresh(){this._selection._updateMarkers(),this._selection._updateAttributes(!1)}observeMarkers(e){this._selection.observeMarkers(e)}is(e){return"selection"===e||"model:selection"==e||"documentSelection"==e||"model:documentSelection"==e}_setFocus(e,t){this._selection.setFocus(e,t)}_setTo(e,t,o){this._selection.setTo(e,t,o)}_setAttribute(e,t){this._selection.setAttribute(e,t)}_removeAttribute(e){this._selection.removeAttribute(e)}_getStoredAttributes(){return this._selection._getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(e){this._selection.restoreGravity(e)}static _getStoreAttributeKey(e){return"selection:"+e}static _isStoreAttributeKey(e){return e.startsWith("selection:")}}Object(i.a)(p,s.c);class g extends r.a{constructor(e){super(),this.markers=new d.a({idProperty:"name"}),this._model=e.model,this._document=e,this._attributePriority=new Map,this._selectionRestorePosition=null,this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this._observedMarkers=new Set,this.listenTo(this._model,"applyOperation",(e,t)=>{const o=t[0];o.isDocumentOperation&&"marker"!=o.type&&"rename"!=o.type&&"noop"!=o.type&&(0==this._ranges.length&&this._selectionRestorePosition&&this._fixGraveyardSelection(this._selectionRestorePosition),this._selectionRestorePosition=null,this._hasChangedRange&&(this._hasChangedRange=!1,this.fire("change:range",{directChange:!1})))},{priority:"lowest"}),this.on("change:range",()=>{for(const e of this.getRanges())if(!this._document._validateSelectionRange(e))throw new u.a("document-selection-wrong-position",this,{range:e})}),this.listenTo(this._model.markers,"update",(e,t,o,i)=>{this._updateMarker(t,i)}),this.listenTo(this._document,"change",(e,t)=>{!function(e,t){const o=e.document.differ;for(const i of o.getChanges()){if("insert"!=i.type)continue;const o=i.position.parent;i.length===o.maxOffset&&e.enqueueChange(t,e=>{const t=Array.from(o.getAttributeKeys()).filter(e=>e.startsWith("selection:"));for(const i of t)e.removeAttribute(i,o)})}}(this._model,t)})}get isCollapsed(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let e=0;e<this._ranges.length;e++)this._ranges[e].detach();this.stopListening()}*getRanges(){this._ranges.length?yield*super.getRanges():yield this._document._getDefaultRange()}getFirstRange(){return super.getFirstRange()||this._document._getDefaultRange()}getLastRange(){return super.getLastRange()||this._document._getDefaultRange()}setTo(e,t,o){super.setTo(e,t,o),this._updateAttributes(!0),this._updateMarkers()}setFocus(e,t){super.setFocus(e,t),this._updateAttributes(!0),this._updateMarkers()}setAttribute(e,t){if(this._setAttribute(e,t)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}removeAttribute(e){if(this._removeAttribute(e)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}overrideGravity(){const e=Object(h.a)();return this._overriddenGravityRegister.add(e),1===this._overriddenGravityRegister.size&&this._updateAttributes(!0),e}restoreGravity(e){if(!this._overriddenGravityRegister.has(e))throw new u.a("document-selection-gravity-wrong-restore",this,{uid:e});this._overriddenGravityRegister.delete(e),this.isGravityOverridden||this._updateAttributes(!0)}observeMarkers(e){this._observedMarkers.add(e),this._updateMarkers()}_popRange(){this._ranges.pop().detach()}_pushRange(e){const t=this._prepareRange(e);t&&this._ranges.push(t)}_prepareRange(e){if(this._checkRange(e),e.root==this._document.graveyard)return;const t=n.a.fromRange(e);return t.on("change:range",(e,o,i)=>{if(this._hasChangedRange=!0,t.root==this._document.graveyard){this._selectionRestorePosition=i.deletionPosition;const e=this._ranges.indexOf(t);this._ranges.splice(e,1),t.detach()}}),t}_updateMarkers(){if(!this._observedMarkers.size)return;const e=[];let t=!1;for(const t of this._model.markers){const o=t.name.split(":",1)[0];if(!this._observedMarkers.has(o))continue;const i=t.getRange();for(const o of this.getRanges())i.containsRange(o,!o.isCollapsed)&&e.push(t)}const o=Array.from(this.markers);for(const o of e)this.markers.has(o)||(this.markers.add(o),t=!0);for(const o of Array.from(this.markers))e.includes(o)||(this.markers.remove(o),t=!0);t&&this.fire("change:marker",{oldMarkers:o,directChange:!1})}_updateMarker(e,t){const o=e.name.split(":",1)[0];if(!this._observedMarkers.has(o))return;let i=!1;const s=Array.from(this.markers),r=this.markers.has(e);if(t){let o=!1;for(const e of this.getRanges())if(t.containsRange(e,!e.isCollapsed)){o=!0;break}o&&!r?(this.markers.add(e),i=!0):!o&&r&&(this.markers.remove(e),i=!0)}else r&&(this.markers.remove(e),i=!0);i&&this.fire("change:marker",{oldMarkers:s,directChange:!1})}_updateAttributes(e){const t=Object(l.a)(this._getSurroundingAttributes()),o=Object(l.a)(this.getAttributes());if(e)this._attributePriority=new Map,this._attrs=new Map;else for(const[e,t]of this._attributePriority)"low"==t&&(this._attrs.delete(e),this._attributePriority.delete(e));this._setAttributesTo(t);const i=[];for(const[e,t]of this.getAttributes())o.has(e)&&o.get(e)===t||i.push(e);for(const[e]of o)this.hasAttribute(e)||i.push(e);i.length>0&&this.fire("change:attribute",{attributeKeys:i,directChange:!1})}_setAttribute(e,t,o=!0){const i=o?"normal":"low";if("low"==i&&"normal"==this._attributePriority.get(e))return!1;return super.getAttribute(e)!==t&&(this._attrs.set(e,t),this._attributePriority.set(e,i),!0)}_removeAttribute(e,t=!0){const o=t?"normal":"low";return("low"!=o||"normal"!=this._attributePriority.get(e))&&(this._attributePriority.set(e,o),!!super.hasAttribute(e)&&(this._attrs.delete(e),!0))}_setAttributesTo(e){const t=new Set;for(const[t,o]of this.getAttributes())e.get(t)!==o&&this._removeAttribute(t,!1);for(const[o,i]of e){this._setAttribute(o,i,!1)&&t.add(o)}return t}*_getStoredAttributes(){const e=this.getFirstPosition().parent;if(this.isCollapsed&&e.isEmpty)for(const t of e.getAttributeKeys())if(t.startsWith("selection:")){const o=t.substr("selection:".length);yield[o,e.getAttribute(t)]}}_getSurroundingAttributes(){const e=this.getFirstPosition(),t=this._model.schema;let o=null;if(this.isCollapsed){const i=e.textNode?e.textNode:e.nodeBefore,s=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(o=f(i)),o||(o=f(s)),!this.isGravityOverridden&&!o){let e=i;for(;e&&!t.isInline(e)&&!o;)e=e.previousSibling,o=f(e)}if(!o){let e=s;for(;e&&!t.isInline(e)&&!o;)e=e.nextSibling,o=f(e)}o||(o=this._getStoredAttributes())}else{const e=this.getFirstRange();for(const i of e){if(i.item.is("element")&&t.isObject(i.item))break;if("text"==i.type){o=i.item.getAttributes();break}}}return o}_fixGraveyardSelection(e){const t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}}function f(e){return e instanceof c.a||e instanceof a.a?e.getAttributes():null}},"./packages/ckeditor5-engine/src/model/element.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return c}));var i=o("./packages/ckeditor5-engine/src/model/node.js"),s=o("./packages/ckeditor5-engine/src/model/nodelist.js"),r=o("./packages/ckeditor5-engine/src/model/text.js"),n=o("./packages/ckeditor5-engine/src/model/textproxy.js"),a=o("./packages/ckeditor5-utils/src/isiterable.js");class c extends i.a{constructor(e,t,o){super(t),this.name=e,this._children=new s.a,o&&this._insertChild(0,o)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}is(e,t=null){return t?t===this.name&&("element"===e||"model:element"===e):"element"===e||"model:element"===e||"node"===e||"model:node"===e}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}offsetToIndex(e){return this._children.offsetToIndex(e)}getNodeByPath(e){let t=this;for(const o of e)t=t.getChild(t.offsetToIndex(o));return t}findAncestor(e,t={includeSelf:!1}){let o=t.includeSelf?this:this.parent;for(;o;){if(o.name===e)return o;o=o.parent}return null}toJSON(){const e=super.toJSON();if(e.name=this.name,this._children.length>0){e.children=[];for(const t of this._children)e.children.push(t.toJSON())}return e}_clone(e=!1){const t=e?Array.from(this._children).map(e=>e._clone(!0)):null;return new c(this.name,this.getAttributes(),t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const o=function(e){if("string"==typeof e)return[new r.a(e)];Object(a.a)(e)||(e=[e]);return Array.from(e).map(e=>"string"==typeof e?new r.a(e):e instanceof n.a?new r.a(e.data,e.getAttributes()):e)}(t);for(const e of o)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,o)}_removeChildren(e,t=1){const o=this._children._removeNodes(e,t);for(const e of o)e.parent=null;return o}static fromJSON(e){let t=null;if(e.children){t=[];for(const o of e.children)o.name?t.push(c.fromJSON(o)):t.push(r.a.fromJSON(o))}return new c(e.name,e.attributes,t)}}},"./packages/ckeditor5-engine/src/model/liveposition.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-engine/src/model/position.js"),s=o("./packages/ckeditor5-utils/src/emittermixin.js"),r=o("./packages/ckeditor5-utils/src/mix.js"),n=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class a extends i.a{constructor(e,t,o="toNone"){if(super(e,t,o),!this.root.is("rootElement"))throw new n.a("model-liveposition-root-not-rootelement",e);c.call(this)}detach(){this.stopListening()}is(e){return"livePosition"===e||"model:livePosition"===e||"position"==e||"model:position"===e}toPosition(){return new i.a(this.root,this.path.slice(),this.stickiness)}static fromPosition(e,t){return new this(e.root,e.path.slice(),t||e.stickiness)}}function c(){this.listenTo(this.root.document.model,"applyOperation",(e,t)=>{const o=t[0];o.isDocumentOperation&&l.call(this,o)},{priority:"low"})}function l(e){const t=this.getTransformedByOperation(e);if(!this.isEqual(t)){const e=this.toPosition();this.path=t.path,this.root=t.root,this.fire("change",e)}}Object(r.a)(a,s.c)},"./packages/ckeditor5-engine/src/model/liverange.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return n}));var i=o("./packages/ckeditor5-engine/src/model/range.js"),s=o("./packages/ckeditor5-utils/src/emittermixin.js"),r=o("./packages/ckeditor5-utils/src/mix.js");class n extends i.a{constructor(e,t){super(e,t),a.call(this)}detach(){this.stopListening()}is(e){return"liveRange"===e||"model:liveRange"===e||"range"==e||"model:range"===e}toRange(){return new i.a(this.start,this.end)}static fromRange(e){return new n(e.start,e.end)}}function a(){this.listenTo(this.root.document.model,"applyOperation",(e,t)=>{const o=t[0];o.isDocumentOperation&&c.call(this,o)},{priority:"low"})}function c(e){const t=this.getTransformedByOperation(e),o=i.a._createFromRanges(t),s=!o.isEqual(this),r=function(e,t){switch(t.type){case"insert":return e.containsPosition(t.position);case"move":case"remove":case"reinsert":case"merge":return e.containsPosition(t.sourcePosition)||e.start.isEqual(t.sourcePosition)||e.containsPosition(t.targetPosition);case"split":return e.containsPosition(t.splitPosition)||e.containsPosition(t.insertionPosition)}return!1}(this,e);let n=null;if(s){"$graveyard"==o.root.rootName&&(n="remove"==e.type?e.sourcePosition:e.deletionPosition);const t=this.toRange();this.start=o.start,this.end=o.end,this.fire("change:range",t,{deletionPosition:n})}else r&&this.fire("change:content",this.toRange(),{deletionPosition:n})}Object(r.a)(n,s.c)},"./packages/ckeditor5-engine/src/model/model.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return pe}));class i{constructor(e="default"){this.operations=[],this.type=e}get baseVersion(){for(const e of this.operations)if(null!==e.baseVersion)return e.baseVersion;return null}addOperation(e){return e.batch=this,this.operations.push(e),e}}var s=o("./packages/ckeditor5-engine/src/model/operation/attributeoperation.js"),r=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),n=o("./packages/ckeditor5-engine/src/model/range.js"),a=o("./packages/ckeditor5-engine/src/model/operation/utils.js"),c=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class l extends r.a{constructor(e,t){super(null),this.sourcePosition=e.clone(),this.howMany=t}get type(){return"detach"}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e}_validate(){if(this.sourcePosition.root.document)throw new c.a("detach-operation-on-document-node",this)}_execute(){Object(a.d)(n.a._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}var d=o("./packages/ckeditor5-engine/src/model/operation/insertoperation.js"),u=o("./packages/ckeditor5-engine/src/model/operation/markeroperation.js"),h=o("./packages/ckeditor5-engine/src/model/operation/moveoperation.js"),p=o("./packages/ckeditor5-engine/src/model/operation/renameoperation.js"),g=o("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.js"),f=o("./packages/ckeditor5-engine/src/model/operation/splitoperation.js"),m=o("./packages/ckeditor5-engine/src/model/operation/mergeoperation.js"),k=o("./packages/ckeditor5-engine/src/model/documentfragment.js"),b=o("./packages/ckeditor5-engine/src/model/text.js"),_=o("./packages/ckeditor5-engine/src/model/element.js");class w extends _.a{constructor(e,t,o="main"){super(t),this._document=e,this.rootName=o}get document(){return this._document}is(e,t){return t?t===this.name&&("rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e):"rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e||"node"===e||"model:node"===e}toJSON(){return this.rootName}}var v=o("./packages/ckeditor5-engine/src/model/position.js"),y=o("./packages/ckeditor5-engine/src/model/documentselection.js"),j=o("./packages/ckeditor5-utils/src/tomap.js");class x{constructor(e,t){this.model=e,this.batch=t}createText(e,t){return new b.a(e,t)}createElement(e,t){return new _.a(e,t)}createDocumentFragment(){return new k.a}cloneElement(e,t=!0){return e._clone(t)}insert(e,t,o=0){if(this._assertWriterUsedCorrectly(),e instanceof b.a&&""==e.data)return;const i=v.a._createAt(t,o);if(e.parent){if(C(e.root,i.root))return void this.move(n.a._createOn(e),i);if(e.root.document)throw new c.a("model-writer-insert-forbidden-move",this);this.remove(e)}const s=i.root.document?i.root.document.version:null,r=new d.a(i,e,s);if(e instanceof b.a&&(r.shouldReceiveAttributes=!0),this.batch.addOperation(r),this.model.applyOperation(r),e instanceof k.a)for(const[t,o]of e.markers){const e=v.a._createAt(o.root,0),s={range:new n.a(o.start._getCombined(e,i),o.end._getCombined(e,i)),usingOperation:!0,affectsData:!0};this.model.markers.has(t)?this.updateMarker(t,s):this.addMarker(t,s)}}insertText(e,t,o,i){t instanceof k.a||t instanceof _.a||t instanceof v.a?this.insert(this.createText(e),t,o):this.insert(this.createText(e,t),o,i)}insertElement(e,t,o,i){t instanceof k.a||t instanceof _.a||t instanceof v.a?this.insert(this.createElement(e),t,o):this.insert(this.createElement(e,t),o,i)}append(e,t){this.insert(e,t,"end")}appendText(e,t,o){t instanceof k.a||t instanceof _.a?this.insert(this.createText(e),t,"end"):this.insert(this.createText(e,t),o,"end")}appendElement(e,t,o){t instanceof k.a||t instanceof _.a?this.insert(this.createElement(e),t,"end"):this.insert(this.createElement(e,t),o,"end")}setAttribute(e,t,o){if(this._assertWriterUsedCorrectly(),o instanceof n.a){const i=o.getMinimalFlatRanges();for(const o of i)P(this,e,t,o)}else O(this,e,t,o)}setAttributes(e,t){for(const[o,i]of Object(j.a)(e))this.setAttribute(o,i,t)}removeAttribute(e,t){if(this._assertWriterUsedCorrectly(),t instanceof n.a){const o=t.getMinimalFlatRanges();for(const t of o)P(this,e,null,t)}else O(this,e,null,t)}clearAttributes(e){this._assertWriterUsedCorrectly();const t=e=>{for(const t of e.getAttributeKeys())this.removeAttribute(t,e)};if(e instanceof n.a)for(const o of e.getItems())t(o);else t(e)}move(e,t,o){if(this._assertWriterUsedCorrectly(),!(e instanceof n.a))throw new c.a("writer-move-invalid-range",this);if(!e.isFlat)throw new c.a("writer-move-range-not-flat",this);const i=v.a._createAt(t,o);if(i.isEqual(e.start))return;if(this._addOperationForAffectedMarkers("move",e),!C(e.root,i.root))throw new c.a("writer-move-different-document",this);const s=e.root.document?e.root.document.version:null,r=new h.a(e.start,e.end.offset-e.start.offset,i,s);this.batch.addOperation(r),this.model.applyOperation(r)}remove(e){this._assertWriterUsedCorrectly();const t=(e instanceof n.a?e:n.a._createOn(e)).getMinimalFlatRanges().reverse();for(const e of t)this._addOperationForAffectedMarkers("move",e),T(e.start,e.end.offset-e.start.offset,this.batch,this.model)}merge(e){this._assertWriterUsedCorrectly();const t=e.nodeBefore,o=e.nodeAfter;if(this._addOperationForAffectedMarkers("merge",e),!(t instanceof _.a))throw new c.a("writer-merge-no-element-before",this);if(!(o instanceof _.a))throw new c.a("writer-merge-no-element-after",this);e.root.document?this._merge(e):this._mergeDetached(e)}createPositionFromPath(e,t,o){return this.model.createPositionFromPath(e,t,o)}createPositionAt(e,t){return this.model.createPositionAt(e,t)}createPositionAfter(e){return this.model.createPositionAfter(e)}createPositionBefore(e){return this.model.createPositionBefore(e)}createRange(e,t){return this.model.createRange(e,t)}createRangeIn(e){return this.model.createRangeIn(e)}createRangeOn(e){return this.model.createRangeOn(e)}createSelection(e,t,o){return this.model.createSelection(e,t,o)}_mergeDetached(e){const t=e.nodeBefore,o=e.nodeAfter;this.move(n.a._createIn(o),v.a._createAt(t,"end")),this.remove(o)}_merge(e){const t=v.a._createAt(e.nodeBefore,"end"),o=v.a._createAt(e.nodeAfter,0),i=e.root.document.graveyard,s=new v.a(i,[0]),r=e.root.document.version,n=new m.a(o,e.nodeAfter.maxOffset,t,s,r);this.batch.addOperation(n),this.model.applyOperation(n)}rename(e,t){if(this._assertWriterUsedCorrectly(),!(e instanceof _.a))throw new c.a("writer-rename-not-element-instance",this);const o=e.root.document?e.root.document.version:null,i=new p.a(v.a._createBefore(e),e.name,t,o);this.batch.addOperation(i),this.model.applyOperation(i)}split(e,t){this._assertWriterUsedCorrectly();let o,i,s=e.parent;if(!s.parent)throw new c.a("writer-split-element-no-parent",this);if(t||(t=s.parent),!e.parent.getAncestors({includeSelf:!0}).includes(t))throw new c.a("writer-split-invalid-limit-element",this);do{const t=s.root.document?s.root.document.version:null,r=s.maxOffset-e.offset,n=f.a.getInsertionPosition(e),a=new f.a(e,r,n,null,t);this.batch.addOperation(a),this.model.applyOperation(a),o||i||(o=s,i=e.parent.nextSibling),s=(e=this.createPositionAfter(e.parent)).parent}while(s!==t);return{position:e,range:new n.a(v.a._createAt(o,"end"),v.a._createAt(i,0))}}wrap(e,t){if(this._assertWriterUsedCorrectly(),!e.isFlat)throw new c.a("writer-wrap-range-not-flat",this);const o=t instanceof _.a?t:new _.a(t);if(o.childCount>0)throw new c.a("writer-wrap-element-not-empty",this);if(null!==o.parent)throw new c.a("writer-wrap-element-attached",this);this.insert(o,e.start);const i=new n.a(e.start.getShiftedBy(1),e.end.getShiftedBy(1));this.move(i,v.a._createAt(o,0))}unwrap(e){if(this._assertWriterUsedCorrectly(),null===e.parent)throw new c.a("writer-unwrap-element-no-parent",this);this.move(n.a._createIn(e),this.createPositionAfter(e)),this.remove(e)}addMarker(e,t){if(this._assertWriterUsedCorrectly(),!t||"boolean"!=typeof t.usingOperation)throw new c.a("writer-addmarker-no-usingoperation",this);const o=t.usingOperation,i=t.range,s=void 0!==t.affectsData&&t.affectsData;if(this.model.markers.has(e))throw new c.a("writer-addmarker-marker-exists",this);if(!i)throw new c.a("writer-addmarker-no-range",this);return o?(A(this,e,null,i,s),this.model.markers.get(e)):this.model.markers._set(e,i,o,s)}updateMarker(e,t){this._assertWriterUsedCorrectly();const o="string"==typeof e?e:e.name,i=this.model.markers.get(o);if(!i)throw new c.a("writer-updatemarker-marker-not-exists",this);if(!t)return void this.model.markers._refresh(i);const s="boolean"==typeof t.usingOperation,r="boolean"==typeof t.affectsData,n=r?t.affectsData:i.affectsData;if(!s&&!t.range&&!r)throw new c.a("writer-updatemarker-wrong-options",this);const a=i.getRange(),l=t.range?t.range:a;s&&t.usingOperation!==i.managedUsingOperations?t.usingOperation?A(this,o,null,l,n):(A(this,o,a,null,n),this.model.markers._set(o,l,void 0,n)):i.managedUsingOperations?A(this,o,a,l,n):this.model.markers._set(o,l,void 0,n)}removeMarker(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?e:e.name;if(!this.model.markers.has(t))throw new c.a("writer-removemarker-no-marker",this);const o=this.model.markers.get(t);if(!o.managedUsingOperations)return void this.model.markers._remove(t);A(this,t,o.getRange(),null,o.affectsData)}setSelection(e,t,o){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(e,t,o)}setSelectionFocus(e,t){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(e,t)}setSelectionAttribute(e,t){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._setSelectionAttribute(e,t);else for(const[t,o]of Object(j.a)(e))this._setSelectionAttribute(t,o)}removeSelectionAttribute(e){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._removeSelectionAttribute(e);else for(const t of e)this._removeSelectionAttribute(t)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(e){this.model.document.selection._restoreGravity(e)}_setSelectionAttribute(e,t){const o=this.model.document.selection;if(o.isCollapsed&&o.anchor.parent.isEmpty){const i=y.a._getStoreAttributeKey(e);this.setAttribute(i,t,o.anchor.parent)}o._setAttribute(e,t)}_removeSelectionAttribute(e){const t=this.model.document.selection;if(t.isCollapsed&&t.anchor.parent.isEmpty){const o=y.a._getStoreAttributeKey(e);this.removeAttribute(o,t.anchor.parent)}t._removeAttribute(e)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new c.a("writer-incorrect-use",this)}_addOperationForAffectedMarkers(e,t){for(const o of this.model.markers){if(!o.managedUsingOperations)continue;const i=o.getRange();let s=!1;if("move"===e)s=t.containsPosition(i.start)||t.start.isEqual(i.start)||t.containsPosition(i.end)||t.end.isEqual(i.end);else{const e=t.nodeBefore,o=t.nodeAfter,r=i.start.parent==e&&i.start.isAtEnd,n=i.end.parent==o&&0==i.end.offset,a=i.end.nodeAfter==o,c=i.start.nodeAfter==o;s=r||n||a||c}s&&this.updateMarker(o.name,{range:i})}}}function P(e,t,o,i){const r=e.model,a=r.document;let c,l,d,u=i.start;for(const e of i.getWalker({shallow:!0}))d=e.item.getAttribute(t),c&&l!=d&&(l!=o&&h(),u=c),c=e.nextPosition,l=d;function h(){const i=new n.a(u,c),d=i.root.document?a.version:null,h=new s.a(i,t,l,o,d);e.batch.addOperation(h),r.applyOperation(h)}c instanceof v.a&&c!=u&&l!=o&&h()}function O(e,t,o,i){const r=e.model,a=r.document,c=i.getAttribute(t);let l,d;if(c!=o){if(i.root===i){const e=i.document?a.version:null;d=new g.a(i,t,c,o,e)}else{l=new n.a(v.a._createBefore(i),e.createPositionAfter(i));const r=l.root.document?a.version:null;d=new s.a(l,t,c,o,r)}e.batch.addOperation(d),r.applyOperation(d)}}function A(e,t,o,i,s){const r=e.model,n=r.document,a=new u.a(t,o,i,r.markers,s,n.version);e.batch.addOperation(a),r.applyOperation(a)}function T(e,t,o,i){let s;if(e.root.document){const o=i.document,r=new v.a(o.graveyard,[0]);s=new h.a(e,t,r,o.version)}else s=new l(e,t);o.addOperation(s),i.applyOperation(s)}function C(e,t){return e===t||e instanceof w&&t instanceof w}var E=o("./packages/ckeditor5-engine/src/model/schema.js");class S{constructor(e){this._markerCollection=e,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size}refreshItem(e){if(this._isInInsertedElement(e.parent))return;this._markRemove(e.parent,e.startOffset,e.offsetSize),this._markInsert(e.parent,e.startOffset,e.offsetSize);const t=n.a._createOn(e);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getRange();this.bufferMarkerChange(e.name,t,t,e.affectsData)}this._cachedChanges=null}bufferOperation(e){switch(e.type){case"insert":if(this._isInInsertedElement(e.position.parent))return;this._markInsert(e.position.parent,e.position.offset,e.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const t of e.range.getItems({shallow:!0}))this._isInInsertedElement(t.parent)||this._markAttribute(t);break;case"remove":case"move":case"reinsert":{if(e.sourcePosition.isEqual(e.targetPosition)||e.sourcePosition.getShiftedBy(e.howMany).isEqual(e.targetPosition))return;const t=this._isInInsertedElement(e.sourcePosition.parent),o=this._isInInsertedElement(e.targetPosition.parent);t||this._markRemove(e.sourcePosition.parent,e.sourcePosition.offset,e.howMany),o||this._markInsert(e.targetPosition.parent,e.getMovedRangeStart().offset,e.howMany);break}case"rename":{if(this._isInInsertedElement(e.position.parent))return;this._markRemove(e.position.parent,e.position.offset,1),this._markInsert(e.position.parent,e.position.offset,1);const t=n.a._createFromPositionAndShift(e.position,1);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getRange();this.bufferMarkerChange(e.name,t,t,e.affectsData)}break}case"split":{const t=e.splitPosition.parent;this._isInInsertedElement(t)||this._markRemove(t,e.splitPosition.offset,e.howMany),this._isInInsertedElement(e.insertionPosition.parent)||this._markInsert(e.insertionPosition.parent,e.insertionPosition.offset,1),e.graveyardPosition&&this._markRemove(e.graveyardPosition.parent,e.graveyardPosition.offset,1);break}case"merge":{const t=e.sourcePosition.parent;this._isInInsertedElement(t.parent)||this._markRemove(t.parent,t.startOffset,1);const o=e.graveyardPosition.parent;this._markInsert(o,e.graveyardPosition.offset,1);const i=e.targetPosition.parent;this._isInInsertedElement(i)||this._markInsert(i,e.targetPosition.offset,t.maxOffset);break}}this._cachedChanges=null}bufferMarkerChange(e,t,o,i){const s=this._changedMarkers.get(e);s?(s.newRange=o,s.affectsData=i,null==s.oldRange&&null==s.newRange&&this._changedMarkers.delete(e)):this._changedMarkers.set(e,{oldRange:t,newRange:o,affectsData:i})}getMarkersToRemove(){const e=[];for(const[t,o]of this._changedMarkers)null!=o.oldRange&&e.push({name:t,range:o.oldRange});return e}getMarkersToAdd(){const e=[];for(const[t,o]of this._changedMarkers)null!=o.newRange&&e.push({name:t,range:o.newRange});return e}getChangedMarkers(){return Array.from(this._changedMarkers).map(e=>({name:e[0],data:{oldRange:e[1].oldRange,newRange:e[1].newRange}}))}hasDataChanges(){for(const[,e]of this._changedMarkers)if(e.affectsData)return!0;return this._changesInElement.size>0}getChanges(e={includeChangesInGraveyard:!1}){if(this._cachedChanges)return e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();let t=[];for(const e of this._changesInElement.keys()){const o=this._changesInElement.get(e).sort((e,t)=>e.offset===t.offset?e.type!=t.type?"remove"==e.type?-1:1:0:e.offset<t.offset?-1:1),i=this._elementSnapshots.get(e),s=R(e.getChildren()),r=M(i.length,o);let a=0,c=0;for(const o of r)if("i"===o)t.push(this._getInsertDiff(e,a,s[a].name)),a++;else if("r"===o)t.push(this._getRemoveDiff(e,a,i[c].name)),c++;else if("a"===o){const o=s[a].attributes,r=i[c].attributes;let l;if("$text"==s[a].name)l=new n.a(v.a._createAt(e,a),v.a._createAt(e,a+1));else{const t=e.offsetToIndex(a);l=new n.a(v.a._createAt(e,a),v.a._createAt(e.getChild(t),0))}t.push(...this._getAttributesDiff(l,r,o)),a++,c++}else a++,c++}t.sort((e,t)=>e.position.root!=t.position.root?e.position.root.rootName<t.position.root.rootName?-1:1:e.position.isEqual(t.position)?e.changeCount-t.changeCount:e.position.isBefore(t.position)?-1:1);for(let e=1,o=0;e<t.length;e++){const i=t[o],s=t[e],r="remove"==i.type&&"remove"==s.type&&"$text"==i.name&&"$text"==s.name&&i.position.isEqual(s.position),n="insert"==i.type&&"insert"==s.type&&"$text"==i.name&&"$text"==s.name&&i.position.parent==s.position.parent&&i.position.offset+i.length==s.position.offset,a="attribute"==i.type&&"attribute"==s.type&&i.position.parent==s.position.parent&&i.range.isFlat&&s.range.isFlat&&i.position.offset+i.length==s.position.offset&&i.attributeKey==s.attributeKey&&i.attributeOldValue==s.attributeOldValue&&i.attributeNewValue==s.attributeNewValue;r||n||a?(i.length++,a&&(i.range.end=i.range.end.getShiftedBy(1)),t[e]=null):o=e}t=t.filter(e=>e);for(const e of t)delete e.changeCount,"attribute"==e.type&&(delete e.position,delete e.length);return this._changeCount=0,this._cachedChangesWithGraveyard=t.slice(),this._cachedChanges=t.filter(N),e.includeChangesInGraveyard?this._cachedChangesWithGraveyard:this._cachedChanges}reset(){this._changesInElement.clear(),this._elementSnapshots.clear(),this._changedMarkers.clear(),this._cachedChanges=null}_markInsert(e,t,o){const i={type:"insert",offset:t,howMany:o,count:this._changeCount++};this._markChange(e,i)}_markRemove(e,t,o){const i={type:"remove",offset:t,howMany:o,count:this._changeCount++};this._markChange(e,i),this._removeAllNestedChanges(e,t,o)}_markAttribute(e){const t={type:"attribute",offset:e.startOffset,howMany:e.offsetSize,count:this._changeCount++};this._markChange(e.parent,t)}_markChange(e,t){this._makeSnapshot(e);const o=this._getChangesForElement(e);this._handleChange(t,o),o.push(t);for(let e=0;e<o.length;e++)o[e].howMany<1&&(o.splice(e,1),e--)}_getChangesForElement(e){let t;return this._changesInElement.has(e)?t=this._changesInElement.get(e):(t=[],this._changesInElement.set(e,t)),t}_makeSnapshot(e){this._elementSnapshots.has(e)||this._elementSnapshots.set(e,R(e.getChildren()))}_handleChange(e,t){e.nodesToHandle=e.howMany;for(const o of t){const i=e.offset+e.howMany,s=o.offset+o.howMany;if("insert"==e.type&&("insert"==o.type&&(e.offset<=o.offset?o.offset+=e.howMany:e.offset<s&&(o.howMany+=e.nodesToHandle,e.nodesToHandle=0)),"remove"==o.type&&e.offset<o.offset&&(o.offset+=e.howMany),"attribute"==o.type))if(e.offset<=o.offset)o.offset+=e.howMany;else if(e.offset<s){const s=o.howMany;o.howMany=e.offset-o.offset,t.unshift({type:"attribute",offset:i,howMany:s-o.howMany,count:this._changeCount++})}if("remove"==e.type){if("insert"==o.type)if(i<=o.offset)o.offset-=e.howMany;else if(i<=s)if(e.offset<o.offset){const t=i-o.offset;o.offset=e.offset,o.howMany-=t,e.nodesToHandle-=t}else o.howMany-=e.nodesToHandle,e.nodesToHandle=0;else if(e.offset<=o.offset)e.nodesToHandle-=o.howMany,o.howMany=0;else if(e.offset<s){const t=s-e.offset;o.howMany-=t,e.nodesToHandle-=t}if("remove"==o.type&&(i<=o.offset?o.offset-=e.howMany:e.offset<o.offset&&(e.nodesToHandle+=o.howMany,o.howMany=0)),"attribute"==o.type)if(i<=o.offset)o.offset-=e.howMany;else if(e.offset<o.offset){const t=i-o.offset;o.offset=e.offset,o.howMany-=t}else if(e.offset<s)if(i<=s){const i=o.howMany;o.howMany=e.offset-o.offset;const s=i-o.howMany-e.nodesToHandle;t.unshift({type:"attribute",offset:e.offset,howMany:s,count:this._changeCount++})}else o.howMany-=s-e.offset}if("attribute"==e.type){if("insert"==o.type)if(e.offset<o.offset&&i>o.offset){if(i>s){const e={type:"attribute",offset:s,howMany:i-s,count:this._changeCount++};this._handleChange(e,t),t.push(e)}e.nodesToHandle=o.offset-e.offset,e.howMany=e.nodesToHandle}else e.offset>=o.offset&&e.offset<s&&(i>s?(e.nodesToHandle=i-s,e.offset=s):e.nodesToHandle=0);if("remove"==o.type&&e.offset<o.offset&&i>o.offset){const s={type:"attribute",offset:o.offset,howMany:i-o.offset,count:this._changeCount++};this._handleChange(s,t),t.push(s),e.nodesToHandle=o.offset-e.offset,e.howMany=e.nodesToHandle}"attribute"==o.type&&(e.offset>=o.offset&&i<=s?(e.nodesToHandle=0,e.howMany=0,e.offset=0):e.offset<=o.offset&&i>=s&&(o.howMany=0))}}e.howMany=e.nodesToHandle,delete e.nodesToHandle}_getInsertDiff(e,t,o){return{type:"insert",position:v.a._createAt(e,t),name:o,length:1,changeCount:this._changeCount++}}_getRemoveDiff(e,t,o){return{type:"remove",position:v.a._createAt(e,t),name:o,length:1,changeCount:this._changeCount++}}_getAttributesDiff(e,t,o){const i=[];o=new Map(o);for(const[s,r]of t){const t=o.has(s)?o.get(s):null;t!==r&&i.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:s,attributeOldValue:r,attributeNewValue:t,changeCount:this._changeCount++}),o.delete(s)}for(const[t,s]of o)i.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:t,attributeOldValue:null,attributeNewValue:s,changeCount:this._changeCount++});return i}_isInInsertedElement(e){const t=e.parent;if(!t)return!1;const o=this._changesInElement.get(t),i=e.startOffset;if(o)for(const e of o)if("insert"==e.type&&i>=e.offset&&i<e.offset+e.howMany)return!0;return this._isInInsertedElement(t)}_removeAllNestedChanges(e,t,o){const i=new n.a(v.a._createAt(e,t),v.a._createAt(e,t+o));for(const e of i.getItems({shallow:!0}))e.is("element")&&(this._elementSnapshots.delete(e),this._changesInElement.delete(e),this._removeAllNestedChanges(e,0,e.maxOffset))}}function R(e){const t=[];for(const o of e)if(o.is("$text"))for(let e=0;e<o.data.length;e++)t.push({name:"$text",attributes:new Map(o.getAttributes())});else t.push({name:o.name,attributes:new Map(o.getAttributes())});return t}function M(e,t){const o=[];let i=0,s=0;for(const e of t){if(e.offset>i){for(let t=0;t<e.offset-i;t++)o.push("e");s+=e.offset-i}if("insert"==e.type){for(let t=0;t<e.howMany;t++)o.push("i");i=e.offset+e.howMany}else if("remove"==e.type){for(let t=0;t<e.howMany;t++)o.push("r");i=e.offset,s+=e.howMany}else o.push(..."a".repeat(e.howMany).split("")),i=e.offset+e.howMany,s+=e.howMany}if(s<e)for(let t=0;t<e-s-i;t++)o.push("e");return o}function N(e){const t=e.position&&"$graveyard"==e.position.root.rootName,o=e.range&&"$graveyard"==e.range.root.rootName;return!t&&!o}class I{constructor(){this._operations=[],this._undoPairs=new Map,this._undoneOperations=new Set}addOperation(e){this._operations.includes(e)||this._operations.push(e)}getOperations(e=Number.NEGATIVE_INFINITY,t=Number.POSITIVE_INFINITY){const o=[];for(const i of this._operations)i.baseVersion>=e&&i.baseVersion<t&&o.push(i);return o}getOperation(e){for(const t of this._operations)if(t.baseVersion==e)return t}setOperationAsUndone(e,t){this._undoPairs.set(t,e),this._undoneOperations.add(e)}isUndoingOperation(e){return this._undoPairs.has(e)}isUndoneOperation(e){return this._undoneOperations.has(e)}getUndoneOperation(e){return this._undoPairs.get(e)}}var z=o("./packages/ckeditor5-utils/src/collection.js"),V=o("./packages/ckeditor5-utils/src/emittermixin.js"),D=o("./packages/ckeditor5-utils/src/mix.js");function B(e,t){return!!(o=e.charAt(t-1))&&1==o.length&&/[\ud800-\udbff]/.test(o)&&function(e){return!!e&&1==e.length&&/[\udc00-\udfff]/.test(e)}(e.charAt(t));var o}function F(e,t){return!!(o=e.charAt(t))&&1==o.length&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(o);var o}var L=o("./node_modules/lodash-es/clone.js");class W{constructor(e){this.model=e,this.version=0,this.history=new I(this),this.selection=new y.a(this),this.roots=new z.a({idProperty:"rootName"}),this.differ=new S(e.markers),this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root","$graveyard"),this.listenTo(e,"applyOperation",(e,t)=>{const o=t[0];if(o.isDocumentOperation&&o.baseVersion!==this.version)throw new c.a("model-document-applyoperation-wrong-version",this,{operation:o})},{priority:"highest"}),this.listenTo(e,"applyOperation",(e,t)=>{const o=t[0];o.isDocumentOperation&&this.differ.bufferOperation(o)},{priority:"high"}),this.listenTo(e,"applyOperation",(e,t)=>{const o=t[0];o.isDocumentOperation&&(this.version++,this.history.addOperation(o))},{priority:"low"}),this.listenTo(this.selection,"change",()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0}),this.listenTo(e.markers,"update",(e,t,o,i)=>{this.differ.bufferMarkerChange(t.name,o,i,t.affectsData),null===o&&t.on("change",(e,o)=>{this.differ.bufferMarkerChange(t.name,o,t.getRange(),t.affectsData)})})}get graveyard(){return this.getRoot("$graveyard")}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new c.a("model-document-createroot-name-exists",this,{name:t});const o=new w(this,e,t);return this.roots.add(o),o}destroy(){this.selection.destroy(),this.stopListening()}getRoot(e="main"){return this.roots.get(e)}getRootNames(){return Array.from(this.roots,e=>e.rootName).filter(e=>"$graveyard"!=e)}registerPostFixer(e){this._postFixers.add(e)}toJSON(){const e=Object(L.a)(this);return e.selection="[engine.model.DocumentSelection]",e.model="[engine.model.Model]",e}_handleChangeBlock(e){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(e),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",e.batch):this.fire("change",e.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){for(const e of this.roots)if(e!==this.graveyard)return e;return this.graveyard}_getDefaultRange(){const e=this._getDefaultRoot(),t=this.model,o=t.schema,i=t.createPositionFromPath(e,[0]);return o.getNearestSelectionRange(i)||t.createRange(i)}_validateSelectionRange(e){return H(e.start)&&H(e.end)}_callPostFixers(e){let t=!1;do{for(const o of this._postFixers)if(this.selection.refresh(),t=o(e),t)break}while(t)}}function H(e){const t=e.textNode;if(t){const o=t.data,i=e.offset-t.startOffset;return!B(o,i)&&!F(o,i)}return!0}Object(D.a)(W,V.c);var q=o("./packages/ckeditor5-engine/src/model/liverange.js");class ${constructor(){this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(e){const t=e instanceof U?e.name:e;return this._markers.has(t)}get(e){return this._markers.get(e)||null}_set(e,t,o=!1,i=!1){const s=e instanceof U?e.name:e;if(s.includes(","))throw new c.a("markercollection-incorrect-marker-name",this);const r=this._markers.get(s);if(r){const e=r.getRange();let n=!1;return e.isEqual(t)||(r._attachLiveRange(q.a.fromRange(t)),n=!0),o!=r.managedUsingOperations&&(r._managedUsingOperations=o,n=!0),"boolean"==typeof i&&i!=r.affectsData&&(r._affectsData=i,n=!0),n&&this.fire("update:"+s,r,e,t),r}const n=q.a.fromRange(t),a=new U(s,n,o,i);return this._markers.set(s,a),this.fire("update:"+s,a,null,t),a}_remove(e){const t=e instanceof U?e.name:e,o=this._markers.get(t);return!!o&&(this._markers.delete(t),this.fire("update:"+t,o,o.getRange(),null),this._destroyMarker(o),!0)}_refresh(e){const t=e instanceof U?e.name:e,o=this._markers.get(t);if(!o)throw new c.a("markercollection-refresh-marker-not-exists",this);const i=o.getRange();this.fire("update:"+t,o,i,i,o.managedUsingOperations,o.affectsData)}*getMarkersAtPosition(e){for(const t of this)t.getRange().containsPosition(e)&&(yield t)}*getMarkersIntersectingRange(e){for(const t of this)null!==t.getRange().getIntersection(e)&&(yield t)}destroy(){for(const e of this._markers.values())this._destroyMarker(e);this._markers=null,this.stopListening()}*getMarkersGroup(e){for(const t of this._markers.values())t.name.startsWith(e+":")&&(yield t)}_destroyMarker(e){e.stopListening(),e._detachLiveRange()}}Object(D.a)($,V.c);class U{constructor(e,t,o,i){this.name=e,this._liveRange=this._attachLiveRange(t),this._managedUsingOperations=o,this._affectsData=i}get managedUsingOperations(){if(!this._liveRange)throw new c.a("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new c.a("marker-destroyed",this);return this._affectsData}getStart(){if(!this._liveRange)throw new c.a("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new c.a("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new c.a("marker-destroyed",this);return this._liveRange.toRange()}is(e){return"marker"===e||"model:marker"===e}_attachLiveRange(e){return this._liveRange&&this._detachLiveRange(),e.delegate("change:range").to(this),e.delegate("change:content").to(this),this._liveRange=e,e}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}Object(D.a)(U,V.c);var K=o("./packages/ckeditor5-utils/src/observablemixin.js"),G=o("./packages/ckeditor5-engine/src/model/selection.js"),J=o("./packages/ckeditor5-engine/src/model/operation/operationfactory.js"),Y=o("./packages/ckeditor5-engine/src/model/liveposition.js");class X{constructor(e,t,o){this.model=e,this.writer=t,this.position=o,this.canMergeWith=new Set([this.position.parent]),this.schema=e.schema,this._documentFragment=t.createDocumentFragment(),this._documentFragmentPosition=t.createPositionAt(this._documentFragment,0),this._firstNode=null,this._lastNode=null,this._lastAutoParagraph=null,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}handleNodes(e){for(const t of Array.from(e))this._handleNode(t);this._insertPartialFragment(),this._lastAutoParagraph&&this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),this._mergeOnRight(),this.schema.removeDisallowedAttributes(this._filterAttributesOf,this.writer),this._filterAttributesOf=[]}_updateLastNodeFromAutoParagraph(e){const t=this.writer.createPositionAfter(this._lastNode),o=this.writer.createPositionAfter(e);if(o.isAfter(t)){if(this._lastNode=e,this.position.parent!=e||!this.position.isAtEnd)throw new c.a("insertcontent-invalid-insertion-position",this);this.position=o,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this.nodeToSelect?n.a._createOn(this.nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new n.a(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(e){if(this.schema.isObject(e))return void this._handleObject(e);let t=this._checkAndAutoParagraphToAllowedPosition(e);t||(t=this._checkAndSplitToAllowedPosition(e),t)?(this._appendToFragment(e),this._firstNode||(this._firstNode=e),this._lastNode=e):this._handleDisallowedNode(e)}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const e=Y.a.fromPosition(this.position,"toNext");this._setAffectedBoundaries(this.position),this._documentFragment.getChild(0)==this._firstNode&&(this.writer.insert(this._firstNode,this.position),this._mergeOnLeft(),this.position=e.toPosition()),this._documentFragment.isEmpty||this.writer.insert(this._documentFragment,this.position),this._documentFragmentPosition=this.writer.createPositionAt(this._documentFragment,0),this.position=e.toPosition(),e.detach()}_handleObject(e){this._checkAndSplitToAllowedPosition(e)?this._appendToFragment(e):this._tryAutoparagraphing(e)}_handleDisallowedNode(e){e.is("element")?this.handleNodes(e.getChildren()):this._tryAutoparagraphing(e)}_appendToFragment(e){if(!this.schema.checkChild(this.position,e))throw new c.a("insertcontent-wrong-position",this,{node:e,position:this.position});this.writer.insert(e,this._documentFragmentPosition),this._documentFragmentPosition=this._documentFragmentPosition.getShiftedBy(e.offsetSize),this.schema.isObject(e)&&!this.schema.checkChild(this.position,"$text")?this.nodeToSelect=e:this.nodeToSelect=null,this._filterAttributesOf.push(e)}_setAffectedBoundaries(e){this._affectedStart||(this._affectedStart=Y.a.fromPosition(e,"toPrevious")),this._affectedEnd&&!this._affectedEnd.isBefore(e)||(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=Y.a.fromPosition(e,"toNext"))}_mergeOnLeft(){const e=this._firstNode;if(!(e instanceof _.a))return;if(!this._canMergeLeft(e))return;const t=Y.a._createBefore(e);t.stickiness="toNext";const o=Y.a.fromPosition(this.position,"toNext");this._affectedStart.isEqual(t)&&(this._affectedStart.detach(),this._affectedStart=Y.a._createAt(t.nodeBefore,"end","toPrevious")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.isEqual(this._affectedEnd)&&this._firstNode===this._lastNode&&(this._affectedEnd.detach(),this._affectedEnd=Y.a._createAt(t.nodeBefore,"end","toNext")),this.position=o.toPosition(),o.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_mergeOnRight(){const e=this._lastNode;if(!(e instanceof _.a))return;if(!this._canMergeRight(e))return;const t=Y.a._createAfter(e);if(t.stickiness="toNext",!this.position.isEqual(t))throw new c.a("insertcontent-invalid-insertion-position",this);this.position=v.a._createAt(t.nodeBefore,"end");const o=Y.a.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(t)&&(this._affectedEnd.detach(),this._affectedEnd=Y.a._createAt(t.nodeBefore,"end","toNext")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.getShiftedBy(-1).isEqual(this._affectedStart)&&this._firstNode===this._lastNode&&(this._affectedStart.detach(),this._affectedStart=Y.a._createAt(t.nodeBefore,0,"toPrevious")),this.position=o.toPosition(),o.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_canMergeLeft(e){const t=e.previousSibling;return t instanceof _.a&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(t,e)}_canMergeRight(e){const t=e.nextSibling;return t instanceof _.a&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(e,t)}_tryAutoparagraphing(e){const t=this.writer.createElement("paragraph");this._getAllowedIn(this.position.parent,t)&&this.schema.checkChild(t,e)&&(t._appendChild(e),this._handleNode(t))}_checkAndAutoParagraphToAllowedPosition(e){if(this.schema.checkChild(this.position.parent,e))return!0;if(!this.schema.checkChild(this.position.parent,"paragraph")||!this.schema.checkChild("paragraph",e))return!1;this._insertPartialFragment();const t=this.writer.createElement("paragraph");return this.writer.insert(t,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=t,this.position=this.writer.createPositionAt(t,0),!0}_checkAndSplitToAllowedPosition(e){const t=this._getAllowedIn(this.position.parent,e);if(!t)return!1;for(t!=this.position.parent&&this._insertPartialFragment();t!=this.position.parent;)if(this.position.isAtStart){const e=this.position.parent;this.position=this.writer.createPositionBefore(e),e.isEmpty&&e.parent===t&&this.writer.remove(e)}else if(this.position.isAtEnd)this.position=this.writer.createPositionAfter(this.position.parent);else{const e=this.writer.createPositionAfter(this.position.parent);this._setAffectedBoundaries(this.position),this.writer.split(this.position),this.position=e,this.canMergeWith.add(this.position.nodeAfter)}return!0}_getAllowedIn(e,t){return this.schema.checkChild(e,t)?e:this.schema.isLimit(e)?null:this._getAllowedIn(e.parent,t)}}function Z(e,t,o={}){if(t.isCollapsed)return;const i=t.getFirstRange();if("$graveyard"==i.root.rootName)return;const s=e.schema;e.change(e=>{if(!o.doNotResetEntireContent&&function(e,t){const o=e.getLimitElement(t);if(!t.containsEntireContent(o))return!1;const i=t.getFirstRange();if(i.start.parent==i.end.parent)return!1;return e.checkChild(o,"paragraph")}(s,t))return void function(e,t){const o=e.model.schema.getLimitElement(t);e.remove(e.createRangeIn(o)),ee(e,e.createPositionAt(o,0),t)}(e,t);const[r,n]=function(e){const t=e.root.document.model,o=e.start;let i=e.end;if(t.hasContent(e,{ignoreMarkers:!0})){const o=function(e){const t=e.parent,o=t.root.document.model.schema,i=t.getAncestors({parentFirst:!0,includeSelf:!0});for(const e of i){if(o.isLimit(e))return null;if(o.isBlock(e))return e}}(i);if(o&&i.isTouching(t.createPositionAt(o,0))){const o=t.createSelection(e);t.modifySelection(o,{direction:"backward"});const s=o.getLastPosition(),r=t.createRange(s,i);t.hasContent(r,{ignoreMarkers:!0})||(i=s)}}return[Y.a.fromPosition(o,"toPrevious"),Y.a.fromPosition(i,"toNext")]}(i);r.isTouching(n)||e.remove(e.createRange(r,n)),o.leaveUnmerged||(!function(e,t,o){const i=e.model;if(!Q(e.model.schema,t,o))return;const[s,r]=function(e,t){const o=e.getAncestors(),i=t.getAncestors();let s=0;for(;o[s]&&o[s]==i[s];)s++;return[o[s],i[s]]}(t,o);if(!s||!r)return;!i.hasContent(s,{ignoreMarkers:!0})&&i.hasContent(r,{ignoreMarkers:!0})?function e(t,o,i,s){const r=o.parent,n=i.parent;if(r==s||n==s)return;o=t.createPositionAfter(r),(i=t.createPositionBefore(n)).isEqual(o)||t.insert(r,i);for(;o.parent.isEmpty;){const e=o.parent;o=t.createPositionBefore(e),t.remove(e)}if(i=t.createPositionBefore(n),function(e,t){const o=t.nodeBefore,i=t.nodeAfter;o.name!=i.name&&e.rename(o,i.name);e.clearAttributes(o),e.setAttributes(Object.fromEntries(i.getAttributes()),o),e.merge(t)}(t,i),!Q(t.model.schema,o,i))return;e(t,o,i,s)}(e,t,o,s.parent):function e(t,o,i,s){const r=o.parent,n=i.parent;if(r==s||n==s)return;o=t.createPositionAfter(r),(i=t.createPositionBefore(n)).isEqual(o)||t.insert(n,o);t.merge(o);for(;i.parent.isEmpty;){const e=i.parent;i=t.createPositionBefore(e),t.remove(e)}if(!Q(t.model.schema,o,i))return;e(t,o,i,s)}(e,t,o,s.parent)}(e,r,n),s.removeDisallowedAttributes(r.parent.getChildren(),e)),te(e,t,r),!o.doNotAutoparagraph&&function(e,t){const o=e.checkChild(t,"$text"),i=e.checkChild(t,"paragraph");return!o&&i}(s,r)&&ee(e,r,t),r.detach(),n.detach()})}function Q(e,t,o){const i=t.parent,s=o.parent;return i!=s&&(!e.isLimit(i)&&!e.isLimit(s)&&function(e,t,o){const i=new n.a(e,t);for(const e of i.getWalker())if(o.isLimit(e.item))return!1;return!0}(t,o,e))}function ee(e,t,o){const i=e.createElement("paragraph");e.insert(i,t),te(e,o,e.createPositionAt(i,0))}function te(e,t,o){t instanceof y.a?e.setSelection(o):t.setTo(o)}var oe=o("./packages/ckeditor5-engine/src/model/treewalker.js");function ie(e,t){const{isForward:o,walker:i,unit:s,schema:r}=e,{type:n,item:a,nextPosition:c}=t;if("text"==n)return"word"===e.unit?function(e,t){let o=e.position.textNode;if(o){let i=e.position.offset-o.startOffset;for(;!re(o.data,i,t)&&!ne(o,i,t);){e.next();const s=t?e.position.nodeAfter:e.position.nodeBefore;if(s&&s.is("$text")){const i=s.data.charAt(t?0:s.data.length-1);' ,.?!:;"-()'.includes(i)||(e.next(),o=e.position.textNode)}i=e.position.offset-o.startOffset}}return e.position}(i,o):function(e,t){const o=e.position.textNode;if(o){const i=o.data;let s=e.position.offset-o.startOffset;for(;B(i,s)||"character"==t&&F(i,s);)e.next(),s=e.position.offset-o.startOffset}return e.position}(i,s);if(n==(o?"elementStart":"elementEnd")){if(r.isSelectable(a))return v.a._createAt(a,o?"after":"before");if(r.checkChild(c,"$text"))return c}else{if(r.isLimit(a))return void i.skip(()=>!0);if(r.checkChild(c,"$text"))return c}}function se(e,t){const o=e.root,i=v.a._createAt(o,t?"end":0);return t?new n.a(e,i):new n.a(i,e)}function re(e,t,o){const i=t+(o?0:-1);return' ,.?!:;"-()'.includes(e.charAt(i))}function ne(e,t,o){return t===(o?e.endOffset:0)}function ae(e,t){const o=[];Array.from(e.getItems({direction:"backward"})).map(e=>t.createRangeOn(e)).filter(t=>(t.start.isAfter(e.start)||t.start.isEqual(e.start))&&(t.end.isBefore(e.end)||t.end.isEqual(e.end))).forEach(e=>{o.push(e.start.parent),t.remove(e)}),o.forEach(e=>{let o=e;for(;o.parent&&o.isEmpty;){const e=t.createRangeOn(o);o=o.parent,t.remove(e)}})}function ce(e){e.document.registerPostFixer(t=>function(e,t){const o=t.document.selection,i=t.schema,s=[];let r=!1;for(const e of o.getRanges()){const t=le(e,i);t&&!t.isEqual(e)?(s.push(t),r=!0):s.push(e)}r&&e.setSelection(function(e){const t=[];t.push(e.shift());for(const o of e){const e=t.pop();if(o.isEqual(e))t.push(e);else if(o.isIntersecting(e)){const i=e.start.isAfter(o.start)?o.start:e.start,s=e.end.isAfter(o.end)?e.end:o.end,r=new n.a(i,s);t.push(r)}else t.push(e),t.push(o)}return t}(s),{backward:o.isBackward})}(t,e))}function le(e,t){return e.isCollapsed?function(e,t){const o=e.start,i=t.getNearestSelectionRange(o);if(!i){const e=o.getAncestors().reverse().find(e=>t.isObject(e));return e?n.a._createOn(e):null}if(!i.isCollapsed)return i;const s=i.start;if(o.isEqual(s))return null;return new n.a(s)}(e,t):function(e,t){const{start:o,end:i}=e,s=t.checkChild(o,"$text"),r=t.checkChild(i,"$text"),a=t.getLimitElement(o),c=t.getLimitElement(i);if(a===c){if(s&&r)return null;if(function(e,t,o){const i=e.nodeAfter&&!o.isLimit(e.nodeAfter)||o.checkChild(e,"$text"),s=t.nodeBefore&&!o.isLimit(t.nodeBefore)||o.checkChild(t,"$text");return i||s}(o,i,t)){const e=o.nodeAfter&&t.isSelectable(o.nodeAfter)?null:t.getNearestSelectionRange(o,"forward"),s=i.nodeBefore&&t.isSelectable(i.nodeBefore)?null:t.getNearestSelectionRange(i,"backward"),r=e?e.start:o,a=s?s.end:i;return new n.a(r,a)}}const l=a&&!a.is("rootElement"),d=c&&!c.is("rootElement");if(l||d){const e=o.nodeAfter&&i.nodeBefore&&o.nodeAfter.parent===i.nodeBefore.parent,s=l&&(!e||!ue(o.nodeAfter,t)),r=d&&(!e||!ue(i.nodeBefore,t));let u=o,h=i;return s&&(u=v.a._createBefore(de(a,t))),r&&(h=v.a._createAfter(de(c,t))),new n.a(u,h)}return null}(e,t)}function de(e,t){let o=e,i=o;for(;t.isLimit(i)&&i.parent;)o=i,i=i.parent;return o}function ue(e,t){return e&&t.isSelectable(e)}var he=o("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.js");class pe{constructor(){this.markers=new $,this.document=new W(this),this.schema=new E.b,this._pendingChanges=[],this._currentWriter=null,["insertContent","deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach(e=>this.decorate(e)),this.on("applyOperation",(e,t)=>{t[0]._validate()},{priority:"highest"}),this.schema.register("$root",{isLimit:!0}),this.schema.register("$block",{allowIn:"$root",isBlock:!0}),this.schema.register("$text",{allowIn:"$block",isInline:!0,isContent:!0}),this.schema.register("$clipboardHolder",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$documentFragment",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$marker"),this.schema.addChildCheck((e,t)=>{if("$marker"===t.name)return!0}),ce(this),this.document.registerPostFixer(he.a)}change(e){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new i,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(e){c.a.rethrowUnexpectedError(e,this)}}enqueueChange(e,t){try{"string"==typeof e?e=new i(e):"function"==typeof e&&(t=e,e=new i),this._pendingChanges.push({batch:e,callback:t}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(e){c.a.rethrowUnexpectedError(e,this)}}applyOperation(e){e._execute()}insertContent(e,t,o){return function(e,t,o,i){return e.change(s=>{let r;r=o?o instanceof G.a||o instanceof y.a?o:s.createSelection(o,i):e.document.selection,r.isCollapsed||e.deleteContent(r,{doNotAutoparagraph:!0});const n=new X(e,s,r.anchor);let a;a=t.is("documentFragment")?t.getChildren():[t],n.handleNodes(a);const c=n.getSelectionRange();c&&(r instanceof y.a?s.setSelection(c):r.setTo(c));const l=n.getAffectedRange()||e.createRange(r.anchor);return n.destroy(),l})}(this,e,t,o)}deleteContent(e,t){Z(this,e,t)}modifySelection(e,t){!function(e,t,o={}){const i=e.schema,s="backward"!=o.direction,r=o.unit?o.unit:"character",n=t.focus,a=new oe.a({boundaries:se(n,s),singleCharacters:!0,direction:s?"forward":"backward"}),c={walker:a,schema:i,isForward:s,unit:r};let l;for(;l=a.next();){if(l.done)return;const o=ie(c,l.value);if(o)return void(t instanceof y.a?e.change(e=>{e.setSelectionFocus(o)}):t.setFocus(o))}}(this,e,t)}getSelectedContent(e){return function(e,t){return e.change(e=>{const o=e.createDocumentFragment(),i=t.getFirstRange();if(!i||i.isCollapsed)return o;const s=i.start.root,r=i.start.getCommonPath(i.end),n=s.getNodeByPath(r);let a;a=i.start.parent==i.end.parent?i:e.createRange(e.createPositionAt(n,i.start.path[r.length]),e.createPositionAt(n,i.end.path[r.length]+1));const c=a.end.offset-a.start.offset;for(const t of a.getItems({shallow:!0}))t.is("$textProxy")?e.appendText(t.data,t.getAttributes(),o):e.append(e.cloneElement(t,!0),o);if(a!=i){const t=i._getTransformedByMove(a.start,e.createPositionAt(o,0),c)[0],s=e.createRange(e.createPositionAt(o,0),t.start);ae(e.createRange(t.end,e.createPositionAt(o,"end")),e),ae(s,e)}return o})}(this,e)}hasContent(e,t={}){const o=e instanceof _.a?n.a._createIn(e):e;if(o.isCollapsed)return!1;const{ignoreWhitespaces:i=!1,ignoreMarkers:s=!1}=t;if(!s)for(const e of this.markers.getMarkersIntersectingRange(o))if(e.affectsData)return!0;for(const e of o.getItems())if(this.schema.isContent(e)){if(!e.is("$textProxy"))return!0;if(!i)return!0;if(-1!==e.data.search(/\S/))return!0}return!1}createPositionFromPath(e,t,o){return new v.a(e,t,o)}createPositionAt(e,t){return v.a._createAt(e,t)}createPositionAfter(e){return v.a._createAfter(e)}createPositionBefore(e){return v.a._createBefore(e)}createRange(e,t){return new n.a(e,t)}createRangeIn(e){return n.a._createIn(e)}createRangeOn(e){return n.a._createOn(e)}createSelection(e,t,o){return new G.a(e,t,o)}createBatch(e){return new i(e)}createOperationFromJSON(e){return J.a.fromJSON(e,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const e=[];for(this.fire("_beforeChanges");this._pendingChanges.length;){const t=this._pendingChanges[0].batch;this._currentWriter=new x(this,t);const o=this._pendingChanges[0].callback(this._currentWriter);e.push(o),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}return this.fire("_afterChanges"),e}}Object(D.a)(pe,K.a)},"./packages/ckeditor5-engine/src/model/node.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return n}));var i=o("./packages/ckeditor5-utils/src/tomap.js"),s=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),r=o("./packages/ckeditor5-utils/src/comparearrays.js");o("./packages/ckeditor5-utils/src/version.js");class n{constructor(e){this.parent=null,this._attrs=Object(i.a)(e)}get index(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildIndex(this)))throw new s.a("model-node-not-found-in-parent",this);return e}get startOffset(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildStartOffset(this)))throw new s.a("model-node-not-found-in-parent",this);return e}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let o=e.includeSelf?this:this.parent;for(;o;)t[e.parentFirst?"push":"unshift"](o),o=o.parent;return t}getCommonAncestor(e,t={}){const o=this.getAncestors(t),i=e.getAncestors(t);let s=0;for(;o[s]==i[s]&&o[s];)s++;return 0===s?null:o[s-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),o=e.getPath(),i=Object(r.a)(t,o);switch(i){case"prefix":return!0;case"extension":return!1;default:return t[i]<o[i]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}hasAttribute(e){return this._attrs.has(e)}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}toJSON(){const e={};return this._attrs.size&&(e.attributes=Array.from(this._attrs).reduce((e,t)=>(e[t[0]]=t[1],e),{})),e}is(e){return"node"===e||"model:node"===e}_clone(){return new n(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(e,t){this._attrs.set(e,t)}_setAttributesTo(e){this._attrs=Object(i.a)(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}}},"./packages/ckeditor5-engine/src/model/nodelist.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-engine/src/model/node.js"),s=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class r{constructor(e){this._nodes=[],e&&this._insertNodes(0,e)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce((e,t)=>e+t.offsetSize,0)}getNode(e){return this._nodes[e]||null}getNodeIndex(e){const t=this._nodes.indexOf(e);return-1==t?null:t}getNodeStartOffset(e){const t=this.getNodeIndex(e);return null===t?null:this._nodes.slice(0,t).reduce((e,t)=>e+t.offsetSize,0)}indexToOffset(e){if(e==this._nodes.length)return this.maxOffset;const t=this._nodes[e];if(!t)throw new s.a("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(t)}offsetToIndex(e){let t=0;for(const o of this._nodes){if(e>=t&&e<t+o.offsetSize)return this.getNodeIndex(o);t+=o.offsetSize}if(t!=e)throw new s.a("model-nodelist-offset-out-of-bounds",this,{offset:e,nodeList:this});return this.length}_insertNodes(e,t){for(const e of t)if(!(e instanceof i.a))throw new s.a("model-nodelist-insertnodes-not-node",this);this._nodes.splice(e,0,...t)}_removeNodes(e,t=1){return this._nodes.splice(e,t)}toJSON(){return this._nodes.map(e=>e.toJSON())}}},"./packages/ckeditor5-engine/src/model/operation/attributeoperation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return l}));var i=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),s=o("./packages/ckeditor5-engine/src/model/range.js"),r=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),n=o("./packages/ckeditor5-engine/src/model/operation/utils.js"),a=o("./node_modules/lodash-es/_baseIsEqual.js");var c=function(e,t){return Object(a.a)(e,t)};class l extends i.a{constructor(e,t,o,i,s){super(s),this.range=e.clone(),this.key=t,this.oldValue=void 0===o?null:o,this.newValue=void 0===i?null:i}get type(){return null===this.oldValue?"addAttribute":null===this.newValue?"removeAttribute":"changeAttribute"}clone(){return new l(this.range,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new l(this.range,this.key,this.newValue,this.oldValue,this.baseVersion+1)}toJSON(){const e=super.toJSON();return e.range=this.range.toJSON(),e}_validate(){if(!this.range.isFlat)throw new r.a("attribute-operation-range-not-flat",this);for(const e of this.range.getItems({shallow:!0})){if(null!==this.oldValue&&!c(e.getAttribute(this.key),this.oldValue))throw new r.a("attribute-operation-wrong-old-value",this,{item:e,key:this.key,value:this.oldValue});if(null===this.oldValue&&null!==this.newValue&&e.hasAttribute(this.key))throw new r.a("attribute-operation-attribute-exists",this,{node:e,key:this.key})}}_execute(){c(this.oldValue,this.newValue)||Object(n.e)(this.range,this.key,this.newValue)}static get className(){return"AttributeOperation"}static fromJSON(e,t){return new l(s.a.fromJSON(e.range,t),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/insertoperation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return u}));var i=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),s=o("./packages/ckeditor5-engine/src/model/position.js"),r=o("./packages/ckeditor5-engine/src/model/nodelist.js"),n=o("./packages/ckeditor5-engine/src/model/operation/moveoperation.js"),a=o("./packages/ckeditor5-engine/src/model/operation/utils.js"),c=o("./packages/ckeditor5-engine/src/model/text.js"),l=o("./packages/ckeditor5-engine/src/model/element.js"),d=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class u extends i.a{constructor(e,t,o){super(o),this.position=e.clone(),this.position.stickiness="toNone",this.nodes=new r.a(Object(a.c)(t)),this.shouldReceiveAttributes=!1}get type(){return"insert"}get howMany(){return this.nodes.maxOffset}clone(){const e=new r.a([...this.nodes].map(e=>e._clone(!0))),t=new u(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new s.a(e,[0]);return new n.a(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffset<this.position.offset)throw new d.a("insert-operation-position-invalid",this)}_execute(){const e=this.nodes;this.nodes=new r.a([...e].map(e=>e._clone(!0))),Object(a.a)(this.position,e)}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e.nodes=this.nodes.toJSON(),e}static get className(){return"InsertOperation"}static fromJSON(e,t){const o=[];for(const t of e.nodes)t.name?o.push(l.a.fromJSON(t)):o.push(c.a.fromJSON(t));const i=new u(s.a.fromJSON(e.position,t),o,e.baseVersion);return i.shouldReceiveAttributes=e.shouldReceiveAttributes,i}}},"./packages/ckeditor5-engine/src/model/operation/markeroperation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),s=o("./packages/ckeditor5-engine/src/model/range.js");class r extends i.a{constructor(e,t,o,i,s,r){super(r),this.name=e,this.oldRange=t?t.clone():null,this.newRange=o?o.clone():null,this.affectsData=s,this._markers=i}get type(){return"marker"}clone(){return new r(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new r(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){const e=this.newRange?"_set":"_remove";this._markers[e](this.name,this.newRange,!0,this.affectsData)}toJSON(){const e=super.toJSON();return this.oldRange&&(e.oldRange=this.oldRange.toJSON()),this.newRange&&(e.newRange=this.newRange.toJSON()),delete e._markers,e}static get className(){return"MarkerOperation"}static fromJSON(e,t){return new r(e.name,e.oldRange?s.a.fromJSON(e.oldRange,t):null,e.newRange?s.a.fromJSON(e.newRange,t):null,t.model.markers,e.affectsData,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/mergeoperation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return l}));var i=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),s=o("./packages/ckeditor5-engine/src/model/operation/splitoperation.js"),r=o("./packages/ckeditor5-engine/src/model/position.js"),n=o("./packages/ckeditor5-engine/src/model/range.js"),a=o("./packages/ckeditor5-engine/src/model/operation/utils.js"),c=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class l extends i.a{constructor(e,t,o,i,s){super(s),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toPrevious",this.howMany=t,this.targetPosition=o.clone(),this.targetPosition.stickiness="toNext",this.graveyardPosition=i.clone()}get type(){return"merge"}get deletionPosition(){return new r.a(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const e=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.a(this.sourcePosition,e)}clone(){return new this.constructor(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.targetPosition._getTransformedByMergeOperation(this),t=this.sourcePosition.path.slice(0,-1),o=new r.a(this.sourcePosition.root,t)._getTransformedByMergeOperation(this);return new s.a(e,this.howMany,o,this.graveyardPosition,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent;if(!e.parent)throw new c.a("merge-operation-source-position-invalid",this);if(!t.parent)throw new c.a("merge-operation-target-position-invalid",this);if(this.howMany!=e.maxOffset)throw new c.a("merge-operation-how-many-invalid",this)}_execute(){const e=this.sourcePosition.parent,t=n.a._createIn(e);Object(a.b)(t,this.targetPosition),Object(a.b)(n.a._createOn(e),this.graveyardPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=e.sourcePosition.toJSON(),e.targetPosition=e.targetPosition.toJSON(),e.graveyardPosition=e.graveyardPosition.toJSON(),e}static get className(){return"MergeOperation"}static fromJSON(e,t){const o=r.a.fromJSON(e.sourcePosition,t),i=r.a.fromJSON(e.targetPosition,t),s=r.a.fromJSON(e.graveyardPosition,t);return new this(o,e.howMany,i,s,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/moveoperation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return l}));var i=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),s=o("./packages/ckeditor5-engine/src/model/position.js"),r=o("./packages/ckeditor5-engine/src/model/range.js"),n=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),a=o("./packages/ckeditor5-utils/src/comparearrays.js"),c=o("./packages/ckeditor5-engine/src/model/operation/utils.js");class l extends i.a{constructor(e,t,o,i){super(i),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toNext",this.howMany=t,this.targetPosition=o.clone(),this.targetPosition.stickiness="toNone"}get type(){return"$graveyard"==this.targetPosition.root.rootName?"remove":"$graveyard"==this.sourcePosition.root.rootName?"reinsert":"move"}clone(){return new this.constructor(this.sourcePosition,this.howMany,this.targetPosition,this.baseVersion)}getMovedRangeStart(){return this.targetPosition._getTransformedByDeletion(this.sourcePosition,this.howMany)}getReversed(){const e=this.sourcePosition._getTransformedByInsertion(this.targetPosition,this.howMany);return new this.constructor(this.getMovedRangeStart(),this.howMany,e,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent,o=this.sourcePosition.offset,i=this.targetPosition.offset;if(o+this.howMany>e.maxOffset)throw new n.a("move-operation-nodes-do-not-exist",this);if(e===t&&o<i&&i<o+this.howMany)throw new n.a("move-operation-range-into-itself",this);if(this.sourcePosition.root==this.targetPosition.root&&"prefix"==Object(a.a)(this.sourcePosition.getParentPath(),this.targetPosition.getParentPath())){const e=this.sourcePosition.path.length-1;if(this.targetPosition.path[e]>=o&&this.targetPosition.path[e]<o+this.howMany)throw new n.a("move-operation-node-into-itself",this)}}_execute(){Object(c.b)(r.a._createFromPositionAndShift(this.sourcePosition,this.howMany),this.targetPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e.targetPosition=this.targetPosition.toJSON(),e}static get className(){return"MoveOperation"}static fromJSON(e,t){const o=s.a.fromJSON(e.sourcePosition,t),i=s.a.fromJSON(e.targetPosition,t);return new this(o,e.howMany,i,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/nooperation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-engine/src/model/operation/operation.js");class s extends i.a{get type(){return"noop"}clone(){return new s(this.baseVersion)}getReversed(){return new s(this.baseVersion+1)}_execute(){}static get className(){return"NoOperation"}}},"./packages/ckeditor5-engine/src/model/operation/operation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return i}));class i{constructor(e){this.baseVersion=e,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const e=Object.assign({},this);return e.__className=this.constructor.className,delete e.batch,delete e.isDocumentOperation,e}static get className(){return"Operation"}static fromJSON(e){return new this(e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/operationfactory.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return g}));var i=o("./packages/ckeditor5-engine/src/model/operation/attributeoperation.js"),s=o("./packages/ckeditor5-engine/src/model/operation/insertoperation.js"),r=o("./packages/ckeditor5-engine/src/model/operation/markeroperation.js"),n=o("./packages/ckeditor5-engine/src/model/operation/moveoperation.js"),a=o("./packages/ckeditor5-engine/src/model/operation/nooperation.js"),c=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),l=o("./packages/ckeditor5-engine/src/model/operation/renameoperation.js"),d=o("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.js"),u=o("./packages/ckeditor5-engine/src/model/operation/splitoperation.js"),h=o("./packages/ckeditor5-engine/src/model/operation/mergeoperation.js");const p={};p[i.a.className]=i.a,p[s.a.className]=s.a,p[r.a.className]=r.a,p[n.a.className]=n.a,p[a.a.className]=a.a,p[c.a.className]=c.a,p[l.a.className]=l.a,p[d.a.className]=d.a,p[u.a.className]=u.a,p[h.a.className]=h.a;class g{static fromJSON(e,t){return p[e.__className].fromJSON(e,t)}}},"./packages/ckeditor5-engine/src/model/operation/renameoperation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),s=o("./packages/ckeditor5-engine/src/model/element.js"),r=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),n=o("./packages/ckeditor5-engine/src/model/position.js");class a extends i.a{constructor(e,t,o,i){super(i),this.position=e,this.position.stickiness="toNext",this.oldName=t,this.newName=o}get type(){return"rename"}clone(){return new a(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new a(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const e=this.position.nodeAfter;if(!(e instanceof s.a))throw new r.a("rename-operation-wrong-position",this);if(e.name!==this.oldName)throw new r.a("rename-operation-wrong-name",this)}_execute(){this.position.nodeAfter.name=this.newName}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e}static get className(){return"RenameOperation"}static fromJSON(e,t){return new a(n.a.fromJSON(e.position,t),e.oldName,e.newName,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),s=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class r extends i.a{constructor(e,t,o,i,s){super(s),this.root=e,this.key=t,this.oldValue=o,this.newValue=i}get type(){return null===this.oldValue?"addRootAttribute":null===this.newValue?"removeRootAttribute":"changeRootAttribute"}clone(){return new r(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new r(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new s.a("rootattribute-operation-not-a-root",this,{root:this.root,key:this.key});if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new s.a("rootattribute-operation-wrong-old-value",this,{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new s.a("rootattribute-operation-attribute-exists",this,{root:this.root,key:this.key})}_execute(){null!==this.newValue?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const e=super.toJSON();return e.root=this.root.toJSON(),e}static get className(){return"RootAttributeOperation"}static fromJSON(e,t){if(!t.getRoot(e.root))throw new s.a("rootattribute-operation-fromjson-no-root",this,{rootName:e.root});return new r(t.getRoot(e.root),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/splitoperation.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return l}));var i=o("./packages/ckeditor5-engine/src/model/operation/operation.js"),s=o("./packages/ckeditor5-engine/src/model/operation/mergeoperation.js"),r=o("./packages/ckeditor5-engine/src/model/position.js"),n=o("./packages/ckeditor5-engine/src/model/range.js"),a=o("./packages/ckeditor5-engine/src/model/operation/utils.js"),c=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class l extends i.a{constructor(e,t,o,i,s){super(s),this.splitPosition=e.clone(),this.splitPosition.stickiness="toNext",this.howMany=t,this.insertionPosition=o,this.graveyardPosition=i?i.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const e=this.insertionPosition.path.slice();return e.push(0),new r.a(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.a(this.splitPosition,e)}clone(){return new this.constructor(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new r.a(e,[0]);return new s.a(this.moveTargetPosition,this.howMany,this.splitPosition,t,this.baseVersion+1)}_validate(){const e=this.splitPosition.parent,t=this.splitPosition.offset;if(!e||e.maxOffset<t)throw new c.a("split-operation-position-invalid",this);if(!e.parent)throw new c.a("split-operation-split-in-root",this);if(this.howMany!=e.maxOffset-this.splitPosition.offset)throw new c.a("split-operation-how-many-invalid",this);if(this.graveyardPosition&&!this.graveyardPosition.nodeAfter)throw new c.a("split-operation-graveyard-position-invalid",this)}_execute(){const e=this.splitPosition.parent;if(this.graveyardPosition)Object(a.b)(n.a._createFromPositionAndShift(this.graveyardPosition,1),this.insertionPosition);else{const t=e._clone();Object(a.a)(this.insertionPosition,t)}const t=new n.a(r.a._createAt(e,this.splitPosition.offset),r.a._createAt(e,e.maxOffset));Object(a.b)(t,this.moveTargetPosition)}toJSON(){const e=super.toJSON();return e.splitPosition=this.splitPosition.toJSON(),e.insertionPosition=this.insertionPosition.toJSON(),this.graveyardPosition&&(e.graveyardPosition=this.graveyardPosition.toJSON()),e}static get className(){return"SplitOperation"}static getInsertionPosition(e){const t=e.path.slice(0,-1);return t[t.length-1]++,new r.a(e.root,t,"toPrevious")}static fromJSON(e,t){const o=r.a.fromJSON(e.splitPosition,t),i=r.a.fromJSON(e.insertionPosition,t),s=e.graveyardPosition?r.a.fromJSON(e.graveyardPosition,t):null;return new this(o,e.howMany,i,s,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/transform.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return _}));var i=o("./packages/ckeditor5-engine/src/model/operation/insertoperation.js"),s=o("./packages/ckeditor5-engine/src/model/operation/attributeoperation.js"),r=o("./packages/ckeditor5-engine/src/model/operation/renameoperation.js"),n=o("./packages/ckeditor5-engine/src/model/operation/markeroperation.js"),a=o("./packages/ckeditor5-engine/src/model/operation/moveoperation.js"),c=o("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.js"),l=o("./packages/ckeditor5-engine/src/model/operation/mergeoperation.js"),d=o("./packages/ckeditor5-engine/src/model/operation/splitoperation.js"),u=o("./packages/ckeditor5-engine/src/model/operation/nooperation.js"),h=o("./packages/ckeditor5-engine/src/model/range.js"),p=o("./packages/ckeditor5-engine/src/model/position.js"),g=o("./packages/ckeditor5-utils/src/comparearrays.js");const f=new Map;function m(e,t,o){let i=f.get(e);i||(i=new Map,f.set(e,i)),i.set(t,o)}function k(e){return[e]}function b(e,t,o={}){const i=function(e,t){const o=f.get(e);return o&&o.has(t)?o.get(t):k}(e.constructor,t.constructor);try{return i(e=e.clone(),t,o)}catch(e){throw e}}function _(e,t,o){e=e.slice(),t=t.slice();const i=new w(o.document,o.useRelations,o.forceWeakRemove);i.setOriginalOperations(e),i.setOriginalOperations(t);const s=i.originalOperations;if(0==e.length||0==t.length)return{operationsA:e,operationsB:t,originalOperations:s};const r=new WeakMap;for(const t of e)r.set(t,0);const n={nextBaseVersionA:e[e.length-1].baseVersion+1,nextBaseVersionB:t[t.length-1].baseVersion+1,originalOperationsACount:e.length,originalOperationsBCount:t.length};let a=0;for(;a<e.length;){const o=e[a],s=r.get(o);if(s==t.length){a++;continue}const n=t[s],c=b(o,n,i.getContext(o,n,!0)),l=b(n,o,i.getContext(n,o,!1));i.updateRelation(o,n),i.setOriginalOperations(c,o),i.setOriginalOperations(l,n);for(const e of c)r.set(e,s+l.length);e.splice(a,1,...c),t.splice(s,1,...l)}if(o.padWithNoOps){const o=e.length-n.originalOperationsACount,i=t.length-n.originalOperationsBCount;y(e,i-o),y(t,o-i)}return v(e,n.nextBaseVersionB),v(t,n.nextBaseVersionA),{operationsA:e,operationsB:t,originalOperations:s}}class w{constructor(e,t,o=!1){this.originalOperations=new Map,this._history=e.history,this._useRelations=t,this._forceWeakRemove=!!o,this._relations=new Map}setOriginalOperations(e,t=null){const o=t?this.originalOperations.get(t):null;for(const t of e)this.originalOperations.set(t,o||t)}updateRelation(e,t){switch(e.constructor){case a.a:switch(t.constructor){case l.a:e.targetPosition.isEqual(t.sourcePosition)||t.movedRange.containsPosition(e.targetPosition)?this._setRelation(e,t,"insertAtSource"):e.targetPosition.isEqual(t.deletionPosition)?this._setRelation(e,t,"insertBetween"):e.targetPosition.isAfter(t.sourcePosition)&&this._setRelation(e,t,"moveTargetAfter");break;case a.a:e.targetPosition.isEqual(t.sourcePosition)||e.targetPosition.isBefore(t.sourcePosition)?this._setRelation(e,t,"insertBefore"):this._setRelation(e,t,"insertAfter")}break;case d.a:switch(t.constructor){case l.a:e.splitPosition.isBefore(t.sourcePosition)&&this._setRelation(e,t,"splitBefore");break;case a.a:if(e.splitPosition.isEqual(t.sourcePosition)||e.splitPosition.isBefore(t.sourcePosition))this._setRelation(e,t,"splitBefore");else{const o=h.a._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.splitPosition)){const i=o.end.offset-e.splitPosition.offset,s=e.splitPosition.offset-o.start.offset;this._setRelation(e,t,{howMany:i,offset:s})}}}break;case l.a:switch(t.constructor){case l.a:e.targetPosition.isEqual(t.sourcePosition)||this._setRelation(e,t,"mergeTargetNotMoved"),e.sourcePosition.isEqual(t.targetPosition)&&this._setRelation(e,t,"mergeSourceNotMoved"),e.sourcePosition.isEqual(t.sourcePosition)&&this._setRelation(e,t,"mergeSameElement");break;case d.a:e.sourcePosition.isEqual(t.splitPosition)&&this._setRelation(e,t,"splitAtSource")}break;case n.a:{const o=e.newRange;if(!o)return;switch(t.constructor){case a.a:{const i=h.a._createFromPositionAndShift(t.sourcePosition,t.howMany),s=i.containsPosition(o.start)||i.start.isEqual(o.start),r=i.containsPosition(o.end)||i.end.isEqual(o.end);!s&&!r||i.containsRange(o)||this._setRelation(e,t,{side:s?"left":"right",path:s?o.start.path.slice():o.end.path.slice()});break}case l.a:{const i=o.start.isEqual(t.targetPosition),s=o.start.isEqual(t.deletionPosition),r=o.end.isEqual(t.deletionPosition),n=o.end.isEqual(t.sourcePosition);(i||s||r||n)&&this._setRelation(e,t,{wasInLeftElement:i,wasStartBeforeMergedElement:s,wasEndBeforeMergedElement:r,wasInRightElement:n});break}}break}}}getContext(e,t,o){return{aIsStrong:o,aWasUndone:this._wasUndone(e),bWasUndone:this._wasUndone(t),abRelation:this._useRelations?this._getRelation(e,t):null,baRelation:this._useRelations?this._getRelation(t,e):null,forceWeakRemove:this._forceWeakRemove}}_wasUndone(e){const t=this.originalOperations.get(e);return t.wasUndone||this._history.isUndoneOperation(t)}_getRelation(e,t){const o=this.originalOperations.get(t),i=this._history.getUndoneOperation(o);if(!i)return null;const s=this.originalOperations.get(e),r=this._relations.get(s);return r&&r.get(i)||null}_setRelation(e,t,o){const i=this.originalOperations.get(e),s=this.originalOperations.get(t);let r=this._relations.get(i);r||(r=new Map,this._relations.set(i,r)),r.set(s,o)}}function v(e,t){for(const o of e)o.baseVersion=t++}function y(e,t){for(let o=0;o<t;o++)e.push(new u.a(0))}function j(e,t,o){const i=e.nodes.getNode(0).getAttribute(t);if(i==o)return null;const r=new h.a(e.position,e.position.getShiftedBy(e.howMany));return new s.a(r,t,i,o,0)}function x(e,t){return null===e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany)}function P(e,t){const o=[];for(let i=0;i<e.length;i++){const s=e[i],r=new a.a(s.start,s.end.offset-s.start.offset,t,0);o.push(r);for(let t=i+1;t<e.length;t++)e[t]=e[t]._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)[0];t=t._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)}return o}m(s.a,s.a,(e,t,o)=>{if(e.key===t.key&&e.range.start.hasSameParentAs(t.range.start)){const i=e.range.getDifference(t.range).map(t=>new s.a(t,e.key,e.oldValue,e.newValue,0)),r=e.range.getIntersection(t.range);return r&&o.aIsStrong&&i.push(new s.a(r,t.key,t.newValue,e.newValue,0)),0==i.length?[new u.a(0)]:i}return[e]}),m(s.a,i.a,(e,t)=>{if(e.range.start.hasSameParentAs(t.position)&&e.range.containsPosition(t.position)){const o=e.range._getTransformedByInsertion(t.position,t.howMany,!t.shouldReceiveAttributes).map(t=>new s.a(t,e.key,e.oldValue,e.newValue,e.baseVersion));if(t.shouldReceiveAttributes){const i=j(t,e.key,e.oldValue);i&&o.unshift(i)}return o}return e.range=e.range._getTransformedByInsertion(t.position,t.howMany,!1)[0],[e]}),m(s.a,l.a,(e,t)=>{const o=[];e.range.start.hasSameParentAs(t.deletionPosition)&&(e.range.containsPosition(t.deletionPosition)||e.range.start.isEqual(t.deletionPosition))&&o.push(h.a._createFromPositionAndShift(t.graveyardPosition,1));const i=e.range._getTransformedByMergeOperation(t);return i.isCollapsed||o.push(i),o.map(t=>new s.a(t,e.key,e.oldValue,e.newValue,e.baseVersion))}),m(s.a,a.a,(e,t)=>function(e,t){const o=h.a._createFromPositionAndShift(t.sourcePosition,t.howMany);let i=null,s=[];o.containsRange(e,!0)?i=e:e.start.hasSameParentAs(o.start)?(s=e.getDifference(o),i=e.getIntersection(o)):s=[e];const r=[];for(let e of s){e=e._getTransformedByDeletion(t.sourcePosition,t.howMany);const o=t.getMovedRangeStart(),i=e.start.hasSameParentAs(o);e=e._getTransformedByInsertion(o,t.howMany,i),r.push(...e)}i&&r.push(i._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany,!1)[0]);return r}(e.range,t).map(t=>new s.a(t,e.key,e.oldValue,e.newValue,e.baseVersion))),m(s.a,d.a,(e,t)=>{if(e.range.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.range.end.offset++,[e];if(e.range.start.hasSameParentAs(t.splitPosition)&&e.range.containsPosition(t.splitPosition)){const o=e.clone();return o.range=new h.a(t.moveTargetPosition.clone(),e.range.end._getCombined(t.splitPosition,t.moveTargetPosition)),e.range.end=t.splitPosition.clone(),e.range.end.stickiness="toPrevious",[e,o]}return e.range=e.range._getTransformedBySplitOperation(t),[e]}),m(i.a,s.a,(e,t)=>{const o=[e];if(e.shouldReceiveAttributes&&e.position.hasSameParentAs(t.range.start)&&t.range.containsPosition(e.position)){const i=j(e,t.key,t.newValue);i&&o.push(i)}return o}),m(i.a,i.a,(e,t,o)=>(e.position.isEqual(t.position)&&o.aIsStrong||(e.position=e.position._getTransformedByInsertOperation(t)),[e])),m(i.a,a.a,(e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e])),m(i.a,d.a,(e,t)=>(e.position=e.position._getTransformedBySplitOperation(t),[e])),m(i.a,l.a,(e,t)=>(e.position=e.position._getTransformedByMergeOperation(t),[e])),m(n.a,i.a,(e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByInsertOperation(t)[0]),e.newRange&&(e.newRange=e.newRange._getTransformedByInsertOperation(t)[0]),[e])),m(n.a,n.a,(e,t,o)=>{if(e.name==t.name){if(!o.aIsStrong)return[new u.a(0)];e.oldRange=t.newRange?t.newRange.clone():null}return[e]}),m(n.a,l.a,(e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByMergeOperation(t)),e.newRange&&(e.newRange=e.newRange._getTransformedByMergeOperation(t)),[e])),m(n.a,a.a,(e,t,o)=>{if(e.oldRange&&(e.oldRange=h.a._createFromRanges(e.oldRange._getTransformedByMoveOperation(t))),e.newRange){if(o.abRelation){const i=h.a._createFromRanges(e.newRange._getTransformedByMoveOperation(t));if("left"==o.abRelation.side&&t.targetPosition.isEqual(e.newRange.start))return e.newRange.start.path=o.abRelation.path,e.newRange.end=i.end,[e];if("right"==o.abRelation.side&&t.targetPosition.isEqual(e.newRange.end))return e.newRange.start=i.start,e.newRange.end.path=o.abRelation.path,[e]}e.newRange=h.a._createFromRanges(e.newRange._getTransformedByMoveOperation(t))}return[e]}),m(n.a,d.a,(e,t,o)=>{if(e.oldRange&&(e.oldRange=e.oldRange._getTransformedBySplitOperation(t)),e.newRange){if(o.abRelation){const i=e.newRange._getTransformedBySplitOperation(t);return e.newRange.start.isEqual(t.splitPosition)&&o.abRelation.wasStartBeforeMergedElement?e.newRange.start=p.a._createAt(t.insertionPosition):e.newRange.start.isEqual(t.splitPosition)&&!o.abRelation.wasInLeftElement&&(e.newRange.start=p.a._createAt(t.moveTargetPosition)),e.newRange.end.isEqual(t.splitPosition)&&o.abRelation.wasInRightElement?e.newRange.end=p.a._createAt(t.moveTargetPosition):e.newRange.end.isEqual(t.splitPosition)&&o.abRelation.wasEndBeforeMergedElement?e.newRange.end=p.a._createAt(t.insertionPosition):e.newRange.end=i.end,[e]}e.newRange=e.newRange._getTransformedBySplitOperation(t)}return[e]}),m(l.a,i.a,(e,t)=>(e.sourcePosition.hasSameParentAs(t.position)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByInsertOperation(t),e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t),[e])),m(l.a,l.a,(e,t,o)=>{if(e.sourcePosition.isEqual(t.sourcePosition)&&e.targetPosition.isEqual(t.targetPosition)){if(o.bWasUndone){const o=t.graveyardPosition.path.slice();return o.push(0),e.sourcePosition=new p.a(t.graveyardPosition.root,o),e.howMany=0,[e]}return[new u.a(0)]}if(e.sourcePosition.isEqual(t.sourcePosition)&&!e.targetPosition.isEqual(t.targetPosition)&&!o.bWasUndone&&"splitAtSource"!=o.abRelation){const i="$graveyard"==e.targetPosition.root.rootName,s="$graveyard"==t.targetPosition.root.rootName,r=i&&!s;if(s&&!i||!r&&o.aIsStrong){const o=t.targetPosition._getTransformedByMergeOperation(t),i=e.targetPosition._getTransformedByMergeOperation(t);return[new a.a(o,e.howMany,i,0)]}return[new u.a(0)]}return e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMergeOperation(t),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),e.graveyardPosition.isEqual(t.graveyardPosition)&&o.aIsStrong||(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]}),m(l.a,a.a,(e,t,o)=>{const i=h.a._createFromPositionAndShift(t.sourcePosition,t.howMany);return"remove"==t.type&&!o.bWasUndone&&!o.forceWeakRemove&&e.deletionPosition.hasSameParentAs(t.sourcePosition)&&i.containsPosition(e.sourcePosition)?[new u.a(0)]:(e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition.hasSameParentAs(t.sourcePosition)&&(e.howMany-=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMoveOperation(t),e.targetPosition=e.targetPosition._getTransformedByMoveOperation(t),e.graveyardPosition.isEqual(t.targetPosition)||(e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)),[e])}),m(l.a,d.a,(e,t,o)=>{if(t.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByDeletion(t.graveyardPosition,1),e.deletionPosition.isEqual(t.graveyardPosition)&&(e.howMany=t.howMany)),e.targetPosition.isEqual(t.splitPosition)){const i=0!=t.howMany,s=t.graveyardPosition&&e.deletionPosition.isEqual(t.graveyardPosition);if(i||s||"mergeTargetNotMoved"==o.abRelation)return e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),[e]}if(e.sourcePosition.isEqual(t.splitPosition)){if("mergeSourceNotMoved"==o.abRelation)return e.howMany=0,e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e];if("mergeSameElement"==o.abRelation||e.sourcePosition.offset>0)return e.sourcePosition=t.moveTargetPosition.clone(),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]}return e.sourcePosition.hasSameParentAs(t.splitPosition)&&(e.howMany=t.splitPosition.offset),e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]}),m(a.a,i.a,(e,t)=>{const o=h.a._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByInsertOperation(t,!1)[0];return e.sourcePosition=o.start,e.howMany=o.end.offset-o.start.offset,e.targetPosition.isEqual(t.position)||(e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t)),[e]}),m(a.a,a.a,(e,t,o)=>{const i=h.a._createFromPositionAndShift(e.sourcePosition,e.howMany),s=h.a._createFromPositionAndShift(t.sourcePosition,t.howMany);let r,n=o.aIsStrong,a=!o.aIsStrong;if("insertBefore"==o.abRelation||"insertAfter"==o.baRelation?a=!0:"insertAfter"!=o.abRelation&&"insertBefore"!=o.baRelation||(a=!1),r=e.targetPosition.isEqual(t.targetPosition)&&a?e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany):e.targetPosition._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),x(e,t)&&x(t,e))return[t.getReversed()];if(i.containsPosition(t.targetPosition)&&i.containsRange(s,!0))return i.start=i.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),i.end=i.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),P([i],r);if(s.containsPosition(e.targetPosition)&&s.containsRange(i,!0))return i.start=i.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),i.end=i.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),P([i],r);const c=Object(g.a)(e.sourcePosition.getParentPath(),t.sourcePosition.getParentPath());if("prefix"==c||"extension"==c)return i.start=i.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),i.end=i.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),P([i],r);"remove"!=e.type||"remove"==t.type||o.aWasUndone||o.forceWeakRemove?"remove"==e.type||"remove"!=t.type||o.bWasUndone||o.forceWeakRemove||(n=!1):n=!0;const l=[],d=i.getDifference(s);for(const e of d){e.start=e.start._getTransformedByDeletion(t.sourcePosition,t.howMany),e.end=e.end._getTransformedByDeletion(t.sourcePosition,t.howMany);const o="same"==Object(g.a)(e.start.getParentPath(),t.getMovedRangeStart().getParentPath()),i=e._getTransformedByInsertion(t.getMovedRangeStart(),t.howMany,o);l.push(...i)}const p=i.getIntersection(s);return null!==p&&n&&(p.start=p.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),p.end=p.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),0===l.length?l.push(p):1==l.length?s.start.isBefore(i.start)||s.start.isEqual(i.start)?l.unshift(p):l.push(p):l.splice(1,0,p)),0===l.length?[new u.a(e.baseVersion)]:P(l,r)}),m(a.a,d.a,(e,t,o)=>{let i=e.targetPosition.clone();e.targetPosition.isEqual(t.insertionPosition)&&t.graveyardPosition&&"moveTargetAfter"!=o.abRelation||(i=e.targetPosition._getTransformedBySplitOperation(t));const s=h.a._createFromPositionAndShift(e.sourcePosition,e.howMany);if(s.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.howMany++,e.targetPosition=i,[e];if(s.start.hasSameParentAs(t.splitPosition)&&s.containsPosition(t.splitPosition)){let e=new h.a(t.splitPosition,s.end);e=e._getTransformedBySplitOperation(t);return P([new h.a(s.start,t.splitPosition),e],i)}e.targetPosition.isEqual(t.splitPosition)&&"insertAtSource"==o.abRelation&&(i=t.moveTargetPosition),e.targetPosition.isEqual(t.insertionPosition)&&"insertBetween"==o.abRelation&&(i=e.targetPosition);const r=[s._getTransformedBySplitOperation(t)];if(t.graveyardPosition){const i=s.start.isEqual(t.graveyardPosition)||s.containsPosition(t.graveyardPosition);e.howMany>1&&i&&!o.aWasUndone&&r.push(h.a._createFromPositionAndShift(t.insertionPosition,1))}return P(r,i)}),m(a.a,l.a,(e,t,o)=>{const i=h.a._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.deletionPosition.hasSameParentAs(e.sourcePosition)&&i.containsPosition(t.sourcePosition))if("remove"!=e.type||o.forceWeakRemove){if(1==e.howMany)return o.bWasUndone?(e.sourcePosition=t.graveyardPosition.clone(),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]):[new u.a(0)]}else if(!o.aWasUndone){const o=[];let i=t.graveyardPosition.clone(),s=t.targetPosition._getTransformedByMergeOperation(t);e.howMany>1&&(o.push(new a.a(e.sourcePosition,e.howMany-1,e.targetPosition,0)),i=i._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1),s=s._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1));const r=t.deletionPosition._getCombined(e.sourcePosition,e.targetPosition),n=new a.a(i,1,r,0),c=n.getMovedRangeStart().path.slice();c.push(0);const l=new p.a(n.targetPosition.root,c);s=s._getTransformedByMove(i,r,1);const d=new a.a(s,t.howMany,l,0);return o.push(n),o.push(d),o}const s=h.a._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByMergeOperation(t);return e.sourcePosition=s.start,e.howMany=s.end.offset-s.start.offset,e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]}),m(r.a,i.a,(e,t)=>(e.position=e.position._getTransformedByInsertOperation(t),[e])),m(r.a,l.a,(e,t)=>e.position.isEqual(t.deletionPosition)?(e.position=t.graveyardPosition.clone(),e.position.stickiness="toNext",[e]):(e.position=e.position._getTransformedByMergeOperation(t),[e])),m(r.a,a.a,(e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e])),m(r.a,r.a,(e,t,o)=>{if(e.position.isEqual(t.position)){if(!o.aIsStrong)return[new u.a(0)];e.oldName=t.newName}return[e]}),m(r.a,d.a,(e,t)=>{const o=e.position.path,i=t.splitPosition.getParentPath();if("same"==Object(g.a)(o,i)&&!t.graveyardPosition){const t=new r.a(e.position.getShiftedBy(1),e.oldName,e.newName,0);return[e,t]}return e.position=e.position._getTransformedBySplitOperation(t),[e]}),m(c.a,c.a,(e,t,o)=>{if(e.root===t.root&&e.key===t.key){if(!o.aIsStrong||e.newValue===t.newValue)return[new u.a(0)];e.oldValue=t.newValue}return[e]}),m(d.a,i.a,(e,t)=>(e.splitPosition.hasSameParentAs(t.position)&&e.splitPosition.offset<t.position.offset&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByInsertOperation(t),e.insertionPosition=e.insertionPosition._getTransformedByInsertOperation(t),[e])),m(d.a,l.a,(e,t,o)=>{if(!e.graveyardPosition&&!o.bWasUndone&&e.splitPosition.hasSameParentAs(t.sourcePosition)){const o=t.graveyardPosition.path.slice();o.push(0);const i=new p.a(t.graveyardPosition.root,o),s=d.a.getInsertionPosition(new p.a(t.graveyardPosition.root,o)),r=new d.a(i,0,s,null,0);return e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.a.getInsertionPosition(e.splitPosition),e.graveyardPosition=r.insertionPosition.clone(),e.graveyardPosition.stickiness="toNext",[r,e]}return e.splitPosition.hasSameParentAs(t.deletionPosition)&&!e.splitPosition.isAfter(t.deletionPosition)&&e.howMany--,e.splitPosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.a.getInsertionPosition(e.splitPosition),e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]}),m(d.a,a.a,(e,t,o)=>{const i=h.a._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.graveyardPosition){const s=i.start.isEqual(e.graveyardPosition)||i.containsPosition(e.graveyardPosition);if(!o.bWasUndone&&s){const o=e.splitPosition._getTransformedByMoveOperation(t),i=e.graveyardPosition._getTransformedByMoveOperation(t),s=i.path.slice();s.push(0);const r=new p.a(i.root,s);return[new a.a(o,e.howMany,r,0)]}e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)}const s=e.splitPosition.isEqual(t.targetPosition);if(s&&("insertAtSource"==o.baRelation||"splitBefore"==o.abRelation))return e.howMany+=t.howMany,e.splitPosition=e.splitPosition._getTransformedByDeletion(t.sourcePosition,t.howMany),e.insertionPosition=d.a.getInsertionPosition(e.splitPosition),[e];if(s&&o.abRelation&&o.abRelation.howMany){const{howMany:t,offset:i}=o.abRelation;return e.howMany+=t,e.splitPosition=e.splitPosition.getShiftedBy(i),[e]}if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&i.containsPosition(e.splitPosition)){const o=t.howMany-(e.splitPosition.offset-t.sourcePosition.offset);return e.howMany-=o,e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany),e.splitPosition=t.sourcePosition.clone(),e.insertionPosition=d.a.getInsertionPosition(e.splitPosition),[e]}return t.sourcePosition.isEqual(t.targetPosition)||(e.splitPosition.hasSameParentAs(t.sourcePosition)&&e.splitPosition.offset<=t.sourcePosition.offset&&(e.howMany-=t.howMany),e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany)),e.splitPosition.stickiness="toNone",e.splitPosition=e.splitPosition._getTransformedByMoveOperation(t),e.splitPosition.stickiness="toNext",e.graveyardPosition?e.insertionPosition=e.insertionPosition._getTransformedByMoveOperation(t):e.insertionPosition=d.a.getInsertionPosition(e.splitPosition),[e]}),m(d.a,d.a,(e,t,o)=>{if(e.splitPosition.isEqual(t.splitPosition)){if(!e.graveyardPosition&&!t.graveyardPosition)return[new u.a(0)];if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition))return[new u.a(0)];if("splitBefore"==o.abRelation)return e.howMany=0,e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t),[e]}if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition)){const i="$graveyard"==e.splitPosition.root.rootName,s="$graveyard"==t.splitPosition.root.rootName,r=i&&!s;if(s&&!i||!r&&o.aIsStrong){const o=[];return t.howMany&&o.push(new a.a(t.moveTargetPosition,t.howMany,t.splitPosition,0)),e.howMany&&o.push(new a.a(e.splitPosition,e.howMany,e.moveTargetPosition,0)),o}return[new u.a(0)]}if(e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t)),e.splitPosition.isEqual(t.insertionPosition)&&"splitBefore"==o.abRelation)return e.howMany++,[e];if(t.splitPosition.isEqual(e.insertionPosition)&&"splitBefore"==o.baRelation){const o=t.insertionPosition.path.slice();o.push(0);const i=new p.a(t.insertionPosition.root,o);return[e,new a.a(e.insertionPosition,1,i,0)]}return e.splitPosition.hasSameParentAs(t.splitPosition)&&e.splitPosition.offset<t.splitPosition.offset&&(e.howMany-=t.howMany),e.splitPosition=e.splitPosition._getTransformedBySplitOperation(t),e.insertionPosition=d.a.getInsertionPosition(e.splitPosition),[e]})},"./packages/ckeditor5-engine/src/model/operation/utils.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return d})),o.d(t,"d",(function(){return u})),o.d(t,"b",(function(){return h})),o.d(t,"e",(function(){return p})),o.d(t,"c",(function(){return g}));var i=o("./packages/ckeditor5-engine/src/model/node.js"),s=o("./packages/ckeditor5-engine/src/model/text.js"),r=o("./packages/ckeditor5-engine/src/model/textproxy.js"),n=o("./packages/ckeditor5-engine/src/model/range.js"),a=o("./packages/ckeditor5-engine/src/model/documentfragment.js"),c=o("./packages/ckeditor5-engine/src/model/nodelist.js"),l=o("./packages/ckeditor5-utils/src/ckeditorerror.js");function d(e,t){const o=(t=g(t)).reduce((e,t)=>e+t.offsetSize,0),i=e.parent;m(e);const s=e.index;return i._insertChild(s,t),f(i,s+t.length),f(i,s),new n.a(e,e.getShiftedBy(o))}function u(e){if(!e.isFlat)throw new l.a("operation-utils-remove-range-not-flat",this);const t=e.start.parent;m(e.start),m(e.end);const o=t._removeChildren(e.start.index,e.end.index-e.start.index);return f(t,e.start.index),o}function h(e,t){if(!e.isFlat)throw new l.a("operation-utils-move-range-not-flat",this);const o=u(e);return d(t=t._getTransformedByDeletion(e.start,e.end.offset-e.start.offset),o)}function p(e,t,o){m(e.start),m(e.end);for(const i of e.getItems({shallow:!0})){const e=i.is("$textProxy")?i.textNode:i;null!==o?e._setAttribute(t,o):e._removeAttribute(t),f(e.parent,e.index)}f(e.end.parent,e.end.index)}function g(e){const t=[];e instanceof Array||(e=[e]);for(let o=0;o<e.length;o++)if("string"==typeof e[o])t.push(new s.a(e[o]));else if(e[o]instanceof r.a)t.push(new s.a(e[o].data,e[o].getAttributes()));else if(e[o]instanceof a.a||e[o]instanceof c.a)for(const i of e[o])t.push(i);else e[o]instanceof i.a&&t.push(e[o]);for(let e=1;e<t.length;e++){const o=t[e],i=t[e-1];o instanceof s.a&&i instanceof s.a&&k(o,i)&&(t.splice(e-1,2,new s.a(i.data+o.data,i.getAttributes())),e--)}return t}function f(e,t){const o=e.getChild(t-1),i=e.getChild(t);if(o&&i&&o.is("$text")&&i.is("$text")&&k(o,i)){const r=new s.a(o.data+i.data,o.getAttributes());e._removeChildren(t-1,2),e._insertChild(t-1,r)}}function m(e){const t=e.textNode,o=e.parent;if(t){const i=e.offset-t.startOffset,r=t.index;o._removeChildren(r,1);const n=new s.a(t.data.substr(0,i),t.getAttributes()),a=new s.a(t.data.substr(i),t.getAttributes());o._insertChild(r,[n,a])}}function k(e,t){const o=e.getAttributes(),i=t.getAttributes();for(const e of o){if(e[1]!==t.getAttribute(e[0]))return!1;i.next()}return i.next().done}},"./packages/ckeditor5-engine/src/model/position.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return n})),o.d(t,"d",(function(){return a})),o.d(t,"b",(function(){return c})),o.d(t,"c",(function(){return l}));var i=o("./packages/ckeditor5-engine/src/model/treewalker.js"),s=o("./packages/ckeditor5-utils/src/comparearrays.js"),r=o("./packages/ckeditor5-utils/src/ckeditorerror.js");o("./packages/ckeditor5-utils/src/version.js");class n{constructor(e,t,o="toNone"){if(!e.is("element")&&!e.is("documentFragment"))throw new r.a("model-position-root-invalid",e);if(!(t instanceof Array)||0===t.length)throw new r.a("model-position-path-incorrect-format",e,{path:t});e.is("rootElement")?t=t.slice():(t=[...e.getPath(),...t],e=e.root),this.root=e,this.path=t,this.stickiness=o}get offset(){return this.path[this.path.length-1]}set offset(e){this.path[this.path.length-1]=e}get parent(){let e=this.root;for(let t=0;t<this.path.length-1;t++)if(e=e.getChild(e.offsetToIndex(this.path[t])),!e)throw new r.a("model-position-path-incorrect",this,{position:this});if(e.is("$text"))throw new r.a("model-position-path-incorrect",this,{position:this});return e}get index(){return this.parent.offsetToIndex(this.offset)}get textNode(){return a(this,this.parent)}get nodeAfter(){const e=this.parent;return c(this,e,a(this,e))}get nodeBefore(){const e=this.parent;return l(this,e,a(this,e))}get isAtStart(){return 0===this.offset}get isAtEnd(){return this.offset==this.parent.maxOffset}compareWith(e){if(this.root!=e.root)return"different";const t=Object(s.a)(this.path,e.path);switch(t){case"same":return"same";case"prefix":return"before";case"extension":return"after";default:return this.path[t]<e.path[t]?"before":"after"}}getLastMatchingPosition(e,t={}){t.startPosition=this;const o=new i.a(t);return o.skip(e),o.position}getParentPath(){return this.path.slice(0,-1)}getAncestors(){const e=this.parent;return e.is("documentFragment")?[e]:e.getAncestors({includeSelf:!0})}findAncestor(e){const t=this.parent;return t.is("element")?t.findAncestor(e,{includeSelf:!0}):null}getCommonPath(e){if(this.root!=e.root)return[];const t=Object(s.a)(this.path,e.path),o="string"==typeof t?Math.min(this.path.length,e.path.length):t;return this.path.slice(0,o)}getCommonAncestor(e){const t=this.getAncestors(),o=e.getAncestors();let i=0;for(;t[i]==o[i]&&t[i];)i++;return 0===i?null:t[i-1]}getShiftedBy(e){const t=this.clone(),o=t.offset+e;return t.offset=o<0?0:o,t}isAfter(e){return"after"==this.compareWith(e)}isBefore(e){return"before"==this.compareWith(e)}isEqual(e){return"same"==this.compareWith(e)}isTouching(e){let t=null,o=null;switch(this.compareWith(e)){case"same":return!0;case"before":t=n._createAt(this),o=n._createAt(e);break;case"after":t=n._createAt(e),o=n._createAt(this);break;default:return!1}let i=t.parent;for(;t.path.length+o.path.length;){if(t.isEqual(o))return!0;if(t.path.length>o.path.length){if(t.offset!==i.maxOffset)return!1;t.path=t.path.slice(0,-1),i=i.parent,t.offset++}else{if(0!==o.offset)return!1;o.path=o.path.slice(0,-1)}}}is(e){return"position"===e||"model:position"===e}hasSameParentAs(e){if(this.root!==e.root)return!1;const t=this.getParentPath(),o=e.getParentPath();return"same"==Object(s.a)(t,o)}getTransformedByOperation(e){let t;switch(e.type){case"insert":t=this._getTransformedByInsertOperation(e);break;case"move":case"remove":case"reinsert":t=this._getTransformedByMoveOperation(e);break;case"split":t=this._getTransformedBySplitOperation(e);break;case"merge":t=this._getTransformedByMergeOperation(e);break;default:t=n._createAt(this)}return t}_getTransformedByInsertOperation(e){return this._getTransformedByInsertion(e.position,e.howMany)}_getTransformedByMoveOperation(e){return this._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany)}_getTransformedBySplitOperation(e){const t=e.movedRange;return t.containsPosition(this)||t.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(e.splitPosition,e.moveTargetPosition):e.graveyardPosition?this._getTransformedByMove(e.graveyardPosition,e.insertionPosition,1):this._getTransformedByInsertion(e.insertionPosition,1)}_getTransformedByMergeOperation(e){const t=e.movedRange;let o;return t.containsPosition(this)||t.start.isEqual(this)?(o=this._getCombined(e.sourcePosition,e.targetPosition),e.sourcePosition.isBefore(e.targetPosition)&&(o=o._getTransformedByDeletion(e.deletionPosition,1))):o=this.isEqual(e.deletionPosition)?n._createAt(e.deletionPosition):this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),o}_getTransformedByDeletion(e,t){const o=n._createAt(this);if(this.root!=e.root)return o;if("same"==Object(s.a)(e.getParentPath(),this.getParentPath())){if(e.offset<this.offset){if(e.offset+t>this.offset)return null;o.offset-=t}}else if("prefix"==Object(s.a)(e.getParentPath(),this.getParentPath())){const i=e.path.length-1;if(e.offset<=this.path[i]){if(e.offset+t>this.path[i])return null;o.path[i]-=t}}return o}_getTransformedByInsertion(e,t){const o=n._createAt(this);if(this.root!=e.root)return o;if("same"==Object(s.a)(e.getParentPath(),this.getParentPath()))(e.offset<this.offset||e.offset==this.offset&&"toPrevious"!=this.stickiness)&&(o.offset+=t);else if("prefix"==Object(s.a)(e.getParentPath(),this.getParentPath())){const i=e.path.length-1;e.offset<=this.path[i]&&(o.path[i]+=t)}return o}_getTransformedByMove(e,t,o){if(t=t._getTransformedByDeletion(e,o),e.isEqual(t))return n._createAt(this);const i=this._getTransformedByDeletion(e,o);return null===i||e.isEqual(this)&&"toNext"==this.stickiness||e.getShiftedBy(o).isEqual(this)&&"toPrevious"==this.stickiness?this._getCombined(e,t):i._getTransformedByInsertion(t,o)}_getCombined(e,t){const o=e.path.length-1,i=n._createAt(t);return i.stickiness=this.stickiness,i.offset=i.offset+this.path[o]-e.offset,i.path=[...i.path,...this.path.slice(o+1)],i}toJSON(){return{root:this.root.toJSON(),path:Array.from(this.path),stickiness:this.stickiness}}clone(){return new this.constructor(this.root,this.path,this.stickiness)}static _createAt(e,t,o="toNone"){if(e instanceof n)return new n(e.root,e.path,e.stickiness);{const i=e;if("end"==t)t=i.maxOffset;else{if("before"==t)return this._createBefore(i,o);if("after"==t)return this._createAfter(i,o);if(0!==t&&!t)throw new r.a("model-createpositionat-offset-required",[this,e])}if(!i.is("element")&&!i.is("documentFragment"))throw new r.a("model-position-parent-incorrect",[this,e]);const s=i.getPath();return s.push(t),new this(i.root,s,o)}}static _createAfter(e,t){if(!e.parent)throw new r.a("model-position-after-root",[this,e],{root:e});return this._createAt(e.parent,e.endOffset,t)}static _createBefore(e,t){if(!e.parent)throw new r.a("model-position-before-root",e,{root:e});return this._createAt(e.parent,e.startOffset,t)}static fromJSON(e,t){if("$graveyard"===e.root){const o=new n(t.graveyard,e.path);return o.stickiness=e.stickiness,o}if(!t.getRoot(e.root))throw new r.a("model-position-fromjson-no-root",t,{rootName:e.root});return new n(t.getRoot(e.root),e.path,e.stickiness)}}function a(e,t){const o=t.getChild(t.offsetToIndex(e.offset));return o&&o.is("$text")&&o.startOffset<e.offset?o:null}function c(e,t,o){return null!==o?null:t.getChild(t.offsetToIndex(e.offset))}function l(e,t,o){return null!==o?null:t.getChild(t.offsetToIndex(e.offset)-1)}},"./packages/ckeditor5-engine/src/model/range.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-engine/src/model/position.js"),s=o("./packages/ckeditor5-engine/src/model/treewalker.js"),r=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),n=o("./packages/ckeditor5-utils/src/comparearrays.js");class a{constructor(e,t=null){this.start=i.a._createAt(e),this.end=t?i.a._createAt(t):i.a._createAt(e),this.start.stickiness=this.isCollapsed?"toNone":"toNext",this.end.stickiness=this.isCollapsed?"toNone":"toPrevious"}*[Symbol.iterator](){yield*new s.a({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){const e=this.start.getParentPath(),t=this.end.getParentPath();return"same"==Object(n.a)(e,t)}get root(){return this.start.root}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const o=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),i=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return o&&i}containsItem(e){const t=i.a._createBefore(e);return this.containsPosition(t)||this.start.isEqual(t)}is(e){return"range"===e||"model:range"===e}isEqual(e){return this.start.isEqual(e.start)&&this.end.isEqual(e.end)}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new a(this.start,e.start)),this.containsPosition(e.end)&&t.push(new a(e.end,this.end))):t.push(new a(this.start,this.end)),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,o=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(o=e.end),new a(t,o)}return null}getJoined(e,t=!1){let o=this.isIntersecting(e);if(o||(o=this.start.isBefore(e.start)?t?this.end.isTouching(e.start):this.end.isEqual(e.start):t?e.end.isTouching(this.start):e.end.isEqual(this.start)),!o)return null;let i=this.start,s=this.end;return e.start.isBefore(i)&&(i=e.start),e.end.isAfter(s)&&(s=e.end),new a(i,s)}getMinimalFlatRanges(){const e=[],t=this.start.getCommonPath(this.end).length,o=i.a._createAt(this.start);let s=o.parent;for(;o.path.length>t+1;){const t=s.maxOffset-o.offset;0!==t&&e.push(new a(o,o.getShiftedBy(t))),o.path=o.path.slice(0,-1),o.offset++,s=s.parent}for(;o.path.length<=this.end.path.length;){const t=this.end.path[o.path.length-1],i=t-o.offset;0!==i&&e.push(new a(o,o.getShiftedBy(i))),o.offset=t,o.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new s.a(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new s.a(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new s.a(e);yield t.position;for(const e of t)yield e.nextPosition}getTransformedByOperation(e){switch(e.type){case"insert":return this._getTransformedByInsertOperation(e);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(e);case"split":return[this._getTransformedBySplitOperation(e)];case"merge":return[this._getTransformedByMergeOperation(e)]}return[new a(this.start,this.end)]}getTransformedByOperations(e){const t=[new a(this.start,this.end)];for(const o of e)for(let e=0;e<t.length;e++){const i=t[e].getTransformedByOperation(o);t.splice(e,1,...i),e+=i.length-1}for(let e=0;e<t.length;e++){const o=t[e];for(let i=e+1;i<t.length;i++){const e=t[i];(o.containsRange(e)||e.containsRange(o)||o.isEqual(e))&&t.splice(i,1)}}return t}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;const e=this.start.nodeAfter,t=this.end.nodeBefore;return e&&e.is("element")&&e===t?e:null}toJSON(){return{start:this.start.toJSON(),end:this.end.toJSON()}}clone(){return new this.constructor(this.start,this.end)}_getTransformedByInsertOperation(e,t=!1){return this._getTransformedByInsertion(e.position,e.howMany,t)}_getTransformedByMoveOperation(e,t=!1){const o=e.sourcePosition,i=e.howMany,s=e.targetPosition;return this._getTransformedByMove(o,s,i,t)}_getTransformedBySplitOperation(e){const t=this.start._getTransformedBySplitOperation(e);let o=this.end._getTransformedBySplitOperation(e);return this.end.isEqual(e.insertionPosition)&&(o=this.end.getShiftedBy(1)),t.root!=o.root&&(o=this.end.getShiftedBy(-1)),new a(t,o)}_getTransformedByMergeOperation(e){if(this.start.isEqual(e.targetPosition)&&this.end.isEqual(e.deletionPosition))return new a(this.start);let t=this.start._getTransformedByMergeOperation(e),o=this.end._getTransformedByMergeOperation(e);return t.root!=o.root&&(o=this.end.getShiftedBy(-1)),t.isAfter(o)?(e.sourcePosition.isBefore(e.targetPosition)?(t=i.a._createAt(o),t.offset=0):(e.deletionPosition.isEqual(t)||(o=e.deletionPosition),t=e.targetPosition),new a(t,o)):new a(t,o)}_getTransformedByInsertion(e,t,o=!1){if(o&&this.containsPosition(e))return[new a(this.start,e),new a(e.getShiftedBy(t),this.end._getTransformedByInsertion(e,t))];{const o=new a(this.start,this.end);return o.start=o.start._getTransformedByInsertion(e,t),o.end=o.end._getTransformedByInsertion(e,t),[o]}}_getTransformedByMove(e,t,o,i=!1){if(this.isCollapsed){const i=this.start._getTransformedByMove(e,t,o);return[new a(i)]}const s=a._createFromPositionAndShift(e,o),r=t._getTransformedByDeletion(e,o);if(this.containsPosition(t)&&!i&&(s.containsPosition(this.start)||s.containsPosition(this.end))){const i=this.start._getTransformedByMove(e,t,o),s=this.end._getTransformedByMove(e,t,o);return[new a(i,s)]}let n;const c=this.getDifference(s);let l=null;const d=this.getIntersection(s);if(1==c.length?l=new a(c[0].start._getTransformedByDeletion(e,o),c[0].end._getTransformedByDeletion(e,o)):2==c.length&&(l=new a(this.start,this.end._getTransformedByDeletion(e,o))),n=l?l._getTransformedByInsertion(r,o,null!==d||i):[],d){const e=new a(d.start._getCombined(s.start,r),d.end._getCombined(s.start,r));2==n.length?n.splice(1,0,e):n.push(e)}return n}_getTransformedByDeletion(e,t){let o=this.start._getTransformedByDeletion(e,t),i=this.end._getTransformedByDeletion(e,t);return null==o&&null==i?null:(null==o&&(o=e),null==i&&(i=e),new a(o,i))}static _createFromPositionAndShift(e,t){const o=e,i=e.getShiftedBy(t);return t>0?new this(o,i):new this(i,o)}static _createIn(e){return new this(i.a._createAt(e,0),i.a._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(i.a._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(0===e.length)throw new r.a("range-create-from-ranges-empty-array",null);if(1==e.length)return e[0].clone();const t=e[0];e.sort((e,t)=>e.start.isAfter(t.start)?1:-1);const o=e.indexOf(t),s=new this(t.start,t.end);if(o>0)for(let t=o-1;e[t].end.isEqual(s.start);t++)s.start=i.a._createAt(e[t].start);for(let t=o+1;t<e.length&&e[t].start.isEqual(s.end);t++)s.end=i.a._createAt(e[t].end);return s}static fromJSON(e,t){return new this(i.a.fromJSON(e.start,t),i.a.fromJSON(e.end,t))}}},"./packages/ckeditor5-engine/src/model/schema.js":function(e,t,o){"use strict";o.d(t,"b",(function(){return u})),o.d(t,"a",(function(){return h}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),s=o("./packages/ckeditor5-utils/src/observablemixin.js"),r=o("./packages/ckeditor5-utils/src/mix.js"),n=o("./packages/ckeditor5-engine/src/model/range.js"),a=o("./packages/ckeditor5-engine/src/model/position.js"),c=o("./packages/ckeditor5-engine/src/model/element.js"),l=o("./packages/ckeditor5-engine/src/model/text.js"),d=o("./packages/ckeditor5-engine/src/model/treewalker.js");class u{constructor(){this._sourceDefinitions={},this._attributeProperties={},this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",(e,t)=>{t[0]=new h(t[0])},{priority:"highest"}),this.on("checkChild",(e,t)=>{t[0]=new h(t[0]),t[1]=this.getDefinition(t[1])},{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new i.a("schema-cannot-register-item-twice",this,{itemName:e});this._sourceDefinitions[e]=[Object.assign({},t)],this._clearCache()}extend(e,t){if(!this._sourceDefinitions[e])throw new i.a("schema-cannot-extend-missing-item",this,{itemName:e});this._sourceDefinitions[e].push(Object.assign({},t)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(e){let t;return t="string"==typeof e?e:e.is&&(e.is("$text")||e.is("$textProxy"))?"$text":e.name,this.getDefinitions()[t]}isRegistered(e){return!!this.getDefinition(e)}isBlock(e){const t=this.getDefinition(e);return!(!t||!t.isBlock)}isLimit(e){const t=this.getDefinition(e);return!!t&&!(!t.isLimit&&!t.isObject)}isObject(e){const t=this.getDefinition(e);return!!t&&!!(t.isObject||t.isLimit&&t.isSelectable&&t.isContent)}isInline(e){const t=this.getDefinition(e);return!(!t||!t.isInline)}isSelectable(e){const t=this.getDefinition(e);return!!t&&!(!t.isSelectable&&!t.isObject)}isContent(e){const t=this.getDefinition(e);return!!t&&!(!t.isContent&&!t.isObject)}checkChild(e,t){return!!t&&this._checkContextMatch(t,e)}checkAttribute(e,t){const o=this.getDefinition(e.last);return!!o&&o.allowAttributes.includes(t)}checkMerge(e,t=null){if(e instanceof a.a){const t=e.nodeBefore,o=e.nodeAfter;if(!(t instanceof c.a))throw new i.a("schema-check-merge-no-element-before",this);if(!(o instanceof c.a))throw new i.a("schema-check-merge-no-element-after",this);return this.checkMerge(t,o)}for(const o of t.getChildren())if(!this.checkChild(e,o))return!1;return!0}addChildCheck(e){this.on("checkChild",(t,[o,i])=>{if(!i)return;const s=e(o,i);"boolean"==typeof s&&(t.stop(),t.return=s)},{priority:"high"})}addAttributeCheck(e){this.on("checkAttribute",(t,[o,i])=>{const s=e(o,i);"boolean"==typeof s&&(t.stop(),t.return=s)},{priority:"high"})}setAttributeProperties(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}getAttributeProperties(e){return this._attributeProperties[e]||{}}getLimitElement(e){let t;if(e instanceof a.a)t=e.parent;else{t=(e instanceof n.a?[e]:Array.from(e.getRanges())).reduce((e,t)=>{const o=t.getCommonAncestor();return e?e.getCommonAncestor(o,{includeSelf:!0}):o},null)}for(;!this.isLimit(t)&&t.parent;)t=t.parent;return t}checkAttributeInSelection(e,t){if(e.isCollapsed){const o=[...e.getFirstPosition().getAncestors(),new l.a("",e.getAttributes())];return this.checkAttribute(o,t)}{const o=e.getRanges();for(const e of o)for(const o of e)if(this.checkAttribute(o.item,t))return!0}return!1}*getValidRanges(e,t){e=function*(e){for(const t of e)yield*t.getMinimalFlatRanges()}(e);for(const o of e)yield*this._getValidRangesForRange(o,t)}getNearestSelectionRange(e,t="both"){if(this.checkChild(e,"$text"))return new n.a(e);let o,i;const s=e.getAncestors().reverse().find(e=>this.isLimit(e))||e.root;"both"!=t&&"backward"!=t||(o=new d.a({boundaries:n.a._createIn(s),startPosition:e,direction:"backward"})),"both"!=t&&"forward"!=t||(i=new d.a({boundaries:n.a._createIn(s),startPosition:e}));for(const e of function*(e,t){let o=!1;for(;!o;){if(o=!0,e){const t=e.next();t.done||(o=!1,yield{walker:e,value:t.value})}if(t){const e=t.next();e.done||(o=!1,yield{walker:t,value:e.value})}}}(o,i)){const t=e.walker==o?"elementEnd":"elementStart",i=e.value;if(i.type==t&&this.isObject(i.item))return n.a._createOn(i.item);if(this.checkChild(i.nextPosition,"$text"))return new n.a(i.nextPosition)}return null}findAllowedParent(e,t){let o=e.parent;for(;o;){if(this.checkChild(o,t))return o;if(this.isLimit(o))return null;o=o.parent}return null}removeDisallowedAttributes(e,t){for(const o of e)if(o.is("$text"))P(this,o,t);else{const e=n.a._createIn(o).getPositions();for(const o of e){P(this,o.nodeBefore||o.parent,t)}}}createContext(e){return new h(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,o=Object.keys(t);for(const i of o)e[i]=p(t[i],i);for(const t of o)g(e,t);for(const t of o)f(e,t);for(const t of o)m(e,t);for(const t of o)k(e,t),b(e,t);for(const t of o)_(e,t),w(e,t),v(e,t);this._compiledDefinitions=e}_checkContextMatch(e,t,o=t.length-1){const i=t.getItem(o);if(e.allowIn.includes(i.name)){if(0==o)return!0;{const e=this.getDefinition(i);return this._checkContextMatch(e,t,o-1)}}return!1}*_getValidRangesForRange(e,t){let o=e.start,i=e.start;for(const s of e.getItems({shallow:!0}))s.is("element")&&(yield*this._getValidRangesForRange(n.a._createIn(s),t)),this.checkAttribute(s,t)||(o.isEqual(i)||(yield new n.a(o,i)),o=a.a._createAfter(s)),i=a.a._createAfter(s);o.isEqual(i)||(yield new n.a(o,i))}}Object(r.a)(u,s.a);class h{constructor(e){if(e instanceof h)return e;"string"==typeof e?e=[e]:Array.isArray(e)||(e=e.getAncestors({includeSelf:!0})),this._items=e.map(x)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(e){const t=new h([e]);return t._items=[...this._items,...t._items],t}getItem(e){return this._items[e]}*getNames(){yield*this._items.map(e=>e.name)}endsWith(e){return Array.from(this.getNames()).join(" ").endsWith(e)}startsWith(e){return Array.from(this.getNames()).join(" ").startsWith(e)}}function p(e,t){const o={name:t,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],allowChildren:[],inheritTypesFrom:[]};return function(e,t){for(const o of e){const e=Object.keys(o).filter(e=>e.startsWith("is"));for(const i of e)t[i]=o[i]}}(e,o),y(e,o,"allowIn"),y(e,o,"allowContentOf"),y(e,o,"allowWhere"),y(e,o,"allowAttributes"),y(e,o,"allowAttributesOf"),y(e,o,"allowChildren"),y(e,o,"inheritTypesFrom"),function(e,t){for(const o of e){const e=o.inheritAllFrom;e&&(t.allowContentOf.push(e),t.allowWhere.push(e),t.allowAttributesOf.push(e),t.inheritTypesFrom.push(e))}}(e,o),o}function g(e,t){const o=e[t];for(const i of o.allowChildren){const o=e[i];o&&o.allowIn.push(t)}o.allowChildren.length=0}function f(e,t){for(const o of e[t].allowContentOf)if(e[o]){j(e,o).forEach(e=>{e.allowIn.push(t)})}delete e[t].allowContentOf}function m(e,t){for(const o of e[t].allowWhere){const i=e[o];if(i){const o=i.allowIn;e[t].allowIn.push(...o)}}delete e[t].allowWhere}function k(e,t){for(const o of e[t].allowAttributesOf){const i=e[o];if(i){const o=i.allowAttributes;e[t].allowAttributes.push(...o)}}delete e[t].allowAttributesOf}function b(e,t){const o=e[t];for(const t of o.inheritTypesFrom){const i=e[t];if(i){const e=Object.keys(i).filter(e=>e.startsWith("is"));for(const t of e)t in o||(o[t]=i[t])}}delete o.inheritTypesFrom}function _(e,t){const o=e[t],i=o.allowIn.filter(t=>e[t]);o.allowIn=Array.from(new Set(i))}function w(e,t){const o=e[t];for(const i of o.allowIn){e[i].allowChildren.push(t)}}function v(e,t){const o=e[t];o.allowAttributes=Array.from(new Set(o.allowAttributes))}function y(e,t,o){for(const i of e)"string"==typeof i[o]?t[o].push(i[o]):Array.isArray(i[o])&&t[o].push(...i[o])}function j(e,t){const o=e[t];return(i=e,Object.keys(i).map(e=>i[e])).filter(e=>e.allowIn.includes(o.name));var i}function x(e){return"string"==typeof e||e.is("documentFragment")?{name:"string"==typeof e?e:"$documentFragment",*getAttributeKeys(){},getAttribute(){}}:{name:e.is("element")?e.name:"$text",*getAttributeKeys(){yield*e.getAttributeKeys()},getAttribute:t=>e.getAttribute(t)}}function P(e,t,o){for(const i of t.getAttributeKeys())e.checkAttribute(t,i)||o.removeAttribute(i,t)}},"./packages/ckeditor5-engine/src/model/selection.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return d}));var i=o("./packages/ckeditor5-engine/src/model/position.js"),s=o("./packages/ckeditor5-engine/src/model/node.js"),r=o("./packages/ckeditor5-engine/src/model/range.js"),n=o("./packages/ckeditor5-utils/src/emittermixin.js"),a=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),c=o("./packages/ckeditor5-utils/src/mix.js"),l=o("./packages/ckeditor5-utils/src/isiterable.js");class d{constructor(e,t,o){this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,e&&this.setTo(e,t,o)}get anchor(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.end:e.start}return null}get focus(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.start:e.end}return null}get isCollapsed(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(e){if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let o=!1;for(const i of e._ranges)if(t.isEqual(i)){o=!0;break}if(!o)return!1}return!0}*getRanges(){for(const e of this._ranges)yield new r.a(e.start,e.end)}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?new r.a(e.start,e.end):null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?new r.a(e.start,e.end):null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}setTo(e,t,o){if(null===e)this._setRanges([]);else if(e instanceof d)this._setRanges(e.getRanges(),e.isBackward);else if(e&&"function"==typeof e.getRanges)this._setRanges(e.getRanges(),e.isBackward);else if(e instanceof r.a)this._setRanges([e],!!t&&!!t.backward);else if(e instanceof i.a)this._setRanges([new r.a(e)]);else if(e instanceof s.a){const s=!!o&&!!o.backward;let n;if("in"==t)n=r.a._createIn(e);else if("on"==t)n=r.a._createOn(e);else{if(void 0===t)throw new a.a("model-selection-setto-required-second-parameter",[this,e]);n=new r.a(i.a._createAt(e,t))}this._setRanges([n],s)}else{if(!Object(l.a)(e))throw new a.a("model-selection-setto-not-selectable",[this,e]);this._setRanges(e,t&&!!t.backward)}}_setRanges(e,t=!1){const o=(e=Array.from(e)).some(t=>{if(!(t instanceof r.a))throw new a.a("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every(e=>!e.isEqual(t))});if(e.length!==this._ranges.length||o){this._removeAllRanges();for(const t of e)this._pushRange(t);this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0})}}setFocus(e,t){if(null===this.anchor)throw new a.a("model-selection-setfocus-no-ranges",[this,e]);const o=i.a._createAt(e,t);if("same"==o.compareWith(this.focus))return;const s=this.anchor;this._ranges.length&&this._popRange(),"before"==o.compareWith(s)?(this._pushRange(new r.a(o,s)),this._lastRangeBackward=!0):(this._pushRange(new r.a(s,o)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(e){return this._attrs.has(e)}removeAttribute(e){this.hasAttribute(e)&&(this._attrs.delete(e),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}setAttribute(e,t){this.getAttribute(e)!==t&&(this._attrs.set(e,t),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}is(e){return"selection"===e||"model:selection"===e}*getSelectedBlocks(){const e=new WeakSet;for(const t of this.getRanges()){const o=p(t.start,e);o&&g(o,t)&&(yield o);for(const o of t.getWalker()){const i=o.item;"elementEnd"==o.type&&h(i,e,t)&&(yield i)}const s=p(t.end,e);s&&!t.end.isTouching(i.a._createAt(s,0))&&g(s,t)&&(yield s)}}containsEntireContent(e=this.anchor.root){const t=i.a._createAt(e,0),o=i.a._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&o.isTouching(this.getLastPosition())}_pushRange(e){this._checkRange(e),this._ranges.push(new r.a(e.start,e.end))}_checkRange(e){for(let t=0;t<this._ranges.length;t++)if(e.isIntersecting(this._ranges[t]))throw new a.a("model-selection-range-intersects",[this,e],{addedRange:e,intersectingRange:this._ranges[t]})}_removeAllRanges(){for(;this._ranges.length>0;)this._popRange()}_popRange(){this._ranges.pop()}}function u(e,t){return!t.has(e)&&(t.add(e),e.root.document.model.schema.isBlock(e)&&e.parent)}function h(e,t,o){return u(e,t)&&g(e,o)}function p(e,t){const o=e.parent.root.document.model.schema,i=e.parent.getAncestors({parentFirst:!0,includeSelf:!0});let s=!1;const r=i.find(e=>!s&&(s=o.isLimit(e),!s&&u(e,t)));return i.forEach(e=>t.add(e)),r}function g(e,t){const o=function(e){const t=e.root.document.model.schema;let o=e.parent;for(;o;){if(t.isBlock(o))return o;o=o.parent}}(e);if(!o)return!0;return!t.containsRange(r.a._createOn(o),!0)}Object(c.a)(d,n.c)},"./packages/ckeditor5-engine/src/model/text.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-engine/src/model/node.js");class s extends i.a{constructor(e,t){super(t),this._data=e||""}get offsetSize(){return this.data.length}get data(){return this._data}is(e){return"$text"===e||"model:$text"===e||"text"===e||"model:text"===e||"node"===e||"model:node"===e}toJSON(){const e=super.toJSON();return e.data=this.data,e}_clone(){return new s(this.data,this.getAttributes())}static fromJSON(e){return new s(e.data,e.attributes)}}},"./packages/ckeditor5-engine/src/model/textproxy.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class s{constructor(e,t,o){if(this.textNode=e,t<0||t>e.offsetSize)throw new i.a("model-textproxy-wrong-offsetintext",this);if(o<0||t+o>e.offsetSize)throw new i.a("model-textproxy-wrong-length",this);this.data=e.data.substring(t,t+o),this.offsetInText=t}get startOffset(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}is(e){return"$textProxy"===e||"model:$textProxy"===e||"textProxy"===e||"model:textProxy"===e}getPath(){const e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let o=e.includeSelf?this:this.parent;for(;o;)t[e.parentFirst?"push":"unshift"](o),o=o.parent;return t}hasAttribute(e){return this.textNode.hasAttribute(e)}getAttribute(e){return this.textNode.getAttribute(e)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}},"./packages/ckeditor5-engine/src/model/treewalker.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return c}));var i=o("./packages/ckeditor5-engine/src/model/text.js"),s=o("./packages/ckeditor5-engine/src/model/textproxy.js"),r=o("./packages/ckeditor5-engine/src/model/element.js"),n=o("./packages/ckeditor5-engine/src/model/position.js"),a=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.a("model-tree-walker-no-start-position",null);const t=e.direction||"forward";if("forward"!=t&&"backward"!=t)throw new a.a("model-tree-walker-unknown-direction",e,{direction:t});this.direction=t,this.boundaries=e.boundaries||null,e.startPosition?this.position=e.startPosition.clone():this.position=n.a._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(e){let t,o,i,s;do{i=this.position,s=this._visitedParent,({done:t,value:o}=this.next())}while(!t&&e(o));t||(this.position=i,this._visitedParent=s)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){const e=this.position,t=this.position.clone(),o=this._visitedParent;if(null===o.parent&&t.offset===o.maxOffset)return{done:!0};if(o===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0};const a=t.parent,c=Object(n.d)(t,a),d=c||Object(n.b)(t,a,c);if(d instanceof r.a)return this.shallow?t.offset++:(t.path.push(0),this._visitedParent=d),this.position=t,l("elementStart",d,e,t,1);if(d instanceof i.a){let i;if(this.singleCharacters)i=1;else{let e=d.endOffset;this._boundaryEndParent==o&&this.boundaries.end.offset<e&&(e=this.boundaries.end.offset),i=e-t.offset}const r=t.offset-d.startOffset,n=new s.a(d,r,i);return t.offset+=i,this.position=t,l("text",n,e,t,i)}return t.path.pop(),t.offset++,this.position=t,this._visitedParent=o.parent,this.ignoreElementEnd?this._next():l("elementEnd",o,e,t)}_previous(){const e=this.position,t=this.position.clone(),o=this._visitedParent;if(null===o.parent&&0===t.offset)return{done:!0};if(o==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0};const a=t.parent,c=Object(n.d)(t,a),d=c||Object(n.c)(t,a,c);if(d instanceof r.a)return t.offset--,this.shallow?(this.position=t,l("elementStart",d,e,t,1)):(t.path.push(d.maxOffset),this.position=t,this._visitedParent=d,this.ignoreElementEnd?this._previous():l("elementEnd",d,e,t));if(d instanceof i.a){let i;if(this.singleCharacters)i=1;else{let e=d.startOffset;this._boundaryStartParent==o&&this.boundaries.start.offset>e&&(e=this.boundaries.start.offset),i=t.offset-e}const r=t.offset-d.startOffset,n=new s.a(d,r-i,i);return t.offset-=i,this.position=t,l("text",n,e,t,i)}return t.path.pop(),this.position=t,this._visitedParent=o.parent,l("elementStart",o,e,t,1)}}function l(e,t,o,i,s){return{done:!1,value:{type:e,item:t,previousPosition:o,nextPosition:i,length:s}}}},"./packages/ckeditor5-engine/src/model/utils/autoparagraphing.js":function(e,t,o){"use strict";function i(e){const{schema:t,document:o}=e.model;for(const i of o.getRootNames()){const s=o.getRoot(i);if(s.isEmpty&&!t.checkChild(s,"$text")&&t.checkChild(s,"paragraph"))return e.insertElement("paragraph",s),!0}return!1}function s(e,t,o){const i=o.createContext(e);return!!o.checkChild(i,"paragraph")&&!!o.checkChild(i.push("paragraph"),t)}function r(e,t){const o=t.createElement("paragraph");return t.insert(o,e),t.createPositionAt(o,0)}o.d(t,"a",(function(){return i})),o.d(t,"b",(function(){return s})),o.d(t,"c",(function(){return r}))},"./packages/ckeditor5-engine/src/view/attributeelement.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-engine/src/view/element.js"),s=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class r extends i.a{constructor(e,t,o,i){super(e,t,o,i),this.getFillerOffset=n,this._priority=10,this._id=null,this._clonesGroup=null}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new s.a("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}is(e,t=null){return t?t===this.name&&("attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e):"attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}isSimilar(e){return null!==this.id||null!==e.id?this.id===e.id:super.isSimilar(e)&&this.priority==e.priority}_clone(e){const t=super._clone(e);return t._priority=this._priority,t._id=this._id,t}}function n(){if(a(this))return null;let e=this.parent;for(;e&&e.is("attributeElement");){if(a(e)>1)return null;e=e.parent}return!e||a(e)>1?null:this.childCount}function a(e){return Array.from(e.getChildren()).filter(e=>!e.is("uiElement")).length}r.DEFAULT_PRIORITY=10},"./packages/ckeditor5-engine/src/view/containerelement.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s})),o.d(t,"b",(function(){return r}));var i=o("./packages/ckeditor5-engine/src/view/element.js");class s extends i.a{constructor(e,t,o,i){super(e,t,o,i),this.getFillerOffset=r}is(e,t=null){return t?t===this.name&&("containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}}function r(){const e=[...this.getChildren()],t=e[this.childCount-1];if(t&&t.is("element","br"))return this.childCount;for(const t of e)if(!t.is("uiElement"))return null;return this.childCount}},"./packages/ckeditor5-engine/src/view/document.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return b}));var i=o("./packages/ckeditor5-engine/src/view/documentselection.js"),s=o("./packages/ckeditor5-utils/src/collection.js"),r=o("./packages/ckeditor5-utils/src/mix.js"),n=o("./packages/ckeditor5-utils/src/eventinfo.js"),a=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),c=o("./packages/ckeditor5-utils/src/emittermixin.js"),l=o("./packages/ckeditor5-utils/src/toarray.js"),d=o("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js");const u=Symbol("bubbling contexts");var h={fire(e,...t){try{const o=e instanceof n.a?e:new n.a(this,e),i=m(this);if(!i.size)return;if(p(o,"capturing",this),g(i,"$capture",o,...t))return o.return;const s=o.startRange||this.selection.getFirstRange(),r=s?s.getContainedElement():null,a=!!r&&Boolean(f(i,r));let c=r||function(e){if(!e)return null;const t=e.start.parent,o=e.end.parent,i=t.getPath(),s=o.getPath();return i.length>s.length?t:o}(s);if(p(o,"atTarget",c),!a){if(g(i,"$text",o,...t))return o.return;p(o,"bubbling",c)}for(;c;){if(c.is("rootElement")){if(g(i,"$root",o,...t))return o.return}else if(c.is("element")&&g(i,c.name,o,...t))return o.return;if(g(i,c,o,...t))return o.return;c=c.parent,p(o,"bubbling",c)}return p(o,"bubbling",this),g(i,"$document",o,...t),o.return}catch(e){a.a.rethrowUnexpectedError(e,this)}},_addEventListener(e,t,o){const i=Object(l.a)(o.context||"$document"),s=m(this);for(const r of i){let i=s.get(r);i||(i=Object.create(c.c),s.set(r,i)),this.listenTo(i,e,t,o)}},_removeEventListener(e,t){const o=m(this);for(const i of o.values())this.stopListening(i,e,t)}};function p(e,t,o){e instanceof d.a&&(e._eventPhase=t,e._currentTarget=o)}function g(e,t,o,...i){const s="string"==typeof t?e.get(t):f(e,t);return!!s&&(s.fire(o,...i),o.stop.called)}function f(e,t){for(const[o,i]of e)if("function"==typeof o&&o(t))return i;return null}function m(e){return e[u]||(e[u]=new Map),e[u]}var k=o("./packages/ckeditor5-utils/src/observablemixin.js");class b{constructor(e){this.selection=new i.a,this.roots=new s.a({idProperty:"rootName"}),this.stylesProcessor=e,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1),this._postFixers=new Set}getRoot(e="main"){return this.roots.get(e)}registerPostFixer(e){this._postFixers.add(e)}destroy(){this.roots.map(e=>e.destroy()),this.stopListening()}_callPostFixers(e){let t=!1;do{for(const o of this._postFixers)if(t=o(e),t)break}while(t)}}Object(r.a)(b,h),Object(r.a)(b,k.a)},"./packages/ckeditor5-engine/src/view/documentfragment.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return c}));var i=o("./packages/ckeditor5-engine/src/view/text.js"),s=o("./packages/ckeditor5-engine/src/view/textproxy.js"),r=o("./packages/ckeditor5-utils/src/mix.js"),n=o("./packages/ckeditor5-utils/src/isiterable.js"),a=o("./packages/ckeditor5-utils/src/emittermixin.js");class c{constructor(e,t){this.document=e,this._children=[],t&&this._insertChild(0,t)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(e){return"documentFragment"===e||"view:documentFragment"===e}_appendChild(e){return this._insertChild(this.childCount,e)}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(e,t){this._fireChange("children",this);let o=0;const r=function(e,t){if("string"==typeof t)return[new i.a(e,t)];Object(n.a)(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new i.a(e,t):t instanceof s.a?new i.a(e,t.data):t)}(this.document,t);for(const t of r)null!==t.parent&&t._remove(),t.parent=this,this._children.splice(e,0,t),e++,o++;return o}_removeChildren(e,t=1){this._fireChange("children",this);for(let o=e;o<e+t;o++)this._children[o].parent=null;return this._children.splice(e,t)}_fireChange(e,t){this.fire("change:"+e,t)}}Object(r.a)(c,a.c)},"./packages/ckeditor5-engine/src/view/documentselection.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return n}));var i=o("./packages/ckeditor5-engine/src/view/selection.js"),s=o("./packages/ckeditor5-utils/src/mix.js"),r=o("./packages/ckeditor5-utils/src/emittermixin.js");class n{constructor(e=null,t,o){this._selection=new i.a,this._selection.delegate("change").to(this),this._selection.setTo(e,t,o)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(e){return this._selection.isEqual(e)}isSimilar(e){return this._selection.isSimilar(e)}is(e){return"selection"===e||"documentSelection"==e||"view:selection"==e||"view:documentSelection"==e}_setTo(e,t,o){this._selection.setTo(e,t,o)}_setFocus(e,t){this._selection.setFocus(e,t)}}Object(s.a)(n,r.c)},"./packages/ckeditor5-engine/src/view/domconverter.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return w}));var i=o("./packages/ckeditor5-engine/src/view/text.js"),s=o("./packages/ckeditor5-engine/src/view/element.js"),r=o("./packages/ckeditor5-engine/src/view/uielement.js"),n=o("./packages/ckeditor5-engine/src/view/position.js"),a=o("./packages/ckeditor5-engine/src/view/range.js"),c=o("./packages/ckeditor5-engine/src/view/selection.js"),l=o("./packages/ckeditor5-engine/src/view/documentfragment.js"),d=o("./packages/ckeditor5-engine/src/view/treewalker.js"),u=o("./packages/ckeditor5-engine/src/view/matcher.js"),h=o("./packages/ckeditor5-engine/src/view/filler.js"),p=o("./packages/ckeditor5-utils/src/dom/global.js");function g(e){let t=0;for(;e.previousSibling;)e=e.previousSibling,t++;return t}function f(e){const t=[];for(;e&&e.nodeType!=Node.DOCUMENT_NODE;)t.unshift(e),e=e.parentNode;return t}var m=o("./packages/ckeditor5-utils/src/dom/istext.js");const k=Object(h.a)(document),b=Object(h.e)(document),_=Object(h.d)(document);class w{constructor(e,t={}){this.document=e,this.renderingMode=t.renderingMode||"editing",this.experimentalRenderingMode=!1,this.blockFillerMode=t.blockFillerMode||("editing"===this.renderingMode?"br":"nbsp"),this.preElements=["pre"],this.blockElements=["address","article","aside","blockquote","caption","center","dd","details","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","legend","li","main","menu","nav","ol","p","pre","section","summary","table","tbody","td","tfoot","th","thead","tr","ul"],this.inlineObjectElements=["object","iframe","input","button","textarea","select","option","video","embed","audio","img","canvas"],this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap,this._rawContentElementMatcher=new u.a,this._encounteredRawContentDomNodes=new WeakSet}bindFakeSelection(e,t){this._fakeSelectionMapping.set(e,new c.a(t))}fakeSelectionToView(e){return this._fakeSelectionMapping.get(e)}bindElements(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}unbindDomElement(e){const t=this._domToViewMapping.get(e);if(t){this._domToViewMapping.delete(e),this._viewToDomMapping.delete(t);for(const t of e.childNodes)this.unbindDomElement(t)}}bindDocumentFragments(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}shouldRenderAttribute(e,t){return!this.experimentalRenderingMode||"data"===this.renderingMode||!(e.toLowerCase().startsWith("on")||t.match(/(\b)(on\S+)(\s*)=|javascript:|(<\s*)(\/*)script/i)||t.match(/data:(?!image\/(png|jpeg|gif|webp))/i))}setContentOf(e,t){if(!this.experimentalRenderingMode||"data"===this.renderingMode)return void(e.innerHTML=t);const o=(new DOMParser).parseFromString(t,"text/html"),i=o.createDocumentFragment(),s=o.body.childNodes;for(;s.length>0;)i.appendChild(s[0]);const r=o.createTreeWalker(i,NodeFilter.SHOW_ELEMENT),n=[];let a;for(;a=r.nextNode();)n.push(a);for(const e of n){for(const t of e.getAttributeNames()){const o=e.getAttribute(t);this.shouldRenderAttribute(t,o)||e.removeAttribute(t)}const t=e.tagName.toLowerCase();this._shouldRenameElement(t)&&e.replaceWith(this._createReplacementDomElement(t,e))}for(;e.firstChild;)e.firstChild.remove();e.append(i)}viewToDom(e,t,o={}){if(e.is("$text")){const o=this._processDataFromViewText(e);return t.createTextNode(o)}{if(this.mapViewToDom(e))return this.mapViewToDom(e);let i;if(e.is("documentFragment"))i=t.createDocumentFragment(),o.bind&&this.bindDocumentFragments(i,e);else{if(e.is("uiElement"))return i="$comment"===e.name?t.createComment(e.getCustomProperty("$rawContent")):e.render(t,this),o.bind&&this.bindElements(i,e),i;i=this._shouldRenameElement(e.name)?this._createReplacementDomElement(e.name):e.hasAttribute("xmlns")?t.createElementNS(e.getAttribute("xmlns"),e.name):t.createElement(e.name),e.is("rawElement")&&e.render(i,this),o.bind&&this.bindElements(i,e);for(const t of e.getAttributeKeys()){const o=e.getAttribute(t);this.shouldRenderAttribute(t,o)&&i.setAttribute(t,o)}}if(!1!==o.withChildren)for(const s of this.viewChildrenToDom(e,t,o))i.appendChild(s);return i}}*viewChildrenToDom(e,t,o={}){const i=e.getFillerOffset&&e.getFillerOffset();let s=0;for(const r of e.getChildren())i===s&&(yield this._getBlockFiller(t)),yield this.viewToDom(r,t,o),s++;i===s&&(yield this._getBlockFiller(t))}viewRangeToDom(e){const t=this.viewPositionToDom(e.start),o=this.viewPositionToDom(e.end),i=document.createRange();return i.setStart(t.parent,t.offset),i.setEnd(o.parent,o.offset),i}viewPositionToDom(e){const t=e.parent;if(t.is("$text")){const o=this.findCorrespondingDomText(t);if(!o)return null;let i=e.offset;return Object(h.i)(o)&&(i+=h.c),{parent:o,offset:i}}{let o,i,s;if(0===e.offset){if(o=this.mapViewToDom(t),!o)return null;s=o.childNodes[0]}else{const t=e.nodeBefore;if(i=t.is("$text")?this.findCorrespondingDomText(t):this.mapViewToDom(e.nodeBefore),!i)return null;o=i.parentNode,s=i.nextSibling}if(Object(m.a)(s)&&Object(h.i)(s))return{parent:s,offset:h.c};return{parent:o,offset:i?g(i)+1:0}}}domToView(e,t={}){if(this.isBlockFiller(e))return null;const o=this.getHostViewElement(e);if(o)return o;if(this.isComment(e)&&t.skipComments)return null;if(Object(m.a)(e)){if(Object(h.h)(e))return null;{const t=this._processDataFromDomText(e);return""===t?null:new i.a(this.document,t)}}{if(this.mapDomToView(e))return this.mapDomToView(e);let o;if(this.isDocumentFragment(e))o=new l.a(this.document),t.bind&&this.bindDocumentFragments(e,o);else{o=this._createViewElement(e,t),t.bind&&this.bindElements(e,o);const i=e.attributes;if(i)for(let e=i.length-1;e>=0;e--)o._setAttribute(i[e].name,i[e].value);if(this._isViewElementWithRawContent(o,t)||this.isComment(e)){const t=this.isComment(e)?e.data:e.innerHTML;return o._setCustomProperty("$rawContent",t),this._encounteredRawContentDomNodes.add(e),o}}if(!1!==t.withChildren)for(const i of this.domChildrenToView(e,t))o._appendChild(i);return o}}*domChildrenToView(e,t={}){for(let o=0;o<e.childNodes.length;o++){const i=e.childNodes[o],s=this.domToView(i,t);null!==s&&(yield s)}}domSelectionToView(e){if(1===e.rangeCount){let t=e.getRangeAt(0).startContainer;Object(m.a)(t)&&(t=t.parentNode);const o=this.fakeSelectionToView(t);if(o)return o}const t=this.isDomSelectionBackward(e),o=[];for(let t=0;t<e.rangeCount;t++){const i=e.getRangeAt(t),s=this.domRangeToView(i);s&&o.push(s)}return new c.a(o,{backward:t})}domRangeToView(e){const t=this.domPositionToView(e.startContainer,e.startOffset),o=this.domPositionToView(e.endContainer,e.endOffset);return t&&o?new a.a(t,o):null}domPositionToView(e,t=0){if(this.isBlockFiller(e))return this.domPositionToView(e.parentNode,g(e));const o=this.mapDomToView(e);if(o&&(o.is("uiElement")||o.is("rawElement")))return n.a._createBefore(o);if(Object(m.a)(e)){if(Object(h.h)(e))return this.domPositionToView(e.parentNode,g(e));const o=this.findCorrespondingViewText(e);let i=t;return o?(Object(h.i)(e)&&(i-=h.c,i=i<0?0:i),new n.a(o,i)):null}if(0===t){const t=this.mapDomToView(e);if(t)return new n.a(t,0)}else{const o=e.childNodes[t-1],i=Object(m.a)(o)?this.findCorrespondingViewText(o):this.mapDomToView(o);if(i&&i.parent)return new n.a(i.parent,i.index+1)}return null}mapDomToView(e){return this.getHostViewElement(e)||this._domToViewMapping.get(e)}findCorrespondingViewText(e){if(Object(h.h)(e))return null;const t=this.getHostViewElement(e);if(t)return t;const o=e.previousSibling;if(o){if(!this.isElement(o))return null;const e=this.mapDomToView(o);if(e){return e.nextSibling instanceof i.a?e.nextSibling:null}}else{const t=this.mapDomToView(e.parentNode);if(t){const e=t.getChild(0);return e instanceof i.a?e:null}}return null}mapViewToDom(e){return this._viewToDomMapping.get(e)}findCorrespondingDomText(e){const t=e.previousSibling;return t&&this.mapViewToDom(t)?this.mapViewToDom(t).nextSibling:!t&&e.parent&&this.mapViewToDom(e.parent)?this.mapViewToDom(e.parent).childNodes[0]:null}focus(e){const t=this.mapViewToDom(e);if(t&&t.ownerDocument.activeElement!==t){const{scrollX:e,scrollY:o}=p.a.window,i=[];v(t,e=>{const{scrollLeft:t,scrollTop:o}=e;i.push([t,o])}),t.focus(),v(t,e=>{const[t,o]=i.shift();e.scrollLeft=t,e.scrollTop=o}),p.a.window.scrollTo(e,o)}}isElement(e){return e&&e.nodeType==Node.ELEMENT_NODE}isDocumentFragment(e){return e&&e.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isComment(e){return e&&e.nodeType==Node.COMMENT_NODE}isBlockFiller(e){return"br"==this.blockFillerMode?e.isEqualNode(k):!("BR"!==e.tagName||!y(e,this.blockElements)||1!==e.parentNode.childNodes.length)||(e.isEqualNode(_)||function(e,t){return e.isEqualNode(b)&&y(e,t)&&1===e.parentNode.childNodes.length}(e,this.blockElements))}isDomSelectionBackward(e){if(e.isCollapsed)return!1;const t=document.createRange();t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset);const o=t.collapsed;return t.detach(),o}getHostViewElement(e){const t=f(e);for(t.pop();t.length;){const e=t.pop(),o=this._domToViewMapping.get(e);if(o&&(o.is("uiElement")||o.is("rawElement")))return o}return null}isDomSelectionCorrect(e){return this._isDomSelectionPositionCorrect(e.anchorNode,e.anchorOffset)&&this._isDomSelectionPositionCorrect(e.focusNode,e.focusOffset)}registerRawContentMatcher(e){this._rawContentElementMatcher.add(e)}_getBlockFiller(e){switch(this.blockFillerMode){case"nbsp":return Object(h.e)(e);case"markedNbsp":return Object(h.d)(e);case"br":return Object(h.a)(e)}}_isDomSelectionPositionCorrect(e,t){if(Object(m.a)(e)&&Object(h.i)(e)&&t<h.c)return!1;if(this.isElement(e)&&Object(h.i)(e.childNodes[t]))return!1;const o=this.mapDomToView(e);return!o||!o.is("uiElement")&&!o.is("rawElement")}_processDataFromViewText(e){let t=e.data;if(e.getAncestors().some(e=>this.preElements.includes(e.name)))return t;if(" "==t.charAt(0)){const o=this._getTouchingInlineViewNode(e,!1);!(o&&o.is("$textProxy")&&this._nodeEndsWithSpace(o))&&o||(t=" "+t.substr(1))}if(" "==t.charAt(t.length-1)){const o=this._getTouchingInlineViewNode(e,!0),i=o&&o.is("$textProxy")&&" "==o.data.charAt(0);" "!=t.charAt(t.length-2)&&o&&!i||(t=t.substr(0,t.length-1)+" ")}return t.replace(/ {2}/g,"  ")}_nodeEndsWithSpace(e){if(e.getAncestors().some(e=>this.preElements.includes(e.name)))return!1;const t=this._processDataFromViewText(e);return" "==t.charAt(t.length-1)}_processDataFromDomText(e){let t=e.data;if(function(e,t){return f(e).some(e=>e.tagName&&t.includes(e.tagName.toLowerCase()))}(e,this.preElements))return Object(h.f)(e);t=t.replace(/[ \n\t\r]{1,}/g," ");const o=this._getTouchingInlineDomNode(e,!1),i=this._getTouchingInlineDomNode(e,!0),s=this._checkShouldLeftTrimDomText(e,o),r=this._checkShouldRightTrimDomText(e,i);s&&(t=t.replace(/^ /,"")),r&&(t=t.replace(/ $/,"")),t=Object(h.f)(new Text(t)),t=t.replace(/ \u00A0/g," ");const n=i&&this.isElement(i)&&"BR"!=i.tagName,a=i&&Object(m.a)(i)&&" "==i.data.charAt(0);return(/( |\u00A0)\u00A0$/.test(t)||!i||n||a)&&(t=t.replace(/\u00A0$/," ")),(s||o&&this.isElement(o)&&"BR"!=o.tagName)&&(t=t.replace(/^\u00A0/," ")),t}_checkShouldLeftTrimDomText(e,t){return!t||(this.isElement(t)?"BR"===t.tagName:!this._encounteredRawContentDomNodes.has(e.previousSibling)&&/[^\S\u00A0]/.test(t.data.charAt(t.data.length-1)))}_checkShouldRightTrimDomText(e,t){return!t&&!Object(h.i)(e)}_getTouchingInlineViewNode(e,t){const o=new d.a({startPosition:t?n.a._createAfter(e):n.a._createBefore(e),direction:t?"forward":"backward"});for(const e of o){if(e.item.is("element")&&this.inlineObjectElements.includes(e.item.name))return e.item;if(e.item.is("containerElement"))return null;if(e.item.is("element","br"))return null;if(e.item.is("$textProxy"))return e.item}return null}_getTouchingInlineDomNode(e,t){if(!e.parentNode)return null;const o=t?"firstChild":"lastChild",i=t?"nextSibling":"previousSibling";let s=!0;do{if(!s&&e[o]?e=e[o]:e[i]?(e=e[i],s=!1):(e=e.parentNode,s=!0),!e||this._isBlockElement(e))return null}while(!Object(m.a)(e)&&"BR"!=e.tagName&&!this._isInlineObjectElement(e));return e}_isBlockElement(e){return this.isElement(e)&&this.blockElements.includes(e.tagName.toLowerCase())}_isInlineObjectElement(e){return this.isElement(e)&&this.inlineObjectElements.includes(e.tagName.toLowerCase())}_createViewElement(e,t){if(this.isComment(e))return new r.a(this.document,"$comment");const o=t.keepOriginalCase?e.tagName:e.tagName.toLowerCase();return new s.a(this.document,o)}_isViewElementWithRawContent(e,t){return!1!==t.withChildren&&this._rawContentElementMatcher.match(e)}_shouldRenameElement(e){return this.experimentalRenderingMode&&"editing"==this.renderingMode&&"script"==e}_createReplacementDomElement(e,t=null){const o=document.createElement("span");if(o.setAttribute("data-ck-hidden",e),t){for(;t.firstChild;)o.appendChild(t.firstChild);for(const e of t.getAttributeNames())o.setAttribute(e,t.getAttribute(e))}return o}}function v(e,t){for(;e&&e!=p.a.document;)t(e),e=e.parentNode}function y(e,t){const o=e.parentNode;return o&&o.tagName&&t.includes(o.tagName.toLowerCase())}},"./packages/ckeditor5-engine/src/view/downcastwriter.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return v}));var i=o("./packages/ckeditor5-engine/src/view/position.js"),s=o("./packages/ckeditor5-engine/src/view/range.js"),r=o("./packages/ckeditor5-engine/src/view/selection.js"),n=o("./packages/ckeditor5-engine/src/view/containerelement.js"),a=o("./packages/ckeditor5-engine/src/view/attributeelement.js"),c=o("./packages/ckeditor5-engine/src/view/element.js"),l=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),d=o("./packages/ckeditor5-engine/src/view/node.js");class u extends c.a{constructor(e,t,o,i){super(e,t,o,i),this._isAllowedInsideAttributeElement=!0,this.getFillerOffset=h}is(e,t=null){return t?t===this.name&&("emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e):"emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}_insertChild(e,t){if(t&&(t instanceof d.a||Array.from(t).length>0))throw new l.a("view-emptyelement-cannot-add",[this,t])}}function h(){return null}var p=o("./packages/ckeditor5-engine/src/view/uielement.js");class g extends c.a{constructor(e,t,o,i){super(e,t,o,i),this._isAllowedInsideAttributeElement=!0,this.getFillerOffset=f}is(e,t=null){return t?t===this.name&&("rawElement"===e||"view:rawElement"===e||"element"===e||"view:element"===e):"rawElement"===e||"view:rawElement"===e||e===this.name||e==="view:"+this.name||"element"===e||"view:element"===e||"node"===e||"view:node"===e}_insertChild(e,t){if(t&&(t instanceof d.a||Array.from(t).length>0))throw new l.a("view-rawelement-cannot-add",[this,t])}}function f(){return null}var m=o("./packages/ckeditor5-engine/src/view/documentfragment.js"),k=o("./packages/ckeditor5-utils/src/isiterable.js"),b=o("./packages/ckeditor5-engine/src/view/text.js"),_=o("./packages/ckeditor5-engine/src/view/editableelement.js"),w=o("./node_modules/lodash-es/isPlainObject.js");class v{constructor(e){this.document=e,this._cloneGroups=new Map}setSelection(e,t,o){this.document.selection._setTo(e,t,o)}setSelectionFocus(e,t){this.document.selection._setFocus(e,t)}createDocumentFragment(e){return new m.a(this.document,e)}createText(e){return new b.a(this.document,e)}createAttributeElement(e,t,o={}){const i=new a.a(this.document,e,t);return"number"==typeof o.priority&&(i._priority=o.priority),o.id&&(i._id=o.id),i}createContainerElement(e,t,o={}){const i=new n.a(this.document,e,t);return void 0!==o.isAllowedInsideAttributeElement&&(i._isAllowedInsideAttributeElement=o.isAllowedInsideAttributeElement),i}createEditableElement(e,t){const o=new _.a(this.document,e,t);return o._document=this.document,o}createEmptyElement(e,t,o={}){const i=new u(this.document,e,t);return void 0!==o.isAllowedInsideAttributeElement&&(i._isAllowedInsideAttributeElement=o.isAllowedInsideAttributeElement),i}createUIElement(e,t,o,i={}){const s=new p.a(this.document,e,t);return o&&(s.render=o),void 0!==i.isAllowedInsideAttributeElement&&(s._isAllowedInsideAttributeElement=i.isAllowedInsideAttributeElement),s}createRawElement(e,t,o,i={}){const s=new g(this.document,e,t);return s.render=o||(()=>{}),void 0!==i.isAllowedInsideAttributeElement&&(s._isAllowedInsideAttributeElement=i.isAllowedInsideAttributeElement),s}setAttribute(e,t,o){o._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,o){Object(w.a)(e)&&void 0===o&&(o=t),o._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,o){o._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}breakAttributes(e){return e instanceof i.a?this._breakAttributes(e):this._breakAttributesRange(e)}breakContainer(e){const t=e.parent;if(!t.is("containerElement"))throw new l.a("view-writer-break-non-container-element",this.document);if(!t.parent)throw new l.a("view-writer-break-root",this.document);if(e.isAtStart)return i.a._createBefore(t);if(!e.isAtEnd){const o=t._clone(!1);this.insert(i.a._createAfter(t),o);const r=new s.a(e,i.a._createAt(t,"end")),n=new i.a(o,0);this.move(r,n)}return i.a._createAfter(t)}mergeAttributes(e){const t=e.offset,o=e.parent;if(o.is("$text"))return e;if(o.is("attributeElement")&&0===o.childCount){const e=o.parent,t=o.index;return o._remove(),this._removeFromClonedElementsGroup(o),this.mergeAttributes(new i.a(e,t))}const s=o.getChild(t-1),r=o.getChild(t);if(!s||!r)return e;if(s.is("$text")&&r.is("$text"))return O(s,r);if(s.is("attributeElement")&&r.is("attributeElement")&&s.isSimilar(r)){const e=s.childCount;return s._appendChild(r.getChildren()),r._remove(),this._removeFromClonedElementsGroup(r),this.mergeAttributes(new i.a(s,e))}return e}mergeContainers(e){const t=e.nodeBefore,o=e.nodeAfter;if(!(t&&o&&t.is("containerElement")&&o.is("containerElement")))throw new l.a("view-writer-merge-containers-invalid-position",this.document);const r=t.getChild(t.childCount-1),n=r instanceof b.a?i.a._createAt(r,"end"):i.a._createAt(t,"end");return this.move(s.a._createIn(o),i.a._createAt(t,"end")),this.remove(s.a._createOn(o)),n}insert(e,t){(function e(t,o){for(const i of t){if(!A.some(e=>i instanceof e))throw new l.a("view-writer-insert-invalid-node-type",o);i.is("$text")||e(i.getChildren(),o)}})(t=Object(k.a)(t)?[...t]:[t],this.document);const o=t.reduce((e,t)=>{const o=e[e.length-1],i=!(t.is("uiElement")&&t.isAllowedInsideAttributeElement);return o&&o.breakAttributes==i?o.nodes.push(t):e.push({breakAttributes:i,nodes:[t]}),e},[]);let i=null,r=e;for(const{nodes:e,breakAttributes:t}of o){const o=this._insertNodes(r,e,t);i||(i=o.start),r=o.end}return i?new s.a(i,r):new s.a(e)}remove(e){const t=e instanceof s.a?e:s.a._createOn(e);if(C(t,this.document),t.isCollapsed)return new m.a(this.document);const{start:o,end:i}=this._breakAttributesRange(t,!0),r=o.parent,n=i.offset-o.offset,a=r._removeChildren(o.offset,n);for(const e of a)this._removeFromClonedElementsGroup(e);const c=this.mergeAttributes(o);return t.start=c,t.end=c.clone(),new m.a(this.document,a)}clear(e,t){C(e,this.document);const o=e.getWalker({direction:"backward",ignoreElementEnd:!0});for(const i of o){const o=i.item;let r;if(o.is("element")&&t.isSimilar(o))r=s.a._createOn(o);else if(!i.nextPosition.isAfter(e.start)&&o.is("$textProxy")){const e=o.getAncestors().find(e=>e.is("element")&&t.isSimilar(e));e&&(r=s.a._createIn(e))}r&&(r.end.isAfter(e.end)&&(r.end=e.end),r.start.isBefore(e.start)&&(r.start=e.start),this.remove(r))}}move(e,t){let o;if(t.isAfter(e.end)){const i=(t=this._breakAttributes(t,!0)).parent,s=i.childCount;e=this._breakAttributesRange(e,!0),o=this.remove(e),t.offset+=i.childCount-s}else o=this.remove(e);return this.insert(t,o)}wrap(e,t){if(!(t instanceof a.a))throw new l.a("view-writer-wrap-invalid-attribute",this.document);if(C(e,this.document),e.isCollapsed){let i=e.start;i.parent.is("element")&&(o=i.parent,!Array.from(o.getChildren()).some(e=>!e.is("uiElement")))&&(i=i.getLastMatchingPosition(e=>e.item.is("uiElement"))),i=this._wrapPosition(i,t);const r=this.document.selection;return r.isCollapsed&&r.getFirstPosition().isEqual(e.start)&&this.setSelection(i),new s.a(i)}return this._wrapRange(e,t);var o}unwrap(e,t){if(!(t instanceof a.a))throw new l.a("view-writer-unwrap-invalid-attribute",this.document);if(C(e,this.document),e.isCollapsed)return e;const{start:o,end:i}=this._breakAttributesRange(e,!0),r=o.parent,n=this._unwrapChildren(r,o.offset,i.offset,t),c=this.mergeAttributes(n.start);c.isEqual(n.start)||n.end.offset--;const d=this.mergeAttributes(n.end);return new s.a(c,d)}rename(e,t){const o=new n.a(this.document,e,t.getAttributes());return this.insert(i.a._createAfter(t),o),this.move(s.a._createIn(t),i.a._createAt(o,0)),this.remove(s.a._createOn(t)),o}clearClonedElementsGroup(e){this._cloneGroups.delete(e)}createPositionAt(e,t){return i.a._createAt(e,t)}createPositionAfter(e){return i.a._createAfter(e)}createPositionBefore(e){return i.a._createBefore(e)}createRange(e,t){return new s.a(e,t)}createRangeOn(e){return s.a._createOn(e)}createRangeIn(e){return s.a._createIn(e)}createSelection(e,t,o){return new r.a(e,t,o)}_insertNodes(e,t,o){let i,r;if(i=o?y(e):e.parent.is("$text")?e.parent.parent:e.parent,!i)throw new l.a("view-writer-invalid-position-container",this.document);r=o?this._breakAttributes(e,!0):e.parent.is("$text")?P(e):e;const n=i._insertChild(r.offset,t);for(const e of t)this._addToClonedElementsGroup(e);const a=r.getShiftedBy(n),c=this.mergeAttributes(r);c.isEqual(r)||a.offset--;const d=this.mergeAttributes(a);return new s.a(c,d)}_wrapChildren(e,t,o,r){let n=t;const a=[];for(;n<o;){const t=e.getChild(n),o=t.is("$text"),s=t.is("attributeElement"),c=t.isAllowedInsideAttributeElement;if(s&&this._wrapAttributeElement(r,t))a.push(new i.a(e,n));else if(o||c||s&&j(r,t)){const o=r._clone();t._remove(),o._appendChild(t),e._insertChild(n,o),this._addToClonedElementsGroup(o),a.push(new i.a(e,n))}else s&&this._wrapChildren(t,0,t.childCount,r);n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t)continue;this.mergeAttributes(e).isEqual(e)||(c++,o--)}return s.a._createFromParentsAndOffsets(e,t,e,o)}_unwrapChildren(e,t,o,r){let n=t;const a=[];for(;n<o;){const t=e.getChild(n);if(t.is("attributeElement"))if(t.isSimilar(r)){const s=t.getChildren(),r=t.childCount;t._remove(),e._insertChild(n,s),this._removeFromClonedElementsGroup(t),a.push(new i.a(e,n),new i.a(e,n+r)),n+=r,o+=r-1}else this._unwrapAttributeElement(r,t)?(a.push(new i.a(e,n),new i.a(e,n+1)),n++):(this._unwrapChildren(t,0,t.childCount,r),n++);else n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t||e.offset==o)continue;this.mergeAttributes(e).isEqual(e)||(c++,o--)}return s.a._createFromParentsAndOffsets(e,t,e,o)}_wrapRange(e,t){const{start:o,end:i}=this._breakAttributesRange(e,!0),r=o.parent,n=this._wrapChildren(r,o.offset,i.offset,t),a=this.mergeAttributes(n.start);a.isEqual(n.start)||n.end.offset--;const c=this.mergeAttributes(n.end);return new s.a(a,c)}_wrapPosition(e,t){if(t.isSimilar(e.parent))return x(e.clone());e.parent.is("$text")&&(e=P(e));const o=this.createAttributeElement();o._priority=Number.POSITIVE_INFINITY,o.isSimilar=()=>!1,e.parent._insertChild(e.offset,o);const r=new s.a(e,e.getShiftedBy(1));this.wrap(r,t);const n=new i.a(o.parent,o.index);o._remove();const a=n.nodeBefore,c=n.nodeAfter;return a instanceof b.a&&c instanceof b.a?O(a,c):x(n)}_wrapAttributeElement(e,t){if(!E(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const o of e.getAttributeKeys())if("class"!==o&&"style"!==o&&t.hasAttribute(o)&&t.getAttribute(o)!==e.getAttribute(o))return!1;for(const o of e.getStyleNames())if(t.hasStyle(o)&&t.getStyle(o)!==e.getStyle(o))return!1;for(const o of e.getAttributeKeys())"class"!==o&&"style"!==o&&(t.hasAttribute(o)||this.setAttribute(o,e.getAttribute(o),t));for(const o of e.getStyleNames())t.hasStyle(o)||this.setStyle(o,e.getStyle(o),t);for(const o of e.getClassNames())t.hasClass(o)||this.addClass(o,t);return!0}_unwrapAttributeElement(e,t){if(!E(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const o of e.getAttributeKeys())if("class"!==o&&"style"!==o&&(!t.hasAttribute(o)||t.getAttribute(o)!==e.getAttribute(o)))return!1;if(!t.hasClass(...e.getClassNames()))return!1;for(const o of e.getStyleNames())if(!t.hasStyle(o)||t.getStyle(o)!==e.getStyle(o))return!1;for(const o of e.getAttributeKeys())"class"!==o&&"style"!==o&&this.removeAttribute(o,t);return this.removeClass(Array.from(e.getClassNames()),t),this.removeStyle(Array.from(e.getStyleNames()),t),!0}_breakAttributesRange(e,t=!1){const o=e.start,i=e.end;if(C(e,this.document),e.isCollapsed){const o=this._breakAttributes(e.start,t);return new s.a(o,o)}const r=this._breakAttributes(i,t),n=r.parent.childCount,a=this._breakAttributes(o,t);return r.offset+=r.parent.childCount-n,new s.a(a,r)}_breakAttributes(e,t=!1){const o=e.offset,s=e.parent;if(e.parent.is("emptyElement"))throw new l.a("view-writer-cannot-break-empty-element",this.document);if(e.parent.is("uiElement"))throw new l.a("view-writer-cannot-break-ui-element",this.document);if(e.parent.is("rawElement"))throw new l.a("view-writer-cannot-break-raw-element",this.document);if(!t&&s.is("$text")&&T(s.parent))return e.clone();if(T(s))return e.clone();if(s.is("$text"))return this._breakAttributes(P(e),t);if(o==s.childCount){const e=new i.a(s.parent,s.index+1);return this._breakAttributes(e,t)}if(0===o){const e=new i.a(s.parent,s.index);return this._breakAttributes(e,t)}{const e=s.index+1,r=s._clone();s.parent._insertChild(e,r),this._addToClonedElementsGroup(r);const n=s.childCount-o,a=s._removeChildren(o,n);r._appendChild(a);const c=new i.a(s.parent,e);return this._breakAttributes(c,t)}}_addToClonedElementsGroup(e){if(!e.root.is("rootElement"))return;if(e.is("element"))for(const t of e.getChildren())this._addToClonedElementsGroup(t);const t=e.id;if(!t)return;let o=this._cloneGroups.get(t);o||(o=new Set,this._cloneGroups.set(t,o)),o.add(e),e._clonesGroup=o}_removeFromClonedElementsGroup(e){if(e.is("element"))for(const t of e.getChildren())this._removeFromClonedElementsGroup(t);const t=e.id;if(!t)return;const o=this._cloneGroups.get(t);o&&o.delete(e)}}function y(e){let t=e.parent;for(;!T(t);){if(!t)return;t=t.parent}return t}function j(e,t){return e.priority<t.priority||!(e.priority>t.priority)&&e.getIdentity()<t.getIdentity()}function x(e){const t=e.nodeBefore;if(t&&t.is("$text"))return new i.a(t,t.data.length);const o=e.nodeAfter;return o&&o.is("$text")?new i.a(o,0):e}function P(e){if(e.offset==e.parent.data.length)return new i.a(e.parent.parent,e.parent.index+1);if(0===e.offset)return new i.a(e.parent.parent,e.parent.index);const t=e.parent.data.slice(e.offset);return e.parent._data=e.parent.data.slice(0,e.offset),e.parent.parent._insertChild(e.parent.index+1,new b.a(e.root.document,t)),new i.a(e.parent.parent,e.parent.index+1)}function O(e,t){const o=e.data.length;return e._data+=t.data,t._remove(),new i.a(e,o)}const A=[b.a,a.a,n.a,u,g,p.a];function T(e){return e&&(e.is("containerElement")||e.is("documentFragment"))}function C(e,t){const o=y(e.start),i=y(e.end);if(!o||!i||o!==i)throw new l.a("view-writer-invalid-range-container",t)}function E(e,t){return null===e.id&&null===t.id}},"./packages/ckeditor5-engine/src/view/editableelement.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return n}));var i=o("./packages/ckeditor5-engine/src/view/containerelement.js"),s=o("./packages/ckeditor5-utils/src/mix.js"),r=o("./packages/ckeditor5-utils/src/observablemixin.js");class n extends i.a{constructor(e,t,o,i){super(e,t,o,i),this.set("isReadOnly",!1),this.set("isFocused",!1),this.bind("isReadOnly").to(e),this.bind("isFocused").to(e,"isFocused",t=>t&&e.selection.editableElement==this),this.listenTo(e.selection,"change",()=>{this.isFocused=e.isFocused&&e.selection.editableElement==this})}is(e,t=null){return t?t===this.name&&("editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}destroy(){this.stopListening()}}Object(s.a)(n,r.a)},"./packages/ckeditor5-engine/src/view/element.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return u}));var i=o("./packages/ckeditor5-engine/src/view/node.js"),s=o("./packages/ckeditor5-engine/src/view/text.js"),r=o("./packages/ckeditor5-engine/src/view/textproxy.js"),n=o("./packages/ckeditor5-utils/src/tomap.js"),a=o("./packages/ckeditor5-utils/src/toarray.js"),c=o("./packages/ckeditor5-utils/src/isiterable.js"),l=o("./packages/ckeditor5-engine/src/view/matcher.js"),d=o("./packages/ckeditor5-engine/src/view/stylesmap.js");class u extends i.a{constructor(e,t,o,i){if(super(e),this.name=t,this._attrs=function(e){e=Object(n.a)(e);for(const[t,o]of e)null===o?e.delete(t):"string"!=typeof o&&e.set(t,String(o));return e}(o),this._children=[],i&&this._insertChild(0,i),this._classes=new Set,this._attrs.has("class")){const e=this._attrs.get("class");h(this._classes,e),this._attrs.delete("class")}this._styles=new d.b(this.document.stylesProcessor),this._attrs.has("style")&&(this._styles.setTo(this._attrs.get("style")),this._attrs.delete("style")),this._customProperties=new Map,this._isAllowedInsideAttributeElement=!1}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}get isAllowedInsideAttributeElement(){return this._isAllowedInsideAttributeElement}is(e,t=null){return t?t===this.name&&("element"===e||"view:element"===e):"element"===e||"view:element"===e||"node"===e||"view:node"===e}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield"class"),this._styles.isEmpty||(yield"style"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield["class",this.getAttribute("class")]),this._styles.isEmpty||(yield["style",this.getAttribute("style")])}getAttribute(e){if("class"==e)return this._classes.size>0?[...this._classes].join(" "):void 0;if("style"==e){const e=this._styles.toString();return""==e?void 0:e}return this._attrs.get(e)}hasAttribute(e){return"class"==e?this._classes.size>0:"style"==e?!this._styles.isEmpty:this._attrs.has(e)}isSimilar(e){if(!(e instanceof u))return!1;if(this===e)return!0;if(this.name!=e.name)return!1;if(this.isAllowedInsideAttributeElement!=e.isAllowedInsideAttributeElement)return!1;if(this._attrs.size!==e._attrs.size||this._classes.size!==e._classes.size||this._styles.size!==e._styles.size)return!1;for(const[t,o]of this._attrs)if(!e._attrs.has(t)||e._attrs.get(t)!==o)return!1;for(const t of this._classes)if(!e._classes.has(t))return!1;for(const t of this._styles.getStyleNames())if(!e._styles.has(t)||e._styles.getAsString(t)!==this._styles.getAsString(t))return!1;return!0}hasClass(...e){for(const t of e)if(!this._classes.has(t))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(e){return this._styles.getAsString(e)}getNormalizedStyle(e){return this._styles.getNormalized(e)}getStyleNames(e=!1){return this._styles.getStyleNames(e)}hasStyle(...e){for(const t of e)if(!this._styles.has(t))return!1;return!0}findAncestor(...e){const t=new l.a(...e);let o=this.parent;for(;o;){if(t.match(o))return o;o=o.parent}return null}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const e=Array.from(this._classes).sort().join(","),t=this._styles.toString(),o=Array.from(this._attrs).map(e=>`${e[0]}="${e[1]}"`).sort().join(" ");return this.name+(""==e?"":` class="${e}"`)+(t?` style="${t}"`:"")+(""==o?"":" "+o)}_clone(e=!1){const t=[];if(e)for(const o of this.getChildren())t.push(o._clone(e));const o=new this.constructor(this.document,this.name,this._attrs,t);return o._classes=new Set(this._classes),o._styles.set(this._styles.getNormalized()),o._customProperties=new Map(this._customProperties),o.getFillerOffset=this.getFillerOffset,o._isAllowedInsideAttributeElement=this.isAllowedInsideAttributeElement,o}_appendChild(e){return this._insertChild(this.childCount,e)}_insertChild(e,t){this._fireChange("children",this);let o=0;const i=function(e,t){if("string"==typeof t)return[new s.a(e,t)];Object(c.a)(t)||(t=[t]);return Array.from(t).map(t=>"string"==typeof t?new s.a(e,t):t instanceof r.a?new s.a(e,t.data):t)}(this.document,t);for(const t of i)null!==t.parent&&t._remove(),t.parent=this,t.document=this.document,this._children.splice(e,0,t),e++,o++;return o}_removeChildren(e,t=1){this._fireChange("children",this);for(let o=e;o<e+t;o++)this._children[o].parent=null;return this._children.splice(e,t)}_setAttribute(e,t){t=String(t),this._fireChange("attributes",this),"class"==e?h(this._classes,t):"style"==e?this._styles.setTo(t):this._attrs.set(e,t)}_removeAttribute(e){return this._fireChange("attributes",this),"class"==e?this._classes.size>0&&(this._classes.clear(),!0):"style"==e?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(e)}_addClass(e){this._fireChange("attributes",this);for(const t of Object(a.a)(e))this._classes.add(t)}_removeClass(e){this._fireChange("attributes",this);for(const t of Object(a.a)(e))this._classes.delete(t)}_setStyle(e,t){this._fireChange("attributes",this),this._styles.set(e,t)}_removeStyle(e){this._fireChange("attributes",this);for(const t of Object(a.a)(e))this._styles.remove(t)}_setCustomProperty(e,t){this._customProperties.set(e,t)}_removeCustomProperty(e){return this._customProperties.delete(e)}}function h(e,t){const o=t.split(/\s+/);e.clear(),o.forEach(t=>e.add(t))}},"./packages/ckeditor5-engine/src/view/filler.js":function(e,t,o){"use strict";o.d(t,"e",(function(){return r})),o.d(t,"d",(function(){return n})),o.d(t,"a",(function(){return a})),o.d(t,"c",(function(){return c})),o.d(t,"b",(function(){return l})),o.d(t,"i",(function(){return d})),o.d(t,"h",(function(){return u})),o.d(t,"f",(function(){return h})),o.d(t,"g",(function(){return p}));var i=o("./packages/ckeditor5-utils/src/keyboard.js"),s=o("./packages/ckeditor5-utils/src/dom/istext.js");const r=e=>e.createTextNode(" "),n=e=>{const t=e.createElement("span");return t.dataset.ckeFiller=!0,t.innerHTML=" ",t},a=e=>{const t=e.createElement("br");return t.dataset.ckeFiller=!0,t},c=7,l="â ".repeat(c);function d(e){return Object(s.a)(e)&&e.data.substr(0,c)===l}function u(e){return e.data.length==c&&d(e)}function h(e){return d(e)?e.data.slice(c):e.data}function p(e){e.document.on("arrowKey",g,{priority:"low"})}function g(e,t){if(t.keyCode==i.f.arrowleft){const e=t.domTarget.ownerDocument.defaultView.getSelection();if(1==e.rangeCount&&e.getRangeAt(0).collapsed){const t=e.getRangeAt(0).startContainer,o=e.getRangeAt(0).startOffset;d(t)&&o<=c&&e.collapse(t,0)}}}},"./packages/ckeditor5-engine/src/view/matcher.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./node_modules/lodash-es/isPlainObject.js"),s=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class r{constructor(...e){this._patterns=[],this.add(...e)}add(...e){for(let t of e)("string"==typeof t||t instanceof RegExp)&&(t={name:t}),this._patterns.push(t)}match(...e){for(const t of e)for(const e of this._patterns){const o=n(t,e);if(o)return{element:t,pattern:e,match:o}}return null}matchAll(...e){const t=[];for(const o of e)for(const e of this._patterns){const i=n(o,e);i&&t.push({element:o,pattern:e,match:i})}return t.length>0?t:null}getElementName(){if(1!==this._patterns.length)return null;const e=this._patterns[0],t=e.name;return"function"==typeof e||!t||t instanceof RegExp?null:t}}function n(e,t){if("function"==typeof t)return t(e);const o={};return t.name&&(o.name=function(e,t){if(e instanceof RegExp)return!!t.match(e);return e===t}(t.name,e.name),!o.name)||t.attributes&&(o.attributes=function(e,t){const o=new Set(t.getAttributeKeys());Object(i.a)(e)?(void 0!==e.style&&Object(s.c)("matcher-pattern-deprecated-attributes-style-key",e),void 0!==e.class&&Object(s.c)("matcher-pattern-deprecated-attributes-class-key",e)):(o.delete("style"),o.delete("class"));return a(e,o,e=>t.getAttribute(e))}(t.attributes,e),!o.attributes)?null:!(t.classes&&(o.classes=function(e,t){return a(e,t.getClassNames())}(t.classes,e),!o.classes))&&(!(t.styles&&(o.styles=function(e,t){return a(e,t.getStyleNames(!0),e=>t.getStyle(e))}(t.styles,e),!o.styles))&&o)}function a(e,t,o){const r=function(e){if(Array.isArray(e))return e.map(e=>Object(i.a)(e)?(void 0!==e.key&&void 0!==e.value||Object(s.c)("matcher-pattern-missing-key-or-value",e),[e.key,e.value]):[e,!0]);if(Object(i.a)(e))return Object.entries(e);return[[e,!0]]}(e),n=Array.from(t),a=[];return r.forEach(([e,t])=>{n.forEach(i=>{(function(e,t){return!0===e||e===t||e instanceof RegExp&&t.match(e)})(e,i)&&function(e,t,o){if(!0===e)return!0;const i=o(t);return e===i||e instanceof RegExp&&!!String(i).match(e)}(t,i,o)&&a.push(i)})}),!r.length||a.length<r.length?null:a}},"./packages/ckeditor5-engine/src/view/node.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return c}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),s=o("./packages/ckeditor5-utils/src/emittermixin.js"),r=o("./packages/ckeditor5-utils/src/mix.js"),n=o("./packages/ckeditor5-utils/src/comparearrays.js"),a=o("./node_modules/lodash-es/clone.js");o("./packages/ckeditor5-utils/src/version.js");class c{constructor(e){this.document=e,this.parent=null}get index(){let e;if(!this.parent)return null;if(-1==(e=this.parent.getChildIndex(this)))throw new i.a("view-node-not-found-in-parent",this);return e}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.index),t=t.parent;return e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let o=e.includeSelf?this:this.parent;for(;o;)t[e.parentFirst?"push":"unshift"](o),o=o.parent;return t}getCommonAncestor(e,t={}){const o=this.getAncestors(t),i=e.getAncestors(t);let s=0;for(;o[s]==i[s]&&o[s];)s++;return 0===s?null:o[s-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),o=e.getPath(),i=Object(n.a)(t,o);switch(i){case"prefix":return!0;case"extension":return!1;default:return t[i]<o[i]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}_remove(){this.parent._removeChildren(this.index)}_fireChange(e,t){this.fire("change:"+e,t),this.parent&&this.parent._fireChange(e,t)}toJSON(){const e=Object(a.a)(this);return delete e.parent,e}is(e){return"node"===e||"view:node"===e}}Object(r.a)(c,s.c)},"./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-utils/src/eventinfo.js");class s extends i.a{constructor(e,t,o){super(e,t),this.startRange=o,this._eventPhase="none",this._currentTarget=null}get eventPhase(){return this._eventPhase}get currentTarget(){return this._currentTarget}}},"./packages/ckeditor5-engine/src/view/observer/domeventdata.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./node_modules/lodash-es/assignIn.js");class s{constructor(e,t,o){this.view=e,this.document=e.document,this.domEvent=t,this.domTarget=t.target,Object(i.a)(this,o)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}},"./packages/ckeditor5-engine/src/view/observer/domeventobserver.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-engine/src/view/observer/observer.js"),s=o("./packages/ckeditor5-engine/src/view/observer/domeventdata.js");class r extends i.a{constructor(e){super(e),this.useCapture=!1}observe(e){("string"==typeof this.domEventType?[this.domEventType]:this.domEventType).forEach(t=>{this.listenTo(e,t,(e,t)=>{this.isEnabled&&!this.checkShouldIgnoreEventFromTarget(t.target)&&this.onDomEvent(t)},{useCapture:this.useCapture})})}fire(e,t,o){this.isEnabled&&this.document.fire(e,new s.a(this.view,t,o))}}},"./packages/ckeditor5-engine/src/view/observer/mouseobserver.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-engine/src/view/observer/domeventobserver.js");class s extends i.a{constructor(e){super(e),this.domEventType=["mousedown","mouseup","mouseover","mouseout"]}onDomEvent(e){this.fire(e.type,e)}}},"./packages/ckeditor5-engine/src/view/observer/observer.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-utils/src/dom/emittermixin.js"),s=o("./packages/ckeditor5-utils/src/mix.js");class r{constructor(e){this.view=e,this.document=e.document,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}checkShouldIgnoreEventFromTarget(e){return e&&3===e.nodeType&&(e=e.parentNode),!(!e||1!==e.nodeType)&&e.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")}}Object(s.a)(r,i.a)},"./packages/ckeditor5-engine/src/view/position.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-engine/src/view/treewalker.js"),s=o("./packages/ckeditor5-utils/src/comparearrays.js"),r=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),n=o("./packages/ckeditor5-engine/src/view/editableelement.js");o("./packages/ckeditor5-utils/src/version.js");class a{constructor(e,t){this.parent=e,this.offset=t}get nodeAfter(){return this.parent.is("$text")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is("$text")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const e=this.parent.is("$text")?this.parent.data.length:this.parent.childCount;return this.offset===e}get root(){return this.parent.root}get editableElement(){let e=this.parent;for(;!(e instanceof n.a);){if(!e.parent)return null;e=e.parent}return e}getShiftedBy(e){const t=a._createAt(this),o=t.offset+e;return t.offset=o<0?0:o,t}getLastMatchingPosition(e,t={}){t.startPosition=this;const o=new i.a(t);return o.skip(e),o.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(e){const t=this.getAncestors(),o=e.getAncestors();let i=0;for(;t[i]==o[i]&&t[i];)i++;return 0===i?null:t[i-1]}is(e){return"position"===e||"view:position"===e}isEqual(e){return this.parent==e.parent&&this.offset==e.offset}isBefore(e){return"before"==this.compareWith(e)}isAfter(e){return"after"==this.compareWith(e)}compareWith(e){if(this.root!==e.root)return"different";if(this.isEqual(e))return"same";const t=this.parent.is("node")?this.parent.getPath():[],o=e.parent.is("node")?e.parent.getPath():[];t.push(this.offset),o.push(e.offset);const i=Object(s.a)(t,o);switch(i){case"prefix":return"before";case"extension":return"after";default:return t[i]<o[i]?"before":"after"}}getWalker(e={}){return e.startPosition=this,new i.a(e)}clone(){return new a(this.parent,this.offset)}static _createAt(e,t){if(e instanceof a)return new this(e.parent,e.offset);{const o=e;if("end"==t)t=o.is("$text")?o.data.length:o.childCount;else{if("before"==t)return this._createBefore(o);if("after"==t)return this._createAfter(o);if(0!==t&&!t)throw new r.a("view-createpositionat-offset-required",o)}return new a(o,t)}}static _createAfter(e){if(e.is("$textProxy"))return new a(e.textNode,e.offsetInText+e.data.length);if(!e.parent)throw new r.a("view-position-after-root",e,{root:e});return new a(e.parent,e.index+1)}static _createBefore(e){if(e.is("$textProxy"))return new a(e.textNode,e.offsetInText);if(!e.parent)throw new r.a("view-position-before-root",e,{root:e});return new a(e.parent,e.index)}}},"./packages/ckeditor5-engine/src/view/range.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-engine/src/view/position.js"),s=o("./packages/ckeditor5-engine/src/view/treewalker.js");class r{constructor(e,t=null){this.start=e.clone(),this.end=t?t.clone():e.clone()}*[Symbol.iterator](){yield*new s.a({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){return this.start.parent===this.end.parent}get root(){return this.start.root}getEnlarged(){let e=this.start.getLastMatchingPosition(n,{direction:"backward"}),t=this.end.getLastMatchingPosition(n);return e.parent.is("$text")&&e.isAtStart&&(e=i.a._createBefore(e.parent)),t.parent.is("$text")&&t.isAtEnd&&(t=i.a._createAfter(t.parent)),new r(e,t)}getTrimmed(){let e=this.start.getLastMatchingPosition(n);if(e.isAfter(this.end)||e.isEqual(this.end))return new r(e,e);let t=this.end.getLastMatchingPosition(n,{direction:"backward"});const o=e.nodeAfter,s=t.nodeBefore;return o&&o.is("$text")&&(e=new i.a(o,0)),s&&s.is("$text")&&(t=new i.a(s,s.data.length)),new r(e,t)}isEqual(e){return this==e||this.start.isEqual(e.start)&&this.end.isEqual(e.end)}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const o=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),i=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return o&&i}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new r(this.start,e.start)),this.containsPosition(e.end)&&t.push(new r(e.end,this.end))):t.push(this.clone()),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,o=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(o=e.end),new r(t,o)}return null}getWalker(e={}){return e.boundaries=this,new s.a(e)}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;let e=this.start.nodeAfter,t=this.end.nodeBefore;return this.start.parent.is("$text")&&this.start.isAtEnd&&this.start.parent.nextSibling&&(e=this.start.parent.nextSibling),this.end.parent.is("$text")&&this.end.isAtStart&&this.end.parent.previousSibling&&(t=this.end.parent.previousSibling),e&&e.is("element")&&e===t?e:null}clone(){return new r(this.start,this.end)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new s.a(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new s.a(e);yield t.position;for(const e of t)yield e.nextPosition}is(e){return"range"===e||"view:range"===e}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}static _createFromParentsAndOffsets(e,t,o,s){return new this(new i.a(e,t),new i.a(o,s))}static _createFromPositionAndShift(e,t){const o=e,i=e.getShiftedBy(t);return t>0?new this(o,i):new this(i,o)}static _createIn(e){return this._createFromParentsAndOffsets(e,0,e,e.childCount)}static _createOn(e){const t=e.is("$textProxy")?e.offsetSize:1;return this._createFromPositionAndShift(i.a._createBefore(e),t)}}function n(e){return!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))}},"./packages/ckeditor5-engine/src/view/renderer.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return m}));var i=o("./packages/ckeditor5-engine/src/view/text.js"),s=o("./packages/ckeditor5-engine/src/view/position.js"),r=o("./packages/ckeditor5-engine/src/view/filler.js"),n=o("./packages/ckeditor5-utils/src/mix.js"),a=o("./packages/ckeditor5-utils/src/diff.js");function c(e,t,o){e.insertBefore(o,e.childNodes[t]||null)}function l(e){const t=e.parentNode;t&&t.removeChild(e)}var d=o("./packages/ckeditor5-utils/src/observablemixin.js"),u=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),h=o("./packages/ckeditor5-utils/src/dom/istext.js"),p=o("./packages/ckeditor5-utils/src/dom/isnode.js"),g=o("./packages/ckeditor5-utils/src/fastdiff.js"),f=o("./packages/ckeditor5-utils/src/env.js");o("./packages/ckeditor5-engine/theme/renderer.css");class m{constructor(e,t){this.domDocuments=new Set,this.domConverter=e,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=t,this.set("isFocused",!1),this.set("isSelecting",!1),f.a.isBlink&&!f.a.isAndroid&&this.on("change:isSelecting",()=>{this.isSelecting||this.render()}),this._inlineFiller=null,this._fakeSelectionContainer=null}markToSync(e,t){if("text"===e)this.domConverter.mapViewToDom(t.parent)&&this.markedTexts.add(t);else{if(!this.domConverter.mapViewToDom(t))return;if("attributes"===e)this.markedAttributes.add(t);else{if("children"!==e)throw new u.a("view-renderer-unknown-type",this);this.markedChildren.add(t)}}}render(){let e;const t=!(f.a.isBlink&&!f.a.isAndroid)||!this.isSelecting;for(const e of this.markedChildren)this._updateChildrenMappings(e);t?(this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?e=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(e=this.selection.getFirstPosition(),this.markedChildren.add(e.parent))):this._inlineFiller&&this._inlineFiller.parentNode&&(e=this.domConverter.domPositionToView(this._inlineFiller));for(const e of this.markedAttributes)this._updateAttrs(e);for(const t of this.markedChildren)this._updateChildren(t,{inlineFillerPosition:e});for(const t of this.markedTexts)!this.markedChildren.has(t.parent)&&this.domConverter.mapViewToDom(t.parent)&&this._updateText(t,{inlineFillerPosition:e});if(t)if(e){const t=this.domConverter.viewPositionToDom(e),o=t.parent.ownerDocument;Object(r.i)(t.parent)?this._inlineFiller=t.parent:this._inlineFiller=k(o,t.parent,t.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const o=Array.from(this.domConverter.mapViewToDom(e).childNodes),i=Array.from(this.domConverter.viewChildrenToDom(e,t.ownerDocument,{withChildren:!1})),s=this._diffNodeLists(o,i),r=this._findReplaceActions(s,o,i);if(-1!==r.indexOf("replace")){const t={equal:0,insert:0,delete:0};for(const s of r)if("replace"===s){const s=t.equal+t.insert,r=t.equal+t.delete,n=e.getChild(s);!n||n.is("uiElement")||n.is("rawElement")||this._updateElementMappings(n,o[r]),l(i[s]),t.equal++}else t[s]++}}_updateElementMappings(e,t){this.domConverter.unbindDomElement(t),this.domConverter.bindElements(t,e),this.markedChildren.add(e),this.markedAttributes.add(e)}_getInlineFillerPosition(){const e=this.selection.getFirstPosition();return e.parent.is("$text")?s.a._createBefore(this.selection.getFirstPosition().parent):e}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=this.domConverter.viewPositionToDom(e);return!!(t&&Object(h.a)(t.parent)&&Object(r.i)(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!Object(r.i)(e))throw new u.a("view-renderer-filler-was-lost",this);Object(r.h)(e)?e.remove():e.data=e.data.substr(r.c),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=e.parent,o=e.offset;if(!this.domConverter.mapViewToDom(t.root))return!1;if(!t.is("element"))return!1;if(!function(e){if("false"==e.getAttribute("contenteditable"))return!1;const t=e.findAncestor(e=>e.hasAttribute("contenteditable"));return!t||"true"==t.getAttribute("contenteditable")}(t))return!1;if(o===t.getFillerOffset())return!1;const s=e.nodeBefore,r=e.nodeAfter;return!(s instanceof i.a||r instanceof i.a)}_updateText(e,t){const o=this.domConverter.findCorrespondingDomText(e),i=this.domConverter.viewToDom(e,o.ownerDocument),s=o.data;let n=i.data;const a=t.inlineFillerPosition;if(a&&a.parent==e.parent&&a.offset==e.index&&(n=r.b+n),s!=n){const e=Object(g.a)(s,n);for(const t of e)"insert"===t.type?o.insertData(t.index,t.values.join("")):o.deleteData(t.index,t.howMany)}}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const o=Array.from(t.attributes).map(e=>e.name),i=e.getAttributeKeys();for(const o of i){const i=e.getAttribute(o);this.domConverter.shouldRenderAttribute(o,i)?t.setAttribute(o,i):t.removeAttribute(o)}for(const i of o)"script"===e.name&&"data-ck-hidden"===i||e.hasAttribute(i)||t.removeAttribute(i)}_updateChildren(e,t){const o=this.domConverter.mapViewToDom(e);if(!o)return;const i=t.inlineFillerPosition,s=this.domConverter.mapViewToDom(e).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(e,o.ownerDocument,{bind:!0}));i&&i.parent===e&&k(o.ownerDocument,r,i.offset);const n=this._diffNodeLists(s,r);let a=0;const d=new Set;for(const e of n)"delete"===e?(d.add(s[a]),l(s[a])):"equal"===e&&a++;a=0;for(const e of n)"insert"===e?(c(o,a,r[a]),a++):"equal"===e&&(this._markDescendantTextToSync(this.domConverter.domToView(r[a])),a++);for(const e of d)e.parentNode||this.domConverter.unbindDomElement(e)}_diffNodeLists(e,t){return e=function(e,t){const o=Array.from(e);if(0==o.length||!t)return o;o[o.length-1]==t&&o.pop();return o}(e,this._fakeSelectionContainer),Object(a.a)(e,t,_.bind(null,this.domConverter))}_findReplaceActions(e,t,o){if(-1===e.indexOf("insert")||-1===e.indexOf("delete"))return e;let i=[],s=[],r=[];const n={equal:0,insert:0,delete:0};for(const c of e)"insert"===c?r.push(o[n.equal+n.insert]):"delete"===c?s.push(t[n.equal+n.delete]):(i=i.concat(Object(a.a)(s,r,b).map(e=>"equal"===e?"replace":e)),i.push("equal"),s=[],r=[]),n[c]++;return i.concat(Object(a.a)(s,r,b).map(e=>"equal"===e?"replace":e))}_markDescendantTextToSync(e){if(e)if(e.is("$text"))this.markedTexts.add(e);else if(e.is("element"))for(const t of e.getChildren())this._markDescendantTextToSync(t)}_updateSelection(){if(f.a.isBlink&&!f.a.isAndroid&&this.isSelecting&&!this.markedChildren.size)return;if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const e=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&e&&(this.selection.isFake?this._updateFakeSelection(e):(this._removeFakeSelection(),this._updateDomSelection(e)))}_updateFakeSelection(e){const t=e.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(e){const t=e.createElement("div");return t.className="ck-fake-selection-container",Object.assign(t.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),t.textContent=" ",t}(t));const o=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(o,this.selection),!this._fakeSelectionNeedsUpdate(e))return;o.parentElement&&o.parentElement==e||e.appendChild(o),o.textContent=this.selection.fakeSelectionLabel||" ";const i=t.getSelection(),s=t.createRange();i.removeAllRanges(),s.selectNodeContents(o),i.addRange(s)}_updateDomSelection(e){const t=e.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(t))return;const o=this.domConverter.viewPositionToDom(this.selection.anchor),i=this.domConverter.viewPositionToDom(this.selection.focus);t.collapse(o.parent,o.offset),t.extend(i.parent,i.offset),f.a.isGecko&&function(e,t){const o=e.parent;if(o.nodeType!=Node.ELEMENT_NODE||e.offset!=o.childNodes.length-1)return;const i=o.childNodes[e.offset];i&&"BR"==i.tagName&&t.addRange(t.getRangeAt(0))}(i,t)}_domSelectionNeedsUpdate(e){if(!this.domConverter.isDomSelectionCorrect(e))return!0;const t=e&&this.domConverter.domSelectionToView(e);return(!t||!this.selection.isEqual(t))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(t))}_fakeSelectionNeedsUpdate(e){const t=this._fakeSelectionContainer,o=e.ownerDocument.getSelection();return!t||t.parentElement!==e||(o.anchorNode!==t&&!t.contains(o.anchorNode)||t.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const e of this.domDocuments){if(e.getSelection().rangeCount){const t=e.activeElement,o=this.domConverter.mapDomToView(t);t&&o&&e.getSelection().removeAllRanges()}}}_removeFakeSelection(){const e=this._fakeSelectionContainer;e&&e.remove()}_updateFocus(){if(this.isFocused){const e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}function k(e,t,o){const i=t instanceof Array?t:t.childNodes,s=i[o];if(Object(h.a)(s))return s.data=r.b+s.data,s;{const s=e.createTextNode(r.b);return Array.isArray(t)?i.splice(o,0,s):c(t,o,s),s}}function b(e,t){return Object(p.a)(e)&&Object(p.a)(t)&&!Object(h.a)(e)&&!Object(h.a)(t)&&e.nodeType!==Node.COMMENT_NODE&&t.nodeType!==Node.COMMENT_NODE&&e.tagName.toLowerCase()===t.tagName.toLowerCase()}function _(e,t,o){return t===o||(Object(h.a)(t)&&Object(h.a)(o)?t.data===o.data:!(!e.isBlockFiller(t)||!e.isBlockFiller(o)))}Object(n.a)(m,d.a)},"./packages/ckeditor5-engine/src/view/selection.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return h}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),s=o("./packages/ckeditor5-engine/src/view/range.js"),r=o("./packages/ckeditor5-engine/src/view/position.js"),n=o("./packages/ckeditor5-utils/src/mix.js"),a=o("./packages/ckeditor5-utils/src/emittermixin.js"),c=o("./packages/ckeditor5-engine/src/view/node.js"),l=o("./packages/ckeditor5-utils/src/count.js"),d=o("./packages/ckeditor5-utils/src/isiterable.js"),u=o("./packages/ckeditor5-engine/src/view/documentselection.js");class h{constructor(e=null,t,o){this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",this.setTo(e,t,o)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.end:e.start).clone()}get focus(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.start:e.end).clone()}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const e of this._ranges)yield e.clone()}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?e.clone():null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?e.clone():null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}isEqual(e){if(this.isFake!=e.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=e.fakeSelectionLabel)return!1;if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let o=!1;for(const i of e._ranges)if(t.isEqual(i)){o=!0;break}if(!o)return!1}return!0}isSimilar(e){if(this.isBackward!=e.isBackward)return!1;const t=Object(l.a)(this.getRanges());if(t!=Object(l.a)(e.getRanges()))return!1;if(0==t)return!0;for(let t of this.getRanges()){t=t.getTrimmed();let o=!1;for(let i of e.getRanges())if(i=i.getTrimmed(),t.start.isEqual(i.start)&&t.end.isEqual(i.end)){o=!0;break}if(!o)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(e,t,o){if(null===e)this._setRanges([]),this._setFakeOptions(t);else if(e instanceof h||e instanceof u.a)this._setRanges(e.getRanges(),e.isBackward),this._setFakeOptions({fake:e.isFake,label:e.fakeSelectionLabel});else if(e instanceof s.a)this._setRanges([e],t&&t.backward),this._setFakeOptions(t);else if(e instanceof r.a)this._setRanges([new s.a(e)]),this._setFakeOptions(t);else if(e instanceof c.a){const n=!!o&&!!o.backward;let a;if(void 0===t)throw new i.a("view-selection-setto-required-second-parameter",this);a="in"==t?s.a._createIn(e):"on"==t?s.a._createOn(e):new s.a(r.a._createAt(e,t)),this._setRanges([a],n),this._setFakeOptions(o)}else{if(!Object(d.a)(e))throw new i.a("view-selection-setto-not-selectable",this);this._setRanges(e,t&&t.backward),this._setFakeOptions(t)}this.fire("change")}setFocus(e,t){if(null===this.anchor)throw new i.a("view-selection-setfocus-no-ranges",this);const o=r.a._createAt(e,t);if("same"==o.compareWith(this.focus))return;const n=this.anchor;this._ranges.pop(),"before"==o.compareWith(n)?this._addRange(new s.a(o,n),!0):this._addRange(new s.a(n,o)),this.fire("change")}is(e){return"selection"===e||"view:selection"===e}_setRanges(e,t=!1){e=Array.from(e),this._ranges=[];for(const t of e)this._addRange(t);this._lastRangeBackward=!!t}_setFakeOptions(e={}){this._isFake=!!e.fake,this._fakeSelectionLabel=e.fake&&e.label||""}_addRange(e,t=!1){if(!(e instanceof s.a))throw new i.a("view-selection-add-range-not-range",this);this._pushRange(e),this._lastRangeBackward=!!t}_pushRange(e){for(const t of this._ranges)if(e.isIntersecting(t))throw new i.a("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new s.a(e.start,e.end))}}Object(n.a)(h,a.c)},"./packages/ckeditor5-engine/src/view/stylesmap.js":function(e,t,o){"use strict";o.d(t,"b",(function(){return ee})),o.d(t,"a",(function(){return te}));var i=o("./node_modules/lodash-es/isObject.js"),s=o("./node_modules/lodash-es/isArray.js"),r=o("./node_modules/lodash-es/isSymbol.js"),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;var c=function(e,t){if(Object(s.a)(e))return!1;var o=typeof e;return!("number"!=o&&"symbol"!=o&&"boolean"!=o&&null!=e&&!Object(r.a)(e))||(a.test(e)||!n.test(e)||null!=t&&e in Object(t))},l=o("./node_modules/lodash-es/_MapCache.js");function d(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var o=function(){var i=arguments,s=t?t.apply(this,i):i[0],r=o.cache;if(r.has(s))return r.get(s);var n=e.apply(this,i);return o.cache=r.set(s,n)||r,n};return o.cache=new(d.Cache||l.a),o}d.Cache=l.a;var u=d;var h=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/\\(\\)?/g,g=function(e){var t=u(e,(function(e){return 500===o.size&&o.clear(),e})),o=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(h,(function(e,o,i,s){t.push(i?s.replace(p,"$1"):o||e)})),t})),f=o("./node_modules/lodash-es/toString.js");var m=function(e,t){return Object(s.a)(e)?e:c(e,t)?[e]:g(Object(f.a)(e))};var k=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};var b=function(e){if("string"==typeof e||Object(r.a)(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t};var _=function(e,t){for(var o=0,i=(t=m(t,e)).length;null!=e&&o<i;)e=e[b(t[o++])];return o&&o==i?e:void 0};var w=function(e,t,o){var i=-1,s=e.length;t<0&&(t=-t>s?0:s+t),(o=o>s?s:o)<0&&(o+=s),s=t>o?0:o-t>>>0,t>>>=0;for(var r=Array(s);++i<s;)r[i]=e[i+t];return r};var v=function(e,t){return t.length<2?e:_(e,w(t,0,-1))};var y=function(e,t){return t=m(t,e),null==(e=v(e,t))||delete e[b(k(t))]};var j=function(e,t){return null==e||y(e,t)};var x=function(e,t,o){var i=null==e?void 0:_(e,t);return void 0===i?o:i},P=o("./node_modules/lodash-es/_Stack.js"),O=o("./node_modules/lodash-es/_baseAssignValue.js"),A=o("./node_modules/lodash-es/eq.js");var T=function(e,t,o){(void 0!==o&&!Object(A.a)(e[t],o)||void 0===o&&!(t in e))&&Object(O.a)(e,t,o)};var C=function(e){return function(t,o,i){for(var s=-1,r=Object(t),n=i(t),a=n.length;a--;){var c=n[e?a:++s];if(!1===o(r[c],c,r))break}return t}}(),E=o("./node_modules/lodash-es/_cloneBuffer.js"),S=o("./node_modules/lodash-es/_cloneTypedArray.js"),R=o("./node_modules/lodash-es/_copyArray.js"),M=o("./node_modules/lodash-es/_initCloneObject.js"),N=o("./node_modules/lodash-es/isArguments.js"),I=o("./node_modules/lodash-es/isArrayLike.js"),z=o("./node_modules/lodash-es/isObjectLike.js");var V=function(e){return Object(z.a)(e)&&Object(I.a)(e)},D=o("./node_modules/lodash-es/isBuffer.js"),B=o("./node_modules/lodash-es/isFunction.js"),F=o("./node_modules/lodash-es/isPlainObject.js"),L=o("./node_modules/lodash-es/isTypedArray.js");var W=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]},H=o("./node_modules/lodash-es/_copyObject.js"),q=o("./node_modules/lodash-es/keysIn.js");var $=function(e){return Object(H.a)(e,Object(q.a)(e))};var U=function(e,t,o,r,n,a,c){var l=W(e,o),d=W(t,o),u=c.get(d);if(u)T(e,o,u);else{var h=a?a(l,d,o+"",e,t,c):void 0,p=void 0===h;if(p){var g=Object(s.a)(d),f=!g&&Object(D.a)(d),m=!g&&!f&&Object(L.a)(d);h=d,g||f||m?Object(s.a)(l)?h=l:V(l)?h=Object(R.a)(l):f?(p=!1,h=Object(E.a)(d,!0)):m?(p=!1,h=Object(S.a)(d,!0)):h=[]:Object(F.a)(d)||Object(N.a)(d)?(h=l,Object(N.a)(l)?h=$(l):Object(i.a)(l)&&!Object(B.a)(l)||(h=Object(M.a)(d))):p=!1}p&&(c.set(d,h),n(h,d,r,a,c),c.delete(d)),T(e,o,h)}};var K=function e(t,o,s,r,n){t!==o&&C(o,(function(a,c){if(n||(n=new P.a),Object(i.a)(a))U(t,o,c,s,e,r,n);else{var l=r?r(W(t,c),a,c+"",t,o,n):void 0;void 0===l&&(l=a),T(t,c,l)}}),q.a)},G=o("./node_modules/lodash-es/_createAssigner.js"),J=Object(G.a)((function(e,t,o){K(e,t,o)})),Y=o("./node_modules/lodash-es/_assignValue.js"),X=o("./node_modules/lodash-es/_isIndex.js");var Z=function(e,t,o,s){if(!Object(i.a)(e))return e;for(var r=-1,n=(t=m(t,e)).length,a=n-1,c=e;null!=c&&++r<n;){var l=b(t[r]),d=o;if("__proto__"===l||"constructor"===l||"prototype"===l)return e;if(r!=a){var u=c[l];void 0===(d=s?s(u,l,c):void 0)&&(d=Object(i.a)(u)?u:Object(X.a)(t[r+1])?[]:{})}Object(Y.a)(c,l,d),c=c[l]}return e};var Q=function(e,t,o){return null==e?e:Z(e,t,o)};class ee{constructor(e){this._styles={},this._styleProcessor=e}get isEmpty(){const e=Object.entries(this._styles);return!Array.from(e).length}get size(){return this.isEmpty?0:this.getStyleNames().length}setTo(e){this.clear();const t=Array.from(function(e){let t=null,o=0,i=0,s=null;const r=new Map;if(""===e)return r;";"!=e.charAt(e.length-1)&&(e+=";");for(let n=0;n<e.length;n++){const a=e.charAt(n);if(null===t)switch(a){case":":s||(s=e.substr(o,n-o),i=n+1);break;case'"':case"'":t=a;break;case";":{const t=e.substr(i,n-i);s&&r.set(s.trim(),t.trim()),s=null,o=n+1;break}}else a===t&&(t=null)}return r}(e).entries());for(const[e,o]of t)this._styleProcessor.toNormalizedForm(e,o,this._styles)}has(e){if(this.isEmpty)return!1;const t=this._styleProcessor.getReducedForm(e,this._styles).find(([t])=>t===e);return Array.isArray(t)}set(e,t){if(Object(i.a)(e))for(const[t,o]of Object.entries(e))this._styleProcessor.toNormalizedForm(t,o,this._styles);else this._styleProcessor.toNormalizedForm(e,t,this._styles)}remove(e){const t=oe(e);j(this._styles,t),delete this._styles[e],this._cleanEmptyObjectsOnPath(t)}getNormalized(e){return this._styleProcessor.getNormalized(e,this._styles)}toString(){return this.isEmpty?"":this._getStylesEntries().map(e=>e.join(":")).sort().join(";")+";"}getAsString(e){if(this.isEmpty)return;if(this._styles[e]&&!Object(i.a)(this._styles[e]))return this._styles[e];const t=this._styleProcessor.getReducedForm(e,this._styles).find(([t])=>t===e);return Array.isArray(t)?t[1]:void 0}getStyleNames(e=!1){if(this.isEmpty)return[];if(e)return this._styleProcessor.getStyleNames(this._styles);return this._getStylesEntries().map(([e])=>e)}clear(){this._styles={}}_getStylesEntries(){const e=[],t=Object.keys(this._styles);for(const o of t)e.push(...this._styleProcessor.getReducedForm(o,this._styles));return e}_cleanEmptyObjectsOnPath(e){const t=e.split(".");if(!(t.length>1))return;const o=t.splice(0,t.length-1).join("."),i=x(this._styles,o);if(!i)return;!Array.from(Object.keys(i)).length&&this.remove(o)}}class te{constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(e,t,o){if(Object(i.a)(t))ie(o,oe(e),t);else if(this._normalizers.has(e)){const i=this._normalizers.get(e),{path:s,value:r}=i(t);ie(o,s,r)}else ie(o,e,t)}getNormalized(e,t){if(!e)return J({},t);if(void 0!==t[e])return t[e];if(this._extractors.has(e)){const o=this._extractors.get(e);if("string"==typeof o)return x(t,o);const i=o(e,t);if(i)return i}return x(t,oe(e))}getReducedForm(e,t){const o=this.getNormalized(e,t);if(void 0===o)return[];if(this._reducers.has(e)){return this._reducers.get(e)(o)}return[[e,o]]}getStyleNames(e){const t=Array.from(this._consumables.keys()).filter(t=>{const o=this.getNormalized(t,e);return o&&"object"==typeof o?Object.keys(o).length:o}),o=new Set([...t,...Object.keys(e)]);return Array.from(o.values())}getRelatedStyles(e){return this._consumables.get(e)||[]}setNormalizer(e,t){this._normalizers.set(e,t)}setExtractor(e,t){this._extractors.set(e,t)}setReducer(e,t){this._reducers.set(e,t)}setStyleRelation(e,t){this._mapStyleNames(e,t);for(const o of t)this._mapStyleNames(o,[e])}_mapStyleNames(e,t){this._consumables.has(e)||this._consumables.set(e,[]),this._consumables.get(e).push(...t)}}function oe(e){return e.replace("-",".")}function ie(e,t,o){let s=o;Object(i.a)(o)&&(s=J({},x(e,t),o)),Q(e,t,s)}},"./packages/ckeditor5-engine/src/view/text.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-engine/src/view/node.js");class s extends i.a{constructor(e,t){super(e),this._textData=t}is(e){return"$text"===e||"view:$text"===e||"text"===e||"view:text"===e||"node"===e||"view:node"===e}get data(){return this._textData}get _data(){return this.data}set _data(e){this._fireChange("text",this),this._textData=e}isSimilar(e){return e instanceof s&&(this===e||this.data===e.data)}_clone(){return new s(this.document,this.data)}}},"./packages/ckeditor5-engine/src/view/textproxy.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class s{constructor(e,t,o){if(this.textNode=e,t<0||t>e.data.length)throw new i.a("view-textproxy-wrong-offsetintext",this);if(o<0||t+o>e.data.length)throw new i.a("view-textproxy-wrong-length",this);this.data=e.data.substring(t,t+o),this.offsetInText=t}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(e){return"$textProxy"===e||"view:$textProxy"===e||"textProxy"===e||"view:textProxy"===e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let o=e.includeSelf?this.textNode:this.parent;for(;null!==o;)t[e.parentFirst?"push":"unshift"](o),o=o.parent;return t}}},"./packages/ckeditor5-engine/src/view/treewalker.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return c}));var i=o("./packages/ckeditor5-engine/src/view/element.js"),s=o("./packages/ckeditor5-engine/src/view/text.js"),r=o("./packages/ckeditor5-engine/src/view/textproxy.js"),n=o("./packages/ckeditor5-engine/src/view/position.js"),a=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.a("view-tree-walker-no-start-position",null);if(e.direction&&"forward"!=e.direction&&"backward"!=e.direction)throw new a.a("view-tree-walker-unknown-direction",e.startPosition,{direction:e.direction});this.boundaries=e.boundaries||null,e.startPosition?this.position=n.a._createAt(e.startPosition):this.position=n.a._createAt(e.boundaries["backward"==e.direction?"end":"start"]),this.direction=e.direction||"forward",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(e){let t,o,i;do{i=this.position,({done:t,value:o}=this.next())}while(!t&&e(o));t||(this.position=i)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){let e=this.position.clone();const t=this.position,o=e.parent;if(null===o.parent&&e.offset===o.childCount)return{done:!0};if(o===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0};let a;if(o instanceof s.a){if(e.isAtEnd)return this.position=n.a._createAfter(o),this._next();a=o.data[e.offset]}else a=o.getChild(e.offset);if(a instanceof i.a)return this.shallow?e.offset++:e=new n.a(a,0),this.position=e,this._formatReturnValue("elementStart",a,t,e,1);if(a instanceof s.a){if(this.singleCharacters)return e=new n.a(a,0),this.position=e,this._next();{let o,i=a.data.length;return a==this._boundaryEndParent?(i=this.boundaries.end.offset,o=new r.a(a,0,i),e=n.a._createAfter(o)):(o=new r.a(a,0,a.data.length),e.offset++),this.position=e,this._formatReturnValue("text",o,t,e,i)}}if("string"==typeof a){let i;if(this.singleCharacters)i=1;else{i=(o===this._boundaryEndParent?this.boundaries.end.offset:o.data.length)-e.offset}const s=new r.a(o,e.offset,i);return e.offset+=i,this.position=e,this._formatReturnValue("text",s,t,e,i)}return e=n.a._createAfter(o),this.position=e,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",o,t,e)}_previous(){let e=this.position.clone();const t=this.position,o=e.parent;if(null===o.parent&&0===e.offset)return{done:!0};if(o==this._boundaryStartParent&&e.offset==this.boundaries.start.offset)return{done:!0};let a;if(o instanceof s.a){if(e.isAtStart)return this.position=n.a._createBefore(o),this._previous();a=o.data[e.offset-1]}else a=o.getChild(e.offset-1);if(a instanceof i.a)return this.shallow?(e.offset--,this.position=e,this._formatReturnValue("elementStart",a,t,e,1)):(e=new n.a(a,a.childCount),this.position=e,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",a,t,e));if(a instanceof s.a){if(this.singleCharacters)return e=new n.a(a,a.data.length),this.position=e,this._previous();{let o,i=a.data.length;if(a==this._boundaryStartParent){const t=this.boundaries.start.offset;o=new r.a(a,t,a.data.length-t),i=o.data.length,e=n.a._createBefore(o)}else o=new r.a(a,0,a.data.length),e.offset--;return this.position=e,this._formatReturnValue("text",o,t,e,i)}}if("string"==typeof a){let i;if(this.singleCharacters)i=1;else{const t=o===this._boundaryStartParent?this.boundaries.start.offset:0;i=e.offset-t}e.offset-=i;const s=new r.a(o,e.offset,i);return this.position=e,this._formatReturnValue("text",s,t,e,i)}return e=n.a._createBefore(o),this.position=e,this._formatReturnValue("elementStart",o,t,e,1)}_formatReturnValue(e,t,o,i,s){return t instanceof r.a&&(t.offsetInText+t.data.length==t.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?o=n.a._createAfter(t.textNode):(i=n.a._createAfter(t.textNode),this.position=i)),0===t.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?o=n.a._createBefore(t.textNode):(i=n.a._createBefore(t.textNode),this.position=i))),{done:!1,value:{type:e,item:t,previousPosition:o,nextPosition:i,length:s}}}}},"./packages/ckeditor5-engine/src/view/uielement.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a})),o.d(t,"b",(function(){return c}));var i=o("./packages/ckeditor5-engine/src/view/element.js"),s=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),r=o("./packages/ckeditor5-engine/src/view/node.js"),n=o("./packages/ckeditor5-utils/src/keyboard.js");class a extends i.a{constructor(e,t,o,i){super(e,t,o,i),this._isAllowedInsideAttributeElement=!0,this.getFillerOffset=l}is(e,t=null){return t?t===this.name&&("uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e):"uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}_insertChild(e,t){if(t&&(t instanceof r.a||Array.from(t).length>0))throw new s.a("view-uielement-cannot-add",this)}render(e){return this.toDomElement(e)}toDomElement(e){const t=e.createElement(this.name);for(const e of this.getAttributeKeys())t.setAttribute(e,this.getAttribute(e));return t}}function c(e){e.document.on("arrowKey",(t,o)=>function(e,t,o){if(t.keyCode==n.f.arrowright){const e=t.domTarget.ownerDocument.defaultView.getSelection(),i=1==e.rangeCount&&e.getRangeAt(0).collapsed;if(i||t.shiftKey){const t=e.focusNode,s=e.focusOffset,r=o.domPositionToView(t,s);if(null===r)return;let n=!1;const a=r.getLastMatchingPosition(e=>(e.item.is("uiElement")&&(n=!0),!(!e.item.is("uiElement")&&!e.item.is("attributeElement"))));if(n){const t=o.viewPositionToDom(a);i?e.collapse(t.parent,t.offset):e.extend(t.parent,t.offset)}}}}(0,o,e.domConverter),{priority:"low"})}function l(){return null}},"./packages/ckeditor5-engine/theme/placeholder.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-engine/theme/placeholder.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-engine/theme/renderer.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-engine/theme/renderer.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-enter/src/enter.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return l}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-core/src/command.js"),r=o("./packages/ckeditor5-enter/src/utils.js");class n extends s.a{execute(){const e=this.editor.model,t=e.document;e.change(o=>{!function(e,t,o,i){const s=o.isCollapsed,n=o.getFirstRange(),c=n.start.parent,l=n.end.parent;if(i.isLimit(c)||i.isLimit(l))return void(s||c!=l||e.deleteContent(o));if(s){const e=Object(r.a)(t.model.schema,o.getAttributes());a(t,n.start),t.setSelectionAttribute(e)}else{const i=!(n.start.isAtStart&&n.end.isAtEnd),s=c==l;e.deleteContent(o,{leaveUnmerged:i}),i&&(s?a(t,o.focus):t.setSelection(l,0))}}(this.editor.model,o,t.selection,e.schema),this.fire("afterExecute",{writer:o})})}}function a(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}var c=o("./packages/ckeditor5-enter/src/enterobserver.js");class l extends i.a{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,o=t.document;t.addObserver(c.a),e.commands.add("enter",new n(e)),this.listenTo(o,"enter",(o,i)=>{i.preventDefault(),i.isSoft||(e.execute("enter"),t.scrollToTheSelection())},{priority:"low"})}}},"./packages/ckeditor5-enter/src/enterobserver.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-engine/src/view/observer/observer.js"),s=o("./packages/ckeditor5-engine/src/view/observer/domeventdata.js"),r=o("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js"),n=o("./packages/ckeditor5-utils/src/keyboard.js");class a extends i.a{constructor(e){super(e);const t=this.document;t.on("keydown",(e,o)=>{if(this.isEnabled&&o.keyCode==n.f.enter){const i=new r.a(t,"enter",t.selection.getFirstRange());t.fire(i,new s.a(t,o.domEvent,{isSoft:o.shiftKey})),i.stop.called&&e.stop()}})}observe(){}}},"./packages/ckeditor5-enter/src/utils.js":function(e,t,o){"use strict";function*i(e,t){for(const o of t)o&&e.getAttributeProperties(o[0]).copyOnEnter&&(yield o)}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-typing/src/delete.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return g}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-core/src/command.js"),r=o("./packages/ckeditor5-utils/src/count.js"),n=o("./packages/ckeditor5-typing/src/utils/changebuffer.js");class a extends s.a{constructor(e,t){super(e),this.direction=t,this._buffer=new n.a(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,o=t.document;t.enqueueChange(this._buffer.batch,i=>{this._buffer.lock();const s=i.createSelection(e.selection||o.selection),n=e.sequence||1,a=s.isCollapsed;if(s.isCollapsed&&t.modifySelection(s,{direction:this.direction,unit:e.unit}),this._shouldEntireContentBeReplacedWithParagraph(n))return void this._replaceEntireContentWithParagraph(i);if(this._shouldReplaceFirstBlockWithParagraph(s,n))return void this.editor.execute("paragraph",{selection:s});if(s.isCollapsed)return;let c=0;s.getFirstRange().getMinimalFlatRanges().forEach(e=>{c+=Object(r.a)(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),t.deleteContent(s,{doNotResetEntireContent:a,direction:this.direction}),this._buffer.input(c),i.setSelection(s),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,o=t.document.selection,i=t.schema.getLimitElement(o);if(!(o.isCollapsed&&o.containsEntireContent(i)))return!1;if(!t.schema.checkChild(i,"paragraph"))return!1;const s=i.getChild(0);return!s||"paragraph"!==s.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,o=t.document.selection,i=t.schema.getLimitElement(o),s=e.createElement("paragraph");e.remove(e.createRangeIn(i)),e.insert(s,i),e.setSelection(s,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const o=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const i=e.getFirstPosition(),s=o.schema.getLimitElement(i),r=s.getChild(0);return i.parent==r&&(!!e.containsEntireContent(r)&&(!!o.schema.checkChild(s,"paragraph")&&"paragraph"!=r.name))}}var c=o("./packages/ckeditor5-engine/src/view/observer/observer.js"),l=o("./packages/ckeditor5-engine/src/view/observer/domeventdata.js"),d=o("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js"),u=o("./packages/ckeditor5-utils/src/keyboard.js"),h=o("./packages/ckeditor5-utils/src/env.js");class p extends c.a{constructor(e){super(e);const t=e.document;let o=0;function i(e,o,i){const s=new d.a(t,"delete",t.selection.getFirstRange());t.fire(s,new l.a(t,o,i)),s.stop.called&&e.stop()}t.on("keyup",(e,t)=>{t.keyCode!=u.f.delete&&t.keyCode!=u.f.backspace||(o=0)}),t.on("keydown",(e,t)=>{const s={};if(t.keyCode==u.f.delete)s.direction="forward",s.unit="character";else{if(t.keyCode!=u.f.backspace)return;s.direction="backward",s.unit="codePoint"}const r=h.a.isMac?t.altKey:t.ctrlKey;s.unit=r?"word":s.unit,s.sequence=++o,i(e,t.domEvent,s)}),h.a.isAndroid&&t.on("beforeinput",(t,o)=>{if("deleteContentBackward"!=o.domEvent.inputType)return;const s={unit:"codepoint",direction:"backward",sequence:1},r=o.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(s.selectionToRemove=e.domConverter.domSelectionToView(r)),i(t,o.domEvent,s)})}observe(){}}class g extends i.a{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,o=t.document,i=e.model.document;t.addObserver(p),this._undoOnBackspace=!1;const s=new a(e,"forward");if(e.commands.add("deleteForward",s),e.commands.add("forwardDelete",s),e.commands.add("delete",new a(e,"backward")),this.listenTo(o,"delete",(o,i)=>{const s={unit:i.unit,sequence:i.sequence};if(i.selectionToRemove){const t=e.model.createSelection(),o=[];for(const t of i.selectionToRemove.getRanges())o.push(e.editing.mapper.toModelRange(t));t.setTo(o),s.selection=t}e.execute("forward"==i.direction?"deleteForward":"delete",s),i.preventDefault(),t.scrollToTheSelection()},{priority:"low"}),h.a.isAndroid){let e=null;this.listenTo(o,"delete",(t,o)=>{const i=o.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}},{priority:"lowest"}),this.listenTo(o,"keyup",(t,o)=>{if(e){const t=o.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}})}this.editor.plugins.has("UndoEditing")&&(this.listenTo(o,"delete",(t,o)=>{this._undoOnBackspace&&"backward"==o.direction&&1==o.sequence&&"codePoint"==o.unit&&(this._undoOnBackspace=!1,e.execute("undo"),o.preventDefault(),t.stop())},{context:"$capture"}),this.listenTo(i,"change",()=>{this._undoOnBackspace=!1}))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}},"./packages/ckeditor5-typing/src/utils/changebuffer.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return i}));class i{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{"transparent"!=t.type&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch()),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}},"./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r})),o.d(t,"b",(function(){return a}));var i=o("./packages/ckeditor5-utils/src/keyboard.js"),s=o("./packages/ckeditor5-utils/src/env.js");function r(e){let t=null;const o=e.model,i=e.editing.view,r=e.commands.get("input");function n(e){const s=o.document,n=i.document.isComposing,l=t&&t.isEqual(s.selection);t=null,r.isEnabled&&(a(e)||s.selection.isCollapsed||n&&229===e.keyCode||!n&&229===e.keyCode&&l||c())}function c(){const e=r.buffer;e.lock();const t=e.batch;r._batches.add(t),o.enqueueChange(t,()=>{o.deleteContent(o.document.selection)}),e.unlock()}s.a.isAndroid?i.document.on("beforeinput",(e,t)=>n(t),{priority:"lowest"}):i.document.on("keydown",(e,t)=>n(t),{priority:"lowest"}),i.document.on("compositionstart",(function(){const e=o.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;c()}),{priority:"lowest"}),i.document.on("compositionend",()=>{t=o.createSelection(o.document.selection)},{priority:"lowest"})}const n=[Object(i.a)("arrowUp"),Object(i.a)("arrowRight"),Object(i.a)("arrowDown"),Object(i.a)("arrowLeft"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255];for(let e=112;e<=135;e++)n.push(e);function a(e){return!(!e.ctrlKey&&!e.metaKey)||n.includes(e.keyCode)}},"./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js":function(e,t,o){"use strict";function i({emitter:e,activator:t,callback:o,contextElements:i}){e.listenTo(document,"mousedown",(e,s)=>{if(!t())return;const r="function"==typeof s.composedPath?s.composedPath():[];for(const e of i)if(e.contains(s.target)||r.includes(e))return;o()})}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-ui/src/button/buttonview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return c}));var i=o("./packages/ckeditor5-ui/src/view.js"),s=o("./packages/ckeditor5-ui/src/icon/iconview.js"),r=o("./packages/ckeditor5-ui/src/tooltip/tooltipview.js"),n=o("./packages/ckeditor5-utils/src/uid.js"),a=o("./packages/ckeditor5-utils/src/keyboard.js");o("./packages/ckeditor5-ui/theme/components/button/button.css");class c extends i.a{constructor(e){super(e);const t=this.bindTemplate,o=Object(n.a)();this.set("class"),this.set("labelStyle"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.tooltipView=this._createTooltipView(),this.labelView=this._createLabelView(o),this.iconView=new s.a,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.keystrokeView=this._createKeystrokeView(),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this)),this.setTemplate({tag:"button",attributes:{class:["ck","ck-button",t.to("class"),t.if("isEnabled","ck-disabled",e=>!e),t.if("isVisible","ck-hidden",e=>!e),t.to("isOn",e=>e?"ck-on":"ck-off"),t.if("withText","ck-button_with-text"),t.if("withKeystroke","ck-button_with-keystroke")],type:t.to("type",e=>e||"button"),tabindex:t.to("tabindex"),"aria-labelledby":"ck-editor__aria-label_"+o,"aria-disabled":t.if("isEnabled",!0,e=>!e),"aria-pressed":t.to("isOn",e=>!!this.isToggleable&&String(e))},children:this.children,on:{mousedown:t.to(e=>{e.preventDefault()}),click:t.to(e=>{this.isEnabled?this.fire("execute"):e.preventDefault()})}})}render(){super.render(),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.tooltipView),this.children.add(this.labelView),this.withKeystroke&&this.keystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}_createTooltipView(){const e=new r.a;return e.bind("text").to(this,"_tooltipString"),e.bind("position").to(this,"tooltipPosition"),e}_createLabelView(e){const t=new i.a,o=this.bindTemplate;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:o.to("labelStyle"),id:"ck-editor__aria-label_"+e},children:[{text:this.bindTemplate.to("label")}]}),t}_createKeystrokeView(){const e=new i.a;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",e=>Object(a.b)(e))}]}),e}_getTooltipString(e,t,o){return e?"string"==typeof e?e:(o&&(o=Object(a.b)(o)),e instanceof Function?e(t,o):`${t}${o?` (${o})`:""}`):""}}},"./packages/ckeditor5-ui/src/button/switchbuttonview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-ui/src/view.js"),s=o("./packages/ckeditor5-ui/src/button/buttonview.js");o("./packages/ckeditor5-ui/theme/components/button/switchbutton.css");class r extends s.a{constructor(e){super(e),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const e=new i.a;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}},"./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return n}));var i=o("./packages/ckeditor5-ui/src/button/buttonview.js"),s=o("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg"),r=o("./packages/ckeditor5-ui/src/icon/iconview.js");class n extends i.a{constructor(e){super(e),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new r.a;return e.content=s.a,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}},"./packages/ckeditor5-ui/src/dropdown/utils.js":function(e,t,o){"use strict";o.d(t,"c",(function(){return m})),o.d(t,"b",(function(){return k})),o.d(t,"a",(function(){return b}));var i=o("./packages/ckeditor5-ui/src/view.js");class s extends i.a{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",t.to("position",e=>"ck-dropdown__panel_"+e),t.if("isVisible","ck-dropdown__panel-visible")]},children:this.children,on:{selectstart:t.to(e=>e.preventDefault())}})}focus(){this.children.length&&this.children.first.focus()}focusLast(){if(this.children.length){const e=this.children.last;"function"==typeof e.focusLast?e.focusLast():e.focus()}}}var r=o("./packages/ckeditor5-utils/src/keystrokehandler.js"),n=(o("./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css"),o("./packages/ckeditor5-utils/src/dom/position.js"));class a extends i.a{constructor(e,t,o){super(e);const i=this.bindTemplate;this.buttonView=t,this.panelView=o,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class"),this.set("id"),this.set("panelPosition","auto"),this.keystrokes=new r.a,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",i.to("class"),i.if("isEnabled","ck-disabled",e=>!e)],id:i.to("id"),"aria-describedby":i.to("ariaDescribedById")},children:[t,o]}),t.extendTemplate({attributes:{class:["ck-dropdown__button"]}})}render(){super.render(),this.listenTo(this.buttonView,"open",()=>{this.isOpen=!this.isOpen}),this.panelView.bind("isVisible").to(this,"isOpen"),this.on("change:isOpen",()=>{this.isOpen&&("auto"===this.panelPosition?this.panelView.position=a._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions}).name:this.panelView.position=this.panelPosition)}),this.keystrokes.listenTo(this.element);const e=(e,t)=>{this.isOpen&&(this.buttonView.focus(),this.isOpen=!1,t())};this.keystrokes.set("arrowdown",(e,t)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,t())}),this.keystrokes.set("arrowright",(e,t)=>{this.isOpen&&t()}),this.keystrokes.set("arrowleft",e),this.keystrokes.set("esc",e)}focus(){this.buttonView.focus()}get _panelPositions(){const{south:e,north:t,southEast:o,southWest:i,northEast:s,northWest:r,southMiddleEast:n,southMiddleWest:c,northMiddleEast:l,northMiddleWest:d}=a.defaultPanelPositions;return"rtl"!==this.locale.uiLanguageDirection?[o,i,n,c,e,s,r,l,d,t]:[i,o,c,n,e,r,s,d,l,t]}}a.defaultPanelPositions={south:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/2,name:"s"}),southEast:e=>({top:e.bottom,left:e.left,name:"se"}),southWest:(e,t)=>({top:e.bottom,left:e.left-t.width+e.width,name:"sw"}),southMiddleEast:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/4,name:"sme"}),southMiddleWest:(e,t)=>({top:e.bottom,left:e.left-3*(t.width-e.width)/4,name:"smw"}),north:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/2,name:"n"}),northEast:(e,t)=>({top:e.top-t.height,left:e.left,name:"ne"}),northWest:(e,t)=>({top:e.top-t.height,left:e.left-t.width+e.width,name:"nw"}),northMiddleEast:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/4,name:"nme"}),northMiddleWest:(e,t)=>({top:e.top-t.height,left:e.left-3*(t.width-e.width)/4,name:"nmw"})},a._getOptimalPosition=n.a;var c=o("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),l=o("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),d=o("./packages/ckeditor5-ui/src/list/listview.js"),u=o("./packages/ckeditor5-ui/src/list/listitemview.js");class h extends i.a{constructor(e){super(e),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}var p=o("./packages/ckeditor5-ui/src/button/buttonview.js"),g=o("./packages/ckeditor5-ui/src/button/switchbuttonview.js"),f=o("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js");o("./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css"),o("./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css");function m(e,t=c.a){const o=new t(e),i=new s(e),r=new a(e,o,i);return o.bind("isEnabled").to(r),o instanceof c.a?o.bind("isOn").to(r,"isOpen"):o.arrowView.bind("isOn").to(r,"isOpen"),function(e){(function(e){e.on("render",()=>{Object(f.a)({emitter:e,activator:()=>e.isOpen,callback:()=>{e.isOpen=!1},contextElements:[e.element]})})})(e),function(e){e.on("execute",t=>{t.source instanceof g.a||(e.isOpen=!1)})}(e),function(e){e.keystrokes.set("arrowdown",(t,o)=>{e.isOpen&&(e.panelView.focus(),o())}),e.keystrokes.set("arrowup",(t,o)=>{e.isOpen&&(e.panelView.focusLast(),o())})}(e)}(r),r}function k(e,t){const o=e.locale,i=o.t,s=e.toolbarView=new l.a(o);s.set("ariaLabel",i("Dropdown toolbar")),e.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),t.map(e=>s.items.add(e)),e.panelView.children.add(s),s.items.delegate("execute").to(e)}function b(e,t){const o=e.locale,i=e.listView=new d.a(o);i.items.bindTo(t).using(({type:e,model:t})=>{if("separator"===e)return new h(o);if("button"===e||"switchbutton"===e){const i=new u.a(o);let s;return s="button"===e?new p.a(o):new g.a(o),s.bind(...Object.keys(t)).to(t),s.delegate("execute").to(i),i.children.add(s),i}}),e.panelView.children.add(i),i.items.delegate("execute").to(e)}},"./packages/ckeditor5-ui/src/focuscycler.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-utils/src/dom/global.js");class s{constructor(e){if(Object.assign(this,e),e.actions&&e.keystrokeHandler)for(const t in e.actions){let o=e.actions[t];"string"==typeof o&&(o=[o]);for(const i of o)e.keystrokeHandler.set(i,(e,o)=>{this[t](),o()})}}get first(){return this.focusables.find(r)||null}get last(){return this.focusables.filter(r).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let e=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find((t,o)=>{const i=t.element===this.focusTracker.focusedElement;return i&&(e=o),i}),e)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(e){e&&e.focus()}_getFocusableItem(e){const t=this.current,o=this.focusables.length;if(!o)return null;if(null===t)return this[1===e?"first":"last"];let i=(t+o+e)%o;do{const t=this.focusables.get(i);if(r(t))return t;i=(i+o+e)%o}while(i!==t);return null}}function r(e){return!(!e.focus||"none"==i.a.window.getComputedStyle(e.element).display)}},"./packages/ckeditor5-ui/src/icon/iconview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-ui/src/view.js");o("./packages/ckeditor5-ui/theme/components/icon/icon.css");class s extends i.a{constructor(){super();const e=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon"],viewBox:e.to("viewBox")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",()=>{this._updateXMLContent(),this._colorFillPaths()}),this.on("change:fillColor",()=>{this._colorFillPaths()})}_updateXMLContent(){if(this.content){const e=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),t=e.getAttribute("viewBox");for(t&&(this.viewBox=t),this.element.innerHTML="";e.childNodes.length>0;)this.element.appendChild(e.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach(e=>{e.style.fill=this.fillColor})}}},"./packages/ckeditor5-ui/src/list/listitemview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-ui/src/view.js");class s extends i.a{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item"]},children:this.children})}focus(){this.children.first.focus()}}},"./packages/ckeditor5-ui/src/list/listview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-ui/src/view.js"),s=o("./packages/ckeditor5-utils/src/focustracker.js"),r=o("./packages/ckeditor5-ui/src/focuscycler.js"),n=o("./packages/ckeditor5-utils/src/keystrokehandler.js");o("./packages/ckeditor5-ui/theme/components/list/list.css");class a extends i.a{constructor(){super(),this.items=this.createCollection(),this.focusTracker=new s.a,this.keystrokes=new n.a,this._focusCycler=new r.a({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"]},children:this.items})}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",(e,t)=>{this.focusTracker.add(t.element)}),this.items.on("remove",(e,t)=>{this.focusTracker.remove(t.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}},"./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return u}));var i=o("./packages/ckeditor5-ui/src/view.js"),s=o("./packages/ckeditor5-utils/src/dom/position.js"),r=o("./packages/ckeditor5-utils/src/dom/isrange.js"),n=o("./packages/ckeditor5-utils/src/dom/tounit.js"),a=o("./packages/ckeditor5-utils/src/dom/global.js"),c=o("./node_modules/lodash-es/isElement.js");o("./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css");const l=Object(n.a)("px"),d=a.a.document.body;class u extends i.a{constructor(e){super(e);const t=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("position","arrow_nw"),this.set("isVisible",!1),this.set("withArrow",!0),this.set("class"),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",t.to("position",e=>"ck-balloon-panel_"+e),t.if("isVisible","ck-balloon-panel_visible"),t.if("withArrow","ck-balloon-panel_with-arrow"),t.to("class")],style:{top:t.to("top",l),left:t.to("left",l)}},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){this.show();const t=u.defaultPositions,o=Object.assign({},{element:this.element,positions:[t.southArrowNorth,t.southArrowNorthMiddleWest,t.southArrowNorthMiddleEast,t.southArrowNorthWest,t.southArrowNorthEast,t.northArrowSouth,t.northArrowSouthMiddleWest,t.northArrowSouthMiddleEast,t.northArrowSouthWest,t.northArrowSouthEast,t.viewportStickyNorth],limiter:d,fitInViewport:!0},e),i=u._getOptimalPosition(o),s=parseInt(i.left),r=parseInt(i.top),{name:n,config:a={}}=i,{withArrow:c=!0}=a;Object.assign(this,{top:r,left:s,position:n,withArrow:c})}pin(e){this.unpin(),this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(e):this._stopPinning()},this._startPinning(e),this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(e){this.attachTo(e);const t=h(e.target),o=e.limiter?h(e.limiter):d;this.listenTo(a.a.document,"scroll",(i,s)=>{const r=s.target,n=t&&r.contains(t),a=o&&r.contains(o);!n&&!a&&t&&o||this.attachTo(e)},{useCapture:!0}),this.listenTo(a.a.window,"resize",()=>{this.attachTo(e)})}_stopPinning(){this.stopListening(a.a.document,"scroll"),this.stopListening(a.a.window,"resize")}}function h(e){return Object(c.a)(e)?e:Object(r.a)(e)?e.commonAncestorContainer:"function"==typeof e?h(e()):null}function p(e,t){return e.top-t.height-u.arrowVerticalOffset}function g(e){return e.bottom+u.arrowVerticalOffset}u.arrowHorizontalOffset=25,u.arrowVerticalOffset=10,u.stickyVerticalOffset=20,u._getOptimalPosition=s.a,u.defaultPositions={northWestArrowSouthWest:(e,t)=>({top:p(e,t),left:e.left-u.arrowHorizontalOffset,name:"arrow_sw"}),northWestArrowSouthMiddleWest:(e,t)=>({top:p(e,t),left:e.left-.25*t.width-u.arrowHorizontalOffset,name:"arrow_smw"}),northWestArrowSouth:(e,t)=>({top:p(e,t),left:e.left-t.width/2,name:"arrow_s"}),northWestArrowSouthMiddleEast:(e,t)=>({top:p(e,t),left:e.left-.75*t.width+u.arrowHorizontalOffset,name:"arrow_sme"}),northWestArrowSouthEast:(e,t)=>({top:p(e,t),left:e.left-t.width+u.arrowHorizontalOffset,name:"arrow_se"}),northArrowSouthWest:(e,t)=>({top:p(e,t),left:e.left+e.width/2-u.arrowHorizontalOffset,name:"arrow_sw"}),northArrowSouthMiddleWest:(e,t)=>({top:p(e,t),left:e.left+e.width/2-.25*t.width-u.arrowHorizontalOffset,name:"arrow_smw"}),northArrowSouth:(e,t)=>({top:p(e,t),left:e.left+e.width/2-t.width/2,name:"arrow_s"}),northArrowSouthMiddleEast:(e,t)=>({top:p(e,t),left:e.left+e.width/2-.75*t.width+u.arrowHorizontalOffset,name:"arrow_sme"}),northArrowSouthEast:(e,t)=>({top:p(e,t),left:e.left+e.width/2-t.width+u.arrowHorizontalOffset,name:"arrow_se"}),northEastArrowSouthWest:(e,t)=>({top:p(e,t),left:e.right-u.arrowHorizontalOffset,name:"arrow_sw"}),northEastArrowSouthMiddleWest:(e,t)=>({top:p(e,t),left:e.right-.25*t.width-u.arrowHorizontalOffset,name:"arrow_smw"}),northEastArrowSouth:(e,t)=>({top:p(e,t),left:e.right-t.width/2,name:"arrow_s"}),northEastArrowSouthMiddleEast:(e,t)=>({top:p(e,t),left:e.right-.75*t.width+u.arrowHorizontalOffset,name:"arrow_sme"}),northEastArrowSouthEast:(e,t)=>({top:p(e,t),left:e.right-t.width+u.arrowHorizontalOffset,name:"arrow_se"}),southWestArrowNorthWest:(e,t)=>({top:g(e),left:e.left-u.arrowHorizontalOffset,name:"arrow_nw"}),southWestArrowNorthMiddleWest:(e,t)=>({top:g(e),left:e.left-.25*t.width-u.arrowHorizontalOffset,name:"arrow_nmw"}),southWestArrowNorth:(e,t)=>({top:g(e),left:e.left-t.width/2,name:"arrow_n"}),southWestArrowNorthMiddleEast:(e,t)=>({top:g(e),left:e.left-.75*t.width+u.arrowHorizontalOffset,name:"arrow_nme"}),southWestArrowNorthEast:(e,t)=>({top:g(e),left:e.left-t.width+u.arrowHorizontalOffset,name:"arrow_ne"}),southArrowNorthWest:(e,t)=>({top:g(e),left:e.left+e.width/2-u.arrowHorizontalOffset,name:"arrow_nw"}),southArrowNorthMiddleWest:(e,t)=>({top:g(e),left:e.left+e.width/2-.25*t.width-u.arrowHorizontalOffset,name:"arrow_nmw"}),southArrowNorth:(e,t)=>({top:g(e),left:e.left+e.width/2-t.width/2,name:"arrow_n"}),southArrowNorthMiddleEast:(e,t)=>({top:g(e),left:e.left+e.width/2-.75*t.width+u.arrowHorizontalOffset,name:"arrow_nme"}),southArrowNorthEast:(e,t)=>({top:g(e),left:e.left+e.width/2-t.width+u.arrowHorizontalOffset,name:"arrow_ne"}),southEastArrowNorthWest:(e,t)=>({top:g(e),left:e.right-u.arrowHorizontalOffset,name:"arrow_nw"}),southEastArrowNorthMiddleWest:(e,t)=>({top:g(e),left:e.right-.25*t.width-u.arrowHorizontalOffset,name:"arrow_nmw"}),southEastArrowNorth:(e,t)=>({top:g(e),left:e.right-t.width/2,name:"arrow_n"}),southEastArrowNorthMiddleEast:(e,t)=>({top:g(e),left:e.right-.75*t.width+u.arrowHorizontalOffset,name:"arrow_nme"}),southEastArrowNorthEast:(e,t)=>({top:g(e),left:e.right-t.width+u.arrowHorizontalOffset,name:"arrow_ne"}),viewportStickyNorth:(e,t,o)=>e.getIntersection(o)?{top:o.top+u.stickyVerticalOffset,left:e.left+e.width/2-t.width/2,name:"arrowless",config:{withArrow:!1}}:null}},"./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return h}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),r=o("./packages/ckeditor5-ui/src/view.js"),n=o("./packages/ckeditor5-ui/src/button/buttonview.js"),a=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),c=o("./packages/ckeditor5-utils/src/focustracker.js"),l=o("./packages/ckeditor5-utils/src/dom/tounit.js"),d=o("./packages/ckeditor5-utils/src/dom/rect.js");o("./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css"),o("./packages/ckeditor5-ui/theme/components/panel/fakepanel.css");const u=Object(l.a)("px");class h extends i.a{static get pluginName(){return"ContextualBalloon"}constructor(e){super(e),this.positionLimiter=()=>{const e=this.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},this.set("visibleView",null),this.view=new s.a(e.locale),e.ui.view.body.add(this.view),e.ui.focusTracker.add(this.view.element),this._viewToStack=new Map,this._idToStack=new Map,this.set("_numberOfStacks",0),this.set("_singleViewMode",!1),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}hasView(e){return Array.from(this._viewToStack.keys()).includes(e)}add(e){if(this.hasView(e.view))throw new a.a("contextualballoon-add-view-exist",[this,e]);const t=e.stackId||"main";if(!this._idToStack.has(t))return this._idToStack.set(t,new Map([[e.view,e]])),this._viewToStack.set(e.view,this._idToStack.get(t)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!e.singleViewMode||this.showStack(t));const o=this._idToStack.get(t);e.singleViewMode&&this.showStack(t),o.set(e.view,e),this._viewToStack.set(e.view,o),o===this._visibleStack&&this._showView(e)}remove(e){if(!this.hasView(e))throw new a.a("contextualballoon-remove-view-not-exist",[this,e]);const t=this._viewToStack.get(e);this._singleViewMode&&this.visibleView===e&&(this._singleViewMode=!1),this.visibleView===e&&(1===t.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(t.values())[t.size-2])),1===t.size?(this._idToStack.delete(this._getStackId(t)),this._numberOfStacks=this._idToStack.size):t.delete(e),this._viewToStack.delete(e)}updatePosition(e){e&&(this._visibleStack.get(this.visibleView).position=e),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}showStack(e){this.visibleStack=e;const t=this._idToStack.get(e);if(!t)throw new a.a("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(e){return Array.from(this._idToStack.entries()).find(t=>t[1]===e)[0]}_showNextStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)+1;e[t]||(t=0),this.showStack(this._getStackId(e[t]))}_showPrevStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)-1;e[t]||(t=e.length-1),this.showStack(this._getStackId(e[t]))}_createRotatorView(){const e=new p(this.editor.locale),t=this.editor.locale.t;return this.view.content.add(e),e.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",(e,t)=>!t&&e>1),e.on("change:isNavigationVisible",()=>this.updatePosition(),{priority:"low"}),e.bind("counter").to(this,"visibleView",this,"_numberOfStacks",(e,o)=>{if(o<2)return"";const i=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return t("%0 of %1",[i,o])}),e.buttonNextView.on("execute",()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()}),e.buttonPrevView.on("execute",()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()}),e}_createFakePanelsView(){const e=new g(this.editor.locale,this.view);return e.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",(e,t)=>!t&&e>=2?Math.min(e-1,2):0),e.listenTo(this.view,"change:top",()=>e.updatePosition()),e.listenTo(this.view,"change:left",()=>e.updatePosition()),this.editor.ui.view.body.add(e),e}_showView({view:e,balloonClassName:t="",withArrow:o=!0,singleViewMode:i=!1}){this.view.class=t,this.view.withArrow=o,this._rotatorView.showView(e),this.visibleView=e,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),i&&(this._singleViewMode=!0)}_getBalloonPosition(){let e=Array.from(this._visibleStack.values()).pop().position;return e&&(e.limiter||(e=Object.assign({},e,{limiter:this.positionLimiter})),e=Object.assign({},e,{viewportOffsetConfig:this.editor.ui.viewportOffset})),e}}class p extends r.a{constructor(e){super(e);const t=e.t,o=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new c.a,this.buttonPrevView=this._createButtonView(t("Previous"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.463 5.187a.888.888 0 1 1 1.254 1.255L9.16 10l3.557 3.557a.888.888 0 1 1-1.254 1.255L7.26 10.61a.888.888 0 0 1 .16-1.382l4.043-4.042z"/></svg>'),this.buttonNextView=this._createButtonView(t("Next"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.537 14.813a.888.888 0 1 1-1.254-1.255L10.84 10 7.283 6.442a.888.888 0 1 1 1.254-1.255L12.74 9.39a.888.888 0 0 1-.16 1.382l-4.043 4.042z"/></svg>'),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",o.to("isNavigationVisible",e=>e?"":"ck-hidden")]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:o.to("counter")}]},this.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}showView(e){this.hideView(),this.content.add(e)}hideView(){this.content.clear()}_createButtonView(e,t){const o=new n.a(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o}}class g extends r.a{constructor(e,t){super(e);const o=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("height",0),this.set("width",0),this.set("numberOfPanels",0),this.content=this.createCollection(),this._balloonPanelView=t,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",o.to("numberOfPanels",e=>e?"":"ck-hidden")],style:{top:o.to("top",u),left:o.to("left",u),width:o.to("width",u),height:o.to("height",u)}},children:this.content}),this.on("change:numberOfPanels",(e,t,o,i)=>{o>i?this._addPanels(o-i):this._removePanels(i-o),this.updatePosition()})}_addPanels(e){for(;e--;){const e=new r.a;e.setTemplate({tag:"div"}),this.content.add(e),this.registerChild(e)}}_removePanels(e){for(;e--;){const e=this.content.last;this.content.remove(e),this.deregisterChild(e),e.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:e,left:t}=this._balloonPanelView,{width:o,height:i}=new d.a(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:o,height:i})}}}},"./packages/ckeditor5-ui/src/template.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return h}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),s=o("./packages/ckeditor5-utils/src/mix.js"),r=o("./packages/ckeditor5-utils/src/emittermixin.js"),n=o("./packages/ckeditor5-ui/src/view.js"),a=o("./packages/ckeditor5-ui/src/viewcollection.js"),c=o("./packages/ckeditor5-utils/src/dom/isnode.js"),l=o("./node_modules/lodash-es/isObject.js"),d=o("./node_modules/lodash-es/cloneDeepWith.js"),u=o("./packages/ckeditor5-utils/src/toarray.js");class h{constructor(e){Object.assign(this,y(v(e))),this._isRendered=!1,this._revertData=null}render(){const e=this._renderNode({intoFragment:!0});return this._isRendered=!0,e}apply(e){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:e,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new i.a("ui-template-revert-not-applied",[this,e]);this._revertTemplateFromNode(e,this._revertData)}*getViews(){yield*function*e(t){if(t.children)for(const o of t.children)A(o)?yield o:T(o)&&(yield*e(o))}(this)}static bind(e,t){return{to:(o,i)=>new g({eventNameOrFunction:o,attribute:o,observable:e,emitter:t,callback:i}),if:(o,i,s)=>new f({observable:e,emitter:t,attribute:o,valueIfTrue:i,callback:s})}}static extend(e,t){if(e._isRendered)throw new i.a("template-extend-render",[this,e]);!function e(t,o){o.attributes&&(t.attributes||(t.attributes={}),P(t.attributes,o.attributes));o.eventListeners&&(t.eventListeners||(t.eventListeners={}),P(t.eventListeners,o.eventListeners));o.text&&t.text.push(...o.text);if(o.children&&o.children.length){if(t.children.length!=o.children.length)throw new i.a("ui-template-extend-children-mismatch",t);let s=0;for(const i of o.children)e(t.children[s++],i)}}(e,y(v(t)))}_renderNode(e){let t;if(t=e.node?this.tag&&this.text:this.tag?this.text:!this.text,t)throw new i.a("ui-template-wrong-syntax",this);return this.text?this._renderText(e):this._renderElement(e)}_renderElement(e){let t=e.node;return t||(t=e.node=document.createElementNS(this.ns||"http://www.w3.org/1999/xhtml",this.tag)),this._renderAttributes(e),this._renderElementChildren(e),this._setUpListeners(e),t}_renderText(e){let t=e.node;return t?e.revertData.text=t.textContent:t=e.node=document.createTextNode(""),m(this.text)?this._bindToObservable({schema:this.text,updater:b(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){let t,o,i,s;if(!this.attributes)return;const r=e.node,n=e.revertData;for(t in this.attributes)if(i=r.getAttribute(t),o=this.attributes[t],n&&(n.attributes[t]=i),s=Object(l.a)(o[0])&&o[0].ns?o[0].ns:null,m(o)){const a=s?o[0].value:o;n&&E(t)&&a.unshift(i),this._bindToObservable({schema:a,updater:_(r,t,s),data:e})}else"style"==t&&"string"!=typeof o[0]?this._renderStyleAttribute(o[0],e):(n&&i&&E(t)&&o.unshift(i),o=o.map(e=>e&&e.value||e).reduce((e,t)=>e.concat(t),[]).reduce(x,""),O(o)||r.setAttributeNS(s,t,o))}_renderStyleAttribute(e,t){const o=t.node;for(const i in e){const s=e[i];m(s)?this._bindToObservable({schema:[s],updater:w(o,i),data:t}):o.style[i]=s}}_renderElementChildren(e){const t=e.node,o=e.intoFragment?document.createDocumentFragment():t,i=e.isApplying;let s=0;for(const r of this.children)if(C(r)){if(!i){r.setParent(t);for(const e of r)o.appendChild(e.element)}}else if(A(r))i||(r.isRendered||r.render(),o.appendChild(r.element));else if(Object(c.a)(r))o.appendChild(r);else if(i){const t={children:[],bindings:[],attributes:{}};e.revertData.children.push(t),r._renderNode({node:o.childNodes[s++],isApplying:!0,revertData:t})}else o.appendChild(r.render());e.intoFragment&&t.appendChild(o)}_setUpListeners(e){if(this.eventListeners)for(const t in this.eventListeners){const o=this.eventListeners[t].map(o=>{const[i,s]=t.split("@");return o.activateDomEventListener(i,s,e)});e.revertData&&e.revertData.bindings.push(o)}}_bindToObservable({schema:e,updater:t,data:o}){const i=o.revertData;k(e,t,o);const s=e.filter(e=>!O(e)).filter(e=>e.observable).map(i=>i.activateAttributeListener(e,t,o));i&&i.bindings.push(s)}_revertTemplateFromNode(e,t){for(const e of t.bindings)for(const t of e)t();if(t.text)e.textContent=t.text;else{for(const o in t.attributes){const i=t.attributes[o];null===i?e.removeAttribute(o):e.setAttribute(o,i)}for(let o=0;o<t.children.length;++o)this._revertTemplateFromNode(e.childNodes[o],t.children[o])}}}Object(s.a)(h,r.c);class p{constructor(e){Object.assign(this,e)}getValue(e){const t=this.observable[this.attribute];return this.callback?this.callback(t,e):t}activateAttributeListener(e,t,o){const i=()=>k(e,t,o);return this.emitter.listenTo(this.observable,"change:"+this.attribute,i),()=>{this.emitter.stopListening(this.observable,"change:"+this.attribute,i)}}}class g extends p{activateDomEventListener(e,t,o){const i=(e,o)=>{t&&!o.target.matches(t)||("function"==typeof this.eventNameOrFunction?this.eventNameOrFunction(o):this.observable.fire(this.eventNameOrFunction,o))};return this.emitter.listenTo(o.node,e,i),()=>{this.emitter.stopListening(o.node,e,i)}}}class f extends p{getValue(e){return!O(super.getValue(e))&&(this.valueIfTrue||!0)}}function m(e){return!!e&&(e.value&&(e=e.value),Array.isArray(e)?e.some(m):e instanceof p)}function k(e,t,{node:o}){let i=function(e,t){return e.map(e=>e instanceof p?e.getValue(t):e)}(e,o);i=1==e.length&&e[0]instanceof f?i[0]:i.reduce(x,""),O(i)?t.remove():t.set(i)}function b(e){return{set(t){e.textContent=t},remove(){e.textContent=""}}}function _(e,t,o){return{set(i){e.setAttributeNS(o,t,i)},remove(){e.removeAttributeNS(o,t)}}}function w(e,t){return{set(o){e.style[t]=o},remove(){e.style[t]=null}}}function v(e){return Object(d.a)(e,e=>{if(e&&(e instanceof p||T(e)||A(e)||C(e)))return e})}function y(e){if("string"==typeof e?e=function(e){return{text:[e]}}(e):e.text&&function(e){e.text=Object(u.a)(e.text)}(e),e.on&&(e.eventListeners=function(e){for(const t in e)j(e,t);return e}(e.on),delete e.on),!e.text){e.attributes&&function(e){for(const t in e)e[t].value&&(e[t].value=Object(u.a)(e[t].value)),j(e,t)}(e.attributes);const t=[];if(e.children)if(C(e.children))t.push(e.children);else for(const o of e.children)T(o)||A(o)||Object(c.a)(o)?t.push(o):t.push(new h(o));e.children=t}return e}function j(e,t){e[t]=Object(u.a)(e[t])}function x(e,t){return O(t)?e:O(e)?t:`${e} ${t}`}function P(e,t){for(const o in t)e[o]?e[o].push(...t[o]):e[o]=t[o]}function O(e){return!e&&0!==e}function A(e){return e instanceof n.a}function T(e){return e instanceof h}function C(e){return e instanceof a.a}function E(e){return"class"==e||"style"==e}},"./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js":function(e,t,o){"use strict";function i(e){return Array.isArray(e)?{items:e,removeItems:[]}:e?Object.assign({items:[],removeItems:[]},e):{items:[],removeItems:[]}}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-ui/src/view.js");class s extends i.a{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}},"./packages/ckeditor5-ui/src/toolbar/toolbarview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return k}));var i=o("./packages/ckeditor5-ui/src/view.js"),s=o("./packages/ckeditor5-utils/src/focustracker.js"),r=o("./packages/ckeditor5-ui/src/focuscycler.js"),n=o("./packages/ckeditor5-utils/src/keystrokehandler.js"),a=o("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js");class c extends i.a{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}var l=o("./packages/ckeditor5-utils/src/dom/resizeobserver.js");function d(e){return e.bindTemplate.to(t=>{t.target===e.element&&t.preventDefault()})}var u=o("./packages/ckeditor5-utils/src/dom/rect.js"),h=o("./packages/ckeditor5-utils/src/dom/global.js"),p=o("./packages/ckeditor5-ui/src/dropdown/utils.js"),g=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),f=o("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),m=o("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg");o("./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css");class k extends i.a{constructor(e,t){super(e);const o=this.bindTemplate,i=this.t;this.options=t||{},this.set("ariaLabel",i("Editor toolbar")),this.set("maxWidth","auto"),this.items=this.createCollection(),this.focusTracker=new s.a,this.keystrokes=new n.a,this.set("class"),this.set("isCompact",!1),this.itemsView=new b(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const a="rtl"===e.uiLanguageDirection;this._focusCycler=new r.a({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[a?"arrowright":"arrowleft","arrowup"],focusNext:[a?"arrowleft":"arrowright","arrowdown"]}});const c=["ck","ck-toolbar",o.to("class"),o.if("isCompact","ck-toolbar_compact")];this.options.shouldGroupWhenFull&&this.options.isFloating&&c.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:c,role:"toolbar","aria-label":o.to("ariaLabel"),style:{maxWidth:o.to("maxWidth")}},children:this.children,on:{mousedown:d(this)}}),this._behavior=this.options.shouldGroupWhenFull?new w(this):new _(this)}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",(e,t)=>{this.focusTracker.add(t.element)}),this.items.on("remove",(e,t)=>{this.focusTracker.remove(t.element)}),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(e,t){const o=Object(f.a)(e),i=o.items.filter((e,i,s)=>"|"===e||-1===o.removeItems.indexOf(e)&&("-"===e?!this.options.shouldGroupWhenFull||(Object(g.c)("toolbarview-line-break-ignored-when-grouping-items",s),!1):!!t.has(e)||(Object(g.c)("toolbarview-item-unavailable",{name:e}),!1))),s=this._cleanSeparators(i).map(e=>"|"===e?new a.a:"-"===e?new c:t.create(e));this.items.addMany(s)}_cleanSeparators(e){const t=e=>"-"!==e&&"|"!==e,o=e.length,i=e.findIndex(t),s=o-e.slice().reverse().findIndex(t);return e.slice(i,s).filter((e,o,i)=>{if(t(e))return!0;return!(o>0&&i[o-1]===e)})}}class b extends i.a{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class _{constructor(e){const t=e.bindTemplate;e.set("isVertical",!1),e.itemsView.children.bindTo(e.items).using(e=>e),e.focusables.bindTo(e.items).using(e=>e),e.extendTemplate({attributes:{class:[t.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class w{constructor(e){this.view=e,this.viewChildren=e.children,this.viewFocusables=e.focusables,this.viewItemsView=e.itemsView,this.viewFocusTracker=e.focusTracker,this.viewLocale=e.locale,this.ungroupedItems=e.createCollection(),this.groupedItems=e.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,this.shouldUpdateGroupingOnNextResize=!1,e.itemsView.children.bindTo(this.ungroupedItems).using(e=>e),this.ungroupedItems.on("add",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on("remove",this._updateFocusCycleableItems.bind(this)),e.children.on("add",this._updateFocusCycleableItems.bind(this)),e.children.on("remove",this._updateFocusCycleableItems.bind(this)),e.items.on("change",(e,t)=>{const o=t.index;for(const e of t.removed)o>=this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e);for(let e=o;e<o+t.added.length;e++){const i=t.added[e-o];e>this.ungroupedItems.length?this.groupedItems.add(i,e-this.ungroupedItems.length):this.ungroupedItems.add(i,e)}this._updateGrouping()}),e.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}render(e){this.viewElement=e.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(e)}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;if(!this.viewElement.offsetParent)return void(this.shouldUpdateGroupingOnNextResize=!0);const e=this.groupedItems.length;let t;for(;this._areItemsOverflowing;)this._groupLastItem(),t=!0;if(!t&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}this.groupedItems.length!==e&&this.view.fire("groupedItemsUpdate")}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const e=this.viewElement,t=this.viewLocale.uiLanguageDirection,o=new u.a(e.lastChild),i=new u.a(e);if(!this.cachedPadding){const o=h.a.window.getComputedStyle(e),i="ltr"===t?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(o[i])}return"ltr"===t?o.right>i.right-this.cachedPadding:o.left<i.left+this.cachedPadding}_enableGroupingOnResize(){let e;this.resizeObserver=new l.a(this.viewElement,t=>{e&&e===t.contentRect.width&&!this.shouldUpdateGroupingOnNextResize||(this.shouldUpdateGroupingOnNextResize=!1,this._updateGrouping(),e=t.contentRect.width)}),this._updateGrouping()}_enableGroupingOnMaxWidthChange(e){e.on("change:maxWidth",()=>{this._updateGrouping()})}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new a.a),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const e=this.viewLocale,t=e.t,o=Object(p.c)(e);return o.class="ck-toolbar__grouped-dropdown",o.panelPosition="ltr"===e.uiLanguageDirection?"sw":"se",Object(p.b)(o,[]),o.buttonView.set({label:t("Show more items"),tooltip:!0,tooltipPosition:"rtl"===e.uiLanguageDirection?"se":"sw",icon:m.a}),o.toolbarView.items.bindTo(this.groupedItems).using(e=>e),o}_updateFocusCycleableItems(){this.viewFocusables.clear(),this.ungroupedItems.map(e=>{this.viewFocusables.add(e)}),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}},"./packages/ckeditor5-ui/src/tooltip/tooltipview.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-ui/src/view.js");o("./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css");class s extends i.a{constructor(e){super(e),this.set("text",""),this.set("position","s");const t=this.bindTemplate;this.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip",t.to("position",e=>"ck-tooltip_"+e),t.if("text","ck-hidden",e=>!e.trim())]},children:[{tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:t.to("text")}]}]})}}},"./packages/ckeditor5-ui/src/view.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return u}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),s=o("./packages/ckeditor5-ui/src/viewcollection.js"),r=o("./packages/ckeditor5-ui/src/template.js"),n=o("./packages/ckeditor5-utils/src/dom/emittermixin.js"),a=o("./packages/ckeditor5-utils/src/observablemixin.js"),c=o("./packages/ckeditor5-utils/src/collection.js"),l=o("./packages/ckeditor5-utils/src/mix.js"),d=o("./packages/ckeditor5-utils/src/isiterable.js");o("./packages/ckeditor5-ui/theme/globals/globals.css");class u{constructor(e){this.element=null,this.isRendered=!1,this.locale=e,this.t=e&&e.t,this._viewCollections=new c.a,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",(t,o)=>{o.locale=e}),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=r.a.bind(this,this)}createCollection(e){const t=new s.a(e);return this._viewCollections.add(t),t}registerChild(e){Object(d.a)(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){Object(d.a)(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new r.a(e)}extendTemplate(e){r.a.extend(this.template,e)}render(){if(this.isRendered)throw new i.a("ui-view-render-already-rendered",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map(e=>e.destroy()),this.template&&this.template._revertData&&this.template.revert(this.element)}}Object(l.a)(u,n.a),Object(l.a)(u,a.a)},"./packages/ckeditor5-ui/src/viewcollection.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),s=o("./packages/ckeditor5-utils/src/collection.js");class r extends s.a{constructor(e=[]){super(e,{idProperty:"viewUid"}),this.on("add",(e,t,o)=>{this._renderViewIntoCollectionParent(t,o)}),this.on("remove",(e,t)=>{t.element&&this._parentElement&&t.element.remove()}),this._parentElement=null}destroy(){this.map(e=>e.destroy())}setParent(e){this._parentElement=e;for(const e of this)this._renderViewIntoCollectionParent(e)}delegate(...e){if(!e.length||!e.every(e=>"string"==typeof e))throw new i.a("ui-viewcollection-delegate-wrong-events",this);return{to:t=>{for(const o of this)for(const i of e)o.delegate(i).to(t);this.on("add",(o,i)=>{for(const o of e)i.delegate(o).to(t)}),this.on("remove",(o,i)=>{for(const o of e)i.stopDelegating(o,t)})}}}_renderViewIntoCollectionParent(e,t){e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[t])}}},"./packages/ckeditor5-ui/theme/components/button/button.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/button/button.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/button/switchbutton.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/button/switchbutton.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/editorui/editorui.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/editorui/editorui.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/formheader/formheader.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/formheader/formheader.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/icon/icon.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/icon/icon.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/inputtext/inputtext.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/inputtext/inputtext.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/label/label.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/label/label.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/list/list.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/list/list.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/panel/fakepanel.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/panel/stickypanel.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/globals/globals.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-ui/theme/globals/globals.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg":function(e,t,o){"use strict";t.a='<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>'},"./packages/ckeditor5-utils/src/ckeditorerror.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return i})),o.d(t,"c",(function(){return s})),o.d(t,"b",(function(){return r}));class i extends Error{constructor(e,t,o){super(function(e,t){const o=new WeakSet,i=t?" "+JSON.stringify(t,(e,t)=>{if("object"==typeof t&&null!==t){if(o.has(t))return`[object ${t.constructor.name}]`;o.add(t)}return t}):"",s=n(e);return e+i+s}(e,o)),this.name="CKEditorError",this.context=t,this.data=o}is(e){return"CKEditorError"===e}static rethrowUnexpectedError(e,t){if(e.is&&e.is("CKEditorError"))throw e;const o=new i(e.message,t);throw o.stack=e.stack,o}}function s(e,t){console.warn(...a(e,t))}function r(e,t){console.error(...a(e,t))}function n(e){return"\nRead more: https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html#error-"+e}function a(e,t){const o=n(e);return t?[e,t,o]:[e,o]}},"./packages/ckeditor5-utils/src/collection.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return c}));var i=o("./packages/ckeditor5-utils/src/emittermixin.js"),s=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),r=o("./packages/ckeditor5-utils/src/uid.js"),n=o("./packages/ckeditor5-utils/src/isiterable.js"),a=o("./packages/ckeditor5-utils/src/mix.js");class c{constructor(e={},t={}){const o=Object(n.a)(e);if(o||(t=e),this._items=[],this._itemMap=new Map,this._idProperty=t.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[],o)for(const t of e)this._items.push(t),this._itemMap.set(this._getItemIdBeforeAdding(t),t)}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(e,t){return this.addMany([e],t)}addMany(e,t){if(void 0===t)t=this._items.length;else if(t>this._items.length||t<0)throw new s.a("collection-add-item-invalid-index",this);for(let o=0;o<e.length;o++){const i=e[o],s=this._getItemIdBeforeAdding(i),r=t+o;this._items.splice(r,0,i),this._itemMap.set(s,i),this.fire("add",i,r)}return this.fire("change",{added:e,removed:[],index:t}),this}get(e){let t;if("string"==typeof e)t=this._itemMap.get(e);else{if("number"!=typeof e)throw new s.a("collection-get-invalid-arg",this);t=this._items[e]}return t||null}has(e){if("string"==typeof e)return this._itemMap.has(e);{const t=e[this._idProperty];return this._itemMap.has(t)}}getIndex(e){let t;return t="string"==typeof e?this._itemMap.get(e):e,this._items.indexOf(t)}remove(e){const[t,o]=this._remove(e);return this.fire("change",{added:[],removed:[t],index:o}),t}map(e,t){return this._items.map(e,t)}find(e,t){return this._items.find(e,t)}filter(e,t){return this._items.filter(e,t)}clear(){this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);const e=Array.from(this._items);for(;this.length;)this._remove(0);this.fire("change",{added:[],removed:e,index:0})}bindTo(e){if(this._bindToCollection)throw new s.a("collection-bind-to-rebind",this);return this._bindToCollection=e,{as:e=>{this._setUpBindToBinding(t=>new e(t))},using:e=>{"function"==typeof e?this._setUpBindToBinding(t=>e(t)):this._setUpBindToBinding(t=>t[e])}}}_setUpBindToBinding(e){const t=this._bindToCollection,o=(o,i,s)=>{const r=t._bindToCollection==this,n=t._bindToInternalToExternalMap.get(i);if(r&&n)this._bindToExternalToInternalMap.set(i,n),this._bindToInternalToExternalMap.set(n,i);else{const o=e(i);if(!o)return void this._skippedIndexesFromExternal.push(s);let r=s;for(const e of this._skippedIndexesFromExternal)s>e&&r--;for(const e of t._skippedIndexesFromExternal)r>=e&&r++;this._bindToExternalToInternalMap.set(i,o),this._bindToInternalToExternalMap.set(o,i),this.add(o,r);for(let e=0;e<t._skippedIndexesFromExternal.length;e++)r<=t._skippedIndexesFromExternal[e]&&t._skippedIndexesFromExternal[e]++}};for(const e of t)o(0,e,t.getIndex(e));this.listenTo(t,"add",o),this.listenTo(t,"remove",(e,t,o)=>{const i=this._bindToExternalToInternalMap.get(t);i&&this.remove(i),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce((e,t)=>(o<t&&e.push(t-1),o>t&&e.push(t),e),[])})}_getItemIdBeforeAdding(e){const t=this._idProperty;let o;if(t in e){if(o=e[t],"string"!=typeof o)throw new s.a("collection-add-invalid-id",this);if(this.get(o))throw new s.a("collection-add-item-already-exists",this)}else e[t]=o=Object(r.a)();return o}_remove(e){let t,o,i,r=!1;const n=this._idProperty;if("string"==typeof e?(o=e,i=this._itemMap.get(o),r=!i,i&&(t=this._items.indexOf(i))):"number"==typeof e?(t=e,i=this._items[t],r=!i,i&&(o=i[n])):(i=e,o=i[n],t=this._items.indexOf(i),r=-1==t||!this._itemMap.get(o)),r)throw new s.a("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(o);const a=this._bindToInternalToExternalMap.get(i);return this._bindToInternalToExternalMap.delete(i),this._bindToExternalToInternalMap.delete(a),this.fire("remove",i,t),[i,t]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}Object(a.a)(c,i.c)},"./packages/ckeditor5-utils/src/comparearrays.js":function(e,t,o){"use strict";function i(e,t){const o=Math.min(e.length,t.length);for(let i=0;i<o;i++)if(e[i]!=t[i])return i;return e.length==t.length?"same":e.length<t.length?"prefix":"extension"}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/count.js":function(e,t,o){"use strict";function i(e){let t=0;for(const o of e)t++;return t}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/diff.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-utils/src/fastdiff.js");function s(e,t,o){o=o||function(e,t){return e===t};const i=e.length,r=t.length;if(i>200||r>200||i+r>300)return s.fastDiff(e,t,o,!0);let n,a;if(r<i){const o=e;e=t,t=o,n="delete",a="insert"}else n="insert",a="delete";const c=e.length,l=t.length,d=l-c,u={},h={};function p(i){const s=(void 0!==h[i-1]?h[i-1]:-1)+1,r=void 0!==h[i+1]?h[i+1]:-1,d=s>r?-1:1;u[i+d]&&(u[i]=u[i+d].slice(0)),u[i]||(u[i]=[]),u[i].push(s>r?n:a);let p=Math.max(s,r),g=p-i;for(;g<c&&p<l&&o(e[g],t[p]);)g++,p++,u[i].push("equal");return p}let g,f=0;do{for(g=-f;g<d;g++)h[g]=p(g);for(g=d+f;g>d;g--)h[g]=p(g);h[d]=p(d),f++}while(h[d]!==l);return u[d].slice(1)}s.fastDiff=i.a},"./packages/ckeditor5-utils/src/dom/createelement.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return c}));var i=o("./packages/ckeditor5-utils/src/isiterable.js"),s=o("./node_modules/lodash-es/_baseGetTag.js"),r=o("./node_modules/lodash-es/isArray.js"),n=o("./node_modules/lodash-es/isObjectLike.js");var a=function(e){return"string"==typeof e||!Object(r.a)(e)&&Object(n.a)(e)&&"[object String]"==Object(s.a)(e)};function c(e,t,o={},s=[]){const r=o&&o.xmlns,n=r?e.createElementNS(r,t):e.createElement(t);for(const e in o)n.setAttribute(e,o[e]);!a(s)&&Object(i.a)(s)||(s=[s]);for(let t of s)a(t)&&(t=e.createTextNode(t)),n.appendChild(t);return n}},"./packages/ckeditor5-utils/src/dom/emittermixin.js":function(e,t,o){"use strict";var i=o("./packages/ckeditor5-utils/src/emittermixin.js"),s=o("./packages/ckeditor5-utils/src/uid.js"),r=o("./packages/ckeditor5-utils/src/dom/isnode.js"),n=o("./packages/ckeditor5-utils/src/dom/iswindow.js"),a=o("./node_modules/lodash-es/assignIn.js");const c=Object(a.a)({},i.c,{listenTo(e,...t){if(Object(r.a)(e)||Object(n.a)(e)){const o=this._getProxyEmitter(e)||new l(e);o.attach(...t),e=o}i.c.listenTo.call(this,e,...t)},stopListening(e,t,o){if(Object(r.a)(e)||Object(n.a)(e)){const t=this._getProxyEmitter(e);if(!t)return;e=t}i.c.stopListening.call(this,e,t,o),e instanceof l&&e.detach(t)},_getProxyEmitter(e){return Object(i.a)(this,d(e))}});t.a=c;class l{constructor(e){Object(i.b)(this,d(e)),this._domNode=e}}function d(e){return e["data-ck-expando"]||(e["data-ck-expando"]=Object(s.a)())}Object(a.a)(l.prototype,i.c,{attach(e,t,o={}){if(this._domListeners&&this._domListeners[e])return;const i={capture:!!o.useCapture,passive:!!o.usePassive},s=this._createDomListener(e,i);this._domNode.addEventListener(e,s,i),this._domListeners||(this._domListeners={}),this._domListeners[e]=s},detach(e){let t;!this._domListeners[e]||(t=this._events[e])&&t.callbacks.length||this._domListeners[e].removeListener()},_createDomListener(e,t){const o=t=>{this.fire(e,t)};return o.removeListener=()=>{this._domNode.removeEventListener(e,o,t),delete this._domListeners[e]},o}})},"./packages/ckeditor5-utils/src/dom/getborderwidths.js":function(e,t,o){"use strict";function i(e){const t=e.ownerDocument.defaultView.getComputedStyle(e);return{top:parseInt(t.borderTopWidth,10),right:parseInt(t.borderRightWidth,10),bottom:parseInt(t.borderBottomWidth,10),left:parseInt(t.borderLeftWidth,10)}}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/dom/global.js":function(e,t,o){"use strict";t.a={window:window,document:document}},"./packages/ckeditor5-utils/src/dom/isnode.js":function(e,t,o){"use strict";function i(e){if(e){if(e.defaultView)return e instanceof e.defaultView.Document;if(e.ownerDocument&&e.ownerDocument.defaultView)return e instanceof e.ownerDocument.defaultView.Node}return!1}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/dom/isrange.js":function(e,t,o){"use strict";function i(e){return"[object Range]"==Object.prototype.toString.apply(e)}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/dom/istext.js":function(e,t,o){"use strict";function i(e){return"[object Text]"==Object.prototype.toString.call(e)}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/dom/iswindow.js":function(e,t,o){"use strict";function i(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/dom/position.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-utils/src/dom/global.js"),s=o("./packages/ckeditor5-utils/src/dom/rect.js");var r=o("./packages/ckeditor5-utils/src/dom/getborderwidths.js"),n=o("./node_modules/lodash-es/isFunction.js");function a({element:e,target:t,positions:o,limiter:r,fitInViewport:a,viewportOffsetConfig:c}){Object(n.a)(t)&&(t=t()),Object(n.a)(r)&&(r=r());const d=function(e){return e&&e.parentNode?e.offsetParent===i.a.document.body?null:e.offsetParent:null}(e),u=new s.a(e);let h;const p={targetRect:new s.a(t),elementRect:u,positionedElementAncestor:d};if(r||a){const e=r&&new s.a(r).getVisible(),t=a&&function(e){e=Object.assign({top:0,bottom:0,left:0,right:0},e);const t=new s.a(i.a.window);return t.top+=e.top,t.height-=e.top,t.bottom-=e.bottom,t.height-=e.bottom,t}(c);Object.assign(p,{limiterRect:e,viewportRect:t}),h=function(e,t){const{elementRect:o}=t,i=o.getArea(),s=e.map(e=>new l(e,t)).filter(e=>!!e.name);let r=0,n=null;for(const e of s){const{_limiterIntersectionArea:t,_viewportIntersectionArea:o}=e;if(t===i)return e;const s=o**2+t**2;s>r&&(r=s,n=e)}return n}(o,p)||new l(o[0],p)}else h=new l(o[0],p);return h}function c(e){const{scrollX:t,scrollY:o}=i.a.window;return e.clone().moveBy(t,o)}class l{constructor(e,t){const o=e(t.targetRect,t.elementRect,t.viewportRect);if(!o)return;const{left:i,top:s,name:r,config:n}=o;Object.assign(this,{name:r,config:n}),this._positioningFunctionCorrdinates={left:i,top:s},this._options=t}get left(){return this._absoluteRect.left}get top(){return this._absoluteRect.top}get _limiterIntersectionArea(){const e=this._options.limiterRect;if(e){const t=this._options.viewportRect;if(!t)return e.getIntersectionArea(this._rect);{const o=e.getIntersection(t);if(o)return o.getIntersectionArea(this._rect)}}return 0}get _viewportIntersectionArea(){const e=this._options.viewportRect;return e?e.getIntersectionArea(this._rect):0}get _rect(){return this._cachedRect||(this._cachedRect=this._options.elementRect.clone().moveTo(this._positioningFunctionCorrdinates.left,this._positioningFunctionCorrdinates.top)),this._cachedRect}get _absoluteRect(){return this._cachedAbsoluteRect||(this._cachedAbsoluteRect=c(this._rect),this._options.positionedElementAncestor&&function(e,t){const o=c(new s.a(t)),i=Object(r.a)(t);let n=0,a=0;n-=o.left,a-=o.top,n+=t.scrollLeft,a+=t.scrollTop,n-=i.left,a-=i.top,e.moveBy(n,a)}(this._cachedAbsoluteRect,this._options.positionedElementAncestor)),this._cachedAbsoluteRect}}},"./packages/ckeditor5-utils/src/dom/rect.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return l}));var i=o("./packages/ckeditor5-utils/src/dom/isrange.js"),s=o("./packages/ckeditor5-utils/src/dom/iswindow.js"),r=o("./packages/ckeditor5-utils/src/dom/getborderwidths.js"),n=o("./packages/ckeditor5-utils/src/dom/istext.js"),a=o("./node_modules/lodash-es/isElement.js");const c=["top","right","bottom","left","width","height"];class l{constructor(e){const t=Object(i.a)(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),Object(a.a)(e)||t)if(t){const t=l.getDomRangeRects(e);d(this,l.getBoundingRect(t))}else d(this,e.getBoundingClientRect());else if(Object(s.a)(e)){const{innerWidth:t,innerHeight:o}=e;d(this,{top:0,right:t,bottom:o,left:0,width:t,height:o})}else d(this,e)}clone(){return new l(this)}moveTo(e,t){return this.top=t,this.right=e+this.width,this.bottom=t+this.height,this.left=e,this}moveBy(e,t){return this.top+=t,this.right+=e,this.left+=e,this.bottom+=t,this}getIntersection(e){const t={top:Math.max(this.top,e.top),right:Math.min(this.right,e.right),bottom:Math.min(this.bottom,e.bottom),left:Math.max(this.left,e.left)};return t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0?null:new l(t)}getIntersectionArea(e){const t=this.getIntersection(e);return t?t.getArea():0}getArea(){return this.width*this.height}getVisible(){const e=this._source;let t=this.clone();if(!u(e)){let o=e.parentNode||e.commonAncestorContainer;for(;o&&!u(o);){const e=new l(o),i=t.getIntersection(e);if(!i)return null;i.getArea()<t.getArea()&&(t=i),o=o.parentNode}}return t}isEqual(e){for(const t of c)if(this[t]!==e[t])return!1;return!0}contains(e){const t=this.getIntersection(e);return!(!t||!t.isEqual(e))}excludeScrollbarsAndBorders(){const e=this._source;let t,o,i;if(Object(s.a)(e))t=e.innerWidth-e.document.documentElement.clientWidth,o=e.innerHeight-e.document.documentElement.clientHeight,i=e.getComputedStyle(e.document.documentElement).direction;else{const s=Object(r.a)(this._source);t=e.offsetWidth-e.clientWidth-s.left-s.right,o=e.offsetHeight-e.clientHeight-s.top-s.bottom,i=e.ownerDocument.defaultView.getComputedStyle(e).direction,this.left+=s.left,this.top+=s.top,this.right-=s.right,this.bottom-=s.bottom,this.width=this.right-this.left,this.height=this.bottom-this.top}return this.width-=t,"ltr"===i?this.right-=t:this.left+=t,this.height-=o,this.bottom-=o,this}static getDomRangeRects(e){const t=[],o=Array.from(e.getClientRects());if(o.length)for(const e of o)t.push(new l(e));else{let o=e.startContainer;Object(n.a)(o)&&(o=o.parentNode);const i=new l(o.getBoundingClientRect());i.right=i.left,i.width=0,t.push(i)}return t}static getBoundingRect(e){const t={left:Number.POSITIVE_INFINITY,top:Number.POSITIVE_INFINITY,right:Number.NEGATIVE_INFINITY,bottom:Number.NEGATIVE_INFINITY};let o=0;for(const i of e)o++,t.left=Math.min(t.left,i.left),t.top=Math.min(t.top,i.top),t.right=Math.max(t.right,i.right),t.bottom=Math.max(t.bottom,i.bottom);return 0==o?null:(t.width=t.right-t.left,t.height=t.bottom-t.top,new l(t))}}function d(e,t){for(const o of c)e[o]=t[o]}function u(e){return!!Object(a.a)(e)&&e===e.ownerDocument.body}},"./packages/ckeditor5-utils/src/dom/resizeobserver.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-utils/src/mix.js"),s=o("./packages/ckeditor5-utils/src/dom/global.js"),r=o("./packages/ckeditor5-utils/src/dom/rect.js"),n=o("./packages/ckeditor5-utils/src/dom/emittermixin.js");class a{constructor(e,t){a._observerInstance||a._createObserver(),this._element=e,this._callback=t,a._addElementCallback(e,t),a._observerInstance.observe(e)}destroy(){a._deleteElementCallback(this._element,this._callback)}static _addElementCallback(e,t){a._elementCallbacks||(a._elementCallbacks=new Map);let o=a._elementCallbacks.get(e);o||(o=new Set,a._elementCallbacks.set(e,o)),o.add(t)}static _deleteElementCallback(e,t){const o=a._getElementCallbacks(e);o&&(o.delete(t),o.size||(a._elementCallbacks.delete(e),a._observerInstance.unobserve(e))),a._elementCallbacks&&!a._elementCallbacks.size&&(a._observerInstance=null,a._elementCallbacks=null)}static _getElementCallbacks(e){return a._elementCallbacks?a._elementCallbacks.get(e):null}static _createObserver(){let e;e="function"==typeof s.a.window.ResizeObserver?s.a.window.ResizeObserver:c,a._observerInstance=new e(e=>{for(const t of e){const e=a._getElementCallbacks(t.target);if(e)for(const o of e)o(t)}})}}a._observerInstance=null,a._elementCallbacks=null;class c{constructor(e){this._callback=e,this._elements=new Set,this._previousRects=new Map,this._periodicCheckTimeout=null}observe(e){this._elements.add(e),this._checkElementRectsAndExecuteCallback(),1===this._elements.size&&this._startPeriodicCheck()}unobserve(e){this._elements.delete(e),this._previousRects.delete(e),this._elements.size||this._stopPeriodicCheck()}_startPeriodicCheck(){const e=()=>{this._checkElementRectsAndExecuteCallback(),this._periodicCheckTimeout=setTimeout(e,100)};this.listenTo(s.a.window,"resize",()=>{this._checkElementRectsAndExecuteCallback()}),this._periodicCheckTimeout=setTimeout(e,100)}_stopPeriodicCheck(){clearTimeout(this._periodicCheckTimeout),this.stopListening(),this._previousRects.clear()}_checkElementRectsAndExecuteCallback(){const e=[];for(const t of this._elements)this._hasRectChanged(t)&&e.push({target:t,contentRect:this._previousRects.get(t)});e.length&&this._callback(e)}_hasRectChanged(e){if(!e.ownerDocument.body.contains(e))return!1;const t=new r.a(e),o=this._previousRects.get(e),i=!o||!o.isEqual(t);return this._previousRects.set(e,t),i}}Object(i.a)(c,n.a)},"./packages/ckeditor5-utils/src/dom/setdatainelement.js":function(e,t,o){"use strict";function i(e,t){e instanceof HTMLTextAreaElement&&(e.value=t),e.innerHTML=t}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/dom/tounit.js":function(e,t,o){"use strict";function i(e){return t=>t+e}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/emittermixin.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return d})),o.d(t,"b",(function(){return u}));var i=o("./packages/ckeditor5-utils/src/eventinfo.js"),s=o("./packages/ckeditor5-utils/src/uid.js"),r=o("./packages/ckeditor5-utils/src/priorities.js"),n=(o("./packages/ckeditor5-utils/src/version.js"),o("./packages/ckeditor5-utils/src/ckeditorerror.js"));const a=Symbol("listeningTo"),c=Symbol("emitterId"),l={on(e,t,o={}){this.listenTo(this,e,t,o)},once(e,t,o){let i=!1;this.listenTo(this,e,(function(e,...o){i||(i=!0,e.off(),t.call(this,e,...o))}),o)},off(e,t){this.stopListening(this,e,t)},listenTo(e,t,o,i={}){let s,r;this[a]||(this[a]={});const n=this[a];h(e)||u(e);const c=h(e);(s=n[c])||(s=n[c]={emitter:e,callbacks:{}}),(r=s.callbacks[t])||(r=s.callbacks[t]=[]),r.push(o),function(e,t,o,i,s){t._addEventListener?t._addEventListener(o,i,s):e._addEventListener.call(t,o,i,s)}(this,e,t,o,i)},stopListening(e,t,o){const i=this[a];let s=e&&h(e);const r=i&&s&&i[s],n=r&&t&&r.callbacks[t];if(!(!i||e&&!r||t&&!n))if(o){m(this,e,t,o);-1!==n.indexOf(o)&&(1===n.length?delete r.callbacks[t]:m(this,e,t,o))}else if(n){for(;o=n.pop();)m(this,e,t,o);delete r.callbacks[t]}else if(r){for(t in r.callbacks)this.stopListening(e,t);delete i[s]}else{for(s in i)this.stopListening(i[s].emitter);delete this[a]}},fire(e,...t){try{const o=e instanceof i.a?e:new i.a(this,e),s=o.name;let r=function e(t,o){let i;if(!t._events||!(i=t._events[o])||!i.callbacks.length)return o.indexOf(":")>-1?e(t,o.substr(0,o.lastIndexOf(":"))):null;return i.callbacks}(this,s);if(o.path.push(this),r){const e=[o,...t];r=Array.from(r);for(let t=0;t<r.length&&(r[t].callback.apply(this,e),o.off.called&&(delete o.off.called,this._removeEventListener(s,r[t].callback)),!o.stop.called);t++);}if(this._delegations){const e=this._delegations.get(s),i=this._delegations.get("*");e&&f(e,o,t),i&&f(i,o,t)}return o.return}catch(e){n.a.rethrowUnexpectedError(e,this)}},delegate(...e){return{to:(t,o)=>{this._delegations||(this._delegations=new Map),e.forEach(e=>{const i=this._delegations.get(e);i?i.set(t,o):this._delegations.set(e,new Map([[t,o]]))})}}},stopDelegating(e,t){if(this._delegations)if(e)if(t){const o=this._delegations.get(e);o&&o.delete(t)}else this._delegations.delete(e);else this._delegations.clear()},_addEventListener(e,t,o){!function(e,t){const o=p(e);if(o[t])return;let i=t,s=null;const r=[];for(;""!==i&&!o[i];)o[i]={callbacks:[],childEvents:[]},r.push(o[i]),s&&o[i].childEvents.push(s),s=i,i=i.substr(0,i.lastIndexOf(":"));if(""!==i){for(const e of r)e.callbacks=o[i].callbacks.slice();o[i].childEvents.push(s)}}(this,e);const i=g(this,e),s=r.a.get(o.priority),n={callback:t,priority:s};for(const e of i){let t=!1;for(let o=0;o<e.length;o++)if(e[o].priority<s){e.splice(o,0,n),t=!0;break}t||e.push(n)}},_removeEventListener(e,t){const o=g(this,e);for(const e of o)for(let o=0;o<e.length;o++)e[o].callback==t&&(e.splice(o,1),o--)}};function d(e,t){return e[a]&&e[a][t]?e[a][t].emitter:null}function u(e,t){e[c]||(e[c]=t||Object(s.a)())}function h(e){return e[c]}function p(e){return e._events||Object.defineProperty(e,"_events",{value:{}}),e._events}function g(e,t){const o=p(e)[t];if(!o)return[];let i=[o.callbacks];for(let t=0;t<o.childEvents.length;t++){const s=g(e,o.childEvents[t]);i=i.concat(s)}return i}function f(e,t,o){for(let[s,r]of e){r?"function"==typeof r&&(r=r(t.name)):r=t.name;const e=new i.a(t.source,r);e.path=[...t.path],s.fire(e,...o)}}function m(e,t,o,i){t._removeEventListener?t._removeEventListener(o,i):e._removeEventListener.call(t,o,i)}t.c=l},"./packages/ckeditor5-utils/src/env.js":function(e,t,o){"use strict";const i=navigator.userAgent.toLowerCase(),s={isMac:function(e){return e.indexOf("macintosh")>-1}(i),isGecko:function(e){return!!e.match(/gecko\/\d+/)}(i),isSafari:function(e){return e.indexOf(" applewebkit/")>-1&&-1===e.indexOf("chrome")}(i),isAndroid:function(e){return e.indexOf("android")>-1}(i),isBlink:function(e){return e.indexOf("chrome/")>-1&&e.indexOf("edge/")<0}(i),features:{isRegExpUnicodePropertySupported:function(){let e=!1;try{e=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(e){}return e}()}};t.a=s},"./packages/ckeditor5-utils/src/eventinfo.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=function(){return function e(){e.called=!0}};class s{constructor(e,t){this.source=e,this.name=t,this.path=[],this.stop=i(),this.off=i()}}},"./packages/ckeditor5-utils/src/fastdiff.js":function(e,t,o){"use strict";function i(e,t,o,i=!1){o=o||function(e,t){return e===t},Array.isArray(e)||(e=Array.prototype.slice.call(e)),Array.isArray(t)||(t=Array.prototype.slice.call(t));const n=function(e,t,o){const i=s(e,t,o);if(-1===i)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const n=r(e,i),a=r(t,i),c=s(n,a,o),l=e.length-c,d=t.length-c;return{firstIndex:i,lastIndexOld:l,lastIndexNew:d}}(e,t,o);return i?function(e,t){const{firstIndex:o,lastIndexOld:i,lastIndexNew:s}=e;if(-1===o)return Array(t).fill("equal");let r=[];o>0&&(r=r.concat(Array(o).fill("equal")));s-o>0&&(r=r.concat(Array(s-o).fill("insert")));i-o>0&&(r=r.concat(Array(i-o).fill("delete")));s<t&&(r=r.concat(Array(t-s).fill("equal")));return r}(n,t.length):function(e,t){const o=[],{firstIndex:i,lastIndexOld:s,lastIndexNew:r}=t;r-i>0&&o.push({index:i,type:"insert",values:e.slice(i,r)});s-i>0&&o.push({index:i+(r-i),type:"delete",howMany:s-i});return o}(t,n)}function s(e,t,o){for(let i=0;i<Math.max(e.length,t.length);i++)if(void 0===e[i]||void 0===t[i]||!o(e[i],t[i]))return i;return-1}function r(e,t){return e.slice(t).reverse()}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/first.js":function(e,t,o){"use strict";function i(e){const t=e.next();return t.done?null:t.value}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/focustracker.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-utils/src/dom/emittermixin.js"),s=o("./packages/ckeditor5-utils/src/observablemixin.js"),r=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),n=o("./packages/ckeditor5-utils/src/mix.js");class a{constructor(){this.set("isFocused",!1),this.set("focusedElement",null),this._elements=new Set,this._nextEventLoopTimeout=null}add(e){if(this._elements.has(e))throw new r.a("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",()=>this._focus(e),{useCapture:!0}),this.listenTo(e,"blur",()=>this._blur(),{useCapture:!0}),this._elements.add(e)}remove(e){e===this.focusedElement&&this._blur(e),this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e))}destroy(){this.stopListening()}_focus(e){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=e,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout(()=>{this.focusedElement=null,this.isFocused=!1},0)}}Object(n.a)(a,i.a),Object(n.a)(a,s.a)},"./packages/ckeditor5-utils/src/index.js":function(e,t,o){"use strict";o.d(t,"n",(function(){return i.a})),o.d(t,"m",(function(){return s.a})),o.d(t,"A",(function(){return r.a})),o.d(t,"e",(function(){return n.c})),o.d(t,"i",(function(){return a.a})),o.d(t,"a",(function(){return c.a})),o.d(t,"y",(function(){return c.b})),o.d(t,"z",(function(){return c.c})),o.d(t,"d",(function(){return l})),o.d(t,"l",(function(){return d.a})),o.d(t,"c",(function(){return u.a})),o.d(t,"u",(function(){return h.a})),o.d(t,"q",(function(){return p})),o.d(t,"j",(function(){return g.a})),o.d(t,"k",(function(){return f.a})),o.d(t,"D",(function(){return m.a})),o.d(t,"G",(function(){return k.a})),o.d(t,"x",(function(){return b.f})),o.d(t,"p",(function(){return b.a})),o.d(t,"B",(function(){return b.g})),o.d(t,"r",(function(){return b.b})),o.d(t,"v",(function(){return b.d})),o.d(t,"t",(function(){return b.c})),o.d(t,"w",(function(){return b.e})),o.d(t,"s",(function(){return _.a})),o.d(t,"h",(function(){return w.a})),o.d(t,"b",(function(){return v.a})),o.d(t,"o",(function(){return y.a})),o.d(t,"f",(function(){return j.a})),o.d(t,"g",(function(){return x.a})),o.d(t,"E",(function(){return P.a})),o.d(t,"F",(function(){return O.a})),o.d(t,"C",(function(){return A.a})),o.d(t,"H",(function(){return T.a})),o.d(t,"I",(function(){return C.a}));var i=o("./packages/ckeditor5-utils/src/env.js"),s=o("./packages/ckeditor5-utils/src/diff.js"),r=o("./packages/ckeditor5-utils/src/mix.js"),n=o("./packages/ckeditor5-utils/src/emittermixin.js"),a=o("./packages/ckeditor5-utils/src/observablemixin.js"),c=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class l{constructor(){this._replacedElements=[]}replace(e,t){this._replacedElements.push({element:e,newElement:t}),e.style.display="none",t&&e.parentNode.insertBefore(t,e.nextSibling)}restore(){this._replacedElements.forEach(({element:e,newElement:t})=>{e.style.display="",t&&t.remove()}),this._replacedElements=[]}}var d=o("./packages/ckeditor5-utils/src/dom/createelement.js"),u=o("./packages/ckeditor5-utils/src/dom/emittermixin.js"),h=o("./packages/ckeditor5-utils/src/dom/global.js");function p(e){return e instanceof HTMLTextAreaElement?e.value:e.innerHTML}var g=o("./packages/ckeditor5-utils/src/dom/rect.js"),f=o("./packages/ckeditor5-utils/src/dom/resizeobserver.js"),m=o("./packages/ckeditor5-utils/src/dom/setdatainelement.js"),k=o("./packages/ckeditor5-utils/src/dom/tounit.js"),b=o("./packages/ckeditor5-utils/src/keyboard.js"),_=o("./packages/ckeditor5-utils/src/language.js"),w=o("./packages/ckeditor5-utils/src/locale.js"),v=o("./packages/ckeditor5-utils/src/collection.js"),y=o("./packages/ckeditor5-utils/src/first.js"),j=o("./packages/ckeditor5-utils/src/focustracker.js"),x=o("./packages/ckeditor5-utils/src/keystrokehandler.js"),P=o("./packages/ckeditor5-utils/src/toarray.js"),O=o("./packages/ckeditor5-utils/src/tomap.js"),A=o("./packages/ckeditor5-utils/src/priorities.js"),T=o("./packages/ckeditor5-utils/src/uid.js"),C=o("./packages/ckeditor5-utils/src/version.js")},"./packages/ckeditor5-utils/src/isiterable.js":function(e,t,o){"use strict";function i(e){return!(!e||!e[Symbol.iterator])}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/keyboard.js":function(e,t,o){"use strict";o.d(t,"f",(function(){return a})),o.d(t,"a",(function(){return l})),o.d(t,"g",(function(){return d})),o.d(t,"b",(function(){return u})),o.d(t,"d",(function(){return h})),o.d(t,"c",(function(){return p})),o.d(t,"e",(function(){return g}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),s=o("./packages/ckeditor5-utils/src/env.js");const r={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},n={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},a=function(){const e={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,shift:2228224,alt:4456448,cmd:8912896};for(let t=65;t<=90;t++){const o=String.fromCharCode(t);e[o.toLowerCase()]=t}for(let t=48;t<=57;t++)e[t-48]=t;for(let t=112;t<=123;t++)e["f"+(t-111)]=t;for(const t of"`-=[];',./\\")e[t]=t.charCodeAt(0);return e}(),c=Object.fromEntries(Object.entries(a).map(([e,t])=>[t,e.charAt(0).toUpperCase()+e.slice(1)]));function l(e){let t;if("string"==typeof e){if(t=a[e.toLowerCase()],!t)throw new i.a("keyboard-unknown-key",null,{key:e})}else t=e.keyCode+(e.altKey?a.alt:0)+(e.ctrlKey?a.ctrl:0)+(e.shiftKey?a.shift:0)+(e.metaKey?a.cmd:0);return t}function d(e){return"string"==typeof e&&(e=function(e){return e.split("+").map(e=>e.trim())}(e)),e.map(e=>"string"==typeof e?function(e){if(e.endsWith("!"))return l(e.slice(0,-1));const t=l(e);return s.a.isMac&&t==a.ctrl?a.cmd:t}(e):e).reduce((e,t)=>t+e,0)}function u(e){let t=d(e);return Object.entries(s.a.isMac?r:n).reduce((e,[o,i])=>(0!=(t&a[o])&&(t&=~a[o],e+=i),e),"")+(t?c[t]:"")}function h(e){return e==a.arrowright||e==a.arrowleft||e==a.arrowup||e==a.arrowdown}function p(e,t){const o="ltr"===t;switch(e){case a.arrowleft:return o?"left":"right";case a.arrowright:return o?"right":"left";case a.arrowup:return"up";case a.arrowdown:return"down"}}function g(e,t){const o=p(e,t);return"down"===o||"right"===o}},"./packages/ckeditor5-utils/src/keystrokehandler.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return r}));var i=o("./packages/ckeditor5-utils/src/dom/emittermixin.js"),s=o("./packages/ckeditor5-utils/src/keyboard.js");class r{constructor(){this._listener=Object.create(i.a)}listenTo(e){this._listener.listenTo(e,"keydown",(e,t)=>{this._listener.fire("_keydown:"+Object(s.a)(t),t)})}set(e,t,o={}){const i=Object(s.g)(e),r=o.priority;this._listener.listenTo(this._listener,"_keydown:"+i,(e,o)=>{t(o,()=>{o.preventDefault(),o.stopPropagation(),e.stop()}),e.return=!0},{priority:r})}press(e){return!!this._listener.fire("_keydown:"+Object(s.a)(e),e)}destroy(){this._listener.stopListening()}}},"./packages/ckeditor5-utils/src/language.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));const i=["ar","ara","fa","per","fas","he","heb","ku","kur","ug","uig"];function s(e){return i.includes(e)?"rtl":"ltr"}},"./packages/ckeditor5-utils/src/locale.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return a}));var i=o("./packages/ckeditor5-utils/src/toarray.js"),s=o("./packages/ckeditor5-utils/src/ckeditorerror.js");function r(e,t,o=1){if("number"!=typeof o)throw new s.a("translation-service-quantity-not-a-number",null,{quantity:o});const i=Object.keys(window.CKEDITOR_TRANSLATIONS).length;1===i&&(e=Object.keys(window.CKEDITOR_TRANSLATIONS)[0]);const r=t.id||t.string;if(0===i||!function(e,t){return!!window.CKEDITOR_TRANSLATIONS[e]&&!!window.CKEDITOR_TRANSLATIONS[e].dictionary[t]}(e,r))return 1!==o?t.plural:t.string;const n=window.CKEDITOR_TRANSLATIONS[e].dictionary,a=window.CKEDITOR_TRANSLATIONS[e].getPluralForm||(e=>1===e?0:1);if("string"==typeof n[r])return n[r];const c=Number(a(o));return n[r][c]}window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={});var n=o("./packages/ckeditor5-utils/src/language.js");class a{constructor(e={}){this.uiLanguage=e.uiLanguage||"en",this.contentLanguage=e.contentLanguage||this.uiLanguage,this.uiLanguageDirection=Object(n.a)(this.uiLanguage),this.contentLanguageDirection=Object(n.a)(this.contentLanguage),this.t=(e,t)=>this._t(e,t)}get language(){return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),this.uiLanguage}_t(e,t=[]){t=Object(i.a)(t),"string"==typeof e&&(e={string:e});const o=!!e.plural?t[0]:1;return function(e,t){return e.replace(/%(\d+)/g,(e,o)=>o<t.length?t[o]:e)}(r(this.uiLanguage,e,o),t)}}},"./packages/ckeditor5-utils/src/mix.js":function(e,t,o){"use strict";function i(e,...t){t.forEach(t=>{Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t)).forEach(o=>{if(o in e.prototype)return;const i=Object.getOwnPropertyDescriptor(t,o);i.enumerable=!1,Object.defineProperty(e.prototype,o,i)})})}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/observablemixin.js":function(e,t,o){"use strict";var i=o("./packages/ckeditor5-utils/src/emittermixin.js"),s=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),r=o("./node_modules/lodash-es/isObject.js"),n=o("./node_modules/lodash-es/assignIn.js");const a=Symbol("observableProperties"),c=Symbol("boundObservables"),l=Symbol("boundProperties"),d=Symbol("decoratedMethods"),u=Symbol("decoratedOriginal"),h={set(e,t){if(Object(r.a)(e))return void Object.keys(e).forEach(t=>{this.set(t,e[t])},this);p(this);const o=this[a];if(e in this&&!o.has(e))throw new s.a("observable-set-cannot-override",this);Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>o.get(e),set(t){const i=o.get(e);let s=this.fire("set:"+e,e,t,i);void 0===s&&(s=t),i===s&&o.has(e)||(o.set(e,s),this.fire("change:"+e,e,s,i))}}),this[e]=t},bind(...e){if(!e.length||!m(e))throw new s.a("observable-bind-wrong-properties",this);if(new Set(e).size!==e.length)throw new s.a("observable-bind-duplicate-properties",this);p(this);const t=this[l];e.forEach(e=>{if(t.has(e))throw new s.a("observable-bind-rebind",this)});const o=new Map;return e.forEach(e=>{const i={property:e,to:[]};t.set(e,i),o.set(e,i)}),{to:g,toMany:f,_observable:this,_bindProperties:e,_to:[],_bindings:o}},unbind(...e){if(!this[a])return;const t=this[l],o=this[c];if(e.length){if(!m(e))throw new s.a("observable-unbind-wrong-properties",this);e.forEach(e=>{const i=t.get(e);if(!i)return;let s,r,n,a;i.to.forEach(e=>{s=e[0],r=e[1],n=o.get(s),a=n[r],a.delete(i),a.size||delete n[r],Object.keys(n).length||(o.delete(s),this.stopListening(s,"change"))}),t.delete(e)})}else o.forEach((e,t)=>{this.stopListening(t,"change")}),o.clear(),t.clear()},decorate(e){const t=this[e];if(!t)throw new s.a("observablemixin-cannot-decorate-undefined",this,{object:this,methodName:e});this.on(e,(e,o)=>{e.return=t.apply(this,o)}),this[e]=function(...t){return this.fire(e,t)},this[e][u]=t,this[d]||(this[d]=[]),this[d].push(e)}};function p(e){e[a]||(Object.defineProperty(e,a,{value:new Map}),Object.defineProperty(e,c,{value:new Map}),Object.defineProperty(e,l,{value:new Map}))}function g(...e){const t=function(...e){if(!e.length)throw new s.a("observable-bind-to-parse-error",null);const t={to:[]};let o;"function"==typeof e[e.length-1]&&(t.callback=e.pop());return e.forEach(e=>{if("string"==typeof e)o.properties.push(e);else{if("object"!=typeof e)throw new s.a("observable-bind-to-parse-error",null);o={observable:e,properties:[]},t.to.push(o)}}),t}(...e),o=Array.from(this._bindings.keys()),i=o.length;if(!t.callback&&t.to.length>1)throw new s.a("observable-bind-to-no-callback",this);if(i>1&&t.callback)throw new s.a("observable-bind-to-extra-callback",this);var r;t.to.forEach(e=>{if(e.properties.length&&e.properties.length!==i)throw new s.a("observable-bind-to-properties-length",this);e.properties.length||(e.properties=this._bindProperties)}),this._to=t.to,t.callback&&(this._bindings.get(o[0]).callback=t.callback),r=this._observable,this._to.forEach(e=>{const t=r[c];let o;t.get(e.observable)||r.listenTo(e.observable,"change",(i,s)=>{o=t.get(e.observable)[s],o&&o.forEach(e=>{k(r,e.property)})})}),function(e){let t;e._bindings.forEach((o,i)=>{e._to.forEach(s=>{t=s.properties[o.callback?0:e._bindProperties.indexOf(i)],o.to.push([s.observable,t]),function(e,t,o,i){const s=e[c],r=s.get(o),n=r||{};n[i]||(n[i]=new Set);n[i].add(t),r||s.set(o,n)}(e._observable,o,s.observable,t)})})}(this),this._bindProperties.forEach(e=>{k(this._observable,e)})}function f(e,t,o){if(this._bindings.size>1)throw new s.a("observable-bind-to-many-not-one-binding",this);this.to(...function(e,t){const o=e.map(e=>[e,t]);return Array.prototype.concat.apply([],o)}(e,t),o)}function m(e){return e.every(e=>"string"==typeof e)}function k(e,t){const o=e[l].get(t);let i;o.callback?i=o.callback.apply(e,o.to.map(e=>e[0][e[1]])):(i=o.to[0],i=i[0][i[1]]),Object.prototype.hasOwnProperty.call(e,t)?e[t]=i:e.set(t,i)}Object(n.a)(h,i.c),h.stopListening=function(e,t,o){if(!e&&this[d]){for(const e of this[d])this[e]=this[e][u];delete this[d]}i.c.stopListening.call(this,e,t,o)},t.a=h},"./packages/ckeditor5-utils/src/priorities.js":function(e,t,o){"use strict";const i={get(e){return"number"!=typeof e?this[e]||this.normal:e},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5};t.a=i},"./packages/ckeditor5-utils/src/toarray.js":function(e,t,o){"use strict";function i(e){return Array.isArray(e)?e:[e]}o.d(t,"a",(function(){return i}))},"./packages/ckeditor5-utils/src/tomap.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));var i=o("./packages/ckeditor5-utils/src/isiterable.js");function s(e){return Object(i.a)(e)?new Map(e):function(e){const t=new Map;for(const o in e)t.set(o,e[o]);return t}(e)}},"./packages/ckeditor5-utils/src/uid.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s}));const i=new Array(256).fill().map((e,t)=>("0"+t.toString(16)).slice(-2));function s(){const e=4294967296*Math.random()>>>0,t=4294967296*Math.random()>>>0,o=4294967296*Math.random()>>>0,s=4294967296*Math.random()>>>0;return"e"+i[e>>0&255]+i[e>>8&255]+i[e>>16&255]+i[e>>24&255]+i[t>>0&255]+i[t>>8&255]+i[t>>16&255]+i[t>>24&255]+i[o>>0&255]+i[o>>8&255]+i[o>>16&255]+i[o>>24&255]+i[s>>0&255]+i[s>>8&255]+i[s>>16&255]+i[s>>24&255]}},"./packages/ckeditor5-utils/src/version.js":function(e,t,o){"use strict";(function(e){var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js");t.a="31.0.0";const s="object"==typeof window?window:e;if(s.CKEDITOR_VERSION)throw new i.a("ckeditor-duplicated-modules",null);s.CKEDITOR_VERSION="31.0.0"}).call(this,o("./node_modules/webpack/buildin/global.js"))},"./packages/ckeditor5-widget/src/utils.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return p})),o.d(t,"b",(function(){return g})),o.d(t,"e",(function(){return f})),o.d(t,"h",(function(){return m})),o.d(t,"f",(function(){return _})),o.d(t,"g",(function(){return w})),o.d(t,"d",(function(){return v})),o.d(t,"i",(function(){return y})),o.d(t,"c",(function(){return j})),o.d(t,"j",(function(){return x}));var i=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),s=o("./packages/ckeditor5-utils/src/toarray.js"),r=o("./packages/ckeditor5-utils/src/emittermixin.js"),n=o("./packages/ckeditor5-utils/src/mix.js");class a{constructor(){this._stack=[]}add(e,t){const o=this._stack,i=o[0];this._insertDescriptor(e);const s=o[0];i===s||c(i,s)||this.fire("change:top",{oldDescriptor:i,newDescriptor:s,writer:t})}remove(e,t){const o=this._stack,i=o[0];this._removeDescriptor(e);const s=o[0];i===s||c(i,s)||this.fire("change:top",{oldDescriptor:i,newDescriptor:s,writer:t})}_insertDescriptor(e){const t=this._stack,o=t.findIndex(t=>t.id===e.id);if(c(e,t[o]))return;o>-1&&t.splice(o,1);let i=0;for(;t[i]&&l(t[i],e);)i++;t.splice(i,0,e)}_removeDescriptor(e){const t=this._stack,o=t.findIndex(t=>t.id===e);o>-1&&t.splice(o,1)}}function c(e,t){return e&&t&&e.priority==t.priority&&d(e.classes)==d(t.classes)}function l(e,t){return e.priority>t.priority||!(e.priority<t.priority)&&d(e.classes)>d(t.classes)}function d(e){return Array.isArray(e)?e.sort().join(","):e}Object(n.a)(a,r.c);var u=o("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),h=o("./packages/ckeditor5-ui/src/icon/iconview.js");const p="ck-widget",g="ck-widget_selected";function f(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function m(e,t,o={}){if(!e.is("containerElement"))throw new i.a("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass(p,e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=P,o.label&&w(e,o.label,t),o.hasSelectionHandle&&function(e,t){const o=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),o=new h.a;return o.set("content",'<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z"/><path fill-opacity=".256" d="M1 1h14v14H1z"/><g class="ck-icon__selected-indicator"><path d="M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z"/><path fill-opacity=".254" d="M1 1h14v14H1z"/></g></svg>'),o.render(),t.appendChild(o.element),t}));t.insert(t.createPositionAt(e,0),o),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),_(e,t),e}function k(e,t,o){if(t.classes&&o.addClass(Object(s.a)(t.classes),e),t.attributes)for(const i in t.attributes)o.setAttribute(i,t.attributes[i],e)}function b(e,t,o){if(t.classes&&o.removeClass(Object(s.a)(t.classes),e),t.attributes)for(const i in t.attributes)o.removeAttribute(i,e)}function _(e,t,o=k,i=b){const s=new a;s.on("change:top",(t,s)=>{s.oldDescriptor&&i(e,s.oldDescriptor,s.writer),s.newDescriptor&&o(e,s.newDescriptor,s.writer)}),t.setCustomProperty("addHighlight",(e,t,o)=>s.add(t,o),e),t.setCustomProperty("removeHighlight",(e,t,o)=>s.remove(t,o),e)}function w(e,t,o){o.setCustomProperty("widgetLabel",t,e)}function v(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function y(e,t){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",(o,i,s)=>{t.setAttribute("contenteditable",s?"false":"true",e)}),e.on("change:isFocused",(o,i,s)=>{s?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)}),_(e,t),e}function j(e,t){const o=e.getSelectedElement();if(o){const i=Object(u.e)(e);if(i)return t.createRange(t.createPositionAt(o,i));if(t.schema.isObject(o)&&!t.schema.isInline(o))return t.createRangeOn(o)}const i=e.getSelectedBlocks().next().value;if(i){if(i.isEmpty)return t.createRange(t.createPositionAt(i,0));const o=t.createPositionAfter(i);return e.focus.isTouching(o)?t.createRange(o):t.createRange(t.createPositionBefore(i))}return t.createRange(e.focus)}function x(e,t){return(o,i)=>{const{mapper:s,viewPosition:r}=i,n=s.findMappedViewAncestor(r);if(!t(n))return;const a=s.toModelElement(n);i.modelPosition=e.createPositionAt(a,r.isAtStart?"before":"after")}}function P(){return null}},"./packages/ckeditor5-widget/src/widget.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return g}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-engine/src/view/observer/mouseobserver.js"),r=o("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js"),n=o("./packages/ckeditor5-typing/src/delete.js"),a=o("./packages/ckeditor5-utils/src/env.js"),c=o("./packages/ckeditor5-utils/src/keyboard.js"),l=o("./packages/ckeditor5-utils/src/dom/rect.js");function d(e){const t=e.model;return(o,i)=>{const s=i.keyCode==c.f.arrowup,r=i.keyCode==c.f.arrowdown,n=i.shiftKey,a=t.document.selection;if(!s&&!r)return;const d=r;if(n&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,d))return;const p=function(e,t,o){const i=e.model;if(o){const e=t.isCollapsed?t.focus:t.getLastPosition(),o=u(i,e,"forward");if(!o)return null;const s=i.createRange(e,o),r=h(i.schema,s,"backward");return r?i.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),o=u(i,e,"backward");if(!o)return null;const s=i.createRange(o,e),r=h(i.schema,s,"forward");return r?i.createRange(r,e):null}}(e,a,d);if(p){if(p.isCollapsed){if(a.isCollapsed)return;if(n)return}(p.isCollapsed||function(e,t,o){const i=e.model,s=e.view.domConverter;if(o){const e=i.createSelection(t.start);i.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=i.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),n=s.viewRangeToDom(r),a=l.a.getDomRangeRects(n);let c;for(const e of a)if(void 0!==c){if(Math.round(e.top)>=c)return!1;c=Math.max(c,Math.round(e.bottom))}else c=Math.round(e.bottom);return!0}(e,p,d))&&(t.change(e=>{const o=d?p.end:p.start;if(n){const i=t.createSelection(a.anchor);i.setFocus(o),e.setSelection(i)}else e.setSelection(o)}),o.stop(),i.preventDefault(),i.stopPropagation())}}}function u(e,t,o){const i=e.schema,s=e.createRangeIn(t.root),r="forward"==o?"elementStart":"elementEnd";for(const{previousPosition:e,item:n,type:a}of s.getWalker({startPosition:t,direction:o})){if(i.isLimit(n)&&!i.isInline(n))return e;if(a==r&&i.isBlock(n))return null}return null}function h(e,t,o){const i="backward"==o?t.end:t.start;if(e.checkChild(i,"$text"))return i;for(const{nextPosition:i}of t.getWalker({direction:o}))if(e.checkChild(i,"$text"))return i;return null}var p=o("./packages/ckeditor5-widget/src/utils.js");o("./packages/ckeditor5-widget/theme/widget.css");class g extends i.a{static get pluginName(){return"Widget"}static get requires(){return[r.a,n.a]}init(){const e=this.editor,t=e.editing.view,o=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",(t,o,i)=>{const s=i.writer,r=o.selection;if(r.isCollapsed)return;const n=r.getSelectedElement();if(!n)return;const a=e.editing.mapper.toViewElement(n);Object(p.e)(a)&&i.consumable.consume(r,"selection")&&s.setSelection(s.createRangeOn(a),{fake:!0,label:Object(p.d)(a)})}),this.editor.editing.downcastDispatcher.on("selection",(e,t,o)=>{this._clearPreviouslySelectedWidgets(o.writer);const i=o.writer,s=i.document.selection;let r=null;for(const e of s.getRanges())for(const t of e){const e=t.item;Object(p.e)(e)&&!f(e,r)&&(i.addClass(p.b,e),this._previouslySelected.add(e),r=e)}},{priority:"low"}),t.addObserver(s.a),this.listenTo(o,"mousedown",(...e)=>this._onMousedown(...e)),this.listenTo(o,"arrowKey",(...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)},{context:[p.e,"$text"]}),this.listenTo(o,"arrowKey",(...e)=>{this._preventDefaultOnArrowKeyPress(...e)},{context:"$root"}),this.listenTo(o,"arrowKey",d(this.editor.editing),{context:"$text"}),this.listenTo(o,"delete",(e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())},{context:"$root"})}_onMousedown(e,t){const o=this.editor,i=o.editing.view,s=i.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(Object(p.e)(e))return!1;e=e.parent}return!1}(r)){if((a.a.isSafari||a.a.isGecko)&&t.domEvent.detail>=3){const e=o.editing.mapper,i=r.is("attributeElement")?r.findAncestor(e=>!e.is("attributeElement")):r,s=e.toModelElement(i);t.preventDefault(),this.editor.model.change(e=>{e.setSelection(s,"in")})}return}if(!Object(p.e)(r)&&(r=r.findAncestor(p.e),!r))return;a.a.isAndroid&&t.preventDefault(),s.isFocused||i.focus();const n=o.editing.mapper.toModelElement(r);this._setSelectionOverElement(n)}_handleSelectionChangeOnArrowKeyPress(e,t){const o=t.keyCode,i=this.editor.model,s=i.schema,r=i.document.selection,n=r.getSelectedElement(),a=Object(c.c)(o,this.editor.locale.contentLanguageDirection),l="down"==a||"right"==a,d="up"==a||"down"==a;if(n&&s.isObject(n)){const o=l?r.getLastPosition():r.getFirstPosition(),n=s.getNearestSelectionRange(o,l?"forward":"backward");return void(n&&(i.change(e=>{e.setSelection(n)}),t.preventDefault(),e.stop()))}if(!r.isCollapsed&&!t.shiftKey){const o=r.getFirstPosition(),n=r.getLastPosition(),a=o.nodeAfter,c=n.nodeBefore;return void((a&&s.isObject(a)||c&&s.isObject(c))&&(i.change(e=>{e.setSelection(l?n:o)}),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const u=this._getObjectElementNextToSelection(l);if(u&&s.isObject(u)){if(s.isInline(u)&&d)return;this._setSelectionOverElement(u),t.preventDefault(),e.stop()}}_preventDefaultOnArrowKeyPress(e,t){const o=this.editor.model,i=o.schema,s=o.document.selection.getSelectedElement();s&&i.isObject(s)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const o=this._getObjectElementNextToSelection(e);return o?(this.editor.model.change(e=>{let i=t.anchor.parent;for(;i.isEmpty;){const t=i;i=t.parent,e.remove(t)}this._setSelectionOverElement(o)}),!0):void 0}_setSelectionOverElement(e){this.editor.model.change(t=>{t.setSelection(t.createRangeOn(e))})}_getObjectElementNextToSelection(e){const t=this.editor.model,o=t.schema,i=t.document.selection,s=t.createSelection(i);if(t.modifySelection(s,{direction:e?"forward":"backward"}),s.isEqual(i))return null;const r=e?s.focus.nodeBefore:s.focus.nodeAfter;return r&&o.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass(p.b,t);this._previouslySelected.clear()}}function f(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}},"./packages/ckeditor5-widget/src/widgettypearound/utils.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return s})),o.d(t,"f",(function(){return r})),o.d(t,"b",(function(){return n})),o.d(t,"d",(function(){return a})),o.d(t,"c",(function(){return c})),o.d(t,"e",(function(){return l}));var i=o("./packages/ckeditor5-widget/src/utils.js");const s="widget-type-around";function r(e,t,o){return e&&Object(i.e)(e)&&!o.isInline(t)}function n(e){return e.closest(".ck-widget__type-around__button")}function a(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}function c(e,t){const o=e.closest(".ck-widget");return t.mapDomToView(o)}function l(e){return e.getAttribute(s)}},"./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js":function(e,t,o){"use strict";o.d(t,"a",(function(){return p}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-ui/src/template.js"),r=o("./packages/ckeditor5-enter/src/enter.js"),n=o("./packages/ckeditor5-typing/src/delete.js"),a=o("./packages/ckeditor5-utils/src/keyboard.js"),c=o("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),l=o("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),d=o("./packages/ckeditor5-widget/src/utils.js");o("./packages/ckeditor5-widget/theme/widgettypearound.css");const u=["before","after"],h=(new DOMParser).parseFromString('<svg viewBox="0 0 10 8" xmlns="http://www.w3.org/2000/svg"><path d="M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038"/></svg>',"image/svg+xml").firstChild;class p extends i.a{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[r.a,n.a]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",(o,i,s)=>{t.change(e=>{for(const o of t.document.roots)s?e.removeClass("ck-widget__type-around_disabled",o):e.addClass("ck-widget__type-around_disabled",o)}),s||e.model.change(e=>{e.removeSelectionAttribute(c.a)})}),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const o=this.editor,i=o.editing.view;o.execute("insertParagraph",{position:o.model.createPositionAt(e,t)}),i.focus(),i.scrollToTheSelection()}_listenToIfEnabled(e,t,o,i){this.listenTo(e,t,(...e)=>{this.isEnabled&&o(...e)},i)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=Object(c.e)(e);if(!t)return!1;const o=e.getSelectedElement();return this._insertParagraph(o,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,o=e.locale.t,i={before:o("Insert paragraph before block"),after:o("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",(e,o,r)=>{const n=r.mapper.toViewElement(o.item);Object(c.f)(n,o.item,t)&&function(e,t,o){const i=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const o=this.toDomElement(e);return function(e,t){for(const o of u){const i=new s.a({tag:"div",attributes:{class:["ck","ck-widget__type-around__button","ck-widget__type-around__button_"+o],title:t[o]},children:[e.ownerDocument.importNode(h,!0)]});e.appendChild(i.render())}}(o,t),function(e){const t=new s.a({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(o),o}));e.insert(e.createPositionAt(o,"end"),i)}(r.writer,i,n)},{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,o=t.document.selection,i=t.schema,s=e.editing.view;function r(e){return"ck-widget_type-around_show-fake-caret_"+e}this._listenToIfEnabled(s.document,"arrowKey",(e,t)=>{this._handleArrowKeyPress(e,t)},{context:[d.e,"$text"],priority:"high"}),this._listenToIfEnabled(o,"change:range",(t,o)=>{o.directChange&&e.model.change(e=>{e.removeSelectionAttribute(c.a)})}),this._listenToIfEnabled(t.document,"change:data",()=>{const t=o.getSelectedElement();if(t){const o=e.editing.mapper.toViewElement(t);if(Object(c.f)(o,t,i))return}e.model.change(e=>{e.removeSelectionAttribute(c.a)})}),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",(e,t,o)=>{const s=o.writer;if(this._currentFakeCaretModelElement){const e=o.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(s.removeClass(u.map(r),e),this._currentFakeCaretModelElement=null)}const n=t.selection.getSelectedElement();if(!n)return;const a=o.mapper.toViewElement(n);if(!Object(c.f)(a,n,i))return;const l=Object(c.e)(t.selection);l&&(s.addClass(r(l),a),this._currentFakeCaretModelElement=n)}),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",(t,o,i)=>{i||e.model.change(e=>{e.removeSelectionAttribute(c.a)})})}_handleArrowKeyPress(e,t){const o=this.editor,i=o.model,s=i.document.selection,r=i.schema,n=o.editing.view,l=t.keyCode,d=Object(a.e)(l,o.locale.contentLanguageDirection),u=n.document.selection.getSelectedElement(),h=o.editing.mapper.toModelElement(u);let p;Object(c.f)(u,h,r)?p=this._handleArrowKeyPressOnSelectedWidget(d):s.isCollapsed?p=this._handleArrowKeyPressWhenSelectionNextToAWidget(d):t.shiftKey||(p=this._handleArrowKeyPressWhenNonCollapsedSelection(d)),p&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,o=t.document.selection,i=Object(c.e)(o);return t.change(t=>{if(!i)return t.setSelectionAttribute(c.a,e?"after":"before"),!0;if(!(i===(e?"after":"before")))return t.removeSelectionAttribute(c.a),!0;return!1})}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,o=t.model,i=o.schema,s=t.plugins.get("Widget"),r=s._getObjectElementNextToSelection(e),n=t.editing.mapper.toViewElement(r);return!!Object(c.f)(n,r,i)&&(o.change(t=>{s._setSelectionOverElement(r),t.setSelectionAttribute(c.a,e?"before":"after")}),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(e){const t=this.editor,o=t.model,i=o.schema,s=t.editing.mapper,r=o.document.selection,n=e?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter,a=s.toViewElement(n);return!!Object(c.f)(a,n,i)&&(o.change(t=>{t.setSelection(n,"on"),t.setSelectionAttribute(c.a,e?"after":"before")}),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",(o,i)=>{const s=Object(c.b)(i.domTarget);if(!s)return;const r=Object(c.d)(s),n=Object(c.c)(s,t.domConverter),a=e.editing.mapper.toModelElement(n);this._insertParagraph(a,r),i.preventDefault(),o.stop()})}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,o=e.editing.view;this._listenToIfEnabled(o.document,"enter",(o,i)=>{if("atTarget"!=o.eventPhase)return;const s=t.getSelectedElement(),r=e.editing.mapper.toViewElement(s),n=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:Object(c.f)(r,s,n)&&(this._insertParagraph(s,i.isSoft?"before":"after"),a=!0),a&&(i.preventDefault(),o.stop())},{context:d.e})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[a.f.enter,a.f.delete,a.f.backspace];this._listenToIfEnabled(e.document,"keydown",(e,o)=>{t.includes(o.keyCode)||Object(l.b)(o)||this._insertParagraphAccordingToFakeCaretPosition()},{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,o=e.model,i=o.schema;this._listenToIfEnabled(t.document,"delete",(t,s)=>{if("atTarget"!=t.eventPhase)return;const r=Object(c.e)(o.document.selection);if(!r)return;const n=s.direction,a=o.document.selection.getSelectedElement(),l="forward"==n;if("before"===r===l)e.execute("delete",{selection:o.createSelection(a,"on")});else{const t=i.getNearestSelectionRange(o.createPositionAt(a,r),n);if(t)if(t.isCollapsed){const s=o.createSelection(t.start);if(o.modifySelection(s,{direction:n}),s.focus.isEqual(t.start)){const e=function(e,t){let o=t;for(const i of t.getAncestors({parentFirst:!0})){if(i.childCount>1||e.isLimit(i))break;o=i}return o}(i,t.start.parent);o.deleteContent(o.createSelection(e,"on"),{doNotAutoparagraph:!0})}else o.change(o=>{o.setSelection(t),e.execute(l?"deleteForward":"delete")})}else o.change(o=>{o.setSelection(t),e.execute(l?"deleteForward":"delete")})}s.preventDefault(),t.stop()},{context:d.e})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,o=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",(e,[i,s])=>{if(s&&!s.is("documentSelection"))return;const r=Object(c.e)(o);return r?(e.stop(),t.change(e=>{const s=o.getSelectedElement(),n=t.createPositionAt(s,r),a=e.createSelection(n),c=t.insertContent(i,a);return e.setSelection(a),c})):void 0},{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",(e,[o])=>{if(o&&!o.is("documentSelection"))return;Object(c.e)(t)&&e.stop()},{priority:"high"})}}},"./packages/ckeditor5-widget/theme/widget.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-widget/theme/widget.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-widget/theme/widgetresize.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-widget/theme/widgetresize.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./packages/ckeditor5-widget/theme/widgettypearound.css":function(e,t,o){var i=o("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),s=o("./node_modules/postcss-loader/src/index.js?!./packages/ckeditor5-widget/theme/widgettypearound.css");"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[e.i,s,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(s,r);e.exports=s.locals||{}},"./src/clipboard.js":function(e,t,o){"use strict";o.r(t),o.d(t,"Clipboard",(function(){return j})),o.d(t,"ClipboardPipeline",(function(){return l})),o.d(t,"DragDrop",(function(){return k})),o.d(t,"PastePlainText",(function(){return y}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-utils/src/eventinfo.js"),r=o("./packages/ckeditor5-engine/src/view/observer/domeventobserver.js");class n{constructor(e){this.files=function(e){const t=Array.from(e.files||[]),o=Array.from(e.items||[]);if(t.length)return t;return o.filter(e=>"file"===e.kind).map(e=>e.getAsFile())}(e),this._native=e}get types(){return this._native.types}getData(e){return this._native.getData(e)}setData(e,t){this._native.setData(e,t)}set effectAllowed(e){this._native.effectAllowed=e}get effectAllowed(){return this._native.effectAllowed}set dropEffect(e){this._native.dropEffect=e}get dropEffect(){return this._native.dropEffect}get isCanceled(){return"none"==this._native.dropEffect||!!this._native.mozUserCancelled}}class a extends r.a{constructor(e){super(e);const t=this.document;function o(e){return(o,i)=>{i.preventDefault();const r=i.dropRange?[i.dropRange]:null,n=new s.a(t,e);t.fire(n,{dataTransfer:i.dataTransfer,method:o.name,targetRanges:r,target:i.target}),n.stop.called&&i.stopPropagation()}}this.domEventType=["paste","copy","cut","drop","dragover","dragstart","dragend","dragenter","dragleave"],this.listenTo(t,"paste",o("clipboardInput"),{priority:"low"}),this.listenTo(t,"drop",o("clipboardInput"),{priority:"low"}),this.listenTo(t,"dragover",o("dragging"),{priority:"low"})}onDomEvent(e){const t={dataTransfer:new n(e.clipboardData?e.clipboardData:e.dataTransfer)};"drop"!=e.type&&"dragover"!=e.type||(t.dropRange=function(e,t){const o=t.target.ownerDocument,i=t.clientX,s=t.clientY;let r;o.caretRangeFromPoint&&o.caretRangeFromPoint(i,s)?r=o.caretRangeFromPoint(i,s):t.rangeParent&&(r=o.createRange(),r.setStart(t.rangeParent,t.rangeOffset),r.collapse(!0));if(r)return e.domConverter.domRangeToView(r);return null}(this.view,e)),this.fire(e.type,e,t)}}const c=["figcaption","li"];class l extends i.a{static get pluginName(){return"ClipboardPipeline"}init(){this.editor.editing.view.addObserver(a),this._setupPasteDrop(),this._setupCopyCut()}_setupPasteDrop(){const e=this.editor,t=e.model,o=e.editing.view,i=o.document;this.listenTo(i,"clipboardInput",t=>{e.isReadOnly&&t.stop()},{priority:"highest"}),this.listenTo(i,"clipboardInput",(e,t)=>{const i=t.dataTransfer;let r=t.content||"";var n;r||(i.getData("text/html")?r=function(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,(e,t)=>1==t.length?" ":t).replace(/<!--[\s\S]*?-->/g,"")}(i.getData("text/html")):i.getData("text/plain")&&(((n=(n=i.getData("text/plain")).replace(/</g,"<").replace(/>/g,">").replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br>").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g," ")).includes("</p><p>")||n.includes("<br>"))&&(n=`<p>${n}</p>`),r=n),r=this.editor.data.htmlProcessor.toView(r));const a=new s.a(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:i,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),o.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(e,o)=>{if(o.content.isEmpty)return;const i=this.editor.data.toModel(o.content,"$clipboardHolder");0!=i.childCount&&(e.stop(),t.change(()=>{this.fire("contentInsertion",{content:i,method:o.method,dataTransfer:o.dataTransfer,targetRanges:o.targetRanges})}))},{priority:"low"}),this.listenTo(this,"contentInsertion",(e,o)=>{o.resultRange=t.insertContent(o.content)},{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,o=e.editing.view.document;function i(i,s){const r=s.dataTransfer;s.preventDefault();const n=e.data.toView(e.model.getSelectedContent(t.selection));o.fire("clipboardOutput",{dataTransfer:r,content:n,method:i.name})}this.listenTo(o,"copy",i,{priority:"low"}),this.listenTo(o,"cut",(t,o)=>{e.isReadOnly?o.preventDefault():i(t,o)},{priority:"low"}),this.listenTo(o,"clipboardOutput",(o,i)=>{i.content.isEmpty||(i.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(i.content)),i.dataTransfer.setData("text/plain",function e(t){let o="";if(t.is("$text")||t.is("$textProxy"))o=t.data;else if(t.is("element","img")&&t.hasAttribute("alt"))o=t.getAttribute("alt");else if(t.is("element","br"))o="\n";else{let i=null;for(const s of t.getChildren()){const t=e(s);i&&(i.is("containerElement")||s.is("containerElement"))&&(c.includes(i.name)||c.includes(s.name)?o+="\n":o+="\n\n"),o+=t,i=s}}return o}(i.content))),"cut"==i.method&&e.model.deleteContent(t.selection)},{priority:"low"})}}var d=o("./packages/ckeditor5-engine/src/model/liverange.js"),u=o("./packages/ckeditor5-engine/src/view/observer/mouseobserver.js"),h=o("./packages/ckeditor5-widget/src/widget.js"),p=o("./packages/ckeditor5-utils/src/uid.js"),g=o("./packages/ckeditor5-utils/src/env.js"),f=o("./packages/ckeditor5-widget/src/utils.js"),m=o("./node_modules/lodash-es/throttle.js");o("./packages/ckeditor5-clipboard/theme/clipboard.css");class k extends i.a{static get pluginName(){return"DragDrop"}static get requires(){return[l,h.a]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=Object(m.a)(e=>this._updateDropMarker(e),40),this._removeDropMarkerDelayed=w(()=>this._removeDropMarker(),40),this._clearDraggableAttributesDelayed=w(()=>this._clearDraggableAttributes(),40),t.addObserver(a),t.addObserver(u.a),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",(e,t,o)=>{o?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}),this.on("change:isEnabled",(e,t,o)=>{o||this._finalizeDragging(!1)}),g.a.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,o=t.document,i=e.editing.view,s=i.document;this.listenTo(s,"dragstart",(i,r)=>{const n=o.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const a=r.target?v(r.target):null;if(a){const o=e.editing.mapper.toModelElement(a);this._draggedRange=d.a.fromRange(t.createRangeOn(o)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!s.selection.isCollapsed){const e=s.selection.getSelectedElement();e&&Object(f.e)(e)||(this._draggedRange=d.a.fromRange(n.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=Object(p.a)(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange()),l=e.data.toView(t.getSelectedContent(c));s.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:l,method:i.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")},{priority:"low"}),this.listenTo(s,"dragend",(e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)},{priority:"low"}),this.listenTo(s,"dragenter",()=>{this.isEnabled&&i.focus()}),this.listenTo(s,"dragleave",()=>{this._removeDropMarkerDelayed()}),this.listenTo(s,"dragging",(t,o)=>{if(!this.isEnabled)return void(o.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const i=b(e,o.targetRanges,o.target);this._draggedRange||(o.dataTransfer.dropEffect="copy"),g.a.isGecko||("copy"==o.dataTransfer.effectAllowed?o.dataTransfer.dropEffect="copy":["all","copyMove"].includes(o.dataTransfer.effectAllowed)&&(o.dataTransfer.dropEffect="move")),i&&this._updateDropMarkerThrottled(i)},{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",(t,o)=>{if("drop"!=o.method)return;const i=b(e,o.targetRanges,o.target);if(this._removeDropMarker(),!i)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=o.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==_(o.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(i,!0))return this._finalizeDragging(!1),void t.stop();o.targetRanges=[e.editing.mapper.toViewRange(i)]},{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(l);e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const o=t.targetRanges.map(e=>this.editor.editing.mapper.toModelRange(e));this.editor.model.change(e=>e.setSelection(o))},{priority:"high"}),e.on("contentInsertion",(e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const o="move"==_(t.dataTransfer),i=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(i&&o)},{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,o=t.document;this.listenTo(o,"mousedown",(i,s)=>{if(g.a.isAndroid||!s)return;this._clearDraggableAttributesDelayed.cancel();let r=v(s.target);if(g.a.isBlink&&!e.isReadOnly&&!r&&!o.selection.isCollapsed){const e=o.selection.getSelectedElement();e&&Object(f.e)(e)||(r=o.selection.editableElement)}r&&(t.change(e=>{e.setAttribute("draggable","true",r)}),this._draggableElement=e.editing.mapper.toModelElement(r))}),this.listenTo(o,"mouseup",()=>{g.a.isAndroid||this._clearDraggableAttributesDelayed()})}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change(t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null})}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:o})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return o.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.innerHTML="⁠<span></span>⁠",t}))}})}_updateDropMarker(e){const t=this.editor,o=t.model.markers;t.model.change(t=>{o.has("drop-target")?o.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})})}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change(e=>{e.removeMarker("drop-target")})}_finalizeDragging(e){const t=this.editor,o=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&o.deleteContent(o.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function b(e,t,o){const i=e.model,s=e.editing.mapper;let r=null;const n=t?t[0].start:null;if(o.is("uiElement")&&(o=o.parent),r=function(e,t){const o=e.model,i=e.editing.mapper;if(Object(f.e)(t))return o.createRangeOn(i.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor(e=>Object(f.e)(e)||e.is("editableElement"));if(Object(f.e)(e))return o.createRangeOn(i.toModelElement(e))}return null}(e,o),r)return r;const a=function(e,t){const o=e.editing.mapper,i=e.editing.view,s=o.toModelElement(t);if(s)return s;const r=i.createPositionBefore(t),n=o.findMappedViewAncestor(r);return o.toModelElement(n)}(e,o),c=n?s.toModelPosition(n):null;return c?(r=function(e,t,o){const i=e.model;if(!i.schema.checkChild(o,"$block"))return null;const s=i.createPositionAt(o,0),r=t.path.slice(0,s.path.length),n=i.createPositionFromPath(t.root,r).nodeAfter;if(n&&i.schema.isObject(n))return i.createRangeOn(n);return null}(e,c,a),r||(r=i.schema.getNearestSelectionRange(c,g.a.isGecko?"forward":"backward"),r||function(e,t){const o=e.model;for(;t;){if(o.schema.isObject(t))return o.createRangeOn(t);t=t.parent}}(e,c.parent))):function(e,t){const o=e.model,i=o.schema,s=o.createPositionAt(t,0);return i.getNearestSelectionRange(s,"forward")}(e,a)}function _(e){return g.a.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function w(e,t){let o;function i(...s){i.cancel(),o=setTimeout(()=>e(...s),t)}return i.cancel=()=>{clearTimeout(o)},i}function v(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(f.e);if(Object(f.e)(e))return e;const t=e.findAncestor(e=>Object(f.e)(e)||e.is("editableElement"));return Object(f.e)(t)?t:null}class y extends i.a{static get pluginName(){return"PastePlainText"}static get requires(){return[l]}init(){const e=this.editor,t=e.model,o=e.editing.view,i=o.document,s=t.document.selection;let r=!1;o.addObserver(a),this.listenTo(i,"keydown",(e,t)=>{r=t.shiftKey}),e.plugins.get(l).on("contentInsertion",(e,o)=>{(r||function(e,t){if(e.childCount>1)return!1;const o=e.getChild(0);if(t.isObject(o))return!1;return 0==[...o.getAttributeKeys()].length}(o.content,t.schema))&&t.change(e=>{const i=Array.from(s.getAttributes()).filter(([e])=>t.schema.getAttributeProperties(e).isFormatting);s.isCollapsed||t.deleteContent(s,{doNotAutoparagraph:!0}),i.push(...s.getAttributes());const r=e.createRangeIn(o.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(i,t)})})}}class j extends i.a{static get pluginName(){return"Clipboard"}static get requires(){return[l,k,y]}}},"./src/core.js":function(e,t,o){"use strict";o.r(t),o.d(t,"Plugin",(function(){return i.a})),o.d(t,"Command",(function(){return s.a})),o.d(t,"MultiCommand",(function(){return r})),o.d(t,"Context",(function(){return b})),o.d(t,"ContextPlugin",(function(){return _.a})),o.d(t,"Editor",(function(){return C})),o.d(t,"EditorUI",(function(){return M})),o.d(t,"attachToForm",(function(){return I})),o.d(t,"DataApiMixin",(function(){return z})),o.d(t,"ElementApiMixin",(function(){return D})),o.d(t,"secureSourceElement",(function(){return B})),o.d(t,"PendingActions",(function(){return F.a})),o.d(t,"icons",(function(){return H}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-core/src/command.js");class r extends s.a{constructor(e){super(e),this._childCommands=[]}refresh(){}execute(...e){const t=this._getFirstEnabledCommand();return null!=t&&t.execute(e)}registerChildCommand(e){this._childCommands.push(e),e.on("change:isEnabled",()=>this._checkEnabled()),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){return this._childCommands.find(e=>e.isEnabled)}}var n=o("./node_modules/lodash-es/isPlainObject.js"),a=o("./node_modules/lodash-es/cloneDeepWith.js"),c=o("./node_modules/lodash-es/isElement.js");class l{constructor(e,t){this._config={},t&&this.define(d(t)),e&&this._setObjectToTarget(this._config,e)}set(e,t){this._setToTarget(this._config,e,t)}define(e,t){this._setToTarget(this._config,e,t,!0)}get(e){return this._getFromSource(this._config,e)}*names(){for(const e of Object.keys(this._config))yield e}_setToTarget(e,t,o,i=!1){if(Object(n.a)(t))return void this._setObjectToTarget(e,t,i);const s=t.split(".");t=s.pop();for(const t of s)Object(n.a)(e[t])||(e[t]={}),e=e[t];if(Object(n.a)(o))return Object(n.a)(e[t])||(e[t]={}),e=e[t],void this._setObjectToTarget(e,o,i);i&&void 0!==e[t]||(e[t]=o)}_getFromSource(e,t){const o=t.split(".");t=o.pop();for(const t of o){if(!Object(n.a)(e[t])){e=null;break}e=e[t]}return e?d(e[t]):void 0}_setObjectToTarget(e,t,o){Object.keys(t).forEach(i=>{this._setToTarget(e,i,t[i],o)})}}function d(e){return Object(a.a)(e,u)}function u(e){return Object(c.a)(e)?e:void 0}var h=o("./packages/ckeditor5-utils/src/collection.js"),p=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),g=o("./packages/ckeditor5-utils/src/emittermixin.js"),f=o("./packages/ckeditor5-utils/src/mix.js");class m{constructor(e,t=[],o=[]){this._context=e,this._plugins=new Map,this._availablePlugins=new Map;for(const e of t)e.pluginName&&this._availablePlugins.set(e.pluginName,e);this._contextPlugins=new Map;for(const[e,t]of o)this._contextPlugins.set(e,t),this._contextPlugins.set(t,e),e.pluginName&&this._availablePlugins.set(e.pluginName,e)}*[Symbol.iterator](){for(const e of this._plugins)"function"==typeof e[0]&&(yield e)}get(e){const t=this._plugins.get(e);if(!t){let t=e;throw"function"==typeof e&&(t=e.pluginName||e.name),new p.a("plugincollection-plugin-not-loaded",this._context,{plugin:t})}return t}has(e){return this._plugins.has(e)}init(e,t=[],o=[]){const i=this,s=this._context;!function e(t,o=new Set){t.forEach(t=>{a(t)&&(o.has(t)||(o.add(t),t.pluginName&&!i._availablePlugins.has(t.pluginName)&&i._availablePlugins.set(t.pluginName,t),t.requires&&e(t.requires,o)))})}(e),u(e);const r=[...function e(t,o=new Set){return t.map(e=>a(e)?e:i._availablePlugins.get(e)).reduce((t,i)=>o.has(i)?t:(o.add(i),i.requires&&(u(i.requires,i),e(i.requires,o).forEach(e=>t.add(e))),t.add(i)),new Set)}(e.filter(e=>!l(e,t)))];!function(e,t){for(const o of t){if("function"!=typeof o)throw new p.a("plugincollection-replace-plugin-invalid-type",null,{pluginItem:o});const t=o.pluginName;if(!t)throw new p.a("plugincollection-replace-plugin-missing-name",null,{pluginItem:o});if(o.requires&&o.requires.length)throw new p.a("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:t});const s=i._availablePlugins.get(t);if(!s)throw new p.a("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:t});const r=e.indexOf(s);if(-1===r){if(i._contextPlugins.has(s))return;throw new p.a("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:t})}if(s.requires&&s.requires.length)throw new p.a("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:t});e.splice(r,1,o),i._availablePlugins.set(t,o)}}(r,o);const n=function(e){return e.map(e=>{const t=i._contextPlugins.get(e)||new e(s);return i._add(e,t),t})}(r);return h(n,"init").then(()=>h(n,"afterInit")).then(()=>n);function a(e){return"function"==typeof e}function c(e){return a(e)&&e.isContextPlugin}function l(e,t){return t.some(t=>t===e||(d(e)===t||d(t)===e))}function d(e){return a(e)?e.pluginName||e.name:e}function u(e,o=null){e.map(e=>a(e)?e:i._availablePlugins.get(e)||e).forEach(e=>{!function(e,t){if(a(e))return;if(t)throw new p.a("plugincollection-soft-required",s,{missingPlugin:e,requiredBy:d(t)});throw new p.a("plugincollection-plugin-not-found",s,{plugin:e})}(e,o),function(e,t){if(!c(t))return;if(c(e))return;throw new p.a("plugincollection-context-required",s,{plugin:d(e),requiredBy:d(t)})}(e,o),function(e,o){if(!o)return;if(!l(e,t))return;throw new p.a("plugincollection-required",s,{plugin:d(e),requiredBy:d(o)})}(e,o)})}function h(e,t){return e.reduce((e,o)=>o[t]?i._contextPlugins.has(o)?e:e.then(o[t].bind(o)):e,Promise.resolve())}}destroy(){const e=[];for(const[,t]of this)"function"!=typeof t.destroy||this._contextPlugins.has(t)||e.push(t.destroy());return Promise.all(e)}_add(e,t){this._plugins.set(e,t);const o=e.pluginName;if(o){if(this._plugins.has(o))throw new p.a("plugincollection-plugin-name-conflict",null,{pluginName:o,plugin1:this._plugins.get(o).constructor,plugin2:e});this._plugins.set(o,t)}}}Object(f.a)(m,g.c);var k=o("./packages/ckeditor5-utils/src/locale.js");class b{constructor(e){this.config=new l(e,this.constructor.defaultConfig);const t=this.constructor.builtinPlugins;this.config.define("plugins",t),this.plugins=new m(this,t);const o=this.config.get("language")||{};this.locale=new k.a({uiLanguage:"string"==typeof o?o:o.ui,contentLanguage:this.config.get("language.content")}),this.t=this.locale.t,this.editors=new h.a,this._contextOwner=null}initPlugins(){const e=this.config.get("plugins")||[],t=this.config.get("substitutePlugins")||[];for(const o of e.concat(t)){if("function"!=typeof o)throw new p.a("context-initplugins-constructor-only",null,{Plugin:o});if(!0!==o.isContextPlugin)throw new p.a("context-initplugins-invalid-plugin",null,{Plugin:o})}return this.plugins.init(e,[],t)}destroy(){return Promise.all(Array.from(this.editors,e=>e.destroy())).then(()=>this.plugins.destroy())}_addEditor(e,t){if(this._contextOwner)throw new p.a("context-addeditor-private-context");this.editors.add(e),t&&(this._contextOwner=e)}_removeEditor(e){return this.editors.has(e)&&this.editors.remove(e),this._contextOwner===e?this.destroy():Promise.resolve()}_getEditorConfig(){const e={};for(const t of this.config.names())["plugins","removePlugins","extraPlugins"].includes(t)||(e[t]=this.config.get(t));return e}static create(e){return new Promise(t=>{const o=new this(e);t(o.initPlugins().then(()=>o))})}}var _=o("./packages/ckeditor5-core/src/contextplugin.js"),w=o("./packages/ckeditor5-engine/src/controller/editingcontroller.js");class v{constructor(){this._commands=new Map}add(e,t){this._commands.set(e,t)}get(e){return this._commands.get(e)}execute(e,...t){const o=this.get(e);if(!o)throw new p.a("commandcollection-command-not-found",this,{commandName:e});return o.execute(...t)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const e of this.commands())e.destroy()}}var y=o("./packages/ckeditor5-engine/src/controller/datacontroller.js"),j=o("./packages/ckeditor5-engine/src/conversion/conversion.js"),x=o("./packages/ckeditor5-engine/src/model/model.js"),P=o("./packages/ckeditor5-utils/src/keystrokehandler.js");class O extends P.a{constructor(e){super(),this.editor=e}set(e,t,o={}){if("string"==typeof t){const e=t;t=(t,o)=>{this.editor.execute(e),o()}}super.set(e,t,o)}}var A=o("./packages/ckeditor5-utils/src/observablemixin.js"),T=o("./packages/ckeditor5-engine/src/view/stylesmap.js");class C{constructor(e={}){this._context=e.context||new b({language:e.language}),this._context._addEditor(this,!e.context);const t=Array.from(this.constructor.builtinPlugins||[]);this.config=new l(e,this.constructor.defaultConfig),this.config.define("plugins",t),this.config.define(this._context._getEditorConfig()),this.plugins=new m(this,t,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this.commands=new v,this.set("state","initializing"),this.once("ready",()=>this.state="ready",{priority:"high"}),this.once("destroy",()=>this.state="destroyed",{priority:"high"}),this.set("isReadOnly",!1),this.model=new x.a;const o=new T.a;this.data=new y.a(this.model,o),this.editing=new w.a(this.model,o),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new j.a([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new O(this),this.keystrokes.listenTo(this.editing.view.document)}initPlugins(){const e=this.config,t=e.get("plugins"),o=e.get("removePlugins")||[],i=e.get("extraPlugins")||[],s=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(i),o,s)}destroy(){let e=Promise.resolve();return"initializing"==this.state&&(e=new Promise(e=>this.once("ready",e))),e.then(()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()}).then(()=>this.plugins.destroy()).then(()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()}).then(()=>this._context._removeEditor(this))}execute(...e){try{return this.commands.execute(...e)}catch(e){p.a.rethrowUnexpectedError(e,this)}}focus(){this.editing.view.focus()}}Object(f.a)(C,A.a);class E{constructor(e){this.editor=e,this._components=new Map}*names(){for(const e of this._components.values())yield e.originalName}add(e,t){this._components.set(S(e),{callback:t,originalName:e})}create(e){if(!this.has(e))throw new p.a("componentfactory-item-missing",this,{name:e});return this._components.get(S(e)).callback(this.editor.locale)}has(e){return this._components.has(S(e))}}function S(e){return String(e).toLowerCase()}var R=o("./packages/ckeditor5-utils/src/focustracker.js");class M{constructor(e){this.editor=e,this.componentFactory=new E(e),this.focusTracker=new R.a,this.set("viewportOffset",this._readViewportOffsetFromConfig()),this._editableElementsMap=new Map,this.listenTo(e.editing.view.document,"layoutChanged",()=>this.update())}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy();for(const e of this._editableElementsMap.values())e.ckeditorInstance=null;this._editableElementsMap=new Map}setEditableElement(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor)}getEditableElement(e="main"){return this._editableElementsMap.get(e)}getEditableElementsNames(){return this._editableElementsMap.keys()}get _editableElements(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}_readViewportOffsetFromConfig(){const e=this.editor,t=e.config.get("ui.viewportOffset");if(t)return t;const o=e.config.get("toolbar.viewportTopOffset");return o?(console.warn("editor-ui-deprecated-viewport-offset-config: The `toolbar.vieportTopOffset` configuration option is deprecated. It will be removed from future CKEditor versions. Use `ui.viewportOffset.top` instead."),{top:o}):{top:0}}}Object(f.a)(M,A.a);var N=o("./node_modules/lodash-es/isFunction.js");function I(e){if(!Object(N.a)(e.updateSourceElement))throw new p.a("attachtoform-missing-elementapi-interface",e);const t=e.sourceElement;if(t&&"textarea"===t.tagName.toLowerCase()&&t.form){let o;const i=t.form,s=()=>e.updateSourceElement();Object(N.a)(i.submit)&&(o=i.submit,i.submit=()=>{s(),o.apply(i)}),i.addEventListener("submit",s),e.on("destroy",()=>{i.removeEventListener("submit",s),o&&(i.submit=o)})}}var z={setData(e){this.data.set(e)},getData(e){return this.data.get(e)}},V=o("./packages/ckeditor5-utils/src/dom/setdatainelement.js");var D={updateSourceElement(){if(!this.sourceElement)throw new p.a("editor-missing-sourceelement",this);Object(V.a)(this.sourceElement,this.data.get())}};function B(e){const t=e.sourceElement;if(t){if(t.ckeditorInstance)throw new p.a("editor-source-element-already-used",e);t.ckeditorInstance=e,e.once("destroy",()=>{delete t.ckeditorInstance})}}var F=o("./packages/ckeditor5-core/src/pendingactions.js"),L=o("./packages/ckeditor5-core/theme/icons/pilcrow.svg"),W=o("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg");const H={cancel:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.591 10.177 4.243 4.242a1 1 0 0 1-1.415 1.415l-4.242-4.243-4.243 4.243a1 1 0 0 1-1.414-1.415l4.243-4.242L4.52 5.934A1 1 0 0 1 5.934 4.52l4.243 4.243 4.242-4.243a1 1 0 1 1 1.415 1.414l-4.243 4.243z"/></svg>',caption:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 16h9a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z"/><path d="M17 1a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14zm0 1.5H3a.5.5 0 0 0-.492.41L2.5 3v9a.5.5 0 0 0 .41.492L3 12.5h14a.5.5 0 0 0 .492-.41L17.5 12V3a.5.5 0 0 0-.41-.492L17 2.5z" fill-opacity=".6"/></svg>',check:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.972 16.615a.997.997 0 0 1-.744-.292l-4.596-4.596a1 1 0 1 1 1.414-1.414l3.926 3.926 9.937-9.937a1 1 0 0 1 1.414 1.415L7.717 16.323a.997.997 0 0 1-.745.292z"/></svg>',cog:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.333 2 .19 2.263a5.899 5.899 0 0 1 1.458.604L14.714 3.4 16.6 5.286l-1.467 1.733c.263.452.468.942.605 1.46L18 8.666v2.666l-2.263.19a5.899 5.899 0 0 1-.604 1.458l1.467 1.733-1.886 1.886-1.733-1.467a5.899 5.899 0 0 1-1.46.605L11.334 18H8.667l-.19-2.263a5.899 5.899 0 0 1-1.458-.604L5.286 16.6 3.4 14.714l1.467-1.733a5.899 5.899 0 0 1-.604-1.458L2 11.333V8.667l2.262-.189a5.899 5.899 0 0 1 .605-1.459L3.4 5.286 5.286 3.4l1.733 1.467a5.899 5.899 0 0 1 1.46-.605L8.666 2h2.666zM10 6.267a3.733 3.733 0 1 0 0 7.466 3.733 3.733 0 0 0 0-7.466z"/></svg>',eraser:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m8.636 9.531-2.758 3.94a.5.5 0 0 0 .122.696l3.224 2.284h1.314l2.636-3.736L8.636 9.53zm.288 8.451L5.14 15.396a2 2 0 0 1-.491-2.786l6.673-9.53a2 2 0 0 1 2.785-.49l3.742 2.62a2 2 0 0 1 .491 2.785l-7.269 10.053-2.147-.066z"/><path d="M4 18h5.523v-1H4zm-2 0h1v-1H2z"/></svg>',lowVision:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M5.085 6.22 2.943 4.078a.75.75 0 1 1 1.06-1.06l2.592 2.59A11.094 11.094 0 0 1 10 5.068c4.738 0 8.578 3.101 8.578 5.083 0 1.197-1.401 2.803-3.555 3.887l1.714 1.713a.75.75 0 0 1-.09 1.138.488.488 0 0 1-.15.084.75.75 0 0 1-.821-.16L6.17 7.304c-.258.11-.51.233-.757.365l6.239 6.24-.006.005.78.78c-.388.094-.78.166-1.174.215l-1.11-1.11h.011L4.55 8.197a7.2 7.2 0 0 0-.665.514l-.112.098 4.897 4.897-.005.006 1.276 1.276a10.164 10.164 0 0 1-1.477-.117l-.479-.479-.009.009-4.863-4.863-.022.031a2.563 2.563 0 0 0-.124.2c-.043.077-.08.158-.108.241a.534.534 0 0 0-.028.133.29.29 0 0 0 .008.072.927.927 0 0 0 .082.226c.067.133.145.26.234.379l3.242 3.365.025.01.59.623c-3.265-.918-5.59-3.155-5.59-4.668 0-1.194 1.448-2.838 3.663-3.93zm7.07.531a4.632 4.632 0 0 1 1.108 5.992l.345.344.046-.018a9.313 9.313 0 0 0 2-1.112c.256-.187.5-.392.727-.613.137-.134.27-.277.392-.431.072-.091.141-.185.203-.286.057-.093.107-.19.148-.292a.72.72 0 0 0 .036-.12.29.29 0 0 0 .008-.072.492.492 0 0 0-.028-.133.999.999 0 0 0-.036-.096 2.165 2.165 0 0 0-.071-.145 2.917 2.917 0 0 0-.125-.2 3.592 3.592 0 0 0-.263-.335 5.444 5.444 0 0 0-.53-.523 7.955 7.955 0 0 0-1.054-.768 9.766 9.766 0 0 0-1.879-.891c-.337-.118-.68-.219-1.027-.301zm-2.85.21-.069.002a.508.508 0 0 0-.254.097.496.496 0 0 0-.104.679.498.498 0 0 0 .326.199l.045.005c.091.003.181.003.272.012a2.45 2.45 0 0 1 2.017 1.513c.024.061.043.125.069.185a.494.494 0 0 0 .45.287h.008a.496.496 0 0 0 .35-.158.482.482 0 0 0 .13-.335.638.638 0 0 0-.048-.219 3.379 3.379 0 0 0-.36-.723 3.438 3.438 0 0 0-2.791-1.543l-.028-.001h-.013z"/></svg>',image:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.91 10.54c.26-.23.64-.21.88.03l3.36 3.14 2.23-2.06a.64.64 0 0 1 .87 0l2.52 2.97V4.5H3.2v10.12l3.71-4.08zm10.27-7.51c.6 0 1.09.47 1.09 1.05v11.84c0 .59-.49 1.06-1.09 1.06H2.79c-.6 0-1.09-.47-1.09-1.06V4.08c0-.58.49-1.05 1.1-1.05h14.38zm-5.22 5.56a1.96 1.96 0 1 1 3.4-1.96 1.96 1.96 0 0 1-3.4 1.96z"/></svg>',alignBottom:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.239 13.938-2.88-1.663a.75.75 0 0 1 .75-1.3L9 12.067V4.75a.75.75 0 1 1 1.5 0v7.318l1.89-1.093a.75.75 0 0 1 .75 1.3l-2.879 1.663a.752.752 0 0 1-.511.187.752.752 0 0 1-.511-.187zM4.25 17a.75.75 0 1 1 0-1.5h10.5a.75.75 0 0 1 0 1.5H4.25z"/></svg>',alignMiddle:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.75 11.875a.752.752 0 0 1 .508.184l2.883 1.666a.75.75 0 0 1-.659 1.344l-.091-.044-1.892-1.093.001 4.318a.75.75 0 1 1-1.5 0v-4.317l-1.89 1.092a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .51-.187zM15.25 9a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM9.75.375a.75.75 0 0 1 .75.75v4.318l1.89-1.093.092-.045a.75.75 0 0 1 .659 1.344l-2.883 1.667a.752.752 0 0 1-.508.184.752.752 0 0 1-.511-.187L6.359 5.65a.75.75 0 0 1 .75-1.299L9 5.442V1.125a.75.75 0 0 1 .75-.75z"/></svg>',alignTop:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m10.261 7.062 2.88 1.663a.75.75 0 0 1-.75 1.3L10.5 8.933v7.317a.75.75 0 1 1-1.5 0V8.932l-1.89 1.093a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .511-.187.752.752 0 0 1 .511.187zM15.25 4a.75.75 0 1 1 0 1.5H4.75a.75.75 0 0 1 0-1.5h10.5z"/></svg>',alignLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',alignCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm2.286 4c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75z"/></svg>',alignRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M18 3.75a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 8a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 4a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75zm0-8a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75z"/></svg>',alignJustify:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',objectLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zm0-3H18v1.5h-4.5zm0-3H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M15.003 7v5.5a1 1 0 0 1-1 1H5.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H6.5V12h6.997V7.5z"/></svg>',objectRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2zm0-9h5v1.5H2zm0 3h5v1.5H2zm0 3h5v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectFullWidth:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18 7v5.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1zm-1.505.5H3.504V12h12.991V7.5z"/></svg>',objectInline:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectSizeFull:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M18.095 2H1.905C.853 2 0 2.895 0 4v12c0 1.105.853 2 1.905 2h16.19C19.147 18 20 17.105 20 16V4c0-1.105-.853-2-1.905-2zm0 1.5c.263 0 .476.224.476.5v12c0 .276-.213.5-.476.5H1.905a.489.489 0 0 1-.476-.5V4c0-.276.213-.5.476-.5h16.19z"/></svg>',objectSizeLarge:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M13 6H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5h11z"/></svg>',objectSizeSmall:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M7 10H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h5z"/></svg>',objectSizeMedium:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M10 8H2a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h8z"/></svg>',pencil:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.3 17.37-.061.088a1.518 1.518 0 0 1-.934.535l-4.178.663-.806-4.153a1.495 1.495 0 0 1 .187-1.058l.056-.086L8.77 2.639c.958-1.351 2.803-1.076 4.296-.03 1.497 1.047 2.387 2.693 1.433 4.055L7.3 17.37zM9.14 4.728l-5.545 8.346 3.277 2.294 5.544-8.346L9.14 4.728zM6.07 16.512l-3.276-2.295.53 2.73 2.746-.435zM9.994 3.506 13.271 5.8c.316-.452-.16-1.333-1.065-1.966-.905-.634-1.895-.78-2.212-.328zM8 18.5 9.375 17H19v1.5H8z"/></svg>',pilcrow:L.a,quote:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 10.423a6.5 6.5 0 0 1 6.056-6.408l.038.67C6.448 5.423 5.354 7.663 5.22 10H9c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574zm8 0a6.5 6.5 0 0 1 6.056-6.408l.038.67c-2.646.739-3.74 2.979-3.873 5.315H17c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574z"/></svg>',threeVerticalDots:W.a}},"./src/engine.js":function(e,t,o){"use strict";o.r(t),o.d(t,"enablePlaceholder",(function(){return s})),o.d(t,"disablePlaceholder",(function(){return r})),o.d(t,"showPlaceholder",(function(){return n})),o.d(t,"hidePlaceholder",(function(){return a})),o.d(t,"needsPlaceholder",(function(){return c})),o.d(t,"EditingController",(function(){return h.a})),o.d(t,"DataController",(function(){return p.a})),o.d(t,"Conversion",(function(){return g.a})),o.d(t,"HtmlDataProcessor",(function(){return f.a})),o.d(t,"InsertOperation",(function(){return m.a})),o.d(t,"MarkerOperation",(function(){return k.a})),o.d(t,"OperationFactory",(function(){return b.a})),o.d(t,"transformSets",(function(){return _.a})),o.d(t,"DocumentSelection",(function(){return w.a})),o.d(t,"Range",(function(){return v.a})),o.d(t,"LiveRange",(function(){return y.a})),o.d(t,"LivePosition",(function(){return j.a})),o.d(t,"Model",(function(){return x.a})),o.d(t,"TreeWalker",(function(){return P.a})),o.d(t,"Element",(function(){return O.a})),o.d(t,"DomConverter",(function(){return A.a})),o.d(t,"Renderer",(function(){return T.a})),o.d(t,"ViewDocument",(function(){return C.a})),o.d(t,"getFillerOffset",(function(){return E.b})),o.d(t,"Observer",(function(){return S.a})),o.d(t,"ClickObserver",(function(){return M})),o.d(t,"DomEventObserver",(function(){return R.a})),o.d(t,"MouseObserver",(function(){return N.a})),o.d(t,"DowncastWriter",(function(){return I.a})),o.d(t,"UpcastWriter",(function(){return H})),o.d(t,"Matcher",(function(){return q.a})),o.d(t,"DomEventData",(function(){return $.a})),o.d(t,"StylesProcessor",(function(){return U.a})),o.d(t,"addBackgroundRules",(function(){return _e})),o.d(t,"addBorderRules",(function(){return ve})),o.d(t,"addMarginRules",(function(){return Re})),o.d(t,"addPaddingRules",(function(){return Me})),o.d(t,"isColor",(function(){return Q})),o.d(t,"isLineStyle",(function(){return te})),o.d(t,"isLength",(function(){return ie})),o.d(t,"isPercentage",(function(){return re})),o.d(t,"isRepeat",(function(){return ae})),o.d(t,"isPosition",(function(){return le})),o.d(t,"isAttachment",(function(){return ue})),o.d(t,"isURL",(function(){return pe})),o.d(t,"getBoxSidesValues",(function(){return ge})),o.d(t,"getBoxSidesValueReducer",(function(){return fe})),o.d(t,"getBoxSidesShorthandValue",(function(){return me})),o.d(t,"getPositionShorthandNormalizer",(function(){return ke})),o.d(t,"getShorthandValues",(function(){return be}));o("./packages/ckeditor5-engine/theme/placeholder.css");const i=new WeakMap;function s(e){const{view:t,element:o,text:s,isDirectHost:r=!0,keepOnFocus:n=!1}=e,a=t.document;i.has(a)||(i.set(a,new Map),a.registerPostFixer(e=>l(a,e))),i.get(a).set(o,{text:s,isDirectHost:r,keepOnFocus:n,hostElement:r?o:null}),t.change(e=>l(a,e))}function r(e,t){const o=t.document;e.change(e=>{if(!i.has(o))return;const s=i.get(o),r=s.get(t);e.removeAttribute("data-placeholder",r.hostElement),a(e,r.hostElement),s.delete(t)})}function n(e,t){return!t.hasClass("ck-placeholder")&&(e.addClass("ck-placeholder",t),!0)}function a(e,t){return!!t.hasClass("ck-placeholder")&&(e.removeClass("ck-placeholder",t),!0)}function c(e,t){if(!e.isAttached())return!1;if(Array.from(e.getChildren()).some(e=>!e.is("uiElement")))return!1;if(t)return!0;const o=e.document;if(!o.isFocused)return!0;const i=o.selection.anchor;return i&&i.parent!==e}function l(e,t){const o=i.get(e),s=[];let r=!1;for(const[e,i]of o)i.isDirectHost&&(s.push(e),d(t,e,i)&&(r=!0));for(const[e,i]of o){if(i.isDirectHost)continue;const o=u(e);o&&(s.includes(o)||(i.hostElement=o,d(t,e,i)&&(r=!0)))}return r}function d(e,t,o){const{text:i,isDirectHost:s,hostElement:r}=o;let l=!1;r.getAttribute("data-placeholder")!==i&&(e.setAttribute("data-placeholder",i,r),l=!0);return(s||1==t.childCount)&&c(r,o.keepOnFocus)?n(e,r)&&(l=!0):a(e,r)&&(l=!0),l}function u(e){if(e.childCount){const t=e.getChild(0);if(t.is("element")&&!t.is("uiElement"))return t}return null}var h=o("./packages/ckeditor5-engine/src/controller/editingcontroller.js"),p=o("./packages/ckeditor5-engine/src/controller/datacontroller.js"),g=o("./packages/ckeditor5-engine/src/conversion/conversion.js"),f=o("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js"),m=o("./packages/ckeditor5-engine/src/model/operation/insertoperation.js"),k=o("./packages/ckeditor5-engine/src/model/operation/markeroperation.js"),b=o("./packages/ckeditor5-engine/src/model/operation/operationfactory.js"),_=o("./packages/ckeditor5-engine/src/model/operation/transform.js"),w=o("./packages/ckeditor5-engine/src/model/documentselection.js"),v=o("./packages/ckeditor5-engine/src/model/range.js"),y=o("./packages/ckeditor5-engine/src/model/liverange.js"),j=o("./packages/ckeditor5-engine/src/model/liveposition.js"),x=o("./packages/ckeditor5-engine/src/model/model.js"),P=o("./packages/ckeditor5-engine/src/model/treewalker.js"),O=o("./packages/ckeditor5-engine/src/model/element.js"),A=o("./packages/ckeditor5-engine/src/view/domconverter.js"),T=o("./packages/ckeditor5-engine/src/view/renderer.js"),C=o("./packages/ckeditor5-engine/src/view/document.js"),E=o("./packages/ckeditor5-engine/src/view/containerelement.js"),S=o("./packages/ckeditor5-engine/src/view/observer/observer.js"),R=o("./packages/ckeditor5-engine/src/view/observer/domeventobserver.js");class M extends R.a{constructor(e){super(e),this.domEventType="click"}onDomEvent(e){this.fire(e.type,e)}}var N=o("./packages/ckeditor5-engine/src/view/observer/mouseobserver.js"),I=o("./packages/ckeditor5-engine/src/view/downcastwriter.js"),z=o("./packages/ckeditor5-engine/src/view/documentfragment.js"),V=o("./packages/ckeditor5-engine/src/view/element.js"),D=o("./packages/ckeditor5-engine/src/view/text.js"),B=o("./node_modules/lodash-es/isPlainObject.js"),F=o("./packages/ckeditor5-engine/src/view/position.js"),L=o("./packages/ckeditor5-engine/src/view/range.js"),W=o("./packages/ckeditor5-engine/src/view/selection.js");class H{constructor(e){this.document=e}createDocumentFragment(e){return new z.a(this.document,e)}createElement(e,t,o){return new V.a(this.document,e,t,o)}createText(e){return new D.a(this.document,e)}clone(e,t=!1){return e._clone(t)}appendChild(e,t){return t._appendChild(e)}insertChild(e,t,o){return o._insertChild(e,t)}removeChildren(e,t,o){return o._removeChildren(e,t)}remove(e){const t=e.parent;return t?this.removeChildren(t.getChildIndex(e),1,t):[]}replace(e,t){const o=e.parent;if(o){const i=o.getChildIndex(e);return this.removeChildren(i,1,o),this.insertChild(i,t,o),!0}return!1}unwrapElement(e){const t=e.parent;if(t){const o=t.getChildIndex(e);this.remove(e),this.insertChild(o,e.getChildren(),t)}}rename(e,t){const o=new V.a(this.document,e,t.getAttributes(),t.getChildren());return this.replace(t,o)?o:null}setAttribute(e,t,o){o._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,o){Object(B.a)(e)&&void 0===o&&(o=t),o._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,o){o._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}createPositionAt(e,t){return F.a._createAt(e,t)}createPositionAfter(e){return F.a._createAfter(e)}createPositionBefore(e){return F.a._createBefore(e)}createRange(e,t){return new L.a(e,t)}createRangeOn(e){return L.a._createOn(e)}createRangeIn(e){return L.a._createIn(e)}createSelection(e,t,o){return new W.a(e,t,o)}}var q=o("./packages/ckeditor5-engine/src/view/matcher.js"),$=o("./packages/ckeditor5-engine/src/view/observer/domeventdata.js"),U=o("./packages/ckeditor5-engine/src/view/stylesmap.js");const K=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,G=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,J=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,Y=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,X=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,Z=new Set(["black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","orange","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","activeborder","activecaption","appworkspace","background","buttonface","buttonhighlight","buttonshadow","buttontext","captiontext","graytext","highlight","highlighttext","inactiveborder","inactivecaption","inactivecaptiontext","infobackground","infotext","menu","menutext","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","window","windowframe","windowtext","rebeccapurple","currentcolor","transparent"]);function Q(e){return e.startsWith("#")?K.test(e):e.startsWith("rgb")?G.test(e)||J.test(e):e.startsWith("hsl")?Y.test(e)||X.test(e):Z.has(e.toLowerCase())}const ee=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function te(e){return ee.includes(e)}const oe=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function ie(e){return oe.test(e)}const se=/^[+-]?[0-9]*([.][0-9]+)?%$/;function re(e){return se.test(e)}const ne=["repeat-x","repeat-y","repeat","space","round","no-repeat"];function ae(e){return ne.includes(e)}const ce=["center","top","bottom","left","right"];function le(e){return ce.includes(e)}const de=["fixed","scroll","local"];function ue(e){return de.includes(e)}const he=/^url\(/;function pe(e){return he.test(e)}function ge(e=""){if(""===e)return{top:void 0,right:void 0,bottom:void 0,left:void 0};const t=be(e),o=t[0],i=t[2]||o,s=t[1]||o;return{top:o,bottom:i,right:s,left:t[3]||s}}function fe(e){return t=>{const{top:o,right:i,bottom:s,left:r}=t,n=[];return[o,i,r,s].every(e=>!!e)?n.push([e,me(t)]):(o&&n.push([e+"-top",o]),i&&n.push([e+"-right",i]),s&&n.push([e+"-bottom",s]),r&&n.push([e+"-left",r])),n}}function me({top:e,right:t,bottom:o,left:i}){const s=[];return i!==t?s.push(e,t,o,i):o!==e?s.push(e,t,o):t!==e?s.push(e,t):s.push(e),s.join(" ")}function ke(e){return t=>({path:e,value:ge(t)})}function be(e){return e.replace(/, /g,",").split(" ").map(e=>e.replace(/,/g,", "))}function _e(e){e.setNormalizer("background",we),e.setNormalizer("background-color",e=>({path:"background.color",value:e})),e.setReducer("background",e=>{const t=[];return t.push(["background-color",e.color]),t}),e.setStyleRelation("background",["background-color"])}function we(e){const t={},o=be(e);for(const e of o)ae(e)?(t.repeat=t.repeat||[],t.repeat.push(e)):le(e)?(t.position=t.position||[],t.position.push(e)):ue(e)?t.attachment=e:Q(e)?t.color=e:pe(e)&&(t.image=e);return{path:"background",value:t}}function ve(e){e.setNormalizer("border",ye),e.setNormalizer("border-top",je("top")),e.setNormalizer("border-right",je("right")),e.setNormalizer("border-bottom",je("bottom")),e.setNormalizer("border-left",je("left")),e.setNormalizer("border-color",xe("color")),e.setNormalizer("border-width",xe("width")),e.setNormalizer("border-style",xe("style")),e.setNormalizer("border-top-color",Oe("color","top")),e.setNormalizer("border-top-style",Oe("style","top")),e.setNormalizer("border-top-width",Oe("width","top")),e.setNormalizer("border-right-color",Oe("color","right")),e.setNormalizer("border-right-style",Oe("style","right")),e.setNormalizer("border-right-width",Oe("width","right")),e.setNormalizer("border-bottom-color",Oe("color","bottom")),e.setNormalizer("border-bottom-style",Oe("style","bottom")),e.setNormalizer("border-bottom-width",Oe("width","bottom")),e.setNormalizer("border-left-color",Oe("color","left")),e.setNormalizer("border-left-style",Oe("style","left")),e.setNormalizer("border-left-width",Oe("width","left")),e.setExtractor("border-top",Ae("top")),e.setExtractor("border-right",Ae("right")),e.setExtractor("border-bottom",Ae("bottom")),e.setExtractor("border-left",Ae("left")),e.setExtractor("border-top-color","border.color.top"),e.setExtractor("border-right-color","border.color.right"),e.setExtractor("border-bottom-color","border.color.bottom"),e.setExtractor("border-left-color","border.color.left"),e.setExtractor("border-top-width","border.width.top"),e.setExtractor("border-right-width","border.width.right"),e.setExtractor("border-bottom-width","border.width.bottom"),e.setExtractor("border-left-width","border.width.left"),e.setExtractor("border-top-style","border.style.top"),e.setExtractor("border-right-style","border.style.right"),e.setExtractor("border-bottom-style","border.style.bottom"),e.setExtractor("border-left-style","border.style.left"),e.setReducer("border-color",fe("border-color")),e.setReducer("border-style",fe("border-style")),e.setReducer("border-width",fe("border-width")),e.setReducer("border-top",Ee("top")),e.setReducer("border-right",Ee("right")),e.setReducer("border-bottom",Ee("bottom")),e.setReducer("border-left",Ee("left")),e.setReducer("border",function(){return t=>{const o=Te(t,"top"),i=Te(t,"right"),s=Te(t,"bottom"),r=Te(t,"left"),n=[o,i,s,r],a={width:e(n,"width"),style:e(n,"style"),color:e(n,"color")},c=Se(a,"all");if(c.length)return c;return[...Object.entries(a).reduce((e,[t,o])=>(o&&(e.push(["border-"+t,o]),n.forEach(e=>e[t]=null)),e),[]),...Se(o,"top"),...Se(i,"right"),...Se(s,"bottom"),...Se(r,"left")]};function e(e,t){return e.map(e=>e[t]).reduce((e,t)=>e==t?e:null)}}()),e.setStyleRelation("border",["border-color","border-style","border-width","border-top","border-right","border-bottom","border-left","border-top-color","border-right-color","border-bottom-color","border-left-color","border-top-style","border-right-style","border-bottom-style","border-left-style","border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-color",["border-top-color","border-right-color","border-bottom-color","border-left-color"]),e.setStyleRelation("border-style",["border-top-style","border-right-style","border-bottom-style","border-left-style"]),e.setStyleRelation("border-width",["border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-top",["border-top-color","border-top-style","border-top-width"]),e.setStyleRelation("border-right",["border-right-color","border-right-style","border-right-width"]),e.setStyleRelation("border-bottom",["border-bottom-color","border-bottom-style","border-bottom-width"]),e.setStyleRelation("border-left",["border-left-color","border-left-style","border-left-width"])}function ye(e){const{color:t,style:o,width:i}=Ce(e);return{path:"border",value:{color:ge(t),style:ge(o),width:ge(i)}}}function je(e){return t=>{const{color:o,style:i,width:s}=Ce(t),r={};return void 0!==o&&(r.color={[e]:o}),void 0!==i&&(r.style={[e]:i}),void 0!==s&&(r.width={[e]:s}),{path:"border",value:r}}}function xe(e){return t=>({path:"border",value:Pe(t,e)})}function Pe(e,t){return{[t]:ge(e)}}function Oe(e,t){return o=>({path:"border",value:{[e]:{[t]:o}}})}function Ae(e){return(t,o)=>{if(o.border)return Te(o.border,e)}}function Te(e,t){const o={};return e.width&&e.width[t]&&(o.width=e.width[t]),e.style&&e.style[t]&&(o.style=e.style[t]),e.color&&e.color[t]&&(o.color=e.color[t]),o}function Ce(e){const t={},o=be(e);for(const e of o)ie(e)||/thin|medium|thick/.test(e)?t.width=e:te(e)?t.style=e:t.color=e;return t}function Ee(e){return t=>Se(t,e)}function Se(e,t){const o=[];if(e&&e.width&&o.push("width"),e&&e.style&&o.push("style"),e&&e.color&&o.push("color"),3==o.length){const i=o.map(t=>e[t]).join(" ");return["all"==t?["border",i]:["border-"+t,i]]}return"all"==t?[]:o.map(o=>[`border-${t}-${o}`,e[o]])}function Re(e){e.setNormalizer("margin",ke("margin")),e.setNormalizer("margin-top",e=>({path:"margin.top",value:e})),e.setNormalizer("margin-right",e=>({path:"margin.right",value:e})),e.setNormalizer("margin-bottom",e=>({path:"margin.bottom",value:e})),e.setNormalizer("margin-left",e=>({path:"margin.left",value:e})),e.setReducer("margin",fe("margin")),e.setStyleRelation("margin",["margin-top","margin-right","margin-bottom","margin-left"])}function Me(e){e.setNormalizer("padding",ke("padding")),e.setNormalizer("padding-top",e=>({path:"padding.top",value:e})),e.setNormalizer("padding-right",e=>({path:"padding.right",value:e})),e.setNormalizer("padding-bottom",e=>({path:"padding.bottom",value:e})),e.setNormalizer("padding-left",e=>({path:"padding.left",value:e})),e.setReducer("padding",fe("padding")),e.setStyleRelation("padding",["padding-top","padding-right","padding-bottom","padding-left"])}},"./src/enter.js":function(e,t,o){"use strict";o.r(t),o.d(t,"Enter",(function(){return i.a})),o.d(t,"ShiftEnter",(function(){return u}));var i=o("./packages/ckeditor5-enter/src/enter.js"),s=o("./packages/ckeditor5-core/src/command.js"),r=o("./packages/ckeditor5-enter/src/utils.js");class n extends s.a{execute(){const e=this.editor.model,t=e.document;e.change(o=>{!function(e,t,o){const i=o.isCollapsed,s=o.getFirstRange(),n=s.start.parent,c=s.end.parent,l=n==c;if(i){const i=Object(r.a)(e.schema,o.getAttributes());a(e,t,s.end),t.removeSelectionAttribute(o.getAttributeKeys()),t.setSelectionAttribute(i)}else{const i=!(s.start.isAtStart&&s.end.isAtEnd);e.deleteContent(o,{leaveUnmerged:i}),l?a(e,t,o.focus):i&&t.setSelection(c,0)}}(e,o,t.selection),this.fire("afterExecute",{writer:o})})}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const o=t.anchor;if(!o||!e.checkChild(o,"softBreak"))return!1;const i=t.getFirstRange(),s=i.start.parent,r=i.end.parent;if((c(s,e)||c(r,e))&&s!==r)return!1;return!0}(e.schema,t.selection)}}function a(e,t,o){const i=t.createElement("softBreak");e.insertContent(i,o),t.setSelection(i,"after")}function c(e,t){return!e.is("rootElement")&&(t.isLimit(e)||c(e.parent,t))}var l=o("./packages/ckeditor5-enter/src/enterobserver.js"),d=o("./packages/ckeditor5-core/src/plugin.js");class u extends d.a{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,o=e.conversion,i=e.editing.view,s=i.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),o.for("upcast").elementToElement({model:"softBreak",view:"br"}),o.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),i.addObserver(l.a),e.commands.add("shiftEnter",new n(e)),this.listenTo(s,"enter",(t,o)=>{o.preventDefault(),o.isSoft&&(e.execute("shiftEnter"),i.scrollToTheSelection())},{priority:"low"})}}},"./src/paragraph.js":function(e,t,o){"use strict";o.r(t),o.d(t,"Paragraph",(function(){return l})),o.d(t,"ParagraphButtonUI",(function(){return u}));var i=o("./packages/ckeditor5-core/src/command.js"),s=o("./packages/ckeditor5-utils/src/first.js");class r extends i.a{refresh(){const e=this.editor.model,t=e.document,o=Object(s.a)(t.selection.getSelectedBlocks());this.value=!!o&&o.is("element","paragraph"),this.isEnabled=!!o&&n(o,e.schema)}execute(e={}){const t=this.editor.model,o=t.document;t.change(i=>{const s=(e.selection||o.selection).getSelectedBlocks();for(const e of s)!e.is("element","paragraph")&&n(e,t.schema)&&i.rename(e,"paragraph")})}}function n(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class a extends i.a{execute(e){const t=this.editor.model;let o=e.position;t.change(e=>{const i=e.createElement("paragraph");if(!t.schema.checkChild(o.parent,i)){const s=t.schema.findAllowedParent(o,i);if(!s)return;o=e.split(o,s).position}t.insertContent(i,o),e.setSelection(i,"in")})}}var c=o("./packages/ckeditor5-core/src/plugin.js");class l extends c.a{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new r(e)),e.commands.add("insertParagraph",new a(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>l.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}l.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);var d=o("./packages/ckeditor5-ui/src/button/buttonview.js");class u extends c.a{init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("paragraph",o=>{const i=new d.a(o),s=e.commands.get("paragraph");return i.label=t("Paragraph"),i.icon='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.5 5.5H7v5h3.5a2.5 2.5 0 1 0 0-5zM5 3h6.5v.025a5 5 0 0 1 0 9.95V13H7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/></svg>',i.tooltip=!0,i.isToggleable=!0,i.bind("isEnabled").to(s),i.bind("isOn").to(s,"value"),i.on("execute",()=>{e.execute("paragraph")}),i})}}},"./src/select-all.js":function(e,t,o){"use strict";o.r(t),o.d(t,"SelectAll",(function(){return h})),o.d(t,"SelectAllEditing",(function(){return l})),o.d(t,"SelectAllUI",(function(){return u}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-utils/src/keyboard.js"),r=o("./packages/ckeditor5-core/src/command.js");class n extends r.a{constructor(e){super(e),this.affectsData=!1}execute(){const e=this.editor.model,t=e.document.selection;let o=e.schema.getLimitElement(t);if(t.containsEntireContent(o)||!a(e.schema,o))do{if(o=o.parent,!o)return}while(!a(e.schema,o));e.change(e=>{e.setSelection(o,"in")})}}function a(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const c=Object(s.g)("Ctrl+A");class l extends i.a{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new n(e)),this.listenTo(t,"keydown",(t,o)=>{Object(s.a)(o)===c&&(e.execute("selectAll"),o.preventDefault())})}}var d=o("./packages/ckeditor5-ui/src/button/buttonview.js");class u extends i.a{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",t=>{const o=e.commands.get("selectAll"),i=new d.a(t),s=t.t;return i.set({label:s("Select all"),icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M.75 15.5a.75.75 0 0 1 .75.75V18l.008.09A.5.5 0 0 0 2 18.5h1.75a.75.75 0 1 1 0 1.5H1.5l-.144-.007a1.5 1.5 0 0 1-1.35-1.349L0 18.5v-2.25a.75.75 0 0 1 .75-.75zm18.5 0a.75.75 0 0 1 .75.75v2.25l-.007.144a1.5 1.5 0 0 1-1.349 1.35L18.5 20h-2.25a.75.75 0 1 1 0-1.5H18a.5.5 0 0 0 .492-.41L18.5 18v-1.75a.75.75 0 0 1 .75-.75zm-10.45 3c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm.45-5.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5h8.5zM1.3 11c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM1.3 7c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5h-2.5a.75.75 0 1 1 0-1.5h2.5zm-5 0a.75.75 0 1 1 0 1.5h-5.5a.75.75 0 0 1 0-1.5h5.5zm-6.5-5a.75.75 0 0 1 0 1.5H2a.5.5 0 0 0-.492.41L1.5 2v1.75a.75.75 0 0 1-1.5 0V1.5l.007-.144A1.5 1.5 0 0 1 1.356.006L1.5 0h2.25zM18.5 0l.144.007a1.5 1.5 0 0 1 1.35 1.349L20 1.5v2.25a.75.75 0 1 1-1.5 0V2l-.008-.09A.5.5 0 0 0 18 1.5h-1.75a.75.75 0 1 1 0-1.5h2.25zM8.8 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6z"/></svg>',keystroke:"Ctrl+A",tooltip:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",()=>{e.execute("selectAll"),e.editing.view.focus()}),i})}}class h extends i.a{static get requires(){return[l,u]}static get pluginName(){return"SelectAll"}}},"./src/typing.js":function(e,t,o){"use strict";o.r(t),o.d(t,"Typing",(function(){return k})),o.d(t,"Input",(function(){return f})),o.d(t,"Delete",(function(){return m.a})),o.d(t,"TextWatcher",(function(){return v})),o.d(t,"TwoStepCaretMovement",(function(){return j})),o.d(t,"TextTransformation",(function(){return I})),o.d(t,"inlineHighlight",(function(){return W})),o.d(t,"findAttributeRange",(function(){return F})),o.d(t,"getLastTextLine",(function(){return w})),o.d(t,"isNonTypingKeystroke",(function(){return a.b}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-core/src/command.js"),r=o("./packages/ckeditor5-typing/src/utils/changebuffer.js");class n extends s.a{constructor(e,t){super(e),this._buffer=new r.a(e.model,t),this._batches=new WeakSet}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,o=t.document,i=e.text||"",s=i.length,r=e.range?t.createSelection(e.range):o.selection,n=e.resultRange;t.enqueueChange(this._buffer.batch,e=>{this._buffer.lock(),this._batches.add(this._buffer.batch),t.deleteContent(r),i&&t.insertContent(e.createText(i,o.selection.getAttributes()),r),n?e.setSelection(n):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(s)})}}var a=o("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),c=o("./packages/ckeditor5-utils/src/diff.js"),l=o("./packages/ckeditor5-engine/src/view/domconverter.js");function d(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const o=[];let i,s=0;return e.forEach(e=>{"equal"==e?(r(),s++):"insert"==e?(n("insert")?i.values.push(t[s]):(r(),i={type:"insert",index:s,values:[t[s]]}),s++):n("delete")?i.howMany++:(r(),i={type:"delete",index:s,howMany:1})}),r(),o;function r(){i&&(o.push(i),i=null)}function n(e){return i&&i.type==e}}(Object(c.a)(e.oldChildren,e.newChildren,u),e.newChildren);if(t.length>1)return;const o=t[0];return o.values[0]&&o.values[0].is("$text")?o:void 0}function u(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}class h{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if(function(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!d(t))return!0;return!1}(e))this._handleContainerChildrenMutations(e,t);else for(const o of e)this._handleTextMutation(o,t),this._handleTextNodeInsertion(o)}_handleContainerChildrenMutations(e,t){const o=function(e){const t=e.map(e=>e.node).reduce((e,t)=>e.getCommonAncestor(t,{includeSelf:!0}));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find(e=>e.is("containerElement")||e.is("rootElement"))}(e);if(!o)return;const i=this.editor.editing.view.domConverter.mapViewToDom(o),s=new l.a(this.editor.editing.view.document),r=this.editor.data.toModel(s.domToView(i)).getChild(0),n=this.editor.editing.mapper.toModelElement(o);if(!n)return;const a=Array.from(r.getChildren()),d=Array.from(n.getChildren()),u=a[a.length-1],h=d[d.length-1],f=u&&u.is("element","softBreak"),m=h&&!h.is("element","softBreak");f&&m&&a.pop();const k=this.editor.model.schema;if(!p(a,k)||!p(d,k))return;const b=a.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," "),_=d.map(e=>e.is("$text")?e.data:"@").join("").replace(/\u00A0/g," ");if(_===b)return;const w=Object(c.a)(_,b),{firstChangeAt:v,insertions:y,deletions:j}=g(w);let x=null;t&&(x=this.editing.mapper.toModelRange(t.getFirstRange()));const P=b.substr(v,y),O=this.editor.model.createRange(this.editor.model.createPositionAt(n,v),this.editor.model.createPositionAt(n,v+j));this.editor.execute("input",{text:P,range:O,resultRange:x})}_handleTextMutation(e,t){if("text"!=e.type)return;const o=e.newText.replace(/\u00A0/g," "),i=e.oldText.replace(/\u00A0/g," ");if(i===o)return;const s=Object(c.a)(i,o),{firstChangeAt:r,insertions:n,deletions:a}=g(s);let l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));const d=this.editing.view.createPositionAt(e.node,r),u=this.editing.mapper.toModelPosition(d),h=this.editor.model.createRange(u,u.getShiftedBy(a)),p=o.substr(r,n);this.editor.execute("input",{text:p,range:h,resultRange:l})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=d(e),o=this.editing.view.createPositionAt(e.node,t.index),i=this.editing.mapper.toModelPosition(o),s=t.values[0].data;this.editor.execute("input",{text:s.replace(/\u00A0/g," "),range:this.editor.model.createRange(i)})}}function p(e,t){return e.every(e=>t.isInline(e))}function g(e){let t=null,o=null;for(let i=0;i<e.length;i++){"equal"!=e[i]&&(t=null===t?i:t,o=i)}let i=0,s=0;for(let r=t;r<=o;r++)"insert"!=e[r]&&i++,"delete"!=e[r]&&s++;return{insertions:s,deletions:i,firstChangeAt:t}}class f extends i.a{static get pluginName(){return"Input"}init(){const e=this.editor,t=new n(e,e.config.get("typing.undoStep")||20);e.commands.add("input",t),Object(a.a)(e),function(e){e.editing.view.document.on("mutations",(t,o,i)=>{new h(e).handle(o,i)})}(e)}isInput(e){return this.editor.commands.get("input")._batches.has(e)}}var m=o("./packages/ckeditor5-typing/src/delete.js");class k extends i.a{static get requires(){return[f,m.a]}static get pluginName(){return"Typing"}}var b=o("./packages/ckeditor5-utils/src/mix.js"),_=o("./packages/ckeditor5-utils/src/observablemixin.js");function w(e,t){let o=e.start;return{text:Array.from(e.getItems()).reduce((e,i)=>i.is("$text")||i.is("$textProxy")?e+i.data:(o=t.createPositionAfter(i),""),""),range:t.createRange(o,e.end)}}class v{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))}),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",(t,{directChange:o})=>{o&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))}),this.listenTo(e,"change:data",(e,t)=>{"transparent"!=t.type&&this._evaluateTextBeforeSelection("data",{batch:t})})}_evaluateTextBeforeSelection(e,t={}){const o=this.model,i=o.document.selection,s=o.createRange(o.createPositionAt(i.focus.parent,0),i.focus),{text:r,range:n}=w(s,o),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const o=Object.assign(t,{text:r,range:n});"object"==typeof a&&Object.assign(o,a),this.fire("matched:"+e,o)}}}Object(b.a)(v,_.a);var y=o("./packages/ckeditor5-utils/src/keyboard.js");class j extends i.a{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,o=e.editing.view,i=e.locale,s=t.document.selection;this.listenTo(o.document,"arrowKey",(e,t)=>{if(!s.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const o=t.keyCode==y.f.arrowright,r=t.keyCode==y.f.arrowleft;if(!o&&!r)return;const n=i.contentLanguageDirection;let a=!1;a="ltr"===n&&o||"rtl"===n&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()},{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(s,"change:range",(e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&A(s.getFirstPosition(),this.attributes)||this._restoreGravity())})}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,o=this.editor.model.document.selection,i=o.getFirstPosition();return!this._isGravityOverridden&&((!i.isAtStart||!x(o,t))&&(A(i,t)?(O(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,o=this.editor.model,i=o.document.selection,s=i.getFirstPosition();return this._isGravityOverridden?(O(e),this._restoreGravity(),P(o,t,s),!0):s.isAtStart?!!x(i,t)&&(O(e),P(o,t,s),!0):function(e,t){return A(e.getShiftedBy(-1),t)}(s,t)?s.isAtEnd&&!x(i,t)&&A(s,t)?(O(e),P(o,t,s),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change(e=>e.overrideSelectionGravity())}_restoreGravity(){this.editor.model.change(e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null})}}function x(e,t){for(const o of t)if(e.hasAttribute(o))return!0;return!1}function P(e,t,o){const i=o.nodeBefore;e.change(e=>{i?e.setSelectionAttribute(i.getAttributes()):e.removeSelectionAttribute(t)})}function O(e){e.preventDefault()}function A(e,t){const{nodeBefore:o,nodeAfter:i}=e;for(const e of t){const t=o?o.getAttribute(e):void 0;if((i?i.getAttribute(e):void 0)!==t)return!0}return!1}var T=o("./node_modules/lodash-es/toString.js"),C=/[\\^$.*+?()[\]{}|]/g,E=RegExp(C.source);var S=function(e){return(e=Object(T.a)(e))&&E.test(e)?e.replace(C,"\\$&"):e};const R={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"â„¢"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"â…“",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"â…”",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"â†"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:B('"'),to:[null,"“",null,"â€"]},quotesSecondary:{from:B("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:B("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:B('"'),to:[null,"“",null,"â€"]},quotesPrimaryPl:{from:B('"'),to:[null,"„",null,"â€"]},quotesSecondaryPl:{from:B("'"),to:[null,"‚",null,"’"]}},M={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},N=["symbols","mathematical","typography","quotes"];class I extends i.a{static get requires(){return["Delete","Input"]}static get pluginName(){return"TextTransformation"}constructor(e){super(e),e.config.define("typing",{transformations:{include:N}})}init(){const e=this.editor.model.document.selection;e.on("change:range",()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")}),this._enableTransformationWatchers()}_enableTransformationWatchers(){const e=this.editor,t=e.model,o=e.plugins.get("Input"),i=e.plugins.get("Delete"),s=function(e){const t=e.extra||[],o=e.remove||[],i=e=>!o.includes(e);return function(e){const t=new Set;for(const o of e)if(M[o])for(const e of M[o])t.add(e);else t.add(o);return Array.from(t)}(e.include.concat(t).filter(i)).filter(i).map(e=>R[e]||e).map(e=>({from:z(e.from),to:V(e.to)}))}(e.config.get("typing.transformations")),r=new v(e.model,e=>{for(const t of s){if(t.from.test(e))return{normalizedTransformation:t}}});r.on("matched:data",(e,s)=>{if(!o.isInput(s.batch))return;const{from:r,to:n}=s.normalizedTransformation,a=r.exec(s.text),c=n(a.slice(1)),l=s.range;let d=a.index;t.enqueueChange(e=>{for(let o=1;o<a.length;o++){const i=a[o],s=c[o-1];if(null==s){d+=i.length;continue}const r=l.start.getShiftedBy(d),n=t.createRange(r,r.getShiftedBy(i.length)),u=D(r);t.insertContent(e.createText(s,u),n),d+=s.length}t.enqueueChange(()=>{i.requestUndoOnBackspace()})})}),r.bind("isEnabled").to(this)}}function z(e){return"string"==typeof e?new RegExp(`(${S(e)})$`):e}function V(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function D(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function B(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function F(e,t,o,i){return i.createRange(L(e,t,o,!0,i),L(e,t,o,!1,i))}function L(e,t,o,i,s){let r=e.textNode||(i?e.nodeBefore:e.nodeAfter),n=null;for(;r&&r.getAttribute(t)==o;)n=r,r=i?r.previousSibling:r.nextSibling;return n?s.createPositionAt(n,i?"before":"after"):e}function W(e,t,o,i){const s=e.editing.view,r=new Set;s.document.registerPostFixer(s=>{const n=e.model.document.selection;let a=!1;if(n.hasAttribute(t)){const c=F(n.getFirstPosition(),t,n.getAttribute(t),e.model),l=e.editing.mapper.toViewRange(c);for(const e of l.getItems())e.is("element",o)&&!e.hasClass(i)&&(s.addClass(i,e),r.add(e),a=!0)}return a}),e.conversion.for("editingDowncast").add(e=>{function t(){s.change(e=>{for(const t of r.values())e.removeClass(i,t),r.delete(t)})}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})})}},"./src/ui.js":function(e,t,o){"use strict";o.r(t),o.d(t,"clickOutsideHandler",(function(){return i.a})),o.d(t,"injectCssTransitionDisabler",(function(){return s})),o.d(t,"submitHandler",(function(){return r})),o.d(t,"BodyCollection",(function(){return l})),o.d(t,"ButtonView",(function(){return d.a})),o.d(t,"SwitchButtonView",(function(){return u.a})),o.d(t,"getLocalizedColorOptions",(function(){return h})),o.d(t,"normalizeColorOptions",(function(){return p})),o.d(t,"normalizeSingleColorDefinition",(function(){return g})),o.d(t,"ColorGridView",(function(){return w})),o.d(t,"ColorTileView",(function(){return m})),o.d(t,"DropdownButtonView",(function(){return v.a})),o.d(t,"SplitButtonView",(function(){return j})),o.d(t,"createDropdown",(function(){return x.c})),o.d(t,"addToolbarToDropdown",(function(){return x.b})),o.d(t,"addListToDropdown",(function(){return x.a})),o.d(t,"EditorUIView",(function(){return P})),o.d(t,"BoxedEditorUIView",(function(){return T})),o.d(t,"InlineEditableUIView",(function(){return E})),o.d(t,"FormHeaderView",(function(){return S})),o.d(t,"FocusCycler",(function(){return b.a})),o.d(t,"IconView",(function(){return R.a})),o.d(t,"InputTextView",(function(){return M})),o.d(t,"IframeView",(function(){return N})),o.d(t,"LabelView",(function(){return A})),o.d(t,"LabeledFieldView",(function(){return I})),o.d(t,"createLabeledInputText",(function(){return z})),o.d(t,"createLabeledDropdown",(function(){return V})),o.d(t,"ListItemView",(function(){return D.a})),o.d(t,"ListView",(function(){return B.a})),o.d(t,"Notification",(function(){return L})),o.d(t,"Model",(function(){return $})),o.d(t,"BalloonPanelView",(function(){return U.a})),o.d(t,"ContextualBalloon",(function(){return K.a})),o.d(t,"StickyPanelView",(function(){return X})),o.d(t,"TooltipView",(function(){return Z.a})),o.d(t,"Template",(function(){return n.a})),o.d(t,"ToolbarView",(function(){return Q.a})),o.d(t,"ToolbarSeparatorView",(function(){return ee.a})),o.d(t,"enableToolbarKeyboardFocus",(function(){return te})),o.d(t,"normalizeToolbarConfig",(function(){return oe.a})),o.d(t,"BalloonToolbar",(function(){return ce})),o.d(t,"BlockToolbar",(function(){return fe})),o.d(t,"View",(function(){return f.a})),o.d(t,"ViewCollection",(function(){return a.a}));var i=o("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js");function s(e){e.set("_isCssTransitionsDisabled",!1),e.disableCssTransitions=()=>{e._isCssTransitionsDisabled=!0},e.enableCssTransitions=()=>{e._isCssTransitionsDisabled=!1},e.extendTemplate({attributes:{class:[e.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}function r({view:e}){e.listenTo(e.element,"submit",(t,o)=>{o.preventDefault(),e.fire("submit")},{useCapture:!0})}var n=o("./packages/ckeditor5-ui/src/template.js"),a=o("./packages/ckeditor5-ui/src/viewcollection.js"),c=o("./packages/ckeditor5-utils/src/dom/createelement.js");class l extends a.a{constructor(e,t=[]){super(t),this.locale=e}attachToDom(){this._bodyCollectionContainer=new n.a({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection},children:this}).render();let e=document.querySelector(".ck-body-wrapper");e||(e=Object(c.a)(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(e)),e.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();const e=document.querySelector(".ck-body-wrapper");e&&0==e.childElementCount&&e.remove()}}var d=o("./packages/ckeditor5-ui/src/button/buttonview.js"),u=o("./packages/ckeditor5-ui/src/button/switchbuttonview.js");function h(e,t){const o=e.t,i={Black:o("Black"),"Dim grey":o("Dim grey"),Grey:o("Grey"),"Light grey":o("Light grey"),White:o("White"),Red:o("Red"),Orange:o("Orange"),Yellow:o("Yellow"),"Light green":o("Light green"),Green:o("Green"),Aquamarine:o("Aquamarine"),Turquoise:o("Turquoise"),"Light blue":o("Light blue"),Blue:o("Blue"),Purple:o("Purple")};return t.map(e=>{const t=i[e.label];return t&&t!=e.label&&(e.label=t),e})}function p(e){return e.map(g).filter(e=>!!e)}function g(e){return"string"==typeof e?{model:e,label:e,hasBorder:!1,view:{name:"span",styles:{color:e}}}:{model:e.color,label:e.label||e.color,hasBorder:void 0!==e.hasBorder&&e.hasBorder,view:{name:"span",styles:{color:""+e.color}}}}var f=o("./packages/ckeditor5-ui/src/view.js");class m extends d.a{constructor(e){super(e);const t=this.bindTemplate;this.set("color"),this.set("hasBorder"),this.icon='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M16.935 5.328a2 2 0 0 1 0 2.829l-7.778 7.778a2 2 0 0 1-2.829 0L3.5 13.107a1.999 1.999 0 1 1 2.828-2.829l.707.707a1 1 0 0 0 1.414 0l5.658-5.657a2 2 0 0 1 2.828 0z"/><path d="M14.814 6.035 8.448 12.4a1 1 0 0 1-1.414 0l-1.413-1.415A1 1 0 1 0 4.207 12.4l2.829 2.829a1 1 0 0 0 1.414 0l7.778-7.778a1 1 0 1 0-1.414-1.415z"/></svg>',this.extendTemplate({attributes:{style:{backgroundColor:t.to("color")},class:["ck","ck-color-grid__tile",t.if("hasBorder","ck-color-table__color-tile_bordered")]}})}render(){super.render(),this.iconView.fillColor="hsl(0, 0%, 100%)"}}var k=o("./packages/ckeditor5-utils/src/focustracker.js"),b=o("./packages/ckeditor5-ui/src/focuscycler.js"),_=o("./packages/ckeditor5-utils/src/keystrokehandler.js");o("./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css");class w extends f.a{constructor(e,t){super(e);const o=t&&t.colorDefinitions||[],i={};t&&t.columns&&(i.gridTemplateColumns=`repeat( ${t.columns}, 1fr)`),this.set("selectedColor"),this.items=this.createCollection(),this.focusTracker=new k.a,this.keystrokes=new _.a,this._focusCycler=new b.a({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowleft",focusNext:"arrowright"}}),this.items.on("add",(e,t)=>{t.isOn=t.color===this.selectedColor}),o.forEach(e=>{const t=new m;t.set({color:e.color,label:e.label,tooltip:!0,hasBorder:e.options.hasBorder}),t.on("execute",()=>{this.fire("execute",{value:e.color,hasBorder:e.options.hasBorder,label:e.label})}),this.items.add(t)}),this.setTemplate({tag:"div",children:this.items,attributes:{class:["ck","ck-color-grid"],style:i}}),this.on("change:selectedColor",(e,t,o)=>{for(const e of this.items)e.isOn=e.color===o})}focus(){this.items.length&&this.items.first.focus()}focusLast(){this.items.length&&this.items.last.focus()}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",(e,t)=>{this.focusTracker.add(t.element)}),this.items.on("remove",(e,t)=>{this.focusTracker.remove(t.element)}),this.keystrokes.listenTo(this.element)}}var v=o("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),y=o("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg");o("./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css");class j extends f.a{constructor(e){super(e);const t=this.bindTemplate;this.set("class"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isToggleable",!1),this.set("isVisible",!0),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.actionView=this._createActionView(),this.arrowView=this._createArrowView(),this.keystrokes=new _.a,this.focusTracker=new k.a,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",t.to("class"),t.if("isVisible","ck-hidden",e=>!e),this.arrowView.bindTemplate.if("isOn","ck-splitbutton_open")]},children:this.children})}render(){super.render(),this.children.add(this.actionView),this.children.add(this.arrowView),this.focusTracker.add(this.actionView.element),this.focusTracker.add(this.arrowView.element),this.keystrokes.listenTo(this.element),this.keystrokes.set("arrowright",(e,t)=>{this.focusTracker.focusedElement===this.actionView.element&&(this.arrowView.focus(),t())}),this.keystrokes.set("arrowleft",(e,t)=>{this.focusTracker.focusedElement===this.arrowView.element&&(this.actionView.focus(),t())})}focus(){this.actionView.focus()}_createActionView(){const e=new d.a;return e.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),e.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),e.delegate("execute").to(this),e}_createArrowView(){const e=new d.a,t=e.bindTemplate;return e.icon=y.a,e.extendTemplate({attributes:{class:"ck-splitbutton__arrow","aria-haspopup":!0,"aria-expanded":t.to("isOn",e=>String(e))}}),e.bind("isEnabled").to(this),e.delegate("execute").to(this,"open"),e}}var x=o("./packages/ckeditor5-ui/src/dropdown/utils.js");o("./packages/ckeditor5-ui/theme/components/editorui/editorui.css");class P extends f.a{constructor(e){super(e),this.body=new l(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}var O=o("./packages/ckeditor5-utils/src/uid.js");o("./packages/ckeditor5-ui/theme/components/label/label.css");class A extends f.a{constructor(e){super(e),this.set("text"),this.set("for"),this.id="ck-editor__label_"+Object(O.a)();const t=this.bindTemplate;this.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],id:this.id,for:t.to("for")},children:[{text:t.to("text")}]})}}class T extends P{constructor(e){super(e),this.top=this.createCollection(),this.main=this.createCollection(),this._voiceLabelView=this._createVoiceLabel(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-editor","ck-rounded-corners"],role:"application",dir:e.uiLanguageDirection,lang:e.uiLanguage,"aria-labelledby":this._voiceLabelView.id},children:[this._voiceLabelView,{tag:"div",attributes:{class:["ck","ck-editor__top","ck-reset_all"],role:"presentation"},children:this.top},{tag:"div",attributes:{class:["ck","ck-editor__main"],role:"presentation"},children:this.main}]})}_createVoiceLabel(){const e=this.t,t=new A;return t.text=e("Rich Text Editor"),t.extendTemplate({attributes:{class:"ck-voice-label"}}),t}}class C extends f.a{constructor(e,t,o){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:e.contentLanguage,dir:e.contentLanguageDirection}}),this.name=null,this.set("isFocused",!1),this._editableElement=o,this._hasExternalElement=!!this._editableElement,this._editingView=t}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",()=>this._updateIsFocusedClasses()),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}_updateIsFocusedClasses(){const e=this._editingView;function t(t){e.change(o=>{const i=e.document.getRoot(t.name);o.addClass(t.isFocused?"ck-focused":"ck-blurred",i),o.removeClass(t.isFocused?"ck-blurred":"ck-focused",i)})}e.isRenderingInProgress?function o(i){e.once("change:isRenderingInProgress",(e,s,r)=>{r?o(i):t(i)})}(this):t(this)}}class E extends C{constructor(e,t,o){super(e,t,o),this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}})}render(){super.render();const e=this._editingView,t=this.t;e.change(o=>{const i=e.document.getRoot(this.name);o.setAttribute("aria-label",t("Rich Text Editor, %0",this.name),i)})}}o("./packages/ckeditor5-ui/theme/components/formheader/formheader.css");class S extends f.a{constructor(e,t={}){super(e);const o=this.bindTemplate;this.set("label",t.label||""),this.set("class",t.class||null),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__header",o.to("class")]},children:this.children});const i=new f.a(e);i.setTemplate({tag:"span",attributes:{class:["ck","ck-form__header__label"]},children:[{text:o.to("label")}]}),this.children.add(i)}}var R=o("./packages/ckeditor5-ui/src/icon/iconview.js");o("./packages/ckeditor5-ui/theme/components/inputtext/inputtext.css");class M extends f.a{constructor(e){super(e),this.set("value"),this.set("id"),this.set("placeholder"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById"),this.focusTracker=new k.a,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{type:"text",class:["ck","ck-input","ck-input-text",t.if("isFocused","ck-input_focused"),t.if("isEmpty","ck-input-text_empty"),t.if("hasError","ck-error")],id:t.to("id"),placeholder:t.to("placeholder"),readonly:t.to("isReadOnly"),"aria-invalid":t.if("hasError",!0),"aria-describedby":t.to("ariaDescribedById")},on:{input:t.to((...e)=>{this.fire("input",...e),this._updateIsEmpty()}),change:t.to(this._updateIsEmpty.bind(this))}})}render(){super.render(),this.focusTracker.add(this.element),this._setDomElementValue(this.value),this._updateIsEmpty(),this.on("change:value",(e,t,o)=>{this._setDomElementValue(o),this._updateIsEmpty()})}select(){this.element.select()}focus(){this.element.focus()}_updateIsEmpty(){this.isEmpty=!this.element.value}_setDomElementValue(e){this.element.value=e||0===e?e:""}}class N extends f.a{constructor(e){super(e);const t=this.bindTemplate;this.setTemplate({tag:"iframe",attributes:{class:["ck","ck-reset_all"],sandbox:"allow-same-origin allow-scripts"},on:{load:t.to("loaded")}})}render(){return new Promise(e=>{this.on("loaded",e),super.render()})}}o("./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css");class I extends f.a{constructor(e,t){super(e);const o="ck-labeled-field-view-"+Object(O.a)(),i="ck-labeled-field-view-status-"+Object(O.a)();this.fieldView=t(this,o,i),this.set("label"),this.set("isEnabled",!0),this.set("isEmpty",!0),this.set("isFocused",!1),this.set("errorText",null),this.set("infoText",null),this.set("class"),this.set("placeholder"),this.labelView=this._createLabelView(o),this.statusView=this._createStatusView(i),this.bind("_statusText").to(this,"errorText",this,"infoText",(e,t)=>e||t);const s=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",s.to("class"),s.if("isEnabled","ck-disabled",e=>!e),s.if("isEmpty","ck-labeled-field-view_empty"),s.if("isFocused","ck-labeled-field-view_focused"),s.if("placeholder","ck-labeled-field-view_placeholder"),s.if("errorText","ck-error")]},children:[{tag:"div",attributes:{class:["ck","ck-labeled-field-view__input-wrapper"]},children:[this.fieldView,this.labelView]},this.statusView]})}_createLabelView(e){const t=new A(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}_createStatusView(e){const t=new f.a(this.locale),o=this.bindTemplate;return t.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view__status",o.if("errorText","ck-labeled-field-view__status_error"),o.if("_statusText","ck-hidden",e=>!e)],id:e,role:o.if("errorText","alert")},children:[{text:o.to("_statusText")}]}),t}focus(){this.fieldView.focus()}}function z(e,t,o){const i=new M(e.locale);return i.set({id:t,ariaDescribedById:o}),i.bind("isReadOnly").to(e,"isEnabled",e=>!e),i.bind("hasError").to(e,"errorText",e=>!!e),i.on("input",()=>{e.errorText=null}),e.bind("isEmpty","isFocused","placeholder").to(i),i}function V(e,t,o){const i=Object(x.c)(e.locale);return i.set({id:t,ariaDescribedById:o}),i.bind("isEnabled").to(e),i}var D=o("./packages/ckeditor5-ui/src/list/listitemview.js"),B=o("./packages/ckeditor5-ui/src/list/listview.js"),F=o("./packages/ckeditor5-core/src/contextplugin.js");class L extends F.a{static get pluginName(){return"Notification"}init(){this.on("show:warning",(e,t)=>{window.alert(t.message)},{priority:"lowest"})}showSuccess(e,t={}){this._showNotification({message:e,type:"success",namespace:t.namespace,title:t.title})}showInfo(e,t={}){this._showNotification({message:e,type:"info",namespace:t.namespace,title:t.title})}showWarning(e,t={}){this._showNotification({message:e,type:"warning",namespace:t.namespace,title:t.title})}_showNotification(e){const t="show:"+e.type+(e.namespace?":"+e.namespace:"");this.fire(t,{message:e.message,type:e.type,title:e.title||""})}}var W=o("./packages/ckeditor5-utils/src/mix.js"),H=o("./packages/ckeditor5-utils/src/observablemixin.js"),q=o("./node_modules/lodash-es/assignIn.js");class ${constructor(e,t){t&&Object(q.a)(this,t),e&&this.set(e)}}Object(W.a)($,H.a);var U=o("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),K=o("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),G=o("./packages/ckeditor5-utils/src/dom/global.js"),J=o("./packages/ckeditor5-utils/src/dom/tounit.js");o("./packages/ckeditor5-ui/theme/components/panel/stickypanel.css");const Y=Object(J.a)("px");class X extends f.a{constructor(e){super(e);const t=this.bindTemplate;this.set("isActive",!1),this.set("isSticky",!1),this.set("limiterElement",null),this.set("limiterBottomOffset",50),this.set("viewportTopOffset",0),this.set("_marginLeft",null),this.set("_isStickyToTheLimiter",!1),this.set("_hasViewportTopOffset",!1),this.content=this.createCollection(),this._contentPanelPlaceholder=new n.a({tag:"div",attributes:{class:["ck","ck-sticky-panel__placeholder"],style:{display:t.to("isSticky",e=>e?"block":"none"),height:t.to("isSticky",e=>e?Y(this._panelRect.height):null)}}}).render(),this._contentPanel=new n.a({tag:"div",attributes:{class:["ck","ck-sticky-panel__content",t.if("isSticky","ck-sticky-panel__content_sticky"),t.if("_isStickyToTheLimiter","ck-sticky-panel__content_sticky_bottom-limit")],style:{width:t.to("isSticky",e=>e?Y(this._contentPanelPlaceholder.getBoundingClientRect().width):null),top:t.to("_hasViewportTopOffset",e=>e?Y(this.viewportTopOffset):null),bottom:t.to("_isStickyToTheLimiter",e=>e?Y(this.limiterBottomOffset):null),marginLeft:t.to("_marginLeft")}},children:this.content}).render(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-sticky-panel"]},children:[this._contentPanelPlaceholder,this._contentPanel]})}render(){super.render(),this._checkIfShouldBeSticky(),this.listenTo(G.a.window,"scroll",()=>{this._checkIfShouldBeSticky()}),this.listenTo(this,"change:isActive",()=>{this._checkIfShouldBeSticky()})}_checkIfShouldBeSticky(){const e=this._panelRect=this._contentPanel.getBoundingClientRect();let t;this.limiterElement?(t=this._limiterRect=this.limiterElement.getBoundingClientRect(),this.isSticky=this.isActive&&t.top<this.viewportTopOffset&&this._panelRect.height+this.limiterBottomOffset<t.height):this.isSticky=!1,this.isSticky?(this._isStickyToTheLimiter=t.bottom<e.height+this.limiterBottomOffset+this.viewportTopOffset,this._hasViewportTopOffset=!this._isStickyToTheLimiter&&!!this.viewportTopOffset,this._marginLeft=this._isStickyToTheLimiter?null:Y(-G.a.window.scrollX)):(this._isStickyToTheLimiter=!1,this._hasViewportTopOffset=!1,this._marginLeft=null)}}var Z=o("./packages/ckeditor5-ui/src/tooltip/tooltipview.js"),Q=o("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),ee=o("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js");function te({origin:e,originKeystrokeHandler:t,originFocusTracker:o,toolbar:i,beforeFocus:s,afterBlur:r}){o.add(i.element),t.set("Alt+F10",(e,t)=>{o.isFocused&&!i.focusTracker.isFocused&&(s&&s(),i.focus(),t())}),i.keystrokes.set("Esc",(t,o)=>{i.focusTracker.isFocused&&(e.focus(),r&&r(),o())})}var oe=o("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),ie=o("./packages/ckeditor5-core/src/plugin.js"),se=o("./packages/ckeditor5-utils/src/dom/rect.js"),re=o("./node_modules/lodash-es/debounce.js"),ne=o("./packages/ckeditor5-utils/src/dom/resizeobserver.js");const ae=Object(J.a)("px");class ce extends ie.a{static get pluginName(){return"BalloonToolbar"}static get requires(){return[K.a]}constructor(e){super(e),this._balloonConfig=Object(oe.a)(e.config.get("balloonToolbar")),this.toolbarView=this._createToolbarView(),this.focusTracker=new k.a,e.ui.once("ready",()=>{this.focusTracker.add(e.ui.getEditableElement()),this.focusTracker.add(this.toolbarView.element)}),this._resizeObserver=null,this._balloon=e.plugins.get(K.a),this._fireSelectionChangeDebounced=Object(re.a)(()=>this.fire("_selectionChangeDebounced"),200),this.decorate("show")}init(){const e=this.editor,t=e.model.document.selection;this.listenTo(this.focusTracker,"change:isFocused",(e,t,o)=>{const i=this._balloon.visibleView===this.toolbarView;!o&&i?this.hide():o&&this.show()}),this.listenTo(t,"change:range",(e,o)=>{(o.directChange||t.isCollapsed)&&this.hide(),this._fireSelectionChangeDebounced()}),this.listenTo(this,"_selectionChangeDebounced",()=>{this.editor.editing.view.document.isFocused&&this.show()}),this._balloonConfig.shouldNotGroupWhenFull||this.listenTo(e,"ready",()=>{const t=e.ui.view.editable.element;this._resizeObserver=new ne.a(t,()=>{this.toolbarView.maxWidth=ae(.9*new se.a(t).width)})}),this.listenTo(this.toolbarView,"groupedItemsUpdate",()=>{this._updatePosition()})}afterInit(){const e=this.editor.ui.componentFactory;this.toolbarView.fillFromConfig(this._balloonConfig,e)}_createToolbarView(){const e=!this._balloonConfig.shouldNotGroupWhenFull,t=new Q.a(this.editor.locale,{shouldGroupWhenFull:e,isFloating:!0});return t.render(),t}show(){const e=this.editor,t=e.model.document.selection,o=e.model.schema;this._balloon.hasView(this.toolbarView)||t.isCollapsed||function(e,t){if(1===e.rangeCount)return!1;return[...e.getRanges()].every(e=>{const o=e.getContainedElement();return o&&t.isSelectable(o)})}(t,o)||Array.from(this.toolbarView.items).every(e=>void 0!==e.isEnabled&&!e.isEnabled)||(this.listenTo(this.editor.ui,"update",()=>{this._updatePosition()}),this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"}))}hide(){this._balloon.hasView(this.toolbarView)&&(this.stopListening(this.editor.ui,"update"),this._balloon.remove(this.toolbarView))}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document,o=t.selection,i=t.selection.isBackward;return{target:()=>{const t=i?o.getFirstRange():o.getLastRange(),s=se.a.getDomRangeRects(e.domConverter.viewRangeToDom(t));return i?s[0]:(s.length>1&&0===s[s.length-1].width&&s.pop(),s[s.length-1])},positions:le(i)}}_updatePosition(){this._balloon.updatePosition(this._getBalloonPositionData())}destroy(){super.destroy(),this.stopListening(),this._fireSelectionChangeDebounced.cancel(),this.toolbarView.destroy(),this.focusTracker.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}}function le(e){const t=U.a.defaultPositions;return e?[t.northWestArrowSouth,t.northWestArrowSouthWest,t.northWestArrowSouthEast,t.northWestArrowSouthMiddleEast,t.northWestArrowSouthMiddleWest,t.southWestArrowNorth,t.southWestArrowNorthWest,t.southWestArrowNorthEast,t.southWestArrowNorthMiddleWest,t.southWestArrowNorthMiddleEast]:[t.southEastArrowNorth,t.southEastArrowNorthEast,t.southEastArrowNorthWest,t.southEastArrowNorthMiddleEast,t.southEastArrowNorthMiddleWest,t.northEastArrowSouth,t.northEastArrowSouthEast,t.northEastArrowSouthWest,t.northEastArrowSouthMiddleEast,t.northEastArrowSouthMiddleWest]}var de=o("./packages/ckeditor5-core/theme/icons/pilcrow.svg");o("./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css");const ue=Object(J.a)("px");class he extends d.a{constructor(e){super(e);const t=this.bindTemplate;this.isVisible=!1,this.isToggleable=!0,this.set("top",0),this.set("left",0),this.extendTemplate({attributes:{class:"ck-block-toolbar-button",style:{top:t.to("top",e=>ue(e)),left:t.to("left",e=>ue(e))}}})}}var pe=o("./packages/ckeditor5-utils/src/dom/position.js");const ge=Object(J.a)("px");class fe extends ie.a{static get pluginName(){return"BlockToolbar"}constructor(e){super(e),this._blockToolbarConfig=Object(oe.a)(this.editor.config.get("blockToolbar")),this.toolbarView=this._createToolbarView(),this.panelView=this._createPanelView(),this.buttonView=this._createButtonView(),this._resizeObserver=null,Object(i.a)({emitter:this.panelView,contextElements:[this.panelView.element,this.buttonView.element],activator:()=>this.panelView.isVisible,callback:()=>this._hidePanel()})}init(){const e=this.editor;this.listenTo(e.model.document.selection,"change:range",(e,t)=>{t.directChange&&this._hidePanel()}),this.listenTo(e.ui,"update",()=>this._updateButton()),this.listenTo(e,"change:isReadOnly",()=>this._updateButton(),{priority:"low"}),this.listenTo(e.ui.focusTracker,"change:isFocused",()=>this._updateButton()),this.listenTo(this.buttonView,"change:isVisible",(e,t,o)=>{o?this.buttonView.listenTo(window,"resize",()=>this._updateButton()):(this.buttonView.stopListening(window,"resize"),this._hidePanel())})}afterInit(){const e=this.editor.ui.componentFactory,t=this._blockToolbarConfig;this.toolbarView.fillFromConfig(t,e);for(const e of this.toolbarView.items)e.on("execute",()=>this._hidePanel(!0),{priority:"high"});t.shouldNotGroupWhenFull||this.listenTo(this.editor,"ready",()=>{const e=this.editor.ui.view.editable.element;this._resizeObserver=new ne.a(e,()=>{this.toolbarView.maxWidth=this._getToolbarMaxWidth()})})}destroy(){super.destroy(),this.panelView.destroy(),this.buttonView.destroy(),this.toolbarView.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_createToolbarView(){const e=!this._blockToolbarConfig.shouldNotGroupWhenFull,t=new Q.a(this.editor.locale,{shouldGroupWhenFull:e,isFloating:!0});return t.focusTracker.on("change:isFocused",(e,t,o)=>{o||this._hidePanel()}),t}_createPanelView(){const e=this.editor,t=new U.a(e.locale);return t.content.add(this.toolbarView),t.class="ck-toolbar-container",e.ui.view.body.add(t),e.ui.focusTracker.add(t.element),this.toolbarView.keystrokes.set("Esc",(e,t)=>{this._hidePanel(!0),t()}),t}_createButtonView(){const e=this.editor,t=e.t,o=new he(e.locale);return o.set({label:t("Edit block"),icon:de.a,withText:!1}),o.bind("isOn").to(this.panelView,"isVisible"),o.bind("tooltip").to(this.panelView,"isVisible",e=>!e),this.listenTo(o,"execute",()=>{this.panelView.isVisible?this._hidePanel(!0):this._showPanel()}),e.ui.view.body.add(o),e.ui.focusTracker.add(o.element),o}_updateButton(){const e=this.editor,t=e.model,o=e.editing.view;if(!e.ui.focusTracker.isFocused)return void this._hideButton();if(e.isReadOnly)return void this._hideButton();const i=Array.from(t.document.selection.getSelectedBlocks())[0];if(!i||Array.from(this.toolbarView.items).every(e=>!e.isEnabled))return void this._hideButton();const s=o.domConverter.mapViewToDom(e.editing.mapper.toViewElement(i));this.buttonView.isVisible=!0,this._attachButtonToElement(s),this.panelView.isVisible&&this._showPanel()}_hideButton(){this.buttonView.isVisible=!1}_showPanel(){const e=this.panelView.isVisible;this.panelView.show(),this.toolbarView.maxWidth=this._getToolbarMaxWidth(),this.panelView.pin({target:this.buttonView.element,limiter:this.editor.ui.getEditableElement()}),e||this.toolbarView.items.get(0).focus()}_hidePanel(e){this.panelView.isVisible=!1,e&&this.editor.editing.view.focus()}_attachButtonToElement(e){const t=window.getComputedStyle(e),o=new se.a(this.editor.ui.getEditableElement()),i=parseInt(t.paddingTop,10),s=parseInt(t.lineHeight,10)||1.2*parseInt(t.fontSize,10),r=Object(pe.a)({element:this.buttonView.element,target:e,positions:[(e,t)=>{let r;return r="ltr"===this.editor.locale.uiLanguageDirection?o.left-t.width:o.right,{top:e.top+i+(s-t.height)/2,left:r}}]});this.buttonView.top=r.top,this.buttonView.left=r.left}_getToolbarMaxWidth(){const e=this.editor.ui.view.editable.element,t=new se.a(e),o=new se.a(this.buttonView.element),i="rtl"===this.editor.locale.uiLanguageDirection?o.left-t.right+o.width:t.left-o.left;return ge(t.width+i)}}},"./src/undo.js":function(e,t,o){"use strict";o.r(t),o.d(t,"Undo",(function(){return m})),o.d(t,"UndoEditing",(function(){return u})),o.d(t,"UndoUi",(function(){return f}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-core/src/command.js"),r=o("./packages/ckeditor5-engine/src/model/operation/transform.js");class n extends s.a{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",(e,t)=>{t[1]={...t[1]};const o=t[1];o.batchType||(o.batchType="transparent")},{priority:"high"}),this.listenTo(e.data,"set",(e,t)=>{"transparent"===t[1].batchType&&this.clearStack()})}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,o={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:o}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,o){const i=this.editor.model,s=i.document,r=[],n=e.map(e=>e.getTransformedByOperations(o)),l=n.flat();for(const e of n){const t=e.filter(e=>e.root!=s.graveyard).filter(e=>!c(e,l));t.length&&(a(t),r.push(t[0]))}r.length&&i.change(e=>{e.setSelection(r,{backward:t})})}_undo(e,t){const o=this.editor.model,i=o.document;this._createdBatches.add(t);const s=e.operations.slice().filter(e=>e.isDocumentOperation);s.reverse();for(const e of s){const s=e.baseVersion+1,n=Array.from(i.history.getOperations(s)),a=Object(r.a)([e.getReversed()],n,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const s of a)t.addOperation(s),o.applyOperation(s),i.history.setOperationAsUndone(e,s)}}}function a(e){e.sort((e,t)=>e.start.isBefore(t.start)?-1:1);for(let t=1;t<e.length;t++){const o=e[t-1].getJoined(e[t],!0);o&&(t--,e.splice(t,2,o))}}function c(e,t){return t.some(t=>t!==e&&t.containsRange(e,!0))}class l extends n{execute(e=null){const t=e?this._stack.findIndex(t=>t.batch==e):this._stack.length-1,o=this._stack.splice(t,1)[0],i=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(i,()=>{this._undo(o.batch,i);const e=this.editor.model.document.history.getOperations(o.batch.baseVersion);this._restoreSelection(o.selection.ranges,o.selection.isBackward,e),this.fire("revert",o.batch,i)}),this.refresh()}}class d extends n{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch("transparent");this.editor.model.enqueueChange(t,()=>{const o=e.batch.operations[e.batch.operations.length-1].baseVersion+1,i=this.editor.model.document.history.getOperations(o);this._restoreSelection(e.selection.ranges,e.selection.isBackward,i),this._undo(e.batch,t)}),this.refresh()}}class u extends i.a{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new l(e),this._redoCommand=new d(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",(e,t)=>{const o=t[0];if(!o.isDocumentOperation)return;const i=o.batch,s=this._redoCommand._createdBatches.has(i),r=this._undoCommand._createdBatches.has(i);this._batchRegistry.has(i)||"transparent"==i.type&&!s&&!r||(s?this._undoCommand.addBatch(i):r||(this._undoCommand.addBatch(i),this._redoCommand.clearStack()),this._batchRegistry.add(i))},{priority:"highest"}),this.listenTo(this._undoCommand,"revert",(e,t,o)=>{this._redoCommand.addBatch(o)}),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var h=o("./packages/ckeditor5-ui/src/button/buttonview.js"),p='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m5.042 9.367 2.189 1.837a.75.75 0 0 1-.965 1.149l-3.788-3.18a.747.747 0 0 1-.21-.284.75.75 0 0 1 .17-.945L6.23 4.762a.75.75 0 1 1 .964 1.15L4.863 7.866h8.917A.75.75 0 0 1 14 7.9a4 4 0 1 1-1.477 7.718l.344-1.489a2.5 2.5 0 1 0 1.094-4.73l.008-.032H5.042z"/></svg>',g='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.958 9.367-2.189 1.837a.75.75 0 0 0 .965 1.149l3.788-3.18a.747.747 0 0 0 .21-.284.75.75 0 0 0-.17-.945L13.77 4.762a.75.75 0 1 0-.964 1.15l2.331 1.955H6.22A.75.75 0 0 0 6 7.9a4 4 0 1 0 1.477 7.718l-.344-1.489A2.5 2.5 0 1 1 6.039 9.4l-.008-.032h8.927z"/></svg>';class f extends i.a{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,o=e.t,i="ltr"==t.uiLanguageDirection?p:g,s="ltr"==t.uiLanguageDirection?g:p;this._addButton("undo",o("Undo"),"CTRL+Z",i),this._addButton("redo",o("Redo"),"CTRL+Y",s)}_addButton(e,t,o,i){const s=this.editor;s.ui.componentFactory.add(e,r=>{const n=s.commands.get(e),a=new h.a(r);return a.set({label:t,icon:i,keystroke:o,tooltip:!0}),a.bind("isEnabled").to(n,"isEnabled"),this.listenTo(a,"execute",()=>{s.execute(e),s.editing.view.focus()}),a})}}class m extends i.a{static get requires(){return[u,f]}static get pluginName(){return"Undo"}}},"./src/upload.js":function(e,t,o){"use strict";o.r(t),o.d(t,"FileRepository",(function(){return u})),o.d(t,"FileDialogButtonView",(function(){return f})),o.d(t,"Base64UploadAdapter",(function(){return k})),o.d(t,"SimpleUploadAdapter",(function(){return _}));var i=o("./packages/ckeditor5-core/src/plugin.js"),s=o("./packages/ckeditor5-core/src/pendingactions.js"),r=o("./packages/ckeditor5-utils/src/ckeditorerror.js"),n=o("./packages/ckeditor5-utils/src/observablemixin.js"),a=o("./packages/ckeditor5-utils/src/collection.js"),c=o("./packages/ckeditor5-utils/src/mix.js");class l{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise((o,i)=>{t.onload=()=>{const e=t.result;this._data=e,o(e)},t.onerror=()=>{i("error")},t.onabort=()=>{i("aborted")},this._reader.readAsDataURL(e)})}abort(){this._reader.abort()}}Object(c.a)(l,n.a);var d=o("./packages/ckeditor5-utils/src/uid.js");class u extends i.a{static get pluginName(){return"FileRepository"}static get requires(){return[s.a]}init(){this.loaders=new a.a,this.loaders.on("add",()=>this._updatePendingAction()),this.loaders.on("remove",()=>this._updatePendingAction()),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0)}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return Object(r.c)("filerepository-no-upload-adapter"),null;const t=new h(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then(e=>{this._loadersMap.set(e,t)}).catch(()=>{}),t.on("change:uploaded",()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e}),t.on("change:uploadTotal",()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e}),t}destroyLoader(e){const t=e instanceof h?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach((e,o)=>{e===t&&this._loadersMap.delete(o)})}_updatePendingAction(){const e=this.editor.plugins.get(s.a);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,o=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(o(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",o)}}else e.remove(this._pendingAction),this._pendingAction=null}}Object(c.a)(u,n.a);class h{constructor(e,t){this.id=Object(d.a)(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new l,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then(e=>this._filePromiseWrapper?e:null):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new r.a("filerepository-read-wrong-status",this);return this.status="reading",this.file.then(e=>this._reader.read(e)).then(e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e}).catch(e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e})}upload(){if("idle"!=this.status)throw new r.a("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then(()=>this._adapter.upload()).then(e=>(this.uploadResponse=e,this.status="idle",e)).catch(e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e})}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch(()=>{}),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise((o,i)=>{t.rejecter=i,t.isFulfilled=!1,e.then(e=>{t.isFulfilled=!0,o(e)}).catch(e=>{t.isFulfilled=!0,i(e)})}),t}}Object(c.a)(h,n.a);var p=o("./packages/ckeditor5-ui/src/button/buttonview.js"),g=o("./packages/ckeditor5-ui/src/view.js");class f extends g.a{constructor(e){super(e),this.buttonView=new p.a(e),this._fileInputView=new m(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",()=>{this._fileInputView.open()})}focus(){this.buttonView.focus()}}class m extends g.a{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to(()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""})}})}open(){this.element.click()}}class k extends i.a{static get requires(){return[u]}static get pluginName(){return"Base64UploadAdapter"}init(){this.editor.plugins.get(u).createUploadAdapter=e=>new b(e)}}class b{constructor(e){this.loader=e}upload(){return new Promise((e,t)=>{const o=this.reader=new window.FileReader;o.addEventListener("load",()=>{e({default:o.result})}),o.addEventListener("error",e=>{t(e)}),o.addEventListener("abort",()=>{t()}),this.loader.file.then(e=>{o.readAsDataURL(e)})})}abort(){this.reader.abort()}}class _ extends i.a{static get requires(){return[u]}static get pluginName(){return"SimpleUploadAdapter"}init(){const e=this.editor.config.get("simpleUpload");e&&(e.uploadUrl?this.editor.plugins.get(u).createUploadAdapter=t=>new w(t,e):Object(r.c)("simple-upload-adapter-missing-uploadurl"))}}class w{constructor(e,t){this.loader=e,this.options=t}upload(){return this.loader.file.then(e=>new Promise((t,o)=>{this._initRequest(),this._initListeners(t,o,e),this._sendRequest(e)}))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.options.uploadUrl,!0),e.responseType="json"}_initListeners(e,t,o){const i=this.xhr,s=this.loader,r=`Couldn't upload file: ${o.name}.`;i.addEventListener("error",()=>t(r)),i.addEventListener("abort",()=>t()),i.addEventListener("load",()=>{const o=i.response;if(!o||o.error)return t(o&&o.error&&o.error.message?o.error.message:r);const s=o.url?{default:o.url}:o.urls;e({...o,urls:s})}),i.upload&&i.upload.addEventListener("progress",e=>{e.lengthComputable&&(s.uploadTotal=e.total,s.uploaded=e.loaded)})}_sendRequest(e){const t=this.options.headers||{},o=this.options.withCredentials||!1;for(const e of Object.keys(t))this.xhr.setRequestHeader(e,t[e]);this.xhr.withCredentials=o;const i=new FormData;i.append("upload",e),this.xhr.send(i)}}},"./src/utils.js":function(e,t,o){"use strict";o.r(t);var i=o("./packages/ckeditor5-utils/src/index.js");o.d(t,"env",(function(){return i.n})),o.d(t,"diff",(function(){return i.m})),o.d(t,"mix",(function(){return i.A})),o.d(t,"EmitterMixin",(function(){return i.e})),o.d(t,"ObservableMixin",(function(){return i.i})),o.d(t,"CKEditorError",(function(){return i.a})),o.d(t,"logError",(function(){return i.y})),o.d(t,"logWarning",(function(){return i.z})),o.d(t,"ElementReplacer",(function(){return i.d})),o.d(t,"createElement",(function(){return i.l})),o.d(t,"DomEmitterMixin",(function(){return i.c})),o.d(t,"global",(function(){return i.u})),o.d(t,"getDataFromElement",(function(){return i.q})),o.d(t,"Rect",(function(){return i.j})),o.d(t,"ResizeObserver",(function(){return i.k})),o.d(t,"setDataInElement",(function(){return i.D})),o.d(t,"toUnit",(function(){return i.G})),o.d(t,"keyCodes",(function(){return i.x})),o.d(t,"getCode",(function(){return i.p})),o.d(t,"parseKeystroke",(function(){return i.B})),o.d(t,"getEnvKeystrokeText",(function(){return i.r})),o.d(t,"isArrowKeyCode",(function(){return i.v})),o.d(t,"getLocalizedArrowKeyCodeDirection",(function(){return i.t})),o.d(t,"isForwardArrowKeyCode",(function(){return i.w})),o.d(t,"getLanguageDirection",(function(){return i.s})),o.d(t,"Locale",(function(){return i.h})),o.d(t,"Collection",(function(){return i.b})),o.d(t,"first",(function(){return i.o})),o.d(t,"FocusTracker",(function(){return i.f})),o.d(t,"KeystrokeHandler",(function(){return i.g})),o.d(t,"toArray",(function(){return i.E})),o.d(t,"toMap",(function(){return i.F})),o.d(t,"priorities",(function(){return i.C})),o.d(t,"uid",(function(){return i.H})),o.d(t,"version",(function(){return i.I}))},"./src/widget.js":function(e,t,o){"use strict";o.r(t),o.d(t,"Widget",(function(){return i.a})),o.d(t,"WidgetToolbarRepository",(function(){return d})),o.d(t,"WidgetResize",(function(){return O})),o.d(t,"WidgetTypeAround",(function(){return A.a})),o.d(t,"WIDGET_CLASS_NAME",(function(){return c.a})),o.d(t,"WIDGET_SELECTED_CLASS_NAME",(function(){return c.b})),o.d(t,"isWidget",(function(){return c.e})),o.d(t,"toWidget",(function(){return c.h})),o.d(t,"setHighlightHandling",(function(){return c.f})),o.d(t,"setLabel",(function(){return c.g})),o.d(t,"getLabel",(function(){return c.d})),o.d(t,"toWidgetEditable",(function(){return c.i})),o.d(t,"findOptimalInsertionRange",(function(){return c.c})),o.d(t,"viewToModelPositionOutsideModelElement",(function(){return c.j}));var i=o("./packages/ckeditor5-widget/src/widget.js"),s=o("./packages/ckeditor5-core/src/plugin.js"),r=o("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),n=o("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),a=o("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),c=o("./packages/ckeditor5-widget/src/utils.js"),l=o("./packages/ckeditor5-utils/src/ckeditorerror.js");class d extends s.a{static get requires(){return[r.a]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",t=>{(function(e){const t=e.getSelectedElement();return!(!t||!Object(c.e)(t))})(e.editing.view.document.selection)&&t.stop()},{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui,"update",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui.focusTracker,"change:isFocused",()=>{this._updateToolbarsVisibility()},{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:o,getRelatedElement:i,balloonClassName:s="ck-toolbar-container"}){if(!o.length)return void Object(l.c)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,a=r.t,c=new n.a(r.locale);if(c.ariaLabel=t||a("Widget toolbar"),this._toolbarDefinitions.has(e))throw new l.a("widget-toolbar-duplicated",this,{toolbarId:e});c.fillFromConfig(o,r.ui.componentFactory),this._toolbarDefinitions.set(e,{view:c,getRelatedElement:i,balloonClassName:s})}_updateToolbarsVisibility(){let e=0,t=null,o=null;for(const i of this._toolbarDefinitions.values()){const s=i.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&s)if(this.editor.ui.focusTracker.isFocused){const r=s.getAncestors().length;r>e&&(e=r,t=s,o=i)}else this._isToolbarVisible(i)&&this._hideToolbar(i);else this._isToolbarInBalloon(i)&&this._hideToolbar(i)}o&&this._showToolbar(o,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?u(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:h(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);u(this.editor,t)}}))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function u(e,t){const o=e.plugins.get("ContextualBalloon"),i=h(e,t);o.updatePosition(i)}function h(e,t){const o=e.editing.view,i=a.a.defaultPositions;return{target:o.domConverter.mapViewToDom(t),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast,i.viewportStickyNorth]}}var p=o("./packages/ckeditor5-ui/src/template.js"),g=o("./packages/ckeditor5-utils/src/dom/rect.js"),f=o("./packages/ckeditor5-utils/src/comparearrays.js"),m=o("./packages/ckeditor5-utils/src/observablemixin.js"),k=o("./packages/ckeditor5-utils/src/mix.js");class b{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,o){const i=new g.a(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const o of t)if(e.classList.contains("ck-widget__resizer__handle-"+o))return o}(e),this._referenceCoordinates=function(e,t){const o=new g.a(e),i=t.split("-"),s={x:"right"==i[1]?o.right:o.left,y:"bottom"==i[0]?o.bottom:o.top};return s.x+=e.ownerDocument.defaultView.scrollX,s.y+=e.ownerDocument.defaultView.scrollY,s}(t,function(e){const t=e.split("-"),o={top:"bottom",bottom:"top",left:"right",right:"left"};return`${o[t[0]]}-${o[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=i.width,this.originalHeight=i.height,this.aspectRatio=i.width/i.height;const s=o.style.width;s&&s.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(s):this.originalWidthPercents=function(e,t){const o=e.parentElement,i=parseFloat(o.ownerDocument.defaultView.getComputedStyle(o).width);return t.width/i*100}(o,i)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}Object(k.a)(b,m.a);var _=o("./packages/ckeditor5-ui/src/view.js");class w extends _.a{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",e=>e?"ck-orientation-"+e:"")],style:{display:e.if("_isVisible","none",e=>!e)}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",(e,t)=>null!==e&&null!==t),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",(t,o,i)=>"px"===e.unit?`${t}×${o}`:i+"%"),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",(e,t,o)=>t<50||o<50?"above-center":e)}_dismiss(){this.unbind(),this._isVisible=!1}}class v{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())},{priority:"high"}),this.on("change:isEnabled",()=>{this.isEnabled&&this.redraw()})}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change(o=>{const i=o.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const o=this.toDomElement(t);return e._appendHandles(o),e._appendSizeUI(o),e.on("change:isEnabled",(e,t,i)=>{o.style.display=i?"":"none"}),o.style.display=e.isEnabled?"":"none",o}));o.insert(o.createPositionAt(t,"end"),i),o.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=i})}begin(e){this.state=new b(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change(e=>{const o=this._options.unit||"%",i=("%"===o?t.widthPercents:t.width)+o;e.setStyle("width",i,this._options.viewElement)});const o=this._getHandleHost(),i=new g.a(o);t.handleHostWidth=Math.round(i.width),t.handleHostHeight=Math.round(i.height);const s=new g.a(o);t.width=Math.round(s.width),t.height=Math.round(s.height),this.redraw(i),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change(()=>{this._cleanup(),this._options.onCommit(t)})}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((o=t)&&o.ownerDocument&&o.ownerDocument.contains(o)))return;var o;const i=t.parentElement,s=this._getHandleHost(),r=this._viewResizerWrapper,n=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(i.isSameNode(s)){const t=e||new g.a(s);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[s.offsetWidth+"px",s.offsetHeight+"px",s.offsetLeft+"px",s.offsetTop+"px"];"same"!==Object(f.a)(n,a)&&this._options.editor.editing.view.change(e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)})}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change(e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)})}_proposeNewSize(e){const t=this.state,o={x:(i=e).pageX,y:i.pageY};var i;const s=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(o.x+t.originalWidth),y:o.y-t.originalHeight-t._referenceCoordinates.y};s&&t.activeHandlePosition.endsWith("-right")&&(r.x=o.x-(t._referenceCoordinates.x+t.originalWidth)),s&&(r.x*=2);const n={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};n.dominant=n.width/t.aspectRatio>n.height?"width":"height",n.max=n[n.dominant];const a={width:n.width,height:n.height};return"width"==n.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const i of t)e.appendChild(new p.a({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(o=i,"ck-widget__resizer__handle-"+o)}}).render());var o}_appendSizeUI(e){this._sizeView=new w,this._sizeView.render(),e.appendChild(this._sizeView.element)}}Object(k.a)(v,m.a);var y=o("./packages/ckeditor5-utils/src/dom/emittermixin.js"),j=o("./packages/ckeditor5-utils/src/dom/global.js"),x=o("./packages/ckeditor5-engine/src/view/observer/mouseobserver.js"),P=o("./node_modules/lodash-es/throttle.js");o("./packages/ckeditor5-widget/theme/widgetresize.css");class O extends s.a{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=j.a.window.document;this.set("visibleResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(x.a),this._observer=Object.create(y.a),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));const o=()=>{this.visibleResizer&&this.visibleResizer.redraw()};this._redrawFocusedResizerThrottled=Object(P.a)(o,200),this.on("change:visibleResizer",o),this.editor.ui.on("update",this._redrawFocusedResizerThrottled),this.editor.model.document.on("change",()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())},{priority:"lowest"}),this._observer.listenTo(j.a.window,"resize",this._redrawFocusedResizerThrottled);const i=this.editor.editing.view.document.selection;i.on("change",()=>{const e=i.getSelectedElement();this.visibleResizer=this.getResizerByViewElement(e)||null})}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawFocusedResizerThrottled.cancel()}attachTo(e){const t=new v(e),o=this.editor.plugins;if(t.attach(),o.has("WidgetToolbarRepository")){const e=o.get("WidgetToolbarRepository");t.on("begin",()=>{e.forceDisabled("resize")},{priority:"lowest"}),t.on("cancel",()=>{e.clearForceDisabled("resize")},{priority:"highest"}),t.on("commit",()=>{e.clearForceDisabled("resize")},{priority:"highest"})}this._resizers.set(e.viewElement,t);const i=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(i)==t&&(this.visibleResizer=t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const o=t.domTarget;v.isResizeHandle(o)&&(this._activeResizer=this._getResizerByHandle(o),this._activeResizer&&(this._activeResizer.begin(o),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}Object(k.a)(O,m.a);var A=o("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js")},0:function(e,t,o){e.exports=o}}),function(e){e.CKEditor5=e.CKEditor5||{};const t=["utils","core","engine","ui","clipboard","enter","paragraph","select-all","typing","undo","upload","widget"];for(const o of t){const t=o.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());e.CKEditor5[t]=e.CKEditor5.dll(`./src/${o}.js`)}}(window); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/editor-classic.js b/core/assets/vendor/ckeditor5/editor-classic.js new file mode 100644 index 000000000000..9e83af7c8b1d --- /dev/null +++ b/core/assets/vendor/ckeditor5/editor-classic.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +window.CKEditor5=window.CKEditor5||{},window.CKEditor5.editorClassic=function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=10)}([function(e,t,r){e.exports=r(3)("./src/ui.js")},function(e,t,r){e.exports=r(3)("./src/core.js")},function(e,t,r){e.exports=r(3)("./src/utils.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,r){e.exports=r(3)("./src/engine.js")},function(e,t,r){"use strict";(function(e){var r="object"==typeof e&&e&&e.Object===Object&&e;t.a=r}).call(this,r(9))},function(e,t,r){var o=r(7),n=r(8);"string"==typeof(n=n.__esModule?n.default:n)&&(n=[[e.i,n,""]]);var i={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o(n,i);e.exports=n.locals||{}},function(e,t,r){"use strict";var o,n=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var e={};return function(t){if(void 0===e[t]){var r=document.querySelector(t);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}e[t]=r}return e[t]}}(),c=[];function a(e){for(var t=-1,r=0;r<c.length;r++)if(c[r].identifier===e){t=r;break}return t}function s(e,t){for(var r={},o=[],n=0;n<e.length;n++){var i=e[n],s=t.base?i[0]+t.base:i[0],l=r[s]||0,d="".concat(s," ").concat(l);r[s]=l+1;var u=a(d),f={css:i[1],media:i[2],sourceMap:i[3]};-1!==u?(c[u].references++,c[u].updater(f)):c.push({identifier:d,updater:k(f,t),references:1}),o.push(d)}return o}function l(e){var t=document.createElement("style"),o=e.attributes||{};if(void 0===o.nonce){var n=r.nc;n&&(o.nonce=n)}if(Object.keys(o).forEach((function(e){t.setAttribute(e,o[e])})),"function"==typeof e.insert)e.insert(t);else{var c=i(e.insert||"head");if(!c)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");c.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function f(e,t,r,o){var n=r?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(e.styleSheet)e.styleSheet.cssText=u(t,n);else{var i=document.createTextNode(n),c=e.childNodes;c[t]&&e.removeChild(c[t]),c.length?e.insertBefore(i,c[t]):e.appendChild(i)}}function b(e,t,r){var o=r.css,n=r.media,i=r.sourceMap;if(n?e.setAttribute("media",n):e.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}var p=null,h=0;function k(e,t){var r,o,n;if(t.singleton){var i=h++;r=p||(p=l(t)),o=f.bind(null,r,i,!1),n=f.bind(null,r,i,!0)}else r=l(t),o=b.bind(null,r,t),n=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(r)};return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else n()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=n());var r=s(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var o=0;o<r.length;o++){var n=a(r[o]);c[n].references--}for(var i=s(e,t),l=0;l<r.length;l++){var d=a(r[l]);0===c[d].references&&(c[d].updater(),c.splice(d,1))}r=i}}}},function(e,t){e.exports=".ck.ck-editor{position:relative}.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{z-index:var(--ck-z-modal)}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-bottom-width:0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar{border-bottom-width:1px;border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:0}.ck.ck-editor__main>.ck-editor__editable{background:var(--ck-color-base-background);border-radius:0}.ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,.ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused){border-color:var(--ck-color-base-border)}"},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";r.r(t),r.d(t,"ClassicEditor",(function(){return P}));var o=r(1),n=r(2);var i=function(e){return null!=e&&"object"==typeof e},c=r(5),a="object"==typeof self&&self&&self.Object===Object&&self,s=(c.a||a||Function("return this")()).Symbol,l=Object.prototype,d=l.hasOwnProperty,u=l.toString,f=s?s.toStringTag:void 0;var b=function(e){var t=d.call(e,f),r=e[f];try{e[f]=void 0;var o=!0}catch(e){}var n=u.call(e);return o&&(t?e[f]=r:delete e[f]),n},p=Object.prototype.toString;var h=function(e){return p.call(e)},k=s?s.toStringTag:void 0;var m=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":k&&k in Object(e)?b(e):h(e)};var v=function(e,t){return function(r){return e(t(r))}}(Object.getPrototypeOf,Object),y=Function.prototype,g=Object.prototype,_=y.toString,w=g.hasOwnProperty,j=_.call(Object);var O=function(e){if(!i(e)||"[object Object]"!=m(e))return!1;var t=v(e);if(null===t)return!0;var r=w.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&_.call(r)==j};var x=function(e){return i(e)&&1===e.nodeType&&!O(e)},T=r(0),E=r(4);class C extends o.EditorUI{constructor(e,t){super(e),this.view=t,this._toolbarConfig=Object(T.normalizeToolbarConfig)(e.config.get("toolbar")),this._elementReplacer=new n.ElementReplacer}get element(){return this.view.element}init(e){const t=this.editor,r=this.view,o=t.editing.view,n=r.editable,i=o.document.getRoot();n.name=i.rootName,r.render();const c=n.element;this.setEditableElement(n.name,c),this.focusTracker.add(c),r.editable.bind("isFocused").to(this.focusTracker),o.attachDomRoot(c),e&&this._elementReplacer.replace(e,this.element),this._initPlaceholder(),this._initToolbar(),this.fire("ready")}destroy(){const e=this.view,t=this.editor.editing.view;this._elementReplacer.restore(),t.detachDomRoot(e.editable.name),e.destroy(),super.destroy()}_initToolbar(){const e=this.editor,t=this.view,r=e.editing.view;t.stickyPanel.bind("isActive").to(this.focusTracker,"isFocused"),t.stickyPanel.limiterElement=t.element,t.stickyPanel.bind("viewportTopOffset").to(this,"viewportOffset",({top:e})=>e),t.toolbar.fillFromConfig(this._toolbarConfig,this.componentFactory),Object(T.enableToolbarKeyboardFocus)({origin:r,originFocusTracker:this.focusTracker,originKeystrokeHandler:e.keystrokes,toolbar:t.toolbar})}_initPlaceholder(){const e=this.editor,t=e.editing.view,r=t.document.getRoot(),o=e.sourceElement,n=e.config.get("placeholder")||o&&"textarea"===o.tagName.toLowerCase()&&o.getAttribute("placeholder");n&&Object(E.enablePlaceholder)({view:t,element:r,text:n,isDirectHost:!1,keepOnFocus:!0})}}r(6);class S extends T.BoxedEditorUIView{constructor(e,t,r={}){super(e),this.stickyPanel=new T.StickyPanelView(e),this.toolbar=new T.ToolbarView(e,{shouldGroupWhenFull:r.shouldToolbarGroupWhenFull}),this.editable=new T.InlineEditableUIView(e,t)}render(){super.render(),this.stickyPanel.content.add(this.toolbar),this.top.add(this.stickyPanel),this.main.add(this.editable)}}class P extends o.Editor{constructor(e,t){super(t),x(e)&&(this.sourceElement=e),this.model.document.createRoot();const r=!this.config.get("toolbar.shouldNotGroupWhenFull"),n=new S(this.locale,this.editing.view,{shouldToolbarGroupWhenFull:r});this.ui=new C(this,n),Object(o.attachToForm)(this)}destroy(){return this.sourceElement&&this.updateSourceElement(),this.ui.destroy(),super.destroy()}static create(e,t={}){return new Promise(r=>{const o=new this(e,t);r(o.initPlugins().then(()=>o.ui.init(x(e)?e:null)).then(()=>{if(!x(e)&&t.initialData)throw new n.CKEditorError("editor-create-initial-data",null);const r=void 0!==t.initialData?t.initialData:function(e){return x(e)?Object(n.getDataFromElement)(e):e}(e);return o.data.init(r)}).then(()=>o.fire("ready")).then(()=>o))})}}Object(n.mix)(P,o.DataApiMixin),Object(n.mix)(P,o.ElementApiMixin)}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/editor-decoupled.js b/core/assets/vendor/ckeditor5/editor-decoupled.js new file mode 100644 index 000000000000..702a29d569d2 --- /dev/null +++ b/core/assets/vendor/ckeditor5/editor-decoupled.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +window.CKEditor5=window.CKEditor5||{},window.CKEditor5.editorDecoupled=function(t){var e={};function o(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=t,o.c=e,o.d=function(t,e,r){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=7)}([function(t,e,o){t.exports=o(3)("./src/core.js")},function(t,e,o){t.exports=o(3)("./src/ui.js")},function(t,e,o){t.exports=o(3)("./src/utils.js")},function(t,e){t.exports=CKEditor5.dll},function(t,e,o){t.exports=o(3)("./src/engine.js")},function(t,e,o){"use strict";(function(t){var o="object"==typeof t&&t&&t.Object===Object&&t;e.a=o}).call(this,o(6))},function(t,e){var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(t){"object"==typeof window&&(o=window)}t.exports=o},function(t,e,o){"use strict";o.r(e),o.d(e,"DecoupledEditor",(function(){return _}));var r=o(0),n=o(2);var i=function(t){return null!=t&&"object"==typeof t},c=o(5),s="object"==typeof self&&self&&self.Object===Object&&self,l=(c.a||s||Function("return this")()).Symbol,a=Object.prototype,u=a.hasOwnProperty,d=a.toString,f=l?l.toStringTag:void 0;var b=function(t){var e=u.call(t,f),o=t[f];try{t[f]=void 0;var r=!0}catch(t){}var n=d.call(t);return r&&(e?t[f]=o:delete t[f]),n},h=Object.prototype.toString;var p=function(t){return h.call(t)},g=l?l.toStringTag:void 0;var y=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":g&&g in Object(t)?b(t):p(t)};var m=function(t,e){return function(o){return t(e(o))}}(Object.getPrototypeOf,Object),w=Function.prototype,v=Object.prototype,j=w.toString,O=v.hasOwnProperty,E=j.call(Object);var x=function(t){if(!i(t)||"[object Object]"!=y(t))return!1;var e=m(t);if(null===e)return!0;var o=O.call(e,"constructor")&&e.constructor;return"function"==typeof o&&o instanceof o&&j.call(o)==E};var T=function(t){return i(t)&&1===t.nodeType&&!x(t)},F=o(1),D=o(4);class P extends r.EditorUI{constructor(t,e){super(t),this.view=e}init(){const t=this.editor,e=this.view,o=t.editing.view,r=e.editable,n=o.document.getRoot();e.editable.name=n.rootName,e.render();const i=r.element;this.setEditableElement(r.name,i),this.focusTracker.add(i),e.editable.bind("isFocused").to(this.focusTracker),o.attachDomRoot(i),this._initPlaceholder(),this._initToolbar(),this.fire("ready")}destroy(){const t=this.view;this.editor.editing.view.detachDomRoot(t.editable.name),t.destroy(),super.destroy()}_initToolbar(){const t=this.editor,e=this.view.toolbar;e.fillFromConfig(t.config.get("toolbar"),this.componentFactory),Object(F.enableToolbarKeyboardFocus)({origin:t.editing.view,originFocusTracker:this.focusTracker,originKeystrokeHandler:t.keystrokes,toolbar:e})}_initPlaceholder(){const t=this.editor,e=t.editing.view,o=e.document.getRoot(),r=t.sourceElement,n=t.config.get("placeholder")||r&&"textarea"===r.tagName.toLowerCase()&&r.getAttribute("placeholder");n&&Object(D.enablePlaceholder)({view:e,element:o,text:n,isDirectHost:!1,keepOnFocus:!0})}}class S extends F.EditorUIView{constructor(t,e,o={}){super(t),this.toolbar=new F.ToolbarView(t,{shouldGroupWhenFull:o.shouldToolbarGroupWhenFull}),this.editable=new F.InlineEditableUIView(t,e,o.editableElement),this.toolbar.extendTemplate({attributes:{class:["ck-reset_all","ck-rounded-corners"],dir:t.uiLanguageDirection}})}render(){super.render(),this.registerChild([this.toolbar,this.editable])}}class _ extends r.Editor{constructor(t,e){super(e),T(t)&&(this.sourceElement=t,Object(r.secureSourceElement)(this)),this.model.document.createRoot();const o=!this.config.get("toolbar.shouldNotGroupWhenFull"),n=new S(this.locale,this.editing.view,{editableElement:this.sourceElement,shouldToolbarGroupWhenFull:o});this.ui=new P(this,n)}destroy(){const t=this.getData();return this.ui.destroy(),super.destroy().then(()=>{this.sourceElement&&Object(n.setDataInElement)(this.sourceElement,t)})}static create(t,e={}){return new Promise(o=>{const r=T(t);if(r&&"TEXTAREA"===t.tagName)throw new n.CKEditorError("editor-wrong-element",null);const i=new this(t,e);o(i.initPlugins().then(()=>{i.ui.init()}).then(()=>{if(!r&&e.initialData)throw new n.CKEditorError("editor-create-initial-data",null);const o=void 0!==e.initialData?e.initialData:function(t){return T(t)?Object(n.getDataFromElement)(t):t}(t);return i.data.init(o)}).then(()=>i.fire("ready")).then(()=>i))})}}Object(n.mix)(_,r.DataApiMixin)}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/essentials.js b/core/assets/vendor/ckeditor5/essentials.js new file mode 100644 index 000000000000..b20455a363a3 --- /dev/null +++ b/core/assets/vendor/ckeditor5/essentials.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +window.CKEditor5=window.CKEditor5||{},window.CKEditor5.essentials=function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=7)}([function(t,e){t.exports=CKEditor5.dll},function(t,e,r){t.exports=r(0)("./src/enter.js")},function(t,e,r){t.exports=r(0)("./src/core.js")},function(t,e,r){t.exports=r(0)("./src/clipboard.js")},function(t,e,r){t.exports=r(0)("./src/select-all.js")},function(t,e,r){t.exports=r(0)("./src/typing.js")},function(t,e,r){t.exports=r(0)("./src/undo.js")},function(t,e,r){"use strict";r.r(e),r.d(e,"Essentials",(function(){return l}));var n=r(2),o=r(3),i=r(1),u=r(4),s=r(5),c=r(6);class l extends n.Plugin{static get requires(){return[o.Clipboard,i.Enter,u.SelectAll,i.ShiftEnter,s.Typing,c.Undo]}static get pluginName(){return"Essentials"}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/heading.js b/core/assets/vendor/ckeditor5/heading.js new file mode 100644 index 000000000000..573d17a15a91 --- /dev/null +++ b/core/assets/vendor/ckeditor5/heading.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"Choose heading":"Choose heading",Heading:"Heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6",Paragraph:"Paragraph","Type or paste your content here.":"Type or paste your content here.","Type your title":"Type your title"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.heading=function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){e.exports=n(4)("./src/core.js")},function(e,t,n){e.exports=n(4)("./src/utils.js")},function(e,t,n){e.exports=n(4)("./src/engine.js")},function(e,t,n){e.exports=n(4)("./src/ui.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,n){var i=n(7),o=n(8);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(o,a);e.exports=o.locals||{}},function(e,t,n){e.exports=n(4)("./src/paragraph.js")},function(e,t,n){"use strict";var i,o=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),r=[];function s(e){for(var t=-1,n=0;n<r.length;n++)if(r[n].identifier===e){t=n;break}return t}function c(e,t){for(var n={},i=[],o=0;o<e.length;o++){var a=e[o],c=t.base?a[0]+t.base:a[0],d=n[c]||0,l="".concat(c," ").concat(d);n[c]=d+1;var h=s(l),u={css:a[1],media:a[2],sourceMap:a[3]};-1!==h?(r[h].references++,r[h].updater(u)):r.push({identifier:l,updater:f(u,t),references:1}),i.push(l)}return i}function d(e){var t=document.createElement("style"),i=e.attributes||{};if(void 0===i.nonce){var o=n.nc;o&&(i.nonce=o)}if(Object.keys(i).forEach((function(e){t.setAttribute(e,i[e])})),"function"==typeof e.insert)e.insert(t);else{var r=a(e.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}return t}var l,h=(l=[],function(e,t){return l[e]=t,l.filter(Boolean).join("\n")});function u(e,t,n,i){var o=n?"":i.media?"@media ".concat(i.media," {").concat(i.css,"}"):i.css;if(e.styleSheet)e.styleSheet.cssText=h(t,o);else{var a=document.createTextNode(o),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(a,r[t]):e.appendChild(a)}}function g(e,t,n){var i=n.css,o=n.media,a=n.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),a&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleSheet)e.styleSheet.cssText=i;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(i))}}var m=null,p=0;function f(e,t){var n,i,o;if(t.singleton){var a=p++;n=m||(m=d(t)),i=u.bind(null,n,a,!1),o=u.bind(null,n,a,!0)}else n=d(t),i=g.bind(null,n,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return i(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;i(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var n=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var i=0;i<n.length;i++){var o=s(n[i]);r[o].references--}for(var a=c(e,t),d=0;d<n.length;d++){var l=s(n[d]);0===r[l].references&&(r[l].updater(),r.splice(l,1))}n=a}}}},function(e,t){e.exports=".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}"},function(e,t,n){"use strict";n.r(t),n.d(t,"Heading",(function(){return u})),n.d(t,"HeadingEditing",(function(){return c})),n.d(t,"HeadingUI",(function(){return h})),n.d(t,"HeadingButtonsUI",(function(){return m})),n.d(t,"Title",(function(){return v}));var i=n(0),o=n(6),a=n(1);class r extends i.Command{constructor(e,t){super(e),this.modelElements=t}refresh(){const e=Object(a.first)(this.editor.model.document.selection.getSelectedBlocks());this.value=!!e&&this.modelElements.includes(e.name)&&e.name,this.isEnabled=!!e&&this.modelElements.some(t=>s(e,t,this.editor.model.schema))}execute(e){const t=this.editor.model,n=t.document,i=e.value;t.change(e=>{const o=Array.from(n.selection.getSelectedBlocks()).filter(e=>s(e,i,t.schema));for(const t of o)t.is("element",i)||e.rename(t,i)})}}function s(e,t,n){return n.checkChild(e.parent,t)&&!n.isObject(e)}class c extends i.Plugin{static get pluginName(){return"HeadingEditing"}constructor(e){super(e),e.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[o.Paragraph]}init(){const e=this.editor,t=e.config.get("heading.options"),n=[];for(const i of t)"paragraph"!==i.model&&(e.model.schema.register(i.model,{inheritAllFrom:"$block"}),e.conversion.elementToElement(i),n.push(i.model));this._addDefaultH1Conversion(e),e.commands.add("heading",new r(e,n))}afterInit(){const e=this.editor,t=e.commands.get("enter"),n=e.config.get("heading.options");t&&this.listenTo(t,"afterExecute",(t,i)=>{const o=e.model.document.selection.getFirstPosition().parent;n.some(e=>o.is("element",e.model))&&!o.is("element","paragraph")&&0===o.childCount&&i.writer.rename(o,"paragraph")})}_addDefaultH1Conversion(e){e.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:a.priorities.get("low")+1})}}var d=n(3);function l(e){const t=e.t,n={Paragraph:t("Paragraph"),"Heading 1":t("Heading 1"),"Heading 2":t("Heading 2"),"Heading 3":t("Heading 3"),"Heading 4":t("Heading 4"),"Heading 5":t("Heading 5"),"Heading 6":t("Heading 6")};return e.config.get("heading.options").map(e=>{const t=n[e.title];return t&&t!=e.title&&(e.title=t),e})}n(5);class h extends i.Plugin{static get pluginName(){return"HeadingUI"}init(){const e=this.editor,t=e.t,n=l(e),i=t("Choose heading"),o=t("Heading");e.ui.componentFactory.add("heading",t=>{const r={},s=new a.Collection,c=e.commands.get("heading"),l=e.commands.get("paragraph"),h=[c];for(const e of n){const t={type:"button",model:new d.Model({label:e.title,class:e.class,withText:!0})};"paragraph"===e.model?(t.model.bind("isOn").to(l,"value"),t.model.set("commandName","paragraph"),h.push(l)):(t.model.bind("isOn").to(c,"value",t=>t===e.model),t.model.set({commandName:"heading",commandValue:e.model})),s.add(t),r[e.model]=e.title}const u=Object(d.createDropdown)(t);return Object(d.addListToDropdown)(u,s),u.buttonView.set({isOn:!1,withText:!0,tooltip:o}),u.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),u.bind("isEnabled").toMany(h,"isEnabled",(...e)=>e.some(e=>e)),u.buttonView.bind("label").to(c,"value",l,"value",(e,t)=>{const n=e||t&&"paragraph";return r[n]?r[n]:i}),this.listenTo(u,"execute",t=>{e.execute(t.source.commandName,t.source.commandValue?{value:t.source.commandValue}:void 0),e.editing.view.focus()}),u})}}class u extends i.Plugin{static get requires(){return[c,h]}static get pluginName(){return"Heading"}}const g={heading1:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M19 9v10h-2v-8h-2V9h4zM4 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1H10a1 1 0 0 1-1-1V11H4v4.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1H3a1 1 0 0 1 1 1v4.5z"/></svg>',heading2:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V11H3v4.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1H2a1 1 0 0 1 1 1v4.5zm16.076 8.343V18.5h-6.252c.067-.626.27-1.22.61-1.78.338-.561 1.006-1.305 2.005-2.232.804-.749 1.297-1.257 1.479-1.523.245-.368.368-.732.368-1.092 0-.398-.107-.703-.32-.917-.214-.214-.51-.32-.886-.32-.372 0-.669.111-.889.336-.22.224-.347.596-.38 1.117l-1.778-.178c.106-.982.438-1.686.997-2.114.558-.427 1.257-.64 2.095-.64.918 0 1.64.247 2.164.742.525.495.787 1.11.787 1.847 0 .419-.075.818-.225 1.197-.15.378-.388.775-.714 1.19-.216.275-.605.67-1.168 1.187-.563.516-.92.859-1.07 1.028a3.11 3.11 0 0 0-.365.495h3.542z"/></svg>',heading3:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V11H3v4.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1H2a1 1 0 0 1 1 1v4.5zm9.989 7.53 1.726-.209c.055.44.203.777.445 1.01.24.232.533.349.876.349.368 0 .678-.14.93-.42.251-.279.377-.655.377-1.13 0-.448-.12-.803-.362-1.066a1.153 1.153 0 0 0-.882-.393c-.228 0-.501.044-.819.133l.197-1.453c.482.012.85-.092 1.105-.315.253-.222.38-.517.38-.885 0-.313-.093-.563-.279-.75-.186-.185-.434-.278-.743-.278a1.07 1.07 0 0 0-.78.317c-.216.212-.347.52-.394.927l-1.644-.28c.114-.562.287-1.012.517-1.348.231-.337.553-.601.965-.794a3.24 3.24 0 0 1 1.387-.289c.876 0 1.579.28 2.108.838.436.457.653.973.653 1.549 0 .817-.446 1.468-1.339 1.955.533.114.96.37 1.28.768.319.398.478.878.478 1.441 0 .817-.298 1.513-.895 2.088-.596.576-1.339.864-2.228.864-.842 0-1.54-.243-2.094-.727-.555-.485-.876-1.118-.965-1.901z"/></svg>',heading4:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3.5 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V11h-5v4.5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v4.5zm13.55 10v-1.873h-3.81v-1.561l4.037-5.91h1.498v5.904h1.156v1.567h-1.156V18.5H17.05zm0-3.44v-3.18l-2.14 3.18h2.14z"/></svg>',heading5:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3.5 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V11h-5v4.5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v4.5zm9.578 7.607 1.777-.184c.05.402.201.72.45.955a1.223 1.223 0 0 0 1.81-.101c.258-.303.387-.759.387-1.368 0-.572-.128-1-.384-1.286-.256-.285-.59-.428-1-.428-.512 0-.971.226-1.377.679l-1.448-.21.915-4.843h4.716v1.67H15.56l-.28 1.58a2.697 2.697 0 0 1 1.219-.298 2.68 2.68 0 0 1 2.012.863c.55.576.825 1.323.825 2.241a3.36 3.36 0 0 1-.666 2.05c-.605.821-1.445 1.232-2.52 1.232-.86 0-1.56-.23-2.101-.692-.542-.461-.866-1.081-.971-1.86z"/></svg>',heading6:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3.5 8.5h5V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v11.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1V11h-5v4.5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h.5a1 1 0 0 1 1 1v4.5zm15.595 2.973-1.726.19c-.043-.355-.153-.617-.33-.787-.178-.169-.409-.253-.692-.253-.377 0-.695.169-.956.507-.26.339-.424 1.043-.492 2.114.445-.525.997-.787 1.657-.787.745 0 1.383.284 1.914.85.531.568.797 1.3.797 2.197 0 .952-.28 1.716-.838 2.291-.559.576-1.276.864-2.152.864-.94 0-1.712-.365-2.317-1.095-.605-.73-.908-1.927-.908-3.59 0-1.705.316-2.935.946-3.688.63-.753 1.45-1.13 2.457-1.13.706 0 1.291.198 1.755.594.463.395.758.97.885 1.723zm-4.043 3.891c0 .58.133 1.028.4 1.343.266.315.57.473.914.473.33 0 .605-.13.825-.388.22-.258.33-.68.33-1.27 0-.604-.118-1.047-.355-1.329a1.115 1.115 0 0 0-.89-.422c-.342 0-.632.134-.869.403s-.355.666-.355 1.19z"/></svg>'};class m extends i.Plugin{init(){l(this.editor).filter(e=>"paragraph"!==e.model).map(e=>this._createButton(e))}_createButton(e){const t=this.editor;t.ui.componentFactory.add(e.model,n=>{const i=new d.ButtonView(n),o=t.commands.get("heading");return i.label=e.title,i.icon=e.icon||g[e.model],i.tooltip=!0,i.isToggleable=!0,i.bind("isEnabled").to(o),i.bind("isOn").to(o,"value",t=>t==e.model),i.on("execute",()=>{t.execute("heading",{value:e.model}),t.editing.view.focus()}),i})}}var p=n(2);const f=new Set(["paragraph","heading1","heading2","heading3","heading4","heading5","heading6"]);class v extends i.Plugin{static get pluginName(){return"Title"}static get requires(){return["Paragraph"]}init(){const e=this.editor,t=e.model;this._bodyPlaceholder=null,t.schema.register("title",{isBlock:!0,allowIn:"$root"}),t.schema.register("title-content",{isBlock:!0,allowIn:"title",allowAttributes:["alignment"]}),t.schema.extend("$text",{allowIn:"title-content"}),t.schema.addAttributeCheck(e=>{if(e.endsWith("title-content $text"))return!1}),e.editing.mapper.on("modelToViewPosition",b(e.editing.view)),e.data.mapper.on("modelToViewPosition",b(e.editing.view)),e.conversion.for("downcast").elementToElement({model:"title-content",view:"h1"}),e.data.upcastDispatcher.on("element:h1",w,{priority:"high"}),e.data.upcastDispatcher.on("element:h2",w,{priority:"high"}),e.data.upcastDispatcher.on("element:h3",w,{priority:"high"}),t.document.registerPostFixer(e=>this._fixTitleContent(e)),t.document.registerPostFixer(e=>this._fixTitleElement(e)),t.document.registerPostFixer(e=>this._fixBodyElement(e)),t.document.registerPostFixer(e=>this._fixExtraParagraph(e)),this._attachPlaceholders(),this._attachTabPressHandling()}getTitle(e={}){const t=this._getTitleElement().getChild(0);return this.editor.data.stringify(t,e)}getBody(e={}){const t=this.editor,n=t.data,i=t.model,o=t.model.document.getRoot(),a=t.editing.view,r=new p.DowncastWriter(a.document),s=i.createRangeIn(o),c=r.createDocumentFragment();n.downcastDispatcher.conversionApi.options=e,n.mapper.clearBindings(),n.mapper.bindElements(o,c),n.downcastDispatcher.convertInsert(s,r);const d=i.createPositionAfter(o.getChild(0)),l=i.createRange(d,i.createPositionAt(o,"end"));for(const e of i.markers){const t=l.getIntersection(e.getRange());t&&n.downcastDispatcher.convertMarkerAdd(e.name,t,r)}return delete n.downcastDispatcher.conversionApi.options,r.remove(r.createRangeOn(c.getChild(0))),t.data.processor.toData(c)}_getTitleElement(){const e=this.editor.model.document.getRoot();for(const t of e.getChildren())if(x(t))return t}_fixTitleContent(e){const t=this._getTitleElement();if(!t||1===t.maxOffset)return!1;const n=Array.from(t.getChildren());n.shift();for(const i of n)e.move(e.createRangeOn(i),t,"after"),e.rename(i,"paragraph");return!0}_fixTitleElement(e){const t=this.editor.model,n=t.document.getRoot(),i=Array.from(n.getChildren()).filter(x),o=i[0],a=n.getChild(0);if(a.is("element","title"))return y(i,e,t);if(!o&&!f.has(a.name)){const t=e.createElement("title");return e.insert(t,n),e.insertElement("title-content",t),!0}return f.has(a.name)?function(e,t,n){const i=t.createElement("title");t.insert(i,e,"before"),t.insert(e,i,0),t.rename(e,"title-content"),n.schema.removeDisallowedAttributes([e],t)}(a,e,t):e.move(e.createRangeOn(o),n,0),y(i,e,t),!0}_fixBodyElement(e){const t=this.editor.model.document.getRoot();return t.childCount<2&&(this._bodyPlaceholder=e.createElement("paragraph"),e.insert(this._bodyPlaceholder,t,1),!0)}_fixExtraParagraph(e){const t=this.editor.model.document.getRoot(),n=this._bodyPlaceholder;return!!function(e,t){if(!e||!e.is("element","paragraph")||e.childCount)return!1;if(t.childCount<=2||t.getChild(t.childCount-1)!==e)return!1;return!0}(n,t)&&(this._bodyPlaceholder=null,e.remove(n),!0)}_attachPlaceholders(){const e=this.editor,t=e.t,n=e.editing.view,i=n.document.getRoot(),o=e.sourceElement,a=e.config.get("title.placeholder")||t("Type your title"),r=e.config.get("placeholder")||o&&"textarea"===o.tagName.toLowerCase()&&o.getAttribute("placeholder")||t("Type or paste your content here.");let s;e.editing.downcastDispatcher.on("insert:title-content",(e,t,i)=>{Object(p.enablePlaceholder)({view:n,element:i.mapper.toViewElement(t.item),text:a,keepOnFocus:!0})}),n.document.registerPostFixer(e=>{const t=i.getChild(1);let n=!1;return t!==s&&(s&&(Object(p.hidePlaceholder)(e,s),e.removeAttribute("data-placeholder",s)),e.setAttribute("data-placeholder",r,t),s=t,n=!0),n=Object(p.needsPlaceholder)(t,!0)&&2===i.childCount&&"p"===t.name?!!Object(p.showPlaceholder)(e,t)||n:!!Object(p.hidePlaceholder)(e,t)||n,n})}_attachTabPressHandling(){const e=this.editor,t=e.model;e.keystrokes.set("TAB",(e,n)=>{t.change(e=>{const i=t.document.selection,o=Array.from(i.getSelectedBlocks());if(1===o.length&&o[0].is("element","title-content")){const i=t.document.getRoot().getChild(1);e.setSelection(i,0),n()}})}),e.keystrokes.set("SHIFT + TAB",(n,i)=>{t.change(n=>{const o=t.document.selection;if(!o.isCollapsed)return;const r=e.model.document.getRoot(),s=Object(a.first)(o.getSelectedBlocks()),c=o.getFirstPosition(),d=r.getChild(0);s===r.getChild(1)&&c.isAtStart&&(n.setSelection(d.getChild(0),0),i())})})}}function w(e,t,n){const i=t.modelCursor,o=t.viewItem;if(!i.isAtStart||!i.parent.is("element","$root"))return;if(!n.consumable.consume(o,{name:!0}))return;const a=n.writer,r=a.createElement("title"),s=a.createElement("title-content");a.append(s,r),a.insert(r,i),n.convertChildren(o,s),n.updateConversionResult(r,t)}function b(e){return(t,n)=>{const i=n.modelPosition.parent;if(!i.is("element","title"))return;const o=i.parent,a=n.mapper.toViewElement(o);n.viewPosition=e.createPositionAt(a,0),t.stop()}}function x(e){return e.is("element","title")}function y(e,t,n){let i=!1;for(const o of e)0!==o.index&&(H(o,t,n),i=!0);return i}function H(e,t,n){const i=e.getChild(0);i.isEmpty?t.remove(e):(t.move(t.createRangeOn(i),e,"before"),t.rename(i,"paragraph"),t.remove(e),n.schema.removeDisallowedAttributes([i],t))}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/horizontal-line.js b/core/assets/vendor/ckeditor5/horizontal-line.js new file mode 100644 index 000000000000..54d6809100a4 --- /dev/null +++ b/core/assets/vendor/ckeditor5/horizontal-line.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"Horizontal line":"Horizontal line"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.horizontalLine=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=7)}([function(e,t,n){e.exports=n(2)("./src/core.js")},function(e,t,n){e.exports=n(2)("./src/widget.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,n){e.exports=n(2)("./src/ui.js")},function(e,t,n){var r=n(5),o=n(6);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};r(o,i);e.exports=o.locals||{}},function(e,t,n){"use strict";var r,o=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function c(e){for(var t=-1,n=0;n<a.length;n++)if(a[n].identifier===e){t=n;break}return t}function s(e,t){for(var n={},r=[],o=0;o<e.length;o++){var i=e[o],s=t.base?i[0]+t.base:i[0],l=n[s]||0,u="".concat(s," ").concat(l);n[s]=l+1;var d=c(u),f={css:i[1],media:i[2],sourceMap:i[3]};-1!==d?(a[d].references++,a[d].updater(f)):a.push({identifier:u,updater:g(f,t),references:1}),r.push(u)}return r}function l(e){var t=document.createElement("style"),r=e.attributes||{};if(void 0===r.nonce){var o=n.nc;o&&(r.nonce=o)}if(Object.keys(r).forEach((function(e){t.setAttribute(e,r[e])})),"function"==typeof e.insert)e.insert(t);else{var a=i(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(t)}return t}var u,d=(u=[],function(e,t){return u[e]=t,u.filter(Boolean).join("\n")});function f(e,t,n,r){var o=n?"":r.media?"@media ".concat(r.media," {").concat(r.css,"}"):r.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var i=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(i,a[t]):e.appendChild(i)}}function p(e,t,n){var r=n.css,o=n.media,i=n.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}var h=null,m=0;function g(e,t){var n,r,o;if(t.singleton){var i=m++;n=h||(h=l(t)),r=f.bind(null,n,i,!1),o=f.bind(null,n,i,!0)}else n=l(t),r=p.bind(null,n,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var n=s(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var r=0;r<n.length;r++){var o=c(n[r]);a[o].references--}for(var i=s(e,t),l=0;l<n.length;l++){var u=c(n[l]);0===a[u].references&&(a[u].updater(),a.splice(u,1))}n=i}}}},function(e,t){e.exports=".ck-editor__editable .ck-horizontal-line{display:flow-root}.ck-content hr{margin:15px 0;height:4px;background:#dedede;border:0}"},function(e,t,n){"use strict";n.r(t),n.d(t,"HorizontalLine",(function(){return l})),n.d(t,"HorizontalLineEditing",(function(){return a})),n.d(t,"HorizontalLineUI",(function(){return s}));var r=n(0),o=n(1);class i extends r.Command{refresh(){const e=this.editor.model,t=e.schema,n=e.document.selection;this.isEnabled=function(e,t,n){const r=function(e,t){const n=Object(o.findOptimalInsertionRange)(e,t).start.parent;if(n.isEmpty&&!n.is("element","$root"))return n.parent;return n}(e,n);return t.checkChild(r,"horizontalLine")}(n,t,e)}execute(){const e=this.editor.model;e.change(t=>{const n=t.createElement("horizontalLine");e.insertContent(n);let r=n.nextSibling;!(r&&e.schema.checkChild(r,"$text"))&&e.schema.checkChild(n.parent,"paragraph")&&(r=t.createElement("paragraph"),e.insertContent(r,t.createPositionAfter(n))),r&&t.setSelection(r,0)})}}n(4);class a extends r.Plugin{static get pluginName(){return"HorizontalLineEditing"}init(){const e=this.editor,t=e.model.schema,n=e.t,r=e.conversion;t.register("horizontalLine",{isObject:!0,allowWhere:"$block"}),r.for("dataDowncast").elementToElement({model:"horizontalLine",view:(e,{writer:t})=>t.createEmptyElement("hr")}),r.for("editingDowncast").elementToElement({model:"horizontalLine",view:(e,{writer:t})=>{const r=n("Horizontal line"),i=t.createContainerElement("div"),a=t.createEmptyElement("hr");return t.addClass("ck-horizontal-line",i),t.setCustomProperty("hr",!0,i),t.insert(t.createPositionAt(i,0),a),function(e,t,n){return t.setCustomProperty("horizontalLine",!0,e),Object(o.toWidget)(e,t,{label:n})}(i,t,r)}}),r.for("upcast").elementToElement({view:"hr",model:"horizontalLine"}),e.commands.add("horizontalLine",new i(e))}}var c=n(3);class s extends r.Plugin{static get pluginName(){return"HorizontalLineUI"}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("horizontalLine",n=>{const r=e.commands.get("horizontalLine"),o=new c.ButtonView(n);return o.set({label:t("Horizontal line"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 9h16v2H2z"/></svg>',tooltip:!0}),o.bind("isEnabled").to(r,"isEnabled"),this.listenTo(o,"execute",()=>{e.execute("horizontalLine"),e.editing.view.focus()}),o})}}class l extends r.Plugin{static get requires(){return[a,s,o.Widget]}static get pluginName(){return"HorizontalLine"}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/html-support.js b/core/assets/vendor/ckeditor5/html-support.js new file mode 100644 index 000000000000..dbcd5216b184 --- /dev/null +++ b/core/assets/vendor/ckeditor5/html-support.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"HTML object":"HTML object"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.htmlSupport=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=17)}([function(e,t,r){e.exports=r(5)("./src/core.js")},function(e,t,r){"use strict";var n=r(6),o="object"==typeof self&&self&&self.Object===Object&&self,i=n.a||o||Function("return this")();t.a=i},function(e,t,r){e.exports=r(5)("./src/utils.js")},function(e,t,r){"use strict";(function(e){var n=r(6),o="object"==typeof exports&&exports&&!exports.nodeType&&exports,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,l=i&&i.exports===o&&n.a.process,a=function(){try{var e=i&&i.require&&i.require("util").types;return e||l&&l.binding&&l.binding("util")}catch(e){}}();t.a=a}).call(this,r(9)(e))},function(e,t,r){"use strict";(function(e){var n=r(1),o=r(12),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,l=i&&"object"==typeof e&&e&&!e.nodeType&&e,a=l&&l.exports===i?n.a.Buffer:void 0,c=(a?a.isBuffer:void 0)||o.a;t.a=c}).call(this,r(9)(e))},function(e,t){e.exports=CKEditor5.dll},function(e,t,r){"use strict";(function(e){var r="object"==typeof e&&e&&e.Object===Object&&e;t.a=r}).call(this,r(13))},function(e,t,r){"use strict";(function(e){var n=r(1),o="object"==typeof exports&&exports&&!exports.nodeType&&exports,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,l=i&&i.exports===o?n.a.Buffer:void 0,a=l?l.allocUnsafe:void 0;t.a=function(e,t){if(t)return e.slice();var r=e.length,n=a?a(r):new e.constructor(r);return e.copy(n),n}}).call(this,r(9)(e))},function(e,t,r){e.exports=r(5)("./src/widget.js")},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,r){e.exports=r(5)("./src/engine.js")},,function(e,t,r){"use strict";t.a=function(){return!1}},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){var n=r(15),o=r(16);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,i);e.exports=o.locals||{}},function(e,t,r){"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},i=function(){var e={};return function(t){if(void 0===e[t]){var r=document.querySelector(t);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}e[t]=r}return e[t]}}(),l=[];function a(e){for(var t=-1,r=0;r<l.length;r++)if(l[r].identifier===e){t=r;break}return t}function c(e,t){for(var r={},n=[],o=0;o<e.length;o++){var i=e[o],c=t.base?i[0]+t.base:i[0],s=r[c]||0,m="".concat(c," ").concat(s);r[c]=s+1;var u=a(m),d={css:i[1],media:i[2],sourceMap:i[3]};-1!==u?(l[u].references++,l[u].updater(d)):l.push({identifier:m,updater:p(d,t),references:1}),n.push(m)}return n}function s(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=r.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var l=i(e.insert||"head");if(!l)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");l.appendChild(t)}return t}var m,u=(m=[],function(e,t){return m[e]=t,m.filter(Boolean).join("\n")});function d(e,t,r,n){var o=r?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,o);else{var i=document.createTextNode(o),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(i,l[t]):e.appendChild(i)}}function h(e,t,r){var n=r.css,o=r.media,i=r.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var f=null,b=0;function p(e,t){var r,n,o;if(t.singleton){var i=b++;r=f||(f=s(t)),n=d.bind(null,r,i,!1),o=d.bind(null,r,i,!0)}else r=s(t),n=h.bind(null,r,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(r)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var r=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<r.length;n++){var o=a(r[n]);l[o].references--}for(var i=c(e,t),s=0;s<r.length;s++){var m=a(r[s]);0===l[m].references&&(l[m].updater(),l.splice(m,1))}r=i}}}},function(e,t){e.exports=":root{--ck-html-object-embed-unfocused-outline-width:1px}.ck-widget.html-object-embed{font-size:var(--ck-font-size-base);background-color:var(--ck-color-base-foreground);padding:var(--ck-spacing-small);padding-top:calc(var(--ck-font-size-tiny) + var(--ck-spacing-large));min-width:calc(76px + var(--ck-spacing-standard))}.ck-widget.html-object-embed:not(.ck-widget_selected):not(:hover){outline:var(--ck-html-object-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border)}.ck-widget.html-object-embed:before{font-weight:400;font-style:normal;position:absolute;content:attr(data-html-object-embed-label);top:0;left:var(--ck-spacing-standard);background:#999;transition:background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);padding:calc(var(--ck-spacing-tiny) + var(--ck-html-object-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius);color:var(--ck-color-base-background);font-size:var(--ck-font-size-tiny);font-family:var(--ck-font-face)}.ck-widget.html-object-embed .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before{margin-left:50px}.ck-widget.html-object-embed .html-object-embed__content{pointer-events:none}div.ck-widget.html-object-embed{margin:1em auto}span.ck-widget.html-object-embed{display:inline-block}"},function(e,t,r){"use strict";r.r(t),r.d(t,"GeneralHtmlSupport",(function(){return nn})),r.d(t,"DataFilter",(function(){return Ur})),r.d(t,"DataSchema",(function(){return It})),r.d(t,"HtmlComment",(function(){return on}));var n=r(0),o=r(2),i=[{model:"codeBlock",view:"pre"},{model:"paragraph",view:"p"},{model:"blockQuote",view:"blockquote"},{model:"listItem",view:"li"},{model:"pageBreak",view:"div"},{model:"rawHtml",view:"div"},{model:"table",view:"table"},{model:"tableRow",view:"tr"},{model:"tableCell",view:"td"},{model:"tableCell",view:"th"},{model:"caption",view:"caption"},{model:"caption",view:"figcaption"},{model:"imageBlock",view:"img"},{model:"imageInline",view:"img"},{model:"$htmlSection",modelSchema:{allowChildren:"$block",allowIn:["$root","$htmlSection"],isBlock:!0}},{model:"htmlP",view:"p",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlBlockquote",view:"blockquote",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlTable",view:"table",modelSchema:{allowIn:["$htmlSection","$root"],isBlock:!0}},{model:"htmlTbody",view:"tbody",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlThead",view:"thead",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlTfoot",view:"tfoot",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlCaption",view:"caption",modelSchema:{allowIn:"htmlTable",allowChildren:"$text",isBlock:!0}},{model:"htmlTr",view:"tr",modelSchema:{allowIn:["htmlTable","htmlThead","htmlTbody"],isBlock:!0}},{model:"htmlTd",view:"td",modelSchema:{allowIn:"htmlTr",allowChildren:["$block","$htmlSection"],isBlock:!0}},{model:"htmlTh",view:"th",modelSchema:{allowIn:"htmlTr",allowChildren:["$block","$htmlSection"],isBlock:!0}},{model:"htmlFigure",view:"figure",modelSchema:{inheritAllFrom:"$htmlSection",isBlock:!0}},{model:"htmlFigcaption",view:"figcaption",modelSchema:{allowIn:"htmlFigure",allowChildren:"$text",isBlock:!0}},{model:"htmlAddress",view:"address",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlAside",view:"aside",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlMain",view:"main",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlDetails",view:"details",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlSummary",view:"summary",modelSchema:{allowChildren:"$text",allowIn:"htmlDetails",isBlock:!0}},{model:"htmlDiv",view:"div",paragraphLikeModel:"htmlDivParagraph",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlFieldset",view:"fieldset",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlLegend",view:"legend",modelSchema:{allowIn:"htmlFieldset",allowChildren:"$text"}},{model:"htmlHeader",view:"header",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlFooter",view:"footer",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlForm",view:"form",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlHgroup",view:"hgroup",modelSchema:{allowChildren:["htmlH1","htmlH2","htmlH3","htmlH4","htmlH5","htmlH6"],isBlock:!0}},{model:"htmlH1",view:"h1",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH2",view:"h2",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH3",view:"h3",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH4",view:"h4",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH5",view:"h5",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH6",view:"h6",modelSchema:{inheritAllFrom:"$block"}},{model:"$htmlList",modelSchema:{allowWhere:"$htmlSection",allowChildren:["$htmlList","htmlLi"],isBlock:!0}},{model:"htmlDir",view:"dir",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlMenu",view:"menu",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlUl",view:"ul",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlOl",view:"ol",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlLi",view:"li",modelSchema:{allowIn:"$htmlList",allowChildren:"$text",isBlock:!0}},{model:"htmlPre",view:"pre",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlArticle",view:"article",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlSection",view:"section",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlNav",view:"nav",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"htmlDl",view:"dl",modelSchema:{allowIn:["$htmlSection","$root"],allowChildren:["htmlDt","htmlDd"],isBlock:!0}},{model:"htmlDt",view:"dt",modelSchema:{allowChildren:"$block",isBlock:!0}},{model:"htmlDd",view:"dd",modelSchema:{allowChildren:"$block",isBlock:!0}},{model:"htmlCenter",view:"center",modelSchema:{inheritAllFrom:"$htmlSection"}},{model:"$htmlObjectBlock",isObject:!0,modelSchema:{isObject:!0,isBlock:!0,allowWhere:"$block"}}],l=[{model:"htmlAcronym",view:"acronym",attributeProperties:{copyOnEnter:!0}},{model:"htmlTt",view:"tt",attributeProperties:{copyOnEnter:!0}},{model:"htmlFont",view:"font",attributeProperties:{copyOnEnter:!0}},{model:"htmlTime",view:"time",attributeProperties:{copyOnEnter:!0}},{model:"htmlVar",view:"var",attributeProperties:{copyOnEnter:!0}},{model:"htmlBig",view:"big",attributeProperties:{copyOnEnter:!0}},{model:"htmlSmall",view:"small",attributeProperties:{copyOnEnter:!0}},{model:"htmlSamp",view:"samp",attributeProperties:{copyOnEnter:!0}},{model:"htmlQ",view:"q",attributeProperties:{copyOnEnter:!0}},{model:"htmlOutput",view:"output",attributeProperties:{copyOnEnter:!0}},{model:"htmlKbd",view:"kbd",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdi",view:"bdi",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdo",view:"bdo",attributeProperties:{copyOnEnter:!0}},{model:"htmlAbbr",view:"abbr",attributeProperties:{copyOnEnter:!0}},{model:"htmlA",view:"a",priority:5,attributeProperties:{copyOnEnter:!0}},{model:"htmlStrong",view:"strong",attributeProperties:{copyOnEnter:!0}},{model:"htmlB",view:"b",attributeProperties:{copyOnEnter:!0}},{model:"htmlI",view:"i",attributeProperties:{copyOnEnter:!0}},{model:"htmlEm",view:"em",attributeProperties:{copyOnEnter:!0}},{model:"htmlS",view:"s",attributeProperties:{copyOnEnter:!0}},{model:"htmlDel",view:"del",attributeProperties:{copyOnEnter:!0}},{model:"htmlIns",view:"ins",attributeProperties:{copyOnEnter:!0}},{model:"htmlU",view:"u",attributeProperties:{copyOnEnter:!0}},{model:"htmlSub",view:"sub",attributeProperties:{copyOnEnter:!0}},{model:"htmlSup",view:"sup",attributeProperties:{copyOnEnter:!0}},{model:"htmlCode",view:"code",attributeProperties:{copyOnEnter:!0}},{model:"htmlMark",view:"mark",attributeProperties:{copyOnEnter:!0}},{model:"htmlSpan",view:"span",attributeProperties:{copyOnEnter:!0}},{model:"htmlCite",view:"cite",attributeProperties:{copyOnEnter:!0}},{model:"htmlLabel",view:"label",attributeProperties:{copyOnEnter:!0}},{model:"htmlDfn",view:"dfn",attributeProperties:{copyOnEnter:!0}},{model:"$htmlObjectInline",isObject:!0,modelSchema:{isObject:!0,isInline:!0,allowWhere:"$text",allowAttributesOf:"$text"}},{model:"htmlObject",view:"object",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlIframe",view:"iframe",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlInput",view:"input",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlButton",view:"button",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlTextarea",view:"textarea",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlSelect",view:"select",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlVideo",view:"video",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlEmbed",view:"embed",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlOembed",view:"oembed",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlAudio",view:"audio",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlImg",view:"img",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlCanvas",view:"canvas",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlMeter",view:"meter",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}},{model:"htmlProgress",view:"progress",isObject:!0,modelSchema:{inheritAllFrom:"$htmlObjectInline"}}];var a=function(){this.__data__=[],this.size=0};var c=function(e,t){return e===t||e!=e&&t!=t};var s=function(e,t){for(var r=e.length;r--;)if(c(e[r][0],t))return r;return-1},m=Array.prototype.splice;var u=function(e){var t=this.__data__,r=s(t,e);return!(r<0)&&(r==t.length-1?t.pop():m.call(t,r,1),--this.size,!0)};var d=function(e){var t=this.__data__,r=s(t,e);return r<0?void 0:t[r][1]};var h=function(e){return s(this.__data__,e)>-1};var f=function(e,t){var r=this.__data__,n=s(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};function b(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}b.prototype.clear=a,b.prototype.delete=u,b.prototype.get=d,b.prototype.has=h,b.prototype.set=f;var p=b;var v=function(){this.__data__=new p,this.size=0};var g=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r};var w=function(e){return this.__data__.get(e)};var y=function(e){return this.__data__.has(e)},j=r(1),A=j.a.Symbol,_=Object.prototype,O=_.hasOwnProperty,S=_.toString,k=A?A.toStringTag:void 0;var E=function(e){var t=O.call(e,k),r=e[k];try{e[k]=void 0;var n=!0}catch(e){}var o=S.call(e);return n&&(t?e[k]=r:delete e[k]),o},$=Object.prototype.toString;var C=function(e){return $.call(e)},I=A?A.toStringTag:void 0;var P=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":I&&I in Object(e)?E(e):C(e)};var x=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};var F,B=function(e){if(!x(e))return!1;var t=P(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},T=j.a["__core-js_shared__"],R=(F=/[^.]+$/.exec(T&&T.keys&&T.keys.IE_PROTO||""))?"Symbol(src)_1."+F:"";var M=function(e){return!!R&&R in e},D=Function.prototype.toString;var H=function(e){if(null!=e){try{return D.call(e)}catch(e){}try{return e+""}catch(e){}}return""},L=/^\[object .+?Constructor\]$/,z=Function.prototype,N=Object.prototype,V=z.toString,U=N.hasOwnProperty,q=RegExp("^"+V.call(U).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var W=function(e){return!(!x(e)||M(e))&&(B(e)?q:L).test(H(e))};var K=function(e,t){return null==e?void 0:e[t]};var G=function(e,t){var r=K(e,t);return W(r)?r:void 0},Q=G(j.a,"Map"),J=G(Object,"create");var X=function(){this.__data__=J?J(null):{},this.size=0};var Y=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Z=Object.prototype.hasOwnProperty;var ee=function(e){var t=this.__data__;if(J){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return Z.call(t,e)?t[e]:void 0},te=Object.prototype.hasOwnProperty;var re=function(e){var t=this.__data__;return J?void 0!==t[e]:te.call(t,e)};var ne=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=J&&void 0===t?"__lodash_hash_undefined__":t,this};function oe(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}oe.prototype.clear=X,oe.prototype.delete=Y,oe.prototype.get=ee,oe.prototype.has=re,oe.prototype.set=ne;var ie=oe;var le=function(){this.size=0,this.__data__={hash:new ie,map:new(Q||p),string:new ie}};var ae=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var ce=function(e,t){var r=e.__data__;return ae(t)?r["string"==typeof t?"string":"hash"]:r.map};var se=function(e){var t=ce(this,e).delete(e);return this.size-=t?1:0,t};var me=function(e){return ce(this,e).get(e)};var ue=function(e){return ce(this,e).has(e)};var de=function(e,t){var r=ce(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function he(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}he.prototype.clear=le,he.prototype.delete=se,he.prototype.get=me,he.prototype.has=ue,he.prototype.set=de;var fe=he;var be=function(e,t){var r=this.__data__;if(r instanceof p){var n=r.__data__;if(!Q||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new fe(n)}return r.set(e,t),this.size=r.size,this};function pe(e){var t=this.__data__=new p(e);this.size=t.size}pe.prototype.clear=v,pe.prototype.delete=g,pe.prototype.get=w,pe.prototype.has=y,pe.prototype.set=be;var ve=pe,ge=function(){try{var e=G(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();var we=function(e,t,r){"__proto__"==t&&ge?ge(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r};var ye=function(e,t,r){(void 0!==r&&!c(e[t],r)||void 0===r&&!(t in e))&&we(e,t,r)};var je=function(e){return function(t,r,n){for(var o=-1,i=Object(t),l=n(t),a=l.length;a--;){var c=l[e?a:++o];if(!1===r(i[c],c,i))break}return t}}(),Ae=r(7),_e=j.a.Uint8Array;var Oe=function(e){var t=new e.constructor(e.byteLength);return new _e(t).set(new _e(e)),t};var Se=function(e,t){var r=t?Oe(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)};var ke=function(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t},Ee=Object.create,$e=function(){function e(){}return function(t){if(!x(t))return{};if(Ee)return Ee(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();var Ce=function(e,t){return function(r){return e(t(r))}},Ie=Ce(Object.getPrototypeOf,Object),Pe=Object.prototype;var xe=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Pe)};var Fe=function(e){return"function"!=typeof e.constructor||xe(e)?{}:$e(Ie(e))};var Be=function(e){return null!=e&&"object"==typeof e};var Te=function(e){return Be(e)&&"[object Arguments]"==P(e)},Re=Object.prototype,Me=Re.hasOwnProperty,De=Re.propertyIsEnumerable,He=Te(function(){return arguments}())?Te:function(e){return Be(e)&&Me.call(e,"callee")&&!De.call(e,"callee")},Le=Array.isArray;var ze=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991};var Ne=function(e){return null!=e&&ze(e.length)&&!B(e)};var Ve=function(e){return Be(e)&&Ne(e)},Ue=r(4),qe=Function.prototype,We=Object.prototype,Ke=qe.toString,Ge=We.hasOwnProperty,Qe=Ke.call(Object);var Je=function(e){if(!Be(e)||"[object Object]"!=P(e))return!1;var t=Ie(e);if(null===t)return!0;var r=Ge.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&Ke.call(r)==Qe},Xe={};Xe["[object Float32Array]"]=Xe["[object Float64Array]"]=Xe["[object Int8Array]"]=Xe["[object Int16Array]"]=Xe["[object Int32Array]"]=Xe["[object Uint8Array]"]=Xe["[object Uint8ClampedArray]"]=Xe["[object Uint16Array]"]=Xe["[object Uint32Array]"]=!0,Xe["[object Arguments]"]=Xe["[object Array]"]=Xe["[object ArrayBuffer]"]=Xe["[object Boolean]"]=Xe["[object DataView]"]=Xe["[object Date]"]=Xe["[object Error]"]=Xe["[object Function]"]=Xe["[object Map]"]=Xe["[object Number]"]=Xe["[object Object]"]=Xe["[object RegExp]"]=Xe["[object Set]"]=Xe["[object String]"]=Xe["[object WeakMap]"]=!1;var Ye=function(e){return Be(e)&&ze(e.length)&&!!Xe[P(e)]};var Ze=function(e){return function(t){return e(t)}},et=r(3),tt=et.a&&et.a.isTypedArray,rt=tt?Ze(tt):Ye;var nt=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]},ot=Object.prototype.hasOwnProperty;var it=function(e,t,r){var n=e[t];ot.call(e,t)&&c(n,r)&&(void 0!==r||t in e)||we(e,t,r)};var lt=function(e,t,r,n){var o=!r;r||(r={});for(var i=-1,l=t.length;++i<l;){var a=t[i],c=n?n(r[a],e[a],a,r,e):void 0;void 0===c&&(c=e[a]),o?we(r,a,c):it(r,a,c)}return r};var at=function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n},ct=/^(?:0|[1-9]\d*)$/;var st=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&ct.test(e))&&e>-1&&e%1==0&&e<t},mt=Object.prototype.hasOwnProperty;var ut=function(e,t){var r=Le(e),n=!r&&He(e),o=!r&&!n&&Object(Ue.a)(e),i=!r&&!n&&!o&&rt(e),l=r||n||o||i,a=l?at(e.length,String):[],c=a.length;for(var s in e)!t&&!mt.call(e,s)||l&&("length"==s||o&&("offset"==s||"parent"==s)||i&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||st(s,c))||a.push(s);return a};var dt=function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t},ht=Object.prototype.hasOwnProperty;var ft=function(e){if(!x(e))return dt(e);var t=xe(e),r=[];for(var n in e)("constructor"!=n||!t&&ht.call(e,n))&&r.push(n);return r};var bt=function(e){return Ne(e)?ut(e,!0):ft(e)};var pt=function(e){return lt(e,bt(e))};var vt=function(e,t,r,n,o,i,l){var a=nt(e,r),c=nt(t,r),s=l.get(c);if(s)ye(e,r,s);else{var m=i?i(a,c,r+"",e,t,l):void 0,u=void 0===m;if(u){var d=Le(c),h=!d&&Object(Ue.a)(c),f=!d&&!h&&rt(c);m=c,d||h||f?Le(a)?m=a:Ve(a)?m=ke(a):h?(u=!1,m=Object(Ae.a)(c,!0)):f?(u=!1,m=Se(c,!0)):m=[]:Je(c)||He(c)?(m=a,He(a)?m=pt(a):x(a)&&!B(a)||(m=Fe(c))):u=!1}u&&(l.set(c,m),o(m,c,n,i,l),l.delete(c)),ye(e,r,m)}};var gt=function e(t,r,n,o,i){t!==r&&je(r,(function(l,a){if(i||(i=new ve),x(l))vt(t,r,a,n,e,o,i);else{var c=o?o(nt(t,a),l,a+"",t,r,i):void 0;void 0===c&&(c=l),ye(t,a,c)}}),bt)};var wt=function(e){return e};var yt=function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)},jt=Math.max;var At=function(e,t,r){return t=jt(void 0===t?e.length-1:t,0),function(){for(var n=arguments,o=-1,i=jt(n.length-t,0),l=Array(i);++o<i;)l[o]=n[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=n[o];return a[t]=r(l),yt(e,this,a)}};var _t=function(e){return function(){return e}},Ot=ge?function(e,t){return ge(e,"toString",{configurable:!0,enumerable:!1,value:_t(t),writable:!0})}:wt,St=Date.now;var kt=function(e){var t=0,r=0;return function(){var n=St(),o=16-(n-r);if(r=n,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Ot);var Et=function(e,t){return kt(At(e,t,wt),e+"")};var $t=function(e,t,r){if(!x(r))return!1;var n=typeof t;return!!("number"==n?Ne(r)&&st(t,r.length):"string"==n&&t in r)&&c(r[t],e)};var Ct=function(e){return Et((function(t,r){var n=-1,o=r.length,i=o>1?r[o-1]:void 0,l=o>2?r[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,l&&$t(r[0],r[1],l)&&(i=o<3?void 0:i,o=1),t=Object(t);++n<o;){var a=r[n];a&&e(t,a,n,i)}return t}))}((function(e,t,r,n){gt(e,t,r,n)}));class It extends n.Plugin{constructor(e){super(e),this._definitions=new Map}static get pluginName(){return"DataSchema"}init(){for(const e of i)this.registerBlockElement(e);for(const e of l)this.registerInlineElement(e)}registerBlockElement(e){this._definitions.set(e.model,{...e,isBlock:!0})}registerInlineElement(e){this._definitions.set(e.model,{...e,isInline:!0})}extendBlockElement(e){this._extendDefinition({...e,isBlock:!0})}extendInlineElement(e){this._extendDefinition({...e,isInline:!0})}getDefinitionsForView(e,t){const r=new Set;for(const n of this._getMatchingViewDefinitions(e)){if(t)for(const e of this._getReferences(n.model))r.add(e);r.add(n)}return r}_getMatchingViewDefinitions(e){return Array.from(this._definitions.values()).filter(t=>t.view&&function(e,t){if("string"==typeof e)return e===t;if(e instanceof RegExp)return e.test(t);return!1}(e,t.view))}*_getReferences(e){const{modelSchema:t}=this._definitions.get(e);if(!t)return;const r=["inheritAllFrom","inheritTypesFrom","allowWhere","allowContentOf","allowAttributesOf"];for(const n of r)for(const r of Object(o.toArray)(t[n]||[])){const t=this._definitions.get(r);r!==e&&t&&(yield*this._getReferences(t.model),yield t)}}_extendDefinition(e){const t=this._definitions.get(e.model),r=Ct({},t,e,(e,t)=>Array.isArray(e)?e.concat(t):void 0);this._definitions.set(e.model,r)}}var Pt=r(10),xt=r(8);var Ft=function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););return e},Bt=Ce(Object.keys,Object),Tt=Object.prototype.hasOwnProperty;var Rt=function(e){if(!xe(e))return Bt(e);var t=[];for(var r in Object(e))Tt.call(e,r)&&"constructor"!=r&&t.push(r);return t};var Mt=function(e){return Ne(e)?ut(e):Rt(e)};var Dt=function(e,t){return e&<(t,Mt(t),e)};var Ht=function(e,t){return e&<(t,bt(t),e)};var Lt=function(e,t){for(var r=-1,n=null==e?0:e.length,o=0,i=[];++r<n;){var l=e[r];t(l,r,e)&&(i[o++]=l)}return i};var zt=function(){return[]},Nt=Object.prototype.propertyIsEnumerable,Vt=Object.getOwnPropertySymbols,Ut=Vt?function(e){return null==e?[]:(e=Object(e),Lt(Vt(e),(function(t){return Nt.call(e,t)})))}:zt;var qt=function(e,t){return lt(e,Ut(e),t)};var Wt=function(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e},Kt=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Wt(t,Ut(e)),e=Ie(e);return t}:zt;var Gt=function(e,t){return lt(e,Kt(e),t)};var Qt=function(e,t,r){var n=t(e);return Le(e)?n:Wt(n,r(e))};var Jt=function(e){return Qt(e,Mt,Ut)};var Xt=function(e){return Qt(e,bt,Kt)},Yt=G(j.a,"DataView"),Zt=G(j.a,"Promise"),er=G(j.a,"Set"),tr=G(j.a,"WeakMap"),rr=H(Yt),nr=H(Q),or=H(Zt),ir=H(er),lr=H(tr),ar=P;(Yt&&"[object DataView]"!=ar(new Yt(new ArrayBuffer(1)))||Q&&"[object Map]"!=ar(new Q)||Zt&&"[object Promise]"!=ar(Zt.resolve())||er&&"[object Set]"!=ar(new er)||tr&&"[object WeakMap]"!=ar(new tr))&&(ar=function(e){var t=P(e),r="[object Object]"==t?e.constructor:void 0,n=r?H(r):"";if(n)switch(n){case rr:return"[object DataView]";case nr:return"[object Map]";case or:return"[object Promise]";case ir:return"[object Set]";case lr:return"[object WeakMap]"}return t});var cr=ar,sr=Object.prototype.hasOwnProperty;var mr=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&sr.call(e,"index")&&(r.index=e.index,r.input=e.input),r};var ur=function(e,t){var r=t?Oe(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)},dr=/\w*$/;var hr=function(e){var t=new e.constructor(e.source,dr.exec(e));return t.lastIndex=e.lastIndex,t},fr=A?A.prototype:void 0,br=fr?fr.valueOf:void 0;var pr=function(e){return br?Object(br.call(e)):{}};var vr=function(e,t,r){var n=e.constructor;switch(t){case"[object ArrayBuffer]":return Oe(e);case"[object Boolean]":case"[object Date]":return new n(+e);case"[object DataView]":return ur(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Se(e,r);case"[object Map]":return new n;case"[object Number]":case"[object String]":return new n(e);case"[object RegExp]":return hr(e);case"[object Set]":return new n;case"[object Symbol]":return pr(e)}};var gr=function(e){return Be(e)&&"[object Map]"==cr(e)},wr=et.a&&et.a.isMap,yr=wr?Ze(wr):gr;var jr=function(e){return Be(e)&&"[object Set]"==cr(e)},Ar=et.a&&et.a.isSet,_r=Ar?Ze(Ar):jr,Or={};Or["[object Arguments]"]=Or["[object Array]"]=Or["[object ArrayBuffer]"]=Or["[object DataView]"]=Or["[object Boolean]"]=Or["[object Date]"]=Or["[object Float32Array]"]=Or["[object Float64Array]"]=Or["[object Int8Array]"]=Or["[object Int16Array]"]=Or["[object Int32Array]"]=Or["[object Map]"]=Or["[object Number]"]=Or["[object Object]"]=Or["[object RegExp]"]=Or["[object Set]"]=Or["[object String]"]=Or["[object Symbol]"]=Or["[object Uint8Array]"]=Or["[object Uint8ClampedArray]"]=Or["[object Uint16Array]"]=Or["[object Uint32Array]"]=!0,Or["[object Error]"]=Or["[object Function]"]=Or["[object WeakMap]"]=!1;var Sr=function e(t,r,n,o,i,l){var a,c=1&r,s=2&r,m=4&r;if(n&&(a=i?n(t,o,i,l):n(t)),void 0!==a)return a;if(!x(t))return t;var u=Le(t);if(u){if(a=mr(t),!c)return ke(t,a)}else{var d=cr(t),h="[object Function]"==d||"[object GeneratorFunction]"==d;if(Object(Ue.a)(t))return Object(Ae.a)(t,c);if("[object Object]"==d||"[object Arguments]"==d||h&&!i){if(a=s||h?{}:Fe(t),!c)return s?Gt(t,Ht(a,t)):qt(t,Dt(a,t))}else{if(!Or[d])return i?t:{};a=vr(t,d,c)}}l||(l=new ve);var f=l.get(t);if(f)return f;l.set(t,a),_r(t)?t.forEach((function(o){a.add(e(o,r,n,o,t,l))})):yr(t)&&t.forEach((function(o,i){a.set(i,e(o,r,n,i,t,l))}));var b=u?void 0:(m?s?Xt:Jt:s?bt:Mt)(t);return Ft(b||t,(function(o,i){b&&(o=t[i=o]),it(a,i,e(o,r,n,i,t,l))})),a};var kr=function(e){return Sr(e,5)};function Er(e,t,r){if(t.attributes)for(const[n,o]of Object.entries(t.attributes))e.setAttribute(n,o,r);t.styles&&e.setStyle(t.styles,r),t.classes&&e.addClass(t.classes,r)}function $r(e,t){const r=kr(e);for(const n in t)Array.isArray(t[n])?r[n]=Array.from(new Set([...e[n],...t[n]])):r[n]={...e[n],...t[n]};return r}function Cr({model:e}){return(t,r)=>r.writer.createElement(e,{htmlContent:t.getCustomProperty("$rawContent")})}function Ir(e,{view:t,isInline:r}){const n=e.t;return(e,{writer:o,consumable:i})=>{const l=n("HTML object"),a=o.createContainerElement(r?"span":"div",{class:"html-object-embed","data-html-object-embed-label":l},{isAllowedInsideAttributeElement:r}),c=Pr(t,e,o);o.addClass("html-object-embed__content",c);const s=e.getAttribute("htmlAttributes");return s&&i.consume(e,"attribute:htmlAttributes:"+e.name)&&Er(o,s,c),o.insert(o.createPositionAt(a,0),c),Object(xt.toWidget)(a,o,{widgetLabel:l})}}function Pr(e,t,r){return r.createRawElement(e,null,(e,r)=>{r.setContentOf(e,t.getAttribute("htmlContent"))})}function xr({priority:e,view:t}){return(r,n)=>{if(!r)return;const{writer:o}=n,i=o.createAttributeElement(t,null,{priority:e});return Er(o,r,i),i}}function Fr({view:e},t){return r=>{r.on("element:"+e,(e,r,n)=>{if(!r.modelRange)return;const o=t._consumeAllowedAttributes(r.viewItem,n);o&&n.writer.setAttribute("htmlAttributes",o,r.modelRange)},{priority:"low"})}}function Br({model:e}){return t=>{t.on("attribute:htmlAttributes:"+e,(e,t,r)=>{const n=t.attributeNewValue;if(!r.consumable.consume(t.item,e.name))return;Er(r.writer,n,r.mapper.toViewElement(t.item))})}}var Tr=function(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o};var Rr=function(e,t,r,n){for(var o=e.length,i=r+(n?1:-1);n?i--:++i<o;)if(t(e[i],i,e))return i;return-1};var Mr=function(e){return e!=e};var Dr=function(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1};var Hr=function(e,t,r){return t==t?Dr(e,t,r):Rr(e,Mr,r)};var Lr=function(e,t,r,n){for(var o=r-1,i=e.length;++o<i;)if(n(e[o],t))return o;return-1},zr=Array.prototype.splice;var Nr=function(e,t,r,n){var o=n?Lr:Hr,i=-1,l=t.length,a=e;for(e===t&&(t=ke(t)),r&&(a=Tr(e,Ze(r)));++i<l;)for(var c=0,s=t[i],m=r?r(s):s;(c=o(a,m,c,n))>-1;)a!==e&&zr.call(a,c,1),zr.call(e,c,1);return e};var Vr=Et((function(e,t){return e&&e.length&&t&&t.length?Nr(e,t):e}));r(14);class Ur extends n.Plugin{constructor(e){super(e),this._dataSchema=e.plugins.get("DataSchema"),this._allowedAttributes=new Pt.Matcher,this._disallowedAttributes=new Pt.Matcher,this._allowedElements=new Set,this._dataInitialized=!1,this._registerElementsAfterInit(),this._registerElementHandlers()}static get pluginName(){return"DataFilter"}static get requires(){return[It,xt.Widget]}loadAllowedConfig(e){this._loadConfig(e,e=>this.allowAttributes(e))}loadDisallowedConfig(e){this._loadConfig(e,e=>this.disallowAttributes(e))}allowElement(e){for(const t of this._dataSchema.getDefinitionsForView(e,!0))this._allowedElements.has(t)||(this._allowedElements.add(t),this._dataInitialized&&this._fireRegisterEvent(t))}allowAttributes(e){this._allowedAttributes.add(e)}disallowAttributes(e){this._disallowedAttributes.add(e)}_loadConfig(e,t){for(const r of e){const e=r.name||/[\s\S]+/;this.allowElement(e),Qr(r).forEach(t)}}_consumeAllowedAttributes(e,t){return qr(e,t,this._disallowedAttributes),qr(e,t,this._allowedAttributes)}_registerElementsAfterInit(){this.editor.data.on("init",()=>{this._dataInitialized=!0;for(const e of this._allowedElements)this._fireRegisterEvent(e)},{priority:o.priorities.get("high")+1})}_registerElementHandlers(){this.on("register",(e,t)=>{const r=this.editor.model.schema;if(t.isObject&&!r.isRegistered(t.model))this._registerObjectElement(t);else if(t.isBlock)this._registerBlockElement(t);else{if(!t.isInline)throw new o.CKEditorError("data-filter-invalid-definition",null,t);this._registerInlineElement(t)}e.stop()},{priority:"lowest"})}_fireRegisterEvent(e){this.fire(e.view?"register:"+e.view:"register",e)}_registerObjectElement(e){const t=this.editor,r=t.model.schema,n=t.conversion,{view:i,model:l}=e;r.register(l,e.modelSchema),i&&(r.extend(e.model,{allowAttributes:["htmlAttributes","htmlContent"]}),t.data.registerRawContentMatcher({name:i}),n.for("upcast").elementToElement({view:i,model:Cr(e),converterPriority:o.priorities.get("low")+1}),n.for("upcast").add(Fr(e,this)),n.for("editingDowncast").elementToElement({model:l,view:Ir(t,e)}),n.for("dataDowncast").elementToElement({model:l,view:(e,{writer:t})=>Pr(i,e,t)}),n.for("dataDowncast").add(Br(e)))}_registerBlockElement(e){const t=this.editor,r=t.model.schema,n=t.conversion,{view:i,model:l}=e;if(!r.isRegistered(e.model)){if(r.register(e.model,e.modelSchema),!i)return;n.for("upcast").elementToElement({model:l,view:i,converterPriority:o.priorities.get("low")+1}),n.for("downcast").elementToElement({model:l,view:i})}i&&(r.extend(e.model,{allowAttributes:"htmlAttributes"}),n.for("upcast").add(Fr(e,this)),n.for("downcast").add(Br(e)))}_registerInlineElement(e){const t=this.editor,r=t.model.schema,n=t.conversion,o=e.model;r.extend("$text",{allowAttributes:o}),e.attributeProperties&&r.setAttributeProperties(o,e.attributeProperties),n.for("upcast").add(function({view:e,model:t},r){return n=>{n.on("element:"+e,(e,n,o)=>{const i=r._consumeAllowedAttributes(n.viewItem,o);n.modelRange||(n=Object.assign(n,o.convertChildren(n.viewItem,n.modelCursor)));for(const e of n.modelRange.getItems())if(o.schema.checkAttribute(e,t)){const r=$r(i||{},e.getAttribute(t)||{});o.writer.setAttribute(t,r,e)}},{priority:"low"})}}(e,this)),n.for("downcast").attributeToElement({model:o,view:xr(e)})}}function qr(e,t,r){const n=function(e,{consumable:t},r){const n=r.matchAll(e)||[],o=[];for(const r of n)Wr(t,e,r),delete r.match.name,t.consume(e,r.match)&&o.push(r);return o}(e,t,r),{attributes:o,styles:i,classes:l}=function(e){const t={attributes:new Set,classes:new Set,styles:new Set};for(const r of e)for(const e in t){(r.match[e]||[]).forEach(r=>t[e].add(r))}return t}(n),a={};return o.size&&(a.attributes=Kr(o,t=>e.getAttribute(t))),i.size&&(a.styles=Kr(i,t=>e.getStyle(t))),l.size&&(a.classes=Array.from(l)),Object.keys(a).length?a:null}function Wr(e,t,r){for(const n of["attributes","classes","styles"]){const o=r.match[n];if(o)for(const r of o)e.test(t,{[n]:[r]})||Vr(o,r)}}function Kr(e,t){const r={};for(const n of e){void 0!==t(n)&&(r[n]=t(n))}return r}function Gr(e,t){const{name:r}=e;return Je(e[t])?Object.entries(e[t]).map(([e,n])=>({name:r,[t]:{[e]:n}})):Array.isArray(e[t])?e[t].map(e=>({name:r,[t]:[e]})):[e]}function Qr(e){const{name:t,attributes:r,classes:n,styles:o}=e,i=[];return r&&i.push(...Gr({name:t,attributes:r},"attributes")),n&&i.push(...Gr({name:t,classes:n},"classes")),o&&i.push(...Gr({name:t,styles:o},"styles")),i}class Jr extends n.Plugin{static get requires(){return[Ur]}init(){if(!this.editor.plugins.has("CodeBlockEditing"))return;const e=this.editor.plugins.get(Ur);e.on("register:pre",(t,r)=>{if("codeBlock"!==r.model)return;const n=this.editor,o=n.model.schema,i=n.conversion;o.extend("codeBlock",{allowAttributes:["htmlAttributes","htmlContentAttributes"]}),i.for("upcast").add(function(e){return t=>{t.on("element:code",(t,r,n)=>{const o=r.viewItem,i=o.parent;function l(t,o){const i=e._consumeAllowedAttributes(t,n);i&&n.writer.setAttribute(o,i,r.modelRange)}i&&i.is("element","pre")&&(l(i,"htmlAttributes"),l(o,"htmlContentAttributes"))},{priority:"low"})}}(e)),i.for("downcast").add(e=>{e.on("attribute:htmlAttributes:codeBlock",(e,t,r)=>{if(!r.consumable.consume(t.item,e.name))return;const n=r.mapper.toViewElement(t.item).parent;Er(r.writer,t.attributeNewValue,n)}),e.on("attribute:htmlContentAttributes:codeBlock",(e,t,r)=>{if(!r.consumable.consume(t.item,e.name))return;const n=r.mapper.toViewElement(t.item);Er(r.writer,t.attributeNewValue,n)})}),t.stop()})}}class Xr extends n.Plugin{static get requires(){return[Ur]}init(){this.editor.plugins.get(Ur).on("register",(e,t)=>{const r=this.editor,n=r.model.schema,i=r.conversion;if(!t.paragraphLikeModel)return;if(n.isRegistered(t.model)||n.isRegistered(t.paragraphLikeModel))return;const l={model:t.paragraphLikeModel,view:t.view};n.register(t.model,t.modelSchema),n.register(l.model,{inheritAllFrom:"$block"}),i.for("upcast").elementToElement({view:t.view,model:(e,{writer:r})=>this._hasBlockContent(e)?r.createElement(t.model):r.createElement(l.model),converterPriority:o.priorities.get("low")+1}),i.for("downcast").elementToElement({view:t.view,model:t.model}),this._addAttributeConversion(t),i.for("downcast").elementToElement({view:l.view,model:l.model}),this._addAttributeConversion(l),e.stop()})}_hasBlockContent(e){const t=this.editor.editing.view.domConverter.blockElements;return Array.from(e.getChildren()).some(e=>t.includes(e.name))}_addAttributeConversion(e){const t=this.editor,r=t.conversion,n=t.plugins.get(Ur);t.model.schema.extend(e.model,{allowAttributes:"htmlAttributes"}),r.for("upcast").add(Fr(e,n)),r.for("downcast").add(Br(e))}}class Yr extends n.Plugin{static get requires(){return[It]}init(){const e=this.editor;if(!e.plugins.has("HeadingEditing"))return;const t=e.plugins.get(It),r=e.config.get("heading.options"),n=[];for(const e of r)"model"in e&&"view"in e&&(t.registerBlockElement({view:e.view,model:e.model}),n.push(e.model));t.extendBlockElement({model:"htmlHgroup",modelSchema:{allowChildren:n}})}}class Zr extends n.Plugin{static get requires(){return[Ur]}init(){const e=this.editor;if(!e.plugins.has("ImageInlineEditing")&&!e.plugins.has("ImageBlockEditing"))return;const t=e.model.schema,r=e.conversion,n=e.plugins.get(Ur);n.on("register:img",(e,o)=>{"imageBlock"!==o.model&&"imageInline"!==o.model||(t.isRegistered("imageBlock")&&t.extend("imageBlock",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlLinkAttributes"]}),t.isRegistered("imageInline")&&t.extend("imageInline",{allowAttributes:["htmlA","htmlAttributes"]}),r.for("upcast").add(function(e){return t=>{t.on("element:img",(t,r,n)=>{const o=r.viewItem,i=o.parent;function l(t,o){const i=e._consumeAllowedAttributes(t,n);i&&n.writer.setAttribute(o,i,r.modelRange)}l(o,"htmlAttributes"),i.is("element","figure")?l(i,"htmlFigureAttributes"):i.is("element","a")&&function(e){r.modelRange&&r.modelRange.getContainedElement().is("element","imageBlock")&&l(e,"htmlLinkAttributes");e.parent.is("element","figure")&&l(e.parent,"htmlFigureAttributes")}(i)},{priority:"low"})}}(n)),r.for("downcast").add(e=>{var t;function r(t,r){e.on(`attribute:${r}:imageBlock`,(e,r,n)=>{if(!n.consumable.consume(r.item,e.name))return;const o=n.mapper.toViewElement(r.item),i=en(n.writer,o,t);Er(n.writer,r.attributeNewValue,i)},{priority:"low"})}t="htmlAttributes",e.on(`attribute:${t}:imageInline`,(e,t,r)=>{if(!r.consumable.consume(t.item,e.name))return;const n=r.mapper.toViewElement(t.item);Er(r.writer,t.attributeNewValue,n)},{priority:"low"}),r("img","htmlAttributes"),r("figure","htmlFigureAttributes"),e.on("attribute:linkHref:imageBlock",(e,t,r)=>{if(!r.consumable.consume(t.item,"attribute:htmlLinkAttributes:imageBlock"))return;const n=r.mapper.toViewElement(t.item),o=en(r.writer,n,"a");Er(r.writer,t.item.getAttribute("htmlLinkAttributes"),o)},{priority:"low"})}),e.stop())})}}function en(e,t,r){const n=e.createRangeOn(t);for(const{item:e}of n.getWalker())if(e.is("element",r))return e}class tn extends n.Plugin{static get requires(){return[Ur]}init(){const e=this.editor;if(!e.plugins.has("MediaEmbed")||e.config.get("mediaEmbed.previewsInData"))return;const t=e.model.schema,r=e.conversion,n=this.editor.plugins.get(Ur),o=this.editor.plugins.get(It),i=e.config.get("mediaEmbed.elementName");o.registerBlockElement({model:"media",view:i}),n.on("register:"+i,(e,o)=>{"media"===o.model&&(t.extend("media",{allowAttributes:["htmlAttributes","htmlFigureAttributes"]}),r.for("upcast").add(function(e,t){return e=>{e.on("element:"+t,r)};function r(t,r,n){const o=r.viewItem,i=o.parent;function l(t,o){const i=e._consumeAllowedAttributes(t,n);i&&n.writer.setAttribute(o,i,r.modelRange)}l(o,"htmlAttributes"),i.is("element","figure")&&i.hasClass("media")&&l(i,"htmlFigureAttributes")}}(n,i)),r.for("dataDowncast").add(function(e){return t=>{function r(e,r){t.on(`attribute:${r}:media`,(t,r,n)=>{if(!n.consumable.consume(r.item,t.name))return;const o=n.mapper.toViewElement(r.item),i=function(e,t,r){const n=e.createRangeOn(t);for(const{item:e}of n.getWalker())if(e.is("element",r))return e}(n.writer,o,e);Er(n.writer,r.attributeNewValue,i)})}r(e,"htmlAttributes"),r("figure","htmlFigureAttributes")}}(i)),e.stop())})}}class rn extends n.Plugin{static get requires(){return[Ur]}init(){const e=this.editor;if(!e.plugins.has("TableEditing"))return;const t=e.model.schema,r=e.conversion,n=e.plugins.get(Ur);n.on("register:table",(e,o)=>{"table"===o.model&&(t.extend("table",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlTheadAttributes","htmlTbodyAttributes"]}),r.for("upcast").add(function(e){return t=>{t.on("element:table",(t,r,n)=>{const o=r.viewItem;l(o,"htmlAttributes");const i=o.parent;i.is("element","figure")&&l(i,"htmlFigureAttributes");for(const e of o.getChildren())e.is("element","thead")&&l(e,"htmlTheadAttributes"),e.is("element","tbody")&&l(e,"htmlTbodyAttributes");function l(t,o){const i=e._consumeAllowedAttributes(t,n);i&&n.writer.setAttribute(o,i,r.modelRange)}},{priority:"low"})}}(n)),r.for("downcast").add(e=>{function t(t,r){e.on(`attribute:${r}:table`,(e,r,n)=>{if(!n.consumable.consume(r.item,e.name))return;const o=n.mapper.toViewElement(r.item),i=function(e,t,r){const n=e.createRangeOn(t);for(const{item:e}of n.getWalker())if(e.is("element",r))return e}(n.writer,o,t);Er(n.writer,r.attributeNewValue,i)})}t("table","htmlAttributes"),t("figure","htmlFigureAttributes"),t("thead","htmlTheadAttributes"),t("tbody","htmlTbodyAttributes")}),e.stop())})}}class nn extends n.Plugin{static get pluginName(){return"GeneralHtmlSupport"}static get requires(){return[Ur,Jr,Xr,Yr,Zr,tn,rn]}init(){const e=this.editor,t=e.plugins.get(Ur);t.loadAllowedConfig(e.config.get("htmlSupport.allow")||[]),t.loadDisallowedConfig(e.config.get("htmlSupport.disallow")||[])}}class on extends n.Plugin{static get pluginName(){return"HtmlComment"}init(){const e=this.editor;e.model.schema.addAttributeCheck((e,t)=>{if(e.endsWith("$root")&&t.startsWith("$comment"))return!0}),e.conversion.for("upcast").elementToMarker({view:"$comment",model:(e,{writer:t})=>{const r=this.editor.model.document.getRoot(),n=e.getCustomProperty("$rawContent"),i="$comment:"+Object(o.uid)();return t.setAttribute(i,n,r),i}}),e.conversion.for("dataDowncast").markerToElement({model:"$comment",view:(e,{writer:t})=>{const r=this.editor.model.document.getRoot(),n=e.markerName,o=r.getAttribute(n),i=t.createUIElement("$comment");return t.setCustomProperty("$rawContent",o,i),i}}),e.model.document.registerPostFixer(t=>{const r=e.model.document.getRoot(),n=e.model.document.differ.getChangedMarkers().filter(e=>e.name.startsWith("$comment")).filter(e=>{const t=e.data.newRange;return t&&"$graveyard"===t.root.rootName});if(0===n.length)return!1;for(const e of n)t.removeMarker(e.name),t.removeAttribute(e.name,r);return!0}),e.data.on("set",()=>{for(const t of e.model.markers.getMarkersGroup("$comment"))this.removeHtmlComment(t.name)},{priority:"high"}),e.model.on("deleteContent",(t,[r])=>{for(const t of r.getRanges()){const r=e.model.schema.getLimitElement(t),n=e.model.createPositionAt(r,0),o=e.model.createPositionAt(r,"end");let i;i=n.isTouching(t.start)&&o.isTouching(t.end)?this.getHtmlCommentsInRange(e.model.createRange(n,o)):this.getHtmlCommentsInRange(t,{skipBoundaries:!0});for(const e of i)this.removeHtmlComment(e)}},{priority:"high"})}createHtmlComment(e,t){const r=Object(o.uid)(),n=this.editor.model,i=n.document.getRoot(),l="$comment:"+r;return n.change(r=>{const n=r.createRange(e);return r.addMarker(l,{usingOperation:!0,affectsData:!0,range:n}),r.setAttribute(l,t,i),l})}removeHtmlComment(e){const t=this.editor,r=t.model.document.getRoot(),n=t.model.markers.get(e);return!!n&&(t.model.change(t=>{t.removeMarker(n),t.removeAttribute(e,r)}),!0)}getHtmlCommentData(e){const t=this.editor,r=t.model.markers.get(e),n=t.model.document.getRoot();return r?{content:n.getAttribute(e),position:r.getStart()}:null}getHtmlCommentsInRange(e,{skipBoundaries:t=!1}={}){const r=!t;return Array.from(this.editor.model.markers.getMarkersGroup("$comment")).filter(t=>function(e,t){const n=e.getRange().start;return(n.isAfter(t.start)||r&&n.isEqual(t.start))&&(n.isBefore(t.end)||r&&n.isEqual(t.end))}(t,e)).map(e=>e.name)}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/image.js b/core/assets/vendor/ckeditor5/image.js new file mode 100644 index 000000000000..7cd670421a00 --- /dev/null +++ b/core/assets/vendor/ckeditor5/image.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"Break text":"Break text","Centered image":"Centered image","Change image text alternative":"Change image text alternative","Enter image caption":"Enter image caption","Full size image":"Full size image","Image resize list":"Image resize list","Image toolbar":"Image toolbar","image widget":"image widget","In line":"In line",Insert:"Insert","Insert image":"Insert image","Insert image via URL":"Insert image via URL","Left aligned image":"Left aligned image",Original:"Original","Resize image":"Resize image","Resize image to %0":"Resize image to %0","Resize image to the original size":"Resize image to the original size","Right aligned image":"Right aligned image","Side image":"Side image","Text alternative":"Text alternative",Update:"Update","Update image URL":"Update image URL","Upload failed":"Upload failed","Wrap text":"Wrap text"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.image=function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=34)}([function(e,t,i){e.exports=i(7)("./src/core.js")},function(e,t,i){e.exports=i(7)("./src/ui.js")},function(e,t,i){e.exports=i(7)("./src/utils.js")},function(e,t,i){e.exports=i(7)("./src/widget.js")},function(e,t,i){e.exports=i(7)("./src/engine.js")},function(e,t,i){"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},a=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),s=[];function r(e){for(var t=-1,i=0;i<s.length;i++)if(s[i].identifier===e){t=i;break}return t}function l(e,t){for(var i={},n=[],o=0;o<e.length;o++){var a=e[o],l=t.base?a[0]+t.base:a[0],c=i[l]||0,g="".concat(l," ").concat(c);i[l]=c+1;var d=r(g),m={css:a[1],media:a[2],sourceMap:a[3]};-1!==d?(s[d].references++,s[d].updater(m)):s.push({identifier:g,updater:f(m,t),references:1}),n.push(g)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var s=a(e.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(t)}return t}var g,d=(g=[],function(e,t){return g[e]=t,g.filter(Boolean).join("\n")});function m(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var a=document.createTextNode(o),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(a,s[t]):e.appendChild(a)}}function u(e,t,i){var n=i.css,o=i.media,a=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),a&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var p=null,h=0;function f(e,t){var i,n,o;if(t.singleton){var a=h++;i=p||(p=c(t)),n=m.bind(null,i,a,!1),o=m.bind(null,i,a,!0)}else i=c(t),n=u.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=l(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=r(i[n]);s[o].references--}for(var a=l(e,t),c=0;c<i.length;c++){var g=r(i[c]);0===s[g].references&&(s[g].updater(),s.splice(g,1))}i=a}}}},function(e,t,i){e.exports=i(7)("./src/upload.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,i){e.exports=i(7)("./src/clipboard.js")},function(e,t,i){var n=i(5),o=i(17);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t,i){e.exports=i(7)("./src/undo.js")},function(e,t,i){e.exports=i(7)("./src/typing.js")},,function(e,t,i){var n=i(5),o=i(14);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}"},function(e,t,i){var n=i(5),o=i(16);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports='.ck-vertical-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-text-width)*0.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-large);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after,[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}'},function(e,t){e.exports=".ck-content .image{display:table;clear:both;text-align:center;margin:.9em auto;min-width:50px}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{display:inline-flex;max-width:100%;align-items:flex-start}.ck-content .image-inline picture{display:flex}.ck-content .image-inline img,.ck-content .image-inline picture{flex-grow:1;flex-shrink:1;max-width:100%}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{padding-left:inherit;padding-right:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ck.ck-editor__editable .image-inline.ck-widget_selected,.ck.ck-editor__editable .image.ck-widget_selected{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}"},function(e,t,i){var n=i(5),o=i(19);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highligted-background:#fd0}.ck-content .image>figcaption{display:table-caption;caption-side:bottom;word-break:break-word;color:var(--ck-color-image-caption-text);background-color:var(--ck-color-image-caption-background);padding:.6em;font-size:.75em;outline-offset:-1px}.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highligted-background)}to{background-color:var(--ck-color-image-caption-background)}}"},function(e,t,i){var n=i(5),o=i(21);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image-inline .ck-progress-bar,.ck.ck-editor__editable .image .ck-progress-bar{position:absolute;top:0;left:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image-inline .ck-progress-bar,.ck.ck-editor__editable .image .ck-progress-bar{height:2px;width:0;background:var(--ck-color-upload-bar-background);transition:width .1s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}"},function(e,t,i){var n=i(5),o=i(23);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports='.ck-image-upload-complete-icon{display:block;position:absolute;top:min(var(--ck-spacing-medium),6%);right:min(var(--ck-spacing-medium),6%);border-radius:50%;z-index:1}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20;--ck-image-upload-icon-width:2px;--ck-image-upload-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck-image-upload-complete-icon{opacity:0;background:var(--ck-color-image-upload-icon-background);animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;animation-fill-mode:forwards,forwards;animation-duration:.5s,.5s;font-size:calc(1px*var(--ck-image-upload-icon-size));animation-delay:0ms,3s;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{left:25%;top:50%;opacity:0;height:0;width:0;transform:scaleX(-1) rotate(135deg);transform-origin:left top;border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);animation-name:ck-upload-complete-icon-check;animation-duration:.5s;animation-delay:.5s;animation-fill-mode:forwards;box-sizing:border-box}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{opacity:1;width:0;height:0}33%{width:.3em;height:0}to{opacity:1;width:.3em;height:.45em}}'},function(e,t,i){var n=i(5),o=i(25);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports='.ck .ck-upload-placeholder-loader{position:absolute;display:flex;align-items:center;justify-content:center;top:0;left:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px}.ck .ck-image-upload-placeholder{width:100%;margin:0}.ck .ck-upload-placeholder-loader{width:100%;height:100%}.ck .ck-upload-placeholder-loader:before{width:var(--ck-upload-placeholder-loader-size);height:var(--ck-upload-placeholder-loader-size);border-radius:50%;border-top:3px solid var(--ck-color-upload-placeholder-loader);border-right:2px solid transparent;animation:ck-upload-placeholder-loader 1s linear infinite}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}'},function(e,t,i){var n=i(5),o=i(27);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-image-insert-form:focus{outline:none}.ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-image-insert-form__action-row{margin-top:var(--ck-spacing-standard)}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}"},function(e,t,i){var n=i(5),o=i(29);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-image-insert__panel{padding:var(--ck-spacing-large)}.ck.ck-image-insert__ck-finder-button{display:block;width:100%;margin:var(--ck-spacing-standard) auto;border:1px solid #ccc;border-radius:var(--ck-border-radius)}.ck.ck-splitbutton>.ck-file-dialog-button.ck-button{padding:0;margin:0;border:none}"},function(e,t,i){var n=i(5),o=i(31);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports=".ck-content .image.image_resized{max-width:100%;display:block;box-sizing:border-box}.ck-content .image.image_resized img{width:100%}.ck-content .image.image_resized>figcaption{display:block}.ck.ck-editor__editable td .image-inline.image_resized img,.ck.ck-editor__editable th .image-inline.image_resized img{max-width:100%}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label{width:4em}"},function(e,t,i){var n=i(5),o=i(33);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,a);e.exports=o.locals||{}},function(e,t){e.exports=":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image-style-block-align-left,.ck-content .image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image-style-align-left,.ck-content .image-style-align-right{clear:none}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-block-align-right{margin-right:0;margin-left:auto}.ck-content .image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content p+.image-style-align-left,.ck-content p+.image-style-align-right,.ck-content p+.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-top:var(--ck-inline-image-style-spacing);margin-bottom:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-left{margin-right:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-right{margin-left:var(--ck-inline-image-style-spacing)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-background)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after{display:none}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-hover-background)}"},function(e,t,i){"use strict";i.r(t),i.d(t,"AutoImage",(function(){return f})),i.d(t,"Image",(function(){return U})),i.d(t,"ImageEditing",(function(){return S})),i.d(t,"ImageCaption",(function(){return D})),i.d(t,"ImageCaptionEditing",(function(){return N})),i.d(t,"ImageInsert",(function(){return re})),i.d(t,"ImageInsertUI",(function(){return se})),i.d(t,"ImageResize",(function(){return he})),i.d(t,"ImageResizeButtons",(function(){return de})),i.d(t,"ImageResizeEditing",(function(){return ce})),i.d(t,"ImageResizeHandles",(function(){return pe})),i.d(t,"ImageStyle",(function(){return je})),i.d(t,"ImageStyleEditing",(function(){return Ae})),i.d(t,"ImageStyleUI",(function(){return Re})),i.d(t,"ImageTextAlternative",(function(){return y})),i.d(t,"ImageTextAlternativeEditing",(function(){return k})),i.d(t,"ImageTextAlternativeUI",(function(){return _})),i.d(t,"ImageToolbar",(function(){return Ne})),i.d(t,"ImageUpload",(function(){return ie})),i.d(t,"ImageUploadEditing",(function(){return ee})),i.d(t,"ImageUploadProgress",(function(){return K})),i.d(t,"ImageUploadUI",(function(){return H}));var n=i(0),o=i(8),a=i(4),s=i(10),r=i(11),l=i(2),c=i(3);function g(e,t){const i=e.createEmptyElement("img"),n="imageBlock"===t?e.createContainerElement("figure",{class:"image"}):e.createContainerElement("span",{class:"image-inline"},{isAllowedInsideAttributeElement:!0});return e.insert(e.createPositionAt(n,0),i),n}function d(e,t){if(e.plugins.has("ImageInlineEditing")!==e.plugins.has("ImageBlockEditing"))return{name:"img"};const i=e.plugins.get("ImageUtils");return e=>{if(!i.isInlineImageView(e))return null;return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:{name:!0}}}function m(e,t){const i=Object(l.first)(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class u extends n.Plugin{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,a=o.document.selection;i=p(n,t||a,i),e={...Object.fromEntries(a.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change(n=>{const s=n.createElement(i,e);return t||"imageInline"==i||(t=Object(c.findOptimalInsertionRange)(a,o)),o.insertContent(s,t),s.parent?(n.setSelection(s,"on"),s):null})}getClosestSelectedImageWidget(e){const t=e.getSelectedElement();if(t&&this.isImageWidget(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&this.isImageWidget(i))return i;i=i.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==p(e,t)){const i=function(e,t){const i=Object(c.findOptimalInsertionRange)(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every(e=>!e.is("element","imageBlock"))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return Object(c.toWidget)(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&Object(c.isWidget)(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function p(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?m(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}const h=new RegExp(String(/^(http(s)?:\/\/)?[\w-]+\.[\w.~:/[\]@!$&'()*+,;=%-]+/.source+/\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source+/(\?[\w.~:/[\]@!$&'()*+,;=%-]*)?/.source+/(#[\w.~:/[\]@!$&'()*+,;=%-]*)?$/.source));class f extends n.Plugin{static get requires(){return[o.Clipboard,u,s.Undo,r.Delete]}static get pluginName(){return"AutoImage"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",()=>{const e=t.selection.getFirstRange(),i=a.LivePosition.fromPosition(e.start);i.stickiness="toPrevious";const n=a.LivePosition.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",()=>{this._embedImageBetweenPositions(i,n),i.detach(),n.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(l.global.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedImageBetweenPositions(e,t){const i=this.editor,n=new a.LiveRange(e,t),o=n.getWalker({ignoreElementEnd:!0}),s=Object.fromEntries(i.model.document.selection.getAttributes()),r=this.editor.plugins.get("ImageUtils");let c="";for(const e of o)e.item.is("$textProxy")&&(c+=e.item.data);c=c.trim(),c.match(h)?(this._positionToInsert=a.LivePosition.fromPosition(e),this._timeoutId=l.global.window.setTimeout(()=>{i.commands.get("insertImage").isEnabled?(i.model.change(e=>{let t;this._timeoutId=null,e.remove(n),n.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert.toPosition()),r.insertImage({...s,src:c},t),this._positionToInsert.detach(),this._positionToInsert=null}),i.plugins.get("Delete").requestUndoOnBackspace()):n.detach()},100)):n.detach()}}class b extends n.Command{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change(t=>{t.setAttribute("alt",e.newValue,o)})}}class k extends n.Plugin{static get requires(){return[u]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new b(this.editor))}}var w=i(1);i(13),i(15);class I extends w.View{constructor(e){super(e);const t=this.locale.t;this.focusTracker=new l.FocusTracker,this.keystrokes=new l.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(t("Save"),n.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(t("Cancel"),n.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new w.ViewCollection,this._focusCycler=new w.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),Object(w.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),Object(w.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)})}_createButton(e,t,i,n){const o=new w.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new w.LabeledFieldView(this.locale,w.createLabeledInputText);return t.label=e("Text alternative"),t}}function v(e){const t=e.editing.view,i=w.BalloonPanelView.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.viewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast,i.viewportStickyNorth]}}class _ extends n.Plugin{static get requires(){return[w.ContextualBalloon]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",i=>{const o=e.commands.get("imageTextAlternative"),a=new w.ButtonView(i);return a.set({label:t("Change image text alternative"),icon:n.icons.lowVision,tooltip:!0}),a.bind("isEnabled").to(o,"isEnabled"),this.listenTo(a,"execute",()=>{this._showForm()}),a})}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new I(e.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this._form.keystrokes.set("Esc",(e,t)=>{this._hideForm(!0),t()}),this.listenTo(e.ui,"update",()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=v(e);t.updatePosition(i)}}(e):this._hideForm(!0)}),Object(w.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:v(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class y extends n.Plugin{static get requires(){return[k,_]}static get pluginName(){return"ImageTextAlternative"}}function x(e,t){return e=>{e.on("attribute:srcset:"+t,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function E(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class C extends a.Observer{observe(e){this.listenTo(e,"load",(e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)},{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class T extends n.Command{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&Object(l.logWarning)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&Object(l.logWarning)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=Object(l.toArray)(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const a=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})})}}class S extends n.Plugin{static get requires(){return[u]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(C),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new T(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class B extends n.Command{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change(e=>{const a=Array.from(t.markers).filter(e=>e.getRange().containsItem(n)),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const r=e.createRangeOn(s);for(const t of a){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(r,!0):r;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}}):null}}class A extends n.Plugin{static get requires(){return[S,u,o.ClipboardPipeline]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{isObject:!0,isBlock:!0,allowWhere:"$block",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new B(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageBlock",view:(e,{writer:t})=>g(t,"imageBlock")}),i.for("editingDowncast").elementToElement({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget(g(i,"imageBlock"),i,t("image widget"))}),i.for("downcast").add(E(n,"imageBlock","src")).add(E(n,"imageBlock","alt")).add(x(n,"imageBlock")),i.for("upcast").elementToElement({view:d(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!n.consumable.test(o,{name:!0}))return;const a=n.convertItem(o,i.modelCursor),s=Object(l.first)(a.modelRange.getItems());s&&(n.consumable.consume(i.viewItem,{name:!0,classes:"image"}),n.convertChildren(i.viewItem,s),n.updateConversionResult(s,i))}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isInlineImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageBlock"===m(t.schema,c)){const e=new a.UpcastWriter(i.document),t=r.map(t=>e.createElement("figure",{class:"image"},t));s.content=e.createDocumentFragment(t)}})}}i(9);class V extends n.Plugin{static get requires(){return[A,c.Widget,y]}static get pluginName(){return"ImageBlock"}}class z extends n.Plugin{static get requires(){return[S,u,o.ClipboardPipeline]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{isObject:!0,isInline:!0,allowWhere:"$text",allowAttributes:["alt","src","srcset"]}),t.addChildCheck((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new B(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToElement({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget(g(i,"imageInline"),i,t("image widget"))}),i.for("downcast").add(E(n,"imageInline","src")).add(E(n,"imageInline","alt")).add(x(n,"imageInline")),i.for("upcast").elementToElement({view:d(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(o,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isBlockImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageInline"===m(t.schema,c)){const e=new a.UpcastWriter(i.document),t=r.map(t=>1===t.childCount?(Array.from(t.getAttributes()).forEach(i=>e.setAttribute(...i,n.findViewImgElement(t))),t.getChild(0)):t);s.content=e.createDocumentFragment(t)}})}}class R extends n.Plugin{static get requires(){return[z,c.Widget,y]}static get pluginName(){return"ImageInline"}}class U extends n.Plugin{static get requires(){return[V,R]}static get pluginName(){return"Image"}}function O(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}function P(e,t){const i=t.getFirstPosition().findAncestor("caption");return i&&e.isBlockImage(i.parent)?i:null}class j extends n.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils");if(!e.plugins.has(A))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=P(t,i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!O(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change(e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)})}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const a=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=a||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageUtils");let a,s=i.getSelectedElement();s?a=O(s):(a=P(o,i),s=a.parent),n._saveCaption(s,a),e.setSelection(s,"on"),e.remove(a)}}class N extends n.Plugin{static get requires(){return[u]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new j(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.t;e.conversion.for("upcast").elementToElement({view:e=>function(e,t){return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}(i,e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!i.isBlockImage(e.parent))return null;const s=o.createEditableElement("figcaption");return o.setCustomProperty("imageCaption",!0,s),Object(a.enablePlaceholder)({view:t,element:s,text:n("Enter image caption"),keepOnFocus:!0}),Object(c.toWidgetEditable)(s,o)}}),e.editing.mapper.on("modelToViewPosition",L(t)),e.data.mapper.on("modelToViewPosition",L(t))}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.commands.get("imageTypeInline"),n=e.commands.get("imageTypeBlock"),o=e=>{if(!e.return)return;const{oldElement:i,newElement:n}=e.return;if(!i)return;if(t.isBlockImage(i)){const e=O(i);if(e)return void this._saveCaption(n,e)}const o=this._getSavedCaption(i);o&&this._saveCaption(n,o)};i&&this.listenTo(i,"execute",o,{priority:"low"}),n&&this.listenTo(n,"execute",o,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?a.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}function L(e){return(t,i)=>{const n=i.modelPosition,o=n.parent;if(!o.is("element","imageBlock"))return;const a=i.mapper.toViewElement(o);i.viewPosition=e.createPositionAt(a,n.offset+1)}}class F extends n.Plugin{static get requires(){return[u]}static get pluginName(){return"ImageCaptionUI"}init(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),o=e.t;e.ui.componentFactory.add("toggleImageCaption",a=>{const s=e.commands.get("toggleImageCaption"),r=new w.ButtonView(a);return r.set({icon:n.icons.caption,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.bind("label").to(s,"value",e=>o(e?"Toggle caption off":"Toggle caption on")),this.listenTo(r,"execute",()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const n=P(i,e.model.document.selection);if(n){const i=e.editing.mapper.toViewElement(n);t.scrollToTheSelection(),t.change(e=>{e.addClass("image__caption_highlighted",i)})}}),r})}}i(18);class D extends n.Plugin{static get requires(){return[N,F]}static get pluginName(){return"ImageCaption"}}var M=i(6);function W(e){const t=e.map(e=>e.replace("+","\\+"));return new RegExp(`^image\\/(${t.join("|")})$`)}function q(e){return new Promise((t,i)=>{const n=e.getAttribute("src");fetch(n).then(e=>e.blob()).then(e=>{const i=$(e,n),o=i.replace("image/",""),a=new File([e],"image."+o,{type:i});t(a)}).catch(e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise((t,i)=>{const n=l.global.document.createElement("img");n.addEventListener("load",()=>{const e=l.global.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob(e=>e?t(e):i())}),n.addEventListener("error",()=>i()),n.src=e})}(e).then(t=>{const i=$(t,e),n=i.replace("image/","");return new File([t],"image."+n,{type:i})})}(n).then(t).catch(i):i(e))})}function $(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class H extends n.Plugin{static get pluginName(){return"ImageUploadUI"}init(){const e=this.editor,t=e.t,i=i=>{const o=new M.FileDialogButtonView(i),a=e.commands.get("uploadImage"),s=e.config.get("image.upload.types"),r=W(s);return o.set({acceptedType:s.map(e=>"image/"+e).join(","),allowMultipleFiles:!0}),o.buttonView.set({label:t("Insert image"),icon:n.icons.image,tooltip:!0}),o.buttonView.bind("isEnabled").to(a),o.on("done",(t,i)=>{const n=Array.from(i).filter(e=>r.test(e.type));n.length&&e.execute("uploadImage",{file:n})}),o};e.ui.componentFactory.add("uploadImage",i),e.ui.componentFactory.add("imageUpload",i)}}i(20),i(22),i(24);class K extends n.Plugin{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/svg+xml;utf8,"+encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 250"><rect rx="4"/></svg>')}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",(...e)=>this.uploadStatusChange(...e)),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",(...e)=>this.uploadStatusChange(...e))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,a=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),r=n.plugins.get(M.FileRepository),l=a?t.attributeNewValue:null,c=this.placeholder,g=n.editing.mapper.toViewElement(o),d=i.writer;if("reading"==l)return G(g,d),void J(s,c,g,d);if("uploading"==l){const e=r.loaders.get(a);return G(g,d),void(e?(X(g,d),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",(e,t,i)=>{n.change(e=>{e.setStyle("width",i+"%",o)})})}(g,d,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,g,d,e)):J(s,c,g,d))}"complete"==l&&r.loaders.get(a)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout(()=>{i.change(e=>e.remove(e.createRangeOn(n)))},3e3)}(g,d,n.editing.view),function(e,t){Y(e,t,"progressBar")}(g,d),X(g,d),function(e,t){t.removeClass("ck-appear",e)}(g,d)}}function G(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function J(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),Q(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function X(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),Y(e,t,"placeholder")}function Q(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function Y(e,t,i){const n=Q(e,i);n&&t.remove(t.createRangeOn(n))}class Z extends n.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=Object(l.toArray)(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach((e,t)=>{const a=i.getSelectedElement();if(t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);this._uploadImage(e,o,t)}else this._uploadImage(e,o)})}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(M.FileRepository).createLoader(e),a=n.plugins.get("ImageUtils");o&&a.insertImage({...t,uploadId:o.id},i)}}class ee extends n.Plugin{static get requires(){return[M.FileRepository,w.Notification,o.ClipboardPipeline,u]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(M.FileRepository),o=e.plugins.get("ImageUtils"),s=W(e.config.get("image.upload.types")),r=new Z(e);e.commands.add("uploadImage",r),e.commands.add("imageUpload",r),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",(t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter(e=>!!e&&s.test(e.type));o.length&&(t.stop(),e.model.change(t=>{i.targetRanges&&t.setSelection(i.targetRanges.map(t=>e.editing.mapper.toModelRange(t))),e.model.enqueueChange("default",()=>{e.execute("uploadImage",{file:o})})}))}),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(t,i)=>{const s=Array.from(e.editing.view.createRangeIn(i.content)).filter(e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(o,e.item)&&!e.item.getAttribute("uploadProcessed")).map(e=>({promise:q(e.item),imageElement:e.item}));if(!s.length)return;const r=new a.UpcastWriter(e.editing.view.document);for(const e of s){r.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(r.setAttribute("src","",e.imageElement),r.setAttribute("uploadId",t.id,e.imageElement))}}),e.editing.view.document.on("dragover",(e,t)=>{t.preventDefault()}),t.on("change",()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,a="$graveyard"==t.position.root.rootName;for(const t of te(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(a?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}}),this.on("uploadComplete",(e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change(e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)})},{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(M.FileRepository),a=t.plugins.get(w.Notification),s=t.plugins.get("ImageUtils"),r=this._uploadImageElements;return i.enqueueChange("transparent",t=>{t.setAttribute("uploadStatus","reading",r.get(e.id))}),e.read().then(()=>{const n=e.upload(),o=r.get(e.id);if(l.env.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n})}return i.enqueueChange("transparent",e=>{e.setAttribute("uploadStatus","uploading",o)}),n}).then(t=>{i.enqueueChange("transparent",i=>{const n=r.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})}),c()}).catch(t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&a.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange("transparent",t=>{t.remove(r.get(e.id))}),c()});function c(){i.enqueueChange("transparent",t=>{const i=r.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),r.delete(e.id)}),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter(e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0}).map(t=>`${e[t]} ${t}w`).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function te(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter(e=>i.isImage(e.item)).map(e=>e.item)}class ie extends n.Plugin{static get pluginName(){return"ImageUpload"}static get requires(){return[ee,H,K]}}i(26);class ne extends w.View{constructor(e,t={}){super(e);const i=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach(e=>this.children.add(e)),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",i.to("class")],role:i.to("_role"),"aria-labelledby":i.to("_ariaLabelledBy")},children:this.children})}}i(28);class oe extends w.View{constructor(e,t){super(e);const{insertButtonView:i,cancelButtonView:n}=this._createActionButtons(e);if(this.insertButtonView=i,this.cancelButtonView=n,this.dropdownView=this._createDropdownView(e),this.set("imageURLInputValue",""),this.focusTracker=new l.FocusTracker,this.keystrokes=new l.KeystrokeHandler,this._focusables=new w.ViewCollection,this._focusCycler=new w.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.set("_integrations",new l.Collection),t)for(const[e,i]of Object.entries(t))"insertImageViaUrl"===e&&(i.fieldView.bind("value").to(this,"imageURLInputValue",e=>e||""),i.fieldView.on("input",()=>{this.imageURLInputValue=i.fieldView.element.value.trim()})),i.name=e,this._integrations.add(i);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:"-1"},children:[...this._integrations,new ne(e,{children:[this.insertButtonView,this.cancelButtonView],class:"ck-image-insert-form__action-row"})]})}render(){super.render(),Object(w.submitHandler)({view:this});const e=[...this._integrations,this.insertButtonView,this.cancelButtonView];e.forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element);const t=e=>e.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(e[0].element,"selectstart",(e,t)=>{t.stopPropagation()},{priority:"high"})}getIntegration(e){return this._integrations.find(t=>t.name===e)}_createDropdownView(e){const t=e.t,i=Object(w.createDropdown)(e,w.SplitButtonView),o=i.buttonView,a=i.panelView;return o.set({label:t("Insert image"),icon:n.icons.image,tooltip:!0}),a.extendTemplate({attributes:{class:"ck-image-insert__panel"}}),i}_createActionButtons(e){const t=e.t,i=new w.ButtonView(e),o=new w.ButtonView(e);return i.set({label:t("Insert"),icon:n.icons.check,class:"ck-button-save",type:"submit",withText:!0,isEnabled:this.imageURLInputValue}),o.set({label:t("Cancel"),icon:n.icons.cancel,class:"ck-button-cancel",withText:!0}),i.bind("isEnabled").to(this,"imageURLInputValue",e=>!!e),i.delegate("execute").to(this,"submit"),o.delegate("execute").to(this,"cancel"),{insertButtonView:i,cancelButtonView:o}}focus(){this._focusCycler.focusFirst()}}function ae(e){const t=e.t,i=new w.LabeledFieldView(e,w.createLabeledInputText);return i.set({label:t("Insert image via URL")}),i.fieldView.placeholder="https://example.com/image.png",i}class se extends n.Plugin{static get pluginName(){return"ImageInsertUI"}init(){const e=this.editor,t=e=>this._createDropdownView(e);e.ui.componentFactory.add("insertImage",t),e.ui.componentFactory.add("imageInsert",t)}_createDropdownView(e){const t=this.editor,i=new oe(e,function(e){const t=e.config.get("image.insert.integrations"),i=e.plugins.get("ImageInsertUI"),n={insertImageViaUrl:ae(e.locale)};if(!t)return n;if(t.find(e=>"openCKFinder"===e)&&e.ui.componentFactory.has("ckfinder")){const t=e.ui.componentFactory.create("ckfinder");t.set({withText:!0,class:"ck-image-insert__ck-finder-button"}),t.delegate("execute").to(i,"cancel"),n.openCKFinder=t}return t.reduce((t,i)=>(n[i]?t[i]=n[i]:e.ui.componentFactory.has(i)&&(t[i]=e.ui.componentFactory.create(i)),t),{})}(t)),n=t.commands.get("uploadImage"),o=i.dropdownView,a=o.buttonView;return a.actionView=t.ui.componentFactory.create("uploadImage"),a.actionView.extendTemplate({attributes:{class:"ck ck-button ck-splitbutton__action"}}),this._setUpDropdown(o,i,n)}_setUpDropdown(e,t,i){const n=this.editor,o=n.t,a=t.insertButtonView,s=t.getIntegration("insertImageViaUrl"),r=e.panelView,l=this.editor.plugins.get("ImageUtils");function c(){n.editing.view.focus(),e.isOpen=!1}return e.bind("isEnabled").to(i),e.buttonView.once("open",()=>{r.children.add(t)}),e.on("change:isOpen",()=>{const i=n.model.document.selection.getSelectedElement();e.isOpen&&(t.focus(),l.isImage(i)?(t.imageURLInputValue=i.getAttribute("src"),a.label=o("Update"),s.label=o("Update image URL")):(t.imageURLInputValue="",a.label=o("Insert"),s.label=o("Insert image via URL")))},{priority:"low"}),t.delegate("submit","cancel").to(e),this.delegate("cancel").to(e),e.on("submit",()=>{c(),function(){const e=n.model.document.selection.getSelectedElement();l.isImage(e)?n.model.change(i=>{i.setAttribute("src",t.imageURLInputValue,e),i.removeAttribute("srcset",e),i.removeAttribute("sizes",e)}):n.execute("insertImage",{source:t.imageURLInputValue})}()}),e.on("cancel",()=>{c()}),e}}class re extends n.Plugin{static get pluginName(){return"ImageInsert"}static get requires(){return[ie,se]}}class le extends n.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);this.isEnabled=!!t,t&&t.hasAttribute("width")?this.value={width:t.getAttribute("width"),height:null}:this.value=null}execute(e){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils").getClosestSelectedImageElement(i.document.selection);this.value={width:e.width,height:null},n&&i.change(t=>{t.setAttribute("width",e.width,n)})}}class ce extends n.Plugin{static get requires(){return[u]}static get pluginName(){return"ImageResizeEditing"}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const e=this.editor,t=new le(e);this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:"width"}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:"width"})}_registerConverters(e){const t=this.editor;t.conversion.for("downcast").add(t=>t.on("attribute:width:"+e,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=i.writer,o=i.mapper.toViewElement(t.item);null!==t.attributeNewValue?(n.setStyle("width",t.attributeNewValue,o),n.addClass("image_resized",o)):(n.removeStyle("width",o),n.removeClass("image_resized",o))})),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{width:/.+/}},model:{key:"width",value:e=>e.getStyle("width")}})}}const ge={small:n.icons.objectSizeSmall,medium:n.icons.objectSizeMedium,large:n.icons.objectSizeLarge,original:n.icons.objectSizeFull};class de extends n.Plugin{static get requires(){return[ce]}static get pluginName(){return"ImageResizeButtons"}constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),i=e.commands.get("resizeImage");this.bind("isEnabled").to(i);for(const e of t)this._registerImageResizeButton(e);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:i,value:n,icon:o}=e,a=n?n+this._resizeUnit:null;t.ui.componentFactory.add(i,i=>{const n=new w.ButtonView(i),s=t.commands.get("resizeImage"),r=this._getOptionLabelValue(e,!0);if(!ge[o])throw new l.CKEditorError("imageresizebuttons-missing-icon",t,e);return n.set({label:r,icon:ge[o],tooltip:r,isToggleable:!0}),n.bind("isEnabled").to(this),n.bind("isOn").to(s,"value",me(a)),this.listenTo(n,"execute",()=>{t.execute("resizeImage",{width:a})}),n})}_registerImageResizeDropdown(e){const t=this.editor,i=t.t,n=e.find(e=>!e.value),o=o=>{const a=t.commands.get("resizeImage"),s=Object(w.createDropdown)(o,w.DropdownButtonView),r=s.buttonView;return r.set({tooltip:i("Resize image"),commandValue:n.value,icon:ge.medium,isToggleable:!0,label:this._getOptionLabelValue(n),withText:!0,class:"ck-resize-image-button"}),r.bind("label").to(a,"value",e=>e&&e.width?e.width:this._getOptionLabelValue(n)),s.bind("isOn").to(a),s.bind("isEnabled").to(this),Object(w.addListToDropdown)(s,this._getResizeDropdownListItemDefinitions(e,a)),s.listView.ariaLabel=i("Image resize list"),this.listenTo(s,"execute",e=>{t.execute(e.source.commandName,{width:e.source.commandValue}),t.editing.view.focus()}),s};t.ui.componentFactory.add("resizeImage",o),t.ui.componentFactory.add("imageResize",o)}_getOptionLabelValue(e,t){const i=this.editor.t;return e.label?e.label:t?e.value?i("Resize image to %0",e.value+this._resizeUnit):i("Resize image to the original size"):e.value?e.value+this._resizeUnit:i("Original")}_getResizeDropdownListItemDefinitions(e,t){const i=new l.Collection;return e.map(e=>{const n=e.value?e.value+this._resizeUnit:null,o={type:"button",model:new w.Model({commandName:"resizeImage",commandValue:n,label:this._getOptionLabelValue(e),withText:!0,icon:null})};o.model.bind("isOn").to(t,"value",me(n)),i.add(o)}),i}}function me(e){return t=>null===e&&t===e||t&&t.width===e}const ue=/(image|image-inline)/;class pe extends n.Plugin{static get requires(){return[c.WidgetResize]}static get pluginName(){return"ImageResizeHandles"}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view;t.addObserver(C),this.listenTo(t.document,"imageLoaded",(i,n)=>{if(!n.target.matches("figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img"))return;const o=e.editing.view.domConverter,a=o.domToView(n.target).findAncestor({classes:ue});let s=this.editor.plugins.get(c.WidgetResize).getResizerByViewElement(a);if(s)return void s.redraw();const r=e.editing.mapper,l=r.toModelElement(a);s=e.plugins.get(c.WidgetResize).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:l,viewElement:a,editor:e,getHandleHost:e=>e.querySelector("img"),getResizeHost:()=>o.viewToDom(r.toViewElement(l.parent)),isCentered(){const e=l.getAttribute("imageStyle");return!e||"block"==e||"alignCenter"==e},onCommit(i){t.change(e=>{e.removeClass("image_resized",a)}),e.execute("resizeImage",{width:i})}}),s.on("updateSize",()=>{a.hasClass("image_resized")||t.change(e=>{e.addClass("image_resized",a)})}),s.bind("isEnabled").to(this)})}}i(30);class he extends n.Plugin{static get requires(){return[ce,pe,de]}static get pluginName(){return"ImageResize"}}class fe extends n.Command{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]}))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change(t=>{const o=e.value;let a=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,a)&&(this.editor.execute(n.isBlockImage(a)?"imageTypeInline":"imageTypeBlock"),a=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",a):t.setAttribute("imageStyle",o,a)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:be,objectInline:ke,objectLeft:we,objectRight:Ie,objectCenter:ve,objectBlockLeft:_e,objectBlockRight:ye}=n.icons,xe={inline:{name:"inline",title:"In line",icon:ke,modelElements:["imageInline"],isDefault:!0},alignLeft:{name:"alignLeft",title:"Left aligned image",icon:we,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"},alignBlockLeft:{name:"alignBlockLeft",title:"Left aligned image",icon:_e,modelElements:["imageBlock"],className:"image-style-block-align-left"},alignCenter:{name:"alignCenter",title:"Centered image",icon:ve,modelElements:["imageBlock"],className:"image-style-align-center"},alignRight:{name:"alignRight",title:"Right aligned image",icon:Ie,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"},alignBlockRight:{name:"alignBlockRight",title:"Right aligned image",icon:ye,modelElements:["imageBlock"],className:"image-style-block-align-right"},block:{name:"block",title:"Centered image",icon:ve,modelElements:["imageBlock"],isDefault:!0},side:{name:"side",title:"Side image",icon:Ie,modelElements:["imageBlock"],className:"image-style-side"}},Ee={full:be,left:_e,right:ye,center:ve,inlineLeft:we,inlineRight:Ie,inline:ke},Ce=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Te(e){Object(l.logWarning)("image-style-configuration-definition-invalid",e)}var Se={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map(e=>function(e){e="string"==typeof e?xe[e]?{...xe[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(xe[e.name],e);"string"==typeof e.icon&&(e.icon=Ee[e.icon]||e.icon);return e}(e)).filter(t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return Te({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some(e=>o.includes(e)))return Object(l.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map(e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}(t,e))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...Ce]:[]},warnInvalidStyle:Te,DEFAULT_OPTIONS:xe,DEFAULT_ICONS:Ee,DEFAULT_DROPDOWN_DEFINITIONS:Ce};function Be(e,t){for(const i of t)if(i.name===e)return i}class Ae extends n.Plugin{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[u]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Se,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new fe(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(a=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Be(t.attributeNewValue,a),o=Be(t.attributeOldValue,a),s=i.mapper.toViewElement(t.item),r=i.writer;o&&r.removeClass(o.className,s),n&&r.addClass(n.className,s)});var a;const s=function(e){const t={imageInline:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageInline")),imageBlock:e.filter(e=>!e.isDefault&&e.modelElements.includes("imageBlock"))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,a=Object(l.first)(i.modelRange.getItems());if(a&&n.schema.checkAttribute(a,"imageStyle"))for(const e of t[a.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,a)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(u),n=new Map(this.normalizedStyles.map(e=>[e.name,e]));t.registerPostFixer(e=>{let o=!1;for(const a of t.differ.getChanges())if("insert"==a.type||"attribute"==a.type&&"imageStyle"==a.attributeKey){let t="insert"==a.type?a.position.nodeAfter:a.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const r=n.get(s);r&&r.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o})}}var Ve=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};var ze=function(e){return e};i(32);class Re extends n.Plugin{static get requires(){return[Ae]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=Ue(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=Ue([...t.filter(Ve),...Se.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,n=>{let o;const{defaultItem:a,items:s,title:r}=e,l=s.filter(e=>t.find(({name:t})=>Oe(t)===e)).map(e=>{const t=i.create(e);return e===a&&(o=t),t});s.length!==l.length&&Se.warnInvalidStyle({dropdown:e});const c=Object(w.createDropdown)(n,w.SplitButtonView),g=c.buttonView;return Object(w.addToolbarToDropdown)(c,l),g.set({label:Pe(r,o.label),class:null,tooltip:!0}),g.bind("icon").toMany(l,"isOn",(...e)=>{const t=e.findIndex(ze);return t<0?o.icon:l[t].icon}),g.bind("label").toMany(l,"isOn",(...e)=>{const t=e.findIndex(ze);return Pe(r,t<0?o.label:l[t].label)}),g.bind("isOn").toMany(l,"isOn",(...e)=>e.some(ze)),g.bind("class").toMany(l,"isOn",(...e)=>e.some(ze)?"ck-splitbutton_flatten":null),g.on("execute",()=>{l.some(({isOn:e})=>e)?c.isOpen=!c.isOpen:o.fire("execute")}),c.bind("isEnabled").toMany(l,"isEnabled",(...e)=>e.some(ze)),c})}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(Oe(t),i=>{const n=this.editor.commands.get("imageStyle"),o=new w.ButtonView(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",e=>e===t),o.on("execute",this._executeCommand.bind(this,t)),o})}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function Ue(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function Oe(e){return"imageStyle:"+e}function Pe(e,t){return(e?e+": ":"")+t}class je extends n.Plugin{static get requires(){return[Ae,Re]}static get pluginName(){return"ImageStyle"}}class Ne extends n.Plugin{static get requires(){return[c.WidgetToolbarRepository,u]}static get pluginName(){return"ImageToolbar"}afterInit(){const e=this.editor,t=e.t,i=e.plugins.get(c.WidgetToolbarRepository),n=e.plugins.get("ImageUtils");var o;i.register("image",{ariaLabel:t("Image toolbar"),items:(o=e.config.get("image.toolbar")||[],o.map(e=>Ve(e)?e.name:e)),getRelatedElement:e=>n.getClosestSelectedImageWidget(e)})}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/indent.js b/core/assets/vendor/ckeditor5/indent.js new file mode 100644 index 000000000000..959ab76707e0 --- /dev/null +++ b/core/assets/vendor/ckeditor5/indent.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(t){const e=t.en=t.en||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Decrease indent","Increase indent":"Increase indent"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.indent=function(t){var e={};function n(i){if(e[i])return e[i].exports;var s=e[i]={i:i,l:!1,exports:{}};return t[i].call(s.exports,s,s.exports,n),s.l=!0,s.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)n.d(i,s,function(e){return t[e]}.bind(null,s));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=5)}([function(t,e,n){t.exports=n(1)("./src/core.js")},function(t,e){t.exports=CKEditor5.dll},function(t,e,n){t.exports=n(1)("./src/ui.js")},function(t,e,n){t.exports=n(1)("./src/engine.js")},function(t,e,n){t.exports=n(1)("./src/utils.js")},function(t,e,n){"use strict";n.r(e),n.d(e,"Indent",(function(){return a})),n.d(e,"IndentEditing",(function(){return s})),n.d(e,"IndentUI",(function(){return c})),n.d(e,"IndentBlock",(function(){return b}));var i=n(0);class s extends i.Plugin{static get pluginName(){return"IndentEditing"}init(){const t=this.editor;t.commands.add("indent",new i.MultiCommand(t)),t.commands.add("outdent",new i.MultiCommand(t))}}var o=n(2),r='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zM1.632 6.95 5.02 9.358a.4.4 0 0 1-.013.661l-3.39 2.207A.4.4 0 0 1 1 11.892V7.275a.4.4 0 0 1 .632-.326z"/></svg>',d='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zm1.618-9.55L.98 9.358a.4.4 0 0 0 .013.661l3.39 2.207A.4.4 0 0 0 5 11.892V7.275a.4.4 0 0 0-.632-.326z"/></svg>';class c extends i.Plugin{static get pluginName(){return"IndentUI"}init(){const t=this.editor,e=t.locale,n=t.t,i="ltr"==e.uiLanguageDirection?r:d,s="ltr"==e.uiLanguageDirection?d:r;this._defineButton("indent",n("Increase indent"),i),this._defineButton("outdent",n("Decrease indent"),s)}_defineButton(t,e,n){const i=this.editor;i.ui.componentFactory.add(t,s=>{const r=i.commands.get(t),d=new o.ButtonView(s);return d.set({label:e,icon:n,tooltip:!0}),d.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(d,"execute",()=>{i.execute(t),i.editing.view.focus()}),d})}}class a extends i.Plugin{static get pluginName(){return"Indent"}static get requires(){return[s,c]}}var u=n(3),l=n(4);class h extends i.Command{constructor(t,e){super(t),this._indentBehavior=e}refresh(){const t=this.editor.model,e=Object(l.first)(t.document.selection.getSelectedBlocks());e&&t.schema.checkAttribute(e,"blockIndent")?this.isEnabled=this._indentBehavior.checkEnabled(e.getAttribute("blockIndent")):this.isEnabled=!1}execute(){const t=this.editor.model,e=function(t){const e=t.document.selection,n=t.schema;return Array.from(e.getSelectedBlocks()).filter(t=>n.checkAttribute(t,"blockIndent"))}(t);t.change(t=>{for(const n of e){const e=n.getAttribute("blockIndent"),i=this._indentBehavior.getNextIndent(e);i?t.setAttribute("blockIndent",i,n):t.removeAttribute("blockIndent",n)}})}}class g{constructor(t){this.isForward="forward"===t.direction,this.offset=t.offset,this.unit=t.unit}checkEnabled(t){const e=parseFloat(t||0);return this.isForward||e>0}getNextIndent(t){const e=parseFloat(t||0);if(!(!t||t.endsWith(this.unit)))return this.isForward?this.offset+this.unit:void 0;const n=e+(this.isForward?this.offset:-this.offset);return n>0?n+this.unit:void 0}}class f{constructor(t){this.isForward="forward"===t.direction,this.classes=t.classes}checkEnabled(t){const e=this.classes.indexOf(t);return this.isForward?e<this.classes.length-1:e>=0}getNextIndent(t){const e=this.classes.indexOf(t),n=this.isForward?1:-1;return this.classes[e+n]}}const m=["paragraph","heading1","heading2","heading3","heading4","heading5","heading6"];class b extends i.Plugin{constructor(t){super(t),t.config.define("indentBlock",{offset:40,unit:"px"})}static get pluginName(){return"IndentBlock"}init(){const t=this.editor,e=t.config.get("indentBlock"),n=!e.classes||!e.classes.length,i=Object.assign({direction:"forward"},e),s=Object.assign({direction:"backward"},e);n?(t.data.addStyleProcessorRules(u.addMarginRules),this._setupConversionUsingOffset(t.conversion),t.commands.add("indentBlock",new h(t,new g(i))),t.commands.add("outdentBlock",new h(t,new g(s)))):(this._setupConversionUsingClasses(e.classes),t.commands.add("indentBlock",new h(t,new f(i))),t.commands.add("outdentBlock",new h(t,new f(s))))}afterInit(){const t=this.editor,e=t.model.schema,n=t.commands.get("indent"),i=t.commands.get("outdent"),s=t.config.get("heading.options");(s&&s.map(t=>t.model)||m).forEach(t=>{e.isRegistered(t)&&e.extend(t,{allowAttributes:"blockIndent"})}),e.setAttributeProperties("blockIndent",{isFormatting:!0}),n.registerChildCommand(t.commands.get("indentBlock")),i.registerChildCommand(t.commands.get("outdentBlock"))}_setupConversionUsingOffset(){const t=this.editor.conversion,e="rtl"===this.editor.locale.contentLanguageDirection?"margin-right":"margin-left";t.for("upcast").attributeToAttribute({view:{styles:{[e]:/[\s\S]+/}},model:{key:"blockIndent",value:t=>t.getStyle(e)}}),t.for("downcast").attributeToAttribute({model:"blockIndent",view:t=>({key:"style",value:{[e]:t}})})}_setupConversionUsingClasses(t){const e={model:{key:"blockIndent",values:[]},view:{}};for(const n of t)e.model.values.push(n),e.view[n]={key:"class",value:[n]};this.editor.conversion.attributeToAttribute(e)}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/language.js b/core/assets/vendor/ckeditor5/language.js new file mode 100644 index 000000000000..760ab9835abb --- /dev/null +++ b/core/assets/vendor/ckeditor5/language.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"Choose language":"Choose language",Language:"Language","Remove language":"Remove language"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.language=function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=7)}([function(e,t,n){e.exports=n(3)("./src/core.js")},function(e,t,n){e.exports=n(3)("./src/ui.js")},function(e,t,n){e.exports=n(3)("./src/utils.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,n){var o=n(5),r=n(6);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[e.i,r,""]]);var a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o(r,a);e.exports=r.locals||{}},function(e,t,n){"use strict";var o,r=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),i=[];function u(e){for(var t=-1,n=0;n<i.length;n++)if(i[n].identifier===e){t=n;break}return t}function s(e,t){for(var n={},o=[],r=0;r<e.length;r++){var a=e[r],s=t.base?a[0]+t.base:a[0],l=n[s]||0,c="".concat(s," ").concat(l);n[s]=l+1;var d=u(c),g={css:a[1],media:a[2],sourceMap:a[3]};-1!==d?(i[d].references++,i[d].updater(g)):i.push({identifier:c,updater:b(g,t),references:1}),o.push(c)}return o}function l(e){var t=document.createElement("style"),o=e.attributes||{};if(void 0===o.nonce){var r=n.nc;r&&(o.nonce=r)}if(Object.keys(o).forEach((function(e){t.setAttribute(e,o[e])})),"function"==typeof e.insert)e.insert(t);else{var i=a(e.insert||"head");if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(t)}return t}var c,d=(c=[],function(e,t){return c[e]=t,c.filter(Boolean).join("\n")});function g(e,t,n,o){var r=n?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(e.styleSheet)e.styleSheet.cssText=d(t,r);else{var a=document.createTextNode(r),i=e.childNodes;i[t]&&e.removeChild(i[t]),i.length?e.insertBefore(a,i[t]):e.appendChild(a)}}function f(e,t,n){var o=n.css,r=n.media,a=n.sourceMap;if(r?e.setAttribute("media",r):e.removeAttribute("media"),a&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}var p=null,m=0;function b(e,t){var n,o,r;if(t.singleton){var a=m++;n=p||(p=l(t)),o=g.bind(null,n,a,!1),r=g.bind(null,n,a,!0)}else n=l(t),o=f.bind(null,n,t),r=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else r()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=r());var n=s(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var o=0;o<n.length;o++){var r=u(n[o]);i[r].references--}for(var a=s(e,t),l=0;l<n.length;l++){var c=u(n[l]);0===i[c].references&&(i[c].updater(),i.splice(c,1))}n=a}}}},function(e,t){e.exports=".ck-content span[lang]{font-style:italic}"},function(e,t,n){"use strict";n.r(t),n.d(t,"TextPartLanguage",(function(){return c})),n.d(t,"TextPartLanguageEditing",(function(){return u})),n.d(t,"TextPartLanguageUI",(function(){return l}));var o=n(0),r=n(2);function a(e,t){return`${e}:${t=t||Object(r.getLanguageDirection)(e)}`}class i extends o.Command{refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,"language")}execute({languageCode:e,textDirection:t}={}){const n=this.editor.model,o=n.document.selection,r=!!e&&a(e,t);n.change(e=>{if(o.isCollapsed)r?e.setSelectionAttribute("language",r):e.removeSelectionAttribute("language");else{const t=n.schema.getValidRanges(o.getRanges(),"language");for(const n of t)r?e.setAttribute("language",r,n):e.removeAttribute("language",n)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,n=e.document.selection;if(n.isCollapsed)return n.getAttribute("language")||!1;for(const e of n.getRanges())for(const n of e.getItems())if(t.checkAttribute(n,"language"))return n.getAttribute("language")||!1;return!1}}class u extends o.Plugin{static get pluginName(){return"TextPartLanguageEditing"}constructor(e){super(e),e.config.define("language",{textPartLanguage:[{title:"Arabic",languageCode:"ar"},{title:"French",languageCode:"fr"},{title:"Spanish",languageCode:"es"}]})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"language"}),e.model.schema.setAttributeProperties("language",{copyOnEnter:!0}),this._defineConverters(),e.commands.add("textPartLanguage",new i(e))}_defineConverters(){const e=this.editor.conversion;e.for("upcast").elementToAttribute({model:{key:"language",value:e=>a(e.getAttribute("lang"),e.getAttribute("dir"))},view:{name:"span",attributes:{lang:/[\s\S]+/}}}),e.for("downcast").attributeToElement({model:"language",view:(e,{writer:t})=>{if(!e)return;const{languageCode:n,textDirection:o}=function(e){const[t,n]=e.split(":");return{languageCode:t,textDirection:n}}(e);return t.createAttributeElement("span",{lang:n,dir:o})}})}}var s=n(1);n(4);class l extends o.Plugin{static get pluginName(){return"TextPartLanguageUI"}init(){const e=this.editor,t=e.t,n=e.config.get("language.textPartLanguage"),o=t("Choose language"),i=t("Remove language"),u=t("Language");e.ui.componentFactory.add("textPartLanguage",t=>{const l=new r.Collection,c={},d=e.commands.get("textPartLanguage");l.add({type:"button",model:new s.Model({label:i,languageCode:!1,withText:!0})}),l.add({type:"separator"});for(const e of n){const t={type:"button",model:new s.Model({label:e.title,languageCode:e.languageCode,textDirection:e.textDirection,withText:!0})},n=a(e.languageCode,e.textDirection);t.model.bind("isOn").to(d,"value",e=>e===n),l.add(t),c[n]=e.title}const g=Object(s.createDropdown)(t);return Object(s.addListToDropdown)(g,l),g.buttonView.set({isOn:!1,withText:!0,tooltip:u}),g.extendTemplate({attributes:{class:["ck-text-fragment-language-dropdown"]}}),g.bind("isEnabled").to(d,"isEnabled"),g.buttonView.bind("label").to(d,"value",e=>c[e]||o),this.listenTo(g,"execute",t=>{d.execute({languageCode:t.source.languageCode,textDirection:t.source.textDirection}),e.editing.view.focus()}),g})}}class c extends o.Plugin{static get requires(){return[u,l]}static get pluginName(){return"TextPartLanguage"}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/link.js b/core/assets/vendor/ckeditor5/link.js new file mode 100644 index 000000000000..9a9b99b56876 --- /dev/null +++ b/core/assets/vendor/ckeditor5/link.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{Downloadable:"Downloadable","Edit link":"Edit link",Link:"Link","Link image":"Link image","Link URL":"Link URL","Open in a new tab":"Open in a new tab","Open link in new tab":"Open link in new tab","This link has no URL":"This link has no URL",Unlink:"Unlink"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.link=function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=21)}([function(e,t,i){e.exports=i(4)("./src/ui.js")},function(e,t,i){e.exports=i(4)("./src/core.js")},function(e,t,i){e.exports=i(4)("./src/utils.js")},function(e,t,i){e.exports=i(4)("./src/typing.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,i){e.exports=i(4)("./src/engine.js")},function(e,t,i){"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),s=[];function a(e){for(var t=-1,i=0;i<s.length;i++)if(s[i].identifier===e){t=i;break}return t}function c(e,t){for(var i={},n=[],o=0;o<e.length;o++){var r=e[o],c=t.base?r[0]+t.base:r[0],l=i[c]||0,u="".concat(c," ").concat(l);i[c]=l+1;var d=a(u),k={css:r[1],media:r[2],sourceMap:r[3]};-1!==d?(s[d].references++,s[d].updater(k)):s.push({identifier:u,updater:g(k,t),references:1}),n.push(u)}return n}function l(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var s=r(e.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(t)}return t}var u,d=(u=[],function(e,t){return u[e]=t,u.filter(Boolean).join("\n")});function k(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var r=document.createTextNode(o),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(r,s[t]):e.appendChild(r)}}function f(e,t,i){var n=i.css,o=i.media,r=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var h=null,m=0;function g(e,t){var i,n,o;if(t.singleton){var r=m++;i=h||(h=l(t)),n=k.bind(null,i,r,!1),o=k.bind(null,i,r,!0)}else i=l(t),n=f.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=a(i[n]);s[o].references--}for(var r=c(e,t),l=0;l<i.length;l++){var u=a(i[l]);0===s[u].references&&(s[u].updater(),s.splice(u,1))}i=r}}}},function(e,t,i){var n=i(6),o=i(14);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t,i){e.exports=i(4)("./src/clipboard.js")},function(e,t,i){"use strict";(function(e){var i="object"==typeof e&&e&&e.Object===Object&&e;t.a=i}).call(this,i(11))},function(e,t,i){e.exports=i(4)("./src/widget.js")},function(e,t){var i;i=function(){return this}();try{i=i||new Function("return this")()}catch(e){"object"==typeof window&&(i=window)}e.exports=i},function(e,t,i){var n=i(6),o=i(13);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-link_selected span.image-inline{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{height:100%;border-right:1px solid var(--ck-color-base-text);margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}"},function(e,t){e.exports='.ck-vertical-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-text-width)*0.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-large);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after,[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}'},function(e,t,i){var n=i(6),o=i(16);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{padding:0;min-width:var(--ck-input-text-width)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical .ck-button{padding:var(--ck-spacing-standard);margin:0;border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border);width:50%}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{border:0;padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}"},function(e,t,i){var n=i(6),o=i(18);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports=".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{padding:0 var(--ck-spacing-medium);color:var(--ck-color-link-default);text-overflow:ellipsis;cursor:pointer;max-width:var(--ck-input-text-width);min-width:3em;text-align:center}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{min-width:0;max-width:100%}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}"},function(e,t,i){var n=i(6),o=i(20);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t){e.exports='.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{display:block;position:absolute}:root{--ck-link-image-indicator-icon-size:20;--ck-link-image-indicator-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{content:"";top:min(var(--ck-spacing-medium),6%);right:min(var(--ck-spacing-medium),6%);background-color:rgba(0,0,0,.4);background-image:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTExLjA3NyAxNWwuOTkxLTEuNDE2YS43NS43NSAwIDExMS4yMjkuODZsLTEuMTQ4IDEuNjRhLjc0OC43NDggMCAwMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAxLTguNTAzLTUuOTU1Ljc0MS43NDEgMCAwMS4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDExMS4yMjguODZMNC45MzMgMTAuN2wuMDA2LjAwM2EzLjc1IDMuNzUgMCAwMDYuMTMyIDQuMjk0bC4wMDYuMDA0em01LjQ5NC01LjMzNWEuNzQ4Ljc0OCAwIDAxLS4xMi4yNzRsLTEuMTQ3IDEuNjM5YS43NS43NSAwIDExLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwMC02LjE0NC00LjMwMWwtLjg2IDEuMjI5YS43NS43NSAwIDAxLTEuMjI5LS44NmwxLjE0OC0xLjY0YS43NDguNzQ4IDAgMDEuMjE3LS4yMDYgNS4yNTEgNS4yNTEgMCAwMTguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMDEuMTg0IDEuMDQ1bC0zLjE1NSA0LjUwNWEuNzUuNzUgMCAxMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMDExLjA0NS0uMTg0eiIvPjwvc3ZnPg==");background-size:14px;background-repeat:no-repeat;background-position:50%;border-radius:100%;overflow:hidden;width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}'},function(e,t,i){"use strict";i.r(t),i.d(t,"Link",(function(){return we})),i.d(t,"LinkEditing",(function(){return re})),i.d(t,"LinkUI",(function(){return he})),i.d(t,"LinkImage",(function(){return xe})),i.d(t,"LinkImageEditing",(function(){return ve})),i.d(t,"LinkImageUI",(function(){return Ae})),i.d(t,"AutoLink",(function(){return be}));var n=i(1),o=i(5),r=i(3),s=i(8),a=i(2);class c{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach(e=>this._definitions.add(e)):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",(e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const r=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,r);for(const t in e.styles)n.setStyle(t,e.styles[t],r);n.setCustomProperty("link",!0,r),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),r):n.wrap(i.mapper.toViewRange(t.range),r):n.unwrap(i.mapper.toViewRange(t.range),r)}},{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",(e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),r=Array.from(o.getChildren()).find(e=>"a"===e.name);for(const e of this._definitions){const n=Object(a.toMap)(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,r):i.setAttribute(e,t,r);e.classes&&i.addClass(e.classes,r);for(const t in e.styles)i.setStyle(t,e.styles[t],r)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,r):i.removeAttribute(e,r);e.classes&&i.removeClass(e.classes,r);for(const t in e.styles)i.removeStyle(t,r)}}})}}}var l=function(e,t,i){var n=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(i=i>o?o:i)<0&&(i+=o),o=t>i?0:i-t>>>0,t>>>=0;for(var r=Array(o);++n<o;)r[n]=e[n+t];return r};var u=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:l(e,t,i)},d=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var k=function(e){return d.test(e)};var f=function(e){return e.split("")},h="[\\ud800-\\udfff]",m="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",g="\\ud83c[\\udffb-\\udfff]",b="[^\\ud800-\\udfff]",p="(?:\\ud83c[\\udde6-\\uddff]){2}",w="[\\ud800-\\udbff][\\udc00-\\udfff]",v="(?:"+m+"|"+g+")"+"?",_="[\\ufe0e\\ufe0f]?"+v+("(?:\\u200d(?:"+[b,p,w].join("|")+")[\\ufe0e\\ufe0f]?"+v+")*"),y="(?:"+[b+m+"?",m,p,w,h].join("|")+")",A=RegExp(g+"(?="+g+")|"+y+_,"g");var x=function(e){return e.match(A)||[]};var I=function(e){return k(e)?x(e):f(e)},T=i(9),S="object"==typeof self&&self&&self.Object===Object&&self,E=(T.a||S||Function("return this")()).Symbol;var V=function(e,t){for(var i=-1,n=null==e?0:e.length,o=Array(n);++i<n;)o[i]=t(e[i],i,e);return o},L=Array.isArray,C=Object.prototype,M=C.hasOwnProperty,D=C.toString,j=E?E.toStringTag:void 0;var O=function(e){var t=M.call(e,j),i=e[j];try{e[j]=void 0;var n=!0}catch(e){}var o=D.call(e);return n&&(t?e[j]=i:delete e[j]),o},B=Object.prototype.toString;var N=function(e){return B.call(e)},H=E?E.toStringTag:void 0;var P=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":H&&H in Object(e)?O(e):N(e)};var U=function(e){return null!=e&&"object"==typeof e};var F=function(e){return"symbol"==typeof e||U(e)&&"[object Symbol]"==P(e)},R=E?E.prototype:void 0,z=R?R.toString:void 0;var q=function e(t){if("string"==typeof t)return t;if(L(t))return V(t,e)+"";if(F(t))return z?z.call(t):"";var i=t+"";return"0"==i&&1/t==-1/0?"-0":i};var K=function(e){return null==e?"":q(e)};var Z=function(e){return function(t){t=K(t);var i=k(t)?I(t):void 0,n=i?i[0]:t.charAt(0),o=i?u(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase");const Y=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Q=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,W=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,$=/^((\w+:(\/{2,})?)|(\W))/i;function J(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function G(e){return function(e){return e.replace(Y,"").match(Q)}(e=String(e))?e:"#"}function X(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function ee(e,t){const i=(n=e,W.test(n)?"mailto:":t);var n;const o=!!i&&!$.test(e);return e&&o?i+e:e}class te extends n.Command{constructor(e){super(e),this.manualDecorators=new a.Collection,this.automaticDecorators=new c}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||Object(a.first)(t.getSelectedBlocks());X(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,o=[],s=[];for(const e in t)t[e]?o.push(e):s.push(e);i.change(t=>{if(n.isCollapsed){const c=n.getFirstPosition();if(n.hasAttribute("linkHref")){const a=Object(r.findAttributeRange)(c,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,a),o.forEach(e=>{t.setAttribute(e,!0,a)}),s.forEach(e=>{t.removeAttribute(e,a)}),t.setSelection(t.createPositionAfter(a.end.nodeBefore))}else if(""!==e){const r=Object(a.toMap)(n.getAttributes());r.set("linkHref",e),o.forEach(e=>{r.set(e,!0)});const{end:s}=i.insertContent(t.createText(e,r),c);t.setSelection(s)}["linkHref",...o,...s].forEach(e=>{t.removeSelectionAttribute(e)})}else{const r=i.schema.getValidRanges(n.getRanges(),"linkHref"),a=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&a.push(t.createRangeOn(e));const c=a.slice();for(const e of r)this._isRangeToUpdate(e,a)&&c.push(e);for(const i of c)t.setAttribute("linkHref",e,i),o.forEach(e=>{t.setAttribute(e,!0,i)}),s.forEach(e=>{t.removeAttribute(e,i)})}})}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return X(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class ie extends n.Command{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();X(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change(e=>{const o=i.isCollapsed?[Object(r.findAttributeRange)(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of o)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)})}}class ne{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:r}){this.id=e,this.set("value"),this.defaultValue=r,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}Object(a.mix)(ne,a.ObservableMixin);i(12);const oe=/^(https?:)?\/\//;class re extends n.Plugin{static get pluginName(){return"LinkEditing"}static get requires(){return[r.TwoStepCaretMovement,r.Input,s.ClipboardPipeline]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:J}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>J(G(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new te(e)),e.commands.add("unlink",new ie(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach(e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e)),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:"link"+Z(i)});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter(e=>"automatic"===e.mode)),this._enableManualDecorators(t.filter(e=>"manual"===e.mode));e.plugins.get(r.TwoStepCaretMovement).registerAttribute("linkHref"),Object(r.inlineHighlight)(e,"linkHref","a","ck-link_selected"),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:"automatic",callback:e=>oe.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach(e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new ne(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i})=>{if(t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change(t=>{se(t,ce(e.schema))}))},{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,t=e.model;e.editing.view.addObserver(o.MouseObserver);let i=!1;this.listenTo(e.editing.view.document,"mousedown",()=>{i=!0}),this.listenTo(e.editing.view.document,"selectionChange",()=>{if(!i)return;i=!1;const e=t.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const n=e.getFirstPosition(),o=Object(r.findAttributeRange)(n,"linkHref",e.getAttribute("linkHref"),t);(n.isTouching(o.start)||n.isTouching(o.end))&&t.change(e=>{se(e,ce(t.schema))})})}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",()=>{n=!0},{priority:"high"}),this.listenTo(e.model,"deleteContent",()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:ae(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),o=i.nodeAfter;if(!o)return!1;if(!o.is("$text"))return!1;if(!o.hasAttribute("linkHref"))return!1;const s=n.textNode||n.nodeBefore;if(o===s)return!0;return Object(r.findAttributeRange)(i,"linkHref",o.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))},{priority:"high"}),this.listenTo(e.model,"insertContent",(t,[o])=>{n=!1,ae(e)&&i&&(e.model.change(e=>{for(const[t,n]of i)e.setAttribute(t,n,o)}),i=null)},{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let o=!1,s=!1;this.listenTo(n.document,"delete",(e,t)=>{s=t.domEvent.keyCode===a.keyCodes.backspace},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{o=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const s=Object(r.findAttributeRange)(e,"linkHref",n,t);o=s.containsPosition(e)||s.end.isEqual(e)},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{s&&(s=!1,o||e.model.enqueueChange(e=>{se(e,ce(t.schema))}))},{priority:"low"})}}function se(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function ae(e){return e.plugins.get("Input").isInput(e.model.change(e=>e.batch))}function ce(e){return e.getDefinition("$text").allowAttributes.filter(e=>e.startsWith("link"))}var le=i(0),ue=i(10);i(7),i(15);class de extends le.View{constructor(e,t){super(e);const i=e.t;this.focusTracker=new a.FocusTracker,this.keystrokes=new a.KeystrokeHandler,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(i("Save"),n.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),n.icons.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(t),this.children=this._createFormChildren(t.manualDecorators),this._focusables=new le.ViewCollection,this._focusCycler=new le.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const o=["ck","ck-link-form","ck-responsive-form"];t.manualDecorators.length&&o.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:o,tabindex:"-1"},children:this.children}),Object(le.injectCssTransitionDisabler)(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce((e,t)=>(e[t.name]=t.isOn,e),{})}render(){super.render(),Object(le.submitHandler)({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new le.LabeledFieldView(this.locale,le.createLabeledInputText);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new le.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new le.SwitchButtonView(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",(e,t)=>void 0===t&&void 0===e?i.defaultValue:e),n.on("execute",()=>{i.set("value",!n.isOn)}),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new le.View;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map(e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}})),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}i(17);class ke extends le.View{constructor(e){super(e);const t=e.t;this.focusTracker=new a.FocusTracker,this.keystrokes=new a.KeystrokeHandler,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(t("Unlink"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184zm4.919 10.562-1.414 1.414a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.061-1.06l1.414 1.414 1.414-1.415a.75.75 0 0 1 1.061 1.061l-1.414 1.414 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414z"/></svg>',"unlink"),this.editButtonView=this._createButton(t("Edit link"),n.icons.pencil,"edit"),this.set("href"),this._focusables=new le.ViewCollection,this._focusCycler=new le.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new le.ButtonView(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new le.ButtonView(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",e=>e&&G(e)),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",e=>e||i("This link has no URL")),e.bind("isEnabled").to(this,"href",e=>!!e),e.template.tag="a",e.template.eventListeners={},e}}var fe='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>';class he extends n.Plugin{static get requires(){return[le.ContextualBalloon]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(o.ClickObserver),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(le.ContextualBalloon),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:"link-ui",view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:"link-ui",view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new ke(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",()=>{this._addFormView()}),this.listenTo(t,"unlink",()=>{e.execute("unlink"),this._hideUI()}),t.keystrokes.set("Esc",(e,t)=>{this._hideUI(),t()}),t.keystrokes.set("Ctrl+K",(e,t)=>{this._addFormView(),t()}),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new de(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",e=>!e),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",()=>{const{value:t}=n.urlInputView.fieldView.element,o=ee(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(e,t)=>{this._closeFormView(),t()}),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set("Ctrl+K",(e,i)=>{i(),t.isEnabled&&this._showUI(!0)}),e.ui.componentFactory.add("link",e=>{const n=new le.ButtonView(e);return n.isEnabled=!0,n.label=i("Link"),n.icon=fe,n.keystroke="Ctrl+K",n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",e=>!!e),this.listenTo(n,"execute",()=>this._showUI(!0)),n})}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),this.editor.keystrokes.set("Tab",(e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),Object(le.clickOutsideHandler)({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=r();const o=()=>{const e=this._getSelectedLinkElement(),t=r();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function r(){return t.selection.focus.getAncestors().reverse().find(e=>e.is("element"))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has("link-ui")){const t=Array.from(this.editor.editing.mapper.markerNameToElements("link-ui")),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&Object(ue.isWidget)(i))return me(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=me(i.start),o=me(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const i=e.document.selection.getFirstRange();if(e.markers.has("link-ui"))t.updateMarker("link-ui",{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition(({item:t})=>!e.schema.isContent(t),{boundaries:i});t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker("link-ui",{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has("link-ui")&&e.change(e=>{e.removeMarker("link-ui")})}}function me(e){return e.getAncestors().find(e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t})}const ge=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class be extends n.Plugin{static get requires(){return[r.Delete]}static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")}),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new r.TextWatcher(e.model,e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=pe(e.substr(0,e.length-1));return t?{url:t}:void 0}),i=e.plugins.get("Input");t.on("matched:data",(t,n)=>{const{batch:o,range:r,url:s}=n;if(!i.isInput(o))return;const a=r.end.getShiftedBy(-1),c=a.getShiftedBy(-s.length),l=e.model.createRange(c,a);this._applyAutoLink(s,l)}),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)})}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)})}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=Object(r.getLastTextLine)(e,t),o=pe(i);if(o){const e=t.createRange(n.end.getShiftedBy(-o.length),n.end);this._applyAutoLink(o,e)}}_applyAutoLink(e,t){const i=this.editor.model,n=this.editor.plugins.get("Delete");this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&i.enqueueChange(o=>{const r=this.editor.config.get("link.defaultProtocol"),s=ee(e,r);o.setAttribute("linkHref",s,t),i.enqueueChange(()=>{n.requestUndoOnBackspace()})})}}function pe(e){const t=ge.exec(e);return t?t[2]:null}class we extends n.Plugin{static get requires(){return[re,he,be]}static get pluginName(){return"Link"}}class ve extends n.Plugin{static get requires(){return["ImageEditing","ImageUtils",re]}static get pluginName(){return"LinkImageEditing"}init(){const e=this.editor,t=e.model.schema;e.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["linkHref"]}),e.plugins.has("ImageInlineEditing")&&t.extend("imageInline",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add(function(e){const t=e.plugins.has("ImageInlineEditing"),i=e.plugins.get("ImageUtils");return e=>{e.on("element:a",(e,n,o)=>{const r=n.viewItem,s=i.findViewImgElement(r);if(!s)return;const a=s.findAncestor(e=>i.isBlockImageView(e));if(t&&!a)return;if(!o.consumable.consume(r,{attributes:["href"]}))return;const c=r.getAttribute("href");if(!c)return;let l=n.modelCursor.parent;if(!l.is("element","imageBlock")){const e=o.convertItem(s,n.modelCursor);n.modelRange=e.modelRange,n.modelCursor=e.modelCursor,l=n.modelCursor.nodeBefore}l&&l.is("element","imageBlock")&&o.writer.setAttribute("linkHref",c,l)},{priority:"high"})}}(e)),e.conversion.for("downcast").add(function(e){const t=e.plugins.get("ImageUtils");return e=>{e.on("attribute:linkHref:imageBlock",(e,i,n)=>{if(!n.consumable.consume(i.item,e.name))return;const o=n.mapper.toViewElement(i.item),r=n.writer,s=Array.from(o.getChildren()).find(e=>"a"===e.name),a=t.findViewImgElement(o),c=a.parent.is("element","picture")?a.parent:a;if(s)i.attributeNewValue?r.setAttribute("href",i.attributeNewValue,s):(r.move(r.createRangeOn(c),r.createPositionAt(o,0)),r.remove(s));else{const e=r.createContainerElement("a",{href:i.attributeNewValue});r.insert(r.createPositionAt(o,0),e),r.move(r.createRangeOn(c),r.createPositionAt(e,0))}},{priority:"high"})}}(e)),this._enableAutomaticDecorators(),this._enableManualDecorators()}_enableAutomaticDecorators(){const e=this.editor,t=e.commands.get("link").automaticDecorators;t.length&&e.conversion.for("downcast").add(t.getDispatcherForLinkedImage())}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:i.id}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:i.id}),e.conversion.for("downcast").add(_e(i)),e.conversion.for("upcast").add(ye(e,i))}}function _e(e){return t=>{t.on(`attribute:${e.id}:imageBlock`,(t,i,n)=>{const o=n.mapper.toViewElement(i.item),r=Array.from(o.getChildren()).find(e=>"a"===e.name);if(r){for(const[t,i]of Object(a.toMap)(e.attributes))n.writer.setAttribute(t,i,r);e.classes&&n.writer.addClass(e.classes,r);for(const t in e.styles)n.writer.setStyle(t,e.styles[t],r)}})}}function ye(e,t){const i=e.plugins.get("ImageUtils");return e=>{e.on("element:a",(e,n,r)=>{const s=n.viewItem;if(!i.findViewImgElement(s))return;const a=new o.Matcher(t._createPattern()).match(s);if(!a)return;if(!r.consumable.consume(s,a.match))return;const c=n.modelCursor.nodeBefore||n.modelCursor.parent;r.writer.setAttribute(t.id,!0,c)},{priority:"high"})}}class Ae extends n.Plugin{static get requires(){return[re,he,"ImageBlockEditing"]}static get pluginName(){return"LinkImageUI"}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",(t,i)=>{this._isSelectedLinkedImage(e.model.document.selection)&&(i.preventDefault(),t.stop())},{priority:"high"}),this._createToolbarLinkImageButton()}_createToolbarLinkImageButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("linkImage",i=>{const n=new le.ButtonView(i),o=e.plugins.get("LinkUI"),r=e.commands.get("link");return n.set({isEnabled:!0,label:t("Link image"),icon:fe,keystroke:"Ctrl+K",tooltip:!0,isToggleable:!0}),n.bind("isEnabled").to(r,"isEnabled"),n.bind("isOn").to(r,"value",e=>!!e),this.listenTo(n,"execute",()=>{this._isSelectedLinkedImage(e.model.document.selection)?o._addActionsView():o._showUI(!0)}),n})}_isSelectedLinkedImage(e){const t=e.getSelectedElement();return this.editor.plugins.get("ImageUtils").isImage(t)&&t.hasAttribute("linkHref")}}i(19);class xe extends n.Plugin{static get requires(){return[ve,Ae]}static get pluginName(){return"LinkImage"}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/list.js b/core/assets/vendor/ckeditor5/list.js new file mode 100644 index 000000000000..df6c1df14dc3 --- /dev/null +++ b/core/assets/vendor/ckeditor5/list.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(t){const e=t.en=t.en||{};e.dictionary=Object.assign(e.dictionary||{},{"Bulleted List":"Bulleted List","Bulleted list styles toolbar":"Bulleted list styles toolbar",Circle:"Circle",Decimal:"Decimal","Decimal with leading zero":"Decimal with leading zero",Disc:"Disc","Lower-latin":"Lower-latin","Lower–roman":"Lower–roman","Numbered List":"Numbered List","Numbered list styles toolbar":"Numbered list styles toolbar",Square:"Square","To-do List":"To-do List","Toggle the circle list style":"Toggle the circle list style","Toggle the decimal list style":"Toggle the decimal list style","Toggle the decimal with leading zero list style":"Toggle the decimal with leading zero list style","Toggle the disc list style":"Toggle the disc list style","Toggle the lower–latin list style":"Toggle the lower–latin list style","Toggle the lower–roman list style":"Toggle the lower–roman list style","Toggle the square list style":"Toggle the square list style","Toggle the upper–latin list style":"Toggle the upper–latin list style","Toggle the upper–roman list style":"Toggle the upper–roman list style","Upper-latin":"Upper-latin","Upper-roman":"Upper-roman"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.list=function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=12)}([function(t,e,i){t.exports=i(3)("./src/core.js")},function(t,e,i){t.exports=i(3)("./src/utils.js")},function(t,e,i){t.exports=i(3)("./src/ui.js")},function(t,e){t.exports=CKEditor5.dll},function(t,e,i){t.exports=i(3)("./src/engine.js")},function(t,e,i){"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},s=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),r=[];function l(t){for(var e=-1,i=0;i<r.length;i++)if(r[i].identifier===t){e=i;break}return e}function a(t,e){for(var i={},n=[],o=0;o<t.length;o++){var s=t[o],a=e.base?s[0]+e.base:s[0],c=i[a]||0,d="".concat(a," ").concat(c);i[a]=c+1;var u=l(d),m={css:s[1],media:s[2],sourceMap:s[3]};-1!==u?(r[u].references++,r[u].updater(m)):r.push({identifier:d,updater:f(m,e),references:1}),n.push(d)}return n}function c(t){var e=document.createElement("style"),n=t.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(t){e.setAttribute(t,n[t])})),"function"==typeof t.insert)t.insert(e);else{var r=s(t.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(e)}return e}var d,u=(d=[],function(t,e){return d[t]=e,d.filter(Boolean).join("\n")});function m(t,e,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(t.styleSheet)t.styleSheet.cssText=u(e,o);else{var s=document.createTextNode(o),r=t.childNodes;r[e]&&t.removeChild(r[e]),r.length?t.insertBefore(s,r[e]):t.appendChild(s)}}function g(t,e,i){var n=i.css,o=i.media,s=i.sourceMap;if(o?t.setAttribute("media",o):t.removeAttribute("media"),s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var p=null,h=0;function f(t,e){var i,n,o;if(e.singleton){var s=h++;i=p||(p=c(e)),n=m.bind(null,i,s,!1),o=m.bind(null,i,s,!0)}else i=c(e),n=g.bind(null,i,e),o=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else o()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=o());var i=a(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var n=0;n<i.length;n++){var o=l(i[n]);r[o].references--}for(var s=a(t,e),c=0;c<i.length;c++){var d=l(i[c]);0===r[d].references&&(r[d].updater(),r.splice(d,1))}i=s}}}},function(t,e,i){t.exports=i(3)("./src/enter.js")},function(t,e,i){t.exports=i(3)("./src/typing.js")},function(t,e,i){var n=i(5),o=i(9);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,""]]);var s={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,s);t.exports=o.locals||{}},function(t,e){t.exports=".ck.ck-list-styles-dropdown>.ck-dropdown__panel>.ck-toolbar>.ck-toolbar__items{display:grid}:root{--ck-list-style-button-size:44px}.ck.ck-list-styles-dropdown>.ck-dropdown__panel>.ck-toolbar{background:none;padding:0}.ck.ck-list-styles-dropdown>.ck-dropdown__panel>.ck-toolbar>.ck-toolbar__items{grid-template-columns:repeat(3,auto);row-gap:var(--ck-spacing-medium);column-gap:var(--ck-spacing-medium);padding:var(--ck-spacing-medium)}.ck.ck-list-styles-dropdown>.ck-dropdown__panel>.ck-toolbar>.ck-toolbar__items .ck-button{width:var(--ck-list-style-button-size);height:var(--ck-list-style-button-size);padding:0;margin:0;box-sizing:content-box}.ck.ck-list-styles-dropdown>.ck-dropdown__panel>.ck-toolbar>.ck-toolbar__items .ck-button .ck-icon{width:var(--ck-list-style-button-size);height:var(--ck-list-style-button-size)}"},function(t,e,i){var n=i(5),o=i(11);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[t.i,o,""]]);var s={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,s);t.exports=o.locals||{}},function(t,e){t.exports=':root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;display:inline-block;position:relative;width:var(--ck-todo-list-checkmark-size);height:var(--ck-todo-list-checkmark-size);vertical-align:middle;border:0;left:-25px;margin-right:-15px;right:0;margin-left:0}.ck-content .todo-list .todo-list__label>input:before{display:block;position:absolute;box-sizing:border-box;content:"";width:100%;height:100%;border:1px solid #333;border-radius:2px;transition:box-shadow .25s ease-in-out,background .25s ease-in-out,border .25s ease-in-out}.ck-content .todo-list .todo-list__label>input:after{display:block;position:absolute;box-sizing:content-box;pointer-events:none;content:"";left:calc(var(--ck-todo-list-checkmark-size)/3);top:calc(var(--ck-todo-list-checkmark-size)/5.3);width:calc(var(--ck-todo-list-checkmark-size)/5.3);height:calc(var(--ck-todo-list-checkmark-size)/2.6);border-left:0 solid transparent;border-bottom:calc(var(--ck-todo-list-checkmark-size)/8) solid transparent;border-right:calc(var(--ck-todo-list-checkmark-size)/8) solid transparent;border-top:0 solid transparent;transform:rotate(45deg)}.ck-content .todo-list .todo-list__label>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-content .todo-list .todo-list__label>input[checked]:after{border-color:#fff}.ck-content .todo-list .todo-list__label .todo-list__label__description{vertical-align:middle}[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-right:0;right:-25px;margin-left:-15px}.ck-editor__editable .todo-list .todo-list__label>input{cursor:pointer}.ck-editor__editable .todo-list .todo-list__label>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}'},function(t,e,i){"use strict";i.r(e),i.d(e,"List",(function(){return D})),i.d(e,"ListEditing",(function(){return M})),i.d(e,"ListUI",(function(){return j})),i.d(e,"ListStyle",(function(){return G})),i.d(e,"ListStyleEditing",(function(){return F})),i.d(e,"ListStyleUI",(function(){return $})),i.d(e,"TodoList",(function(){return st})),i.d(e,"TodoListEditing",(function(){return nt})),i.d(e,"TodoListUI",(function(){return ot}));var n=i(0),o=i(1);class s extends n.Command{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document,n=Array.from(i.selection.getSelectedBlocks()).filter(t=>l(t,e.schema)),o=void 0!==t.forceValue?!t.forceValue:this.value;e.change(t=>{if(o){let e=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,o=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t<i&&(i=t);const n=t-i;o.push({element:e,listIndent:n}),e=e.nextSibling}o=o.reverse();for(const e of o)t.setAttribute("listIndent",e.listIndent,e.element)}if(!o){let t=Number.POSITIVE_INFINITY;for(const e of n)e.is("element","listItem")&&e.getAttribute("listIndent")<t&&(t=e.getAttribute("listIndent"));t=0===t?1:t,r(n,!0,t),r(n,!1,t)}for(const e of n.reverse())o&&"listItem"==e.name?t.rename(e,"paragraph"):o||"listItem"==e.name?o||"listItem"!=e.name||e.getAttribute("listType")==this.type||t.setAttribute("listType",this.type,e):(t.setAttributes({listType:this.type,listIndent:0},e),t.rename(e,"listItem"));this.fire("_executeCleanup",n)})}_getValue(){const t=Object(o.first)(this.editor.model.document.selection.getSelectedBlocks());return!!t&&t.is("element","listItem")&&t.getAttribute("listType")==this.type}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,i=Object(o.first)(t.getSelectedBlocks());return!!i&&l(i,e)}}function r(t,e,i){const n=e?t[0]:t[t.length-1];if(n.is("element","listItem")){let o=n[e?"previousSibling":"nextSibling"],s=n.getAttribute("listIndent");for(;o&&o.is("element","listItem")&&o.getAttribute("listIndent")>=i;)s>o.getAttribute("listIndent")&&(s=o.getAttribute("listIndent")),o.getAttribute("listIndent")==s&&t[e?"unshift":"push"](o),o=o[e?"previousSibling":"nextSibling"]}}function l(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class a extends n.Command{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let i=Array.from(e.selection.getSelectedBlocks());t.change(t=>{const e=i[i.length-1];let n=e.nextSibling;for(;n&&"listItem"==n.name&&n.getAttribute("listIndent")>e.getAttribute("listIndent");)i.push(n),n=n.nextSibling;this._indentBy<0&&(i=i.reverse());for(const e of i){const i=e.getAttribute("listIndent")+this._indentBy;i<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",i,e)}this.fire("_executeCleanup",i)})}_checkEnabled(){const t=Object(o.first)(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("element","listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),i=t.getAttribute("listType");let n=t.previousSibling;for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=e;){if(n.getAttribute("listIndent")==e)return n.getAttribute("listType")==i;n=n.previousSibling}return!1}return!0}}var c=i(6),d=i(7),u=i(4),m=i(2);function g(t,e){const i=e.mapper,n=e.writer,o="numbered"==t.getAttribute("listType")?"ol":"ul",s=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=A,e}(n),r=n.createContainerElement(o,null);return n.insert(n.createPositionAt(r,0),s),i.bindElements(t,s),s}function p(t,e,i,n){const o=e.parent,s=i.mapper,r=i.writer;let l=s.toViewPosition(n.createPositionBefore(t));const a=b(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),c=t.previousSibling;if(a&&a.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=s.toViewElement(a);l=r.breakContainer(r.createPositionAfter(t))}else if(c&&"listItem"==c.name){l=s.toViewPosition(n.createPositionAt(c,"end"));const t=s.findMappedViewAncestor(l),e=y(t);l=e?r.createPositionBefore(e):r.createPositionAt(t,"end")}else l=s.toViewPosition(n.createPositionBefore(t));if(l=f(l),r.insert(l,o),c&&"listItem"==c.name){const t=s.toViewElement(c),i=r.createRange(r.createPositionAt(t,0),l).getWalker({ignoreElementEnd:!0});for(const t of i)if(t.item.is("element","li")){const n=r.breakContainer(r.createPositionBefore(t.item)),o=t.item.parent,s=r.createPositionAt(e,"end");h(r,s.nodeBefore,s.nodeAfter),r.move(r.createRangeOn(o),s),i.position=n}}else{const i=o.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let n=null;for(const e of i.getChildren()){const i=s.toModelElement(e);if(!(i&&i.getAttribute("listIndent")>t.getAttribute("listIndent")))break;n=e}n&&(r.breakContainer(r.createPositionAfter(n)),r.move(r.createRangeOn(n.parent),r.createPositionAt(e,"end")))}}h(r,o,o.nextSibling),h(r,o.previousSibling,o)}function h(t,e,i){return!e||!i||"ul"!=e.name&&"ol"!=e.name||e.name!=i.name||e.getAttribute("class")!==i.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function f(t){return t.getLastMatchingPosition(t=>t.item.is("uiElement"))}function b(t,e){const i=!!e.sameIndent,n=!!e.smallerIndent,o=e.listIndent;let s=t;for(;s&&"listItem"==s.name;){const t=s.getAttribute("listIndent");if(i&&o==t||n&&o>t)return s;s="forward"===e.direction?s.nextSibling:s.previousSibling}return null}function v(t,e,i,n){t.ui.componentFactory.add(e,o=>{const s=t.commands.get(e),r=new m.ButtonView(o);return r.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.on("execute",()=>{t.execute(e),t.editing.view.focus()}),r})}function y(t){for(const e of t.getChildren())if("ul"==e.name||"ol"==e.name)return e;return null}function w(t,e){const i=[],n=t.parent,o={ignoreElementEnd:!0,startPosition:t,shallow:!0,direction:e},s=n.getAttribute("listIndent"),r=[...new u.TreeWalker(o)].filter(t=>t.item.is("element")).map(t=>t.item);for(const t of r){if(!t.is("element","listItem"))break;if(t.getAttribute("listIndent")<s)break;if(!(t.getAttribute("listIndent")>s)){if(t.getAttribute("listType")!==n.getAttribute("listType"))break;if(t.getAttribute("listStyle")!==n.getAttribute("listStyle"))break;"backward"===e?i.unshift(t):i.push(t)}}return i}function A(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:u.getFillerOffset.call(this)}function I(t){return(e,i,n)=>{const o=n.consumable;if(!o.test(i.item,"insert")||!o.test(i.item,"attribute:listType")||!o.test(i.item,"attribute:listIndent"))return;o.consume(i.item,"insert"),o.consume(i.item,"attribute:listType"),o.consume(i.item,"attribute:listIndent");const s=i.item;p(s,g(s,n),n,t)}}function k(t,e,i){if(!i.consumable.consume(e.item,"attribute:listType"))return;const n=i.mapper.toViewElement(e.item),o=i.writer;o.breakContainer(o.createPositionBefore(n)),o.breakContainer(o.createPositionAfter(n));const s=n.parent,r="numbered"==e.attributeNewValue?"ol":"ul";o.rename(r,s)}function S(t,e,i){const n=i.mapper.toViewElement(e.item).parent,o=i.writer;h(o,n,n.nextSibling),h(o,n.previousSibling,n);for(const t of e.item.getChildren())i.consumable.consume(t,"insert")}function x(t,e,i){if("listItem"!=e.item.name){let t=i.mapper.toViewPosition(e.range.start);const n=i.writer,o=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&(t=n.breakContainer(t),"li"==t.parent.name);){const e=t,i=n.createPositionAt(t.parent,"end");if(!e.isEqual(i)){const t=n.remove(n.createRange(e,i));o.push(t)}t=n.createPositionAfter(t.parent)}if(o.length>0){for(let e=0;e<o.length;e++){const i=t.nodeBefore;if(t=n.insert(t,o[e]).end,e>0){const e=h(n,i,i.nextSibling);e&&e.parent==i&&t.offset--}}h(n,t.nodeBefore,t.nodeAfter)}}}function T(t,e,i){const n=i.mapper.toViewPosition(e.position),o=n.nodeBefore,s=n.nodeAfter;h(i.writer,o,s)}function z(t,e,i){if(i.consumable.consume(e.viewItem,{name:!0})){const t=i.writer,n=t.createElement("listItem"),o=function(t){let e=0,i=t.parent;for(;i;){if(i.is("element","li"))e++;else{const t=i.previousSibling;t&&t.is("element","li")&&e++}i=i.parent}return e}(e.viewItem);t.setAttribute("listIndent",o,n);const s=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";if(t.setAttribute("listType",s,n),!i.safeInsert(n,e.modelCursor))return;const r=function(t,e,i){const{writer:n,schema:o}=i;let s=n.createPositionAfter(t);for(const r of e)if("ul"==r.name||"ol"==r.name)s=i.convertItem(r,s).modelCursor;else{const e=i.convertItem(r,n.createPositionAt(t,"end")),l=e.modelRange.start.nodeAfter;l&&l.is("element")&&!o.checkChild(t,l.name)&&(t=e.modelCursor.parent.is("element","listItem")?e.modelCursor.parent:V(e.modelCursor),s=n.createPositionAfter(t))}return s}(n,e.viewItem.getChildren(),i);e.modelRange=t.createRange(e.modelCursor,r),i.updateConversionResult(n,e)}}function C(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("element","li")||B(e))&&e._remove()}}}function _(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let i=!1;for(const e of t)i&&!B(e)&&e._remove(),B(e)&&(i=!0)}}function L(t){return(e,i)=>{if(i.isPhantom)return;const n=i.modelPosition.nodeBefore;if(n&&n.is("element","listItem")){const e=i.mapper.toViewElement(n),o=e.getAncestors().find(B),s=t.createPositionAt(e,0).getWalker();for(const t of s){if("elementStart"==t.type&&t.item.is("element","li")){i.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==o){i.viewPosition=t.nextPosition;break}}}}}function P(t,[e,i]){let n,o=e.is("documentFragment")?e.getChild(0):e;if(n=i?this.createSelection(i):this.document.selection,o&&o.is("element","listItem")){const t=n.getFirstPosition();let e=null;if(t.parent.is("element","listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("element","listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;o&&o.is("element","listItem");)o._setAttribute("listIndent",o.getAttribute("listIndent")+t),o=o.nextSibling}}}function V(t){const e=new u.TreeWalker({startPosition:t});let i;do{i=e.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function E(t,e,i,n,o,s){const r=b(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),l=o.mapper,a=o.writer,c=r?r.getAttribute("listIndent"):null;let d;if(r)if(c==t){const t=l.toViewElement(r).parent;d=a.createPositionAfter(t)}else{const t=s.createPositionAt(r,"end");d=l.toViewPosition(t)}else d=i;d=f(d);for(const t of[...n.getChildren()])B(t)&&(d=a.move(a.createRangeOn(t),d).end,h(a,t,t.nextSibling),h(a,t.previousSibling,t))}function B(t){return t.is("element","ol")||t.is("element","ul")}class M extends n.Plugin{static get pluginName(){return"ListEditing"}static get requires(){return[c.Enter,d.Delete]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,i=t.editing;var n;t.model.document.registerPostFixer(e=>function(t,e){const i=t.document.differ.getChanges(),n=new Map;let o=!1;for(const n of i)if("insert"==n.type&&"listItem"==n.name)s(n.position);else if("insert"==n.type&&"listItem"!=n.name){if("$text"!=n.name){const i=n.position.nodeAfter;i.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",i),o=!0),i.hasAttribute("listType")&&(e.removeAttribute("listType",i),o=!0),i.hasAttribute("listStyle")&&(e.removeAttribute("listStyle",i),o=!0);for(const e of Array.from(t.createRangeIn(i)).filter(t=>t.item.is("element","listItem")))s(e.previousPosition)}s(n.position.getShiftedBy(n.length))}else"remove"==n.type&&"listItem"==n.name?s(n.position):("attribute"==n.type&&"listIndent"==n.attributeKey||"attribute"==n.type&&"listType"==n.attributeKey)&&s(n.range.start);for(const t of n.values())r(t),l(t);return o;function s(t){const e=t.nodeBefore;if(e&&e.is("element","listItem")){let t=e;if(n.has(t))return;for(let e=t.previousSibling;e&&e.is("element","listItem");e=t.previousSibling)if(t=e,n.has(t))return;n.set(e,t)}else{const e=t.nodeAfter;e&&e.is("element","listItem")&&n.set(e,e)}}function r(t){let i=0,n=null;for(;t&&t.is("element","listItem");){const s=t.getAttribute("listIndent");if(s>i){let r;null===n?(n=s-i,r=i):(n>s&&(n=s),r=s-n),e.setAttribute("listIndent",r,t),o=!0}else n=null,i=t.getAttribute("listIndent")+1;t=t.nextSibling}}function l(t){let i=[],n=null;for(;t&&t.is("element","listItem");){const s=t.getAttribute("listIndent");if(n&&n.getAttribute("listIndent")>s&&(i=i.slice(0,s+1)),0!=s)if(i[s]){const n=i[s];t.getAttribute("listType")!=n&&(e.setAttribute("listType",n,t),o=!0)}else i[s]=t.getAttribute("listType");n=t,t=t.nextSibling}}}(t.model,e)),i.mapper.registerViewToModelLength("li",H),e.mapper.registerViewToModelLength("li",H),i.mapper.on("modelToViewPosition",L(i.view)),i.mapper.on("viewToModelPosition",(n=t.model,(t,e)=>{const i=e.viewPosition,o=i.parent,s=e.mapper;if("ul"==o.name||"ol"==o.name){if(i.isAtEnd){const t=s.toModelElement(i.nodeBefore),o=s.getModelLength(i.nodeBefore);e.modelPosition=n.createPositionBefore(t).getShiftedBy(o)}else{const t=s.toModelElement(i.nodeAfter);e.modelPosition=n.createPositionBefore(t)}t.stop()}else if("li"==o.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const r=s.toModelElement(o);let l=1,a=i.nodeBefore;for(;a&&B(a);)l+=s.getModelLength(a),a=a.previousSibling;e.modelPosition=n.createPositionBefore(r).getShiftedBy(l),t.stop()}})),e.mapper.on("modelToViewPosition",L(i.view)),t.conversion.for("editingDowncast").add(e=>{e.on("insert",x,{priority:"high"}),e.on("insert:listItem",I(t.model)),e.on("attribute:listType:listItem",k,{priority:"high"}),e.on("attribute:listType:listItem",S,{priority:"low"}),e.on("attribute:listIndent:listItem",function(t){return(e,i,n)=>{if(!n.consumable.consume(i.item,"attribute:listIndent"))return;const o=n.mapper.toViewElement(i.item),s=n.writer;s.breakContainer(s.createPositionBefore(o)),s.breakContainer(s.createPositionAfter(o));const r=o.parent,l=r.previousSibling,a=s.createRangeOn(r);s.remove(a),l&&l.nextSibling&&h(s,l,l.nextSibling),E(i.attributeOldValue+1,i.range.start,a.start,o,n,t),p(i.item,o,n,t);for(const t of i.item.getChildren())n.consumable.consume(t,"insert")}}(t.model)),e.on("remove:listItem",function(t){return(e,i,n)=>{const o=n.mapper.toViewPosition(i.position).getLastMatchingPosition(t=>!t.item.is("element","li")).nodeAfter,s=n.writer;s.breakContainer(s.createPositionBefore(o)),s.breakContainer(s.createPositionAfter(o));const r=o.parent,l=r.previousSibling,a=s.createRangeOn(r),c=s.remove(a);l&&l.nextSibling&&h(s,l,l.nextSibling);E(n.mapper.toModelElement(o).getAttribute("listIndent")+1,i.position,a.start,o,n,t);for(const t of s.createRangeIn(c).getItems())n.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on("remove",T,{priority:"low"})}),t.conversion.for("dataDowncast").add(e=>{e.on("insert",x,{priority:"high"}),e.on("insert:listItem",I(t.model))}),t.conversion.for("upcast").add(t=>{t.on("element:ul",C,{priority:"high"}),t.on("element:ol",C,{priority:"high"}),t.on("element:li",_,{priority:"high"}),t.on("element:li",z)}),t.model.on("insertContent",P,{priority:"high"}),t.commands.add("numberedList",new s(t,"numbered")),t.commands.add("bulletedList",new s(t,"bulleted")),t.commands.add("indentList",new a(t,"forward")),t.commands.add("outdentList",new a(t,"backward"));const o=i.view.document;this.listenTo(o,"enter",(t,e)=>{const i=this.editor.model.document,n=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==n.name&&n.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())},{context:"li"}),this.listenTo(o,"delete",(t,e)=>{if("backward"!==e.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const n=i.getFirstPosition();if(!n.isAtStart)return;const o=n.parent;if("listItem"!==o.name)return;o.previousSibling&&"listItem"===o.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop())},{context:"li"});const r=t=>(e,i)=>{this.editor.commands.get(t).isEnabled&&(this.editor.execute(t),i())};t.keystrokes.set("Tab",r("indentList")),t.keystrokes.set("Shift+Tab",r("outdentList"))}afterInit(){const t=this.editor.commands,e=t.get("indent"),i=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),i&&i.registerChildCommand(t.get("outdentList"))}}function H(t){let e=1;for(const i of t.getChildren())if("ul"==i.name||"ol"==i.name)for(const t of i.getChildren())e+=H(t);return e}var N='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM3.5 3v5H2V3.7H1v-1h2.5V3zM.343 17.857l2.59-3.257H2.92a.6.6 0 1 0-1.04 0H.302a2 2 0 1 1 3.995 0h-.001c-.048.405-.16.734-.333.988-.175.254-.59.692-1.244 1.312H4.3v1h-4l.043-.043zM7 14.75a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>',O='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0C1 4.784 1.777 4 2.75 4c.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75C1.784 7.5 1 6.723 1 5.75zm6 9c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0c0-.966.777-1.75 1.75-1.75.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75-.966 0-1.75-.777-1.75-1.75z"/></svg>';class j extends n.Plugin{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;v(this.editor,"numberedList",t("Numbered List"),N),v(this.editor,"bulletedList",t("Bulleted List"),O)}}class D extends n.Plugin{static get requires(){return[M,j]}static get pluginName(){return"List"}}class R extends n.Command{constructor(t,e){super(t),this._defaultType=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model;let i=[...e.document.selection.getSelectedBlocks()].filter(t=>t.is("element","listItem")).map(t=>{const i=e.change(e=>e.createPositionAt(t,0));return[...w(i,"backward"),...w(i,"forward")]}).flat();i=[...new Set(i)],i.length&&e.change(e=>{for(const n of i)e.setAttribute("listStyle",t.type||this._defaultType,n)})}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),i=t.commands.get("bulletedList");return e.isEnabled||i.isEnabled}}class F extends n.Plugin{static get requires(){return[M]}static get pluginName(){return"ListStyleEditing"}init(){const t=this.editor,e=t.model;e.schema.extend("listItem",{allowAttributes:["listStyle"]}),t.commands.add("listStyle",new R(t,"default")),this.listenTo(t.commands.get("indentList"),"_executeCleanup",function(t){return(e,i)=>{let n;const o=i[0],s=o.getAttribute("listIndent"),r=i.filter(t=>t.getAttribute("listIndent")===s);if(o.previousSibling.getAttribute("listIndent")+1===s)n="default";else{const t=b(o.previousSibling,{sameIndent:!0,direction:"backward",listIndent:s});n=t.getAttribute("listStyle")}t.model.change(t=>{for(const e of r)t.setAttribute("listStyle",n,e)})}}(t)),this.listenTo(t.commands.get("outdentList"),"_executeCleanup",function(t){return(e,i)=>{if(!(i=i.reverse().filter(t=>t.is("element","listItem"))).length)return;const n=i[0].getAttribute("listIndent"),o=i[0].getAttribute("listType");let s=i[0].previousSibling;if(s.is("element","listItem"))for(;s.getAttribute("listIndent")!==n;)s=s.previousSibling;else s=null;s||(s=i[i.length-1].nextSibling),s&&s.is("element","listItem")&&s.getAttribute("listType")===o&&t.model.change(t=>{const e=i.filter(t=>t.getAttribute("listIndent")===n);for(const i of e)t.setAttribute("listStyle",s.getAttribute("listStyle"),i)})}}(t)),this.listenTo(t.commands.get("bulletedList"),"_executeCleanup",K(t)),this.listenTo(t.commands.get("numberedList"),"_executeCleanup",K(t)),e.document.registerPostFixer(function(t){return e=>{let i=!1;const n=W(t.model.document.differ.getChanges()).filter(t=>"todo"!==t.getAttribute("listType"));if(!n.length)return i;let o=n[n.length-1].nextSibling;if((!o||!o.is("element","listItem"))&&(o=n[n.length-1].previousSibling,o)){const t=n[0].getAttribute("listIndent");for(;o.is("element","listItem")&&o.getAttribute("listIndent")!==t&&(o=o.previousSibling,o););}for(const t of n)if(t.hasAttribute("listStyle")){const n=t.previousSibling;U(n,t)&&(e.setAttribute("listStyle",n.getAttribute("listStyle"),t),i=!0)}else q(o,t)?e.setAttribute("listStyle",o.getAttribute("listStyle"),t):e.setAttribute("listStyle","default",t),i=!0;return i}}(t)),t.conversion.for("upcast").add(t=>{t.on("element:li",(t,e,i)=>{const n=e.viewItem.parent;if(!n)return;const o=n.getStyle("list-style-type")||"default",s=e.modelRange.start.nodeAfter||e.modelRange.end.nodeBefore;i.writer.setAttribute("listStyle",o,s)},{priority:"low"})}),t.conversion.for("downcast").add(t=>{t.on("attribute:listStyle:listItem",(t,e,i)=>{const n=i.writer,o=e.item,s=b(o.previousSibling,{sameIndent:!0,listIndent:o.getAttribute("listIndent"),direction:"backward"}),r=i.mapper.toViewElement(o);var l,a,c,d,u;l=o,(a=s)&&l.getAttribute("listType")===a.getAttribute("listType")&&l.getAttribute("listIndent")===a.getAttribute("listIndent")&&l.getAttribute("listStyle")===a.getAttribute("listStyle")||n.breakContainer(n.createPositionBefore(r)),c=n,d=e.attributeNewValue,u=r.parent,d&&"default"!==d?c.setStyle("list-style-type",d,u):c.removeStyle("list-style-type",u)},{priority:"low"})}),this._mergeListStyleAttributeWhileMergingLists()}afterInit(){const t=this.editor;t.commands.get("todoList")&&t.model.document.registerPostFixer(function(t){return e=>{const i=W(t.model.document.differ.getChanges()).filter(t=>"todo"===t.getAttribute("listType")&&t.hasAttribute("listStyle"));if(!i.length)return!1;for(const t of i)e.removeAttribute("listStyle",t);return!0}}(t))}_mergeListStyleAttributeWhileMergingLists(){const t=this.editor.model;let e;this.listenTo(t,"deleteContent",(t,[i])=>{const n=i.getFirstPosition(),o=i.getLastPosition();if(n.parent===o.parent)return;if(!n.parent.is("element","listItem"))return;const s=o.parent.nextSibling;if(!s||!s.is("element","listItem"))return;const r=b(n.parent,{sameIndent:!0,listIndent:s.getAttribute("listIndent")});r&&r.getAttribute("listType")===s.getAttribute("listType")&&(e=r)},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{e&&(t.change(t=>{const i=b(e.nextSibling,{sameIndent:!0,listIndent:e.getAttribute("listIndent"),direction:"forward"}),n=[i,...w(t.createPositionAt(i,0),"forward")];for(const i of n)t.setAttribute("listStyle",e.getAttribute("listStyle"),i)}),e=null)},{priority:"low"})}}function q(t,e){if(!t)return!1;const i=t.getAttribute("listStyle");return!!i&&("default"!==i&&t.getAttribute("listType")===e.getAttribute("listType"))}function U(t,e){if(!t||!t.is("element","listItem"))return!1;if(e.getAttribute("listType")!==t.getAttribute("listType"))return!1;const i=t.getAttribute("listIndent");if(i<1||i!==e.getAttribute("listIndent"))return!1;const n=t.getAttribute("listStyle");return!(!n||n===e.getAttribute("listStyle"))}function K(t){return(e,i)=>{i=i.filter(t=>t.is("element","listItem")),t.model.change(t=>{for(const e of i)t.removeAttribute("listStyle",e)})}}function W(t){const e=[];for(const i of t){const t=Y(i);t&&t.is("element","listItem")&&e.push(t)}return e}function Y(t){return"attribute"===t.type?t.range.start.nodeAfter:"insert"===t.type?t.position.nodeAfter:null}i(8);class $ extends n.Plugin{static get pluginName(){return"ListStyleUI"}init(){const t=this.editor,e=t.locale.t;t.ui.componentFactory.add("bulletedList",J({editor:t,parentCommandName:"bulletedList",buttonLabel:e("Bulleted List"),buttonIcon:O,toolbarAriaLabel:e("Bulleted list styles toolbar"),styleDefinitions:[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/></svg>'},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"/></svg>'},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M14 27v6H8v-6h6zm0-9v6H8v-6h6zm0-9v6H8V9h6z"/></svg>'}]})),t.ui.componentFactory.add("numberedList",J({editor:t,parentCommandName:"numberedList",buttonLabel:e("Numbered List"),buttonIcon:N,toolbarAriaLabel:e("Numbered list styles toolbar"),styleDefinitions:[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M10.29 15V8.531H9.286c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.343 0v-1.235h-1.235V15h1.235zM11.3 24v-1.147H8.848c.064-.111.148-.226.252-.343.104-.117.351-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.494-.824.104-.263.156-.539.156-.829 0-.51-.182-.936-.545-1.279-.363-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.153-.155.358-.233.616-.233.26 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.468.536-1.024 1.055-.692.641-1.155 1.156-1.389 1.544-.234.389-.375.8-.422 1.233H11.3zm2.333 0v-1.235h-1.235V24h1.235zM9.204 34.11c.615 0 1.129-.2 1.542-.598.413-.398.62-.88.62-1.446 0-.39-.11-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.619-.337.928-.788.928-1.353 0-.399-.151-.756-.453-1.073-.366-.386-.852-.58-1.459-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.668.55c-.16.232-.28.544-.358.933l1.138.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.215 0 .386.065.515.194s.193.302.193.518c0 .255-.087.46-.263.613-.176.154-.43.227-.765.218l-.136 1.006c.22-.061.409-.092.567-.092.24 0 .444.09.61.272.168.182.251.428.251.739 0 .328-.087.589-.261.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.307-.698l-1.196.145c.062.542.285.98.668 1.316.384.335.868.503 1.45.503zm4.43-.11v-1.235h-1.236V34h1.235z"/></svg>'},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M5.714 15.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm6.078.914V8.531H10.79c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.344 0v-1.235h-1.235V15h1.235zm-9.422 9.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm7.088.914v-1.147H10.35c.065-.111.149-.226.253-.343.104-.117.35-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.493-.824.104-.263.156-.539.156-.829 0-.51-.181-.936-.544-1.279-.364-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.152-.155.357-.233.615-.233.261 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.467.536-1.024 1.055-.691.641-1.154 1.156-1.388 1.544-.235.389-.375.8-.422 1.233h4.328zm2.334 0v-1.235h-1.235V24h1.235zM5.714 34.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm4.992 1.024c.616 0 1.13-.2 1.543-.598.413-.398.62-.88.62-1.446 0-.39-.111-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.618-.337.927-.788.927-1.353 0-.399-.15-.756-.452-1.073-.366-.386-.853-.58-1.46-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.667.55c-.16.232-.28.544-.359.933l1.139.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.214 0 .386.065.515.194s.193.302.193.518c0 .255-.088.46-.264.613-.175.154-.43.227-.764.218l-.136 1.006c.22-.061.408-.092.566-.092.24 0 .444.09.611.272.167.182.25.428.25.739 0 .328-.086.589-.26.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.308-.698l-1.195.145c.062.542.284.98.668 1.316.384.335.867.503 1.45.503zm4.43-.11v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.88 8.7V7.558h-1.234V8.7h1.234zm0 5.3V9.333h-1.234V14h1.234zm2.5 0v-1.235h-1.234V14h1.235zm-4.75 4.7v-1.142H8.395V18.7H9.63zm0 5.3v-4.667H8.395V24H9.63zm2.5-5.3v-1.142h-1.234V18.7h1.235zm0 5.3v-4.667h-1.234V24h1.235zm2.501 0v-1.235h-1.235V24h1.235zM7.38 28.7v-1.142H6.145V28.7H7.38zm0 5.3v-4.667H6.145V34H7.38zm2.5-5.3v-1.142H8.646V28.7H9.88zm0 5.3v-4.667H8.646V34H9.88zm2.5-5.3v-1.142h-1.234V28.7h1.235zm0 5.3v-4.667h-1.234V34h1.235zm2.501 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.916 15V8.558h-1.301V15h1.3zm2.465 0v-1.235h-1.235V15h1.235zM9.665 25v-6.442h-1.3V25h1.3zm2.5 0v-6.442h-1.3V25h1.3zm2.466 0v-1.235h-1.235V25h1.235zm-7.216 9v-6.442h-1.3V34h1.3zm2.5 0v-6.442h-1.3V34h1.3zm2.501 0v-6.442h-1.3V34h1.3zm2.465 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M9.62 14.105c.272 0 .528-.05.768-.153s.466-.257.677-.462c.009.024.023.072.044.145.047.161.086.283.119.365h1.221a2.649 2.649 0 0 1-.222-.626c-.04-.195-.059-.498-.059-.908l.013-1.441c0-.536-.055-.905-.165-1.105-.11-.201-.3-.367-.569-.497-.27-.13-.68-.195-1.23-.195-.607 0-1.064.108-1.371.325-.308.217-.525.55-.65 1.002l1.12.202c.076-.217.176-.369.299-.455.123-.086.294-.13.514-.13.325 0 .546.05.663.152.118.101.176.27.176.508v.123c-.222.093-.622.194-1.2.303-.427.082-.755.178-.982.288-.227.11-.403.268-.53.474a1.327 1.327 0 0 0-.188.706c0 .398.138.728.415.988.277.261.656.391 1.136.391zm.368-.87a.675.675 0 0 1-.492-.189.606.606 0 0 1-.193-.448c0-.176.08-.32.241-.435.106-.07.33-.142.673-.215a7.19 7.19 0 0 0 .751-.19v.247c0 .296-.016.496-.048.602a.773.773 0 0 1-.295.409 1.07 1.07 0 0 1-.637.22zm4.645.765v-1.235h-1.235V14h1.235zM10.2 25.105c.542 0 1.003-.215 1.382-.646.38-.43.57-1.044.57-1.84 0-.771-.187-1.362-.559-1.774a1.82 1.82 0 0 0-1.41-.617c-.522 0-.973.216-1.354.65v-2.32H7.594V25h1.147v-.686a1.9 1.9 0 0 0 .67.592c.26.133.523.2.79.2zm-.299-.975c-.354 0-.638-.164-.852-.492-.153-.232-.229-.59-.229-1.073 0-.468.098-.818.295-1.048a.93.93 0 0 1 .738-.345c.302 0 .55.118.743.354.193.236.29.62.29 1.154 0 .5-.096.868-.288 1.1-.192.233-.424.35-.697.35zm4.478.87v-1.235h-1.234V25h1.234zm-4.017 9.105c.6 0 1.08-.142 1.437-.426.357-.284.599-.704.725-1.261l-1.213-.207c-.061.326-.167.555-.316.688a.832.832 0 0 1-.576.2.916.916 0 0 1-.75-.343c-.185-.228-.278-.62-.278-1.173 0-.498.091-.853.274-1.066.183-.212.429-.318.736-.318.232 0 .42.061.565.184.145.123.238.306.28.55l1.216-.22c-.146-.501-.387-.874-.722-1.119-.336-.244-.788-.366-1.356-.366-.695 0-1.245.214-1.653.643-.407.43-.61 1.03-.61 1.8 0 .762.202 1.358.608 1.788.406.431.95.646 1.633.646zM14.633 34v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="m7.88 15 .532-1.463h2.575L11.549 15h1.415l-2.58-6.442H9.01L6.5 15h1.38zm2.69-2.549H8.811l.87-2.39.887 2.39zM14.88 15v-1.235h-1.234V15h1.234zM9.352 25c.83-.006 1.352-.02 1.569-.044.346-.038.636-.14.872-.305.236-.166.422-.387.558-.664.137-.277.205-.562.205-.855 0-.372-.106-.695-.317-.97-.21-.276-.512-.471-.905-.585a1.51 1.51 0 0 0 .661-.567 1.5 1.5 0 0 0 .244-.83c0-.28-.066-.53-.197-.754a1.654 1.654 0 0 0-.495-.539 1.676 1.676 0 0 0-.672-.266c-.25-.042-.63-.063-1.14-.063H7.158V25h2.193zm.142-3.88H8.46v-1.49h.747c.612 0 .983.007 1.112.022.217.026.38.102.49.226.11.125.165.287.165.486a.68.68 0 0 1-.192.503.86.86 0 0 1-.525.23 11.47 11.47 0 0 1-.944.023h.18zm.17 2.795H8.46v-1.723h1.05c.592 0 .977.03 1.154.092.177.062.313.16.406.295a.84.84 0 0 1 .14.492c0 .228-.06.41-.181.547a.806.806 0 0 1-.473.257c-.126.026-.423.04-.892.04zM14.88 25v-1.235h-1.234V25h1.234zm-5.018 9.11c.691 0 1.262-.17 1.711-.512.45-.341.772-.864.965-1.567l-1.261-.4c-.109.472-.287.818-.536 1.037-.25.22-.547.33-.892.33-.47 0-.85-.173-1.143-.519-.293-.345-.44-.925-.44-1.74 0-.767.15-1.322.447-1.665.297-.343.684-.514 1.162-.514.346 0 .64.096.881.29.242.193.4.457.477.79l1.288-.307c-.147-.516-.367-.911-.66-1.187-.492-.465-1.132-.698-1.92-.698-.902 0-1.63.296-2.184.89-.554.593-.83 1.426-.83 2.498 0 1.014.275 1.813.825 2.397.551.585 1.254.877 2.11.877zM14.88 34v-1.235h-1.234V34h1.234z"/></svg>'}]}))}}function J({editor:t,parentCommandName:e,buttonLabel:i,buttonIcon:n,toolbarAriaLabel:o,styleDefinitions:s}){const r=t.commands.get(e),l=t.commands.get("listStyle");return a=>{const c=Object(m.createDropdown)(a,m.SplitButtonView),d=c.buttonView,u=function({editor:t,listStyleCommand:e,parentCommandName:i}){const n=t.locale,o=t.commands.get(i);return({label:s,type:r,icon:l,tooltip:a})=>{const c=new m.ButtonView(n);return c.set({label:s,icon:l,tooltip:a}),e.on("change:value",()=>{c.isOn=e.value===r}),c.on("execute",()=>{o.value?e.value!==r?t.execute("listStyle",{type:r}):t.execute("listStyle",{type:e._defaultType}):t.model.change(()=>{t.execute(i),t.execute("listStyle",{type:r})}),t.editing.view.focus()}),c}}({editor:t,parentCommandName:e,listStyleCommand:l});return Object(m.addToolbarToDropdown)(c,s.map(u)),c.bind("isEnabled").to(r),c.toolbarView.ariaLabel=o,c.class="ck-list-styles-dropdown",d.on("execute",()=>{t.execute(e),t.editing.view.focus()}),d.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),d.bind("isOn").to(r,"value",t=>!!t),c}}class G extends n.Plugin{static get requires(){return[F,$]}static get pluginName(){return"ListStyle"}}class Q extends n.Command{constructor(t){super(t),this._selectedElements=[],this.on("execute",()=>{this.refresh()},{priority:"highest"})}refresh(){this._selectedElements=this._getSelectedItems(),this.value=this._selectedElements.every(t=>!!t.getAttribute("todoListChecked")),this.isEnabled=!!this._selectedElements.length}_getSelectedItems(){const t=this.editor.model,e=t.schema,i=t.document.selection.getFirstRange(),n=i.start.parent,o=[];e.checkAttribute(n,"todoListChecked")&&o.push(n);for(const t of i.getItems())e.checkAttribute(t,"todoListChecked")&&!o.includes(t)&&o.push(t);return o}execute(t={}){this.editor.model.change(e=>{for(const i of this._selectedElements){(void 0===t.forceValue?!this.value:t.forceValue)?e.setAttribute("todoListChecked",!0,i):e.removeAttribute("todoListChecked",i)}})}}function X(t,e,i){const n=e.modelCursor,o=n.parent,s=e.viewItem;if("checkbox"!=s.getAttribute("type")||"listItem"!=o.name||!n.isAtStart)return;if(!i.consumable.consume(s,{name:!0}))return;const r=i.writer;r.setAttribute("listType","todo",o),e.viewItem.hasAttribute("checked")&&r.setAttribute("todoListChecked",!0,o),e.modelRange=r.createRange(n)}function Z(t){return(e,i)=>{const n=i.modelPosition,o=n.parent;if(!o.is("element","listItem")||"todo"!=o.getAttribute("listType"))return;const s=et(i.mapper.toViewElement(o),t);s&&(i.viewPosition=i.mapper.findPositionIn(s,n.offset))}}function tt(t,e,i,n){return e.createUIElement("label",{class:"todo-list__label",contenteditable:!1},(function(e){const s=Object(o.createElement)(document,"input",{type:"checkbox"});i&&s.setAttribute("checked","checked"),s.addEventListener("change",()=>n(t));const r=this.toDomElement(e);return r.appendChild(s),r}))}function et(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("containerElement","span")&&t.item.hasClass("todo-list__label__description"))return t.item}const it=Object(o.parseKeystroke)("Ctrl+Enter");class nt extends n.Plugin{static get pluginName(){return"TodoListEditing"}static get requires(){return[M]}init(){const t=this.editor,{editing:e,data:i,model:n}=t;n.schema.extend("listItem",{allowAttributes:["todoListChecked"]}),n.schema.addAttributeCheck((t,e)=>{const i=t.last;if("todoListChecked"==e&&"listItem"==i.name&&"todo"!=i.getAttribute("listType"))return!1}),t.commands.add("todoList",new s(t,"todo"));const r=new Q(t);var l,a;t.commands.add("checkTodoList",r),t.commands.add("todoListCheck",r),i.downcastDispatcher.on("insert:listItem",function(t){return(e,i,n)=>{const o=n.consumable;if(!o.test(i.item,"insert")||!o.test(i.item,"attribute:listType")||!o.test(i.item,"attribute:listIndent"))return;if("todo"!=i.item.getAttribute("listType"))return;const s=i.item;o.consume(s,"insert"),o.consume(s,"attribute:listType"),o.consume(s,"attribute:listIndent"),o.consume(s,"attribute:todoListChecked");const r=n.writer,l=g(s,n);r.addClass("todo-list",l.parent);const a=r.createContainerElement("label",{class:"todo-list__label"}),c=r.createEmptyElement("input",{type:"checkbox",disabled:"disabled"}),d=r.createContainerElement("span",{class:"todo-list__label__description"});s.getAttribute("todoListChecked")&&r.setAttribute("checked","checked",c),r.insert(r.createPositionAt(l,0),a),r.insert(r.createPositionAt(a,0),c),r.insert(r.createPositionAfter(c),d),p(s,l,n,t)}}(n),{priority:"high"}),i.upcastDispatcher.on("element:input",X,{priority:"high"}),e.downcastDispatcher.on("insert:listItem",function(t,e){return(i,n,o)=>{const s=o.consumable;if(!s.test(n.item,"insert")||!s.test(n.item,"attribute:listType")||!s.test(n.item,"attribute:listIndent"))return;if("todo"!=n.item.getAttribute("listType"))return;const r=n.item;s.consume(r,"insert"),s.consume(r,"attribute:listType"),s.consume(r,"attribute:listIndent"),s.consume(r,"attribute:todoListChecked");const l=o.writer,a=g(r,o),c=!!r.getAttribute("todoListChecked"),d=tt(r,l,c,e),u=l.createContainerElement("span",{class:"todo-list__label__description"});l.addClass("todo-list",a.parent),l.insert(l.createPositionAt(a,0),d),l.insert(l.createPositionAfter(d),u),p(r,a,o,t)}}(n,t=>this._handleCheckmarkChange(t)),{priority:"high"}),e.downcastDispatcher.on("attribute:listType:listItem",(l=t=>this._handleCheckmarkChange(t),a=e.view,(t,e,i)=>{const n=i.mapper.toViewElement(e.item),o=i.writer,s=function(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("uiElement","label"))return t.item}(n,a);if("todo"==e.attributeNewValue){const t=!!e.item.getAttribute("todoListChecked"),i=tt(e.item,o,t,l),s=o.createContainerElement("span",{class:"todo-list__label__description"}),r=o.createRangeIn(n),a=y(n),c=f(r.start),d=a?o.createPositionBefore(a):r.end,u=o.createRange(c,d);o.addClass("todo-list",n.parent),o.move(u,o.createPositionAt(s,0)),o.insert(o.createPositionAt(n,0),i),o.insert(o.createPositionAfter(i),s)}else if("todo"==e.attributeOldValue){const t=et(n,a);o.removeClass("todo-list",n.parent),o.remove(s),o.move(o.createRangeIn(t),o.createPositionBefore(t)),o.remove(t)}})),e.downcastDispatcher.on("attribute:todoListChecked:listItem",function(t){return(e,i,n)=>{if("todo"!=i.item.getAttribute("listType"))return;if(!n.consumable.consume(i.item,"attribute:todoListChecked"))return;const{mapper:o,writer:s}=n,r=!!i.item.getAttribute("todoListChecked"),l=o.toViewElement(i.item).getChild(0),a=tt(i.item,s,r,t);s.insert(s.createPositionAfter(l),a),s.remove(l)}}(t=>this._handleCheckmarkChange(t))),e.mapper.on("modelToViewPosition",Z(e.view)),i.mapper.on("modelToViewPosition",Z(e.view)),this.listenTo(e.view.document,"arrowKey",function(t,e){return(i,n)=>{if("left"!=Object(o.getLocalizedArrowKeyCodeDirection)(n.keyCode,e.contentLanguageDirection))return;const s=t.schema,r=t.document.selection;if(!r.isCollapsed)return;const l=r.getFirstPosition(),a=l.parent;if("listItem"===a.name&&"todo"==a.getAttribute("listType")&&l.isAtStart){const e=s.getNearestSelectionRange(t.createPositionBefore(a),"backward");e&&t.change(t=>t.setSelection(e)),n.preventDefault(),n.stopPropagation(),i.stop()}}}(n,t.locale),{context:"li"}),this.listenTo(e.view.document,"keydown",(e,i)=>{Object(o.getCode)(i)===it&&(t.execute("checkTodoList"),e.stop())},{priority:"high"});const c=new Set;this.listenTo(n,"applyOperation",(t,e)=>{const i=e[0];if("rename"==i.type&&"listItem"==i.oldName){const t=i.position.nodeAfter;t.hasAttribute("todoListChecked")&&c.add(t)}else if("changeAttribute"==i.type&&"listType"==i.key&&"todo"===i.oldValue)for(const t of i.range.getItems())t.hasAttribute("todoListChecked")&&"todo"!==t.getAttribute("listType")&&c.add(t)}),n.document.registerPostFixer(t=>{let e=!1;for(const i of c)t.removeAttribute("todoListChecked",i),e=!0;return c.clear(),e})}_handleCheckmarkChange(t){const e=this.editor,i=e.model,n=Array.from(i.document.selection.getRanges());i.change(i=>{i.setSelection(t,"end"),e.execute("checkTodoList"),i.setSelection(n)})}}class ot extends n.Plugin{static get pluginName(){return"TodoListUI"}init(){const t=this.editor.t;v(this.editor,"todoList",t("To-do List"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m2.315 14.705 2.224-2.24a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .949L2.865 16.07a.682.682 0 0 1-.112.089.647.647 0 0 1-.852-.051L.688 14.886a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.717.722zm5.185.045a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75zM2.329 5.745l2.21-2.226a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .95L2.865 7.125a.685.685 0 0 1-.496.196.644.644 0 0 1-.468-.187L.688 5.912a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.73.736zM7.5 5.75A.75.75 0 0 1 8.25 5h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>')}}i(10);class st extends n.Plugin{static get requires(){return[nt,ot]}static get pluginName(){return"TodoList"}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/paste-from-office.js b/core/assets/vendor/ckeditor5/paste-from-office.js new file mode 100644 index 000000000000..4cd9ec115b47 --- /dev/null +++ b/core/assets/vendor/ckeditor5/paste-from-office.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +window.CKEditor5=window.CKEditor5||{},window.CKEditor5.pasteFromOffice=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(e,t,n){e.exports=n(1)("./src/engine.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,n){e.exports=n(1)("./src/core.js")},function(e,t,n){e.exports=n(1)("./src/clipboard.js")},function(e,t,n){"use strict";n.r(t),n.d(t,"PasteFromOffice",(function(){return b}));var r=n(2),i=n(3),o=n(0);function s(e,t){if(!e.childCount)return;const n=new o.UpcastWriter(e.document),r=function(e,t){const n=t.createRangeIn(e),r=new o.Matcher({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const e of n)if("elementStart"===e.type&&r.match(e.item)){const t=a(e.item);i.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return i}(e,n);if(!r.length)return;let i=null,s=1;r.forEach((e,a)=>{const u=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const n=t.element.previousSibling;if(!n)return!0;return r=n,!(r.is("element","ol")||r.is("element","ul"));var r}(r[a-1],e),f=u?null:r[a-1],d=(m=e,(p=f)?m.indent-p.indent:m.indent-1);var p,m;if(u&&(i=null,s=1),!i||0!==d){const r=function(e,t){const n=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),r=/mso-level-number-format:([^;]{0,100});/gi,i=n.exec(t);let o="decimal",s="ol";if(i&&i[1]){const t=r.exec(i[1]);if(t&&t[1]&&(o=t[1].trim(),s="bullet"!==o&&"image"!==o?"ol":"ul"),"bullet"===o){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const n=t._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(e.element);t&&(o=t)}}return{type:s,style:c(o)}}(e,t);if(i){if(e.indent>s){const e=i.getChild(i.childCount-1),t=e.getChild(e.childCount-1);i=l(r,t,n),s+=1}else if(e.indent<s){const t=s-e.indent;i=function(e,t){const n=e.getAncestors({parentFirst:!0});let r=null,i=0;for(const e of n)if("ul"!==e.name&&"ol"!==e.name||i++,i===t){r=e;break}return r}(i,t),s=parseInt(e.indent)}}else i=l(r,e.element,n);e.indent<=s&&(i.is("element",r.type)||(i=n.rename(r.type,i)))}const g=function(e,t){return function(e,t){const n=new o.Matcher({name:"span",styles:{"mso-list":"Ignore"}}),r=t.createRangeIn(e);for(const e of r)"elementStart"===e.type&&n.match(e.item)&&t.remove(e.item)}(e,t),t.rename("li",e)}(e.element,n);n.appendChild(g,i)})}function c(e){switch(e){case"arabic-leading-zero":return"decimal-leading-zero";case"alpha-upper":return"upper-alpha";case"alpha-lower":return"lower-alpha";case"roman-upper":return"upper-roman";case"roman-lower":return"lower-roman";case"circle":case"disc":case"square":return e;default:return null}}function l(e,t,n){const r=t.parent,i=n.createElement(e.type),o=r.getChildIndex(t)+1;return n.insertChild(o,i,r),e.style&&n.setStyle("list-style-type",e.style,i),i}function a(e){const t={},n=e.getStyle("mso-list");if(n){const e=n.match(/(^|\s{1,100})l(\d+)/i),r=n.match(/\s{0,100}lfo(\d+)/i),i=n.match(/\s{0,100}level(\d+)/i);e&&r&&i&&(t.id=e[2],t.order=r[1],t.indent=i[1])}return t}const u=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class f{constructor(e){this.document=e}isActive(e){return u.test(e)}execute(e){const t=new o.UpcastWriter(this.document),{body:n}=e._parsedData;!function(e,t){for(const n of e.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const r=e.getChildIndex(n);t.remove(n),t.insertChild(r,n.getChildren(),e)}}(n,t),function(e,t){for(const n of t.createRangeIn(e)){const e=n.item;if(e.is("element","li")){const n=e.getChild(0);n&&n.is("element","p")&&t.unwrapElement(n)}}}(n,t),e.content=n}}function d(e,t){if(!e.childCount)return;const n=new o.UpcastWriter;!function(e,t,n){const r=n.createRangeIn(t),i=new o.Matcher({name:"img"}),s=[];for(const t of r)if(i.match(t.item)){const n=t.item,r=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];r.length&&r.every(t=>e.indexOf(t)>-1)?s.push(n):n.getAttribute("src")||s.push(n)}for(const e of s)n.remove(e)}(function(e,t){const n=t.createRangeIn(e),r=new o.Matcher({name:/v:(.+)/}),i=[];for(const e of n){if("elementStart"!=e.type)continue;const t=e.item,n=t.previousSibling&&t.previousSibling.name||null;r.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(e.item.getAttribute("id"))}return i}(e,n),e,n),function(e,t){const n=t.createRangeIn(e),r=new o.Matcher({name:/v:(.+)/}),i=[];for(const e of n)"elementStart"==e.type&&r.match(e.item)&&i.push(e.item);for(const e of i)t.remove(e)}(e,n);const r=function(e,t){const n=t.createRangeIn(e),r=new o.Matcher({name:"img"}),i=[];for(const e of n)r.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&i.push(e.item);return i}(e,n);r.length&&function(e,t,n){if(e.length===t.length)for(let i=0;i<e.length;i++){const o=`data:${t[i].type};base64,${r=t[i].hex,btoa(r.match(/\w{2}/g).map(e=>String.fromCharCode(parseInt(e,16))).join(""))}`;n.setAttribute("src",o,e[i])}var r}(r,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,n=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),r=e.match(n),i=[];if(r)for(const e of r){let n=!1;e.includes("\\pngblip")?n="image/png":e.includes("\\jpegblip")&&(n="image/jpeg"),n&&i.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:n})}return i}(t),n)}const p=/<meta\s*name="?generator"?\s*content="?microsoft\s*word\s*\d+"?\/?>/i,m=/xmlns:o="urn:schemas-microsoft-com/i;class g{constructor(e){this.document=e}isActive(e){return p.test(e)||m.test(e)}execute(e){const{body:t,stylesString:n}=e._parsedData;s(t,n),d(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function h(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,(e,t)=>1===t.length?" ":Array(t.length+1).join(" ").substr(0,t.length))}function y(e,t){const n=new DOMParser,r=function(e){return h(h(e)).replace(/(<span\s+style=['"]mso-spacerun:yes['"]>[^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<span\s+style=['"]mso-spacerun:yes['"]><\/span>/g,"").replace(/ <\//g," </").replace(/ <o:p><\/o:p>/g," <o:p></o:p>").replace(/<o:p>( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)</g,"><")}(function(e){const t=e.indexOf("</body>");if(t<0)return e;const n=e.indexOf("</html>",t+"</body>".length);return e.substring(0,t+"</body>".length)+(n>=0?e.substring(n):"")}(e=e.replace(/<!--\[if gte vml 1]>/g,""))),i=n.parseFromString(r,"text/html");!function(e){e.querySelectorAll("span[style*=spacerun]").forEach(e=>{const t=e.innerText.length||0;e.innerHTML=Array(t+1).join(" ").substr(0,t)})}(i);const s=i.body.innerHTML,c=function(e,t){const n=new o.ViewDocument(t),r=new o.DomConverter(n,{renderingMode:"data"}),i=e.createDocumentFragment(),s=e.body.childNodes;for(;s.length>0;)i.appendChild(s[0]);return r.domToView(i,{skipComments:!0})}(i,t),l=function(e){const t=[],n=[],r=Array.from(e.getElementsByTagName("style"));for(const e of r)e.sheet&&e.sheet.cssRules&&e.sheet.cssRules.length&&(t.push(e.sheet),n.push(e.innerHTML));return{styles:t,stylesString:n.join(" ")}}(i);return{body:c,bodyString:s,styles:l.styles,stylesString:l.stylesString}}class b extends r.Plugin{static get pluginName(){return"PasteFromOffice"}static get requires(){return[i.ClipboardPipeline]}init(){const e=this.editor,t=e.editing.view.document,n=[];n.push(new g(t)),n.push(new f(t)),e.plugins.get("ClipboardPipeline").on("inputTransformation",(e,r)=>{if(r._isTransformedWithPasteFromOffice)return;const i=r.dataTransfer.getData("text/html"),o=n.find(e=>e.isActive(i));o&&(r._parsedData=y(i,t.stylesProcessor),o.execute(r),r._isTransformedWithPasteFromOffice=!0)},{priority:"high"})}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/remove-format.js b/core/assets/vendor/ckeditor5/remove-format.js new file mode 100644 index 000000000000..e98d4a8ea01e --- /dev/null +++ b/core/assets/vendor/ckeditor5/remove-format.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(t){const e=t.en=t.en||{};e.dictionary=Object.assign(e.dictionary||{},{"Remove Format":"Remove Format"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.removeFormat=function(t){var e={};function o(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=4)}([function(t,e,o){t.exports=o(1)("./src/core.js")},function(t,e){t.exports=CKEditor5.dll},function(t,e,o){t.exports=o(1)("./src/utils.js")},function(t,e,o){t.exports=o(1)("./src/ui.js")},function(t,e,o){"use strict";o.r(e),o.d(e,"RemoveFormat",(function(){return u})),o.d(e,"RemoveFormatEditing",(function(){return a})),o.d(e,"RemoveFormatUI",(function(){return i}));var n=o(0),r=o(3);class i extends n.Plugin{static get pluginName(){return"RemoveFormatUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("removeFormat",o=>{const n=t.commands.get("removeFormat"),i=new r.ButtonView(o);return i.set({label:e("Remove Format"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.69 14.915c.053.052.173.083.36.093a.366.366 0 0 1 .345.485l-.003.01a.738.738 0 0 1-.697.497h-2.67a.374.374 0 0 1-.353-.496l.013-.038a.681.681 0 0 1 .644-.458c.197-.012.325-.043.386-.093a.28.28 0 0 0 .072-.11L9.592 4.5H6.269c-.359-.017-.609.013-.75.09-.142.078-.289.265-.442.563-.192.29-.516.464-.864.464H4.17a.43.43 0 0 1-.407-.569L4.46 3h13.08l-.62 2.043a.81.81 0 0 1-.775.574h-.114a.486.486 0 0 1-.486-.486c.001-.284-.054-.464-.167-.54-.112-.076-.367-.106-.766-.091h-3.28l-2.68 10.257c-.006.074.007.127.038.158zM3 17h8a.5.5 0 1 1 0 1H3a.5.5 0 1 1 0-1zm11.299 1.17a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.06-1.06l1.415 1.414 1.414-1.415a.75.75 0 1 1 1.06 1.06l-1.413 1.415 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414-1.414 1.414z"/></svg>',tooltip:!0}),i.bind("isOn","isEnabled").to(n,"value","isEnabled"),this.listenTo(i,"execute",()=>{t.execute("removeFormat"),t.editing.view.focus()}),i})}}var s=o(2);class c extends n.Command{refresh(){const t=this.editor.model;this.isEnabled=!!Object(s.first)(this._getFormattingItems(t.document.selection,t.schema))}execute(){const t=this.editor.model,e=t.schema;t.change(o=>{for(const n of this._getFormattingItems(t.document.selection,e))if(n.is("selection"))for(const t of this._getFormattingAttributes(n,e))o.removeSelectionAttribute(t);else{const t=o.createRangeOn(n);for(const r of this._getFormattingAttributes(n,e))o.removeAttribute(r,t)}})}*_getFormattingItems(t,e){const o=t=>!!Object(s.first)(this._getFormattingAttributes(t,e));for(const n of t.getRanges())for(const t of n.getItems())!e.isBlock(t)&&o(t)&&(yield t);for(const e of t.getSelectedBlocks())o(e)&&(yield e);o(t)&&(yield t)}*_getFormattingAttributes(t,e){for(const[o]of t.getAttributes()){const t=e.getAttributeProperties(o);t&&t.isFormatting&&(yield o)}}}class a extends n.Plugin{static get pluginName(){return"RemoveFormatEditing"}init(){const t=this.editor;t.commands.add("removeFormat",new c(t))}}class u extends n.Plugin{static get requires(){return[a,i]}static get pluginName(){return"RemoveFormat"}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/source-editing.js b/core/assets/vendor/ckeditor5/source-editing.js new file mode 100644 index 000000000000..19f346094c8b --- /dev/null +++ b/core/assets/vendor/ckeditor5/source-editing.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{Source:"Source"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.sourceEditing=function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=7)}([function(e,t,i){e.exports=i(2)("./src/core.js")},function(e,t,i){e.exports=i(2)("./src/utils.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,i){e.exports=i(2)("./src/ui.js")},function(e,t,i){var n=i(5),o=i(6);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(o,r);e.exports=o.locals||{}},function(e,t,i){"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),a=[];function s(e){for(var t=-1,i=0;i<a.length;i++)if(a[i].identifier===e){t=i;break}return t}function d(e,t){for(var i={},n=[],o=0;o<e.length;o++){var r=e[o],d=t.base?r[0]+t.base:r[0],c=i[d]||0,u="".concat(d," ").concat(c);i[d]=c+1;var l=s(u),h={css:r[1],media:r[2],sourceMap:r[3]};-1!==l?(a[l].references++,a[l].updater(h)):a.push({identifier:u,updater:p(h,t),references:1}),n.push(u)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var a=r(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(t)}return t}var u,l=(u=[],function(e,t){return u[e]=t,u.filter(Boolean).join("\n")});function h(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=l(t,o);else{var r=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(r,a[t]):e.appendChild(r)}}function f(e,t,i){var n=i.css,o=i.media,r=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var m=null,g=0;function p(e,t){var i,n,o;if(t.singleton){var r=g++;i=m||(m=c(t)),n=h.bind(null,i,r,!1),o=h.bind(null,i,r,!0)}else i=c(t),n=f.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=d(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=s(i[n]);a[o].references--}for(var r=d(e,t),c=0;c<i.length;c++){var u=s(i[c]);0===a[u].references&&(a[u].updater(),a.splice(u,1))}i=r}}}},function(e,t){e.exports='.ck-source-editing-area{position:relative}.ck-source-editing-area:after,.ck-source-editing-area textarea{padding:var(--ck-spacing-large);margin:0;border:1px solid transparent;line-height:var(--ck-line-height-base);font-size:var(--ck-font-size-normal);font-family:monospace;white-space:pre-wrap}.ck-source-editing-area:after{content:attr(data-value) " ";visibility:hidden;display:block}.ck-source-editing-area textarea{position:absolute;width:100%;height:100%;resize:none;outline:none;overflow:hidden;box-sizing:border-box;border-color:var(--ck-color-base-border);border-radius:0}.ck-rounded-corners .ck-source-editing-area textarea,.ck-source-editing-area textarea.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck-source-editing-area textarea:not([readonly]):focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0}'},function(e,t,i){"use strict";i.r(t),i.d(t,"SourceEditing",(function(){return d}));var n=i(0),o=i(3),r=i(1);function a(e){const t=[{name:"address",isVoid:!1},{name:"article",isVoid:!1},{name:"aside",isVoid:!1},{name:"blockquote",isVoid:!1},{name:"br",isVoid:!0},{name:"details",isVoid:!1},{name:"dialog",isVoid:!1},{name:"dd",isVoid:!1},{name:"div",isVoid:!1},{name:"dl",isVoid:!1},{name:"dt",isVoid:!1},{name:"fieldset",isVoid:!1},{name:"figcaption",isVoid:!1},{name:"figure",isVoid:!1},{name:"footer",isVoid:!1},{name:"form",isVoid:!1},{name:"h1",isVoid:!1},{name:"h2",isVoid:!1},{name:"h3",isVoid:!1},{name:"h4",isVoid:!1},{name:"h5",isVoid:!1},{name:"h6",isVoid:!1},{name:"header",isVoid:!1},{name:"hgroup",isVoid:!1},{name:"hr",isVoid:!0},{name:"input",isVoid:!0},{name:"li",isVoid:!1},{name:"main",isVoid:!1},{name:"nav",isVoid:!1},{name:"ol",isVoid:!1},{name:"p",isVoid:!1},{name:"pre",isVoid:!1},{name:"section",isVoid:!1},{name:"table",isVoid:!1},{name:"tbody",isVoid:!1},{name:"td",isVoid:!1},{name:"textarea",isVoid:!1},{name:"th",isVoid:!1},{name:"thead",isVoid:!1},{name:"tr",isVoid:!1},{name:"ul",isVoid:!1}],i=t.map(e=>e.name).join("|"),n=e.replace(new RegExp(`</?(${i})( .*?)?>`,"g"),"\n$&\n").split("\n");let o=0;return n.filter(e=>e.length).map(e=>function(e,t){return t.some(t=>!t.isVoid&&!!new RegExp(`<${t.name}( .*?)?>`).test(e))}(e,t)?s(e,o++):function(e,t){return t.some(t=>new RegExp(`</${t.name}>`).test(e))}(e,t)?s(e,--o):s(e,o)).join("\n")}function s(e,t,i=" "){return`${i.repeat(t)}${e}`}i(4);class d extends n.Plugin{static get pluginName(){return"SourceEditing"}static get requires(){return[n.PendingActions]}constructor(e){super(e),this.set("isSourceEditingMode",!1),this._elementReplacer=new r.ElementReplacer,this._replacedRoots=new Map,this._dataFromRoots=new Map}init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("sourceEditing",i=>{const r=new o.ButtonView(i);return r.set({label:t("Source"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 0 5 4.5v15.003h-16V0h11zM3 1.5v3.25l-1.497 1-.003 8 1.5 1v3.254L7.685 18l-.001 1.504H17.5V8.002L16 9.428l-.004-4.22-4.222-3.692L3 1.5z"/><path d="M4.06 6.64a.75.75 0 0 1 .958 1.15l-.085.07L2.29 9.75l2.646 1.89c.302.216.4.62.232.951l-.058.095a.75.75 0 0 1-.951.232l-.095-.058-3.5-2.5V9.14l3.496-2.5zm4.194 6.22a.75.75 0 0 1-.958-1.149l.085-.07 2.643-1.89-2.646-1.89a.75.75 0 0 1-.232-.952l.058-.095a.75.75 0 0 1 .95-.232l.096.058 3.5 2.5v1.22l-3.496 2.5zm7.644-.836 2.122 2.122-5.825 5.809-2.125-.005.003-2.116zm2.539-1.847 1.414 1.414a.5.5 0 0 1 0 .707l-1.06 1.06-2.122-2.12 1.061-1.061a.5.5 0 0 1 .707 0z"/></svg>',tooltip:!0,withText:!0,class:"ck-source-editing-button"}),r.bind("isOn").to(this,"isSourceEditingMode"),r.bind("isEnabled").to(this,"isEnabled",e,"isReadOnly",e.plugins.get(n.PendingActions),"hasAny",(e,t,i)=>!!e&&(!t&&!i)),this.listenTo(r,"execute",()=>{this.isSourceEditingMode=!this.isSourceEditingMode}),r}),this._isAllowedToHandleSourceEditingMode()&&(this.on("change:isSourceEditingMode",(e,t,i)=>{i?(this._showSourceEditing(),this._disableCommands()):(this._hideSourceEditing(),this._enableCommands())}),this.on("change:isEnabled",(e,t,i)=>this._handleReadOnlyMode(!i)),this.listenTo(e,"change:isReadOnly",(e,t,i)=>this._handleReadOnlyMode(i))),e.data.on("get",()=>{this.isSourceEditingMode&&this._updateEditorData()},{priority:"high"})}afterInit(){const e=this.editor;["RealTimeCollaborativeEditing","CommentsEditing","TrackChangesEditing","RevisionHistory"].some(t=>e.plugins.has(t))&&console.warn("You initialized the editor with the source editing feature and at least one of the collaboration features. Please be advised that the source editing feature may not work, and be careful when editing document source that contains markers created by the collaboration features."),e.plugins.has("RestrictedEditingModeEditing")&&console.warn("You initialized the editor with the source editing feature and restricted editing feature. Please be advised that the source editing feature may not work, and be careful when editing document source that contains markers created by the restricted editing feature.")}_showSourceEditing(){const e=this.editor,t=e.editing.view,i=e.model;i.change(e=>{e.setSelection(null),e.removeSelectionAttribute(i.document.selection.getAttributeKeys())});for(const[i,n]of t.domRoots){const o=c(e.data.get({rootName:i})),a=Object(r.createElement)(n.ownerDocument,"textarea",{rows:"1"}),s=Object(r.createElement)(n.ownerDocument,"div",{class:"ck-source-editing-area","data-value":o},[a]);a.value=o,a.setSelectionRange(0,0),a.addEventListener("input",()=>{s.dataset.value=a.value}),t.change(e=>{const n=t.document.getRoot(i);e.addClass("ck-hidden",n)}),this._replacedRoots.set(i,s),this._elementReplacer.replace(n,s),this._dataFromRoots.set(i,o)}this._focusSourceEditing()}_hideSourceEditing(){const e=this.editor.editing.view;this._updateEditorData(),e.change(t=>{for(const[i]of this._replacedRoots)t.removeClass("ck-hidden",e.document.getRoot(i))}),this._elementReplacer.restore(),this._replacedRoots.clear(),this._dataFromRoots.clear(),e.focus()}_updateEditorData(){const e=this.editor,t={};for(const[e,i]of this._replacedRoots){const n=this._dataFromRoots.get(e),o=i.dataset.value;n!==o&&(t[e]=o)}Object.keys(t).length&&e.data.set(t,{batchType:"default"})}_focusSourceEditing(){const[e]=this._replacedRoots.values();e.querySelector("textarea").focus()}_disableCommands(){const e=this.editor;for(const t of e.commands.commands())t.forceDisabled("SourceEditingMode")}_enableCommands(){const e=this.editor;for(const t of e.commands.commands())t.clearForceDisabled("SourceEditingMode")}_handleReadOnlyMode(e){if(this.isSourceEditingMode)for(const[,t]of this._replacedRoots)t.querySelector("textarea").readOnly=e}_isAllowedToHandleSourceEditingMode(){const e=this.editor.ui.view.editable;return e&&!e._hasExternalElement}}function c(e){return function(e){return e.startsWith("<")}(e)?a(e):e}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/special-characters.js b/core/assets/vendor/ckeditor5/special-characters.js new file mode 100644 index 000000000000..3e2e3cab77c2 --- /dev/null +++ b/core/assets/vendor/ckeditor5/special-characters.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(t){const e=t.en=t.en||{};e.dictionary=Object.assign(e.dictionary||{},{"Almost equal to":"Almost equal to",Angle:"Angle","Approximately equal to":"Approximately equal to","Asterisk operator":"Asterisk operator","Austral sign":"Austral sign","back with leftwards arrow above":"back with leftwards arrow above","Bitcoin sign":"Bitcoin sign","Cedi sign":"Cedi sign","Cent sign":"Cent sign","Character categories":"Character categories","Colon sign":"Colon sign","Contains as member":"Contains as member","Copyright sign":"Copyright sign","Cruzeiro sign":"Cruzeiro sign","Currency sign":"Currency sign","Degree sign":"Degree sign","Division sign":"Division sign","Dollar sign":"Dollar sign","Dong sign":"Dong sign","Double dagger":"Double dagger","Double exclamation mark":"Double exclamation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Double question mark":"Double question mark","downwards arrow to bar":"downwards arrow to bar","downwards dashed arrow":"downwards dashed arrow","downwards double arrow":"downwards double arrow","Drachma sign":"Drachma sign","Element of":"Element of","Em dash":"Em dash","Empty set":"Empty set","En dash":"En dash","end with leftwards arrow above":"end with leftwards arrow above","Euro sign":"Euro sign","Euro-currency sign":"Euro-currency sign","Exclamation question mark":"Exclamation question mark","For all":"For all","Fraction slash":"Fraction slash","French franc sign":"French franc sign","German penny sign":"German penny sign","Greater-than or equal to":"Greater-than or equal to","Greater-than sign":"Greater-than sign","Guarani sign":"Guarani sign","Horizontal ellipsis":"Horizontal ellipsis","Hryvnia sign":"Hryvnia sign","Identical to":"Identical to","Indian rupee sign":"Indian rupee sign",Infinity:"Infinity",Integral:"Integral",Intersection:"Intersection","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Kip sign":"Kip sign","Latin capital letter a with breve":"Latin capital letter a with breve","Latin capital letter a with macron":"Latin capital letter a with macron","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin capital letter c with caron":"Latin capital letter c with caron","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin capital letter d with caron":"Latin capital letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin capital letter e with breve":"Latin capital letter e with breve","Latin capital letter e with caron":"Latin capital letter e with caron","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin capital letter e with macron":"Latin capital letter e with macron","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin capital letter eng":"Latin capital letter eng","Latin capital letter g with breve":"Latin capital letter g with breve","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin capital letter i with breve":"Latin capital letter i with breve","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin capital letter i with macron":"Latin capital letter i with macron","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin capital letter l with acute":"Latin capital letter l with acute","Latin capital letter l with caron":"Latin capital letter l with caron","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin capital letter n with caron":"Latin capital letter n with caron","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin capital letter o with breve":"Latin capital letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin capital letter o with macron":"Latin capital letter o with macron","Latin capital letter r with acute":"Latin capital letter r with acute","Latin capital letter r with caron":"Latin capital letter r with caron","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin capital letter s with acute":"Latin capital letter s with acute","Latin capital letter s with caron":"Latin capital letter s with caron","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin capital letter t with caron":"Latin capital letter t with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin capital letter u with breve":"Latin capital letter u with breve","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin capital letter u with macron":"Latin capital letter u with macron","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin capital letter z with caron":"Latin capital letter z with caron","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin capital ligature ij":"Latin capital ligature ij","Latin capital ligature oe":"Latin capital ligature oe","Latin small letter a with breve":"Latin small letter a with breve","Latin small letter a with macron":"Latin small letter a with macron","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin small letter c with acute":"Latin small letter c with acute","Latin small letter c with caron":"Latin small letter c with caron","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin small letter c with dot above":"Latin small letter c with dot above","Latin small letter d with caron":"Latin small letter d with caron","Latin small letter d with stroke":"Latin small letter d with stroke","Latin small letter dotless i":"Latin small letter dotless i","Latin small letter e with breve":"Latin small letter e with breve","Latin small letter e with caron":"Latin small letter e with caron","Latin small letter e with dot above":"Latin small letter e with dot above","Latin small letter e with macron":"Latin small letter e with macron","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin small letter eng":"Latin small letter eng","Latin small letter f with hook":"Latin small letter f with hook","Latin small letter g with breve":"Latin small letter g with breve","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin small letter g with dot above":"Latin small letter g with dot above","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin small letter h with stroke":"Latin small letter h with stroke","Latin small letter i with breve":"Latin small letter i with breve","Latin small letter i with macron":"Latin small letter i with macron","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin small letter i with tilde":"Latin small letter i with tilde","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin small letter l with acute":"Latin small letter l with acute","Latin small letter l with caron":"Latin small letter l with caron","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin small letter l with stroke":"Latin small letter l with stroke","Latin small letter long s":"Latin small letter long s","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin small letter n with acute":"Latin small letter n with acute","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin small letter o with breve":"Latin small letter o with breve","Latin small letter o with double acute":"Latin small letter o with double acute","Latin small letter o with macron":"Latin small letter o with macron","Latin small letter r with acute":"Latin small letter r with acute","Latin small letter r with caron":"Latin small letter r with caron","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin small letter s with acute":"Latin small letter s with acute","Latin small letter s with caron":"Latin small letter s with caron","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin small letter t with caron":"Latin small letter t with caron","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin small letter t with stroke":"Latin small letter t with stroke","Latin small letter u with breve":"Latin small letter u with breve","Latin small letter u with double acute":"Latin small letter u with double acute","Latin small letter u with macron":"Latin small letter u with macron","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin small letter u with ring above":"Latin small letter u with ring above","Latin small letter u with tilde":"Latin small letter u with tilde","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin small letter z with acute":"Latin small letter z with acute","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter z with dot above":"Latin small letter z with dot above","Latin small ligature ij":"Latin small ligature ij","Latin small ligature oe":"Latin small ligature oe","Left double quotation mark":"Left double quotation mark","Left single quotation mark":"Left single quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","leftwards arrow to bar":"leftwards arrow to bar","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"leftwards double arrow","Less-than or equal to":"Less-than or equal to","Less-than sign":"Less-than sign","Lira sign":"Lira sign","Livre tournois sign":"Livre tournois sign","Logical and":"Logical and","Logical or":"Logical or",Macron:"Macron","Manat sign":"Manat sign","Mill sign":"Mill sign","Minus sign":"Minus sign","Multiplication sign":"Multiplication sign","N-ary product":"N-ary product","N-ary summation":"N-ary summation",Nabla:"Nabla","Naira sign":"Naira sign","New sheqel sign":"New sheqel sign","Nordic mark sign":"Nordic mark sign","Not an element of":"Not an element of","Not equal to":"Not equal to","Not sign":"Not sign","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above",Overline:"Overline","Paragraph sign":"Paragraph sign","Partial differential":"Partial differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Peseta sign":"Peseta sign","Peso sign":"Peso sign","Plus-minus sign":"Plus-minus sign","Pound sign":"Pound sign","Proportional to":"Proportional to","Question exclamation mark":"Question exclamation mark","Registered sign":"Registered sign","Reversed paragraph sign":"Reversed paragraph sign","Right double quotation mark":"Right double quotation mark","Right single quotation mark":"Right single quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","rightwards arrow to bar":"rightwards arrow to bar","rightwards dashed arrow":"rightwards dashed arrow","rightwards double arrow":"rightwards double arrow","Ruble sign":"Ruble sign","Rupee sign":"Rupee sign","Section sign":"Section sign","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","soon with rightwards arrow above":"soon with rightwards arrow above","Special characters":"Special characters","Spesmilo sign":"Spesmilo sign","Square root":"Square root","Tenge sign":"Tenge sign","There exists":"There exists","Tilde operator":"Tilde operator","top with upwards arrow above":"top with upwards arrow above","Trade mark sign":"Trade mark sign","Tugrik sign":"Tugrik sign","Turkish lira sign":"Turkish lira sign","Two dot leader":"Two dot leader",Union:"Union","up down arrow with base":"up down arrow with base","upwards arrow to bar":"upwards arrow to bar","upwards dashed arrow":"upwards dashed arrow","upwards double arrow":"upwards double arrow","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction three quarters":"Vulgar fraction three quarters","Won sign":"Won sign","Yen sign":"Yen sign"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.specialCharacters=function(t){var e={};function a(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,a),r.l=!0,r.exports}return a.m=t,a.c=e,a.d=function(t,e,i){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(a.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)a.d(i,r,function(e){return t[e]}.bind(null,r));return i},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=12)}([function(t,e,a){t.exports=a(2)("./src/core.js")},function(t,e,a){t.exports=a(2)("./src/ui.js")},function(t,e){t.exports=CKEditor5.dll},function(t,e,a){t.exports=a(2)("./src/utils.js")},function(t,e,a){"use strict";var i,r=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},l=function(){var t={};return function(e){if(void 0===t[e]){var a=document.querySelector(e);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(t){a=null}t[e]=a}return t[e]}}(),c=[];function n(t){for(var e=-1,a=0;a<c.length;a++)if(c[a].identifier===t){e=a;break}return e}function o(t,e){for(var a={},i=[],r=0;r<t.length;r++){var l=t[r],o=e.base?l[0]+e.base:l[0],s=a[o]||0,h="".concat(o," ").concat(s);a[o]=s+1;var u=n(h),w={css:l[1],media:l[2],sourceMap:l[3]};-1!==u?(c[u].references++,c[u].updater(w)):c.push({identifier:h,updater:p(w,e),references:1}),i.push(h)}return i}function s(t){var e=document.createElement("style"),i=t.attributes||{};if(void 0===i.nonce){var r=a.nc;r&&(i.nonce=r)}if(Object.keys(i).forEach((function(t){e.setAttribute(t,i[t])})),"function"==typeof t.insert)t.insert(e);else{var c=l(t.insert||"head");if(!c)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");c.appendChild(e)}return e}var h,u=(h=[],function(t,e){return h[t]=e,h.filter(Boolean).join("\n")});function w(t,e,a,i){var r=a?"":i.media?"@media ".concat(i.media," {").concat(i.css,"}"):i.css;if(t.styleSheet)t.styleSheet.cssText=u(e,r);else{var l=document.createTextNode(r),c=t.childNodes;c[e]&&t.removeChild(c[e]),c.length?t.insertBefore(l,c[e]):t.appendChild(l)}}function d(t,e,a){var i=a.css,r=a.media,l=a.sourceMap;if(r?t.setAttribute("media",r):t.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}var g=null,m=0;function p(t,e){var a,i,r;if(e.singleton){var l=m++;a=g||(g=s(e)),i=w.bind(null,a,l,!1),r=w.bind(null,a,l,!0)}else a=s(e),i=d.bind(null,a,e),r=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(a)};return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else r()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=r());var a=o(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var i=0;i<a.length;i++){var r=n(a[i]);c[r].references--}for(var l=o(t,e),s=0;s<a.length;s++){var h=n(a[s]);0===c[h].references&&(c[h].updater(),c.splice(h,1))}a=l}}}},function(t,e,a){t.exports=a(2)("./src/typing.js")},function(t,e,a){var i=a(4),r=a(7);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[t.i,r,""]]);var l={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(r,l);t.exports=r.locals||{}},function(t,e){t.exports=".ck.ck-character-grid{max-width:100%}.ck.ck-character-grid .ck-character-grid__tiles{display:grid}:root{--ck-character-grid-tile-size:24px}.ck.ck-character-grid{overflow-y:auto;overflow-x:hidden;width:350px;max-height:200px}.ck.ck-character-grid .ck-character-grid__tiles{grid-template-columns:repeat(auto-fit,minmax(var(--ck-character-grid-tile-size),1fr));margin:var(--ck-spacing-standard) var(--ck-spacing-large);grid-gap:var(--ck-spacing-standard)}.ck.ck-character-grid .ck-character-grid__tile{width:var(--ck-character-grid-tile-size);height:var(--ck-character-grid-tile-size);min-width:var(--ck-character-grid-tile-size);min-height:var(--ck-character-grid-tile-size);font-size:1.2em;padding:0;transition:box-shadow .2s ease;border:0}.ck.ck-character-grid .ck-character-grid__tile:focus:not(.ck-disabled),.ck.ck-character-grid .ck-character-grid__tile:hover:not(.ck-disabled){border:0;box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-character-grid .ck-character-grid__tile .ck-button__label{line-height:var(--ck-character-grid-tile-size);width:100%;text-align:center}"},function(t,e,a){var i=a(4),r=a(9);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[t.i,r,""]]);var l={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(r,l);t.exports=r.locals||{}},function(t,e){t.exports=".ck.ck-character-info{display:flex;justify-content:space-between;padding:var(--ck-spacing-small) var(--ck-spacing-large);border-top:1px solid var(--ck-color-base-border)}.ck.ck-character-info>*{text-transform:uppercase;font-size:var(--ck-font-size-small)}.ck.ck-character-info .ck-character-info__name{max-width:280px;text-overflow:ellipsis;overflow:hidden}.ck.ck-character-info .ck-character-info__code{opacity:.6}"},function(t,e,a){var i=a(4),r=a(11);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[t.i,r,""]]);var l={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i(r,l);t.exports=r.locals||{}},function(t,e){t.exports=".ck.ck-special-characters-navigation>.ck-label{max-width:160px;text-overflow:ellipsis;overflow:hidden}.ck.ck-special-characters-navigation>.ck-dropdown .ck-dropdown__panel{max-height:250px;overflow-y:auto;overflow-x:hidden}"},function(t,e,a){"use strict";a.r(e),a.d(e,"SpecialCharacters",(function(){return u})),a.d(e,"SpecialCharactersArrows",(function(){return w})),a.d(e,"SpecialCharactersText",(function(){return d})),a.d(e,"SpecialCharactersMathematical",(function(){return g})),a.d(e,"SpecialCharactersLatin",(function(){return m})),a.d(e,"SpecialCharactersEssentials",(function(){return L})),a.d(e,"SpecialCharactersCurrency",(function(){return p}));var i=a(0),r=a(5),l=a(1),c=a(3);class n extends l.FormHeaderView{constructor(t,e){super(t);const a=t.t;this.set("class","ck-special-characters-navigation"),this.groupDropdownView=this._createGroupDropdown(e),this.groupDropdownView.panelPosition="rtl"===t.uiLanguageDirection?"se":"sw",this.label=a("Special characters"),this.children.add(this.groupDropdownView)}get currentGroupName(){return this.groupDropdownView.value}_createGroupDropdown(t){const e=this.locale,a=e.t,i=Object(l.createDropdown)(e),r=this._getCharacterGroupListItemDefinitions(i,t);return i.set("value",r.first.model.label),i.buttonView.bind("label").to(i,"value"),i.buttonView.set({isOn:!1,withText:!0,tooltip:a("Character categories"),class:["ck-dropdown__button_label-width_auto"]}),i.on("execute",t=>{i.value=t.source.label}),i.delegate("execute").to(this),Object(l.addListToDropdown)(i,r),i}_getCharacterGroupListItemDefinitions(t,e){const a=new c.Collection;for(const i of e){const e={type:"button",model:new l.Model({label:i,withText:!0})};e.model.bind("isOn").to(t,"value",t=>t===e.model.label),a.add(e)}return a}}a(6);class o extends l.View{constructor(t){super(t),this.tiles=this.createCollection(),this.setTemplate({tag:"div",children:[{tag:"div",attributes:{class:["ck","ck-character-grid__tiles"]},children:this.tiles}],attributes:{class:["ck","ck-character-grid"]}})}createTile(t,e){const a=new l.ButtonView(this.locale);return a.set({label:t,withText:!0,class:"ck-character-grid__tile"}),a.extendTemplate({attributes:{title:e},on:{mouseover:a.bindTemplate.to("mouseover")}}),a.on("mouseover",()=>{this.fire("tileHover",{name:e,character:t})}),a.on("execute",()=>{this.fire("execute",{name:e,character:t})}),a}}a(8);class s extends l.View{constructor(t){super(t);const e=this.bindTemplate;this.set("character",null),this.set("name",null),this.bind("code").to(this,"character",h),this.setTemplate({tag:"div",children:[{tag:"span",attributes:{class:["ck-character-info__name"]},children:[{text:e.to("name",t=>t||"​")}]},{tag:"span",attributes:{class:["ck-character-info__code"]},children:[{text:e.to("code")}]}],attributes:{class:["ck","ck-character-info"]}})}}function h(t){if(null===t)return"";return"U+"+("0000"+t.codePointAt(0).toString(16)).slice(-4)}a(10);class u extends i.Plugin{static get requires(){return[r.Typing]}static get pluginName(){return"SpecialCharacters"}constructor(t){super(t),this._characters=new Map,this._groups=new Map}init(){const t=this.editor,e=t.t,a=t.commands.get("input");t.ui.componentFactory.add("specialCharacters",i=>{const r=Object(l.createDropdown)(i);let c;return r.buttonView.set({label:e("Special characters"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 2.5a7.47 7.47 0 0 1 4.231 1.31 7.268 7.268 0 0 1 2.703 3.454 7.128 7.128 0 0 1 .199 4.353c-.39 1.436-1.475 2.72-2.633 3.677h2.013c0-.226.092-.443.254-.603a.876.876 0 0 1 1.229 0c.163.16.254.377.254.603v.853c0 .209-.078.41-.22.567a.873.873 0 0 1-.547.28l-.101.006h-4.695a.517.517 0 0 1-.516-.518v-1.265c0-.21.128-.398.317-.489a5.601 5.601 0 0 0 2.492-2.371 5.459 5.459 0 0 0 .552-3.693 5.53 5.53 0 0 0-1.955-3.2A5.71 5.71 0 0 0 10 4.206 5.708 5.708 0 0 0 6.419 5.46 5.527 5.527 0 0 0 4.46 8.663a5.457 5.457 0 0 0 .554 3.695 5.6 5.6 0 0 0 2.497 2.37.55.55 0 0 1 .317.49v1.264c0 .286-.23.518-.516.518H2.618a.877.877 0 0 1-.614-.25.845.845 0 0 1-.254-.603v-.853c0-.226.091-.443.254-.603a.876.876 0 0 1 1.228 0c.163.16.255.377.255.603h1.925c-1.158-.958-2.155-2.241-2.545-3.678a7.128 7.128 0 0 1 .199-4.352 7.268 7.268 0 0 1 2.703-3.455A7.475 7.475 0 0 1 10 2.5z"/></svg>',tooltip:!0}),r.bind("isEnabled").to(a),r.on("execute",(e,a)=>{t.execute("input",{text:a.character}),t.editing.view.focus()}),r.on("change:isOpen",()=>{c||(c=this._createDropdownPanelContent(i,r),r.panelView.children.add(c.navigationView),r.panelView.children.add(c.gridView),r.panelView.children.add(c.infoView)),c.infoView.set({character:null,name:null})}),r})}addItems(t,e){if("All"===t)throw new c.CKEditorError('special-character-invalid-group-name: The name "All" is reserved and cannot be used.');const a=this._getGroup(t);for(const t of e)a.add(t.title),this._characters.set(t.title,t.character)}getGroups(){return this._groups.keys()}getCharactersForGroup(t){return"All"===t?new Set(this._characters.keys()):this._groups.get(t)}getCharacter(t){return this._characters.get(t)}_getGroup(t){return this._groups.has(t)||this._groups.set(t,new Set),this._groups.get(t)}_updateGrid(t,e){e.tiles.clear();const a=this.getCharactersForGroup(t);for(const t of a){const a=this.getCharacter(t);e.tiles.add(e.createTile(a,t))}}_createDropdownPanelContent(t,e){const a=[...this.getGroups()];a.unshift("All");const i=new n(t,a),r=new o(t),l=new s(t);return r.delegate("execute").to(e),r.on("tileHover",(t,e)=>{l.set(e)}),i.on("execute",()=>{this._updateGrid(i.currentGroupName,r)}),this._updateGrid(i.currentGroupName,r),{navigationView:i,gridView:r,infoView:l}}}class w extends i.Plugin{static get pluginName(){return"SpecialCharactersArrows"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Arrows",[{title:e("leftwards double arrow"),character:"â‡"},{title:e("rightwards double arrow"),character:"⇒"},{title:e("upwards double arrow"),character:"⇑"},{title:e("downwards double arrow"),character:"⇓"},{title:e("leftwards dashed arrow"),character:"⇠"},{title:e("rightwards dashed arrow"),character:"⇢"},{title:e("upwards dashed arrow"),character:"⇡"},{title:e("downwards dashed arrow"),character:"⇣"},{title:e("leftwards arrow to bar"),character:"⇤"},{title:e("rightwards arrow to bar"),character:"⇥"},{title:e("upwards arrow to bar"),character:"⤒"},{title:e("downwards arrow to bar"),character:"⤓"},{title:e("up down arrow with base"),character:"↨"},{title:e("back with leftwards arrow above"),character:"🔙"},{title:e("end with leftwards arrow above"),character:"🔚"},{title:e("on with exclamation mark with left right arrow above"),character:"🔛"},{title:e("soon with rightwards arrow above"),character:"🔜"},{title:e("top with upwards arrow above"),character:"ðŸ”"}])}}class d extends i.Plugin{static get pluginName(){return"SpecialCharactersText"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Text",[{character:"‹",title:e("Single left-pointing angle quotation mark")},{character:"›",title:e("Single right-pointing angle quotation mark")},{character:"«",title:e("Left-pointing double angle quotation mark")},{character:"»",title:e("Right-pointing double angle quotation mark")},{character:"‘",title:e("Left single quotation mark")},{character:"’",title:e("Right single quotation mark")},{character:"“",title:e("Left double quotation mark")},{character:"â€",title:e("Right double quotation mark")},{character:"‚",title:e("Single low-9 quotation mark")},{character:"„",title:e("Double low-9 quotation mark")},{character:"¡",title:e("Inverted exclamation mark")},{character:"¿",title:e("Inverted question mark")},{character:"‥",title:e("Two dot leader")},{character:"…",title:e("Horizontal ellipsis")},{character:"‡",title:e("Double dagger")},{character:"‰",title:e("Per mille sign")},{character:"‱",title:e("Per ten thousand sign")},{character:"‼",title:e("Double exclamation mark")},{character:"âˆ",title:e("Question exclamation mark")},{character:"â‰",title:e("Exclamation question mark")},{character:"â‡",title:e("Double question mark")},{character:"©",title:e("Copyright sign")},{character:"®",title:e("Registered sign")},{character:"â„¢",title:e("Trade mark sign")},{character:"§",title:e("Section sign")},{character:"¶",title:e("Paragraph sign")},{character:"â‹",title:e("Reversed paragraph sign")}])}}class g extends i.Plugin{static get pluginName(){return"SpecialCharactersMathematical"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Mathematical",[{character:"<",title:e("Less-than sign")},{character:">",title:e("Greater-than sign")},{character:"≤",title:e("Less-than or equal to")},{character:"≥",title:e("Greater-than or equal to")},{character:"–",title:e("En dash")},{character:"—",title:e("Em dash")},{character:"¯",title:e("Macron")},{character:"‾",title:e("Overline")},{character:"°",title:e("Degree sign")},{character:"−",title:e("Minus sign")},{character:"±",title:e("Plus-minus sign")},{character:"÷",title:e("Division sign")},{character:"â„",title:e("Fraction slash")},{character:"×",title:e("Multiplication sign")},{character:"Æ’",title:e("Latin small letter f with hook")},{character:"∫",title:e("Integral")},{character:"∑",title:e("N-ary summation")},{character:"∞",title:e("Infinity")},{character:"√",title:e("Square root")},{character:"∼",title:e("Tilde operator")},{character:"≅",title:e("Approximately equal to")},{character:"≈",title:e("Almost equal to")},{character:"≠",title:e("Not equal to")},{character:"≡",title:e("Identical to")},{character:"∈",title:e("Element of")},{character:"∉",title:e("Not an element of")},{character:"∋",title:e("Contains as member")},{character:"âˆ",title:e("N-ary product")},{character:"∧",title:e("Logical and")},{character:"∨",title:e("Logical or")},{character:"¬",title:e("Not sign")},{character:"∩",title:e("Intersection")},{character:"∪",title:e("Union")},{character:"∂",title:e("Partial differential")},{character:"∀",title:e("For all")},{character:"∃",title:e("There exists")},{character:"∅",title:e("Empty set")},{character:"∇",title:e("Nabla")},{character:"∗",title:e("Asterisk operator")},{character:"âˆ",title:e("Proportional to")},{character:"∠",title:e("Angle")},{character:"¼",title:e("Vulgar fraction one quarter")},{character:"½",title:e("Vulgar fraction one half")},{character:"¾",title:e("Vulgar fraction three quarters")}])}}class m extends i.Plugin{static get pluginName(){return"SpecialCharactersLatin"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Latin",[{character:"Ä€",title:e("Latin capital letter a with macron")},{character:"Ä",title:e("Latin small letter a with macron")},{character:"Ä‚",title:e("Latin capital letter a with breve")},{character:"ă",title:e("Latin small letter a with breve")},{character:"Ä„",title:e("Latin capital letter a with ogonek")},{character:"Ä…",title:e("Latin small letter a with ogonek")},{character:"Ć",title:e("Latin capital letter c with acute")},{character:"ć",title:e("Latin small letter c with acute")},{character:"Ĉ",title:e("Latin capital letter c with circumflex")},{character:"ĉ",title:e("Latin small letter c with circumflex")},{character:"ÄŠ",title:e("Latin capital letter c with dot above")},{character:"Ä‹",title:e("Latin small letter c with dot above")},{character:"ÄŒ",title:e("Latin capital letter c with caron")},{character:"Ä",title:e("Latin small letter c with caron")},{character:"ÄŽ",title:e("Latin capital letter d with caron")},{character:"Ä",title:e("Latin small letter d with caron")},{character:"Ä",title:e("Latin capital letter d with stroke")},{character:"Ä‘",title:e("Latin small letter d with stroke")},{character:"Ä’",title:e("Latin capital letter e with macron")},{character:"Ä“",title:e("Latin small letter e with macron")},{character:"Ä”",title:e("Latin capital letter e with breve")},{character:"Ä•",title:e("Latin small letter e with breve")},{character:"Ä–",title:e("Latin capital letter e with dot above")},{character:"Ä—",title:e("Latin small letter e with dot above")},{character:"Ę",title:e("Latin capital letter e with ogonek")},{character:"Ä™",title:e("Latin small letter e with ogonek")},{character:"Äš",title:e("Latin capital letter e with caron")},{character:"Ä›",title:e("Latin small letter e with caron")},{character:"Äœ",title:e("Latin capital letter g with circumflex")},{character:"Ä",title:e("Latin small letter g with circumflex")},{character:"Äž",title:e("Latin capital letter g with breve")},{character:"ÄŸ",title:e("Latin small letter g with breve")},{character:"Ä ",title:e("Latin capital letter g with dot above")},{character:"Ä¡",title:e("Latin small letter g with dot above")},{character:"Ä¢",title:e("Latin capital letter g with cedilla")},{character:"Ä£",title:e("Latin small letter g with cedilla")},{character:"Ĥ",title:e("Latin capital letter h with circumflex")},{character:"Ä¥",title:e("Latin small letter h with circumflex")},{character:"Ħ",title:e("Latin capital letter h with stroke")},{character:"ħ",title:e("Latin small letter h with stroke")},{character:"Ĩ",title:e("Latin capital letter i with tilde")},{character:"Ä©",title:e("Latin small letter i with tilde")},{character:"Ī",title:e("Latin capital letter i with macron")},{character:"Ä«",title:e("Latin small letter i with macron")},{character:"Ĭ",title:e("Latin capital letter i with breve")},{character:"Ä",title:e("Latin small letter i with breve")},{character:"Ä®",title:e("Latin capital letter i with ogonek")},{character:"į",title:e("Latin small letter i with ogonek")},{character:"Ä°",title:e("Latin capital letter i with dot above")},{character:"ı",title:e("Latin small letter dotless i")},{character:"IJ",title:e("Latin capital ligature ij")},{character:"ij",title:e("Latin small ligature ij")},{character:"Ä´",title:e("Latin capital letter j with circumflex")},{character:"ĵ",title:e("Latin small letter j with circumflex")},{character:"Ķ",title:e("Latin capital letter k with cedilla")},{character:"Ä·",title:e("Latin small letter k with cedilla")},{character:"ĸ",title:e("Latin small letter kra")},{character:"Ĺ",title:e("Latin capital letter l with acute")},{character:"ĺ",title:e("Latin small letter l with acute")},{character:"Ä»",title:e("Latin capital letter l with cedilla")},{character:"ļ",title:e("Latin small letter l with cedilla")},{character:"Ľ",title:e("Latin capital letter l with caron")},{character:"ľ",title:e("Latin small letter l with caron")},{character:"Ä¿",title:e("Latin capital letter l with middle dot")},{character:"Å€",title:e("Latin small letter l with middle dot")},{character:"Å",title:e("Latin capital letter l with stroke")},{character:"Å‚",title:e("Latin small letter l with stroke")},{character:"Ń",title:e("Latin capital letter n with acute")},{character:"Å„",title:e("Latin small letter n with acute")},{character:"Å…",title:e("Latin capital letter n with cedilla")},{character:"ņ",title:e("Latin small letter n with cedilla")},{character:"Ň",title:e("Latin capital letter n with caron")},{character:"ň",title:e("Latin small letter n with caron")},{character:"ʼn",title:e("Latin small letter n preceded by apostrophe")},{character:"ÅŠ",title:e("Latin capital letter eng")},{character:"Å‹",title:e("Latin small letter eng")},{character:"ÅŒ",title:e("Latin capital letter o with macron")},{character:"Å",title:e("Latin small letter o with macron")},{character:"ÅŽ",title:e("Latin capital letter o with breve")},{character:"Å",title:e("Latin small letter o with breve")},{character:"Å",title:e("Latin capital letter o with double acute")},{character:"Å‘",title:e("Latin small letter o with double acute")},{character:"Å’",title:e("Latin capital ligature oe")},{character:"Å“",title:e("Latin small ligature oe")},{character:"Å”",title:e("Latin capital letter r with acute")},{character:"Å•",title:e("Latin small letter r with acute")},{character:"Å–",title:e("Latin capital letter r with cedilla")},{character:"Å—",title:e("Latin small letter r with cedilla")},{character:"Ř",title:e("Latin capital letter r with caron")},{character:"Å™",title:e("Latin small letter r with caron")},{character:"Åš",title:e("Latin capital letter s with acute")},{character:"Å›",title:e("Latin small letter s with acute")},{character:"Åœ",title:e("Latin capital letter s with circumflex")},{character:"Å",title:e("Latin small letter s with circumflex")},{character:"Åž",title:e("Latin capital letter s with cedilla")},{character:"ÅŸ",title:e("Latin small letter s with cedilla")},{character:"Å ",title:e("Latin capital letter s with caron")},{character:"Å¡",title:e("Latin small letter s with caron")},{character:"Å¢",title:e("Latin capital letter t with cedilla")},{character:"Å£",title:e("Latin small letter t with cedilla")},{character:"Ť",title:e("Latin capital letter t with caron")},{character:"Å¥",title:e("Latin small letter t with caron")},{character:"Ŧ",title:e("Latin capital letter t with stroke")},{character:"ŧ",title:e("Latin small letter t with stroke")},{character:"Ũ",title:e("Latin capital letter u with tilde")},{character:"Å©",title:e("Latin small letter u with tilde")},{character:"Ū",title:e("Latin capital letter u with macron")},{character:"Å«",title:e("Latin small letter u with macron")},{character:"Ŭ",title:e("Latin capital letter u with breve")},{character:"Å",title:e("Latin small letter u with breve")},{character:"Å®",title:e("Latin capital letter u with ring above")},{character:"ů",title:e("Latin small letter u with ring above")},{character:"Å°",title:e("Latin capital letter u with double acute")},{character:"ű",title:e("Latin small letter u with double acute")},{character:"Ų",title:e("Latin capital letter u with ogonek")},{character:"ų",title:e("Latin small letter u with ogonek")},{character:"Å´",title:e("Latin capital letter w with circumflex")},{character:"ŵ",title:e("Latin small letter w with circumflex")},{character:"Ŷ",title:e("Latin capital letter y with circumflex")},{character:"Å·",title:e("Latin small letter y with circumflex")},{character:"Ÿ",title:e("Latin capital letter y with diaeresis")},{character:"Ź",title:e("Latin capital letter z with acute")},{character:"ź",title:e("Latin small letter z with acute")},{character:"Å»",title:e("Latin capital letter z with dot above")},{character:"ż",title:e("Latin small letter z with dot above")},{character:"Ž",title:e("Latin capital letter z with caron")},{character:"ž",title:e("Latin small letter z with caron")},{character:"Å¿",title:e("Latin small letter long s")}])}}class p extends i.Plugin{static get pluginName(){return"SpecialCharactersCurrency"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Currency",[{character:"$",title:e("Dollar sign")},{character:"€",title:e("Euro sign")},{character:"Â¥",title:e("Yen sign")},{character:"£",title:e("Pound sign")},{character:"¢",title:e("Cent sign")},{character:"â‚ ",title:e("Euro-currency sign")},{character:"â‚¡",title:e("Colon sign")},{character:"â‚¢",title:e("Cruzeiro sign")},{character:"â‚£",title:e("French franc sign")},{character:"₤",title:e("Lira sign")},{character:"¤",title:e("Currency sign")},{character:"â‚¿",title:e("Bitcoin sign")},{character:"â‚¥",title:e("Mill sign")},{character:"₦",title:e("Naira sign")},{character:"₧",title:e("Peseta sign")},{character:"₨",title:e("Rupee sign")},{character:"â‚©",title:e("Won sign")},{character:"₪",title:e("New sheqel sign")},{character:"â‚«",title:e("Dong sign")},{character:"â‚",title:e("Kip sign")},{character:"â‚®",title:e("Tugrik sign")},{character:"₯",title:e("Drachma sign")},{character:"â‚°",title:e("German penny sign")},{character:"₱",title:e("Peso sign")},{character:"₲",title:e("Guarani sign")},{character:"₳",title:e("Austral sign")},{character:"â‚´",title:e("Hryvnia sign")},{character:"₵",title:e("Cedi sign")},{character:"₶",title:e("Livre tournois sign")},{character:"â‚·",title:e("Spesmilo sign")},{character:"₸",title:e("Tenge sign")},{character:"₹",title:e("Indian rupee sign")},{character:"₺",title:e("Turkish lira sign")},{character:"â‚»",title:e("Nordic mark sign")},{character:"₼",title:e("Manat sign")},{character:"₽",title:e("Ruble sign")}])}}class L extends i.Plugin{static get requires(){return[p,d,g,w,m]}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/table.js b/core/assets/vendor/ckeditor5/table.js new file mode 100644 index 000000000000..32fff31f0b24 --- /dev/null +++ b/core/assets/vendor/ckeditor5/table.js @@ -0,0 +1,5 @@ +/*! + * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */ +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"Align cell text to the bottom","Align cell text to the center":"Align cell text to the center","Align cell text to the left":"Align cell text to the left","Align cell text to the middle":"Align cell text to the middle","Align cell text to the right":"Align cell text to the right","Align cell text to the top":"Align cell text to the top","Align table to the left":"Align table to the left","Align table to the right":"Align table to the right",Alignment:"Alignment",Background:"Background",Border:"Border","Cell properties":"Cell properties","Center table":"Center table",Color:"Color","Color picker":"Color picker",Column:"Column",Dashed:"Dashed","Delete column":"Delete column","Delete row":"Delete row",Dimensions:"Dimensions",Dotted:"Dotted",Double:"Double","Enter table caption":"Enter table caption",Groove:"Groove","Header column":"Header column","Header row":"Header row",Height:"Height","Horizontal text alignment toolbar":"Horizontal text alignment toolbar","Insert column left":"Insert column left","Insert column right":"Insert column right","Insert row above":"Insert row above","Insert row below":"Insert row below","Insert table":"Insert table",Inset:"Inset","Justify cell text":"Justify cell text","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Merge cell right":"Merge cell right","Merge cell up":"Merge cell up","Merge cells":"Merge cells",None:"None",Outset:"Outset",Padding:"Padding",Ridge:"Ridge",Row:"Row","Select column":"Select column","Select row":"Select row",Solid:"Solid","Split cell horizontally":"Split cell horizontally","Split cell vertically":"Split cell vertically",Style:"Style","Table alignment toolbar":"Table alignment toolbar","Table cell text alignment":"Table cell text alignment","Table properties":"Table properties","Table toolbar":"Table toolbar",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'The value is invalid. Try "10px" or "2em" or simply "2".',"Toggle caption off":"Toggle caption off","Toggle caption on":"Toggle caption on","Vertical text alignment toolbar":"Vertical text alignment toolbar",Width:"Width"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.table=function(e){var t={};function o(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(n,i,function(t){return e[t]}.bind(null,i));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=32)}([function(e,t,o){e.exports=o(6)("./src/ui.js")},function(e,t,o){e.exports=o(6)("./src/core.js")},function(e,t,o){e.exports=o(6)("./src/utils.js")},function(e,t,o){e.exports=o(6)("./src/engine.js")},function(e,t,o){e.exports=o(6)("./src/widget.js")},function(e,t,o){"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var e={};return function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(e){o=null}e[t]=o}return e[t]}}(),l=[];function s(e){for(var t=-1,o=0;o<l.length;o++)if(l[o].identifier===e){t=o;break}return t}function a(e,t){for(var o={},n=[],i=0;i<e.length;i++){var r=e[i],a=t.base?r[0]+t.base:r[0],c=o[a]||0,d="".concat(a," ").concat(c);o[a]=c+1;var u=s(d),h={css:r[1],media:r[2],sourceMap:r[3]};-1!==u?(l[u].references++,l[u].updater(h)):l.push({identifier:d,updater:p(h,t),references:1}),n.push(d)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var i=o.nc;i&&(n.nonce=i)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var l=r(e.insert||"head");if(!l)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");l.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,o,n){var i=o?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var r=document.createTextNode(i),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(r,l[t]):e.appendChild(r)}}function b(e,t,o){var n=o.css,i=o.media,r=o.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var m=null,g=0;function p(e,t){var o,n,i;if(t.singleton){var r=g++;o=m||(m=c(t)),n=h.bind(null,o,r,!1),i=h.bind(null,o,r,!0)}else o=c(t),n=b.bind(null,o,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(o)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var o=a(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<o.length;n++){var i=s(o[n]);l[i].references--}for(var r=a(e,t),c=0;c<o.length;c++){var d=s(o[c]);0===l[d].references&&(l[d].updater(),l.splice(d,1))}o=r}}}},function(e,t){e.exports=CKEditor5.dll},,function(e,t,o){var n=o(5),i=o(23);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t,o){var n=o(5),i=o(24);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t,o){"use strict";(function(e){var o="object"==typeof e&&e&&e.Object===Object&&e;t.a=o}).call(this,o(27))},function(e,t,o){var n=o(5),i=o(12);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t){e.exports=":root{--ck-color-table-focused-cell-background:rgba(158,207,250,0.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}"},function(e,t,o){var n=o(5),i=o(14);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t){e.exports=".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2);padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{width:var(--ck-insert-table-dropdown-box-width);height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);border:1px solid var(--ck-color-base-border);border-radius:1px}.ck .ck-insert-table-dropdown-grid-box.ck-on{border-color:var(--ck-color-focus-border);background:var(--ck-color-focus-outer-shadow)}"},function(e,t,o){var n=o(5),i=o(16);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t){e.exports=':root{--ck-table-selected-cell-background:rgba(158,207,250,0.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{position:relative;caret-color:transparent;outline:unset;box-shadow:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{content:"";pointer-events:none;background-color:var(--ck-table-selected-cell-background);position:absolute;top:0;left:0;right:0;bottom:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget{outline:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle{display:none}'},function(e,t,o){var n=o(5),i=o(18);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t){e.exports=".ck-content .table{margin:.9em auto;display:table}.ck-content .table table{border-collapse:collapse;border-spacing:0;width:100%;height:100%;border:1px double #b3b3b3}.ck-content .table table td,.ck-content .table table th{min-width:2em;padding:.4em;border:1px solid #bfbfbf}.ck-content .table table th{font-weight:700;background:hsla(0,0%,0%,5%)}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}.ck-editor__editable .ck-table-bogus-paragraph{display:inline-block;width:100%}"},function(e,t,o){var n=o(5),i=o(20);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t){e.exports=".ck.ck-input-color{width:100%;display:flex;flex-direction:row-reverse}.ck.ck-input-color>input.ck.ck-input-text{min-width:auto;flex-grow:1}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button{display:flex}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{position:relative;overflow:hidden}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{position:absolute;display:block}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-left-width:0;border-top-left-radius:0;border-bottom-left-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-right-width:0;border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{width:20px;height:20px;border:1px solid var(--ck-color-input-border)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{top:-30%;left:50%;height:150%;width:8%;background:red;border-radius:2px;transform:rotate(45deg);transform-origin:50%}.ck.ck-input-color .ck.ck-input-color__remove-color{width:100%;border-bottom:1px solid var(--ck-color-input-border);padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);border-bottom-left-radius:0;border-bottom-right-radius:0}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:0;margin-left:var(--ck-spacing-standard)}"},function(e,t,o){var n=o(5),i=o(22);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t){e.exports=".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{width:100%;min-width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}"},function(e,t){e.exports=".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}"},function(e,t){e.exports='.ck.ck-table-form .ck-form__row.ck-table-form__background-row,.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{flex-wrap:wrap;align-items:center}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{display:flex;flex-direction:column-reverse;align-items:center}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{position:absolute;left:50%;bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{width:80px;min-width:80px;max-width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:flex-end;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view{padding-top:var(--ck-spacing-standard)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);padding:var(--ck-spacing-small) var(--ck-spacing-medium);min-width:var(--ck-table-properties-min-error-width);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-left:var(--ck-table-properties-error-arrow-size) solid transparent;border-bottom:var(--ck-table-properties-error-arrow-size) solid var(--ck-color-base-error);border-right:var(--ck-table-properties-error-arrow-size) solid transparent;border-top:0 solid transparent}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}'},function(e,t,o){var n=o(5),i=o(26);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t){e.exports=".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:first-of-type{flex-grow:0.57}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:last-of-type{flex-grow:0.43}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar .ck-button{flex-grow:1}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{align-self:flex-end;padding:0;width:25%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}"},function(e,t){var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(e){"object"==typeof window&&(o=window)}e.exports=o},function(e,t,o){var n=o(5),i=o(29);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t){e.exports=".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{flex-wrap:wrap;flex-basis:0;align-content:baseline}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-self:flex-end;padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}"},function(e,t,o){var n=o(5),i=o(31);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var r={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(i,r);e.exports=i.locals||{}},function(e,t){e.exports=":root{--ck-color-table-caption-background:#f7f7f7;--ck-color-table-caption-text:#333;--ck-color-table-caption-highlighted-background:#fd0}.ck-content .table>figcaption{display:table-caption;caption-side:top;word-break:break-word;text-align:center;color:var(--ck-color-table-caption-text);background-color:var(--ck-color-table-caption-background);padding:.6em;font-size:.75em;outline-offset:-1px}.ck.ck-editor__editable .table>figcaption.table__caption_highlighted{animation:ck-table-caption-highlight .6s ease-out}.ck.ck-editor__editable .table>figcaption.ck-placeholder:before{padding-left:inherit;padding-right:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-table-caption-highlighted-background)}to{background-color:var(--ck-color-table-caption-background)}}"},function(e,t,o){"use strict";o.r(t),o.d(t,"Table",(function(){return He})),o.d(t,"TableEditing",(function(){return ye})),o.d(t,"TableUI",(function(){return Se})),o.d(t,"TableToolbar",(function(){return Ue})),o.d(t,"TableCellProperties",(function(){return go})),o.d(t,"TableCellPropertiesEditing",(function(){return bo})),o.d(t,"TableCellPropertiesUI",(function(){return Gt})),o.d(t,"TableProperties",(function(){return Bo})),o.d(t,"TablePropertiesEditing",(function(){return Ao})),o.d(t,"TablePropertiesUI",(function(){return Eo})),o.d(t,"TableCaption",(function(){return Wo})),o.d(t,"TableCaptionEditing",(function(){return Ho})),o.d(t,"TableCaptionUI",(function(){return Do})),o.d(t,"TableClipboard",(function(){return Pe})),o.d(t,"TableMouse",(function(){return Me})),o.d(t,"TableKeyboard",(function(){return Le})),o.d(t,"TableSelection",(function(){return Ie})),o.d(t,"TableUtils",(function(){return te}));var n=o(1),i=o(4);function r(e,t,o,n,i=1){t>i?n.setAttribute(e,t,o):n.removeAttribute(e,o)}function l(e,t,o={}){const n=e.createElement("tableCell",o);return e.insertElement("paragraph",n),e.insert(n,t),n}function s(e,t){const o=t.parent.parent,n=parseInt(o.getAttribute("headingColumns")||0),{column:i}=e.getCellLocation(t);return!!n&&i<n}var a=o(2);function c(){return e=>{e.on("element:table",(e,t,o)=>{const n=t.viewItem;if(!o.consumable.test(n,{name:!0}))return;const{rows:i,headingRows:r,headingColumns:s}=function(e){const t={headingRows:0,headingColumns:0},o=[],n=[];let i;for(const r of Array.from(e.getChildren()))if("tbody"===r.name||"thead"===r.name||"tfoot"===r.name){"thead"!==r.name||i||(i=r);const e=Array.from(r.getChildren()).filter(e=>e.is("element","tr"));for(const r of e)if("thead"===r.parent.name&&r.parent===i)t.headingRows++,o.push(r);else{n.push(r);const e=u(r);e>t.headingColumns&&(t.headingColumns=e)}}return t.rows=[...o,...n],t}(n),a={};s&&(a.headingColumns=s),r&&(a.headingRows=r);const c=o.writer.createElement("table",a);if(o.safeInsert(c,t.modelCursor)){if(o.consumable.consume(n,{name:!0}),i.forEach(e=>o.convertItem(e,o.writer.createPositionAt(c,"end"))),o.convertChildren(n,o.writer.createPositionAt(c,"end")),c.isEmpty){const e=o.writer.createElement("tableRow");o.writer.insert(e,o.writer.createPositionAt(c,"end")),l(o.writer,o.writer.createPositionAt(e,"end"))}o.updateConversionResult(c,t)}})}}function d(e){return t=>{t.on("element:"+e,(e,t,o)=>{if(t.modelRange&&t.viewItem.isEmpty){const e=t.modelRange.start.nodeAfter,n=o.writer.createPositionAt(e,0);o.writer.insertElement("paragraph",n)}},{priority:"low"})}}function u(e){let t=0,o=0;const n=Array.from(e.getChildren()).filter(e=>"th"===e.name||"td"===e.name);for(;o<n.length&&"th"===n[o].name;){const e=n[o];t+=parseInt(e.getAttribute("colspan")||1),o++}return t}class h{constructor(e,t={}){this._table=e,this._startRow=void 0!==t.row?t.row:t.startRow||0,this._endRow=void 0!==t.row?t.row:t.endRow,this._startColumn=void 0!==t.column?t.column:t.startColumn||0,this._endColumn=void 0!==t.column?t.column:t.endColumn,this._includeAllSlots=!!t.includeAllSlots,this._skipRows=new Set,this._row=0,this._rowIndex=0,this._column=0,this._cellIndex=0,this._spannedCells=new Map,this._nextCellAtColumn=-1}[Symbol.iterator](){return this}next(){const e=this._table.getChild(this._rowIndex);if(!e||this._isOverEndRow())return{done:!0};if(!e.is("element","tableRow"))return this._rowIndex++,this.next();if(this._isOverEndColumn())return this._advanceToNextRow();let t=null;const o=this._getSpanned();if(o)this._includeAllSlots&&!this._shouldSkipSlot()&&(t=this._formatOutValue(o.cell,o.row,o.column));else{const o=e.getChild(this._cellIndex);if(!o)return this._advanceToNextRow();const n=parseInt(o.getAttribute("colspan")||1),i=parseInt(o.getAttribute("rowspan")||1);(n>1||i>1)&&this._recordSpans(o,i,n),this._shouldSkipSlot()||(t=this._formatOutValue(o)),this._nextCellAtColumn=this._column+n}return this._column++,this._column==this._nextCellAtColumn&&this._cellIndex++,t||this.next()}skipRow(e){this._skipRows.add(e)}_advanceToNextRow(){return this._row++,this._rowIndex++,this._column=0,this._cellIndex=0,this._nextCellAtColumn=-1,this.next()}_isOverEndRow(){return void 0!==this._endRow&&this._row>this._endRow}_isOverEndColumn(){return void 0!==this._endColumn&&this._column>this._endColumn}_formatOutValue(e,t=this._row,o=this._column){return{done:!1,value:new b(this,e,t,o)}}_shouldSkipSlot(){const e=this._skipRows.has(this._row),t=this._row<this._startRow,o=this._column<this._startColumn,n=void 0!==this._endColumn&&this._column>this._endColumn;return e||t||o||n}_getSpanned(){const e=this._spannedCells.get(this._row);return e&&e.get(this._column)||null}_recordSpans(e,t,o){const n={cell:e,row:this._row,column:this._column};for(let e=this._row;e<this._row+t;e++)for(let t=this._column;t<this._column+o;t++)e==this._row&&t==this._column||this._markSpannedCell(e,t,n)}_markSpannedCell(e,t,o){this._spannedCells.has(e)||this._spannedCells.set(e,new Map);this._spannedCells.get(e).set(t,o)}}class b{constructor(e,t,o,n){this.cell=t,this.row=e._row,this.column=e._column,this.cellAnchorRow=o,this.cellAnchorColumn=n,this._cellIndex=e._cellIndex,this._rowIndex=e._rowIndex,this._table=e._table}get isAnchor(){return this.row===this.cellAnchorRow&&this.column===this.cellAnchorColumn}get cellWidth(){return parseInt(this.cell.getAttribute("colspan")||1)}get cellHeight(){return parseInt(this.cell.getAttribute("rowspan")||1)}get rowIndex(){return this._rowIndex}getPositionBefore(){return this._table.root.document.model.createPositionAt(this._table.getChild(this.row),this._cellIndex)}}function m(e={}){return t=>t.on("insert:table",(t,o,n)=>{const r=o.item;if(!n.consumable.consume(r,"insert"))return;n.consumable.consume(r,"attribute:headingRows:table"),n.consumable.consume(r,"attribute:headingColumns:table");const l=e&&e.asWidget,s=n.writer.createContainerElement("figure",{class:"table"}),a=n.writer.createContainerElement("table");let c;var d,u;n.writer.insert(n.writer.createPositionAt(s,0),a),l&&(d=s,(u=n.writer).setCustomProperty("table",!0,d),c=Object(i.toWidget)(d,u,{hasSelectionHandle:!0}));const b=new h(r),m={headingRows:r.getAttribute("headingRows")||0,headingColumns:r.getAttribute("headingColumns")||0},g=new Map;for(const t of b){const{row:o,cell:i}=t,l=r.getChild(o),s=g.get(o)||_(a,l,o,m,n);g.set(o,s),n.consumable.consume(i,"insert");w(t,m,n.writer.createPositionAt(s,"end"),n,e)}for(const e of r.getChildren()){const t=e.index;e.is("element","tableRow")&&!g.has(t)&&g.set(t,_(a,e,t,m,n))}const p=n.mapper.toViewPosition(o.range.start);n.mapper.bindElements(r,l?c:s),n.writer.insert(p,l?c:s)})}function g(e,t){const{writer:o}=t;if(e.parent.is("element","tableCell"))return p(e)?o.createContainerElement("span",{class:"ck-table-bogus-paragraph"}):o.createContainerElement("p")}function p(e){return 1===e.parent.childCount&&!y(e)}function f(e,t,o){const{cell:n}=e,r=k(e,t),l=o.mapper.toViewElement(n);l&&l.name!==r&&function(e,t,o){const n=o.writer,r=o.mapper.toViewElement(e),l=n.createEditableElement(t,r.getAttributes()),s=Object(i.toWidgetEditable)(l,n);n.insert(n.createPositionAfter(r),s),n.move(n.createRangeIn(r),n.createPositionAt(s,0)),n.remove(n.createRangeOn(r)),o.mapper.unbindViewElement(r),o.mapper.bindElements(e,s)}(n,r,o)}function w(e,t,o,n,r){const l=r&&r.asWidget,s=k(e,t),a=l?Object(i.toWidgetEditable)(n.writer.createEditableElement(s),n.writer):n.writer.createContainerElement(s),c=e.cell,d=c.getChild(0),u=1===c.childCount&&"paragraph"===d.name;if(n.writer.insert(o,a),n.mapper.bindElements(c,a),!l&&u&&!y(d)){const e=c.getChild(0);n.consumable.consume(e,"insert"),n.mapper.bindElements(e,a)}}function _(e,t,o,n,i){i.consumable.consume(t,"insert");const r=t.isEmpty?i.writer.createEmptyElement("tr"):i.writer.createContainerElement("tr");i.mapper.bindElements(t,r);const l=n.headingRows,s=function(e,t,o){const n=v(e,t);return n||function(e,t,o){const n=o.writer.createContainerElement(e),i=o.writer.createPositionAt(t,"tbody"==e?"end":0);return o.writer.insert(i,n),n}(e,t,o)}(function(e,t){return e<t.headingRows?"thead":"tbody"}(o,n),e,i),a=l>0&&o>=l?o-l:o,c=i.writer.createPositionAt(s,a);return i.writer.insert(c,r),r}function k(e,t){const{row:o,column:n}=e,{headingColumns:i,headingRows:r}=t;if(r&&r>o)return"th";return i&&i>n?"th":"td"}function v(e,t){for(const o of t.getChildren())if(o.name==e)return o}function C(e,t,o){const n=v(e,t);n&&0===n.childCount&&o.writer.remove(o.writer.createRangeOn(n))}function y(e){return!![...e.getAttributeKeys()].length}class T extends n.Command{refresh(){const e=this.editor.model,t=e.document.selection,o=e.schema;this.isEnabled=function(e,t){const o=e.getFirstPosition().parent,n=o===o.root?o:o.parent;return t.checkChild(n,"table")}(t,o)}execute(e={}){const t=this.editor.model,o=t.document.selection,n=this.editor.plugins.get("TableUtils"),r=this.editor.config.get("table"),l=Object(i.findOptimalInsertionRange)(o,t),s=r.defaultHeadings.rows,a=r.defaultHeadings.columns;void 0===e.headingRows&&s&&(e.headingRows=s),void 0===e.headingColumns&&a&&(e.headingColumns=a),t.change(o=>{const i=n.createTable(o,e);t.insertContent(i,l),o.setSelection(o.createPositionAt(i.getNodeByPath([0,0,0]),0))})}}function x(e){const t=[];for(const o of P(e.getRanges())){const e=o.getContainedElement();e&&e.is("element","tableCell")&&t.push(e)}return t}function A(e){const t=[];for(const o of e.getRanges()){const e=o.start.findAncestor("tableCell");e&&t.push(e)}return t}function V(e){const t=x(e);return t.length?t:A(e)}function S(e){return E(e.map(e=>e.parent.index))}function R(e){const t=e[0].findAncestor("table");return E([...new h(t)].filter(t=>e.includes(t.cell)).map(e=>e.column))}function I(e,t){if(e.length<2||!function(e){const t=e[0].findAncestor("table"),o=S(e),n=parseInt(t.getAttribute("headingRows")||0);if(!O(o,n))return!1;const i=parseInt(t.getAttribute("headingColumns")||0);return O(R(e),i)}(e))return!1;const o=new Set,n=new Set;let i=0;for(const r of e){const{row:e,column:l}=t.getCellLocation(r),s=parseInt(r.getAttribute("rowspan")||1),a=parseInt(r.getAttribute("colspan")||1);o.add(e),n.add(l),s>1&&o.add(e+s-1),a>1&&n.add(l+a-1),i+=s*a}return function(e,t){const o=Array.from(e.values()),n=Array.from(t.values()),i=Math.max(...o),r=Math.min(...o),l=Math.max(...n),s=Math.min(...n);return(i-r+1)*(l-s+1)}(o,n)==i}function P(e){return Array.from(e).sort(B)}function E(e){const t=e.sort((e,t)=>e-t);return{first:t[0],last:t[t.length-1]}}function B(e,t){const o=e.start,n=t.start;return o.isBefore(n)?-1:1}function O({first:e,last:t},o){return e<o===t<o}class L extends n.Command{constructor(e,t={}){super(e),this.order=t.order||"below"}refresh(){const e=!!V(this.editor.model.document.selection).length;this.isEnabled=e}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="above"===this.order,i=V(t),r=S(i),l=n?r.first:r.last,s=i[0].findAncestor("table");o.insertRows(s,{at:n?l:l+1,copyStructureFromAbove:!n})}}class N extends n.Command{constructor(e,t={}){super(e),this.order=t.order||"right"}refresh(){const e=!!V(this.editor.model.document.selection).length;this.isEnabled=e}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="left"===this.order,i=V(t),r=R(i),l=n?r.first:r.last,s=i[0].findAncestor("table");o.insertColumns(s,{columns:1,at:n?l:l+1})}}class z extends n.Command{constructor(e,t={}){super(e),this.direction=t.direction||"horizontally"}refresh(){const e=V(this.editor.model.document.selection);this.isEnabled=1===e.length}execute(){const e=V(this.editor.model.document.selection)[0],t="horizontally"===this.direction,o=this.editor.plugins.get("TableUtils");t?o.splitCellHorizontally(e,2):o.splitCellVertically(e,2)}}function M(e,t,o){const{startRow:n,startColumn:i,endRow:s,endColumn:a}=t,c=o.createElement("table"),d=s-n+1;for(let e=0;e<d;e++)o.insertElement("tableRow",c,"end");const u=[...new h(e,{startRow:n,endRow:s,startColumn:i,endColumn:a,includeAllSlots:!0})];for(const{row:e,column:t,cell:r,isAnchor:d,cellAnchorRow:h,cellAnchorColumn:b}of u){const u=e-n,m=c.getChild(u);if(d){const n=o.cloneElement(r);o.append(n,m),j(n,e,t,s,a,o)}else(h<n||b<i)&&l(o,o.createPositionAt(m,"end"))}return function(e,t,o,n,i){const l=parseInt(t.getAttribute("headingRows")||0);if(l>0){r("headingRows",l-o,e,i,0)}const s=parseInt(t.getAttribute("headingColumns")||0);if(s>0){r("headingColumns",s-n,e,i,0)}}(c,e,n,i,o),c}function F(e,t,o=0){const n=[],i=new h(e,{startRow:o,endRow:t-1});for(const e of i){const{row:o,cellHeight:i}=e,r=o+i-1;o<t&&t<=r&&n.push(e)}return n}function H(e,t,o){const n=e.parent,i=n.parent,s=n.index,a=t-s,c={},d=parseInt(e.getAttribute("rowspan"))-a;d>1&&(c.rowspan=d);const u=parseInt(e.getAttribute("colspan")||1);u>1&&(c.colspan=u);const b=s+a,m=[...new h(i,{startRow:s,endRow:b,includeAllSlots:!0})];let g,p=null;for(const t of m){const{row:n,column:i,cell:r}=t;r===e&&void 0===g&&(g=i),void 0!==g&&g===i&&n===b&&(p=l(o,t.getPositionBefore(),c))}return r("rowspan",a,e,o),p}function D(e,t){const o=[],n=new h(e);for(const e of n){const{column:n,cellWidth:i}=e,r=n+i-1;n<t&&t<=r&&o.push(e)}return o}function W(e,t,o,n){const i=o-t,s={},a=parseInt(e.getAttribute("colspan"))-i;a>1&&(s.colspan=a);const c=parseInt(e.getAttribute("rowspan")||1);c>1&&(s.rowspan=c);const d=l(n,n.createPositionAfter(e),s);return r("colspan",i,e,n),d}function j(e,t,o,n,i,l){const s=parseInt(e.getAttribute("colspan")||1),a=parseInt(e.getAttribute("rowspan")||1);if(o+s-1>i){r("colspan",i-o+1,e,l,1)}if(t+a-1>n){r("rowspan",n-t+1,e,l,1)}}function U(e,t){const o=t.getColumns(e),n=new Array(o).fill(0);for(const{column:t}of new h(e))n[t]++;const i=n.reduce((e,t,o)=>t?e:[...e,o],[]);if(i.length>0){const o=i[i.length-1];return t.removeColumns(e,{at:o}),!0}return!1}function K(e,t){const o=[],n=t.getRows(e);for(let t=0;t<n;t++){e.getChild(t).isEmpty&&o.push(t)}if(o.length>0){const n=o[o.length-1];return t.removeRows(e,{at:n}),!0}return!1}function $(e,t){U(e,t)||K(e,t)}function q(e,t){const o=Array.from(new h(e,{startColumn:t.firstColumn,endColumn:t.lastColumn,row:t.lastRow}));if(o.every(({cellHeight:e})=>1===e))return t.lastRow;const n=o[0].cellHeight-1;return t.lastRow+n}function G(e,t){const o=Array.from(new h(e,{startRow:t.firstRow,endRow:t.lastRow,column:t.lastColumn}));if(o.every(({cellWidth:e})=>1===e))return t.lastColumn;const n=o[0].cellWidth-1;return t.lastColumn+n}class J extends n.Command{constructor(e,t){super(e),this.direction=t.direction,this.isHorizontal="right"==this.direction||"left"==this.direction}refresh(){const e=this._getMergeableCell();this.value=e,this.isEnabled=!!e}execute(){const e=this.editor.model,t=A(e.document.selection)[0],o=this.value,n=this.direction;e.change(e=>{const i="right"==n||"down"==n,r=i?t:o,l=i?o:t,s=l.parent;!function(e,t,o){X(e)||(X(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end")));o.remove(e)}(l,r,e);const a=this.isHorizontal?"colspan":"rowspan",c=parseInt(t.getAttribute(a)||1),d=parseInt(o.getAttribute(a)||1);e.setAttribute(a,c+d,r),e.setSelection(e.createRangeIn(r));const u=this.editor.plugins.get("TableUtils");$(s.findAncestor("table"),u)})}_getMergeableCell(){const e=A(this.editor.model.document.selection)[0];if(!e)return;const t=this.editor.plugins.get("TableUtils"),o=this.isHorizontal?function(e,t,o){const n=e.parent.parent,i="right"==t?e.nextSibling:e.previousSibling,r=(n.getAttribute("headingColumns")||0)>0;if(!i)return;const l="right"==t?e:i,a="right"==t?i:e,{column:c}=o.getCellLocation(l),{column:d}=o.getCellLocation(a),u=parseInt(l.getAttribute("colspan")||1),h=s(o,l),b=s(o,a);if(r&&h!=b)return;return c+u===d?i:void 0}(e,this.direction,t):function(e,t,o){const n=e.parent,i=n.parent,r=i.getChildIndex(n);if("down"==t&&r===o.getRows(i)-1||"up"==t&&0===r)return;const l=parseInt(e.getAttribute("rowspan")||1),s=i.getAttribute("headingRows")||0,a="down"==t&&r+l===s,c="up"==t&&r===s;if(s&&(a||c))return;const d=parseInt(e.getAttribute("rowspan")||1),u="down"==t?r+d:r,b=[...new h(i,{endRow:u})],m=b.find(t=>t.cell===e).column,g=b.find(({row:e,cellHeight:o,column:n})=>n===m&&("down"==t?e===u:u===e+o));return g&&g.cell}(e,this.direction,t);if(!o)return;const n=this.isHorizontal?"rowspan":"colspan",i=parseInt(e.getAttribute(n)||1);return parseInt(o.getAttribute(n)||1)===i?o:void 0}}function X(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}class Y extends n.Command{refresh(){const e=V(this.editor.model.document.selection),t=e[0];if(t){const o=t.findAncestor("table"),n=this.editor.plugins.get("TableUtils").getRows(o)-1,i=S(e),r=0===i.first&&i.last===n;this.isEnabled=!r}else this.isEnabled=!1}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=V(e.document.selection),n=S(o),i=o[0],r=i.findAncestor("table"),l=t.getCellLocation(i).column;e.change(e=>{const o=n.last-n.first+1;t.removeRows(r,{at:n.first,rows:o});const i=function(e,t,o,n){const i=e.getChild(Math.min(t,n-1));let r=i.getChild(0),l=0;for(const e of i.getChildren()){if(l>o)return r;r=e,l+=parseInt(e.getAttribute("colspan")||1)}return r}(r,n.first,l,t.getRows(r));e.setSelection(e.createPositionAt(i,0))})}}class Q extends n.Command{refresh(){const e=V(this.editor.model.document.selection),t=e[0];if(t){const o=t.findAncestor("table"),n=this.editor.plugins.get("TableUtils").getColumns(o),{first:i,last:r}=R(e);this.isEnabled=r-i<n-1}else this.isEnabled=!1}execute(){const[e,t]=function(e){const t=V(e),o=t[0],n=t.pop(),i=[o,n];return o.isBefore(n)?i:i.reverse()}(this.editor.model.document.selection),o=e.parent.parent,n=[...new h(o)],i={first:n.find(t=>t.cell===e).column,last:n.find(e=>e.cell===t).column},r=function(e,t,o,n){return parseInt(o.getAttribute("colspan")||1)>1?o:t.previousSibling||o.nextSibling?o.nextSibling||t.previousSibling:n.first?e.reverse().find(({column:e})=>e<n.first).cell:e.reverse().find(({column:e})=>e>n.last).cell}(n,e,t,i);this.editor.model.change(e=>{const t=i.last-i.first+1;this.editor.plugins.get("TableUtils").removeColumns(o,{at:i.first,columns:t}),e.setSelection(e.createPositionAt(r,0))})}}class Z extends n.Command{refresh(){const e=V(this.editor.model.document.selection),t=e.length>0;this.isEnabled=t,this.value=t&&e.every(e=>this._isInHeading(e,e.parent.parent))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.model,o=V(t.document.selection),n=o[0].findAncestor("table"),{first:i,last:l}=S(o),s=this.value?i:l+1,a=n.getAttribute("headingRows")||0;t.change(e=>{if(s){const t=F(n,s,s>a?a:0);for(const{cell:o}of t)H(o,s,e)}r("headingRows",s,n,e,0)})}_isInHeading(e,t){const o=parseInt(t.getAttribute("headingRows")||0);return!!o&&e.parent.index<o}}class ee extends n.Command{refresh(){const e=V(this.editor.model.document.selection),t=this.editor.plugins.get("TableUtils"),o=e.length>0;this.isEnabled=o,this.value=o&&e.every(e=>s(t,e))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.model,o=V(t.document.selection),n=o[0].findAncestor("table"),{first:i,last:l}=R(o),s=this.value?i:l+1;t.change(e=>{if(s){const t=D(n,s);for(const{cell:o,column:n}of t)W(o,n,s,e)}r("headingColumns",s,n,e,0)})}}class te extends n.Plugin{static get pluginName(){return"TableUtils"}init(){this.decorate("insertColumns"),this.decorate("insertRows")}getCellLocation(e){const t=e.parent,o=t.parent,n=o.getChildIndex(t),i=new h(o,{row:n});for(const{cell:t,row:o,column:n}of i)if(t===e)return{row:o,column:n}}createTable(e,t){const o=e.createElement("table"),n=parseInt(t.rows)||2,i=parseInt(t.columns)||2;return oe(e,o,0,n,i),t.headingRows&&r("headingRows",Math.min(t.headingRows,n),o,e,0),t.headingColumns&&r("headingColumns",Math.min(t.headingColumns,i),o,e,0),o}insertRows(e,t={}){const o=this.editor.model,n=t.at||0,i=t.rows||1,s=void 0!==t.copyStructureFromAbove,c=t.copyStructureFromAbove?n-1:n,d=this.getRows(e),u=this.getColumns(e);if(n>d)throw new a.CKEditorError("tableutils-insertrows-insert-out-of-range",this,{options:t});o.change(t=>{const o=e.getAttribute("headingRows")||0;if(o>n&&r("headingRows",o+i,e,t,0),!s&&(0===n||n===d))return void oe(t,e,n,i,u);const a=s?Math.max(n,c):n,b=new h(e,{endRow:a}),m=new Array(u).fill(1);for(const{row:e,column:o,cellHeight:r,cellWidth:l,cell:a}of b){const d=e+r-1,u=e<=c&&c<=d;e<n&&n<=d?(t.setAttribute("rowspan",r+i,a),m[o]=-l):s&&u&&(m[o]=l)}for(let o=0;o<i;o++){const o=t.createElement("tableRow");t.insert(o,e,n);for(let e=0;e<m.length;e++){const n=m[e],i=t.createPositionAt(o,"end");n>0&&l(t,i,n>1?{colspan:n}:null),e+=Math.abs(n)-1}}})}insertColumns(e,t={}){const o=this.editor.model,n=t.at||0,i=t.columns||1;o.change(t=>{const o=e.getAttribute("headingColumns");n<o&&t.setAttribute("headingColumns",o+i,e);const r=this.getColumns(e);if(0===n||r===n){for(const o of e.getChildren())o.is("element","tableRow")&&ne(i,t,t.createPositionAt(o,n?"end":0));return}const l=new h(e,{column:n,includeAllSlots:!0});for(const e of l){const{row:o,cell:r,cellAnchorColumn:s,cellAnchorRow:a,cellWidth:c,cellHeight:d}=e;if(s<n){t.setAttribute("colspan",c+i,r);const e=a+d-1;for(let t=o;t<=e;t++)l.skipRow(t)}else ne(i,t,e.getPositionBefore())}})}removeRows(e,t){const o=this.editor.model,n=t.rows||1,i=this.getRows(e),l=t.at,s=l+n-1;if(s>i-1)throw new a.CKEditorError("tableutils-removerows-row-index-out-of-range",this,{table:e,options:t});o.change(t=>{const{cellsToMove:o,cellsToTrim:n}=function(e,t,o){const n=new Map,i=[];for(const{row:r,column:l,cellHeight:s,cell:a}of new h(e,{endRow:o})){const e=r+s-1;if(r>=t&&r<=o&&e>o){const e=s-(o-r+1);n.set(l,{cell:a,rowspan:e})}if(r<t&&e>=t){let n;n=e>=o?o-t+1:e-t+1,i.push({cell:a,rowspan:s-n})}}return{cellsToMove:n,cellsToTrim:i}}(e,l,s);if(o.size){!function(e,t,o,n){const i=[...new h(e,{includeAllSlots:!0,row:t})],l=e.getChild(t);let s;for(const{column:e,cell:t,isAnchor:a}of i)if(o.has(e)){const{cell:t,rowspan:i}=o.get(e),a=s?n.createPositionAfter(s):n.createPositionAt(l,0);n.move(n.createRangeOn(t),a),r("rowspan",i,t,n),s=t}else a&&(s=t)}(e,s+1,o,t)}for(let o=s;o>=l;o--)t.remove(e.getChild(o));for(const{rowspan:e,cell:o}of n)r("rowspan",e,o,t);!function(e,t,o,n){const i=e.getAttribute("headingRows")||0;if(t<i){r("headingRows",o<i?i-(o-t+1):t,e,n,0)}}(e,l,s,t),U(e,this)||K(e,this)})}removeColumns(e,t){const o=this.editor.model,n=t.at,i=t.columns||1,l=t.at+i-1;o.change(t=>{!function(e,t,o){const n=e.getAttribute("headingColumns")||0;if(n&&t.first<n){const i=Math.min(n-1,t.last)-t.first+1;o.setAttribute("headingColumns",n-i,e)}}(e,{first:n,last:l},t);for(let o=l;o>=n;o--)for(const{cell:n,column:i,cellWidth:l}of[...new h(e)])i<=o&&l>1&&i+l>o?r("colspan",l-1,n,t):i===o&&t.remove(n);K(e,this)||U(e,this)})}splitCellVertically(e,t=2){const o=this.editor.model,n=e.parent.parent,i=parseInt(e.getAttribute("rowspan")||1),l=parseInt(e.getAttribute("colspan")||1);o.change(o=>{if(l>1){const{newCellsSpan:n,updatedSpan:s}=ie(l,t);r("colspan",s,e,o);const a={};n>1&&(a.colspan=n),i>1&&(a.rowspan=i);ne(l>t?t-1:l-1,o,o.createPositionAfter(e),a)}if(l<t){const s=t-l,a=[...new h(n)],{column:c}=a.find(({cell:t})=>t===e),d=a.filter(({cell:t,cellWidth:o,column:n})=>t!==e&&n===c||n<c&&n+o>c);for(const{cell:e,cellWidth:t}of d)o.setAttribute("colspan",t+s,e);const u={};i>1&&(u.rowspan=i),ne(s,o,o.createPositionAfter(e),u);const b=n.getAttribute("headingColumns")||0;b>c&&r("headingColumns",b+s,n,o)}})}splitCellHorizontally(e,t=2){const o=this.editor.model,n=e.parent,i=n.parent,l=i.getChildIndex(n),s=parseInt(e.getAttribute("rowspan")||1),a=parseInt(e.getAttribute("colspan")||1);o.change(o=>{if(s>1){const n=[...new h(i,{startRow:l,endRow:l+s-1,includeAllSlots:!0})],{newCellsSpan:c,updatedSpan:d}=ie(s,t);r("rowspan",d,e,o);const{column:u}=n.find(({cell:t})=>t===e),b={};c>1&&(b.rowspan=c),a>1&&(b.colspan=a);for(const e of n){const{column:t,row:n}=e,i=t===u,r=(n+l+d)%c==0;n>=l+d&&i&&r&&ne(1,o,e.getPositionBefore(),b)}}if(s<t){const n=t-s,c=[...new h(i,{startRow:0,endRow:l})];for(const{cell:t,cellHeight:i,row:r}of c)if(t!==e&&r+i>l){const e=i+n;o.setAttribute("rowspan",e,t)}const d={};a>1&&(d.colspan=a),oe(o,i,l+1,n,1,d);const u=i.getAttribute("headingRows")||0;u>l&&r("headingRows",u+n,i,o)}})}getColumns(e){return[...e.getChild(0).getChildren()].reduce((e,t)=>e+parseInt(t.getAttribute("colspan")||1),0)}getRows(e){return Array.from(e.getChildren()).reduce((e,t)=>t.is("element","tableRow")?e+1:e,0)}}function oe(e,t,o,n,i,r={}){for(let l=0;l<n;l++){const n=e.createElement("tableRow");e.insert(n,t,o),ne(i,e,e.createPositionAt(n,"end"),r)}}function ne(e,t,o,n={}){for(let i=0;i<e;i++)l(t,o,n)}function ie(e,t){if(e<t)return{newCellsSpan:1,updatedSpan:1};const o=Math.floor(e/t);return{newCellsSpan:o,updatedSpan:e-o*t+o}}class re extends n.Command{refresh(){const e=x(this.editor.model.document.selection);this.isEnabled=I(e,this.editor.plugins.get(te))}execute(){const e=this.editor.model,t=this.editor.plugins.get(te);e.change(o=>{const n=x(e.document.selection),i=n.shift(),{mergeWidth:l,mergeHeight:s}=function(e,t,o){let n=0,i=0;for(const e of t){const{row:t,column:r}=o.getCellLocation(e);n=ae(e,r,n,"colspan"),i=ae(e,t,i,"rowspan")}const{row:r,column:l}=o.getCellLocation(e);return{mergeWidth:n-l,mergeHeight:i-r}}(i,n,t);r("colspan",l,i,o),r("rowspan",s,i,o);for(const e of n)le(e,i,o);$(i.findAncestor("table"),t),o.setSelection(i,"in")})}}function le(e,t,o){se(e)||(se(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end"))),o.remove(e)}function se(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}function ae(e,t,o,n){const i=parseInt(e.getAttribute(n)||1);return Math.max(o,t+i)}class ce extends n.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=V(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.model,t=V(e.document.selection),o=S(t),n=t[0].findAncestor("table"),i=[];for(let t=o.first;t<=o.last;t++)for(const o of n.getChild(t).getChildren())i.push(e.createRangeOn(o));e.change(e=>{e.setSelection(i)})}}class de extends n.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=V(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.model,t=V(e.document.selection),o=t[0],n=t.pop(),i=o.findAncestor("table"),r=this.editor.plugins.get("TableUtils"),l=r.getCellLocation(o),s=r.getCellLocation(n),a=Math.min(l.column,s.column),c=Math.max(l.column,s.column),d=[];for(const t of new h(i,{startColumn:a,endColumn:c}))d.push(e.createRangeOn(t.cell));e.change(e=>{e.setSelection(d)})}}function ue(e){e.document.registerPostFixer(t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;const i=new Set;for(const t of o){let o;"table"==t.name&&"insert"==t.type&&(o=t.position.nodeAfter),"tableRow"!=t.name&&"tableCell"!=t.name||(o=t.position.findAncestor("table")),me(t)&&(o=t.range.start.findAncestor("table")),o&&!i.has(o)&&(n=he(o,e)||n,n=be(o,e)||n,i.add(o))}return n}(t,e))}function he(e,t){let o=!1;const n=function(e){const t=parseInt(e.getAttribute("headingRows")||0),o=Array.from(e.getChildren()).reduce((e,t)=>t.is("element","tableRow")?e+1:e,0),n=[];for(const{row:i,cell:r,cellHeight:l}of new h(e)){if(l<2)continue;const e=i<t?t:o;if(i+l>e){const t=e-i;n.push({cell:r,rowspan:t})}}return n}(e);if(n.length){o=!0;for(const e of n)r("rowspan",e.rowspan,e.cell,t,1)}return o}function be(e,t){let o=!1;const n=function(e){const t=new Array(e.childCount).fill(0);for(const{rowIndex:o}of new h(e,{includeAllSlots:!0}))t[o]++;return t}(e),i=[];for(const[t,o]of n.entries())!o&&e.getChild(t).is("element","tableRow")&&i.push(t);if(i.length){o=!0;for(const o of i.reverse())t.remove(e.getChild(o)),n.splice(o,1)}const r=n.filter((t,o)=>e.getChild(o).is("element","tableRow")),s=r[0];if(!r.every(e=>e===s)){const n=r.reduce((e,t)=>t>e?t:e,0);for(const[i,s]of r.entries()){const r=n-s;if(r){for(let o=0;o<r;o++)l(t,t.createPositionAt(e.getChild(i),"end"));o=!0}}}return o}function me(e){const t="attribute"===e.type,o=e.attributeKey;return t&&("headingRows"===o||"colspan"===o||"rowspan"===o)}function ge(e){e.document.registerPostFixer(t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o)"insert"==t.type&&"table"==t.name&&(n=pe(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableRow"==t.name&&(n=fe(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableCell"==t.name&&(n=we(t.position.nodeAfter,e)||n),_e(t)&&(n=we(t.position.parent,e)||n);return n}(t,e))}function pe(e,t){let o=!1;for(const n of e.getChildren())n.is("element","tableRow")&&(o=fe(n,t)||o);return o}function fe(e,t){let o=!1;for(const n of e.getChildren())o=we(n,t)||o;return o}function we(e,t){if(0==e.childCount)return t.insertElement("paragraph",e),!0;const o=Array.from(e.getChildren()).filter(e=>e.is("$text"));for(const e of o)t.wrap(t.createRangeOn(e),"paragraph");return!!o.length}function _e(e){return!(!e.position||!e.position.parent.is("element","tableCell"))&&("insert"==e.type&&"$text"==e.name||"remove"==e.type)}function ke(e,t){e.document.registerPostFixer(()=>function(e,t){const o=new Set;for(const t of e.getChanges()){const e="attribute"==t.type?t.range.start.parent:t.position.parent;e.is("element","tableCell")&&o.add(e)}for(const n of o.values())for(const o of[...n.getChildren()].filter(e=>ve(e,t)))e.refreshItem(o);return!1}(e.document.differ,t))}function ve(e,t){if(!e.is("element","paragraph"))return!1;const o=t.toViewElement(e);return!!o&&p(e)!==o.is("element","span")}function Ce(e){e.document.registerPostFixer(()=>function(e){const t=e.document.differ,o=new Set;for(const e of t.getChanges())if("attribute"===e.type){const t=e.range.start.nodeAfter;t&&t.is("element","table")&&"headingRows"===e.attributeKey&&o.add(t)}else if("insert"===e.type||"remove"===e.type)if("tableRow"===e.name){const t=e.position.findAncestor("table"),n=t.getAttribute("headingRows")||0;e.position.offset<n&&o.add(t)}else if("tableCell"===e.name){const t=e.position.findAncestor("table"),n=t.getAttribute("headingColumns")||0;e.position.offset<n&&o.add(t)}if(o.size){for(const e of o.values())t.refreshItem(e);return!0}return!1}(e))}o(11);class ye extends n.Plugin{static get pluginName(){return"TableEditing"}init(){const e=this.editor,t=e.model,o=t.schema,n=e.conversion;o.register("table",{allowWhere:"$block",allowAttributes:["headingRows","headingColumns"],isObject:!0,isBlock:!0}),o.register("tableRow",{allowIn:"table",isLimit:!0}),o.register("tableCell",{allowIn:"tableRow",allowChildren:"$block",allowAttributes:["colspan","rowspan"],isLimit:!0,isSelectable:!0}),n.for("upcast").add(e=>{e.on("element:figure",(e,t,o)=>{if(!o.consumable.test(t.viewItem,{name:!0,classes:"table"}))return;const n=function(e){for(const t of e.getChildren())if(t.is("element","table"))return t}(t.viewItem);if(!n||!o.consumable.test(n,{name:!0}))return;const i=o.convertItem(n,t.modelCursor),r=Object(a.first)(i.modelRange.getItems());r&&(o.consumable.consume(t.viewItem,{name:!0,classes:"table"}),o.convertChildren(t.viewItem,o.writer.createPositionAt(r,"end")),o.updateConversionResult(r,t))})}),n.for("upcast").add(c()),n.for("editingDowncast").add(m({asWidget:!0})),n.for("dataDowncast").add(m()),n.for("upcast").elementToElement({model:"tableRow",view:"tr"}),n.for("upcast").add(e=>{e.on("element:tr",(e,t)=>{t.viewItem.isEmpty&&0==t.modelCursor.index&&e.stop()},{priority:"high"})}),n.for("editingDowncast").add(e=>e.on("insert:tableRow",(e,t,o)=>{const n=t.item;if(!o.consumable.consume(n,"insert"))return;const i=n.parent,r=function(e){for(const t of e.getChildren())if("table"===t.name)return t}(o.mapper.toViewElement(i)),l=i.getChildIndex(n),s=new h(i,{row:l}),a={headingRows:i.getAttribute("headingRows")||0,headingColumns:i.getAttribute("headingColumns")||0},c=new Map;for(const e of s){const t=c.get(l)||_(r,n,l,a,o);c.set(l,t),o.consumable.consume(e.cell,"insert"),w(e,a,o.writer.createPositionAt(t,"end"),o,{asWidget:!0})}})),n.for("editingDowncast").add(e=>e.on("remove:tableRow",(e,t,o)=>{e.stop();const n=o.writer,i=o.mapper,r=i.toViewPosition(t.position).getLastMatchingPosition(e=>!e.item.is("element","tr")).nodeAfter,l=r.parent.parent,s=n.createRangeOn(r),a=n.remove(s);for(const e of n.createRangeIn(a).getItems())i.unbindViewElement(e);C("thead",l,o),C("tbody",l,o)},{priority:"higher"})),n.for("upcast").elementToElement({model:"tableCell",view:"td"}),n.for("upcast").elementToElement({model:"tableCell",view:"th"}),n.for("upcast").add(d("td")),n.for("upcast").add(d("th")),n.for("editingDowncast").add(e=>e.on("insert:tableCell",(e,t,o)=>{const n=t.item;if(!o.consumable.consume(n,"insert"))return;const i=n.parent,r=i.parent,l=r.getChildIndex(i),s=new h(r,{row:l}),a={headingRows:r.getAttribute("headingRows")||0,headingColumns:r.getAttribute("headingColumns")||0};for(const e of s)if(e.cell===n){const t=o.mapper.toViewElement(i);return void w(e,a,o.writer.createPositionAt(t,i.getChildIndex(n)),o,{asWidget:!0})}})),n.for("editingDowncast").elementToElement({model:"paragraph",view:g,converterPriority:"high"}),n.for("downcast").attributeToAttribute({model:"colspan",view:"colspan"}),n.for("upcast").attributeToAttribute({model:{key:"colspan",value:Te("colspan")},view:"colspan"}),n.for("downcast").attributeToAttribute({model:"rowspan",view:"rowspan"}),n.for("upcast").attributeToAttribute({model:{key:"rowspan",value:Te("rowspan")},view:"rowspan"}),n.for("editingDowncast").add(e=>e.on("attribute:headingColumns:table",(e,t,o)=>{const n=t.item;if(!o.consumable.consume(t.item,e.name))return;const i={headingRows:n.getAttribute("headingRows")||0,headingColumns:n.getAttribute("headingColumns")||0},r=t.attributeOldValue,l=t.attributeNewValue,s=(r>l?r:l)-1;for(const e of new h(n,{endColumn:s}))f(e,i,o)})),e.data.mapper.on("modelToViewPosition",(e,t)=>{const o=t.modelPosition.parent,n=t.modelPosition.nodeBefore;if(!o.is("element","tableCell"))return;if(!n||!n.is("element","paragraph"))return;const i=t.mapper.toViewElement(n),r=t.mapper.toViewElement(o);i===r&&(t.viewPosition=t.mapper.findPositionIn(r,n.maxOffset))}),e.config.define("table.defaultHeadings.rows",0),e.config.define("table.defaultHeadings.columns",0),e.commands.add("insertTable",new T(e)),e.commands.add("insertTableRowAbove",new L(e,{order:"above"})),e.commands.add("insertTableRowBelow",new L(e,{order:"below"})),e.commands.add("insertTableColumnLeft",new N(e,{order:"left"})),e.commands.add("insertTableColumnRight",new N(e,{order:"right"})),e.commands.add("removeTableRow",new Y(e)),e.commands.add("removeTableColumn",new Q(e)),e.commands.add("splitTableCellVertically",new z(e,{direction:"vertically"})),e.commands.add("splitTableCellHorizontally",new z(e,{direction:"horizontally"})),e.commands.add("mergeTableCells",new re(e)),e.commands.add("mergeTableCellRight",new J(e,{direction:"right"})),e.commands.add("mergeTableCellLeft",new J(e,{direction:"left"})),e.commands.add("mergeTableCellDown",new J(e,{direction:"down"})),e.commands.add("mergeTableCellUp",new J(e,{direction:"up"})),e.commands.add("setTableColumnHeader",new ee(e)),e.commands.add("setTableRowHeader",new Z(e)),e.commands.add("selectTableRow",new ce(e)),e.commands.add("selectTableColumn",new de(e)),Ce(t),ue(t),ke(t,e.editing.mapper),ge(t)}static get requires(){return[te]}}function Te(e){return t=>{const o=parseInt(t.getAttribute(e));return Number.isNaN(o)||o<=0?null:o}}var xe=o(0);o(13);class Ae extends xe.View{constructor(e){super(e);const t=this.bindTemplate;this.items=this._createGridCollection(),this.set("rows",0),this.set("columns",0),this.bind("label").to(this,"columns",this,"rows",(e,t)=>`${t} × ${e}`),this.setTemplate({tag:"div",attributes:{class:["ck"]},children:[{tag:"div",attributes:{class:["ck-insert-table-dropdown__grid"]},on:{"mouseover@.ck-insert-table-dropdown-grid-box":t.to("boxover")},children:this.items},{tag:"div",attributes:{class:["ck-insert-table-dropdown__label"]},children:[{text:t.to("label")}]}],on:{mousedown:t.to(e=>{e.preventDefault()}),click:t.to(()=>{this.fire("execute")})}}),this.on("boxover",(e,t)=>{const{row:o,column:n}=t.target.dataset;this.set({rows:parseInt(o),columns:parseInt(n)})}),this.on("change:columns",()=>{this._highlightGridBoxes()}),this.on("change:rows",()=>{this._highlightGridBoxes()})}focus(){}focusLast(){}_highlightGridBoxes(){const e=this.rows,t=this.columns;this.items.map((o,n)=>{const i=Math.floor(n/10)<e&&n%10<t;o.set("isOn",i)})}_createGridCollection(){const e=[];for(let t=0;t<100;t++){const o=Math.floor(t/10),n=t%10;e.push(new Ve(this.locale,o+1,n+1))}return this.createCollection(e)}}class Ve extends xe.View{constructor(e,t,o){super(e);const n=this.bindTemplate;this.set("isOn",!1),this.setTemplate({tag:"div",attributes:{class:["ck-insert-table-dropdown-grid-box",n.if("isOn","ck-on")],"data-row":t,"data-column":o}})}}class Se extends n.Plugin{static get pluginName(){return"TableUI"}init(){const e=this.editor,t=this.editor.t,o="ltr"===e.locale.contentLanguageDirection;e.ui.componentFactory.add("insertTable",o=>{const n=e.commands.get("insertTable"),i=Object(xe.createDropdown)(o);let r;return i.bind("isEnabled").to(n),i.buttonView.set({icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 6v3h4V6H3zm0 4v3h4v-3H3zm0 4v3h4v-3H3zm5 3h4v-3H8v3zm5 0h4v-3h-4v3zm4-4v-3h-4v3h4zm0-4V6h-4v3h4zm1.5 8a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 17V4c.222-.863 1.068-1.5 2-1.5h13c.932 0 1.778.637 2 1.5v13zM12 13v-3H8v3h4zm0-4V6H8v3h4z"/></svg>',label:t("Insert table"),tooltip:!0}),i.on("change:isOpen",()=>{r||(r=new Ae(o),i.panelView.children.add(r),r.delegate("execute").to(i),i.buttonView.on("open",()=>{r.rows=0,r.columns=0}),i.on("execute",()=>{e.execute("insertTable",{rows:r.rows,columns:r.columns}),e.editing.view.focus()}))}),i}),e.ui.componentFactory.add("tableColumn",e=>{const n=[{type:"switchbutton",model:{commandName:"setTableColumnHeader",label:t("Header column"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:o?"insertTableColumnLeft":"insertTableColumnRight",label:t("Insert column left")}},{type:"button",model:{commandName:o?"insertTableColumnRight":"insertTableColumnLeft",label:t("Insert column right")}},{type:"button",model:{commandName:"removeTableColumn",label:t("Delete column")}},{type:"button",model:{commandName:"selectTableColumn",label:t("Select column")}}];return this._prepareDropdown(t("Column"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M18 7v1H2V7h16zm0 5v1H2v-1h16z" opacity=".6"/><path d="M14 1v18a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1zm-2 1H8v4h4V2zm0 6H8v4h4V8zm0 6H8v4h4v-4z"/></svg>',n,e)}),e.ui.componentFactory.add("tableRow",e=>{const o=[{type:"switchbutton",model:{commandName:"setTableRowHeader",label:t("Header row"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:"insertTableRowAbove",label:t("Insert row above")}},{type:"button",model:{commandName:"insertTableRowBelow",label:t("Insert row below")}},{type:"button",model:{commandName:"removeTableRow",label:t("Delete row")}},{type:"button",model:{commandName:"selectTableRow",label:t("Select row")}}];return this._prepareDropdown(t("Row"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v16h-1V2z" opacity=".6"/><path d="M1 6h18a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm1 2v4h4V8H2zm6 0v4h4V8H8zm6 0v4h4V8h-4z"/></svg>',o,e)}),e.ui.componentFactory.add("mergeTableCells",e=>{const n=[{type:"button",model:{commandName:"mergeTableCellUp",label:t("Merge cell up")}},{type:"button",model:{commandName:o?"mergeTableCellRight":"mergeTableCellLeft",label:t("Merge cell right")}},{type:"button",model:{commandName:"mergeTableCellDown",label:t("Merge cell down")}},{type:"button",model:{commandName:o?"mergeTableCellLeft":"mergeTableCellRight",label:t("Merge cell left")}},{type:"separator"},{type:"button",model:{commandName:"splitTableCellVertically",label:t("Split cell vertically")}},{type:"button",model:{commandName:"splitTableCellHorizontally",label:t("Split cell horizontally")}}];return this._prepareMergeSplitButtonDropdown(t("Merge cells"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v7h-1V2zm6 5v1H2V7h16zM8 12v1H2v-1h6z" opacity=".6"/><path d="M7 7h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm1 2v9h10V9H8z"/></svg>',n,e)})}_prepareDropdown(e,t,o,n){const i=this.editor,r=Object(xe.createDropdown)(n),l=this._fillDropdownWithListOptions(r,o);return r.buttonView.set({label:e,icon:t,tooltip:!0}),r.bind("isEnabled").toMany(l,"isEnabled",(...e)=>e.some(e=>e)),this.listenTo(r,"execute",e=>{i.execute(e.source.commandName),i.editing.view.focus()}),r}_prepareMergeSplitButtonDropdown(e,t,o,n){const i=this.editor,r=Object(xe.createDropdown)(n,xe.SplitButtonView),l=i.commands.get("mergeTableCells"),s=this._fillDropdownWithListOptions(r,o);return r.buttonView.set({label:e,icon:t,tooltip:!0,isEnabled:!0}),r.bind("isEnabled").toMany([l,...s],"isEnabled",(...e)=>e.some(e=>e)),this.listenTo(r.buttonView,"execute",()=>{i.execute("mergeTableCells"),i.editing.view.focus()}),this.listenTo(r,"execute",e=>{i.execute(e.source.commandName),i.editing.view.focus()}),r}_fillDropdownWithListOptions(e,t){const o=this.editor,n=[],i=new a.Collection;for(const e of t)Re(e,o,n,i);return Object(xe.addListToDropdown)(e,i,o.ui.componentFactory),n}}function Re(e,t,o,n){const i=e.model=new xe.Model(e.model),{commandName:r,bindIsOn:l}=e.model;if("button"===e.type||"switchbutton"===e.type){const e=t.commands.get(r);o.push(e),i.set({commandName:r}),i.bind("isEnabled").to(e),l&&i.bind("isOn").to(e,"value")}i.set({withText:!0}),n.add(e)}o(15);class Ie extends n.Plugin{static get pluginName(){return"TableSelection"}static get requires(){return[te]}init(){const e=this.editor.model;this.listenTo(e,"deleteContent",(e,t)=>this._handleDeleteContent(e,t),{priority:"high"}),this._defineSelectionConverter(),this._enablePluginDisabling()}getSelectedTableCells(){const e=x(this.editor.model.document.selection);return 0==e.length?null:e}getSelectionAsFragment(){const e=this.getSelectedTableCells();return e?this.editor.model.change(t=>{const o=t.createDocumentFragment(),n=this.editor.plugins.get("TableUtils"),{first:i,last:r}=R(e),{first:l,last:s}=S(e),a=e[0].findAncestor("table");let c=s,d=r;if(I(e,n)){const e={firstColumn:i,lastColumn:r,firstRow:l,lastRow:s};c=q(a,e),d=G(a,e)}const u=M(a,{startRow:l,startColumn:i,endRow:c,endColumn:d},t);return t.insert(u,o,0),o}):null}setCellSelection(e,t){const o=this._getCellsToSelect(e,t);this.editor.model.change(e=>{e.setSelection(o.cells.map(t=>e.createRangeOn(t)),{backward:o.backward})})}getFocusCell(){const e=[...this.editor.model.document.selection.getRanges()].pop().getContainedElement();return e&&e.is("element","tableCell")?e:null}getAnchorCell(){const e=this.editor.model.document.selection,t=Object(a.first)(e.getRanges()).getContainedElement();return t&&t.is("element","tableCell")?t:null}_defineSelectionConverter(){const e=this.editor,t=new Set;e.conversion.for("editingDowncast").add(e=>e.on("selection",(e,o,n)=>{const i=n.writer;!function(e){for(const o of t)e.removeClass("ck-editor__editable_selected",o);t.clear()}(i);const r=this.getSelectedTableCells();if(!r)return;for(const e of r){const o=n.mapper.toViewElement(e);i.addClass("ck-editor__editable_selected",o),t.add(o)}const l=n.mapper.toViewElement(r[r.length-1]);i.setSelection(l,0)},{priority:"lowest"}))}_enablePluginDisabling(){const e=this.editor;this.on("change:isEnabled",()=>{if(!this.isEnabled){const t=this.getSelectedTableCells();if(!t)return;e.model.change(o=>{const n=o.createPositionAt(t[0],0),i=e.model.schema.getNearestSelectionRange(n);o.setSelection(i)})}})}_handleDeleteContent(e,t){const[o,n]=t,i=this.editor.model,r=!n||"backward"==n.direction,l=x(o);l.length&&(e.stop(),i.change(e=>{const t=l[r?l.length-1:0];i.change(e=>{for(const t of l)i.deleteContent(e.createSelection(t,"in"))});const n=i.schema.getNearestSelectionRange(e.createPositionAt(t,0));o.is("documentSelection")?e.setSelection(n):o.setTo(n)}))}_getCellsToSelect(e,t){const o=this.editor.plugins.get("TableUtils"),n=o.getCellLocation(e),i=o.getCellLocation(t),r=Math.min(n.row,i.row),l=Math.max(n.row,i.row),s=Math.min(n.column,i.column),a=Math.max(n.column,i.column),c=new Array(l-r+1).fill(null).map(()=>[]),d={startRow:r,endRow:l,startColumn:s,endColumn:a};for(const{row:t,cell:o}of new h(e.findAncestor("table"),d))c[t-r].push(o);const u=i.row<n.row,b=i.column<n.column;return u&&c.reverse(),b&&c.forEach(e=>e.reverse()),{cells:c.flat(),backward:u||b}}}class Pe extends n.Plugin{static get pluginName(){return"TableClipboard"}static get requires(){return[Ie,te]}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"copy",(e,t)=>this._onCopyCut(e,t)),this.listenTo(t,"cut",(e,t)=>this._onCopyCut(e,t)),this.listenTo(e.model,"insertContent",(e,t)=>this._onInsertContent(e,...t),{priority:"high"}),this.decorate("_replaceTableSlotCell")}_onCopyCut(e,t){const o=this.editor.plugins.get(Ie);if(!o.getSelectedTableCells())return;if("cut"==e.name&&this.editor.isReadOnly)return;t.preventDefault(),e.stop();const n=this.editor.data,i=this.editor.editing.view.document,r=n.toView(o.getSelectionAsFragment());i.fire("clipboardOutput",{dataTransfer:t.dataTransfer,content:r,method:e.name})}_onInsertContent(e,t,o){if(o&&!o.is("documentSelection"))return;const n=this.editor.model,i=this.editor.plugins.get(te);let r=function(e,t){if(!e.is("documentFragment")&&!e.is("element"))return null;if(e.is("element","table"))return e;if(1==e.childCount&&e.getChild(0).is("element","table"))return e.getChild(0);const o=t.createRangeIn(e);for(const e of o.getItems())if(e.is("element","table")){const n=t.createRange(o.start,t.createPositionBefore(e));if(t.hasContent(n,{ignoreWhitespaces:!0}))return null;const i=t.createRange(t.createPositionAfter(e),o.end);return t.hasContent(i,{ignoreWhitespaces:!0})?null:e}return null}(t,n);if(!r)return;const l=V(n.document.selection);l.length?(e.stop(),n.change(e=>{const t={width:i.getColumns(r),height:i.getRows(r)},o=function(e,t,o,n){const i=e[0].findAncestor("table"),r=R(e),l=S(e),s={firstColumn:r.first,lastColumn:r.last,firstRow:l.first,lastRow:l.last},a=1===e.length;a&&(s.lastRow+=t.height-1,s.lastColumn+=t.width-1,function(e,t,o,n){const i=n.getColumns(e),r=n.getRows(e);o>i&&n.insertColumns(e,{at:i,columns:o-i});t>r&&n.insertRows(e,{at:r,rows:t-r})}(i,s.lastRow+1,s.lastColumn+1,n));a||!I(e,n)?function(e,t,o){const{firstRow:n,lastRow:i,firstColumn:r,lastColumn:l}=t,s={first:n,last:i},a={first:r,last:l};Be(e,r,s,o),Be(e,l+1,s,o),Ee(e,n,a,o),Ee(e,i+1,a,o,n)}(i,s,o):(s.lastRow=q(i,s),s.lastColumn=G(i,s));return s}(l,t,e,i),n=o.lastRow-o.firstRow+1,s=o.lastColumn-o.firstColumn+1,a={startRow:0,startColumn:0,endRow:Math.min(n,t.height)-1,endColumn:Math.min(s,t.width)-1};r=M(r,a,e);const c=l[0].findAncestor("table"),d=this._replaceSelectedCellsWithPasted(r,t,c,o,e);if(this.editor.plugins.get("TableSelection").isEnabled){const t=P(d.map(t=>e.createRangeOn(t)));e.setSelection(t)}else e.setSelection(d[0],0)})):$(r,i)}_replaceSelectedCellsWithPasted(e,t,o,n,i){const{width:r,height:l}=t,s=function(e,t,o){const n=new Array(o).fill(null).map(()=>new Array(t).fill(null));for(const{column:t,row:o,cell:i}of new h(e))n[o][t]=i;return n}(e,r,l),a=[...new h(o,{startRow:n.firstRow,endRow:n.lastRow,startColumn:n.firstColumn,endColumn:n.lastColumn,includeAllSlots:!0})],c=[];let d;for(const e of a){const{row:t,column:o}=e;o===n.firstColumn&&(d=e.getPositionBefore());const a=t-n.firstRow,u=o-n.firstColumn,h=s[a%l][u%r],b=h?i.cloneElement(h):null,m=this._replaceTableSlotCell(e,b,d,i);m&&(j(m,t,o,n.lastRow,n.lastColumn,i),c.push(m),d=i.createPositionAfter(m))}const u=parseInt(o.getAttribute("headingRows")||0),b=parseInt(o.getAttribute("headingColumns")||0),m=n.firstRow<u&&u<=n.lastRow,g=n.firstColumn<b&&b<=n.lastColumn;if(m){const e=Ee(o,u,{first:n.firstColumn,last:n.lastColumn},i,n.firstRow);c.push(...e)}if(g){const e=Be(o,b,{first:n.firstRow,last:n.lastRow},i);c.push(...e)}return c}_replaceTableSlotCell(e,t,o,n){const{cell:i,isAnchor:r}=e;return r&&n.remove(i),t?(n.insert(t,o),t):null}}function Ee(e,t,o,n,i=0){if(t<1)return;return F(e,t,i).filter(({column:e,cellWidth:t})=>Oe(e,t,o)).map(({cell:e})=>H(e,t,n))}function Be(e,t,o,n){if(t<1)return;return D(e,t).filter(({row:e,cellHeight:t})=>Oe(e,t,o)).map(({cell:e,column:o})=>W(e,o,t,n))}function Oe(e,t,o){const n=e+t-1,{first:i,last:r}=o;return e>=i&&e<=r||e<i&&n>=i}class Le extends n.Plugin{static get pluginName(){return"TableKeyboard"}static get requires(){return[Ie]}init(){const e=this.editor.editing.view.document;this.editor.keystrokes.set("Tab",(...e)=>this._handleTabOnSelectedTable(...e),{priority:"low"}),this.editor.keystrokes.set("Tab",this._getTabHandler(!0),{priority:"low"}),this.editor.keystrokes.set("Shift+Tab",this._getTabHandler(!1),{priority:"low"}),this.listenTo(e,"arrowKey",(...e)=>this._onArrowKey(...e),{context:"table"})}_handleTabOnSelectedTable(e,t){const o=this.editor,n=o.model.document.selection.getSelectedElement();n&&n.is("element","table")&&(t(),o.model.change(e=>{e.setSelection(e.createRangeIn(n.getChild(0).getChild(0)))}))}_getTabHandler(e){const t=this.editor;return(o,n)=>{let i=A(t.model.document.selection)[0];if(i||(i=this.editor.plugins.get("TableSelection").getFocusCell()),!i)return;n();const r=i.parent,l=r.parent,s=l.getChildIndex(r),a=r.getChildIndex(i),c=0===a;if(!e&&c&&0===s)return void t.model.change(e=>{e.setSelection(e.createRangeOn(l))});const d=this.editor.plugins.get("TableUtils"),u=a===r.childCount-1,h=s===d.getRows(l)-1;if(e&&h&&u&&(t.execute("insertTableRowBelow"),s===d.getRows(l)-1))return void t.model.change(e=>{e.setSelection(e.createRangeOn(l))});let b;if(e&&u){const e=l.getChild(s+1);b=e.getChild(0)}else if(!e&&c){const e=l.getChild(s-1);b=e.getChild(e.childCount-1)}else b=r.getChild(a+(e?1:-1));t.model.change(e=>{e.setSelection(e.createRangeIn(b))})}}_onArrowKey(e,t){const o=this.editor,n=t.keyCode,i=Object(a.getLocalizedArrowKeyCodeDirection)(n,o.locale.contentLanguageDirection);this._handleArrowKeys(i,t.shiftKey)&&(t.preventDefault(),t.stopPropagation(),e.stop())}_handleArrowKeys(e,t){const o=this.editor.model,n=o.document.selection,i=["right","down"].includes(e),r=x(n);if(r.length){let o;return o=t?this.editor.plugins.get("TableSelection").getFocusCell():i?r[r.length-1]:r[0],this._navigateFromCellInDirection(o,e,t),!0}const l=n.focus.findAncestor("tableCell");if(!l)return!1;if(!n.isCollapsed)if(t){if(n.isBackward==i&&!n.containsEntireContent(l))return!1}else{const e=n.getSelectedElement();if(!e||!o.schema.isObject(e))return!1}return!!this._isSelectionAtCellEdge(n,l,i)&&(this._navigateFromCellInDirection(l,e,t),!0)}_isSelectionAtCellEdge(e,t,o){const n=this.editor.model,i=this.editor.model.schema,r=o?e.getLastPosition():e.getFirstPosition();if(!i.getLimitElement(r).is("element","tableCell")){return n.createPositionAt(t,o?"end":0).isTouching(r)}const l=n.createSelection(r);return n.modifySelection(l,{direction:o?"forward":"backward"}),r.isEqual(l.focus)}_navigateFromCellInDirection(e,t,o=!1){const n=this.editor.model,i=e.findAncestor("table"),r=[...new h(i,{includeAllSlots:!0})],{row:l,column:s}=r[r.length-1],a=r.find(({cell:t})=>t==e);let{row:c,column:d}=a;switch(t){case"left":d--;break;case"up":c--;break;case"right":d+=a.cellWidth;break;case"down":c+=a.cellHeight}if(c<0||c>l||d<0&&c<=0||d>s&&c>=l)return void n.change(e=>{e.setSelection(e.createRangeOn(i))});d<0?(d=o?0:s,c--):d>s&&(d=o?s:0,c++);const u=r.find(e=>e.row==c&&e.column==d).cell,b=["right","down"].includes(t),m=this.editor.plugins.get("TableSelection");if(o&&m.isEnabled){const t=m.getAnchorCell()||e;m.setCellSelection(t,u)}else{const e=n.createPositionAt(u,b?0:"end");n.change(t=>{t.setSelection(e)})}}}var Ne=o(3);class ze extends Ne.DomEventObserver{constructor(e){super(e),this.domEventType=["mousemove","mouseleave"]}onDomEvent(e){this.fire(e.type,e)}}class Me extends n.Plugin{static get pluginName(){return"TableMouse"}static get requires(){return[Ie]}init(){this.editor.editing.view.addObserver(ze),this._enableShiftClickSelection(),this._enableMouseDragSelection()}_enableShiftClickSelection(){const e=this.editor;let t=!1;const o=e.plugins.get(Ie);this.listenTo(e.editing.view.document,"mousedown",(n,i)=>{if(!this.isEnabled||!o.isEnabled)return;if(!i.domEvent.shiftKey)return;const r=o.getAnchorCell()||A(e.model.document.selection)[0];if(!r)return;const l=this._getModelTableCellFromDomEvent(i);l&&Fe(r,l)&&(t=!0,o.setCellSelection(r,l),i.preventDefault())}),this.listenTo(e.editing.view.document,"mouseup",()=>{t=!1}),this.listenTo(e.editing.view.document,"selectionChange",e=>{t&&e.stop()},{priority:"highest"})}_enableMouseDragSelection(){const e=this.editor;let t,o,n=!1,i=!1;const r=e.plugins.get(Ie);this.listenTo(e.editing.view.document,"mousedown",(e,o)=>{this.isEnabled&&r.isEnabled&&(o.domEvent.shiftKey||o.domEvent.ctrlKey||o.domEvent.altKey||(t=this._getModelTableCellFromDomEvent(o)))}),this.listenTo(e.editing.view.document,"mousemove",(e,l)=>{if(!l.domEvent.buttons)return;if(!t)return;const s=this._getModelTableCellFromDomEvent(l);s&&Fe(t,s)&&(o=s,n||o==t||(n=!0)),n&&(i=!0,r.setCellSelection(t,o),l.preventDefault())}),this.listenTo(e.editing.view.document,"mouseup",()=>{n=!1,i=!1,t=null,o=null}),this.listenTo(e.editing.view.document,"selectionChange",e=>{i&&e.stop()},{priority:"highest"})}_getModelTableCellFromDomEvent(e){const t=e.target,o=this.editor.editing.view.createPositionAt(t,0);return this.editor.editing.mapper.toModelPosition(o).parent.findAncestor("tableCell",{includeSelf:!0})}}function Fe(e,t){return e.parent.parent==t.parent.parent}o(17);class He extends n.Plugin{static get requires(){return[ye,Se,Ie,Me,Le,Pe,i.Widget]}static get pluginName(){return"Table"}}function De(e){const t=e.getSelectedElement();return t&&je(t)?t:null}function We(e){let t=e.getFirstPosition().parent;for(;t;){if(t.is("element")&&je(t))return t;t=t.parent}return null}function je(e){return!!e.getCustomProperty("table")&&Object(i.isWidget)(e)}class Ue extends n.Plugin{static get requires(){return[i.WidgetToolbarRepository]}static get pluginName(){return"TableToolbar"}afterInit(){const e=this.editor,t=e.t,o=e.plugins.get(i.WidgetToolbarRepository),n=e.config.get("table.contentToolbar"),r=e.config.get("table.tableToolbar");n&&o.register("tableContent",{ariaLabel:t("Table toolbar"),items:n,getRelatedElement:We}),r&&o.register("table",{ariaLabel:t("Table toolbar"),items:r,getRelatedElement:De})}}o(19);class Ke extends xe.View{constructor(e,t){super(e);const o=this.bindTemplate;this.set("value",""),this.set("id"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("isFocused",!1),this.set("isEmpty",!0),this.set("ariaDescribedById"),this.options=t,this._dropdownView=this._createDropdownView(),this._inputView=this._createInputTextView(),this._stillTyping=!1,this.setTemplate({tag:"div",attributes:{class:["ck","ck-input-color",o.if("hasError","ck-error")],id:o.to("id"),"aria-invalid":o.if("hasError",!0),"aria-describedby":o.to("ariaDescribedById")},children:[this._dropdownView,this._inputView]}),this.on("change:value",(e,t,o)=>this._setInputValue(o))}focus(){this._inputView.focus()}_createDropdownView(){const e=this.locale,t=e.t,o=this.bindTemplate,n=this._createColorGrid(e),i=Object(xe.createDropdown)(e),r=new xe.View,l=this._createRemoveColorButton();return r.setTemplate({tag:"span",attributes:{class:["ck","ck-input-color__button__preview"],style:{backgroundColor:o.to("value")}},children:[{tag:"span",attributes:{class:["ck","ck-input-color__button__preview__no-color-indicator",o.if("value","ck-hidden",e=>""!=e)]}}]}),i.buttonView.extendTemplate({attributes:{class:"ck-input-color__button"}}),i.buttonView.children.add(r),i.buttonView.tooltip=t("Color picker"),i.panelPosition="rtl"===e.uiLanguageDirection?"se":"sw",i.panelView.children.add(l),i.panelView.children.add(n),i.bind("isEnabled").to(this,"isReadOnly",e=>!e),i}_createInputTextView(){const e=this.locale,t=new xe.InputTextView(e);return t.extendTemplate({on:{blur:t.bindTemplate.to("blur")}}),t.value=this.value,t.bind("isReadOnly","hasError").to(this),this.bind("isFocused","isEmpty").to(t),t.on("input",()=>{const e=t.element.value,o=this.options.colorDefinitions.find(t=>e===t.label);this._stillTyping=!0,this.value=o&&o.color||e}),t.on("blur",()=>{this._stillTyping=!1,this._setInputValue(t.element.value)}),t.delegate("input").to(this),t}_createRemoveColorButton(){const e=this.locale,t=e.t,o=new xe.ButtonView(e),i=this.options.defaultColorValue||"",r=t(i?"Restore default":"Remove color");return o.class="ck-input-color__remove-color",o.withText=!0,o.icon=n.icons.eraser,o.label=r,o.on("execute",()=>{this.value=i,this._dropdownView.isOpen=!1,this.fire("input")}),o}_createColorGrid(e){const t=new xe.ColorGridView(e,{colorDefinitions:this.options.colorDefinitions,columns:this.options.columns});return t.on("execute",(e,t)=>{this.value=t.value,this._dropdownView.isOpen=!1,this.fire("input")}),t.bind("selectedColor").to(this,"value"),t}_setInputValue(e){if(!this._stillTyping){const t=$e(e),o=this.options.colorDefinitions.find(e=>t===$e(e.color));this._inputView.value=o?o.label:e||""}}}function $e(e){return e.replace(/([(,])\s+/g,"$1").replace(/^\s+|\s+(?=[),\s]|$)/g,"").replace(/,|\s/g," ")}const qe=e=>""===e;function Ge(e){return{none:e("None"),solid:e("Solid"),dotted:e("Dotted"),dashed:e("Dashed"),double:e("Double"),groove:e("Groove"),ridge:e("Ridge"),inset:e("Inset"),outset:e("Outset")}}function Je(e){return e('The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".')}function Xe(e){return e('The value is invalid. Try "10px" or "2em" or simply "2".')}function Ye(e){return e=e.trim(),qe(e)||Object(Ne.isColor)(e)}function Qe(e){return e=e.trim(),qe(e)||it(e)||Object(Ne.isLength)(e)||Object(Ne.isPercentage)(e)}function Ze(e){return e=e.trim(),qe(e)||it(e)||Object(Ne.isLength)(e)}function et(e,t){const o=new a.Collection,n=Ge(e.t);for(const i in n){const r={type:"button",model:new xe.Model({_borderStyleValue:i,label:n[i],withText:!0})};"none"===i?r.model.bind("isOn").to(e,"borderStyle",e=>"none"===t?!e:e===i):r.model.bind("isOn").to(e,"borderStyle",e=>e===i),o.add(r)}return o}function tt(e){const{view:t,icons:o,toolbar:n,labels:i,propertyName:r,nameToValue:l,defaultValue:s}=e;for(const e in i){const a=new xe.ButtonView(t.locale);a.set({label:i[e],icon:o[e],tooltip:i[e]});const c=l?l(e):e;a.bind("isOn").to(t,r,e=>{let t=e;return""===e&&s&&(t=s),c===t}),a.on("execute",()=>{t[r]=c}),n.items.add(a)}}const ot=[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}];function nt(e){return(t,o,n)=>{const i=new Ke(t.locale,{colorDefinitions:(r=e.colorConfig,r.map(e=>({color:e.model,label:e.label,options:{hasBorder:e.hasBorder}}))),columns:e.columns,defaultColorValue:e.defaultColorValue});var r;return i.set({id:o,ariaDescribedById:n}),i.bind("isReadOnly").to(t,"isEnabled",e=>!e),i.bind("hasError").to(t,"errorText",e=>!!e),i.on("input",()=>{t.errorText=null}),t.bind("isEmpty","isFocused").to(i),i}}function it(e){const t=parseFloat(e);return!Number.isNaN(t)&&e===String(t)}o(21);class rt extends xe.View{constructor(e,t={}){super(e);const o=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach(e=>this.children.add(e)),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",o.to("class")],role:o.to("_role"),"aria-labelledby":o.to("_ariaLabelledBy")},children:this.children})}}o(8),o(9),o(25);const lt={left:n.icons.alignLeft,center:n.icons.alignCenter,right:n.icons.alignRight,justify:n.icons.alignJustify,top:n.icons.alignTop,middle:n.icons.alignMiddle,bottom:n.icons.alignBottom};class st extends xe.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",padding:"",backgroundColor:"",width:"",height:"",horizontalAlignment:"",verticalAlignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:r}=this._createBorderFields(),{backgroundRowLabel:l,backgroundInput:s}=this._createBackgroundFields(),{widthInput:c,operatorLabel:d,heightInput:u,dimensionsLabel:h}=this._createDimensionFields(),{horizontalAlignmentToolbar:b,verticalAlignmentToolbar:m,alignmentLabel:g}=this._createAlignmentFields();this.focusTracker=new a.FocusTracker,this.keystrokes=new a.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=s,this.paddingInput=this._createPaddingField(),this.widthInput=c,this.heightInput=u,this.horizontalAlignmentToolbar=b,this.verticalAlignmentToolbar=m;const{saveButtonView:p,cancelButtonView:f}=this._createActionButtons();this.saveButtonView=p,this.cancelButtonView=f,this._focusables=new xe.ViewCollection,this._focusCycler=new xe.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new xe.FormHeaderView(e,{label:this.t("Cell properties")})),this.children.add(new rt(e,{labelView:r,children:[r,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new rt(e,{labelView:l,children:[l,s],class:"ck-table-form__background-row"})),this.children.add(new rt(e,{children:[new rt(e,{labelView:h,children:[h,c,d,u],class:"ck-table-form__dimensions-row"}),new rt(e,{children:[this.paddingInput],class:"ck-table-cell-properties-form__padding-row"})]})),this.children.add(new rt(e,{labelView:g,children:[g,b,m],class:"ck-table-cell-properties-form__alignment-row"})),this.children.add(new rt(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-cell-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),Object(xe.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.paddingInput,this.horizontalAlignmentToolbar,this.verticalAlignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableCellProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=nt({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,r=new xe.LabelView(n);r.text=i("Border");const l=Ge(i),s=new xe.LabeledFieldView(n,xe.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",e=>l[e||"none"]),s.fieldView.on("execute",e=>{this.borderStyle=e.source._borderStyleValue}),s.bind("isEmpty").to(this,"borderStyle",e=>!e),Object(xe.addListToDropdown)(s.fieldView,et(this,t.style));const a=new xe.LabeledFieldView(n,xe.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",at),a.fieldView.on("input",()=>{this.borderWidth=a.fieldView.element.value});const c=new xe.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",at),c.fieldView.on("input",()=>{this.borderColor=c.fieldView.value}),this.on("change:borderStyle",(e,o,n,i)=>{at(n)||(this.borderColor="",this.borderWidth=""),at(i)||(this.borderColor=t.color,this.borderWidth=t.width)}),{borderRowLabel:r,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new xe.LabelView(e);o.text=t("Background");const n=nt({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableCellProperties.backgroundColor}),i=new xe.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-cell-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",()=>{this.backgroundColor=i.fieldView.value}),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new xe.LabelView(e);o.text=t("Dimensions");const n=new xe.LabeledFieldView(e,xe.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",()=>{this.width=n.fieldView.element.value});const i=new xe.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const r=new xe.LabeledFieldView(e,xe.createLabeledInputText);return r.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),r.fieldView.bind("value").to(this,"height"),r.fieldView.on("input",()=>{this.height=r.fieldView.element.value}),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:r}}_createPaddingField(){const e=this.locale,t=this.t,o=new xe.LabeledFieldView(e,xe.createLabeledInputText);return o.set({label:t("Padding"),class:"ck-table-cell-properties-form__padding"}),o.fieldView.bind("value").to(this,"padding"),o.fieldView.on("input",()=>{this.padding=o.fieldView.element.value}),o}_createAlignmentFields(){const e=this.locale,t=this.t,o=new xe.LabelView(e);o.text=t("Table cell text alignment");const n=new xe.ToolbarView(e),i="rtl"===this.locale.contentLanguageDirection;n.set({isCompact:!0,ariaLabel:t("Horizontal text alignment toolbar")}),tt({view:this,icons:lt,toolbar:n,labels:this._horizontalAlignmentLabels,propertyName:"horizontalAlignment",nameToValue:e=>{if(i){if("left"===e)return"right";if("right"===e)return"left"}return e},defaultValue:this.options.defaultTableCellProperties.horizontalAlignment});const r=new xe.ToolbarView(e);return r.set({isCompact:!0,ariaLabel:t("Vertical text alignment toolbar")}),tt({view:this,icons:lt,toolbar:r,labels:this._verticalAlignmentLabels,propertyName:"verticalAlignment",defaultValue:this.options.defaultTableCellProperties.verticalAlignment}),{horizontalAlignmentToolbar:n,verticalAlignmentToolbar:r,alignmentLabel:o}}_createActionButtons(){const e=this.locale,t=this.t,o=new xe.ButtonView(e),i=new xe.ButtonView(e),r=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.paddingInput];return o.set({label:t("Save"),icon:n.icons.check,class:"ck-button-save",type:"submit",withText:!0}),o.bind("isEnabled").toMany(r,"errorText",(...e)=>e.every(e=>!e)),i.set({label:t("Cancel"),icon:n.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:o,cancelButtonView:i}}get _horizontalAlignmentLabels(){const e=this.locale,t=this.t,o=t("Align cell text to the left"),n=t("Align cell text to the center"),i=t("Align cell text to the right"),r=t("Justify cell text");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o,justify:r}:{left:o,center:n,right:i,justify:r}}get _verticalAlignmentLabels(){const e=this.t;return{top:e("Align cell text to the top"),middle:e("Align cell text to the middle"),bottom:e("Align cell text to the bottom")}}}function at(e){return"none"!==e}var ct=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},dt=o(10),ut="object"==typeof self&&self&&self.Object===Object&&self,ht=dt.a||ut||Function("return this")(),bt=function(){return ht.Date.now()},mt=/\s/;var gt=function(e){for(var t=e.length;t--&&mt.test(e.charAt(t)););return t},pt=/^\s+/;var ft=function(e){return e?e.slice(0,gt(e)+1).replace(pt,""):e},wt=ht.Symbol,_t=Object.prototype,kt=_t.hasOwnProperty,vt=_t.toString,Ct=wt?wt.toStringTag:void 0;var yt=function(e){var t=kt.call(e,Ct),o=e[Ct];try{e[Ct]=void 0;var n=!0}catch(e){}var i=vt.call(e);return n&&(t?e[Ct]=o:delete e[Ct]),i},Tt=Object.prototype.toString;var xt=function(e){return Tt.call(e)},At=wt?wt.toStringTag:void 0;var Vt=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":At&&At in Object(e)?yt(e):xt(e)};var St=function(e){return null!=e&&"object"==typeof e};var Rt=function(e){return"symbol"==typeof e||St(e)&&"[object Symbol]"==Vt(e)},It=/^[-+]0x[0-9a-f]+$/i,Pt=/^0b[01]+$/i,Et=/^0o[0-7]+$/i,Bt=parseInt;var Ot=function(e){if("number"==typeof e)return e;if(Rt(e))return NaN;if(ct(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=ct(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=ft(e);var o=Pt.test(e);return o||Et.test(e)?Bt(e.slice(2),o?2:8):It.test(e)?NaN:+e},Lt=Math.max,Nt=Math.min;var zt=function(e,t,o){var n,i,r,l,s,a,c=0,d=!1,u=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var o=n,r=i;return n=i=void 0,c=t,l=e.apply(r,o)}function m(e){return c=e,s=setTimeout(p,t),d?b(e):l}function g(e){var o=e-a;return void 0===a||o>=t||o<0||u&&e-c>=r}function p(){var e=bt();if(g(e))return f(e);s=setTimeout(p,function(e){var o=t-(e-a);return u?Nt(o,r-(e-c)):o}(e))}function f(e){return s=void 0,h&&n?b(e):(n=i=void 0,l)}function w(){var e=bt(),o=g(e);if(n=arguments,i=this,a=e,o){if(void 0===s)return m(a);if(u)return clearTimeout(s),s=setTimeout(p,t),b(a)}return void 0===s&&(s=setTimeout(p,t)),l}return t=Ot(t)||0,ct(o)&&(d=!!o.leading,r=(u="maxWait"in o)?Lt(Ot(o.maxWait)||0,t):r,h="trailing"in o?!!o.trailing:h),w.cancel=function(){void 0!==s&&clearTimeout(s),c=0,n=a=i=s=void 0},w.flush=function(){return void 0===s?l:f(bt())},w};const Mt=xe.BalloonPanelView.defaultPositions,Ft=[Mt.northArrowSouth,Mt.northArrowSouthWest,Mt.northArrowSouthEast,Mt.southArrowNorth,Mt.southArrowNorthWest,Mt.southArrowNorthEast,Mt.viewportStickyNorth];function Ht(e,t){const o=e.plugins.get("ContextualBalloon");if(We(e.editing.view.document.selection)){let n;n="cell"===t?Wt(e):Dt(e),o.updatePosition(n)}}function Dt(e){const t=e.model.document.selection.getFirstPosition().findAncestor("table"),o=e.editing.mapper.toViewElement(t);return{target:e.editing.view.domConverter.viewToDom(o),positions:Ft}}function Wt(e){const t=e.editing.mapper,o=e.editing.view.domConverter,n=e.model.document.selection;if(n.rangeCount>1)return{target:()=>function(e,t){const o=t.editing.mapper,n=t.editing.view.domConverter,i=Array.from(e).map(e=>{const t=jt(e.start),i=o.toViewElement(t);return new a.Rect(n.viewToDom(i))});return a.Rect.getBoundingRect(i)}(n.getRanges(),e),positions:Ft};const i=jt(n.getFirstPosition()),r=t.toViewElement(i);return{target:o.viewToDom(r),positions:Ft}}function jt(e){return e.nodeAfter&&e.nodeAfter.is("element","tableCell")?e.nodeAfter:e.findAncestor("tableCell")}function Ut(e){if(!e||!ct(e))return e;const{top:t,right:o,bottom:n,left:i}=e;return t==o&&o==n&&n==i?t:void 0}function Kt(e,t){const o=parseFloat(e);return Number.isNaN(o)||String(o)!==String(e)?e:`${o}${t}`}function $t(e,t={}){const o=Object.assign({borderStyle:"none",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:""},e);return t.includeAlignmentProperty&&!o.alignment&&(o.alignment="center"),t.includePaddingProperty&&!o.padding&&(o.padding=""),t.includeVerticalAlignmentProperty&&!o.verticalAlignment&&(o.verticalAlignment="middle"),t.includeHorizontalAlignmentProperty&&!o.horizontalAlignment&&(o.horizontalAlignment=t.isRightToLeftContent?"right":"left"),o}const qt={borderStyle:"tableCellBorderStyle",borderColor:"tableCellBorderColor",borderWidth:"tableCellBorderWidth",width:"tableCellWidth",height:"tableCellHeight",padding:"tableCellPadding",backgroundColor:"tableCellBackgroundColor",horizontalAlignment:"tableCellHorizontalAlignment",verticalAlignment:"tableCellVerticalAlignment"};class Gt extends n.Plugin{static get requires(){return[xe.ContextualBalloon]}static get pluginName(){return"TableCellPropertiesUI"}constructor(e){super(e),e.config.define("table.tableCellProperties",{borderColors:ot,backgroundColors:ot})}init(){const e=this.editor,t=e.t;this._defaultTableCellProperties=$t(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection}),this._balloon=e.plugins.get(xe.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableCellProperties",o=>{const n=new xe.ButtonView(o);n.set({label:t("Cell properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.105 18-.17 1H2.5A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1h15A1.5 1.5 0 0 1 19 2.5v9.975l-.85-.124-.15-.302V8h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5h3.105zM2 12h5V8H2v4zm10-4H8v4h4V8zM2 2v5h5V2H2zm0 16h5v-5H2v5zM13 7h5V2h-5v5zM8 2v5h4V2H8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM13 6a1 1 0 0 1 1 1v3.172a2.047 2.047 0 0 0-.293.443l-.858 1.736-1.916.28-.151.027A1.976 1.976 0 0 0 9.315 14H7a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h6zm-1 2H8v4h4V8z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",()=>this._showView());const i=Object.values(qt).map(t=>e.commands.get(t));return n.bind("isEnabled").toMany(i,"isEnabled",(...e)=>e.some(e=>e)),n})}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.editing.view.document,o=e.config.get("table.tableCellProperties"),n=Object(xe.normalizeColorOptions)(o.borderColors),i=Object(xe.getLocalizedColorOptions)(e.locale,n),r=Object(xe.normalizeColorOptions)(o.backgroundColors),l=Object(xe.getLocalizedColorOptions)(e.locale,r),s=new st(e.locale,{borderColors:i,backgroundColors:l,defaultTableCellProperties:this._defaultTableCellProperties}),a=e.t;s.render(),this.listenTo(s,"submit",()=>{this._hideView()}),this.listenTo(s,"cancel",()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()}),s.keystrokes.set("Esc",(e,t)=>{this._hideView(),t()}),this.listenTo(e.ui,"update",()=>{We(t.selection)?this._isViewVisible&&Ht(e,"cell"):this._hideView()}),Object(xe.clickOutsideHandler)({emitter:s,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const c=Je(a),d=Xe(a);return s.on("change:borderStyle",this._getPropertyChangeCallback("tableCellBorderStyle",this._defaultTableCellProperties.borderStyle)),s.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:s.borderColorInput,commandName:"tableCellBorderColor",errorText:c,validator:Ye,defaultValue:this._defaultTableCellProperties.borderColor})),s.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:s.borderWidthInput,commandName:"tableCellBorderWidth",errorText:d,validator:Ze,defaultValue:this._defaultTableCellProperties.borderWidth})),s.on("change:padding",this._getValidatedPropertyChangeCallback({viewField:s.paddingInput,commandName:"tableCellPadding",errorText:d,validator:Qe,defaultValue:this._defaultTableCellProperties.padding})),s.on("change:width",this._getValidatedPropertyChangeCallback({viewField:s.widthInput,commandName:"tableCellWidth",errorText:d,validator:Qe,defaultValue:this._defaultTableCellProperties.width})),s.on("change:height",this._getValidatedPropertyChangeCallback({viewField:s.heightInput,commandName:"tableCellHeight",errorText:d,validator:Qe,defaultValue:this._defaultTableCellProperties.height})),s.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:s.backgroundInput,commandName:"tableCellBackgroundColor",errorText:c,validator:Ye,defaultValue:this._defaultTableCellProperties.backgroundColor})),s.on("change:horizontalAlignment",this._getPropertyChangeCallback("tableCellHorizontalAlignment",this._defaultTableCellProperties.horizontalAlignment)),s.on("change:verticalAlignment",this._getPropertyChangeCallback("tableCellVerticalAlignment",this._defaultTableCellProperties.verticalAlignment)),s}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableCellBorderStyle");Object.entries(qt).map(([t,o])=>{const n=this._defaultTableCellProperties[t]||"";return[t,e.get(o).value||n]}).forEach(([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)})}_showView(){const e=this.editor;this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Wt(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){if(!this._isViewInBalloon)return;const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,r)=>{(r||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:r}=e,l=zt(()=>{o.errorText=i},500);return(e,i,s,a)=>{l.cancel(),(a||r!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):l())}}}function Jt(e,t){const{viewElement:o,defaultValue:n,modelAttribute:i,styleName:r,reduceBoxSides:l=!1}=t;e.for("upcast").attributeToAttribute({view:{name:o,styles:{[r]:/[\s\S]+/}},model:{key:i,value:e=>{const t=e.getNormalizedStyle(r),o=l?Zt(t):t;if(n!==o)return o}}})}function Xt(e,t,o){e.for("upcast").add(e=>e.on("element:"+t,(e,t,n)=>{if(!t.modelRange)return;const i=["border-top-width","border-top-color","border-top-style","border-bottom-width","border-bottom-color","border-bottom-style","border-right-width","border-right-color","border-right-style","border-left-width","border-left-color","border-left-style"].filter(e=>t.viewItem.hasStyle(e));if(!i.length)return;const r={styles:i};if(!n.consumable.test(t.viewItem,r))return;const l=[...t.modelRange.getItems({shallow:!0})].pop();n.consumable.consume(t.viewItem,r);const s={style:t.viewItem.getNormalizedStyle("border-style"),color:t.viewItem.getNormalizedStyle("border-color"),width:t.viewItem.getNormalizedStyle("border-width")},a={style:Zt(s.style),color:Zt(s.color),width:Zt(s.width)};a.style!==o.style&&n.writer.setAttribute("borderStyle",a.style,l),a.color!==o.color&&n.writer.setAttribute("borderColor",a.color,l),a.width!==o.width&&n.writer.setAttribute("borderWidth",a.width,l)}))}function Yt(e,{modelElement:t,modelAttribute:o,styleName:n}){e.for("downcast").attributeToAttribute({model:{name:t,key:o},view:e=>({key:"style",value:{[n]:e}})})}function Qt(e,{modelAttribute:t,styleName:o}){e.for("downcast").add(e=>e.on(`attribute:${t}:table`,(e,t,n)=>{const{item:i,attributeNewValue:r}=t,{mapper:l,writer:s}=n;if(!n.consumable.consume(t.item,e.name))return;const a=[...l.toViewElement(i).getChildren()].find(e=>e.is("element","table"));r?s.setStyle(o,r,a):s.removeStyle(o,a)}))}function Zt(e){if(!e)return;return["top","right","bottom","left"].map(t=>e[t]).reduce((e,t)=>e==t?e:null)||e}class eo extends n.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=V(this.editor.model.document.selection);this.isEnabled=!!e.length,this.value=this._getSingleValue(e)}execute(e={}){const{value:t,batch:o}=e,n=this.editor.model,i=V(n.document.selection),r=this._getValueToSet(t);n.enqueueChange(o||"default",e=>{r?i.forEach(t=>e.setAttribute(this.attributeName,r,t)):i.forEach(t=>e.removeAttribute(this.attributeName,t))})}_getAttribute(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}_getSingleValue(e){const t=this._getAttribute(e[0]);return e.every(e=>this._getAttribute(e)===t)?t:void 0}}class to extends eo{constructor(e,t){super(e,"padding",t)}_getAttribute(e){if(!e)return;const t=Ut(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Kt(e,"px"))!==this._defaultValue)return e}}class oo extends eo{constructor(e,t){super(e,"width",t)}_getValueToSet(e){if((e=Kt(e,"px"))!==this._defaultValue)return e}}class no extends eo{constructor(e,t){super(e,"height",t)}_getValueToSet(e){return(e=Kt(e,"px"))===this._defaultValue?null:e}}class io extends eo{constructor(e,t){super(e,"backgroundColor",t)}}class ro extends eo{constructor(e,t){super(e,"verticalAlignment",t)}}class lo extends eo{constructor(e,t){super(e,"horizontalAlignment",t)}}class so extends eo{constructor(e,t){super(e,"borderStyle",t)}_getAttribute(e){if(!e)return;const t=Ut(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class ao extends eo{constructor(e,t){super(e,"borderColor",t)}_getAttribute(e){if(!e)return;const t=Ut(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class co extends eo{constructor(e,t){super(e,"borderWidth",t)}_getAttribute(e){if(!e)return;const t=Ut(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Kt(e,"px"))!==this._defaultValue)return e}}const uo=/^(top|middle|bottom)$/,ho=/^(left|center|right|justify)$/;class bo extends n.Plugin{static get pluginName(){return"TableCellPropertiesEditing"}static get requires(){return[ye]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableCellProperties.defaultProperties",{});const n=$t(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection});e.data.addStyleProcessorRules(Ne.addBorderRules),function(e,t,o){e.extend("tableCell",{allowAttributes:["borderWidth","borderColor","borderStyle"]}),Xt(t,"td",o),Xt(t,"th",o),Yt(t,{modelElement:"tableCell",modelAttribute:"borderStyle",styleName:"border-style"}),Yt(t,{modelElement:"tableCell",modelAttribute:"borderColor",styleName:"border-color"}),Yt(t,{modelElement:"tableCell",modelAttribute:"borderWidth",styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableCellBorderStyle",new so(e,n.borderStyle)),e.commands.add("tableCellBorderColor",new ao(e,n.borderColor)),e.commands.add("tableCellBorderWidth",new co(e,n.borderWidth)),function(e,t,o){e.extend("tableCell",{allowAttributes:["horizontalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"horizontalAlignment"},view:e=>({key:"style",value:{"text-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"text-align":ho}},model:{key:"horizontalAlignment",value:e=>{const t=e.getStyle("text-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{align:ho}},model:{key:"horizontalAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.horizontalAlignment),e.commands.add("tableCellHorizontalAlignment",new lo(e,n.horizontalAlignment)),mo(t,o,{modelAttribute:"width",styleName:"width",defaultValue:n.width}),e.commands.add("tableCellWidth",new oo(e,n.width)),mo(t,o,{modelAttribute:"height",styleName:"height",defaultValue:n.height}),e.commands.add("tableCellHeight",new no(e,n.height)),e.data.addStyleProcessorRules(Ne.addPaddingRules),mo(t,o,{modelAttribute:"padding",styleName:"padding",reduceBoxSides:!0,defaultValue:n.padding}),e.commands.add("tableCellPadding",new to(e,n.padding)),e.data.addStyleProcessorRules(Ne.addBackgroundRules),mo(t,o,{modelAttribute:"backgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableCellBackgroundColor",new io(e,n.backgroundColor)),function(e,t,o){e.extend("tableCell",{allowAttributes:["verticalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"verticalAlignment"},view:e=>({key:"style",value:{"vertical-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"vertical-align":uo}},model:{key:"verticalAlignment",value:e=>{const t=e.getStyle("vertical-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{valign:uo}},model:{key:"verticalAlignment",value:e=>{const t=e.getAttribute("valign");return t===o?null:t}}})}(t,o,n.verticalAlignment),e.commands.add("tableCellVerticalAlignment",new ro(e,n.verticalAlignment))}}function mo(e,t,o){const{modelAttribute:n}=o;e.extend("tableCell",{allowAttributes:[n]}),Jt(t,{viewElement:/^(td|th)$/,...o}),Yt(t,{modelElement:"tableCell",...o})}class go extends n.Plugin{static get pluginName(){return"TableCellProperties"}static get requires(){return[bo,Gt]}}class po extends n.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor.model.document.selection.getFirstPosition().findAncestor("table");this.isEnabled=!!e,this.value=this._getValue(e)}execute(e={}){const t=this.editor.model,o=t.document.selection,{value:n,batch:i}=e,r=o.getFirstPosition().findAncestor("table"),l=this._getValueToSet(n);t.enqueueChange(i||"default",e=>{l?e.setAttribute(this.attributeName,l,r):e.removeAttribute(this.attributeName,r)})}_getValue(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}}class fo extends po{constructor(e,t){super(e,"backgroundColor",t)}}class wo extends po{constructor(e,t){super(e,"borderColor",t)}_getValue(e){if(!e)return;const t=Ut(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class _o extends po{constructor(e,t){super(e,"borderStyle",t)}_getValue(e){if(!e)return;const t=Ut(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class ko extends po{constructor(e,t){super(e,"borderWidth",t)}_getValue(e){if(!e)return;const t=Ut(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Kt(e,"px"))!==this._defaultValue)return e}}class vo extends po{constructor(e,t){super(e,"width",t)}_getValueToSet(e){if((e=Kt(e,"px"))!==this._defaultValue)return e}}class Co extends po{constructor(e,t){super(e,"height",t)}_getValueToSet(e){return(e=Kt(e,"px"))===this._defaultValue?null:e}}class yo extends po{constructor(e,t){super(e,"alignment",t)}}const To=/^(left|center|right)$/,xo=/^(left|none|right)$/;class Ao extends n.Plugin{static get pluginName(){return"TablePropertiesEditing"}static get requires(){return[ye]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableProperties.defaultProperties",{});const n=$t(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0});e.data.addStyleProcessorRules(Ne.addBorderRules),function(e,t,o){e.extend("table",{allowAttributes:["borderWidth","borderColor","borderStyle"]}),Xt(t,"table",o),Qt(t,{modelAttribute:"borderColor",styleName:"border-color"}),Qt(t,{modelAttribute:"borderStyle",styleName:"border-style"}),Qt(t,{modelAttribute:"borderWidth",styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableBorderColor",new wo(e,n.borderColor)),e.commands.add("tableBorderStyle",new _o(e,n.borderStyle)),e.commands.add("tableBorderWidth",new ko(e,n.borderWidth)),function(e,t,o){e.extend("table",{allowAttributes:["alignment"]}),t.for("downcast").attributeToAttribute({model:{name:"table",key:"alignment"},view:e=>({key:"style",value:{float:"center"===e?"none":e}}),converterPriority:"high"}),t.for("upcast").attributeToAttribute({view:{name:/^(table|figure)$/,styles:{float:xo}},model:{key:"alignment",value:e=>{let t=e.getStyle("float");return"none"===t&&(t="center"),t===o?null:t}}}).attributeToAttribute({view:{attributes:{align:To}},model:{name:"table",key:"alignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.alignment),e.commands.add("tableAlignment",new yo(e,n.alignment)),Vo(t,o,{modelAttribute:"width",styleName:"width",defaultValue:n.width}),e.commands.add("tableWidth",new vo(e,n.width)),Vo(t,o,{modelAttribute:"height",styleName:"height",defaultValue:n.height}),e.commands.add("tableHeight",new Co(e,n.height)),e.data.addStyleProcessorRules(Ne.addBackgroundRules),function(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),Jt(t,{viewElement:"table",...o}),Qt(t,o)}(t,o,{modelAttribute:"backgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableBackgroundColor",new fo(e,n.backgroundColor))}}function Vo(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),Jt(t,{viewElement:/^(table|figure)$/,...o}),Yt(t,{modelElement:"table",...o})}o(28);const So={left:n.icons.objectLeft,center:n.icons.objectCenter,right:n.icons.objectRight};class Ro extends xe.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:"",alignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:r}=this._createBorderFields(),{backgroundRowLabel:l,backgroundInput:s}=this._createBackgroundFields(),{widthInput:c,operatorLabel:d,heightInput:u,dimensionsLabel:h}=this._createDimensionFields(),{alignmentToolbar:b,alignmentLabel:m}=this._createAlignmentFields();this.focusTracker=new a.FocusTracker,this.keystrokes=new a.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=s,this.widthInput=c,this.heightInput=u,this.alignmentToolbar=b;const{saveButtonView:g,cancelButtonView:p}=this._createActionButtons();this.saveButtonView=g,this.cancelButtonView=p,this._focusables=new xe.ViewCollection,this._focusCycler=new xe.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new xe.FormHeaderView(e,{label:this.t("Table properties")})),this.children.add(new rt(e,{labelView:r,children:[r,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new rt(e,{labelView:l,children:[l,s],class:"ck-table-form__background-row"})),this.children.add(new rt(e,{children:[new rt(e,{labelView:h,children:[h,c,d,u],class:"ck-table-form__dimensions-row"}),new rt(e,{labelView:m,children:[m,b],class:"ck-table-properties-form__alignment-row"})]})),this.children.add(new rt(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),Object(xe.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.alignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=nt({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,r=new xe.LabelView(n);r.text=i("Border");const l=Ge(this.t),s=new xe.LabeledFieldView(n,xe.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",e=>l[e||"none"]),s.fieldView.on("execute",e=>{this.borderStyle=e.source._borderStyleValue}),s.bind("isEmpty").to(this,"borderStyle",e=>!e),Object(xe.addListToDropdown)(s.fieldView,et(this,t.style));const a=new xe.LabeledFieldView(n,xe.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",Io),a.fieldView.on("input",()=>{this.borderWidth=a.fieldView.element.value});const c=new xe.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",Io),c.fieldView.on("input",()=>{this.borderColor=c.fieldView.value}),this.on("change:borderStyle",(e,o,n,i)=>{Io(n)||(this.borderColor="",this.borderWidth=""),Io(i)||(this.borderColor=t.color,this.borderWidth=t.width)}),{borderRowLabel:r,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new xe.LabelView(e);o.text=t("Background");const n=nt({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableProperties.backgroundColor}),i=new xe.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",()=>{this.backgroundColor=i.fieldView.value}),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new xe.LabelView(e);o.text=t("Dimensions");const n=new xe.LabeledFieldView(e,xe.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",()=>{this.width=n.fieldView.element.value});const i=new xe.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const r=new xe.LabeledFieldView(e,xe.createLabeledInputText);return r.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),r.fieldView.bind("value").to(this,"height"),r.fieldView.on("input",()=>{this.height=r.fieldView.element.value}),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:r}}_createAlignmentFields(){const e=this.locale,t=this.t,o=new xe.LabelView(e);o.text=t("Alignment");const n=new xe.ToolbarView(e);return n.set({isCompact:!0,ariaLabel:t("Table alignment toolbar")}),tt({view:this,icons:So,toolbar:n,labels:this._alignmentLabels,propertyName:"alignment",defaultValue:this.options.defaultTableProperties.alignment}),{alignmentLabel:o,alignmentToolbar:n}}_createActionButtons(){const e=this.locale,t=this.t,o=new xe.ButtonView(e),i=new xe.ButtonView(e),r=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.widthInput,this.heightInput];return o.set({label:t("Save"),icon:n.icons.check,class:"ck-button-save",type:"submit",withText:!0}),o.bind("isEnabled").toMany(r,"errorText",(...e)=>e.every(e=>!e)),i.set({label:t("Cancel"),icon:n.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:o,cancelButtonView:i}}get _alignmentLabels(){const e=this.locale,t=this.t,o=t("Align table to the left"),n=t("Center table"),i=t("Align table to the right");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o}:{left:o,center:n,right:i}}}function Io(e){return"none"!==e}const Po={borderStyle:"tableBorderStyle",borderColor:"tableBorderColor",borderWidth:"tableBorderWidth",backgroundColor:"tableBackgroundColor",width:"tableWidth",height:"tableHeight",alignment:"tableAlignment"};class Eo extends n.Plugin{static get requires(){return[xe.ContextualBalloon]}static get pluginName(){return"TablePropertiesUI"}constructor(e){super(e),e.config.define("table.tableProperties",{borderColors:ot,backgroundColors:ot})}init(){const e=this.editor,t=e.t;this._defaultTableProperties=$t(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),this._balloon=e.plugins.get(xe.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableProperties",o=>{const n=new xe.ButtonView(o);n.set({label:t("Table properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8 2v5h4V2h1v5h5v1h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5H7v-5H2v-1h5V8H2V7h5V2h1zm4 6H8v4h4V8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM17 1a2 2 0 0 1 2 2v9.475l-.85-.124-.857-1.736a2.048 2.048 0 0 0-.292-.44L17 3H3v14h7.808l.402.392L10.935 19H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",()=>this._showView());const i=Object.values(Po).map(t=>e.commands.get(t));return n.bind("isEnabled").toMany(i,"isEnabled",(...e)=>e.some(e=>e)),n})}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.config.get("table.tableProperties"),o=Object(xe.normalizeColorOptions)(t.borderColors),n=Object(xe.getLocalizedColorOptions)(e.locale,o),i=Object(xe.normalizeColorOptions)(t.backgroundColors),r=Object(xe.getLocalizedColorOptions)(e.locale,i),l=new Ro(e.locale,{borderColors:n,backgroundColors:r,defaultTableProperties:this._defaultTableProperties}),s=e.t;l.render(),this.listenTo(l,"submit",()=>{this._hideView()}),this.listenTo(l,"cancel",()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()}),l.keystrokes.set("Esc",(e,t)=>{this._hideView(),t()}),Object(xe.clickOutsideHandler)({emitter:l,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const a=Je(s),c=Xe(s);return l.on("change:borderStyle",this._getPropertyChangeCallback("tableBorderStyle",this._defaultTableProperties.borderStyle)),l.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:l.borderColorInput,commandName:"tableBorderColor",errorText:a,validator:Ye,defaultValue:this._defaultTableProperties.borderColor})),l.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:l.borderWidthInput,commandName:"tableBorderWidth",errorText:c,validator:Ze,defaultValue:this._defaultTableProperties.borderWidth})),l.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:l.backgroundInput,commandName:"tableBackgroundColor",errorText:a,validator:Ye,defaultValue:this._defaultTableProperties.backgroundColor})),l.on("change:width",this._getValidatedPropertyChangeCallback({viewField:l.widthInput,commandName:"tableWidth",errorText:c,validator:Qe,defaultValue:this._defaultTableProperties.width})),l.on("change:height",this._getValidatedPropertyChangeCallback({viewField:l.heightInput,commandName:"tableHeight",errorText:c,validator:Qe,defaultValue:this._defaultTableProperties.height})),l.on("change:alignment",this._getPropertyChangeCallback("tableAlignment",this._defaultTableProperties.alignment)),l}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableBorderStyle");Object.entries(Po).map(([t,o])=>{const n=this._defaultTableProperties[t]||"";return[t,e.get(o).value||n]}).forEach(([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)})}_showView(){const e=this.editor;this.listenTo(e.ui,"update",()=>{this._updateView()}),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Dt(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor;We(e.editing.view.document.selection)?this._isViewVisible&&Ht(e,"table"):this._hideView()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,r)=>{(r||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:r}=e,l=zt(()=>{o.errorText=i},500);return(e,i,s,a)=>{l.cancel(),(a||r!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):l())}}}class Bo extends n.Plugin{static get pluginName(){return"TableProperties"}static get requires(){return[Ao,Eo]}}function Oo(e){e.document.registerPostFixer(t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o){if("insert"!=t.type)continue;if(t.position.parent.is("element","table")||"table"==t.name){const o="table"==t.name?t.position.nodeAfter:t.position.parent,i=Array.from(o.getChildren()).filter(e=>e.is("element","caption")),r=i.shift();if(!r)continue;for(const t of i)e.move(e.createRangeIn(t),r,"end"),e.remove(t);r.nextSibling&&(e.move(e.createRangeOn(r),o,"end"),n=!0),n=!!i.length||n}}return n}(t,e))}function Lo(e){return!!e&&e.is("element","table")}function No(e){for(const t of e.getChildren())if(t.is("element","caption"))return t;return null}function zo(e){const t=e.parent;return"figcaption"==e.name&&t&&"figure"==t.name&&t.hasClass("table")||"caption"==e.name&&t&&"table"==t.name?{name:!0}:null}function Mo(e){const t=e.getSelectedElement();return t&&t.is("element","table")?t:e.getFirstPosition().findAncestor("table")}class Fo extends n.Command{refresh(){const e=Mo(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?this.value=!!No(e):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change(e=>{this.value?this._hideTableCaption(e):this._showTableCaption(e,t)})}_showTableCaption(e,t){const o=Mo(this.editor.model.document.selection),n=this.editor.plugins.get("TableCaptionEditing")._getSavedCaption(o)||e.createElement("caption");e.append(n,o),t&&e.setSelection(n,"in")}_hideTableCaption(e){const t=Mo(this.editor.model.document.selection),o=this.editor.plugins.get("TableCaptionEditing"),n=No(t);o._saveCaption(t,n),e.setSelection(e.createRangeIn(t.getChild(0).getChild(0))),e.remove(n)}}class Ho extends n.Plugin{static get pluginName(){return"TableCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema,o=e.editing.view,n=e.t;t.isRegistered("caption")?t.extend("caption",{allowIn:"table"}):t.register("caption",{allowIn:"table",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleTableCaption",new Fo(this.editor)),e.conversion.for("upcast").elementToElement({view:zo,model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>Lo(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>{if(!Lo(e.parent))return null;const r=t.createEditableElement("figcaption");return t.setCustomProperty("tableCaption",!0,r),Object(Ne.enablePlaceholder)({view:o,element:r,text:n("Enter table caption"),keepOnFocus:!0}),Object(i.toWidgetEditable)(r,t)}}),Oo(e.model)}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Ne.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class Do extends n.Plugin{static get pluginName(){return"TableCaptionUI"}init(){const e=this.editor,t=e.editing.view,o=e.t;e.ui.componentFactory.add("toggleTableCaption",i=>{const r=e.commands.get("toggleTableCaption"),l=new xe.ButtonView(i);return l.set({icon:n.icons.caption,tooltip:!0,isToggleable:!0}),l.bind("isOn","isEnabled").to(r,"value","isEnabled"),l.bind("label").to(r,"value",e=>o(e?"Toggle caption off":"Toggle caption on")),this.listenTo(l,"execute",()=>{if(e.execute("toggleTableCaption",{focusCaptionOnShow:!0}),r.value){const o=function(e){const t=Mo(e);return t?No(t):null}(e.model.document.selection),n=e.editing.mapper.toViewElement(o);if(!n)return;t.scrollToTheSelection(),t.change(e=>{e.addClass("table__caption_highlighted",n)})}}),l})}}o(30);class Wo extends n.Plugin{static get pluginName(){return"TableCaption"}static get requires(){return[Ho,Do]}}}]); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/af.js b/core/assets/vendor/ckeditor5/translations/af.js new file mode 100644 index 000000000000..a47679be3616 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/af.js @@ -0,0 +1 @@ +!function(n){const i=n.af=n.af||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Belyn in die middel","Align left":"Belyn links","Align right":"Belyn regs",Justify:"Belyn beide kante","Text alignment":"Teksbelyning","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.af=e.af||{};r.dictionary=Object.assign(r.dictionary||{},{Bold:"Vetgedruk",Code:"Kode",Italic:"Skuinsgedruk",Strikethrough:"Deurgetrek",Subscript:"Onderskrif",Superscript:"Boskrif",Underline:"Onderstreep"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.af=n.af||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Blok-aanhaling"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.af=i.af||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"Verwyder formatering"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.af=e.af||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Cancel:"Kanselleer","Remove color":"","Restore default":"",Save:"Berg","Show more items":""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ar.js b/core/assets/vendor/ckeditor5/translations/ar.js new file mode 100644 index 000000000000..300806d6a9e6 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ar.js @@ -0,0 +1 @@ +!function(n){const i=n.ar=n.ar||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Ù…Øاذاة ÙÙŠ المنتصÙ","Align left":"Ù…Øاذاة لليسار","Align right":"Ù…Øاذاة لليمين",Justify:"ضبط","Text alignment":"Ù…Øاذاة النص","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ar=i.ar||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"عريض",Code:"Ø´Ùرة برمجية",Italic:"مائل",Strikethrough:"يتوسطه خط",Subscript:"",Superscript:"",Underline:"تØته خط"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ar=i.ar||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"اقتباس"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.ar=n.ar||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose heading":"اختر عنوان",Heading:"عنوان","Heading 1":"عنوان 1","Heading 2":"عنوان 2","Heading 3":"عنوان 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"Ùقرة","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.ar=e.ar||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"صورة بالوسط","Change image text alternative":"غير النص البديل للصورة","Enter image caption":"ادخل عنوان الصورة","Full size image":"صورة بØجم كامل","Image resize list":"","Image toolbar":"","image widget":"عنصر الصورة","In line":"",Insert:"","Insert image":"ادراج صورة","Insert image via URL":"","Left aligned image":"صورة بمØاذاة لليسار",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"صورة بمØاذاة لليمين","Side image":"صورة جانبية","Text alternative":"النص البديل",Update:"","Update image URL":"","Upload failed":"Ùشل الرÙع","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ar=n.ar||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"تØرير الرابط",Link:"رابط","Link image":"","Link URL":"رابط عنوان","Open in a new tab":"","Open link in new tab":"ÙØªØ Ø§Ù„Ø±Ø§Ø¨Ø· ÙÙŠ تبويب جديد","This link has no URL":"لا ÙŠØتوي هذا الرابط على عنوان",Unlink:"إلغاء الرابط"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.ar=e.ar||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"قائمة نقطية","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"قائمة رقمية","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.ar=e.ar||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"قم بمØاذاة نص الخلية للاسÙÙ„","Align cell text to the center":"قم بمØاذاة نص الخلية إلى المركز","Align cell text to the left":"قم بمØاذاة نص الخلية إلى اليسار","Align cell text to the middle":"قم بمØاذاة نص الخلية إلى المنتصÙ","Align cell text to the right":"قم بمØاذاة نص الخلية إلى اليمين","Align cell text to the top":"قم بمØاذاة نص الخلية إلى الأعلى","Align table to the left":"قم بمØاذاة الجدول إلى اليسار","Align table to the right":"قم بمØاذاة الجدول إلى اليمين",Alignment:"المØاذاة",Background:"الخلÙية",Border:"الØدود","Cell properties":"خصائص الخلية","Center table":"قم بمØاذاة الجدول إلى المنتصÙ",Color:"اللون","Color picker":"",Column:"عمود",Dashed:"متقطع","Delete column":"Øذ٠العمود","Delete row":"Øذ٠الصÙ",Dimensions:"الابعاد",Dotted:"منقط",Double:"","Enter table caption":"",Groove:"","Header column":"عمود عنوان","Header row":"ص٠عنوان",Height:"الارتÙاع","Horizontal text alignment toolbar":"شريط أدوات Ù…Øاذاة النص الأÙقي","Insert column left":"أدخل العمود إلى اليسار","Insert column right":"أدخل العمود إلى اليمين","Insert row above":"ادراج ص٠قبل","Insert row below":"ادراج ص٠بعد","Insert table":"إدراج جدول",Inset:"","Justify cell text":"ضبط نص الخلية","Merge cell down":"دمج الخلايا للأسÙÙ„","Merge cell left":"دمج الخلايا لليسار","Merge cell right":"دمج الخلايا لليمين","Merge cell up":"دمج الخلايا للأعلى","Merge cells":"دمج الخلايا",None:"لا شيء",Outset:"",Padding:"الØاشية",Ridge:"",Row:"صÙ","Select column":"Øدد العمود","Select row":"Øدد صÙًا",Solid:"صلب","Split cell horizontally":"Ùصل الخلايا بشكل اÙقي","Split cell vertically":"Ùصل الخلايا بشكل عمودي",Style:"أسلوب","Table alignment toolbar":"شريط أدوات Ù…Øاذاة الجدول","Table cell text alignment":"Ù…Øاذاة نص خلية الجدول","Table properties":"خصائص الجدول","Table toolbar":"شريط أدوات الجدول",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"شريط أدوات Ù…Øاذاة النص العمودي",Width:"العرض"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.ar=e.ar||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"إلغاء","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"إعادة","Remove color":"","Restore default":"","Rich Text Editor":"معالج نصوص","Rich Text Editor, %0":"معالج نصوص، 0%",Save:"ØÙظ","Show more items":"",Turquoise:"",Undo:"تراجع","Upload in progress":"جاري الرÙع",White:"",Yellow:""}),o.getPluralForm=function(e){return 0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11&&e%100<=99?4:5}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ast.js b/core/assets/vendor/ckeditor5/translations/ast.js new file mode 100644 index 000000000000..0fb11d5d74e8 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ast.js @@ -0,0 +1 @@ +!function(i){const t=i.ast=i.ast||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Negrina",Code:"",Italic:"Cursiva",Strikethrough:"",Subscript:"",Superscript:"",Underline:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.ast=e.ast||{};a.dictionary=Object.assign(a.dictionary||{},{"Break text":"","Centered image":"","Change image text alternative":"","Enter image caption":"","Full size image":"Imaxen a tamañu completu","Image resize list":"","Image toolbar":"","image widget":"complementu d'imaxen","In line":"",Insert:"","Insert image":"","Insert image via URL":"","Left aligned image":"",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"","Side image":"Imaxen llateral","Text alternative":"",Update:"","Update image URL":"","Upload failed":"","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ast=n.ast||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"",Link:"Enllazar","Link image":"","Link URL":"URL del enllaz","Open in a new tab":"","Open link in new tab":"","This link has no URL":"",Unlink:"Desenllazar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.ast=e.ast||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"Llista con viñetes","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Llista numberada","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.ast=e.ast||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Encaboxar","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Refacer","Remove color":"","Restore default":"","Rich Text Editor":"Editor de testu arriquecÃu","Rich Text Editor, %0":"Editor de testu arriquecÃu, %0",Save:"Guardar","Show more items":"",Turquoise:"",Undo:"Desfacer",White:"",Yellow:""}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/az.js b/core/assets/vendor/ckeditor5/translations/az.js new file mode 100644 index 000000000000..ce43bd147f9c --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/az.js @@ -0,0 +1 @@ +!function(n){const i=n.az=n.az||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"MÉ™rkÉ™zÉ™ düzlÉ™ndir","Align left":"Soldan düzlÉ™ndir","Align right":"SaÄŸdan düzlÉ™ndir",Justify:"EninÉ™ görÉ™","Text alignment":"MÉ™tn düzlÉ™ndirmÉ™si","Text alignment toolbar":"MÉ™tnin düzlÉ™ndirmÉ™ paneli"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const i=a.az=a.az||{};i.dictionary=Object.assign(i.dictionary||{},{Bold:"Yarıqalın",Code:"Kod",Italic:"Maili",Strikethrough:"Qaralanmış",Subscript:"Alt yazı",Superscript:"Ãœst yazı",Underline:"Altdan xÉ™tt"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.az=i.az||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Sitat bloku"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const n=a.az=a.az||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose heading":"BaÅŸlıqı seç",Heading:"BaÅŸlıq","Heading 1":"BaÅŸlıq 1","Heading 2":"BaÅŸlıq 2","Heading 3":"BaÅŸlıq 3","Heading 4":"BaÅŸlıq 4","Heading 5":"BaÅŸlıq 5","Heading 6":"BaÅŸlıq 6",Paragraph:"Abzas","Type or paste your content here.":"","Type your title":"BaÅŸlığınızı yazın"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.az=i.az||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Ãœfüqi xÉ™tt"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.az=e.az||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"MÉ™rkÉ™zÉ™ düzlÉ™ndir","Change image text alternative":"Alternativ mÉ™tni redaktÉ™ et","Enter image caption":"Şəkil baÅŸlığı daxil edin","Full size image":"Tam ölçülü ÅŸÉ™kili","Image resize list":"","Image toolbar":"Şəkil paneli","image widget":"Şəkil vidgetı","In line":"",Insert:"","Insert image":"Şəkili É™lavÉ™ et","Insert image via URL":"","Left aligned image":"Soldan düzlÉ™ndir",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"SaÄŸdan düzlÉ™ndir","Side image":"Yan ÅŸÉ™kil","Text alternative":"Alternativ mÉ™tn",Update:"","Update image URL":"","Upload failed":"Şəkili serverÉ™ yüklÉ™","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.az=i.az||{};n.dictionary=Object.assign(n.dictionary||{},{"Decrease indent":"BoÅŸ yeri kiçilt","Increase indent":"BoÅŸ yeri böyüt"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.az=n.az||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"YüklÉ™nÉ™ bilÉ™r","Edit link":"Linki redaktÉ™ et",Link:"ÆlaqÉ™lÉ™ndir","Link image":"","Link URL":"Linkin URL","Open in a new tab":"Yeni pÉ™ncÉ™rÉ™dÉ™ aç","Open link in new tab":"Linki yeni pÉ™ncÉ™rÉ™dÉ™ aç","This link has no URL":"Bu linkdÉ™ URL yoxdur",Unlink:"Linki sil"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.az=e.az||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"MarkerlÉ™nmiÅŸ siyahı","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"NömrÉ™lÉ™nmiÅŸ siyahı","Numbered list styles toolbar":"",Square:"","To-do List":"To-do siyahı","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.az=o.az||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"Formatı Ləğv Et"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(l){const e=l.az=l.az||{};e.dictionary=Object.assign(e.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"Fon",Border:"SÉ™rhÉ™d","Cell properties":"","Center table":"",Color:"RÉ™ng","Color picker":"",Column:"Sütun",Dashed:"","Delete column":"Sütunları sil","Delete row":"SÉ™tirlÉ™ri sil",Dimensions:"ÖlçülÉ™r",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"BaÅŸlıqlı sütun","Header row":"BaÅŸlıqlı sÉ™tir",Height:"Hündürlük","Horizontal text alignment toolbar":"","Insert column left":"Sola sütun É™lavÉ™ et","Insert column right":"SaÄŸa sütun É™lavÉ™ et","Insert row above":"AÅŸağıya sÉ™tir É™lavÉ™ et","Insert row below":"Yuxarıya sÉ™tir É™lavÉ™ et","Insert table":"CÉ™dvÉ™li É™lavÉ™ et",Inset:"","Justify cell text":"","Merge cell down":"Xanaları aÅŸağı birləşdir","Merge cell left":"Xanaları sola birləşdir","Merge cell right":"Xanaları saÄŸa birləşdir","Merge cell up":"Xanaları yuxarı birləşdir","Merge cells":"Xanaları birləşdir",None:"",Outset:"",Padding:"",Ridge:"",Row:"SÉ™tir","Select column":"","Select row":"",Solid:"","Split cell horizontally":"Xanaları üfüqi böl","Split cell vertically":"Xanaları ÅŸaquli böl",Style:"","Table alignment toolbar":"","Table cell text alignment":"CÉ™dvÉ™l hüceyrÉ™si mÉ™tninin uyÄŸunlaÅŸdırılması","Table properties":"CÉ™dvÉ™l xüsusiyyÉ™tlÉ™ri","Table toolbar":"CÉ™dvÉ™l paneli",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:"Eni"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.az=e.az||{};a.dictionary=Object.assign(a.dictionary||{},{"%0 of %1":"%1-dÉ™n %0",Aquamarine:"Akvamarin",Black:"Qara",Blue:"Mavi",Cancel:"Ä°mtina et","Dim grey":"Tünd boz","Dropdown toolbar":"Açılan paneli","Edit block":"RedaktÉ™ etmÉ™k bloku","Editor toolbar":"Redaktorun paneli",Green:"Yaşıl",Grey:"Boz","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Açıq mavi","Light green":"Açıq yaşıl","Light grey":"Açıq boz",Next:"NövbÉ™ti",Orange:"Narıncı",Previous:"ÆvvÉ™lki",Purple:"BÉ™növÅŸÉ™yi",Red:"Qırmızı",Redo:"TÉ™krar et","Remove color":"RÉ™ngi ləğv et","Restore default":"","Rich Text Editor":"Rich Text Redaktoru","Rich Text Editor, %0":"Rich Text Redaktoru, %0",Save:"Yadda saxla","Show more items":"Daha çox əşyanı göstÉ™rin",Turquoise:"FiruzÉ™yi",Undo:"Ä°mtina et","Upload in progress":"YüklÉ™nir",White:"AÄŸ","Widget toolbar":"Vidgetin paneli",Yellow:"Sarı"}),a.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/bg.js b/core/assets/vendor/ckeditor5/translations/bg.js new file mode 100644 index 000000000000..097c0f4f9771 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/bg.js @@ -0,0 +1 @@ +!function(i){const n=i.bg=i.bg||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Удебелен",Code:"",Italic:"КурÑив",Strikethrough:"",Subscript:"",Superscript:"",Underline:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.bg=i.bg||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Цитат"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.bg=n.bg||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Избери заглавие",Heading:"Заглавие","Heading 1":"Заглавие 1","Heading 2":"Заглавие 2","Heading 3":"Заглавие 3","Heading 4":"Заглавие 4","Heading 5":"Заглавие 5","Heading 6":"Заглавие 6",Paragraph:"Параграф","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.bg=e.bg||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"","Change image text alternative":"","Enter image caption":"","Full size image":"","Image resize list":"","Image toolbar":"","image widget":"Компонент за изображение","In line":"",Insert:"","Insert image":"Вмъкни изображение","Insert image via URL":"","Left aligned image":"",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"","Side image":"","Text alternative":"",Update:"","Update image URL":"","Upload failed":"","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.bg=n.bg||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Ðамали отÑтъпа","Increase indent":"Увеличи отÑтъпа"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.bg=n.bg||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"ИзтеглÑне","Edit link":"Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° линк",Link:"Линк","Link image":"","Link URL":"Уеб Ð°Ð´Ñ€ÐµÑ Ð½Ð° линка","Open in a new tab":"ОтварÑне в нов раздел","Open link in new tab":"ОтварÑне на линк в нов раздел","This link has no URL":"Този линк нÑма уеб адреÑ",Unlink:"Премахване на линка"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.bg=e.bg||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Водещи Ñимволи","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Ðомериране","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.bg=e.bg||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Колона",Dashed:"","Delete column":"Изтриване на колона","Delete row":"Изтриване на ред",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Заглавна колона","Header row":"Заглавен ред",Height:"","Horizontal text alignment toolbar":"","Insert column left":"Вмъкни колона отлÑво","Insert column right":"Вмъкни колона отдÑÑно","Insert row above":"Вмъкни ред отгоре","Insert row below":"Вмъкни ред отдолу","Insert table":"Вмъкни таблица",Inset:"","Justify cell text":"","Merge cell down":"ОбединÑване на клетка надолу","Merge cell left":"ОбединÑване на клетка отлÑво","Merge cell right":"ОбединÑване на клетка отдÑÑно","Merge cell up":"ОбединÑване на клетка отгоре","Merge cells":"ОбединÑване на клетки",None:"",Outset:"",Padding:"",Ridge:"",Row:"Ред","Select column":"","Select row":"",Solid:"","Split cell horizontally":"РазделÑне на клетки хоризонтално","Split cell vertically":"РазделÑне на клетки вертикално",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const e=o.bg=o.bg||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"",Cancel:"Отказ",Redo:"Повтори","Remove color":"","Restore default":"",Save:"Запазване","Show more items":"",Undo:"Отмени","Upload in progress":"Качването е в процеÑ"}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ca.js b/core/assets/vendor/ckeditor5/translations/ca.js new file mode 100644 index 000000000000..7f89e8f5476b --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ca.js @@ -0,0 +1 @@ +!function(i){const n=i.ca=i.ca||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Alineació centre","Align left":"Alineació esquerra","Align right":"Alineació dreta",Justify:"Justificar","Text alignment":"Alineació text","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.ca=i.ca||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Negreta",Code:"Codi",Italic:"Cursiva",Strikethrough:"Marcat",Subscript:"",Superscript:"",Underline:"Subrallat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(c){const i=c.ca=c.ca||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Cita de bloc"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.ca=a.ca||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Escull capçalera",Heading:"Capçalera","Heading 1":"Capçalera 1","Heading 2":"Capçalera 2","Heading 3":"Capçalera 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"Pà rraf","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const e=o.ca=o.ca||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"",Cancel:"Cancel·lar","Remove color":"","Restore default":"",Save:"Desar","Show more items":""}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/cs.js b/core/assets/vendor/ckeditor5/translations/cs.js new file mode 100644 index 000000000000..68194e32c060 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/cs.js @@ -0,0 +1 @@ +!function(n){const t=n.cs=n.cs||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Zarovnat na stÅ™ed","Align left":"Zarovnat vlevo","Align right":"Zarovnat vpravo",Justify:"Zarovnat do bloku","Text alignment":"Zarovnánà textu","Text alignment toolbar":"Panel nástrojů zarovnánà textu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.cs=n.cs||{};i.dictionary=Object.assign(i.dictionary||{},{Bold:"TuÄné",Code:"Kódový blok",Italic:"KurzÃva",Strikethrough:"PÅ™eÅ¡krtnuté",Subscript:"Dolnà index",Superscript:"Hornà index",Underline:"Podtržené"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(c){const i=c.cs=c.cs||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Citace"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.cs=e.cs||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose heading":"Zvolte nadpis",Heading:"Nadpis","Heading 1":"Nadpis 1","Heading 2":"Nadpis 2","Heading 3":"Nadpis 3","Heading 4":"Nadpis 4","Heading 5":"Nadpis 5","Heading 6":"Nadpis 6",Paragraph:"Odstavec","Type or paste your content here.":"Zde zadejte nebo vložte obsah.","Type your title":"Sem zadejte název"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.cs=n.cs||{};o.dictionary=Object.assign(o.dictionary||{},{"Horizontal line":"Vodorovná Äára"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.cs=e.cs||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Obrázek zarovnaný na stÅ™ed","Change image text alternative":"ZmÄ›nit alternativnà text obrázku","Enter image caption":"Zadejte popis obrázku","Full size image":"Obrázek v plné velikosti","Image resize list":"Seznam možnostà zmÄ›ny velikosti","Image toolbar":"Panel nástrojů obrázku","image widget":"ovládacà prvek obrázku","In line":"",Insert:"Vložit","Insert image":"Vložit obrázek","Insert image via URL":"Vložit obrázek pomocà URL","Left aligned image":"Obrázek zarovnaný vlevo",Original:"OriginálnÃ","Resize image":"ZmÄ›nit velikost","Resize image to %0":"ZmÄ›nit velikost na %0","Resize image to the original size":"ZmÄ›nit velikost na původnà velikost","Right aligned image":"Obrázek zarovnaný vpravo","Side image":"Postrannà obrázek","Text alternative":"Alternativnà text",Update:"Aktualizovat","Update image URL":"Aktualizovat URL obrázku","Upload failed":"Nahránà selhalo","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.cs=n.cs||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"ZmenÅ¡it odsazenÃ","Increase indent":"ZvÄ›tÅ¡it odsazenÃ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const n=a.cs=a.cs||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose language":"Vybrat jazyk",Language:"Jazyk","Remove language":"Odstranit jazyk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.cs=n.cs||{};a.dictionary=Object.assign(a.dictionary||{},{Downloadable:"Ke staženÃ","Edit link":"Upravit odkaz",Link:"Odkaz","Link image":"Adresa obrázku","Link URL":"URL odkazu","Open in a new tab":"OtevÅ™Ãt v nové kartÄ›","Open link in new tab":"OtevÅ™Ãt odkaz v nové kartÄ›","This link has no URL":"Tento odkaz nemá žádnou URL",Unlink:"Odstranit odkaz"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.cs=e.cs||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Odrážky","Bulleted list styles toolbar":"Panel seznamu s odrážkami",Circle:"Kruh",Decimal:"ÄŒÃsla","Decimal with leading zero":"ÄŒÃsla s nulou na zaÄátku",Disc:"Plný kruh","Lower-latin":"Malá pÃsmena","Lower–roman":"Malé Å™Ãmské ÄÃsla","Numbered List":"ÄŒÃslovánÃ","Numbered list styles toolbar":"Panel se styly ÄÃslovaného seznamu",Square:"ÄŒtverec","To-do List":"Seznam úkolů","Toggle the circle list style":"PÅ™epnout na seznam s kruhovým oznaÄenÃm","Toggle the decimal list style":"PÅ™epnout na ÄÃselný seznam","Toggle the decimal with leading zero list style":"PÅ™epnout na ÄÃselný seznam s nulou na zaÄátku","Toggle the disc list style":"PÅ™epnout na seznam s oznaÄenÃm plného kruhu","Toggle the lower–latin list style":"PÅ™epnout na seznam s malými pÃsmeny","Toggle the lower–roman list style":"PÅ™epnout na seznam s malými Å™Ãmskými ÄÃsly","Toggle the square list style":"PÅ™epnout na seznam se Ätvercovým oznaÄenÃm","Toggle the upper–latin list style":"PÅ™epnout na seznam s velkými pÃsmeny","Toggle the upper–roman list style":"PÅ™epnout na seznam s velkými Å™Ãmskými ÄÃsly","Upper-latin":"Velká pÃsmena","Upper-roman":"Velké Å™Ãmské ÄÃsla"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.cs=n.cs||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Odstranit formátovánÃ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const e=t.cs=t.cs||{};e.dictionary=Object.assign(e.dictionary||{},{"Align cell text to the bottom":"Zarovnat text buňky dolů","Align cell text to the center":"Zarovnat text buňky na stÅ™ed","Align cell text to the left":"Zarovnat text buňky doleva","Align cell text to the middle":"Zarovnat text buňky na stÅ™ed","Align cell text to the right":"Zarovnat text buňky doprava","Align cell text to the top":"Zarovnat text buňky nahoru","Align table to the left":"Zarovnat tabulku doleva","Align table to the right":"Zarovnat tabulku doprava",Alignment:"ZarovnánÃ",Background:"PozadÃ",Border:"Okraj","Cell properties":"Vlastnosti buňky","Center table":"Centrovat tabulku",Color:"Barva","Color picker":"Vybrat barvu",Column:"Sloupec",Dashed:"Čárkovaná","Delete column":"Smazat sloupec","Delete row":"Smazat řádek",Dimensions:"RozmÄ›ry",Dotted:"TeÄkovaná",Double:"Dvojitá","Enter table caption":"",Groove:"Drážkovaná","Header column":"Sloupec záhlavÃ","Header row":"Řádek záhlavÃ",Height:"Výška","Horizontal text alignment toolbar":"Horizontálnà zarovnánà textu v panelu","Insert column left":"Vložit sloupec vlevo","Insert column right":"Vložit sloupec vpravo","Insert row above":"Vložit řádek pÅ™ed","Insert row below":"Vložit řádek pod","Insert table":"Vložit tabulku",Inset:"Vložená zevnitÅ™","Justify cell text":"Zarovnat text buňky z obou stran","Merge cell down":"SlouÄit s buňkou pod","Merge cell left":"SlouÄit s buňkou vlevo","Merge cell right":"SlouÄit s buňkou vpravo","Merge cell up":"SlouÄit s buňkou nad","Merge cells":"SlouÄit buňky",None:"Žádná",Outset:"Vložená zvenku",Padding:"VnitÅ™nà okraj",Ridge:"Rámovaná",Row:"Řádek","Select column":"Vybrat sloupec","Select row":"Vybrat řádek",Solid:"Plná","Split cell horizontally":"RozdÄ›lit buňky horizontálnÄ›","Split cell vertically":"RozdÄ›lit buňky vertikálnÄ›",Style:"Styl","Table alignment toolbar":"Panel zarovnánà tabulky","Table cell text alignment":"Zarovnánà textu buňky tabulky","Table properties":"Vlastnosti tabulky","Table toolbar":"Panel nástrojů tabulky",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Barva má nesprávný formát. Zkuste "#FF0000", "rgb(255,0,0)" nebo "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Hodnota je nesprávná. Zkuste "10px", "2em" nebo jednoduÅ¡e "2".',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Vertikálnà zarovnánà textu v panelu",Width:"Å ÃÅ™ka"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const t=a.cs=a.cs||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"ČásteÄnÄ› rovný",Angle:"Úhel","Approximately equal to":"Aproximace","Asterisk operator":"HvÄ›zdiÄka / násobenÃ","Austral sign":"Znak Austral","back with leftwards arrow above":"Å¡ipka zpÄ›t","Bitcoin sign":"MÄ›na Bitcoin","Cedi sign":"Znak Cedi","Cent sign":"Znak cent","Character categories":"Kategorie znaků","Colon sign":"dvojteÄka","Contains as member":"Obsahuje prvek","Copyright sign":"Copyright","Cruzeiro sign":"MÄ›na Cruzeiro","Currency sign":"Znak mÄ›ny","Degree sign":"Znak stupeň","Division sign":"DÄ›lenÃ","Dollar sign":"Znak Dolar","Dong sign":"Znak Dong","Double dagger":"DvojkřÞ","Double exclamation mark":"Dvojitý vykÅ™iÄnÃk","Double low-9 quotation mark":"Dvojitá spodnà uvozovka","Double question mark":"Dvojitý otaznÃk","downwards arrow to bar":"Å¡ipka dolů do svislé Äáry","downwards dashed arrow":"pÅ™eruÅ¡ovaná Å¡ipka dolů","downwards double arrow":"dvojitá Å¡ipka dolů","Drachma sign":"Znak Drachma","Element of":"Patřà / Je souÄástÃ","Em dash":"Dlouhá pomlÄka","Empty set":"Prázdná množina","En dash":"PomlÄka","end with leftwards arrow above":"Å¡ipka konec","Euro sign":"Znak Euro","Euro-currency sign":"Mena Euro","Exclamation question mark":"VykÅ™iÄnÃk a otaznÃk","For all":"Pro vÅ¡echny prvky v množinÄ›","Fraction slash":"LomÃtko / DÄ›lenÃ","French franc sign":"MÄ›na Francouzský Frank","German penny sign":"NÄ›mecká penny","Greater-than or equal to":"VÄ›tÅ¡Ã nebo roven","Greater-than sign":"VÄ›tÅ¡Ã než","Guarani sign":"Znak Guarani","Horizontal ellipsis":"TeÄky","Hryvnia sign":"Znak Hryvnia","Identical to":"Identický k","Indian rupee sign":"Znak Indická rupia",Infinity:"NekoneÄno",Integral:"Integrál",Intersection:"PrůseÄÃk / Průnik","Inverted exclamation mark":"Obrácený vykÅ™iÄnÃk","Inverted question mark":"Obrácený otaznÃk","Kip sign":"Znak Kip","Latin capital letter a with breve":"Latinské velké pÃsmeno a s háÄkem","Latin capital letter a with macron":"Latinské velké pÃsmeno a s Äárou","Latin capital letter a with ogonek":"Latinské velké pÃsmeno a s háÄkem","Latin capital letter c with acute":"Latinské velké pÃsmeno c s Äárkou","Latin capital letter c with caron":"Latinské veľké pÃsmeno c s mäkÄeňom","Latin capital letter c with circumflex":"Latinské velké pÃsmeno c s obráceným háÄkem","Latin capital letter c with dot above":"Latinské velké pÃsmeno c s teÄkou nad znakem","Latin capital letter d with caron":"Latinské velké pÃsmeno d s háÄkem","Latin capital letter d with stroke":"Latinské velké pÃsmeno d s pÅ™eÅ¡krtnutÃm","Latin capital letter e with breve":"Latinské velké pÃsmeno e s háÄkem","Latin capital letter e with caron":"Latinské velké pÃsmeno e s háÄkem","Latin capital letter e with dot above":"Latinské velké pÃsmeno e s teÄkou nad znakem","Latin capital letter e with macron":"Latinské velké pÃsmeno e s Äárou","Latin capital letter e with ogonek":"Latinské velké pÃsmeno e s háÄkem","Latin capital letter eng":"Latinské velké pÃsmeno Eng","Latin capital letter g with breve":"Latinské velké pÃsmeno g s háÄkem","Latin capital letter g with cedilla":"Latinské velké pÃsmeno g s háÄkem","Latin capital letter g with circumflex":"Latinské velké pÃsmeno g s obráceným háÄkem","Latin capital letter g with dot above":"Latinské velké pÃsmeno g s teÄkou nad znakem","Latin capital letter h with circumflex":"Latinské velké pÃsmeno h s obráceným háÄkem","Latin capital letter h with stroke":"Latinské velké pÃsmeno h s pÅ™eÅ¡krtnutÃm","Latin capital letter i with breve":"Latinské velké pÃsmeno i s háÄkem","Latin capital letter i with dot above":"Latinské velké pÃsmeno i s teÄkou nad znakem","Latin capital letter i with macron":"Latinské velké pÃsmeno i s Äárou","Latin capital letter i with ogonek":"Latinské velké pÃsmeno i s háÄkem","Latin capital letter i with tilde":"Latinské velké pÃsmeno i s vlnovkou","Latin capital letter j with circumflex":"Latinské velké pÃsmeno j s obráceným háÄkem","Latin capital letter k with cedilla":"Latinské velké pÃsmeno k s háÄkem","Latin capital letter l with acute":"Latinské velké pÃsmeno l s Äárkou","Latin capital letter l with caron":"Latinské velké pÃsmeno l s háÄkem","Latin capital letter l with cedilla":"Latinské velké pÃsmeno l s háÄkem","Latin capital letter l with middle dot":"Latinské velké pÃsmeno l s teÄkou uprostÅ™ed","Latin capital letter l with stroke":"Latinské velké pÃsmeno l s pÅ™eÅ¡krtnutÃm","Latin capital letter n with acute":"Latinské velké pÃsmeno n s Äárkou","Latin capital letter n with caron":"Latinské velké pÃsmeno n s háÄkem","Latin capital letter n with cedilla":"Latinské velké pÃsmeno n s háÄkem","Latin capital letter o with breve":"Latinské velké pÃsmeno o s háÄkem","Latin capital letter o with double acute":"Latinské velké pÃsmeno o s Äárkou","Latin capital letter o with macron":"Latinské velké pÃsmeno o s Äárou","Latin capital letter r with acute":"Latinské velké pÃsmeno r s Äárkou","Latin capital letter r with caron":"Latinské velké pÃsmeno r s háÄkem","Latin capital letter r with cedilla":"Latinské velké pÃsmeno r s háÄkem","Latin capital letter s with acute":"Latinské velké pÃsmeno s s Äárkou","Latin capital letter s with caron":"Latinské velké pÃsmeno s s háÄkem","Latin capital letter s with cedilla":"Latinské velké pÃsmeno s s háÄkem","Latin capital letter s with circumflex":"Latinské velké pÃsmeno s s obráceným háÄkem","Latin capital letter t with caron":"Latinské velké pÃsmeno t s háÄkem","Latin capital letter t with cedilla":"Latinské velké pÃsmeno t s háÄkem","Latin capital letter t with stroke":"Latinské velké pÃsmeno t s pÅ™eÅ¡krtnutÃm","Latin capital letter u with breve":"Latinské velké pÃsmeno u s háÄkem","Latin capital letter u with double acute":"Latinské velké pÃsmeno u s dvojitým akcentu","Latin capital letter u with macron":"Latinské velké pÃsmeno u s Äárou","Latin capital letter u with ogonek":"Latinské velké pÃsmeno u s háÄkem","Latin capital letter u with ring above":"Latinské velké pÃsmeno u s kroužkem nad znakem","Latin capital letter u with tilde":"Latinské velké pÃsmeno u s vlnovkou","Latin capital letter w with circumflex":"Latinské velké pÃsmeno w s obráceným háÄkem","Latin capital letter y with circumflex":"Latinské velké pÃsmeno y s obráceným háÄkem","Latin capital letter y with diaeresis":"Latinské velké pÃsmeno y s dvojteÄkou nad znakem","Latin capital letter z with acute":"Latinské velké pÃsmeno z s Äárkou","Latin capital letter z with caron":"Latinské velké pÃsmeno z s háÄkem","Latin capital letter z with dot above":"Latinské velké pÃsmeno z s teÄkou nad znakem","Latin capital ligature ij":"Latinský velký znak ligatury ij","Latin capital ligature oe":"Latinský velký znak ligatury oe","Latin small letter a with breve":"Latinské malé pÃsmeno a s háÄkem","Latin small letter a with macron":"Latinské malé pÃsmeno a s Äárou","Latin small letter a with ogonek":"Latinské malé pÃsmeno a s háÄkem","Latin small letter c with acute":"Latinské malé pÃsmeno c s Äárkou","Latin small letter c with caron":"Latinské malé pÃsmeno c s háÄkem","Latin small letter c with circumflex":"Latinské malé pÃsmeno c s obráceným háÄkem","Latin small letter c with dot above":"Latinské malé pÃsmeno c s teÄkou nad znakem","Latin small letter d with caron":"Latinské malé pÃsmeno d s háÄkem","Latin small letter d with stroke":"Latinské malé pÃsmeno d s pÅ™eÅ¡krtnutÃm","Latin small letter dotless i":"Latinské malé pÃsmeno i bez teÄky","Latin small letter e with breve":"Latinské malé pÃsmeno e s háÄkem","Latin small letter e with caron":"Latinské malé pÃsmeno e s háÄkem","Latin small letter e with dot above":"Latinské malé pÃsmeno e s teÄkou nad znakem","Latin small letter e with macron":"Latinské malé pÃsmeno e s Äárou","Latin small letter e with ogonek":"Latinské malé pÃsmeno e s háÄkem","Latin small letter eng":"Latinské malé pÃsmeno Eng","Latin small letter f with hook":"Funkce","Latin small letter g with breve":"Latinské malé pÃsmeno g s háÄkem","Latin small letter g with cedilla":"Latinské malé pÃsmeno g s háÄkem","Latin small letter g with circumflex":"Latinské malé pÃsmeno g s obráceným háÄkem","Latin small letter g with dot above":"Latinské malé pÃsmeno g s teÄkou nad znakem","Latin small letter h with circumflex":"Latinské malé pÃsmeno h s obráceným háÄkem","Latin small letter h with stroke":"Latinské malé pÃsmeno h s pÅ™eÅ¡krtnutÃm","Latin small letter i with breve":"Latinské malé pÃsmeno i s háÄkem","Latin small letter i with macron":"Latinské malé pÃsmeno i s Äárou","Latin small letter i with ogonek":"Latinské malé pÃsmeno i s háÄkem","Latin small letter i with tilde":"Latinské malé pÃsmeno i s vlnovkou","Latin small letter j with circumflex":"Latinské malé pÃsmeno j s obráceným háÄkem","Latin small letter k with cedilla":"Latinské malé pÃsmeno k s háÄkem","Latin small letter kra":"Latinský malý znak Kra","Latin small letter l with acute":"Latinské malé pÃsmeno l s Äárkou","Latin small letter l with caron":"Latinské malé pÃsmeno l s háÄkem","Latin small letter l with cedilla":"Latinské malé pÃsmeno l s háÄkem","Latin small letter l with middle dot":"Latinské malé pÃsmeno l s teÄkou uprostÅ™ed","Latin small letter l with stroke":"Latinské malé pÃsmeno l s pÅ™eÅ¡krtnutÃm","Latin small letter long s":"Malé dlouhé pÃsmeno s","Latin small letter n preceded by apostrophe":"Latinské malé pÃsmeno n s apostrofem","Latin small letter n with acute":"Latinské malé pÃsmeno n s Äárkou","Latin small letter n with caron":"Latinské malé pÃsmeno n s háÄkem","Latin small letter n with cedilla":"Latinské malé pÃsmeno n s háÄkem","Latin small letter o with breve":"Latinské malé pÃsmeno o s háÄkem","Latin small letter o with double acute":"Latinské malé pÃsmeno o s Äárkou","Latin small letter o with macron":"Latinské malé pÃsmeno o s Äárou","Latin small letter r with acute":"Latinské malé pÃsmeno r s Äárkou","Latin small letter r with caron":"Latinské malé pÃsmeno r s háÄkem","Latin small letter r with cedilla":"Latinské malé pÃsmeno r s háÄkem","Latin small letter s with acute":"Latinské malé pÃsmeno s s Äárkou","Latin small letter s with caron":"Latinské malé pÃsmeno s s háÄkem","Latin small letter s with cedilla":"Latinské malé pÃsmeno s s háÄkem","Latin small letter s with circumflex":"Latinské malé pÃsmeno s s obráceným háÄkem","Latin small letter t with caron":"Latinské malé pÃsmeno t s háÄkem","Latin small letter t with cedilla":"Latinské malé pÃsmeno t s háÄkem","Latin small letter t with stroke":"Latinské malé pÃsmeno t s pÅ™eÅ¡krtnutÃm","Latin small letter u with breve":"Latinské malé pÃsmeno u s háÄkem","Latin small letter u with double acute":"Latinské malé pÃsmeno u s dvojitým akcentu","Latin small letter u with macron":"Latinské malé pÃsmeno o s Äárou","Latin small letter u with ogonek":"Latinské malé pÃsmeno u s háÄkem","Latin small letter u with ring above":"Latinské malé pÃsmeno u s kroužkem nad znakem","Latin small letter u with tilde":"Latinské malé pÃsmeno u s vlnovkou","Latin small letter w with circumflex":"Latinské malé pÃsmeno w s obráceným háÄkem","Latin small letter y with circumflex":"Latinské malé pÃsmeno y s obráteným mäkÄeňom","Latin small letter z with acute":"Latinské malé pÃsmeno z s Äárkou","Latin small letter z with caron":"Malé pÃsmeno s z háÄkem","Latin small letter z with dot above":"Latinské malé pÃsmeno z s teÄkou nad znakem","Latin small ligature ij":"Latinský malý znak ligatury ij","Latin small ligature oe":"Latinský malý znak ligatury oe","Left double quotation mark":"Levá dvojitá uvozovka","Left single quotation mark":"Levá uvozovka","Left-pointing double angle quotation mark":"Dvojitá Å¡ipka ukazujÃcà do leva","leftwards arrow to bar":"Å¡ipka doleva do svislé Äáry","leftwards dashed arrow":"pÅ™eruÅ¡ovaná Å¡ipka doleva","leftwards double arrow":"dvojitá Å¡ipka doleva","Less-than or equal to":"MenÅ¡Ã nebo roven","Less-than sign":"MenÅ¡Ã než","Lira sign":"MÄ›na Lira","Livre tournois sign":"Znak Livre tournois","Logical and":"Logický AND","Logical or":"Logický OR",Macron:"Hornà Äára","Manat sign":"Znak Manat","Mill sign":"Znak Mill","Minus sign":"Znak mÃnus","Multiplication sign":"NásobenÃ","N-ary product":"Znak cyklického násobenÃ","N-ary summation":"Znak cyklického sÄÃtánÃ",Nabla:"Nabla","Naira sign":"Znak Naira","New sheqel sign":"Nový znak Å¡ekel","Nordic mark sign":"Znak Nórska marka","Not an element of":"Nepatřà / Nenà souÄástÃ","Not equal to":"Nerovná se","Not sign":"Nenà rovný","on with exclamation mark with left right arrow above":"ON s vykÅ™iÄnÃkem se Å¡ipkou doleva doprava nahoru",Overline:"PÅ™eÅ¡krtnutÃ","Paragraph sign":"Odstavec","Partial differential":"Parciálnà diference","Per mille sign":"Promile","Per ten thousand sign":"Na deset tisÃc","Peseta sign":"Znak Peseta","Peso sign":"Znak Peso","Plus-minus sign":"Znak plus-minus","Pound sign":"Znak Libra","Proportional to":"ÚmÄ›rný k","Question exclamation mark":"OtaznÃk a vykÅ™iÄnÃk","Registered sign":"Registrovaný","Reversed paragraph sign":"Obrácený znak odstavce","Right double quotation mark":"Pravá dvojitá uvozovka","Right single quotation mark":"Pravá uvozovka","Right-pointing double angle quotation mark":"Dvojitá Å¡ipka ukazujÃcà do prava","rightwards arrow to bar":"Å¡ipka doprava do svislé Äáry","rightwards dashed arrow":"Äárkovaná Å¡ipka doprava","rightwards double arrow":"dvojitá Å¡ipka doprava","Ruble sign":"Znak Ruble","Rupee sign":"Znak Rupee","Section sign":"Sekce","Single left-pointing angle quotation mark":"Å ipka ukazujÃcà do leva","Single low-9 quotation mark":"Spodnà uvozovka","Single right-pointing angle quotation mark":"Å ipka ukazujÃcà do prava","soon with rightwards arrow above":"brzy se Å¡ipkou doprava nahoru","Special characters":"Speciálnà znaky","Spesmilo sign":"Znak Spesmilo","Square root":"Odmocnina","Tenge sign":"Znak Tenge","There exists":"Existuje v množinÄ›","Tilde operator":"Vlnovka","top with upwards arrow above":"TOP se Å¡ipkou nahoru","Trade mark sign":"Ochranná známka","Tugrik sign":"Znak Tugrik","Turkish lira sign":"Znak Turecká lÃra","Two dot leader":"Horizontálnà dvojteÄka",Union:"SjednocenÃ","up down arrow with base":"Å ipka nahoru-dolů od základny","upwards arrow to bar":"Å¡ipka nahoru do svislé Äáry","upwards dashed arrow":"Äárkovaná Å¡ipka nahoru","upwards double arrow":"dvojitá Å¡ipka nahoru","Vulgar fraction one half":"Polovina","Vulgar fraction one quarter":"Jedna Ätvrtina","Vulgar fraction three quarters":"TÅ™i Ätvrtiny","Won sign":"Znak Won","Yen sign":"Znak Jen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.cs=e.cs||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"AkvamarÃnová",Black:"ÄŒerná",Blue:"Modrá",Cancel:"ZruÅ¡it","Dim grey":"TmavÄ› Å¡edá","Dropdown toolbar":"Rozbalovacà panel nástrojů","Edit block":"Upravit blok","Editor toolbar":"Panel nástrojů editoru",Green:"Zelená",Grey:"Å edá","Insert paragraph after block":"Vložte odstavec za blok","Insert paragraph before block":"Vložte odstavec pÅ™ed blok","Light blue":"SvÄ›tle modrá","Light green":"SvÄ›tle zelená","Light grey":"SvÄ›tle Å¡edá",Next:"DalÅ¡Ã",Orange:"Oranžová",Previous:"PÅ™edchozÃ",Purple:"Fialová",Red:"ÄŒervená",Redo:"Znovu","Remove color":"Odstranit barvu","Restore default":"","Rich Text Editor":"Textový editor","Rich Text Editor, %0":"Textový editor, %0",Save:"Uložit","Select all":"Vybrat vÅ¡e","Show more items":"Zobrazit dalÅ¡Ã položky",Turquoise:"Tyrkysová",Undo:"ZpÄ›t","Upload in progress":"ProbÃhá nahrávánÃ",White:"BÃlá","Widget toolbar":"Panel nástrojů ovládacÃho prvku",Yellow:"Žlutá"}),o.getPluralForm=function(e){return 1==e&&e%1==0?0:e>=2&&e<=4&&e%1==0?1:e%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/da.js b/core/assets/vendor/ckeditor5/translations/da.js new file mode 100644 index 000000000000..80ca5205ea11 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/da.js @@ -0,0 +1 @@ +!function(t){const n=t.da=t.da||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Justér center","Align left":"Justér venstre","Align right":"Justér højre",Justify:"Justér","Text alignment":"Tekstjustering","Text alignment toolbar":"Tekstjustering værktøjslinje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const e=t.da=t.da||{};e.dictionary=Object.assign(e.dictionary||{},{Bold:"Fed",Code:"Kode",Italic:"Kursiv",Strikethrough:"Gennemstreg",Subscript:"Sænket skrift",Superscript:"Hævet skrift",Underline:"Understreget"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.da=i.da||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Blot citat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const e=i.da=i.da||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Vælg overskrift",Heading:"Overskrift","Heading 1":"Overskrift 1","Heading 2":"Overskrift 2","Heading 3":"Overskrift 3","Heading 4":"Overskrift 4","Heading 5":"Overskrift 5","Heading 6":"Overskrift 6",Paragraph:"Afsnit","Type or paste your content here.":"Skriv eller indsæt dit indhold her.","Type your title":"Skriv din titel"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.da=i.da||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Horisontal linje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.da=e.da||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Centreret billede","Change image text alternative":"Skift alternativ billedtekst","Enter image caption":"Indtast billedoverskrift","Full size image":"Fuld billedstørrelse","Image resize list":"","Image toolbar":"Billedværktøjslinje","image widget":"billed widget","In line":"",Insert:"","Insert image":"Indsæt billede","Insert image via URL":"","Left aligned image":"Venstrestillet billede",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Højrestillet billede","Side image":"Sidebillede","Text alternative":"Alternativ tekst",Update:"","Update image URL":"","Upload failed":"Upload fejlede","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.da=n.da||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Formindsk indrykning","Increase indent":"Forøg indrykning"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.da=n.da||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Kan downloades","Edit link":"Redigér link",Link:"Link","Link image":"","Link URL":"Link URL","Open in a new tab":"Ã…ben i ny fane","Open link in new tab":"Ã…ben link i ny fane","This link has no URL":"Dette link har ingen URL",Unlink:"Fjern link"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.da=e.da||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Punktopstilling","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Opstilling med tal","Numbered list styles toolbar":"",Square:"","To-do List":"To-do liste","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.da=n.da||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Fjern format"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.da=e.da||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"Justér tekstcelle til bunden","Align cell text to the center":"Justér tekstcelle centreret","Align cell text to the left":"Justér tekstcelle til venstre","Align cell text to the middle":"Justér tekstcelle til midten","Align cell text to the right":"Justér tekstcelle til højre","Align cell text to the top":"Justér tekstcelle til top","Align table to the left":"Justér tabel til venstre","Align table to the right":"Justér tabel til højre",Alignment:"Justering",Background:"Baggrund",Border:"Ramme","Cell properties":"Celleegenskaber","Center table":"Centrér tabel",Color:"Farve","Color picker":"",Column:"Kolonne",Dashed:"Stiplet (streg)","Delete column":"Slet kolonne","Delete row":"Slet række",Dimensions:"Dimensioner",Dotted:"Stiplet (prik)",Double:"Dobbel","Enter table caption":"",Groove:"Not","Header column":"Headerkolonne","Header row":"Headerrække",Height:"Højde","Horizontal text alignment toolbar":"Horisontal tekstjustering værktøjslinje","Insert column left":"Indsæt kolonne venstre","Insert column right":"Indsæt kolonne højre","Insert row above":"Indsæt header over","Insert row below":"Indsæt header under","Insert table":"Indsæt tabel",Inset:"Forsænket","Justify cell text":"Justér tekstcelle","Merge cell down":"Flet celler ned","Merge cell left":"Flet celler venstre","Merge cell right":"Flet celler højre","Merge cell up":"Flet celler op","Merge cells":"Flet celler",None:"Ingen",Outset:"Fra starten",Padding:"Fyld",Ridge:"Kam",Row:"Række","Select column":"","Select row":"",Solid:"Massiv","Split cell horizontally":"Del celle horisontalt","Split cell vertically":"Del celle vertikalt",Style:"Stil","Table alignment toolbar":"Tabeljustering værktøjslinje","Table cell text alignment":"Tabelcelle tekstjustering","Table properties":"Tabelegenskaber","Table toolbar":"Tabel værktøjslinje",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Farven er ugyldig. Prøv "#FF0000" eller "rgb(255,0,0)" eller "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Værdien er ugyldig. Prøv "10px" eller "2em" eller ganske enkelt "2".',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Vertikal tekstjustering værktøjslinje",Width:"Bredde"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(r){const e=r.da=r.da||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 af %1",Aquamarine:"MarineblÃ¥",Black:"Sort",Blue:"BlÃ¥",Cancel:"Annullér","Dim grey":"Dunkel grÃ¥","Dropdown toolbar":"Dropdown værktøjslinje","Edit block":"Redigér blok","Editor toolbar":"Editor værktøjslinje",Green:"Grøn",Grey:"GrÃ¥","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Lys blÃ¥","Light green":"Lys grøn","Light grey":"Lys grÃ¥",Next:"Næste",Orange:"Orange",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gentag","Remove color":"Fjern farve","Restore default":"","Rich Text Editor":"Wysiwyg editor","Rich Text Editor, %0":"Wysiwyg editor, %0",Save:"Gem","Show more items":"Vis flere emner",Turquoise:"Turkis",Undo:"Fortryd","Upload in progress":"Upload i gang",White:"Hvid","Widget toolbar":"Widget værktøjslinje",Yellow:"Gyl"}),e.getPluralForm=function(r){return 1!=r}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/de-ch.js b/core/assets/vendor/ckeditor5/translations/de-ch.js new file mode 100644 index 000000000000..ed1c2600d396 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/de-ch.js @@ -0,0 +1 @@ +!function(t){const i=t["de-ch"]=t["de-ch"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Zentriert","Align left":"Linksbündig","Align right":"Rechtsbündig",Justify:"Blocksatz","Text alignment":"Textausrichtung","Text alignment toolbar":"Textausrichtung Werkzeugleiste"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e["de-ch"]=e["de-ch"]||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Fett",Code:"Code",Italic:"Kursiv",Strikethrough:"Durchgestrichen",Subscript:"Tiefgestellt",Superscript:"Hochgestellt",Underline:"Unterstrichen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(c){const i=c["de-ch"]=c["de-ch"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Blockzitat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e["de-ch"]=e["de-ch"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose heading":"Ãœberschrift auswählen",Heading:"Ãœberschrift","Heading 1":"Ãœberschrift 1","Heading 2":"Ãœberschrift 2","Heading 3":"Ãœberschrift 3","Heading 4":"Ãœberschrift 4","Heading 5":"Ãœberschrift 5","Heading 6":"Ãœberschrift 6",Paragraph:"Absatz","Type or paste your content here.":"Hier Inhalt einfügen.","Type your title":"Titel eingeben"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i["de-ch"]=i["de-ch"]||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Horizontale Linie"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e["de-ch"]=e["de-ch"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"zentriertes Bild","Change image text alternative":"Alternativtext ändern","Enter image caption":"Bildunterschrift eingeben","Full size image":"Bild in voller Grösse","Image resize list":"Bildgrössen-Liste","Image toolbar":"Bild Werkzeugleiste","image widget":"Bild-Steuerelement","In line":"",Insert:"Einfügen","Insert image":"Bild einfügen","Insert image via URL":"Bild von URL einfügen","Left aligned image":"linksbündiges Bild",Original:"Original","Resize image":"Bildgrösse ändern","Resize image to %0":"Bildgrösse ändern in %0","Resize image to the original size":"Originalgrösse wiederherstellen","Right aligned image":"rechtsbündiges Bild","Side image":"Ausgerichtetes Bild","Text alternative":"Alternativtext",Update:"Aktualisieren","Update image URL":"Bild-URL aktualisieren","Upload failed":"Hochladen fehlgeschlagen","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n["de-ch"]=n["de-ch"]||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Einzug verkleinern","Increase indent":"Einzug vergrössern"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const n=e["de-ch"]=e["de-ch"]||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose language":"Sprache auswählen",Language:"Sprache","Remove language":"Sprache entfernen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n["de-ch"]=n["de-ch"]||{};e.dictionary=Object.assign(e.dictionary||{},{Downloadable:"Herunterladbar","Edit link":"Link bearbeiten",Link:"Link","Link image":"Bild verlinken","Link URL":"Link Adresse","Open in a new tab":"In neuem Tab öffnen","Open link in new tab":"Link in neuem Tab öffnen","This link has no URL":"Dieser Link hat keine Adresse",Unlink:"Link entfernen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e["de-ch"]=e["de-ch"]||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Aufzählungsliste","Bulleted list styles toolbar":"Darstellung der ungeordneten Liste",Circle:"Leerer Kreis",Decimal:"Dezimalzahlen","Decimal with leading zero":"Dezimalzahlen mit vorangestellten Nullen",Disc:"Gefüllter Kreis","Lower-latin":"Kleingeschriebene lateinische Buchstaben","Lower–roman":"Kleingeschriebene römische Zahlen","Numbered List":"Nummerierte Liste","Numbered list styles toolbar":"Darstellung der nummerierten Liste",Square:"Quadrat","To-do List":"Aufgabenliste","Toggle the circle list style":"Leeren Kreis einstellen","Toggle the decimal list style":"Dezimalzahlen einstellen","Toggle the decimal with leading zero list style":"Dezimalzahlen mit vorangestellten Nullen einstellen","Toggle the disc list style":"Gefüllten Kreis einstellen","Toggle the lower–latin list style":"Kleingeschriebene lateinische Buchstaben einstellen","Toggle the lower–roman list style":"Kleingeschriebene römische Zahlen einstellen","Toggle the square list style":"Quadrat einstellen","Toggle the upper–latin list style":"Grossgeschriebene lateinische Buchstaben einstellen","Toggle the upper–roman list style":"Grossgeschriebene römische Zahlen einstellen","Upper-latin":"Grossgeschriebene lateinische Buchstaben","Upper-roman":"Grossgeschriebene römische Zahlen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n["de-ch"]=n["de-ch"]||{};e.dictionary=Object.assign(e.dictionary||{},{"Remove Format":"Formatierung entfernen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e["de-ch"]=e["de-ch"]||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Spalte",Dashed:"","Delete column":"Spalte löschen","Delete row":"Zeile löschen",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Kopfspalte","Header row":"Kopfspalte",Height:"","Horizontal text alignment toolbar":"","Insert column left":"","Insert column right":"","Insert row above":"Zeile oben einfügen","Insert row below":"Zeile unten einfügen","Insert table":"Tabelle einfügen",Inset:"","Justify cell text":"","Merge cell down":"Zelle unten verbinden","Merge cell left":"Zelle links verbinden","Merge cell right":"Zele rechts verbinden","Merge cell up":"Zelle oben verbinden","Merge cells":"Zellen verbinden",None:"",Outset:"",Padding:"",Ridge:"",Row:"Zeile","Select column":"","Select row":"",Solid:"","Split cell horizontally":"Zelle horizontal teilen","Split cell vertically":"Zelle vertikal teilen",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e["de-ch"]=e["de-ch"]||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Abbrechen","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Insert paragraph after block":"Absatz nach Block einfügen","Insert paragraph before block":"Absatz vor Block einfügen","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Wiederherstellen","Remove color":"Farbe entfernen","Restore default":"","Rich Text Editor":"Rich-Text-Edito","Rich Text Editor, %0":"Rich-Text-Editor, %0",Save:"Speichern","Select all":"Alles auswählen","Show more items":"",Turquoise:"",Undo:"Rückgängig","Upload in progress":"Upload läuft",White:"","Widget toolbar":"Widget Werkzeugleiste",Yellow:""}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/de.js b/core/assets/vendor/ckeditor5/translations/de.js new file mode 100644 index 000000000000..f25a85c6634d --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/de.js @@ -0,0 +1 @@ +!function(n){const t=n.de=n.de||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Zentriert","Align left":"Linksbündig","Align right":"Rechtsbündig",Justify:"Blocksatz","Text alignment":"Textausrichtung","Text alignment toolbar":"Text-Ausrichtung Toolbar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.de=e.de||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Fett",Code:"Code",Italic:"Kursiv",Strikethrough:"Durchgestrichen",Subscript:"Tiefgestellt",Superscript:"Hochgestellt",Underline:"Unterstrichen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.de=i.de||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Blockzitat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.de=e.de||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose heading":"Ãœberschrift auswählen",Heading:"Ãœberschrift","Heading 1":"Ãœberschrift 1","Heading 2":"Ãœberschrift 2","Heading 3":"Ãœberschrift 3","Heading 4":"Ãœberschrift 4","Heading 5":"Ãœberschrift 5","Heading 6":"Ãœberschrift 6",Paragraph:"Absatz","Type or paste your content here.":"Hier Inhalt einfügen.","Type your title":"Titel eingeben"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.de=i.de||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Horizontale Linie"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.de=e.de||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"Bild teilt Text","Centered image":"Zentriertes Bild","Change image text alternative":"Alternativtext ändern","Enter image caption":"Bildunterschrift eingeben","Full size image":"Bild in voller Größe","Image resize list":"Bildgrößen-Liste","Image toolbar":"Bild Werkzeugleiste","image widget":"Bild-Steuerelement","In line":"Text in Zeile",Insert:"Einfügen","Insert image":"Bild einfügen","Insert image via URL":"Bild von URL einfügen","Left aligned image":"Linksbündiges Bild",Original:"Original","Resize image":"Bildgröße ändern","Resize image to %0":"Bildgröße ändern in %0","Resize image to the original size":"Bild in Originalgröße ändern","Right aligned image":"Rechtsbündiges Bild","Side image":"Seitenbild","Text alternative":"Alternativtext",Update:"Aktualisieren","Update image URL":"Bild-URL aktualisieren","Upload failed":"Hochladen fehlgeschlagen","Wrap text":"Text umfließt Bild"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.de=n.de||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Einzug verkleinern","Increase indent":"Einzug vergrößern"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const n=e.de=e.de||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose language":"Sprache auswählen",Language:"Sprache","Remove language":"Sprache entfernen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.de=n.de||{};e.dictionary=Object.assign(e.dictionary||{},{Downloadable:"Herunterladbar","Edit link":"Link bearbeiten",Link:"Link","Link image":"Bild verlinken","Link URL":"Link Adresse","Open in a new tab":"In neuem Tab öffnen","Open link in new tab":"Link im neuen Tab öffnen","This link has no URL":"Dieser Link hat keine Adresse",Unlink:"Link entfernen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.de=e.de||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Aufzählungsliste","Bulleted list styles toolbar":"Darstellung der ungeordneten Liste",Circle:"Leerer Kreis",Decimal:"Dezimalzahlen","Decimal with leading zero":"Dezimalzahlen mit vorangestellten Nullen",Disc:"Gefüllter Kreis","Lower-latin":"Kleingeschriebene lateinische Buchstaben","Lower–roman":"Kleingeschriebene römische Zahlen","Numbered List":"Nummerierte Liste","Numbered list styles toolbar":"Darstellung der geordneten Liste",Square:"Quadrat","To-do List":"Aufgabenliste","Toggle the circle list style":"Leeren Kreis einstellen","Toggle the decimal list style":"Dezimalzahlen einstellen","Toggle the decimal with leading zero list style":"Dezimalzahlen mit vorangestellten Nullen einstellen","Toggle the disc list style":"Gefüllten Kreis einstellen","Toggle the lower–latin list style":"Kleingeschriebene lateinische Buchstaben einstellen","Toggle the lower–roman list style":"Kleingeschriebene römische Zahlen einstellen","Toggle the square list style":"Quadrat einstellen","Toggle the upper–latin list style":"Großgeschriebene lateinische Buchstaben einstellen","Toggle the upper–roman list style":"Großgeschriebene römische Zahlen einstellen","Upper-latin":"Großgeschriebene lateinische Buchstaben","Upper-roman":"Großgeschriebene römische Zahlen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.de=n.de||{};e.dictionary=Object.assign(e.dictionary||{},{"Remove Format":"Formatierung entfernen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.de=i.de||{};n.dictionary=Object.assign(n.dictionary||{},{Source:"Quellcode"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.de=e.de||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"Zellentext unten ausrichten","Align cell text to the center":"Zellentext zentriert ausrichten","Align cell text to the left":"Zellentext linksbündig ausrichten","Align cell text to the middle":"Zellentext mittig ausrichten","Align cell text to the right":"Zellentext rechtsbündig ausrichten","Align cell text to the top":"Zellentext oben ausrichten","Align table to the left":"Tabelle links ausrichten","Align table to the right":"Tabelle rechts ausrichten",Alignment:"Ausrichtung",Background:"Hintergrund",Border:"Rahmen","Cell properties":"Zelleneigenschaften","Center table":"Tabelle zentrieren",Color:"Farbe","Color picker":"Farbwähler",Column:"Spalte",Dashed:"Gestrichelt","Delete column":"Spalte löschen","Delete row":"Zeile löschen",Dimensions:"Größe",Dotted:"Gepunktet",Double:"Doppelt","Enter table caption":"Tabellenüberschrift eingeben",Groove:"Eingeritzt","Header column":"Kopfspalte","Header row":"Kopfzeile",Height:"Höhe","Horizontal text alignment toolbar":"Werkzeugleiste für die horizontale Zellentext-Ausrichtung","Insert column left":"Spalte links einfügen","Insert column right":"Spalte rechts einfügen","Insert row above":"Zeile oben einfügen","Insert row below":"Zeile unten einfügen","Insert table":"Tabelle einfügen",Inset:"Eingelassen","Justify cell text":"Zellentext als Blocksatz ausrichten","Merge cell down":"Zelle unten verbinden","Merge cell left":"Zelle links verbinden","Merge cell right":"Zelle rechts verbinden","Merge cell up":"Zelle verbinden","Merge cells":"Zellen verbinden",None:"Kein Rahmen",Outset:"Geprägt",Padding:"Innenabstand",Ridge:"Hervorgehoben",Row:"Zeile","Select column":"Spalte auswählen","Select row":"Zeile auswählen",Solid:"Durchgezogen","Split cell horizontally":"Zelle horizontal teilen","Split cell vertically":"Zelle vertikal teilen",Style:"Rahmenart","Table alignment toolbar":"Werkzeugleiste für die Tabellen-Ausrichtung","Table cell text alignment":"Ausrichtung des Zellentextes","Table properties":"Tabelleneigenschaften","Table toolbar":"Tabelle Werkzeugleiste",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"Die Farbe ist ungültig. Probieren Sie „#FF0000“ oder „rgb(255,0,0)“ oder „red“.",'The value is invalid. Try "10px" or "2em" or simply "2".':"Der Wert ist ungültig. Probieren Sie „10px“ oder „2em“ oder „2“.","Toggle caption off":"Tabellenüberschrift deaktivieren","Toggle caption on":"Tabellenüberschrift aktivieren","Vertical text alignment toolbar":"Werkzeugleiste für die vertikale Zellentext-Ausrichtung",Width:"Breite"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.de=i.de||{};n.dictionary=Object.assign(n.dictionary||{},{"HTML object":"HTML-Objekt"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.de=e.de||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Gerundet",Angle:"Winkel-Zeichen","Approximately equal to":"Ungefähr gleich","Asterisk operator":"Hodge-Stern-Operator","Austral sign":"Austral-Zeichen","back with leftwards arrow above":"„Back“ darüber Pfeil nach links","Bitcoin sign":"Bitcoin-Zeichen","Cedi sign":"Cedi-Zeichen","Cent sign":"Cent-Zeichen","Character categories":"Zeichenkategorien","Colon sign":"Colón-Zeichen","Contains as member":"Enthält als Element","Copyright sign":"Copyright-Zeichen","Cruzeiro sign":"Cruzeiro-Zeichen","Currency sign":"Währungssymbol","Degree sign":"Grad-Zeichen","Division sign":"Geteilt-Zeichen","Dollar sign":"Dollar-Zeichen","Dong sign":"Äồng-Zeichen","Double dagger":"Zweibalkenkreuz","Double exclamation mark":"Doppeltes Ausrufezeichen","Double low-9 quotation mark":"Doppelte Anführungszeichen links unten","Double question mark":"Doppeltes Fragezeichen","downwards arrow to bar":"Pfeil nach unten zum Querstrich","downwards dashed arrow":"Gestrichelter Pfeil nach unten","downwards double arrow":"Doppelpfeil nach unten","Drachma sign":"Drachme-Zeichen","Element of":"Element von","Em dash":"Geviertstrich","Empty set":"Leere Menge","En dash":"Halbgeviertstrich","end with leftwards arrow above":"„End“ darüber Pfeil nach links","Euro sign":"Euro-Zeichen","Euro-currency sign":"Euro-Währungszeichen","Exclamation question mark":"Ruf-Frage-Zeichen","For all":"Allquantor","Fraction slash":"Schrägstrich","French franc sign":"Französischer Franc-Zeichen","German penny sign":"Pfennig-Zeichen","Greater-than or equal to":"Größer als oder gleich","Greater-than sign":"Größer-als-Zeichen","Guarani sign":"GuaranÃ-Zeichen","Horizontal ellipsis":"Auslassungspunkte","Hryvnia sign":"Hrywnja-Zeichen","Identical to":"Identisch mit","Indian rupee sign":"Indische Rupie-Zeichen",Infinity:"Unendlich-Zeichen",Integral:"Integral-Zeichen",Intersection:"Schnitt","Inverted exclamation mark":"Umgekehrtes Ausrufezeichen","Inverted question mark":"Umgekehrtes Fragezeichen","Kip sign":"Kip-Zeichen","Latin capital letter a with breve":"Lateinischer Großbuchstabe a mit Breve","Latin capital letter a with macron":"Lateinischer Großbuchstabe a mit Makron","Latin capital letter a with ogonek":"Lateinischer Großbuchstabe a mit Ogonek","Latin capital letter c with acute":"Lateinischer Großbuchstabe c mit Akut","Latin capital letter c with caron":"Lateinischer Großbuchstabe c mit Hatschek","Latin capital letter c with circumflex":"Lateinischer Großbuchstabe c mit Zirkumflex","Latin capital letter c with dot above":"Lateinischer Großbuchstabe c mit Punkt darüber","Latin capital letter d with caron":"Lateinischer Großbuchstabe d mit Hatschek","Latin capital letter d with stroke":"Lateinischer Großbuchstabe d mit Querstrich","Latin capital letter e with breve":"Lateinischer Großbuchstabe e mit Breve","Latin capital letter e with caron":"Lateinischer Großbuchstabe e mit Hatschek","Latin capital letter e with dot above":"Lateinischer Großbuchstabe e mit Punkt darüber","Latin capital letter e with macron":"Lateinischer Großbuchstabe e mit Makron","Latin capital letter e with ogonek":"Lateinischer Großbuchstabe e mit Ogonek","Latin capital letter eng":"Lateinischer Großbuchstabe Eng","Latin capital letter g with breve":"Lateinischer Großbuchstabe g mit Breve","Latin capital letter g with cedilla":"Lateinischer Großbuchstabe g mit Cedille","Latin capital letter g with circumflex":"Lateinischer Großbuchstabe g mit Zirkumflex","Latin capital letter g with dot above":"Lateinischer Großbuchstabe g mit Punkt darüber","Latin capital letter h with circumflex":"Lateinischer Großbuchstabe h mit Zirkumflex","Latin capital letter h with stroke":"Lateinischer Großbuchstabe h mit Querstrich","Latin capital letter i with breve":"Lateinischer Großbuchstabe i mit Breve","Latin capital letter i with dot above":"Lateinischer Großbuchstabe i mit Punkt darüber","Latin capital letter i with macron":"Lateinischer Großbuchstabe i mit Makron","Latin capital letter i with ogonek":"Lateinischer Großbuchstabe i mit Ogonek","Latin capital letter i with tilde":"Lateinischer Großbuchstabe i mit Tilde","Latin capital letter j with circumflex":"Lateinischer Großbuchstabe j mit Zirkumflex","Latin capital letter k with cedilla":"Lateinischer Großbuchstabe k mit Cedille","Latin capital letter l with acute":"Lateinischer Großbuchstabe l mit Akut","Latin capital letter l with caron":"Lateinischer Großbuchstabe l mit Hatschek","Latin capital letter l with cedilla":"Lateinischer Großbuchstabe l mit Cedille","Latin capital letter l with middle dot":"Lateinischer Großbuchstabe l mit Mittelpunkt","Latin capital letter l with stroke":"Lateinischer Großbuchstabe l mit Querstrich","Latin capital letter n with acute":"Lateinischer Großbuchstabe n mit Akut","Latin capital letter n with caron":"Lateinischer Großbuchstabe n mit Hatschek","Latin capital letter n with cedilla":"Lateinischer Großbuchstabe n mit Cedille","Latin capital letter o with breve":"Lateinischer Großbuchstabe o mit Breve","Latin capital letter o with double acute":"Lateinischer Großbuchstabe o mit doppeltem Akut","Latin capital letter o with macron":"Lateinischer Großbuchstabe o mit Makron","Latin capital letter r with acute":"Lateinischer Großbuchstabe r mit Akut","Latin capital letter r with caron":"Lateinischer Großbuchstabe r mit Hatschek","Latin capital letter r with cedilla":"Lateinischer Großbuchstabe r mit Cedille","Latin capital letter s with acute":"Lateinischer Großbuchstabe s mit Akut","Latin capital letter s with caron":"Lateinischer Großbuchstabe s mit Hatschek","Latin capital letter s with cedilla":"Lateinischer Großbuchstabe s mit Cedille","Latin capital letter s with circumflex":"Lateinischer Großbuchstabe s mit Zirkumflex","Latin capital letter t with caron":"Lateinischer Großbuchstabe t mit Hatschek","Latin capital letter t with cedilla":"Lateinischer Großbuchstabe t mit Cedille","Latin capital letter t with stroke":"Lateinischer Großbuchstabe t mit Querstrich","Latin capital letter u with breve":"Lateinischer Großbuchstabe u mit Breve","Latin capital letter u with double acute":"Lateinischer Großbuchstabe u mit doppeltem Akut","Latin capital letter u with macron":"Lateinischer Großbuchstabe u mit Makron","Latin capital letter u with ogonek":"Lateinischer Großbuchstabe u mit Ogonek","Latin capital letter u with ring above":"Lateinischer Großbuchstabe u mit Kroužek darüber","Latin capital letter u with tilde":"Lateinischer Großbuchstabe u mit Tilde","Latin capital letter w with circumflex":"Lateinischer Großbuchstabe w mit Zirkumflex","Latin capital letter y with circumflex":"Lateinischer Großbuchstabe y mit Zirkumflex","Latin capital letter y with diaeresis":"Lateinischer Großbuchstabe y mit Trema","Latin capital letter z with acute":"Lateinischer Großbuchstabe z mit Akut","Latin capital letter z with caron":"Lateinischer Großbuchstabe z mit Hatschek","Latin capital letter z with dot above":"Lateinischer Großbuchstabe z mit Punkt darüber","Latin capital ligature ij":"Große lateinische Ligatur ij","Latin capital ligature oe":"Große lateinische Ligatur oe","Latin small letter a with breve":"Lateinischer Kleinbuchstabe a mit Breve","Latin small letter a with macron":"Lateinischer Kleinbuchstabe a mit Makron","Latin small letter a with ogonek":"Lateinischer Kleinbuchstabe a mit Ogonek","Latin small letter c with acute":"Lateinischer Kleinbuchstabe c mit Akut","Latin small letter c with caron":"Lateinischer Kleinbuchstabe c mit Hatschek","Latin small letter c with circumflex":"Lateinischer Kleinbuchstabe c mit Zirkumflex","Latin small letter c with dot above":"Lateinischer Kleinbuchstabe c mit Punkt darüber","Latin small letter d with caron":"Lateinischer Kleinbuchstabe d mit Hatschek","Latin small letter d with stroke":"Lateinischer Kleinbuchstabe d mit Querstrich","Latin small letter dotless i":"Lateinischer Kleinbuchstabe i ohne Punkt","Latin small letter e with breve":"Lateinischer Kleinbuchstabe e mit Breve","Latin small letter e with caron":"Lateinischer Kleinbuchstabe e mit Hatschek","Latin small letter e with dot above":"Lateinischer Kleinbuchstabe e mit Punkt darüber","Latin small letter e with macron":"Lateinischer Kleinbuchstabe e mit Makron","Latin small letter e with ogonek":"Lateinischer Kleinbuchstabe e mit Ogonek","Latin small letter eng":"Lateinischer Kleinbuchstabe Eng","Latin small letter f with hook":"Lateinischer Kleinbuchstabe f mit Haken","Latin small letter g with breve":"Lateinischer Kleinbuchstabe g mit Breve","Latin small letter g with cedilla":"Lateinischer Kleinbuchstabe g mit Cedille","Latin small letter g with circumflex":"Lateinischer Kleinbuchstabe g mit Zirkumflex","Latin small letter g with dot above":"Lateinischer Kleinbuchstabe g mit Punkt darüber","Latin small letter h with circumflex":"Lateinischer Kleinbuchstabe h mit Zirkumflex","Latin small letter h with stroke":"Lateinischer Kleinbuchstabe h mit Querstrich","Latin small letter i with breve":"Lateinischer Kleinbuchstabe i mit Breve","Latin small letter i with macron":"Lateinischer Kleinbuchstabe i mit Makron","Latin small letter i with ogonek":"Lateinischer Kleinbuchstabe i mit Ogonek","Latin small letter i with tilde":"Lateinischer Kleinbuchstabe i mit Tilde","Latin small letter j with circumflex":"Lateinischer Kleinbuchstabe j mit Zirkumflex","Latin small letter k with cedilla":"Lateinischer Kleinbuchstabe k mit Cedille","Latin small letter kra":"Lateinischer Kleinbuchstabe Kra","Latin small letter l with acute":"Lateinischer Kleinbuchstabe l mit Akut","Latin small letter l with caron":"Lateinischer Kleinbuchstabe l mit Hatschek","Latin small letter l with cedilla":"Lateinischer Kleinbuchstabe l mit Cedille","Latin small letter l with middle dot":"Lateinischer Kleinbuchstabe l mit Mittelpunkt","Latin small letter l with stroke":"Lateinischer Kleinbuchstabe l mit Querstrich","Latin small letter long s":"Lateinischer Kleinbuchstabe langes s","Latin small letter n preceded by apostrophe":"Lateinischer Kleinbuchstabe n mit vorangestelltem Apostroph","Latin small letter n with acute":"Lateinischer Kleinbuchstabe n mit Akut","Latin small letter n with caron":"Lateinischer Kleinbuchstabe n mit Hatschek","Latin small letter n with cedilla":"Lateinischer Kleinbuchstabe n mit Cedille","Latin small letter o with breve":"Lateinischer Kleinbuchstabe o mit Breve","Latin small letter o with double acute":"Lateinischer Kleinbuchstabe o mit doppeltem Akut","Latin small letter o with macron":"Lateinischer Kleinbuchstabe o mit Makron","Latin small letter r with acute":"Lateinischer Kleinbuchstabe r mit Akut","Latin small letter r with caron":"Lateinischer Kleinbuchstabe r mit Hatschek","Latin small letter r with cedilla":"Lateinischer Kleinbuchstabe r mit Cedille","Latin small letter s with acute":"Lateinischer Kleinbuchstabe s mit Akut","Latin small letter s with caron":"Lateinischer Kleinbuchstabe s mit Hatschek","Latin small letter s with cedilla":"Lateinischer Kleinbuchstabe s mit Cedille","Latin small letter s with circumflex":"Lateinischer Kleinbuchstabe s mit Zirkumflex","Latin small letter t with caron":"Lateinischer Kleinbuchstabe t mit Hatschek","Latin small letter t with cedilla":"Lateinischer Kleinbuchstabe t mit Cedille","Latin small letter t with stroke":"Lateinischer Kleinbuchstabe t mit Querstrich","Latin small letter u with breve":"Lateinischer Kleinbuchstabe u mit Breve","Latin small letter u with double acute":"Lateinischer Kleinbuchstabe u mit doppeltem Akut","Latin small letter u with macron":"Lateinischer Kleinbuchstabe u mit Makron","Latin small letter u with ogonek":"Lateinischer Kleinbuchstabe u mit Ogonek","Latin small letter u with ring above":"Lateinischer Kleinbuchstabe u mit Kroužek darüber","Latin small letter u with tilde":"Lateinischer Kleinbuchstabe u mit Tilde","Latin small letter w with circumflex":"Lateinischer Kleinbuchstabe w mit Zirkumflex","Latin small letter y with circumflex":"Lateinischer Kleinbuchstabe y mit Zirkumflex","Latin small letter z with acute":"Lateinischer Kleinbuchstabe z mit Akut","Latin small letter z with caron":"Lateinischer Kleinbuchstabe z mit Hatschek","Latin small letter z with dot above":"Lateinischer Kleinbuchstabe z mit Punkt darüber","Latin small ligature ij":"Kleine lateinische Ligatur ij","Latin small ligature oe":"Kleine lateinische Ligatur oe","Left double quotation mark":"Doppelte Anführungszeichen links","Left single quotation mark":"Einfache Anführungszeichen links","Left-pointing double angle quotation mark":"Doppelte Guillemets nach links","leftwards arrow to bar":"Pfeil nach links zum Querstrich","leftwards dashed arrow":"Gestrichelter Pfeil nach links","leftwards double arrow":"Doppelpfeil nach links","Less-than or equal to":"Kleiner als oder gleich","Less-than sign":"Kleiner-als-Zeichen","Lira sign":"Lira-Zeichen","Livre tournois sign":"Livre tournois-Zeichen","Logical and":"Logisches und","Logical or":"Logisches oder",Macron:"Makron","Manat sign":"Manat-Zeichen","Mill sign":"Mill-Zeichen","Minus sign":"Minus-Zeichen","Multiplication sign":"Mal-Zeichen","N-ary product":"Produkt-Zeichen","N-ary summation":"Summen-Zeichen",Nabla:"Nabla","Naira sign":"Naira-Zeichen","New sheqel sign":"Schekel-Zeichen","Nordic mark sign":"Nordische Mark-Zeichen","Not an element of":"Kein Element von","Not equal to":"Ungleich","Not sign":"Negations-Zeichen","on with exclamation mark with left right arrow above":"„On“ mit Ausrufezeichen darüber Pfeil nach links und rechts",Overline:"Ãœberstrich","Paragraph sign":"Absatz-Zeichen","Partial differential":"Partielle Ableitung","Per mille sign":"Promille-Zeichen","Per ten thousand sign":"Pro-Zehntausend-Zeichen","Peseta sign":"Peseta-Zeichen","Peso sign":"Philippinischer Peso-Zeichen","Plus-minus sign":"Plus-Minus-Zeichen","Pound sign":"Pfund-Zeichen","Proportional to":"Proportional zu","Question exclamation mark":"Frage-Ruf-Zeichen","Registered sign":"Registered-Trade-Mark-Zeichen","Reversed paragraph sign":"Umgedrehtes Absatz-Zeichen","Right double quotation mark":"Doppelte Anführungszeichen rechts","Right single quotation mark":"Einfache Anführungszeichen rechts","Right-pointing double angle quotation mark":"Doppelte Guillemets nach rechts","rightwards arrow to bar":"Pfeil nach rechts zum Querstrich","rightwards dashed arrow":"Gestrichelter Pfeil nach rechts","rightwards double arrow":"Doppelpfeil nach rechts","Ruble sign":"Rubel-Zeichen","Rupee sign":"Rupie-Zeichen","Section sign":"Paragraphen-Zeichen","Single left-pointing angle quotation mark":"Einfache Guillemets nach links","Single low-9 quotation mark":"Einfache Anführungszeichen links unten","Single right-pointing angle quotation mark":"Einfache Guillemets nach rechts","soon with rightwards arrow above":"„Soon“ darüber Pfeil nach rechts","Special characters":"Sonderzeichen","Spesmilo sign":"Spesmilo-Zeichen","Square root":"Wurzel-Zeichen","Tenge sign":"Tenge-Zeichen","There exists":"Existenzquantor","Tilde operator":"Tilde-Operator","top with upwards arrow above":"„Top“ darüber Pfeil nach oben","Trade mark sign":"Unregistered-Trade-Mark-Zeichen","Tugrik sign":"Tugrik-Zeichen","Turkish lira sign":"Türkische Lira-Zeichen","Two dot leader":"Doppel-Punktlinie",Union:"Vereinigung","up down arrow with base":"Unterstrichener Pfeil nach oben und unten","upwards arrow to bar":"Pfeil nach oben zum Querstrich","upwards dashed arrow":"Gestrichelter Pfeil nach oben","upwards double arrow":"Doppelpfeil nach oben","Vulgar fraction one half":"Gemeiner Bruch ein Halb","Vulgar fraction one quarter":"Gemeiner Bruch ein Viertel","Vulgar fraction three quarters":"Gemeiner Bruch drei Viertel","Won sign":"Won-Zeichen","Yen sign":"Yen-Zeichen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.de=e.de||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 von %1",Aquamarine:"Aquamarinblau",Black:"Schwarz",Blue:"Blau",Cancel:"Abbrechen","Dim grey":"Dunkelgrau","Dropdown toolbar":"Dropdown-Liste Werkzeugleiste","Edit block":"Absatz bearbeiten","Editor toolbar":"Editor Werkzeugleiste",Green:"Grün",Grey:"Grau","Insert paragraph after block":"Absatz nach Block einfügen","Insert paragraph before block":"Absatz vor Block einfügen","Light blue":"Hellblau","Light green":"Hellgrün","Light grey":"Hellgrau",Next:"Nächste",Orange:"Orange",Previous:"vorherige",Purple:"Violett",Red:"Rot",Redo:"Wiederherstellen","Remove color":"Farbe entfernen","Restore default":"Standard wiederherstellen","Rich Text Editor":"Rich Text Editor","Rich Text Editor, %0":"Rich-Text-Editor, %0",Save:"Speichern","Select all":"Alles auswählen","Show more items":"Mehr anzeigen",Turquoise:"Türkis",Undo:"Rückgängig","Upload in progress":"Upload läuft",White:"Weiß","Widget toolbar":"Widget Werkzeugleiste",Yellow:"Gelb"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/el.js b/core/assets/vendor/ckeditor5/translations/el.js new file mode 100644 index 000000000000..29897c0706ea --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/el.js @@ -0,0 +1 @@ +!function(i){const n=i.el=i.el||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Έντονη",Code:"",Italic:"Πλάγια",Strikethrough:"",Subscript:"",Superscript:"",Underline:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.el=i.el||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"ΠεÏιοχή παÏάθεσης"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const n=e.el=e.el||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose heading":"ΕπιλÎξτε κεφαλίδα",Heading:"Κεφαλίδα","Heading 1":"Κεφαλίδα 1","Heading 2":"Κεφαλίδα 2","Heading 3":"Κεφαλίδα 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"ΠαÏάγÏαφος","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.el=e.el||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"","Change image text alternative":"Αλλαγή ÎµÎ½Î±Î»Î»Î±ÎºÏ„Î¹ÎºÎ¿Ï ÎºÎµÎ¯Î¼ÎµÎ½Î¿Ï…","Enter image caption":"Λεζάντα","Full size image":"Εικόνα πλήÏης μεγÎθους","Image resize list":"","Image toolbar":"","image widget":"","In line":"",Insert:"","Insert image":"Εισαγωγή εικόνας","Insert image via URL":"","Left aligned image":"",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"","Side image":"","Text alternative":"Εναλλακτικό κείμενο",Update:"","Update image URL":"","Upload failed":"","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.el=n.el||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"",Link:"ΣÏνδεσμος","Link image":"","Link URL":"ΔιεÏθυνση συνδÎσμου","Open in a new tab":"","Open link in new tab":"","This link has no URL":"",Unlink:"ΑφαίÏεση συνδÎσμου"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.el=e.el||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Λίστα κουκκίδων","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"ΑÏιθμημÎνη λίστα","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.el=e.el||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"ΑκÏÏωση","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Επανάληψη","Remove color":"","Restore default":"","Rich Text Editor":"ΕπεξεÏγαστής ΠλοÏσιου ΚειμÎνου","Rich Text Editor, %0":"ΕπεξεÏγαστής ΠλοÏσιου ΚειμÎνου, 0%",Save:"Αποθήκευση","Show more items":"",Turquoise:"",Undo:"ΑναίÏεση",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/en-au.js b/core/assets/vendor/ckeditor5/translations/en-au.js new file mode 100644 index 000000000000..1db580393037 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/en-au.js @@ -0,0 +1 @@ +!function(n){const t=n["en-au"]=n["en-au"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Align centre","Align left":"Align left","Align right":"Align right",Justify:"Justify","Text alignment":"Text alignment","Text alignment toolbar":"Text alignment toolbar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i["en-au"]=i["en-au"]||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Bold",Code:"Code",Italic:"Italic",Strikethrough:"Strikethrough",Subscript:"Subscript",Superscript:"Superscript",Underline:"Underline"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n["en-au"]=n["en-au"]||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Block quote"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const n=e["en-au"]=e["en-au"]||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose heading":"Choose heading",Heading:"Heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6",Paragraph:"Paragraph","Type or paste your content here.":"Type or paste your content here.","Type your title":"Type your title"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["en-au"]=n["en-au"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Horizontal line":"Horizontal line"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e["en-au"]=e["en-au"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Centred image","Change image text alternative":"Change image text alternative","Enter image caption":"Enter image caption","Full size image":"Full size image","Image resize list":"Image resize list","Image toolbar":"Image toolbar","image widget":"image widget","In line":"",Insert:"Insert","Insert image":"Insert image","Insert image via URL":"Insert image via URL","Left aligned image":"Left aligned image",Original:"Original","Resize image":"Resize image","Resize image to %0":"Resize image to %0","Resize image to the original size":"Resize image to the original size","Right aligned image":"Right aligned image","Side image":"Side image","Text alternative":"Text alternative",Update:"Update","Update image URL":"Update image URL","Upload failed":"Upload failed","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n["en-au"]=n["en-au"]||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Decrease indent","Increase indent":"Increase indent"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["en-au"]=n["en-au"]||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Downloadable","Edit link":"Edit link",Link:"Link","Link image":"Link image","Link URL":"Link URL","Open in a new tab":"Open in a new tab","Open link in new tab":"Open link in new tab","This link has no URL":"This link has no URL",Unlink:"Unlink"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e["en-au"]=e["en-au"]||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Bulleted List","Bulleted list styles toolbar":"Bulleted list styles toolbar",Circle:"Circle",Decimal:"Decimal","Decimal with leading zero":"Decimal with leading zero",Disc:"Disc","Lower-latin":"Lower-latin","Lower–roman":"Lower–roman","Numbered List":"Numbered List","Numbered list styles toolbar":"Numbered list styles toolbar",Square:"Square","To-do List":"To-do List","Toggle the circle list style":"Toggle the circle list style","Toggle the decimal list style":"Toggle the decimal list style","Toggle the decimal with leading zero list style":"Toggle the decimal with leading zero list style","Toggle the disc list style":"Toggle the disc list style","Toggle the lower–latin list style":"Toggle the lower–latin list style","Toggle the lower–roman list style":"Toggle the lower–roman list style","Toggle the square list style":"Toggle the square list style","Toggle the upper–latin list style":"Toggle the upper–latin list style","Toggle the upper–roman list style":"Toggle the upper–roman list style","Upper-latin":"Upper-latin","Upper-roman":"Upper-roman"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n["en-au"]=n["en-au"]||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Remove Format"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e["en-au"]=e["en-au"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"Align cell text to the bottom","Align cell text to the center":"Align cell text to the center","Align cell text to the left":"Align cell text to the left","Align cell text to the middle":"Align cell text to the middle","Align cell text to the right":"Align cell text to the right","Align cell text to the top":"Align cell text to the top","Align table to the left":"Align table to the left","Align table to the right":"Align table to the right",Alignment:"Alignment",Background:"Background",Border:"Border","Cell properties":"Cell properties","Center table":"Centre table",Color:"Colour","Color picker":"Colour picker",Column:"Column",Dashed:"Dashed","Delete column":"Delete column","Delete row":"Delete row",Dimensions:"Dimensions",Dotted:"Dotted",Double:"Double","Enter table caption":"",Groove:"Groove","Header column":"Header column","Header row":"Header row",Height:"Height","Horizontal text alignment toolbar":"Horizontal text alignment toolbar","Insert column left":"Insert column left","Insert column right":"Insert column right","Insert row above":"Insert row above","Insert row below":"Insert row below","Insert table":"Insert table",Inset:"Inset","Justify cell text":"Justify cell text","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Merge cell right":"Merge cell right","Merge cell up":"Merge cell up","Merge cells":"Merge cells",None:"None",Outset:"Outset",Padding:"Padding",Ridge:"Ridge",Row:"Row","Select column":"Select column","Select row":"Select row",Solid:"Solid","Split cell horizontally":"Split cell horizontally","Split cell vertically":"Split cell vertically",Style:"Style","Table alignment toolbar":"Table alignment toolbar","Table cell text alignment":"Table cell text alignment","Table properties":"Table properties","Table toolbar":"Table toolbar",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'The colour is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'The value is invalid. Try "10px" or "2em" or simply "2".',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Vertical text alignment toolbar",Width:"Width"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t["en-au"]=t["en-au"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Almost equal to",Angle:"Angle","Approximately equal to":"Approximately equal to","Asterisk operator":"Asterisk operator","Austral sign":"Austral sign","back with leftwards arrow above":"back with leftwards arrow above","Bitcoin sign":"Bitcoin sign","Cedi sign":"Cedi sign","Cent sign":"Cent sign","Character categories":"Character categories","Colon sign":"Colon sign","Contains as member":"Contains as member","Copyright sign":"Copyright sign","Cruzeiro sign":"Cruzeiro sign","Currency sign":"Currency sign","Degree sign":"Degree sign","Division sign":"Division sign","Dollar sign":"Dollar sign","Dong sign":"Dong sign","Double dagger":"Double dagger","Double exclamation mark":"Double exclamation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Double question mark":"Double question mark","downwards arrow to bar":"downwards arrow to bar","downwards dashed arrow":"downwards dashed arrow","downwards double arrow":"downwards double arrow","Drachma sign":"Drachma sign","Element of":"Element of","Em dash":"Em dash","Empty set":"Empty set","En dash":"En dash","end with leftwards arrow above":"end with leftwards arrow above","Euro sign":"Euro sign","Euro-currency sign":"Euro-currency sign","Exclamation question mark":"Exclamation question mark","For all":"For all","Fraction slash":"Fraction slash","French franc sign":"French franc sign","German penny sign":"German penny sign","Greater-than or equal to":"Greater-than or equal to","Greater-than sign":"Greater-than sign","Guarani sign":"Guarani sign","Horizontal ellipsis":"Horizontal ellipsis","Hryvnia sign":"Hryvnia sign","Identical to":"Identical to","Indian rupee sign":"Indian rupee sign",Infinity:"Infinity",Integral:"Integral",Intersection:"Intersection","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Kip sign":"Kip sign","Latin capital letter a with breve":"Latin capital letter a with breve","Latin capital letter a with macron":"Latin capital letter a with macron","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin capital letter c with caron":"Latin capital letter c with caron","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin capital letter d with caron":"Latin capital letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin capital letter e with breve":"Latin capital letter e with breve","Latin capital letter e with caron":"Latin capital letter e with caron","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin capital letter e with macron":"Latin capital letter e with macron","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin capital letter eng":"Latin capital letter eng","Latin capital letter g with breve":"Latin capital letter g with breve","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin capital letter i with breve":"Latin capital letter i with breve","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin capital letter i with macron":"Latin capital letter i with macron","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin capital letter l with acute":"Latin capital letter l with acute","Latin capital letter l with caron":"Latin capital letter l with caron","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin capital letter n with caron":"Latin capital letter n with caron","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin capital letter o with breve":"Latin capital letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin capital letter o with macron":"Latin capital letter o with macron","Latin capital letter r with acute":"Latin capital letter r with acute","Latin capital letter r with caron":"Latin capital letter r with caron","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin capital letter s with acute":"Latin capital letter s with acute","Latin capital letter s with caron":"Latin capital letter s with caron","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin capital letter t with caron":"Latin capital letter t with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin capital letter u with breve":"Latin capital letter u with breve","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin capital letter u with macron":"Latin capital letter u with macron","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin capital letter z with caron":"Latin capital letter z with caron","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin capital ligature ij":"Latin capital ligature ij","Latin capital ligature oe":"Latin capital ligature oe","Latin small letter a with breve":"Latin small letter a with breve","Latin small letter a with macron":"Latin small letter a with macron","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin small letter c with acute":"Latin small letter c with acute","Latin small letter c with caron":"Latin small letter c with caron","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin small letter c with dot above":"Latin small letter c with dot above","Latin small letter d with caron":"Latin small letter d with caron","Latin small letter d with stroke":"Latin small letter d with stroke","Latin small letter dotless i":"Latin small letter dotless i","Latin small letter e with breve":"Latin small letter e with breve","Latin small letter e with caron":"Latin small letter e with caron","Latin small letter e with dot above":"Latin small letter e with dot above","Latin small letter e with macron":"Latin small letter e with macron","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin small letter eng":"Latin small letter eng","Latin small letter f with hook":"Latin small letter f with hook","Latin small letter g with breve":"Latin small letter g with breve","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin small letter g with dot above":"Latin small letter g with dot above","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin small letter h with stroke":"Latin small letter h with stroke","Latin small letter i with breve":"Latin small letter i with breve","Latin small letter i with macron":"Latin small letter i with macron","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin small letter i with tilde":"Latin small letter i with tilde","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin small letter l with acute":"Latin small letter l with acute","Latin small letter l with caron":"Latin small letter l with caron","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin small letter l with stroke":"Latin small letter l with stroke","Latin small letter long s":"Latin small letter long s","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin small letter n with acute":"Latin small letter n with acute","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin small letter o with breve":"Latin small letter o with breve","Latin small letter o with double acute":"Latin small letter o with double acute","Latin small letter o with macron":"Latin small letter o with macron","Latin small letter r with acute":"Latin small letter r with acute","Latin small letter r with caron":"Latin small letter r with caron","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin small letter s with acute":"Latin small letter s with acute","Latin small letter s with caron":"Latin small letter s with caron","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin small letter t with caron":"Latin small letter t with caron","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin small letter t with stroke":"Latin small letter t with stroke","Latin small letter u with breve":"Latin small letter u with breve","Latin small letter u with double acute":"Latin small letter u with double acute","Latin small letter u with macron":"Latin small letter u with macron","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin small letter u with ring above":"Latin small letter u with ring above","Latin small letter u with tilde":"Latin small letter u with tilde","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin small letter z with acute":"Latin small letter z with acute","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter z with dot above":"Latin small letter z with dot above","Latin small ligature ij":"Latin small ligature ij","Latin small ligature oe":"Latin small ligature oe","Left double quotation mark":"Left double quotation mark","Left single quotation mark":"Left single quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","leftwards arrow to bar":"leftwards arrow to bar","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"leftwards double arrow","Less-than or equal to":"Less-than or equal to","Less-than sign":"Less-than sign","Lira sign":"Lira sign","Livre tournois sign":"Livre tournois sign","Logical and":"Logical and","Logical or":"Logical or",Macron:"Macron","Manat sign":"Manat sign","Mill sign":"Mill sign","Minus sign":"Minus sign","Multiplication sign":"Multiplication sign","N-ary product":"N-ary product","N-ary summation":"N-ary summation",Nabla:"Nabla","Naira sign":"Naira sign","New sheqel sign":"New sheqel sign","Nordic mark sign":"Nordic mark sign","Not an element of":"Not an element of","Not equal to":"Not equal to","Not sign":"Not sign","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above",Overline:"Overline","Paragraph sign":"Paragraph sign","Partial differential":"Partial differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Peseta sign":"Peseta sign","Peso sign":"Peso sign","Plus-minus sign":"Plus-minus sign","Pound sign":"Pound sign","Proportional to":"Proportional to","Question exclamation mark":"Question exclamation mark","Registered sign":"Registered sign","Reversed paragraph sign":"Reversed paragraph sign","Right double quotation mark":"Right double quotation mark","Right single quotation mark":"Right single quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","rightwards arrow to bar":"rightwards arrow to bar","rightwards dashed arrow":"rightwards dashed arrow","rightwards double arrow":"rightwards double arrow","Ruble sign":"Ruble sign","Rupee sign":"Rupee sign","Section sign":"Section sign","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","soon with rightwards arrow above":"soon with rightwards arrow above","Special characters":"Special characters","Spesmilo sign":"Spesmilo sign","Square root":"Square root","Tenge sign":"Tenge sign","There exists":"There exists","Tilde operator":"Tilde operator","top with upwards arrow above":"top with upwards arrow above","Trade mark sign":"Trade mark sign","Tugrik sign":"Tugrik sign","Turkish lira sign":"Turkish lira sign","Two dot leader":"Two dot leader",Union:"Union","up down arrow with base":"up down arrow with base","upwards arrow to bar":"upwards arrow to bar","upwards dashed arrow":"upwards dashed arrow","upwards double arrow":"upwards double arrow","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction three quarters":"Vulgar fraction three quarters","Won sign":"Won sign","Yen sign":"Yen sign"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e["en-au"]=e["en-au"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove colour","Restore default":"","Rich Text Editor":"Rich Text Editor","Rich Text Editor, %0":"Rich Text Editor, %0",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/en-gb.js b/core/assets/vendor/ckeditor5/translations/en-gb.js new file mode 100644 index 000000000000..1fb52e2aa538 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/en-gb.js @@ -0,0 +1 @@ +!function(n){const i=n["en-gb"]=n["en-gb"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Align center","Align left":"Align left","Align right":"Align right",Justify:"Justify","Text alignment":"Text alignment","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i["en-gb"]=i["en-gb"]||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Bold",Code:"Code",Italic:"Italic",Strikethrough:"Strikethrough",Subscript:"Subscript",Superscript:"Superscript",Underline:"Underline"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n["en-gb"]=n["en-gb"]||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Block quote"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const n=e["en-gb"]=e["en-gb"]||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose heading":"Choose heading",Heading:"Heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6",Paragraph:"Paragraph","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e["en-gb"]=e["en-gb"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Centred image","Change image text alternative":"Change image text alternative","Enter image caption":"Enter image caption","Full size image":"Full size image","Image resize list":"","Image toolbar":"","image widget":"Image widget","In line":"",Insert:"","Insert image":"Insert image","Insert image via URL":"","Left aligned image":"Left aligned image",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Right aligned image","Side image":"Side image","Text alternative":"Text alternative",Update:"","Update image URL":"","Upload failed":"Upload failed","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n["en-gb"]=n["en-gb"]||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Decrease indent","Increase indent":"Increase indent"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["en-gb"]=n["en-gb"]||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Downloadable","Edit link":"Edit link",Link:"Link","Link image":"","Link URL":"Link URL","Open in a new tab":"Open in a new tab","Open link in new tab":"Open link in new tab","This link has no URL":"This link has no URL",Unlink:"Unlink"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e["en-gb"]=e["en-gb"]||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Bulleted List","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Numbered List","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n["en-gb"]=n["en-gb"]||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Remove Format"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e["en-gb"]=e["en-gb"]||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Column",Dashed:"","Delete column":"Delete column","Delete row":"Delete row",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Header column","Header row":"Header row",Height:"","Horizontal text alignment toolbar":"","Insert column left":"Insert column left","Insert column right":"Insert column right","Insert row above":"Insert row above","Insert row below":"Insert row below","Insert table":"Insert table",Inset:"","Justify cell text":"","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Merge cell right":"Merge cell right","Merge cell up":"Merge cell up","Merge cells":"Merge cells",None:"",Outset:"",Padding:"",Ridge:"",Row:"Row","Select column":"","Select row":"",Solid:"","Split cell horizontally":"Split cell horizontally","Split cell vertically":"Split cell vertically",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e["en-gb"]=e["en-gb"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Dim grey":"Dim grey","Dropdown toolbar":"","Edit block":"Edit block","Editor toolbar":"",Green:"Green",Grey:"Grey","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove colour","Restore default":"","Rich Text Editor":"Rich Text Editor","Rich Text Editor, %0":"Rich Text Editor, %0",Save:"Save","Show more items":"",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/eo.js b/core/assets/vendor/ckeditor5/translations/eo.js new file mode 100644 index 000000000000..5270850a0a7e --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/eo.js @@ -0,0 +1 @@ +!function(i){const o=i.eo=i.eo||{};o.dictionary=Object.assign(o.dictionary||{},{Bold:"grasa",Code:"",Italic:"kursiva",Strikethrough:"",Subscript:"",Superscript:"",Underline:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.eo=a.eo||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Elektu ĉapon",Heading:"Ĉapo","Heading 1":"Ĉapo 1","Heading 2":"Ĉapo 2","Heading 3":"Ĉapo 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"Paragrafo","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.eo=e.eo||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"","Change image text alternative":"ÅœanÄu la alternativan tekston de la bildo","Enter image caption":"Skribu klarigon pri la bildo","Full size image":"Bildo kun reala dimensio","Image resize list":"","Image toolbar":"","image widget":"bilda fenestraĵo","In line":"",Insert:"","Insert image":"Enmetu bildon","Insert image via URL":"","Left aligned image":"",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"","Side image":"Flanka biildo","Text alternative":"Alternativa teksto",Update:"","Update image URL":"","Upload failed":"","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.eo=i.eo||{};n.dictionary=Object.assign(n.dictionary||{},{Downloadable:"","Edit link":"",Link:"Ligilo","Link image":"","Link URL":"URL de la ligilo","Open in a new tab":"","Open link in new tab":"","This link has no URL":"",Unlink:"Malligi"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.eo=e.eo||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Bula Listo","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Numerita Listo","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.eo=e.eo||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Nuligi","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Refari","Remove color":"","Restore default":"","Rich Text Editor":"Redaktilo de Riĉa Teksto","Rich Text Editor, %0":"Redaktilo de Riĉa Teksto, %0",Save:"Konservi","Show more items":"",Turquoise:"",Undo:"Malfari",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/es.js b/core/assets/vendor/ckeditor5/translations/es.js new file mode 100644 index 000000000000..018170a31e81 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/es.js @@ -0,0 +1 @@ +!function(e){const i=e.es=e.es||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Centrar","Align left":"Alinear a la izquierda","Align right":"Alinear a la derecha",Justify:"Justificar","Text alignment":"Alineación del texto","Text alignment toolbar":"Barra de herramientas de alineación del texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const d=i.es=i.es||{};d.dictionary=Object.assign(d.dictionary||{},{Bold:"Negrita",Code:"Código",Italic:"Cursiva",Strikethrough:"Tachado",Subscript:"SubÃndice",Superscript:"SuperÃndice",Underline:"Subrayado"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.es=i.es||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Cita de bloque"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.es=a.es||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Elegir Encabezado",Heading:"Encabezado","Heading 1":"Encabezado 1","Heading 2":"Encabezado 2","Heading 3":"Encabezado 3","Heading 4":"Encabezado 4","Heading 5":"Encabezado 5","Heading 6":"Encabezado 6",Paragraph:"Párrafo","Type or paste your content here.":"Introduce o pega tu contenido aquÃ","Type your title":"Introduce tu tÃtulo"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.es=n.es||{};i.dictionary=Object.assign(i.dictionary||{},{"Horizontal line":"LÃnea horizontal"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.es=e.es||{};a.dictionary=Object.assign(a.dictionary||{},{"Break text":"","Centered image":"Imagen centrada","Change image text alternative":"Cambiar el texto alternativo de la imagen","Enter image caption":"Introducir tÃtulo de la imagen","Full size image":"Imagen a tamaño completo","Image resize list":"","Image toolbar":"Barra de herramientas de imagen","image widget":"Widget de imagen","In line":"",Insert:"","Insert image":"Insertar imagen","Insert image via URL":"","Left aligned image":"Imagen alineada a la izquierda",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Imagen alineada a la derecha","Side image":"Imagen lateral","Text alternative":"Texto alternativo",Update:"","Update image URL":"","Upload failed":"Fallo en la subida","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.es=n.es||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Disminuir sangrÃa","Increase indent":"Aumentar sangrÃa"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const a=i.es=i.es||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"Elija el idioma",Language:"Idioma","Remove language":"Quitar idioma"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.es=n.es||{};e.dictionary=Object.assign(e.dictionary||{},{Downloadable:"Descargable","Edit link":"Editar enlace",Link:"Enlace","Link image":"","Link URL":"URL del enlace","Open in a new tab":"Abrir en una pestaña nueva ","Open link in new tab":"Abrir enlace en una pestaña nueva","This link has no URL":"Este enlace no tiene URL",Unlink:"Quitar enlace"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.es=e.es||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"Lista de puntos","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Lista numerada","Numbered list styles toolbar":"",Square:"","To-do List":"Lista de tareas","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.es=o.es||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"Quitar Formato"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.es=e.es||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Columna",Dashed:"","Delete column":"Eliminar columna","Delete row":"Eliminar fila",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Columna de encabezado","Header row":"Fila de encabezado",Height:"","Horizontal text alignment toolbar":"","Insert column left":"Insertar columna izquierda","Insert column right":"Insertar columna derecha","Insert row above":"Insertar fila encima","Insert row below":"Insertar fila debajo","Insert table":"Insertar tabla",Inset:"","Justify cell text":"","Merge cell down":"Combinar celda inferior","Merge cell left":"Combinar celda izquierda","Merge cell right":"Combinar celda derecha","Merge cell up":"Combinar celda superior","Merge cells":"Combinar celdas",None:"",Outset:"",Padding:"",Ridge:"",Row:"Fila","Select column":"","Select row":"",Solid:"","Split cell horizontally":"Dividir celdas horizontalmente","Split cell vertically":"Dividir celdas verticalmente",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"Barra de herramientas de tabla",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.es=t.es||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"Signo del bitcóin","Cedi sign":"","Cent sign":"Signo del centavo","Character categories":"","Colon sign":"Signo del colón","Contains as member":"","Copyright sign":"Signo de derechos de autor","Cruzeiro sign":"Signo del cruceiro","Currency sign":"Signo monetario","Degree sign":"Signo de grado","Division sign":"Signo de división","Dollar sign":"Signo del dólar","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"","Element of":"","Em dash":"Raya","Empty set":"","En dash":"Semirraya","end with leftwards arrow above":"","Euro sign":"Signo del euro","Euro-currency sign":"Signo de la moneda euro","Exclamation question mark":"","For all":"","Fraction slash":"Barra fraccionaria","French franc sign":"Signo del franco francés","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"Signo del guaranÃ","Horizontal ellipsis":"Puntos suspensivos horizontales","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"Signo de exclamación de apertura","Inverted question mark":"Signo de interrogación de apertura","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"Signo de la lira","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"Signo de resta","Multiplication sign":"Signo de multiplicación","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"Signo del nuevo séquel","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"Signo de párrafo","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"Signo de la peseta","Peso sign":"Signo del peso","Plus-minus sign":"","Pound sign":"Signo de la libra","Proportional to":"","Question exclamation mark":"","Registered sign":"Signo de marca registrada","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"Signo del rublo","Rupee sign":"Signo de la rupia","Section sign":"Signo de sección","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Caracteres especiales","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"Signo de marca comercial","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"Signo del won","Yen sign":"Signo del yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.es=e.es||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Aguamarina",Black:"Negro",Blue:"Azul",Cancel:"Cancelar","Dim grey":"Gris Oscuro","Dropdown toolbar":"Barra de herramientas desplegable","Edit block":"Cuadro de edición","Editor toolbar":"Barra de herramientas de edición",Green:"Verde",Grey:"Gris","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Azul Claro","Light green":"Verde Claro","Light grey":"Gris Claro",Next:"Siguiente",Orange:"Anaranjado",Previous:"Anterior",Purple:"Morado",Red:"Rojo",Redo:"Rehacer","Remove color":"Quitar color","Restore default":"Restaurar valores predeterminados","Rich Text Editor":"Editor de Texto Enriquecido","Rich Text Editor, %0":"Editor de Texto Enriquecido, %0",Save:"Guardar","Select all":"Seleccionar todo","Show more items":"Mostrar más elementos",Turquoise:"Turquesa",Undo:"Deshacer","Upload in progress":"Subida en progreso",White:"Blanco","Widget toolbar":"Barra de herramientas del widget",Yellow:"Amarillo"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/et.js b/core/assets/vendor/ckeditor5/translations/et.js new file mode 100644 index 000000000000..c93f01ad1726 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/et.js @@ -0,0 +1 @@ +!function(n){const i=n.et=n.et||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Keskjoondus","Align left":"Vasakjoondus","Align right":"Paremjoondus",Justify:"Rööpjoondus","Text alignment":"Teksti joondamine","Text alignment toolbar":"Teksti joonduse tööriistariba"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.et=i.et||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Rasvane",Code:"Kood",Italic:"Kaldkiri",Strikethrough:"Läbijoonitud",Subscript:"Alaindeks",Superscript:"Ãœlaindeks",Underline:"Allajoonitud"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const i=t.et=t.et||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Tsitaat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const e=i.et=i.et||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Vali pealkiri",Heading:"Pealkiri","Heading 1":"Pealkiri 1","Heading 2":"Pealkiri 2","Heading 3":"Pealkiri 3","Heading 4":"Pealkiri 4","Heading 5":"Pealkiri 5","Heading 6":"Pealkiri 6",Paragraph:"Lõik","Type or paste your content here.":"Siia tipi või kopeeri tekst.","Type your title":"Sisesta pealkiri"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.et=n.et||{};o.dictionary=Object.assign(o.dictionary||{},{"Horizontal line":"Horisontaalne joon"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.et=e.et||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Keskele joondatud pilt","Change image text alternative":"Muuda pildi asenduskirjeldust","Enter image caption":"Sisesta pildi pealkiri","Full size image":"Täissuuruses pilt","Image resize list":"","Image toolbar":"Piltide tööriistariba","image widget":"pildi vidin","In line":"",Insert:"","Insert image":"Siseta pilt","Insert image via URL":"","Left aligned image":"Vasakule joondatud pilt",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Paremale joondatud pilt","Side image":"Pilt küljel","Text alternative":"Asenduskirjeldus",Update:"","Update image URL":"","Upload failed":"Ãœleslaadimine ebaõnnestus","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.et=n.et||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Vähenda taanet","Increase indent":"Suurenda taanet"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.et=i.et||{};n.dictionary=Object.assign(n.dictionary||{},{Downloadable:"Allalaaditav","Edit link":"Muuda linki",Link:"Link","Link image":"","Link URL":"Lingi URL","Open in a new tab":"Ava uuel kaardil","Open link in new tab":"Ava link uuel vahekaardil","This link has no URL":"Sellel lingil puudub URL",Unlink:"Eemalda link"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.et=e.et||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Punktidega loetelu","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Nummerdatud loetelu","Numbered list styles toolbar":"",Square:"","To-do List":"Tööde nimekiri","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.et=i.et||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"Eemalda vorming"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.et=e.et||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"Lahtri tekst all","Align cell text to the center":"Lahtri tekst keskel","Align cell text to the left":"Lahtri tekst vasakul","Align cell text to the middle":"Lahtri tekst kõrguse järgi keskel","Align cell text to the right":"Lahtri tekst paremal","Align cell text to the top":"Lahtri tekst üleval","Align table to the left":"Tabel joondatud vasakule","Align table to the right":"Tabel joondatud paremale",Alignment:"Joondus",Background:"Taust",Border:"Ääris","Cell properties":"Lahtri omadused","Center table":"Tabel joondatud keskele",Color:"Värvus","Color picker":"Värvi valija",Column:"Veerg",Dashed:"Kriipsjoon","Delete column":"Kustuta veerg","Delete row":"Kustuta rida",Dimensions:"Mõõtmed",Dotted:"Punktiir",Double:"Topelt","Enter table caption":"",Groove:"Kraav","Header column":"Päise veerg","Header row":"Päise rida",Height:"Kõrgus","Horizontal text alignment toolbar":"Teksti rõhtpaigutuse tööriistariba","Insert column left":"Sisesta veerg vasakule","Insert column right":"Sisesta veerg paremale","Insert row above":"Sisesta rida ülespoole","Insert row below":"Sisesta rida allapoole","Insert table":"Sisesta tabel",Inset:"Süvik","Justify cell text":"Lahtri tekst rööpjoondatud","Merge cell down":"Liida alumise lahtriga","Merge cell left":"Liida vasakul oleva lahtriga","Merge cell right":"Liida paremal oleva lahtriga","Merge cell up":"Liida ülemise lahtriga","Merge cells":"Liida lahtrid",None:"Puudub",Outset:"Küngas",Padding:"Vahe sisuni",Ridge:"Vall",Row:"Rida","Select column":"Vali veerg","Select row":"Vali rida",Solid:"Pidev","Split cell horizontally":"Jaga lahter horisontaalselt","Split cell vertically":"Jaga lahter vertikaalselt",Style:"Stiil","Table alignment toolbar":"Tabeli paigutuse tööriistariba","Table cell text alignment":"Teksti paigutus lahtris","Table properties":"Tabeli omadused","Table toolbar":"Tabelite tööriistariba",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Värvus ei sobi. Proovi "#FF0000" või "rgb(255,0,0)" või "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Väärtus ei sobi. Proovi "10px", "2em" või lihtsalt "2".',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Teksti püstpaigutuse tööriistariba",Width:"Laius"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.et=t.et||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"Sendi märk","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"Euro märk","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"Miinusmärk","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"Naela märk","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Erimärgid","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.et=e.et||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Akvamariin",Black:"Must",Blue:"Sinine",Cancel:"Loobu","Dim grey":"Tumehall","Dropdown toolbar":"Avatav tööriistariba","Edit block":"Muuda plokki","Editor toolbar":"Redaktori tööriistariba",Green:"Roheline",Grey:"Hall","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Helesinine","Light green":"Heleroheline","Light grey":"Helehall",Next:"Järgmine",Orange:"Oranž",Previous:"Eelmine",Purple:"Lilla",Red:"Punane",Redo:"Tee uuesti","Remove color":"Eemalda värv","Restore default":"","Rich Text Editor":"Tekstiredaktor","Rich Text Editor, %0":"Tekstiredaktor, %0",Save:"Salvesta","Select all":"Vali kõik","Show more items":"Näita veel",Turquoise:"Türkiis",Undo:"Võta tagasi","Upload in progress":"Ãœleslaadimine pooleli",White:"Valge","Widget toolbar":"Vidinate tööriistariba",Yellow:"Kollane"}),i.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/eu.js b/core/assets/vendor/ckeditor5/translations/eu.js new file mode 100644 index 000000000000..f2e07d72f5fe --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/eu.js @@ -0,0 +1 @@ +!function(i){const n=i.eu=i.eu||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Lodia",Code:"Kodea",Italic:"Etzana",Strikethrough:"",Subscript:"",Superscript:"",Underline:"Azpimarra"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.eu=i.eu||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Aipua"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.eu=a.eu||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Aukeratu izenburua",Heading:"Izenburua","Heading 1":"Izenburua 1","Heading 2":"Izenburua 2","Heading 3":"Izenburua 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"Paragrafoa","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.eu=e.eu||{};a.dictionary=Object.assign(a.dictionary||{},{"Break text":"","Centered image":"Zentratutako irudia","Change image text alternative":"Aldatu irudiaren ordezko testua","Enter image caption":"Sartu irudiaren epigrafea","Full size image":"Tamaina osoko irudia","Image resize list":"","Image toolbar":"","image widget":"irudi widgeta","In line":"",Insert:"","Insert image":"Txertatu irudia","Insert image via URL":"","Left aligned image":"Ezkerrean lerrokatutako irudia",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Eskuinean lerrokatutako irudia","Side image":"Alboko irudia","Text alternative":"Ordezko testua",Update:"","Update image URL":"","Upload failed":"Kargatzeak huts egin du","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.eu=n.eu||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"",Link:"Esteka","Link image":"","Link URL":"Estekaren URLa","Open in a new tab":"","Open link in new tab":"","This link has no URL":"",Unlink:"Desestekatu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.eu=e.eu||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Buletdun zerrenda","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Zenbakidun zerrenda","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.eu=e.eu||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Utzi","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Berregin","Remove color":"","Restore default":"","Rich Text Editor":"Testu aberastuaren editorea","Rich Text Editor, %0":"Testu aberastuaren editorea, %0",Save:"Gorde","Show more items":"",Turquoise:"",Undo:"Desegin",White:"",Yellow:""}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/fa.js b/core/assets/vendor/ckeditor5/translations/fa.js new file mode 100644 index 000000000000..85cbfe433467 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/fa.js @@ -0,0 +1 @@ +!function(n){const i=n.fa=n.fa||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"تراز وسط","Align left":"تراز Ú†Ù¾","Align right":"تراز راست",Justify:"هم تراز کردن","Text alignment":"تراز متن","Text alignment toolbar":"نوار ابزار ترازبندی متن"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fa=i.fa||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"درشت",Code:"کد",Italic:"کج",Strikethrough:"خط خورده",Subscript:"پایین نویس",Superscript:"بالانویس",Underline:"خط زیر"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fa=i.fa||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":" بلوک نقل قول"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.fa=n.fa||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose heading":"انتخاب عنوان",Heading:"عنوان","Heading 1":"عنوان 1","Heading 2":"عنوان 2","Heading 3":"عنوان 3","Heading 4":"عنوان 4","Heading 5":"عنوان 5","Heading 6":"عنوان 6",Paragraph:"پاراگراÙ","Type or paste your content here.":"Ù…Øتوای خود را در اینجا تایپ یا پیست کنید.","Type your title":"عنوان خود را تایپ کنید"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fa=i.fa||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"خط اÙÙ‚ÛŒ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.fa=e.fa||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"تصویر در وسط","Change image text alternative":"تغییر متن جایگزین تصویر","Enter image caption":"عنوان تصویر را وارد کنید","Full size image":"تصویر در اندازه کامل","Image resize list":"","Image toolbar":"نوارابزار تصویر","image widget":"ابزاره تصویر","In line":"",Insert:"","Insert image":"قرار دادن تصویر","Insert image via URL":"","Left aligned image":"تصویر تراز شده Ú†Ù¾",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"تصویر تراز شده راست","Side image":"تصویر جانبی","Text alternative":"متن جایگزین",Update:"","Update image URL":"","Upload failed":"آپلود ناموÙÙ‚ بود","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.fa=n.fa||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"کاهش تورÙتگی","Increase indent":"اÙزایش تورÙتگی"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.fa=n.fa||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"قابل بارگیری","Edit link":"ویرایش پیوند",Link:"پیوند","Link image":"اتصال پیوند به تصویر","Link URL":"نشانی اینترنتی پیوند","Open in a new tab":"بازکردن در برگه جدید","Open link in new tab":"باز کردن پیوند در برگه جدید","This link has no URL":"این پیوند نشانی اینترنتی ندارد",Unlink:"لغو پیوند"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.fa=e.fa||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"لیست نشانه‌دار","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"لیست عددی","Numbered list styles toolbar":"",Square:"","To-do List":"لیست انجام کار","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fa=i.fa||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"Øذ٠کردن قالب"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.fa=e.fa||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"متن سلول را در سمت راست تراز کنید","Align cell text to the top":"","Align table to the left":"","Align table to the right":"جدول را در سمت راست تراز کنید",Alignment:"ترازبندی",Background:"زمینه",Border:"Øاشیه","Cell properties":"خصوصیات سلول","Center table":"جدول وسط",Color:"رنگ","Color picker":"",Column:"ستون",Dashed:"نقطه چین","Delete column":"Øذ٠ستون","Delete row":"Øذ٠سطر",Dimensions:"ابعاد",Dotted:"خط چین",Double:"دوبل","Enter table caption":"",Groove:"خط دار کردن","Header column":"ستون سربرگ","Header row":"سطر سربرگ",Height:"ارتÙاع","Horizontal text alignment toolbar":"","Insert column left":"درج ستون در سمت Ú†Ù¾","Insert column right":"درج ستون در سمت راست","Insert row above":"درج سطر در بالا","Insert row below":"درج سطر در پایین","Insert table":"درج جدول",Inset:"","Justify cell text":"","Merge cell down":"ادغام سلول پایین","Merge cell left":"ادغام سلول Ú†Ù¾","Merge cell right":"ادغام سلول راست","Merge cell up":"ادغام سلول بالا","Merge cells":"ادغام سلول ها",None:"هیچ کدام",Outset:"",Padding:"Øاشیه داخلی",Ridge:"",Row:"سطر","Select column":"","Select row":"",Solid:"توپر","Split cell horizontally":"تقسیم اÙÙ‚ÛŒ سلول","Split cell vertically":"تقسیم عمودی سلول",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"خصوصیات جدول","Table toolbar":"نوارابزار جدول",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:"عرض"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.fa=t.fa||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"downwards double arrow","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"پیکان دوتایی Ú†Ù¾","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"کاراکترهای ویژه","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.fa=e.fa||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"0% از 1%",Aquamarine:"زمرد کبود",Black:"سیاه",Blue:"آبی",Cancel:"لغو","Dim grey":"خاکستری تیره","Dropdown toolbar":"نوارابزار کشویی","Edit block":"ویرایش قطعه","Editor toolbar":"نوارابزار ویرایشگر",Green:"سبز",Grey:"خاکستری","Insert paragraph after block":"درج پاراگرا٠بعد از بلوک","Insert paragraph before block":"درج پاراگرا٠قبل از بلوک","Light blue":"آبی روشن","Light green":"سبز روشن","Light grey":"خاکستری روشن",Next:"بعدی",Orange:"نارنجی",Previous:"قبلی",Purple:"بنÙØ´",Red:"قرمز",Redo:"باز انجام","Remove color":"Øذ٠رنگ","Restore default":"","Rich Text Editor":"ویرایشگر متن غنی","Rich Text Editor, %0":"ویرایشگر متن غنی، %0",Save:"ذخیره","Select all":"انتخاب همه","Show more items":"نمایش گزینه‌های بیشتر",Turquoise:"Ùیروزه ای",Undo:"بازگردانی","Upload in progress":"آپلود در Øال انجام",White:"سÙید","Widget toolbar":"نوار ابزار ویجت",Yellow:"زرد"}),o.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/fi.js b/core/assets/vendor/ckeditor5/translations/fi.js new file mode 100644 index 000000000000..4a198f5cb539 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/fi.js @@ -0,0 +1 @@ +!function(a){const i=a.fi=a.fi||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Tasaa keskelle","Align left":"Tasaa vasemmalle","Align right":"Tasaa oikealle",Justify:"Tasaa molemmat reunat","Text alignment":"Tekstin tasaus","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fi=i.fi||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Lihavointi",Code:"Koodi",Italic:"Kursivointi",Strikethrough:"Yliviivaus",Subscript:"Alaindeksi",Superscript:"Yläindeksi",Underline:"Alleviivaus"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fi=i.fi||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Lainaus"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.fi=i.fi||{};o.dictionary=Object.assign(o.dictionary||{},{"Choose heading":"Valitse otsikko",Heading:"Otsikkotyyli","Heading 1":"Otsikko 1","Heading 2":"Otsikko 2","Heading 3":"Otsikko 3","Heading 4":"Otsikko 4","Heading 5":"Otsikko 5","Heading 6":"Otsikko 6",Paragraph:"Kappale","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.fi=e.fi||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Keskitetty kuva","Change image text alternative":"Vaihda kuvan vaihtoehtoinen teksti","Enter image caption":"Syötä kuvateksti","Full size image":"Täysikokoinen kuva","Image resize list":"","Image toolbar":"","image widget":"Kuvavimpain","In line":"",Insert:"","Insert image":"Lisää kuva","Insert image via URL":"","Left aligned image":"Vasemmalle tasattu kuva",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Oikealle tasattu kuva","Side image":"Pieni kuva","Text alternative":"Vaihtoehtoinen teksti",Update:"","Update image URL":"","Upload failed":"Lataus epäonnistui","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.fi=n.fi||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Vähennä sisennystä","Increase indent":"Lisää sisennystä"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fi=i.fi||{};n.dictionary=Object.assign(n.dictionary||{},{Downloadable:"","Edit link":"Muokkaa linkkiä",Link:"Linkki","Link image":"","Link URL":"Linkin osoite","Open in a new tab":"","Open link in new tab":"Avaa linkki uudessa välilehdessä","This link has no URL":"Linkillä ei ole URL-osoitetta",Unlink:"Poista linkki"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.fi=e.fi||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Lista","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Numeroitu lista","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.fi=i.fi||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Poista muotoilu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.fi=e.fi||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Sarake",Dashed:"","Delete column":"Poista sarake","Delete row":"Poista rivi",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Otsikkosarake","Header row":"Otsikkorivi",Height:"","Horizontal text alignment toolbar":"","Insert column left":"Lisää sarake vasemmalle","Insert column right":"Lisää sarake oikealle","Insert row above":"Lisää rivi ylle","Insert row below":"Lisää rivi alle","Insert table":"Lisää taulukko",Inset:"","Justify cell text":"","Merge cell down":"Yhdistä solu alas","Merge cell left":"Yhdistä solu vasemmalle","Merge cell right":"Yhdistä solu oikealle","Merge cell up":"Yhdistä solu ylös","Merge cells":"Yhdistä tai jaa soluja",None:"",Outset:"",Padding:"",Ridge:"",Row:"Rivi","Select column":"Valitse sarake","Select row":"Valitse rivi",Solid:"","Split cell horizontally":"Jaa solu vaakasuunnassa","Split cell vertically":"Jaa solu pystysuunnassa",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.fi=e.fi||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"",Aquamarine:"Akvamariini",Black:"Musta",Blue:"Sininen",Cancel:"Peruuta","Dim grey":"","Dropdown toolbar":"","Edit block":"Muokkaa lohkoa","Editor toolbar":"",Green:"Vihreä",Grey:"Harmaa","Light blue":"Vaaleansininen","Light green":"Vaaleanvihreä","Light grey":"Vaaleanharmaa",Next:"",Orange:"Oranssi",Previous:"",Purple:"Purppura",Red:"Punainen",Redo:"Tee uudelleen","Remove color":"Poista väri","Restore default":"","Rich Text Editor":"Rikas tekstieditori","Rich Text Editor, %0":"Rikas tekstieditori, %0",Save:"Tallenna","Show more items":"",Turquoise:"Turkoosi",Undo:"Peru","Upload in progress":"Lähetys käynnissä",White:"Valkoinen",Yellow:"Keltainen"}),i.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/fr.js b/core/assets/vendor/ckeditor5/translations/fr.js new file mode 100644 index 000000000000..e8d435d21ac4 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/fr.js @@ -0,0 +1 @@ +!function(e){const t=e.fr=e.fr||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Centrer","Align left":"Aligner à gauche","Align right":"Aligner à droite",Justify:"Justifier","Text alignment":"Alignement du texte","Text alignment toolbar":"Barre d'outils d'alignement du texte"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fr=i.fr||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Gras",Code:"Code",Italic:"Italique",Strikethrough:"Barré",Subscript:"Indice",Superscript:"Exposant",Underline:"Souligné"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fr=i.fr||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Citation"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.fr=e.fr||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose heading":"Choisir l'en-tête",Heading:"En-tête","Heading 1":"Titre 1","Heading 2":"Titre 2","Heading 3":"Titre 3","Heading 4":"Titre 4","Heading 5":"Titre 5","Heading 6":"Titre 6",Paragraph:"Paragraphe","Type or paste your content here.":"Noter ou coller votre contenu ici","Type your title":"Rentrer votre titre"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.fr=i.fr||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Ligne horizontale"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.fr=e.fr||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Image centrée","Change image text alternative":"Changer le texte alternatif à l’image","Enter image caption":"Saisir la légende de l’image","Full size image":"Image taille réelle","Image resize list":"Liste des tailles d'images","Image toolbar":"Barre d'outils des images","image widget":"Objet image","In line":"",Insert:"Insérer","Insert image":"Insérer une image","Insert image via URL":"Insérer une image à partir d'une URL","Left aligned image":"Image alignée à gauche",Original:"Taille originale","Resize image":"Redimensionner l'image","Resize image to %0":"Redimensionner à %0","Resize image to the original size":"Appliquer les dimensions d'origine","Right aligned image":"Image alignée à droite","Side image":"Image latérale","Text alternative":"Texte alternatif",Update:"Modifier","Update image URL":"Modifier l'URL de l'image","Upload failed":"Échec de l'envoi","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const n=e.fr=e.fr||{};n.dictionary=Object.assign(n.dictionary||{},{"Decrease indent":"Diminuer le retrait","Increase indent":"Augmenter le retrait"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const n=a.fr=a.fr||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose language":"Choisir la langue",Language:"Langue","Remove language":"Supprimer la langue"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.fr=n.fr||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Fichier téléchargeable","Edit link":"Modifier le lien",Link:"Lien","Link image":"Lien d'image","Link URL":"URL du lien","Open in a new tab":"Ouvrir dans un nouvel onglet","Open link in new tab":"Ouvrir le lien dans un nouvel onglet","This link has no URL":"Ce lien n'a pas d'URL",Unlink:"Supprimer le lien"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const s=e.fr=e.fr||{};s.dictionary=Object.assign(s.dictionary||{},{"Bulleted List":"Liste à puces","Bulleted list styles toolbar":"Barre d'outils des styles de liste à puce",Circle:"Cercle",Decimal:"Chiffres","Decimal with leading zero":"Chiffres avec des zéros supplémentaire",Disc:"Disque","Lower-latin":"Lettres minuscules","Lower–roman":"Chiffres romains en minuscules","Numbered List":"Liste numérotée","Numbered list styles toolbar":"Barre d'outils des styles de liste numérotée",Square:"Carré","To-do List":"Liste de tâches","Toggle the circle list style":'Activer / désactiver le style de liste "cercle"',"Toggle the decimal list style":'Activer / désactiver le style de liste "chiffres"',"Toggle the decimal with leading zero list style":'Activer / désactiver le style de liste "chiffres de mêmes longueurs"',"Toggle the disc list style":'Activer / désactiver le style de liste "disque"',"Toggle the lower–latin list style":'Activer / désactiver le style de liste "lettres minuscules"',"Toggle the lower–roman list style":'Activer / désactiver le style de liste "chiffres romains en minuscules"',"Toggle the square list style":'Activer / désactiver le style de liste "carré"',"Toggle the upper–latin list style":'Activer / désactiver le style de liste "lettres majuscules"',"Toggle the upper–roman list style":'Activer / désactiver le style de liste "chiffres romains en majuscules"',"Upper-latin":"Lettres majuscules","Upper-roman":"Chiffres romains en majuscules"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.fr=n.fr||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Enlever le format"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.fr=e.fr||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"Aligner le texte en bas","Align cell text to the center":"Aligner la cellule au centre","Align cell text to the left":"Aligner la cellule à gauche","Align cell text to the middle":"Aligner le texte au milieu","Align cell text to the right":"Aligner la cellule à droite","Align cell text to the top":"Aligner le texte en haut","Align table to the left":"Aligner le tableau à gauche","Align table to the right":"Aligner le tableau à droite",Alignment:"Alignement",Background:"Fond",Border:"Bordure","Cell properties":"Propriétés de la cellule","Center table":"Centrer le tableau ",Color:"Couleur","Color picker":"Pipette à couleurs",Column:"Colonne",Dashed:"Tirets","Delete column":"Supprimer la colonne","Delete row":"Supprimer la ligne",Dimensions:"Dimensions",Dotted:"Pointillés",Double:"Double","Enter table caption":"",Groove:"Rainuré","Header column":"Colonne d'entête","Header row":"Ligne d'entête",Height:"Hauteur","Horizontal text alignment toolbar":"Barre d'outils pour modifier l'alignement horizontal du texte","Insert column left":"Insérer une colonne à gauche","Insert column right":"Insérer une colonne à droite","Insert row above":"Insérer une ligne au-dessus","Insert row below":"Insérer une ligne en-dessous","Insert table":"Insérer un tableau",Inset:"Relief intérieur","Justify cell text":"Justifier le contenu de la cellule","Merge cell down":"Fusionner la cellule en-dessous","Merge cell left":"Fusionner la cellule à gauche","Merge cell right":"Fusionner la cellule à droite","Merge cell up":"Fusionner la cellule au-dessus","Merge cells":"Fusionner les cellules",None:"Aucun",Outset:"Relief extérieur",Padding:"Remplissage pour aérer le texte",Ridge:"Relief",Row:"Ligne","Select column":"Sélectionner la colonne","Select row":"Sélectionner la ligne",Solid:"Continu","Split cell horizontally":"Scinder la cellule horizontalement","Split cell vertically":"Scinder la cellule verticalement",Style:"Style","Table alignment toolbar":"Barre d'outils pour modifier l'alignement du tableau","Table cell text alignment":"Alignement du texte de la cellule","Table properties":"Propriétés du tableau","Table toolbar":"Barre d'outils des tableaux",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'La couleur est invalide. Essayez "#FF0000" ou "rgb(255,0,0)" ou "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'La valeur est invalide. Essayez "10px" ou "2em" ou simplement "2".',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Barre d'outils pour modifier l'alignement vertical du texte",Width:"Largeur"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.fr=e.fr||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Presque égal à ",Angle:"Angle","Approximately equal to":"Environ égal à ","Asterisk operator":"Astérisque","Austral sign":"Austral","back with leftwards arrow above":"Précédent avec flèche vers la gauche","Bitcoin sign":"Bitcoin","Cedi sign":"Cédi","Cent sign":"Centime","Character categories":"Catégories de caractères","Colon sign":"Deux points","Contains as member":"Contient","Copyright sign":"Copyright","Cruzeiro sign":"Cruzeiro","Currency sign":"Symbole monétaire","Degree sign":"Degré","Division sign":"Division","Dollar sign":"Dollar","Dong sign":"Dong","Double dagger":"Croix de Lorraine","Double exclamation mark":"Double point d'exclamation","Double low-9 quotation mark":"Guillemet-virgule double inférieur","Double question mark":"Double point d'interrogation","downwards arrow to bar":"Flèche vers le bas avec barre de fin","downwards dashed arrow":"Flèche en pointillés vers le bas","downwards double arrow":"Double flèche vers le bas","Drachma sign":"Drachme","Element of":"Appartient à ","Em dash":"Tiret long","Empty set":"Élément vide","En dash":"Tiret","end with leftwards arrow above":"Fin avec flèche vers la gauche","Euro sign":"Euro","Euro-currency sign":"Symbole monétaire de l'euro","Exclamation question mark":"Point exclamation et question","For all":"Pour tout","Fraction slash":"Fraction","French franc sign":"Franc français","German penny sign":"Pfennig","Greater-than or equal to":"Signe supérieur ou égal","Greater-than sign":"Signe supérieur","Guarani sign":"Guarani","Horizontal ellipsis":"Trois points","Hryvnia sign":"Hryvnia","Identical to":"Identique à ","Indian rupee sign":"Roupie indienne",Infinity:"Infini",Integral:"Intégrale",Intersection:"Intersection","Inverted exclamation mark":"Point d'exclamation inversé","Inverted question mark":"Point d'interrogation inversé","Kip sign":"Kip","Latin capital letter a with breve":"A bref majuscule","Latin capital letter a with macron":"A barre majuscule","Latin capital letter a with ogonek":"A ogonek majuscule","Latin capital letter c with acute":"C accent aigu majuscule","Latin capital letter c with caron":"C caron majuscule","Latin capital letter c with circumflex":"C circonflexe majuscule","Latin capital letter c with dot above":"C point suscrit majuscule","Latin capital letter d with caron":"D caron majuscule","Latin capital letter d with stroke":"D barré majuscule","Latin capital letter e with breve":"E bref majuscule","Latin capital letter e with caron":"E caron majuscule","Latin capital letter e with dot above":"E point suscrit majuscule","Latin capital letter e with macron":"E macron majuscule","Latin capital letter e with ogonek":"E ogonek majuscule","Latin capital letter eng":"Eng majuscule","Latin capital letter g with breve":"G bref majuscule","Latin capital letter g with cedilla":"G cédille majuscule","Latin capital letter g with circumflex":"G accent circonflexe majuscule","Latin capital letter g with dot above":"G point suscrit majuscule","Latin capital letter h with circumflex":"H accent circonflexe majuscule","Latin capital letter h with stroke":"H barré majuscule","Latin capital letter i with breve":"I bref majuscule","Latin capital letter i with dot above":"I point suscrit majuscule","Latin capital letter i with macron":"I macron majuscule","Latin capital letter i with ogonek":"I ogonek majuscule","Latin capital letter i with tilde":"I tilde majuscule","Latin capital letter j with circumflex":"J accent circonflexe majuscule","Latin capital letter k with cedilla":"K cédille majuscule","Latin capital letter l with acute":"L accent aigu majuscule","Latin capital letter l with caron":"L caron majuscule","Latin capital letter l with cedilla":"L cédille majuscule","Latin capital letter l with middle dot":"L point médian majuscule","Latin capital letter l with stroke":"L barré majuscule","Latin capital letter n with acute":"N accent aigu majuscule","Latin capital letter n with caron":"N caron majuscule","Latin capital letter n with cedilla":"N cédille majuscule","Latin capital letter o with breve":"O bref majuscule","Latin capital letter o with double acute":"O double accent aigu majuscule","Latin capital letter o with macron":"O macron majuscule","Latin capital letter r with acute":"R accent aigu majuscule","Latin capital letter r with caron":"R caron majuscule","Latin capital letter r with cedilla":"R cédille majuscule","Latin capital letter s with acute":"S accent aigu majuscule","Latin capital letter s with caron":"S caron majuscule","Latin capital letter s with cedilla":"S cédille majuscule","Latin capital letter s with circumflex":"S circonflexe majuscule","Latin capital letter t with caron":"T caron majuscule","Latin capital letter t with cedilla":"T cédille majuscule","Latin capital letter t with stroke":"T barré majuscule","Latin capital letter u with breve":"U bref majuscule","Latin capital letter u with double acute":"U double accent aigu majuscule","Latin capital letter u with macron":"U macron majuscule","Latin capital letter u with ogonek":"U ogonek majuscule","Latin capital letter u with ring above":"U rond en chef majuscule","Latin capital letter u with tilde":"U tilde majuscule","Latin capital letter w with circumflex":"W circonflexe majuscule","Latin capital letter y with circumflex":"Y circonflexe majuscule","Latin capital letter y with diaeresis":"Y tréma majuscule","Latin capital letter z with acute":"Z accent circonflexe majuscule","Latin capital letter z with caron":"Z caron majuscule","Latin capital letter z with dot above":"Z point suscrit majuscule","Latin capital ligature ij":"Digramme soudé IJ majuscule","Latin capital ligature oe":"O-E entrelacé majuscule","Latin small letter a with breve":"A bref minuscule","Latin small letter a with macron":"A barre minuscule","Latin small letter a with ogonek":"A ogonek minuscule","Latin small letter c with acute":"C accent aigu minuscule","Latin small letter c with caron":"C caron minuscule","Latin small letter c with circumflex":"C circonflexe minuscule","Latin small letter c with dot above":"C point suscrit minuscule","Latin small letter d with caron":"C caron minuscule","Latin small letter d with stroke":"D barré minuscule","Latin small letter dotless i":"I sans point minuscule","Latin small letter e with breve":"E bref minuscule","Latin small letter e with caron":"E caron minuscule","Latin small letter e with dot above":"E point suscrit minuscule","Latin small letter e with macron":"E macron minuscule","Latin small letter e with ogonek":"E ogonek minuscule","Latin small letter eng":"Eng minuscule","Latin small letter f with hook":"Fonction","Latin small letter g with breve":"G bref minuscule","Latin small letter g with cedilla":"G cédille minuscule","Latin small letter g with circumflex":"G accent circonflexe minuscule","Latin small letter g with dot above":"G point suscrit minuscule","Latin small letter h with circumflex":"H accent circonflexe minuscule","Latin small letter h with stroke":"H barré minuscule","Latin small letter i with breve":"I bref minuscule","Latin small letter i with macron":"I macron minuscule","Latin small letter i with ogonek":"I ogonek minuscule","Latin small letter i with tilde":"I tilde minuscule","Latin small letter j with circumflex":"J accent circonflexe minuscule","Latin small letter k with cedilla":"K cédille minuscule","Latin small letter kra":"Kra minuscule","Latin small letter l with acute":"L accent aigu minuscule","Latin small letter l with caron":"L caron minuscule","Latin small letter l with cedilla":"L cédille minuscule","Latin small letter l with middle dot":"L point médian minuscule","Latin small letter l with stroke":"L barré minuscule","Latin small letter long s":"S long minuscule","Latin small letter n preceded by apostrophe":"Apostrophe N minuscule","Latin small letter n with acute":"N accent aigu minuscule","Latin small letter n with caron":"N caron minuscule","Latin small letter n with cedilla":"N cédille minuscule","Latin small letter o with breve":"O bref minuscule","Latin small letter o with double acute":"O double accent aigu minuscule","Latin small letter o with macron":"O macron minuscule","Latin small letter r with acute":"R accent aigu minuscule","Latin small letter r with caron":"R caron minuscule","Latin small letter r with cedilla":"R cédille minuscule","Latin small letter s with acute":"S accent aigu minuscule","Latin small letter s with caron":"S caron minuscule","Latin small letter s with cedilla":"S cédille minuscule","Latin small letter s with circumflex":"S circonflexe minuscule","Latin small letter t with caron":"T caron minuscule","Latin small letter t with cedilla":"T cédille minuscule","Latin small letter t with stroke":"T barré minuscule","Latin small letter u with breve":"U bref minuscule","Latin small letter u with double acute":"U double accent aigu minuscule","Latin small letter u with macron":"U macron minuscule","Latin small letter u with ogonek":"U ogonek minuscule","Latin small letter u with ring above":"U rond en chef minuscule","Latin small letter u with tilde":"U tilde minuscule","Latin small letter w with circumflex":"W circonflexe minuscule","Latin small letter y with circumflex":"Y circonflexe minuscule","Latin small letter z with acute":"Z accent circonflexe minuscule","Latin small letter z with caron":"Z caron minuscule","Latin small letter z with dot above":"Z point suscrit minuscule","Latin small ligature ij":"Digramme soudé IJ minuscule","Latin small ligature oe":"O-E entrelacé minuscule","Left double quotation mark":"Guillemet-apostrophe double culbuté","Left single quotation mark":"Guillemet-apostrophe culbuté","Left-pointing double angle quotation mark":"Guillemet double vers la gauche","leftwards arrow to bar":"Flèche vers la gauche avec barre de fin","leftwards dashed arrow":"Flèche en pointillés vers la gauche","leftwards double arrow":"Double flèche vers la gauche","Less-than or equal to":"Signe inférieur ou égal","Less-than sign":"Signe inférieur","Lira sign":"Lire","Livre tournois sign":"Livre tournois","Logical and":"Et logique","Logical or":"Ou logique",Macron:"Macron","Manat sign":"Manat","Mill sign":"Moulin","Minus sign":"Moins","Multiplication sign":"Multiplication","N-ary product":"Produit","N-ary summation":"Somme",Nabla:"Nabla","Naira sign":"Naira","New sheqel sign":"Shekel","Nordic mark sign":"Mark nordique","Not an element of":"N'appartient pas à ","Not equal to":"Différent de","Not sign":"Négation logique","on with exclamation mark with left right arrow above":"Allumé avec flèches vers la gauche et la droite",Overline:"Macron long","Paragraph sign":"Fin de paragraphe","Partial differential":"Partiellement différent","Per mille sign":"Pour mille","Per ten thousand sign":"Pour dix milles","Peseta sign":"Peseta","Peso sign":"Peso","Plus-minus sign":"Plus ou moins","Pound sign":"Livre sterling","Proportional to":"Proportionnel à ","Question exclamation mark":"Point d'interrogation et exclamation","Registered sign":"Registered","Reversed paragraph sign":"Fin de paragraphe inversé","Right double quotation mark":"Guillemet-apostrophe double","Right single quotation mark":"Guillemet-apostrophe","Right-pointing double angle quotation mark":"Guillemet double vers la droite","rightwards arrow to bar":"Flèche vers la droite avec barre de fin","rightwards dashed arrow":"Flèche en pointillés vers la droite","rightwards double arrow":"Double flèche vers la droite","Ruble sign":"Rouble","Rupee sign":"Roupie","Section sign":"Paragraphe","Single left-pointing angle quotation mark":"Guillemet simple vers la gauche","Single low-9 quotation mark":"Guillemet-virgule inférieur","Single right-pointing angle quotation mark":"Guillemet simple vers la droite","soon with rightwards arrow above":"Bientôt avec flèche vers la droite","Special characters":"Caractères spéciaux","Spesmilo sign":"Spesmilo","Square root":"Racine carrée","Tenge sign":"Tenge","There exists":"Existe","Tilde operator":"Tilde","top with upwards arrow above":"Haut avec flèche vers le haut","Trade mark sign":"Marque déposée","Tugrik sign":"Tugrik","Turkish lira sign":"Lire turque","Two dot leader":"Deux points",Union:"Union","up down arrow with base":"Flèche haut et bas avec barre de fin","upwards arrow to bar":"Flèche vers le haut avec barre de fin","upwards dashed arrow":"Flèche en pointillés vers le haut","upwards double arrow":"Double flèche vers le haut","Vulgar fraction one half":"Un demi","Vulgar fraction one quarter":"Un quart","Vulgar fraction three quarters":"Trois quarts","Won sign":"Won","Yen sign":"Yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.fr=e.fr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 sur %1",Aquamarine:"Bleu vert",Black:"Noir",Blue:"Bleu",Cancel:"Annuler","Dim grey":"Gris pâle","Dropdown toolbar":"Barre d'outils dans un menu déroulant","Edit block":"Modifier le bloc","Editor toolbar":"Barre d'outils de l'éditeur",Green:"Vert",Grey:"Gris","Insert paragraph after block":"Insérer du texte après ce bloc","Insert paragraph before block":"Insérer du texte avant ce bloc","Light blue":"Bleu clair","Light green":"Vert clair","Light grey":"Gris clair",Next:"Suivant",Orange:"Orange",Previous:"Précedent",Purple:"Violet",Red:"Rouge",Redo:"Restaurer","Remove color":"Enlever la couleur","Restore default":"","Rich Text Editor":"Éditeur de texte enrichi","Rich Text Editor, %0":"Éditeur de texte enrichi, %0",Save:"Enregistrer","Select all":"Sélectionner tout","Show more items":"Montrer plus d'éléments",Turquoise:"Turquoise",Undo:"Annuler","Upload in progress":"Téléchargement en cours",White:"Blanc","Widget toolbar":"Barre d'outils du widget",Yellow:"Jaune"}),r.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/gl.js b/core/assets/vendor/ckeditor5/translations/gl.js new file mode 100644 index 000000000000..68c616804b60 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/gl.js @@ -0,0 +1 @@ +!function(t){const e=t.gl=t.gl||{};e.dictionary=Object.assign(e.dictionary||{},{"Align center":"Centrar horizontalmente","Align left":"Aliñar á esquerda","Align right":"Aliñar á dereita",Justify:"Xustificado","Text alignment":"Aliñamento do texto","Text alignment toolbar":"Barra de ferramentas de aliñamento de textos"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const c=i.gl=i.gl||{};c.dictionary=Object.assign(c.dictionary||{},{Bold:"Negra",Code:"Código",Italic:"Itálica",Strikethrough:"Riscado",Subscript:"SubÃndice",Superscript:"SuperÃndice",Underline:"Subliñado"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.gl=i.gl||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Cita de bloque"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const t=o.gl=o.gl||{};t.dictionary=Object.assign(t.dictionary||{},{"Choose heading":"Escolla o tÃtulo",Heading:"TÃtulo","Heading 1":"TÃtulo 1","Heading 2":"TÃtulo 2","Heading 3":"TÃtulo 3","Heading 4":"TÃtulo 4","Heading 5":"TÃtulo 5","Heading 6":"TÃtulo 6",Paragraph:"Parágrafo","Type or paste your content here.":"Escriba ou pegue o seu contido aquÃ.","Type your title":"Escriba o seu tÃtulo"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.gl=i.gl||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Liña horizontal"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.gl=a.gl||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"Romper o texto","Centered image":"Imaxe centrada horizontalmente","Change image text alternative":"Cambiar o texto alternativo da imaxe","Enter image caption":"Introduza o tÃtulo da imaxe","Full size image":"Imaxe a tamaño completo","Image resize list":"Lista de tamaños de imaxe","Image toolbar":"Barra de ferramentas de imaxe","image widget":"Trebello de imaxe","In line":"En liña",Insert:"Inserir","Insert image":"Inserir imaxe","Insert image via URL":"Inserir imaxe a través de URL","Left aligned image":"Imaxe aliñada á esquerda",Original:"Orixinal","Resize image":"Redimensionar a imaxe","Resize image to %0":"Redimensionar a imaxe ao %0","Resize image to the original size":"Aplicar o tamaño orixinal da imaxe","Right aligned image":"Imaxe aliñada á dereita","Side image":"Lado da imaxe","Text alternative":"Texto alternativo",Update:"Actualizar","Update image URL":"Actualizar o URL da imaxe","Upload failed":"Fallou o envÃo","Wrap text":"Envolver o texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.gl=n.gl||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Reducir sangrado","Increase indent":"Aumentar sangrado"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const a=o.gl=o.gl||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"Escolla o idioma",Language:"Idioma","Remove language":"Retirar o idioma"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.gl=n.gl||{};a.dictionary=Object.assign(a.dictionary||{},{Downloadable:"Descargábel","Edit link":"Editar a ligazón",Link:"Ligar","Link image":"Ligazón da imaxe","Link URL":"URL de ligazón","Open in a new tab":"Abrir nunha nova lapela","Open link in new tab":"Abrir a ligazón nunha nova lapela","This link has no URL":"Esta ligazón non ten URL",Unlink:"Desligar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.gl=e.gl||{};a.dictionary=Object.assign(a.dictionary||{},{"Bulleted List":"Lista con viñetas","Bulleted list styles toolbar":"Barra de ferramentas de estilos de lista con viñetas",Circle:"CÃrculos",Decimal:"Decimais","Decimal with leading zero":"Decimais con cero á esquerda",Disc:"Discos","Lower-latin":"Letras minúsculas","Lower–roman":"Núm, romanos en minúscula","Numbered List":"Lista numerada","Numbered list styles toolbar":"Barra de ferramentas de estilos de lista numerada",Square:"Cadrados","To-do List":"Lista de cousas por facer","Toggle the circle list style":"Alternar o estilo da lista «cÃrculos»","Toggle the decimal list style":"Alternar o estilo da lista «decimais»","Toggle the decimal with leading zero list style":"Activar/desactivar o estilo «decimais con cero á esquerda»","Toggle the disc list style":"Alternar o estilo da lista «discos»","Toggle the lower–latin list style":"Activar/desactivar o estilo da lista «letras minúsculas»","Toggle the lower–roman list style":"Activar/desactivar o estilo da lista «núm. romanos en minúscula»","Toggle the square list style":"Alternar o estilo da lista «cadrados»","Toggle the upper–latin list style":"Activar/desactivar o estilo da lista «letras maiúsculas»","Toggle the upper–roman list style":"Activar/desactivar o estilo da lista «núm. romanos en maiúscula»","Upper-latin":"Letras maiúsculas","Upper-roman":"Núm, romanos en maiúscula"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.gl=o.gl||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"Retirar o formato"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.gl=i.gl||{};n.dictionary=Object.assign(n.dictionary||{},{Source:"Orixe"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.gl=e.gl||{};a.dictionary=Object.assign(a.dictionary||{},{"Align cell text to the bottom":"Aliñar o texto da cela á base","Align cell text to the center":"Aliñar o texto da cela ao centro","Align cell text to the left":"Aliñar o texto da cela á esquerda","Align cell text to the middle":"Aliñar o texto da cela ao medio","Align cell text to the right":"Aliña o texto da cela á dereita","Align cell text to the top":"Aliñar o texto da cela á parte superior","Align table to the left":"Aliñar a táboa á esquerda","Align table to the right":"Aliñar a táboa á dereita",Alignment:"Aliñamento",Background:"Fondo",Border:"Bordo","Cell properties":"Propiedades da cela","Center table":"Centrar a táboa",Color:"Cor","Color picker":"Selector de cores",Column:"Columna",Dashed:"Raiado","Delete column":"Eliminar columna","Delete row":"Eliminar fila",Dimensions:"Dimensións",Dotted:"Punteado",Double:"Dobre","Enter table caption":"Introduza o tÃtulo da táboa",Groove:"Rañura","Header column":"Cabeceira de columna","Header row":"Cabeceira de fila",Height:"Alto","Horizontal text alignment toolbar":"Barra de ferramentas de aliñamento de texto horizontal","Insert column left":"Inserir columna á esquerda","Insert column right":"Inserir columna á dereita","Insert row above":"Inserir fila enriba","Insert row below":"Inserir fila embaixo","Insert table":"Inserir táboa",Inset:"Inserción","Justify cell text":"Xustificar o texto da cela","Merge cell down":"Combinar cela cara abaixo","Merge cell left":"Combinar cela cara a esquerda","Merge cell right":"Combinar cela cara a dereita","Merge cell up":"Combinar cela cara arriba","Merge cells":"Combinar celas",None:"Ningún",Outset:"Inicio",Padding:"Recheo",Ridge:"Crista",Row:"Fila","Select column":"Seleccionar columna","Select row":"Seleccionar fila",Solid:"Sólido","Split cell horizontally":"Dividir cela en horizontal","Split cell vertically":"Dividir cela en vertical",Style:"Estilo","Table alignment toolbar":"Barra de ferramentas de aliñamento da táboa","Table cell text alignment":"Aliñamento do texto das celas da táboa","Table properties":"Propiedades da táboa","Table toolbar":"Barra de ferramentas de táboas",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"A cor non é válida. Probe «#FF0000» ou «rgb(255,0,0)» ou «vermello».",'The value is invalid. Try "10px" or "2em" or simply "2".':"O valor non é válido. Probe «10px» ou «2em» ou simplemente «2».","Toggle caption off":"Desactivar os subtÃtulos","Toggle caption on":"Activar os subtÃtulos","Vertical text alignment toolbar":"Barra de ferramentas de aliñamento de texto vertical",Width:"Largo"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.gl=i.gl||{};n.dictionary=Object.assign(n.dictionary||{},{"HTML object":"Obxecto HTML"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const o=a.gl=a.gl||{};o.dictionary=Object.assign(o.dictionary||{},{"Almost equal to":"Case igual a",Angle:"Ãngulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"SÃmbolo do austral","back with leftwards arrow above":"cara atrás, coa frecha cara á esquerda enriba","Bitcoin sign":"SÃmbolo do Bitcoin","Cedi sign":"SÃmbolo do cedi","Cent sign":"SÃmbolo do centavo","Character categories":"CategorÃas de caracteres","Colon sign":"SÃmbolo do colón","Contains as member":"Conten a","Copyright sign":"SÃmbolo de copyright","Cruzeiro sign":"SÃmbolo do cruceiro","Currency sign":"SÃmbolo de moeda","Degree sign":"Signo de grao","Division sign":"Signo de división","Dollar sign":"SÃmbolo do dolar","Dong sign":"SÃmbolo do dong","Double dagger":"Daga dobre","Double exclamation mark":"Marca de dobre exclamación","Double low-9 quotation mark":"Marca de acoutamento comiña dobre baixo-9","Double question mark":"Marca de dobre interrogación","downwards arrow to bar":"frecha cara abaixo con tope","downwards dashed arrow":"frecha de guións cara abaixo","downwards double arrow":"frecha dobre cara abaixo","Drachma sign":"SÃmbolo do dracma","Element of":"Pertenza","Em dash":"Guión longo (raia)","Empty set":"Conxunto baleiro","En dash":"Guión curto","end with leftwards arrow above":"final, coa frecha cara á esquerda enriba","Euro sign":"SÃmbolo do euro","Euro-currency sign":"SÃmbolo da moeda do euro","Exclamation question mark":"Marca de exclamación interrogación","For all":"Para todo","Fraction slash":"Barra de fracción","French franc sign":"SÃmbolo do franco francés","German penny sign":"SÃmbolo do penique alemán","Greater-than or equal to":"Maior ou igual que","Greater-than sign":"Maior que","Guarani sign":"SÃmbolo do guaranÃ","Horizontal ellipsis":"Elipse horizontal","Hryvnia sign":"SÃmbolo do hryvnia","Identical to":"Idéntico a","Indian rupee sign":"SÃmbolo da rupia india",Infinity:"Infinito",Integral:"Integral",Intersection:"Intersección","Inverted exclamation mark":"Marca invertida de exclamación","Inverted question mark":"Marca invertida de interrogación","Kip sign":"SÃmbolo do kip","Latin capital letter a with breve":"A maiúsculo latino con acento breve","Latin capital letter a with macron":"A maiúsculo latino con macron","Latin capital letter a with ogonek":"A maiúsculo latino con ogonek","Latin capital letter c with acute":"C maiúsculo latino con acento agudo","Latin capital letter c with caron":"C maiúsculo latino con caron","Latin capital letter c with circumflex":"C maiúsculo latino con acento circunflexo","Latin capital letter c with dot above":"C maiúsculo latino con punto enriba","Latin capital letter d with caron":"D maiúsculo latino con caron","Latin capital letter d with stroke":"D maiúsculo latino barrado","Latin capital letter e with breve":"E maiúsculo latino con acento breve","Latin capital letter e with caron":"E maiúsculo latino con caron","Latin capital letter e with dot above":"E maiúsculo latino con punto enriba","Latin capital letter e with macron":"E maiúsculo latino con macron","Latin capital letter e with ogonek":"E maiúsculo latino con ogonek","Latin capital letter eng":"Eng (engma) mziúsculo latino","Latin capital letter g with breve":"G maiúsculo latino con acento breve","Latin capital letter g with cedilla":"G maiúsculo latino con cedilla","Latin capital letter g with circumflex":"G maiúsculo latino con acento circunflexo","Latin capital letter g with dot above":"G maiúsculo latino con punto enriba","Latin capital letter h with circumflex":"H maiúsculo latino con acento circunflexo","Latin capital letter h with stroke":"H maiúsculo latino barrado","Latin capital letter i with breve":"I maiúsculo latino con acento breve","Latin capital letter i with dot above":"I maiúsculo latino con punto enriba","Latin capital letter i with macron":"I maiúsculo latino con macron","Latin capital letter i with ogonek":"I maiúsculo latino con ogonek","Latin capital letter i with tilde":"I maiúsculo latino con til","Latin capital letter j with circumflex":"J maiúsculo latino con acento circunflexo","Latin capital letter k with cedilla":"K maiúsculo latino con cedilla","Latin capital letter l with acute":"L maiúsculo latino con acento agudo","Latin capital letter l with caron":"L maiúsculo latino con caron","Latin capital letter l with cedilla":"L maiúsculo latino con cedilla","Latin capital letter l with middle dot":"L maiúsculo latino con punto medio","Latin capital letter l with stroke":"L maiúsculo latino barrado","Latin capital letter n with acute":"N maiúsculo latino con acento agudo","Latin capital letter n with caron":"N maiúsculo latino con caron","Latin capital letter n with cedilla":"N maiúsculo latino con cedilla","Latin capital letter o with breve":"O maiúsculo latino con acento breve","Latin capital letter o with double acute":"O maiúsculo latino con acento agudo dobre","Latin capital letter o with macron":"O maiúsculo latino con macron","Latin capital letter r with acute":"R maiúsculo latino con acento agudo","Latin capital letter r with caron":"R maiúsculo latino con caron","Latin capital letter r with cedilla":"R maiúsculo latino con cedilla","Latin capital letter s with acute":"S maiúsculo latino con acento agudo","Latin capital letter s with caron":"S maiúsculo latino con caron","Latin capital letter s with cedilla":"S maiúsculo latino con cedilla","Latin capital letter s with circumflex":"S maiúsculo latino con acento circunflexo","Latin capital letter t with caron":"T maiúsculo latino con caron","Latin capital letter t with cedilla":"T maiúsculo latino con cedilla","Latin capital letter t with stroke":"T maiúsculo latino barrado","Latin capital letter u with breve":"U maiúsculo latino con acento breve","Latin capital letter u with double acute":"U maiúsculo latino con acento agudo dobre","Latin capital letter u with macron":"U maiúsculo latino con macron","Latin capital letter u with ogonek":"U maiúsculo latino con ogonek","Latin capital letter u with ring above":"U maiúsculo latino con anel enriba","Latin capital letter u with tilde":"U maiúsculo latino con til","Latin capital letter w with circumflex":"W maiúsculo latino con acento circunflexo","Latin capital letter y with circumflex":"Y maiúsculo latino con acento circunflexo","Latin capital letter y with diaeresis":"Y maiúsculo latino con diérese","Latin capital letter z with acute":"Z maiúsculo latino con acento agudo","Latin capital letter z with caron":"Z maiúsculo latino con caron","Latin capital letter z with dot above":"Z maiúsculo latino con punto enriba","Latin capital ligature ij":"Ligadura IJ maiúsculo latino","Latin capital ligature oe":"Ligadura OE maiúsculo latino","Latin small letter a with breve":"a minúsculo latino con acento breve","Latin small letter a with macron":"a minúsculo latino con macron","Latin small letter a with ogonek":"a minúsculo latino con ogonek","Latin small letter c with acute":"c minúsculo latino con acento agudo","Latin small letter c with caron":"cminúsculo latino con caron","Latin small letter c with circumflex":"c minúsculo latino con acento circunflexo","Latin small letter c with dot above":"c minúsculo latino con punto enriba","Latin small letter d with caron":"d minúsculo latino con caron","Latin small letter d with stroke":"d minúsculo latino barrado","Latin small letter dotless i":"i minúsculo latino sen punto","Latin small letter e with breve":"e minúsculo latino con acento breve","Latin small letter e with caron":"e minúsculo latino con caron","Latin small letter e with dot above":"e minúsculo latino con punto enriba","Latin small letter e with macron":"e minúsculo latino con macron","Latin small letter e with ogonek":"e minúsculo latino con ogonek","Latin small letter eng":"Eng (engma) minúsculo latino","Latin small letter f with hook":"f minúsculo latino con gancho","Latin small letter g with breve":"g minúsculo latino con acento breve","Latin small letter g with cedilla":"g minúsculo latino con cedilla","Latin small letter g with circumflex":"g minúsculo latino con acento circunflexo","Latin small letter g with dot above":"g minúsculo latino con punto enriba","Latin small letter h with circumflex":"h minúsculo latino con acento circunflexo","Latin small letter h with stroke":"h minúsculo latino barrado","Latin small letter i with breve":"i minúsculo latino con acento breve","Latin small letter i with macron":"i minúsculo latino con macron","Latin small letter i with ogonek":"i minúsculo latino con ogonek","Latin small letter i with tilde":"i minúsculo latino con til","Latin small letter j with circumflex":"j minúsculo latino con acento circunflexo","Latin small letter k with cedilla":"k minúsculo latino con cedilla","Latin small letter kra":"Letra kra minúscula","Latin small letter l with acute":"l minúsculo latino con acento agudo","Latin small letter l with caron":"l minúsculo latino con caron","Latin small letter l with cedilla":"l minúsculo latino con cedilla","Latin small letter l with middle dot":"l minúsculo latino con punto medio","Latin small letter l with stroke":"l minúsculo latino barrado","Latin small letter long s":"s minúsculo latino larga","Latin small letter n preceded by apostrophe":"n minúsculo latino precedido de apostrofe","Latin small letter n with acute":"n minúsculo latino con acento agudo","Latin small letter n with caron":"n minúsculo latino con caron","Latin small letter n with cedilla":"n minúsculo latino con cedilla","Latin small letter o with breve":"o minúsculo latino con acento breve","Latin small letter o with double acute":"o minúsculo latino con acento agudo dobre","Latin small letter o with macron":"o minúsculo latino con macron","Latin small letter r with acute":"r minúsculo latino con acento agudo","Latin small letter r with caron":"r minúsculo latino con caron","Latin small letter r with cedilla":"r minúsculo latino con cedilla","Latin small letter s with acute":"s minúsculo latino con acento agudo","Latin small letter s with caron":"s minúsculo latino con caron","Latin small letter s with cedilla":"s minúsculo latino con cedilla","Latin small letter s with circumflex":"s minúsculo latino con acento circunflexo","Latin small letter t with caron":"t minúsculo latino con caron","Latin small letter t with cedilla":"t minúsculo latino con cedilla","Latin small letter t with stroke":"t minúsculo latino barrado","Latin small letter u with breve":"u minúsculo latino con acento breve","Latin small letter u with double acute":"u minúsculo latino con acento agudo dobre","Latin small letter u with macron":"u minúsculo latino con macron","Latin small letter u with ogonek":"u minúsculo latino con ogonek","Latin small letter u with ring above":"u minúsculo latino con anel enriba","Latin small letter u with tilde":"u minúsculo latino con til","Latin small letter w with circumflex":"w minúsculo latino con acento circunflexo","Latin small letter y with circumflex":"y minúsculo latino con acento circunflexo","Latin small letter z with acute":"z minúsculo latino con acento agudo","Latin small letter z with caron":"z minúsculo latino con caron","Latin small letter z with dot above":"z minúsculo latino con punto enriba","Latin small ligature ij":"Ligadura ij minúsculo latino","Latin small ligature oe":"Ligadura oe minúsculo latino","Left double quotation mark":"Marca de acoutamento comiña dobre esquerda","Left single quotation mark":"Marca de acoutamento comiña sinxela esquerda","Left-pointing double angle quotation mark":"Marca de acoutamento ángulo esquerdo dobre","leftwards arrow to bar":"frecha cara á esquerda con tope","leftwards dashed arrow":"frecha de guións cara á esquerda","leftwards double arrow":"frecha dobre cara á esquerda","Less-than or equal to":"Menor ou igual que","Less-than sign":"Menor que","Lira sign":"SÃmbolo da lira","Livre tournois sign":"SÃmbolo da libra tournois","Logical and":"E lóxico (conxunción)","Logical or":"Ou lóxico (disxunción)",Macron:"Macron","Manat sign":"SÃmbolo do manat","Mill sign":"SÃmbolo do mill","Minus sign":"Signo menos","Multiplication sign":"Signo de multiplicación","N-ary product":"Produto de n elementos, produtorio","N-ary summation":"Suma de n elementos, sumatorio",Nabla:"Nabla (Gradiente)","Naira sign":"SÃmbolo da naira","New sheqel sign":"SÃmbolo do novo xequel","Nordic mark sign":"SÃmbolo do marco nordico","Not an element of":"Non pertenza","Not equal to":"Distinto de","Not sign":"Signo non","on with exclamation mark with left right arrow above":"activado, con signo de exclamación coa frecha esquerda-dereita enrriba",Overline:"Liña superior","Paragraph sign":"Signo de parágrafo","Partial differential":"Derivada parcial","Per mille sign":"Signo de por milleiro","Per ten thousand sign":"Signo de por dez mil","Peseta sign":"SÃmbolo da peseta","Peso sign":"SÃmbolo do peso","Plus-minus sign":"Signo más/menos","Pound sign":"SÃmbolo da libra","Proportional to":"Proporcional a","Question exclamation mark":"Marca de interrogación exclamación","Registered sign":"SÃmbolo de rexistrado","Reversed paragraph sign":"Signo invertido do parágrafo","Right double quotation mark":"Marca de acoutamento comiña dobre dereita","Right single quotation mark":"Marca de acoutamento comiña sinxela dereita","Right-pointing double angle quotation mark":"Marca de acoutamento ángulo dereito dobre","rightwards arrow to bar":"frecha cara á dereita con tope","rightwards dashed arrow":"frecha de guións cara á dereita","rightwards double arrow":"frecha dobre cara á dereita","Ruble sign":"SÃmbolo do rublo","Rupee sign":"SÃmbolo da rupia","Section sign":"Signo de sección","Single left-pointing angle quotation mark":"Marca de acoutamento ángulo esquerdo sinxelo","Single low-9 quotation mark":"Marca de acoutamento comiña sinxela baixo-9","Single right-pointing angle quotation mark":"Marca de acoutamento ángulo dereito sinxelo","soon with rightwards arrow above":"logo, coa frecha cara á dereita enriba","Special characters":"Caracteres especiais","Spesmilo sign":"SÃmbolo do spesmilo","Square root":"RaÃz cadrada","Tenge sign":"SÃmbolo do tenge","There exists":"Existe","Tilde operator":"Operador til","top with upwards arrow above":"superior, coa frecha cara arriba enriba","Trade mark sign":"SÃmbolo de marca de fábrica","Tugrik sign":"SÃmbolo do tugrik","Turkish lira sign":"SÃmbolo da lira turca","Two dot leader":"LÃder de dous puntos",Union:"Unión","up down arrow with base":"frecha arriba-abaixo con base","upwards arrow to bar":"frecha cara arriba con tope","upwards dashed arrow":"frecha de guións cara arriba","upwards double arrow":"frecha dobre cara arriba","Vulgar fraction one half":"Fracción común dun medio","Vulgar fraction one quarter":"Fracción común dun cuarto","Vulgar fraction three quarters":"Fracción común de tres cuartos","Won sign":"SÃmbolo do won","Yen sign":"SÃmbolo do yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.gl=e.gl||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Augamariña",Black:"Negro",Blue:"Azul",Cancel:"Cancelar","Dim grey":"Gris fume","Dropdown toolbar":"Barra de ferramentas despregábel","Edit block":"Editar bloque","Editor toolbar":"Barra de ferramentas do editor",Green:"Verde",Grey:"Gris","Insert paragraph after block":"Inserir parágrafo após o bloque","Insert paragraph before block":"Inserir parágrafo antes do bloque","Light blue":"Azul claro","Light green":"Verde claro","Light grey":"Gris claro",Next:"Seguinte",Orange:"Laranxa",Previous:"Anterior",Purple:"Púrpura",Red:"Vermello",Redo:"Refacer","Remove color":"Retirar a cor","Restore default":"Restaurar valores predeterminados","Rich Text Editor":"Editor de texto mellorado","Rich Text Editor, %0":"Editor de texto mellorado, %0",Save:"Gardar","Select all":"Seleccionar todo","Show more items":"Amosar máis elementos",Turquoise:"Turquesa",Undo:"Desfacer","Upload in progress":"EnvÃo en proceso",White:"Branco","Widget toolbar":"Barra de ferramentas de trebellos",Yellow:"Amarelo"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/gu.js b/core/assets/vendor/ckeditor5/translations/gu.js new file mode 100644 index 000000000000..2d023aa82436 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/gu.js @@ -0,0 +1 @@ +!function(i){const n=i.gu=i.gu||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"ઘાટૠ- બોલà«àª¡à«",Code:"",Italic:"તà«àª°àª¾àª‚સૠ- ઇટલિકà«",Strikethrough:"",Subscript:"",Superscript:"",Underline:"નીચે લિટી - અનà«àª¡àª°àª²àª¾àª‡àª¨à«"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.gu=i.gu||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":" વિચાર ટાંકો"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/he.js b/core/assets/vendor/ckeditor5/translations/he.js new file mode 100644 index 000000000000..7fc0e372e7be --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/he.js @@ -0,0 +1 @@ +!function(n){const i=n.he=n.he||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"יישור ב×מצע","Align left":"יישור לשמ×ל","Align right":"יישור לימין",Justify:"מרכוז גבולות","Text alignment":"יישור טקסט","Text alignment toolbar":"סרגל ×›×œ×™× ×™×™×©×•×¨ טקסט"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.he=i.he||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"מודגש",Code:"קוד",Italic:"× ×˜×•×™",Strikethrough:"קו חוצה",Subscript:"כתב תחתי",Superscript:"כתב עילי",Underline:"קו תחתון"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.he=i.he||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"בלוק ציטוט"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const n=e.he=e.he||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose heading":"בחר סוג כותרת",Heading:"כותרת","Heading 1":"כותרת 1","Heading 2":"כותרת 2","Heading 3":"כותרת 3","Heading 4":"כותרת 4","Heading 5":"כותרת 5","Heading 6":"כותרת 6",Paragraph:"פיסקה","Type or paste your content here.":"הזן ×ו הדבק ×ת התוכן ×›×ן","Type your title":"הזן כותרת"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.he=i.he||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"קו ×ופקי"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.he=e.he||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"×ª×ž×•× ×” ממרוכזת","Change image text alternative":"×©×™× ×•×™ טקסט ××œ×˜×¨× ×˜×™×‘×™ ×œ×ª×ž×•× ×”","Enter image caption":"הזן כותרת ×ª×ž×•× ×”","Full size image":"×ª×ž×•× ×” בפריסה מל××”","Image resize list":"","Image toolbar":"סרגל ×ª×ž×•× ×”","image widget":"×ª×ž×•× ×”","In line":"",Insert:"","Insert image":"הוספת ×ª×ž×•× ×”","Insert image via URL":"","Left aligned image":"×ª×ž×•× ×” מיושרת לשמ×ל",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"×ª×ž×•× ×” מיושרת לימין","Side image":"×ª×ž×•× ×ª צד","Text alternative":"טקסט ××œ×˜×¨× ×˜×™×‘×™",Update:"","Update image URL":"","Upload failed":"העל××” × ×›×©×œ×”","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.he=n.he||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"עריכת קישור",Link:"קישור","Link image":"","Link URL":"קישור כתובת ×תר","Open in a new tab":"","Open link in new tab":"פתח קישור בכרטיסייה חדשה","This link has no URL":"לקישור ×–×” ×ין כתובת ×תר",Unlink:"ביטול קישור"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.he=e.he||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"רשימה ×ž× ×•×§×“×ª","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"רשימה ממוספרת","Numbered list styles toolbar":"",Square:"","To-do List":"רשימת מטלות","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.he=e.he||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"0% מתוך %1",Aquamarine:"",Black:"",Blue:"",Cancel:"ביטול","Dim grey":"","Dropdown toolbar":"סרגל ×›×œ×™× × ×¤×ª×—","Edit block":"הגדרות בלוק","Editor toolbar":"סרגל הכלי×",Green:"",Grey:"","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"","Light green":"","Light grey":"",Next:"הב×",Orange:"",Previous:"הקוד×",Purple:"",Red:"",Redo:"ביצוע מחדש","Remove color":"","Restore default":"","Rich Text Editor":"עורך טקסט עשיר","Rich Text Editor, %0":"עורך טקסט עשיר, %0",Save:"שמירה","Show more items":"הצד ×¤×¨×™×˜×™× × ×•×¡×¤×™×",Turquoise:"",Undo:"ביטול","Upload in progress":"העל××” מתבצעת",White:"","Widget toolbar":"סרגל יישומון",Yellow:""}),o.getPluralForm=function(e){return 1==e&&e%1==0?0:2==e&&e%1==0?1:e%10==0&&e%1==0&&e>10?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/hi.js b/core/assets/vendor/ckeditor5/translations/hi.js new file mode 100644 index 000000000000..9974a59f6dc0 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/hi.js @@ -0,0 +1 @@ +!function(i){const n=i.hi=i.hi||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Align center","Align left":"Align left","Align right":"Align right",Justify:"Justify","Text alignment":"Text alignment","Text alignment toolbar":"Text alignment toolbar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.hi=i.hi||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Bold",Code:"Code",Italic:"Italic",Strikethrough:"Strikethrough",Subscript:"Subscript",Superscript:"Superscript",Underline:"Underline"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.hi=i.hi||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Block quote"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.hi=e.hi||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose heading":"Choose heading",Heading:"Heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6",Paragraph:"Paragraph","Type or paste your content here.":"Type or paste your content here.","Type your title":"Type your title"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.hi=i.hi||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Horizontal line"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.hi=e.hi||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Centered image","Change image text alternative":"Change image text alternative","Enter image caption":"Enter image caption","Full size image":"Full size image","Image resize list":"Image resize list","Image toolbar":"Image toolbar","image widget":"image widget","In line":"",Insert:"Insert","Insert image":"Insert image","Insert image via URL":"Insert image via URL","Left aligned image":"Left aligned image",Original:"Original","Resize image":"Resize image","Resize image to %0":"Resize image to %0","Resize image to the original size":"Resize image to the original size","Right aligned image":"Right aligned image","Side image":"Side image","Text alternative":"Text alternative",Update:"Update","Update image URL":"Update image URL","Upload failed":"Upload failed","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.hi=n.hi||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Decrease indent","Increase indent":"Increase indent"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.hi=n.hi||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Downloadable","Edit link":"Edit link",Link:"Link","Link image":"Link image","Link URL":"Link URL","Open in a new tab":"Open in a new tab","Open link in new tab":"Open link in new tab","This link has no URL":"This link has no URL",Unlink:"Unlink"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.hi=e.hi||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Bulleted List","Bulleted list styles toolbar":"Bulleted list styles toolbar",Circle:"Circle",Decimal:"Decimal","Decimal with leading zero":"Decimal with leading zero",Disc:"Disc","Lower-latin":"Lower-latin","Lower–roman":"Lower–roman","Numbered List":"Numbered List","Numbered list styles toolbar":"Numbered list styles toolbar",Square:"Square","To-do List":"To-do List","Toggle the circle list style":"Toggle the circle list style","Toggle the decimal list style":"Toggle the decimal list style","Toggle the decimal with leading zero list style":"Toggle the decimal with leading zero list style","Toggle the disc list style":"Toggle the disc list style","Toggle the lower–latin list style":"Toggle the lower–latin list style","Toggle the lower–roman list style":"Toggle the lower–roman list style","Toggle the square list style":"Toggle the square list style","Toggle the upper–latin list style":"Toggle the upper–latin list style","Toggle the upper–roman list style":"Toggle the upper–roman list style","Upper-latin":"Upper-latin","Upper-roman":"Upper-roman"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.hi=i.hi||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Remove Format"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.hi=e.hi||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"Align cell text to the bottom","Align cell text to the center":"Align cell text to the center","Align cell text to the left":"Align cell text to the left","Align cell text to the middle":"Align cell text to the middle","Align cell text to the right":"Align cell text to the right","Align cell text to the top":"Align cell text to the top","Align table to the left":"Align table to the left","Align table to the right":"Align table to the right",Alignment:"Alignment",Background:"Background",Border:"Border","Cell properties":"Cell properties","Center table":"Center table",Color:"Color","Color picker":"Color picker",Column:"Column",Dashed:"Dashed","Delete column":"Delete column","Delete row":"Delete row",Dimensions:"Dimensions",Dotted:"Dotted",Double:"Double","Enter table caption":"",Groove:"Groove","Header column":"Header column","Header row":"Header row",Height:"Height","Horizontal text alignment toolbar":"Horizontal text alignment toolbar","Insert column left":"Insert column left","Insert column right":"Insert column right","Insert row above":"Insert row above","Insert row below":"Insert row below","Insert table":"Insert table",Inset:"Inset","Justify cell text":"Justify cell text","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Merge cell right":"Merge cell right","Merge cell up":"Merge cell up","Merge cells":"Merge cells",None:"None",Outset:"Outset",Padding:"Padding",Ridge:"Ridge",Row:"Row","Select column":"Select column","Select row":"Select row",Solid:"Solid","Split cell horizontally":"Split cell horizontally","Split cell vertically":"Split cell vertically",Style:"Style","Table alignment toolbar":"Table alignment toolbar","Table cell text alignment":"Table cell text alignment","Table properties":"Table properties","Table toolbar":"Table toolbar",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'The value is invalid. Try "10px" or "2em" or simply "2".',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Vertical text alignment toolbar",Width:"Width"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.hi=t.hi||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Almost equal to",Angle:"Angle","Approximately equal to":"Approximately equal to","Asterisk operator":"Asterisk operator","Austral sign":"Austral sign","back with leftwards arrow above":"back with leftwards arrow above","Bitcoin sign":"Bitcoin sign","Cedi sign":"Cedi sign","Cent sign":"Cent sign","Character categories":"Character categories","Colon sign":"Colon sign","Contains as member":"Contains as member","Copyright sign":"Copyright sign","Cruzeiro sign":"Cruzeiro sign","Currency sign":"Currency sign","Degree sign":"Degree sign","Division sign":"Division sign","Dollar sign":"Dollar sign","Dong sign":"Dong sign","Double dagger":"Double dagger","Double exclamation mark":"Double exclamation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Double question mark":"Double question mark","downwards arrow to bar":"downwards arrow to bar","downwards dashed arrow":"downwards dashed arrow","downwards double arrow":"downwards double arrow","Drachma sign":"Drachma sign","Element of":"Element of","Em dash":"Em dash","Empty set":"Empty set","En dash":"En dash","end with leftwards arrow above":"end with leftwards arrow above","Euro sign":"Euro sign","Euro-currency sign":"Euro-currency sign","Exclamation question mark":"Exclamation question mark","For all":"For all","Fraction slash":"Fraction slash","French franc sign":"French franc sign","German penny sign":"German penny sign","Greater-than or equal to":"Greater-than or equal to","Greater-than sign":"Greater-than sign","Guarani sign":"Guarani sign","Horizontal ellipsis":"Horizontal ellipsis","Hryvnia sign":"Hryvnia sign","Identical to":"Identical to","Indian rupee sign":"Indian rupee sign",Infinity:"Infinity",Integral:"Integral",Intersection:"Intersection","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Kip sign":"Kip sign","Latin capital letter a with breve":"Latin capital letter a with breve","Latin capital letter a with macron":"Latin capital letter a with macron","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin capital letter c with caron":"Latin capital letter c with caron","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin capital letter d with caron":"Latin capital letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin capital letter e with breve":"Latin capital letter e with breve","Latin capital letter e with caron":"Latin capital letter e with caron","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin capital letter e with macron":"Latin capital letter e with macron","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin capital letter eng":"Latin capital letter eng","Latin capital letter g with breve":"Latin capital letter g with breve","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin capital letter i with breve":"Latin capital letter i with breve","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin capital letter i with macron":"Latin capital letter i with macron","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin capital letter l with acute":"Latin capital letter l with acute","Latin capital letter l with caron":"Latin capital letter l with caron","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin capital letter n with caron":"Latin capital letter n with caron","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin capital letter o with breve":"Latin capital letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin capital letter o with macron":"Latin capital letter o with macron","Latin capital letter r with acute":"Latin capital letter r with acute","Latin capital letter r with caron":"Latin capital letter r with caron","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin capital letter s with acute":"Latin capital letter s with acute","Latin capital letter s with caron":"Latin capital letter s with caron","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin capital letter t with caron":"Latin capital letter t with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin capital letter u with breve":"Latin capital letter u with breve","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin capital letter u with macron":"Latin capital letter u with macron","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin capital letter z with caron":"Latin capital letter z with caron","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin capital ligature ij":"Latin capital ligature ij","Latin capital ligature oe":"Latin capital ligature oe","Latin small letter a with breve":"Latin small letter a with breve","Latin small letter a with macron":"Latin small letter a with macron","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin small letter c with acute":"Latin small letter c with acute","Latin small letter c with caron":"Latin small letter c with caron","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin small letter c with dot above":"Latin small letter c with dot above","Latin small letter d with caron":"Latin small letter d with caron","Latin small letter d with stroke":"Latin small letter d with stroke","Latin small letter dotless i":"Latin small letter dotless i","Latin small letter e with breve":"Latin small letter e with breve","Latin small letter e with caron":"Latin small letter e with caron","Latin small letter e with dot above":"Latin small letter e with dot above","Latin small letter e with macron":"Latin small letter e with macron","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin small letter eng":"Latin small letter eng","Latin small letter f with hook":"Latin small letter f with hook","Latin small letter g with breve":"Latin small letter g with breve","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin small letter g with dot above":"Latin small letter g with dot above","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin small letter h with stroke":"Latin small letter h with stroke","Latin small letter i with breve":"Latin small letter i with breve","Latin small letter i with macron":"Latin small letter i with macron","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin small letter i with tilde":"Latin small letter i with tilde","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin small letter l with acute":"Latin small letter l with acute","Latin small letter l with caron":"Latin small letter l with caron","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin small letter l with stroke":"Latin small letter l with stroke","Latin small letter long s":"Latin small letter long s","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin small letter n with acute":"Latin small letter n with acute","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin small letter o with breve":"Latin small letter o with breve","Latin small letter o with double acute":"Latin small letter o with double acute","Latin small letter o with macron":"Latin small letter o with macron","Latin small letter r with acute":"Latin small letter r with acute","Latin small letter r with caron":"Latin small letter r with caron","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin small letter s with acute":"Latin small letter s with acute","Latin small letter s with caron":"Latin small letter s with caron","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin small letter t with caron":"Latin small letter t with caron","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin small letter t with stroke":"Latin small letter t with stroke","Latin small letter u with breve":"Latin small letter u with breve","Latin small letter u with double acute":"Latin small letter u with double acute","Latin small letter u with macron":"Latin small letter u with macron","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin small letter u with ring above":"Latin small letter u with ring above","Latin small letter u with tilde":"Latin small letter u with tilde","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin small letter z with acute":"Latin small letter z with acute","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter z with dot above":"Latin small letter z with dot above","Latin small ligature ij":"Latin small ligature ij","Latin small ligature oe":"Latin small ligature oe","Left double quotation mark":"Left double quotation mark","Left single quotation mark":"Left single quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","leftwards arrow to bar":"leftwards arrow to bar","leftwards dashed arrow":"leftwards dashed arrow","leftwards double arrow":"leftwards double arrow","Less-than or equal to":"Less-than or equal to","Less-than sign":"Less-than sign","Lira sign":"Lira sign","Livre tournois sign":"Livre tournois sign","Logical and":"Logical and","Logical or":"Logical or",Macron:"Macron","Manat sign":"Manat sign","Mill sign":"Mill sign","Minus sign":"Minus sign","Multiplication sign":"Multiplication sign","N-ary product":"N-ary product","N-ary summation":"N-ary summation",Nabla:"Nabla","Naira sign":"Naira sign","New sheqel sign":"New sheqel sign","Nordic mark sign":"Nordic mark sign","Not an element of":"Not an element of","Not equal to":"Not equal to","Not sign":"Not sign","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above",Overline:"Overline","Paragraph sign":"Paragraph sign","Partial differential":"Partial differential","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Peseta sign":"Peseta sign","Peso sign":"Peso sign","Plus-minus sign":"Plus-minus sign","Pound sign":"Pound sign","Proportional to":"Proportional to","Question exclamation mark":"Question exclamation mark","Registered sign":"Registered sign","Reversed paragraph sign":"Reversed paragraph sign","Right double quotation mark":"Right double quotation mark","Right single quotation mark":"Right single quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","rightwards arrow to bar":"rightwards arrow to bar","rightwards dashed arrow":"rightwards dashed arrow","rightwards double arrow":"rightwards double arrow","Ruble sign":"Ruble sign","Rupee sign":"Rupee sign","Section sign":"Section sign","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","soon with rightwards arrow above":"soon with rightwards arrow above","Special characters":"Special characters","Spesmilo sign":"Spesmilo sign","Square root":"Square root","Tenge sign":"Tenge sign","There exists":"There exists","Tilde operator":"Tilde operator","top with upwards arrow above":"top with upwards arrow above","Trade mark sign":"Trade mark sign","Tugrik sign":"Tugrik sign","Turkish lira sign":"Turkish lira sign","Two dot leader":"Two dot leader",Union:"Union","up down arrow with base":"up down arrow with base","upwards arrow to bar":"upwards arrow to bar","upwards dashed arrow":"upwards dashed arrow","upwards double arrow":"upwards double arrow","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction three quarters":"Vulgar fraction three quarters","Won sign":"Won sign","Yen sign":"Yen sign"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.hi=e.hi||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Restore default":"","Rich Text Editor":"Rich Text Editor","Rich Text Editor, %0":"Rich Text Editor, %0",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/hr.js b/core/assets/vendor/ckeditor5/translations/hr.js new file mode 100644 index 000000000000..895df5bc7fca --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/hr.js @@ -0,0 +1 @@ +!function(n){const a=n.hr=n.hr||{};a.dictionary=Object.assign(a.dictionary||{},{"Align center":"Poravnaj po sredini","Align left":"Poravnaj ulijevo","Align right":"Poravnaj udesno",Justify:"Razvuci","Text alignment":"Poravnanje teksta","Text alignment toolbar":"Traka za poravnanje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.hr=n.hr||{};o.dictionary=Object.assign(o.dictionary||{},{Bold:"Podebljano",Code:"Kod",Italic:"UkoÅ¡eno",Strikethrough:"Precrtano",Subscript:"Indeks",Superscript:"Eksponent",Underline:"Podcrtavanje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.hr=i.hr||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Blok citat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.hr=a.hr||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Odaberite naslov",Heading:"Naslov","Heading 1":"Naslov 1","Heading 2":"Naslov 2","Heading 3":"Naslov 3","Heading 4":"Naslov 4","Heading 5":"Naslov 5","Heading 6":"Naslov 6",Paragraph:"Paragraf","Type or paste your content here.":"Utipkajte ili zalijepite VaÅ¡ sadržaj ovdje.","Type your title":"Utipkajte naslov"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.hr=i.hr||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Vodoravna linija"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.hr=e.hr||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Centrirana slika","Change image text alternative":"Promijeni alternativni tekst slike","Enter image caption":"Unesite naslov slike","Full size image":"Slika pune veliÄine","Image resize list":"","Image toolbar":"Traka za slike","image widget":"Slika widget","In line":"",Insert:"","Insert image":"Umetni sliku","Insert image via URL":"","Left aligned image":"Lijevo poravnata slika",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Slika poravnata desno","Side image":"Slika sa strane","Text alternative":"Alternativni tekst",Update:"","Update image URL":"","Upload failed":"Slanje nije uspjelo","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.hr=n.hr||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Umanji uvlaÄenje","Increase indent":"Povećaj uvlaÄenje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.hr=i.hr||{};n.dictionary=Object.assign(n.dictionary||{},{Downloadable:"Moguće preuzeti","Edit link":"Uredi vezu",Link:"Veza","Link image":"","Link URL":"URL veze","Open in a new tab":"Otvori u novoj kartici","Open link in new tab":"Otvori vezu u novoj kartici","This link has no URL":"Ova veza nema URL",Unlink:"Ukloni vezu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.hr=e.hr||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"ObiÄna lista","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"BrojÄana lista","Numbered list styles toolbar":"",Square:"","To-do List":"Lista zadataka za obaviti","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.hr=o.hr||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"Ukloni format"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.hr=e.hr||{};a.dictionary=Object.assign(a.dictionary||{},{"Align cell text to the bottom":"Tekst ćelije poravnaj prema dolje","Align cell text to the center":"Tekst ćelije poravnaj u sredinu","Align cell text to the left":"Tekst ćelije poravnaj lijevo","Align cell text to the middle":"Tekst ćelije poravnaj u sredinu","Align cell text to the right":"Tekst ćelije poravnaj udesno","Align cell text to the top":"Tekst ćelije poravnaj prema gore","Align table to the left":"Poravnaj tablicu ulijevo","Align table to the right":"Poravnaj tablicu udesno",Alignment:"Poravnanje",Background:"Pozadina",Border:"Granica","Cell properties":"Svojstva ćelije","Center table":"Centriraj tablicu",Color:"Boja","Color picker":"BiraÄ boje",Column:"Kolona",Dashed:"CrtiÄasta","Delete column":"ObriÅ¡i kolonu","Delete row":"ObriÅ¡i red",Dimensions:"Dimenzije",Dotted:"ToÄkasta",Double:"Dvostruka","Enter table caption":"",Groove:"","Header column":"Kolona zaglavlja","Header row":"Red zaglavlja",Height:"Visina","Horizontal text alignment toolbar":"Alatna traka za horizontalno poravnanje teksta","Insert column left":"Umetni stupac lijevo","Insert column right":"Umetni stupac desno","Insert row above":"Ubaci red iznad","Insert row below":"Ubaci red ispod","Insert table":"Ubaci tablicu",Inset:"","Justify cell text":"Razvuci tekst ćelije","Merge cell down":"Spoji ćelije prema dolje","Merge cell left":"Spoji ćelije prema lijevo","Merge cell right":"Spoji ćelije prema desno","Merge cell up":"Spoji ćelije prema gore","Merge cells":"Spoji ćelije",None:"Nikakva",Outset:"",Padding:"Podstava",Ridge:"Greben",Row:"Red","Select column":"Odaberi stupac","Select row":"Odaberi redak",Solid:"Neprekidna","Split cell horizontally":"Razdvoji ćeliju vodoravno","Split cell vertically":"Razdvoji ćeliju okomito",Style:"Stil","Table alignment toolbar":"Alatna traka za poravnanje tablice","Table cell text alignment":"Poravnanje teksta ćelije tablice","Table properties":"Svojstva tablice","Table toolbar":"Traka za tablice",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Neispravna boja. PokuÅ¡ajte "#FF0000" ili "rgb(255,0,0)" ili "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Neispravna vrijednost. PokuÅ¡ajte "10px" ili "2em" ili jednostavno "2".',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Alatna traka za vertikalno poravnanje teksta",Width:"Å irina"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.hr=a.hr||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 od %1",Aquamarine:"Akvamarin",Black:"Crna",Blue:"Plava",Cancel:"PoniÅ¡ti","Dim grey":"Tamnosiva","Dropdown toolbar":"Traka padajućeg izbornika","Edit block":"Uredi blok","Editor toolbar":"Traka ureÄ‘ivaÄa",Green:"Zelena",Grey:"Siva","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Svijetloplava","Light green":"Svijetlozelena","Light grey":"Svijetlosiva",Next:"Sljedeći",Orange:"NaranÄasta",Previous:"Prethodni",Purple:"LjubiÄasta",Red:"Crvena",Redo:"Ponovi","Remove color":"Ukloni boju","Restore default":"","Rich Text Editor":"Rich Text Editor","Rich Text Editor, %0":"Rich Text Editor, %0",Save:"Snimi","Select all":"Odaberi sve","Show more items":"Prikaži viÅ¡e stavaka",Turquoise:"Tirkizna",Undo:"PoniÅ¡ti","Upload in progress":"Slanje u tijeku",White:"Bijela","Widget toolbar":"Traka sa spravicama",Yellow:"Žuta"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/hu.js b/core/assets/vendor/ckeditor5/translations/hu.js new file mode 100644 index 000000000000..bb550b93a502 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/hu.js @@ -0,0 +1 @@ +!function(i){const t=i.hu=i.hu||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Középre igazÃtás","Align left":"Balra igazÃtás","Align right":"Jobbra igazÃtás",Justify:"Sorkizárt","Text alignment":"Szöveg igazÃtása","Text alignment toolbar":"Szöveg igazÃtás eszköztár"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const i=t.hu=t.hu||{};i.dictionary=Object.assign(i.dictionary||{},{Bold:"Félkövér",Code:"Forráskód",Italic:"DÅ‘lt",Strikethrough:"Ãthúzott",Subscript:"Alsó index",Superscript:"FelsÅ‘ index",Underline:"Aláhúzott"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.hu=i.hu||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Idézet"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.hu=e.hu||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose heading":"StÃlus megadása",Heading:"StÃlusok","Heading 1":"CÃmsor 1","Heading 2":"CÃmsor 2","Heading 3":"CÃmsor 3","Heading 4":"CÃmsor 4","Heading 5":"CÃmsor 5","Heading 6":"CÃmsor 6",Paragraph:"Bekezdés","Type or paste your content here.":"Ãrja be, vagy illessze be a tartalmat.","Type your title":"Adja meg a cÃmet"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.hu=n.hu||{};i.dictionary=Object.assign(i.dictionary||{},{"Horizontal line":"VÃzszintes elválasztóvonal"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.hu=e.hu||{};t.dictionary=Object.assign(t.dictionary||{},{"Break text":"Sortörés","Centered image":"Középre igazÃtott kép","Change image text alternative":"HelyettesÃtÅ‘ szöveg módosÃtása","Enter image caption":"KépaláÃrás megadása","Full size image":"Teljes méretű kép","Image resize list":"Kép átméretezési lista","Image toolbar":"Kép eszköztár","image widget":"képmodul","In line":"Soron belül",Insert:"Beszúrás","Insert image":"Kép beszúrása","Insert image via URL":"Kép beszúrása URL alapján","Left aligned image":"Balra igazÃtott kép",Original:"Eredeti","Resize image":"Kép átméretezése","Resize image to %0":"Kép méretezése %0","Resize image to the original size":"Kép méretezése az eredeti méretre","Right aligned image":"Jobbra igazÃtott kép","Side image":"Oldalsó kép","Text alternative":"HelyettesÃtÅ‘ szöveg",Update:"MódosÃtás","Update image URL":"Kép URL módosÃtása","Upload failed":"A feltöltés nem sikerült","Wrap text":"Körbefuttatás"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.hu=n.hu||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Behúzás csökkentése","Increase indent":"Behúzás növelése"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.hu=a.hu||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose language":"Nyelv választása",Language:"Nyelv","Remove language":"Nyelv eltávolÃtása"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.hu=n.hu||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"LetölthetÅ‘","Edit link":"Link szerkesztése",Link:"Link","Link image":"Hivatkozás","Link URL":"URL link","Open in a new tab":"Megnyitás új lapon","Open link in new tab":"Link megnyitása új ablakban","This link has no URL":"A link nem tartalmaz URL-t",Unlink:"Link eltávolÃtása"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.hu=e.hu||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"Pontozott lista","Bulleted list styles toolbar":"",Circle:"Kör",Decimal:"Szám","Decimal with leading zero":"Nullával kezdÅ‘dÅ‘ szám",Disc:"Korong","Lower-latin":"Kisbetűs latin szám","Lower–roman":"Kisbetűs római szám","Numbered List":"Számozott lista","Numbered list styles toolbar":"",Square:"Négyzet","To-do List":"Tennivaló lista","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"Nagybetűs latin szám","Upper-roman":"Nagybetűs római szám"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.hu=o.hu||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"Formázás eltávolÃtása"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.hu=i.hu||{};n.dictionary=Object.assign(n.dictionary||{},{Source:"Forrás"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.hu=e.hu||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"Szöveg igazÃtása a cellában alulra","Align cell text to the center":"Szöveg igazÃtása a cellában középre","Align cell text to the left":"Szöveg igazÃtása a cellában balra","Align cell text to the middle":"Szöveg igazÃtása a cellában középre","Align cell text to the right":"Szöveg igazÃtása a cellában jobbra","Align cell text to the top":"Szöveg igazÃtása a cellában felülre","Align table to the left":"Tábla igazÃtása balra","Align table to the right":"Tábla igazÃtása jobbra",Alignment:"IgazÃtás",Background:"Háttér",Border:"Keret","Cell properties":"Cella tulajdonságok","Center table":"Tábla igazÃtása középre",Color:"SzÃn","Color picker":"SzÃn választása",Column:"Oszlop",Dashed:"Szaggatott","Delete column":"Oszlop törlése","Delete row":"Sor törlése",Dimensions:"Méretek",Dotted:"Pontozott",Double:"Dupla","Enter table caption":"Táblázat feliratának megadása",Groove:"Ãrok","Header column":"Oszlop fejléc","Header row":"Sor fejléc",Height:"Magasság","Horizontal text alignment toolbar":"VÃzszintes szövegigazÃtási eszköztár","Insert column left":"Oszlop beszúrása balra","Insert column right":"Oszlop beszúrása jobbra","Insert row above":"Sor beszúrása fölé","Insert row below":"Sor beszúrása alá","Insert table":"Táblázat beszúrása",Inset:"MélyÃtett","Justify cell text":"Szöveg igazÃtása a cellában sorkizártra","Merge cell down":"Cellák egyesÃtése lefelé","Merge cell left":"Cellák egyesÃtése balra","Merge cell right":"Cellák egyesÃtése jobbra","Merge cell up":"Cellák egyesÃtése felfelé","Merge cells":"CellaegyesÃtés",None:"Nincs",Outset:"KiemelkedÅ‘",Padding:"Térköz",Ridge:"Gerinc",Row:"Sor","Select column":"Oszlop kijelölése","Select row":"Sor kijelölése",Solid:"Tömör","Split cell horizontally":"Cella felosztása vÃzszintesen","Split cell vertically":"Cella felosztása függÅ‘legesen",Style:"StÃlus","Table alignment toolbar":"TáblázatigazÃtási eszköztár","Table cell text alignment":"Szöveg igazÃtása a cellában","Table properties":"Táblázat tulajdonságai","Table toolbar":"Táblázat eszköztár",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'A szÃn érványtelen. Próbáld Ãgy "#FF0000" vagy "rgb(255,0,0)" vagy "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Az érték érvénytelen. Próbáld Ãgy "10px" vagy "2em" vagy csak egyszerűen "2".',"Toggle caption off":"Felirat kikapcsolása","Toggle caption on":"Felirat bekapcsolása","Vertical text alignment toolbar":"FüggÅ‘leges szövegigazÃtási eszköztár",Width:"Szélesség"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.hu=i.hu||{};n.dictionary=Object.assign(n.dictionary||{},{"HTML object":"HTML objektum"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.hu=t.hu||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"Bitcoin jel","Cedi sign":"","Cent sign":"Cent jel","Character categories":"","Colon sign":"KettÅ‘spont","Contains as member":"","Copyright sign":"Copyright jele","Cruzeiro sign":"","Currency sign":"Pénznem jel","Degree sign":"","Division sign":"","Dollar sign":"Dollár jel","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"szaggatott nyÃl lefelé","downwards double arrow":"dupla nyÃl lefelé","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"Euró jel","Euro-currency sign":"Euró pénznem jel","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"Francia frank jel","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"FordÃtott kérdÅ‘jel","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"szaggatott nyÃl balra","leftwards double arrow":"dupla nyÃl balra","Less-than or equal to":"","Less-than sign":"","Lira sign":"LÃra jel","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"Font jel","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"szaggatott nyÃl jobbra","rightwards double arrow":"dupla nyÃl jobbra","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Speciális karakterek","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"szaggatott nyÃl felfelé","upwards double arrow":"dupla nyÃl felfelé","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":"Yen jel"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.hu=e.hu||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Kékeszöld",Black:"Fekete",Blue:"Kék",Cancel:"Mégsem","Dim grey":"Halvány szürke","Dropdown toolbar":"LenyÃló eszköztár","Edit block":"Blokk szerkesztése","Editor toolbar":"SzerkesztÅ‘ eszköztár",Green:"Zöld",Grey:"Szürke","Insert paragraph after block":"Bekezdés beszúrása utána","Insert paragraph before block":"Bekezdés beszúrása elé","Light blue":"Világoskék","Light green":"Világoszöld","Light grey":"Világosszürke",Next:"KövetkezÅ‘",Orange:"Narancs",Previous:"ElÅ‘zÅ‘",Purple:"Lila",Red:"Piros",Redo:"Újra","Remove color":"SzÃn eltávolÃtása","Restore default":"Alapértelmezés visszaállÃtása","Rich Text Editor":"BÅ‘vÃtett szövegszerkesztÅ‘","Rich Text Editor, %0":"BÅ‘vÃtett szövegszerkesztÅ‘, %0",Save:"Mentés","Select all":"Mindet kijelöl","Show more items":"További elemek",Turquoise:"Türkiz",Undo:"Visszavonás","Upload in progress":"A feltöltés folyamatban",White:"Fehér","Widget toolbar":"Widget eszköztár",Yellow:"Sárga"}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/id.js b/core/assets/vendor/ckeditor5/translations/id.js new file mode 100644 index 000000000000..4a06298dfd26 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/id.js @@ -0,0 +1 @@ +!function(a){const t=a.id=a.id||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Rata tengah","Align left":"Rata kiri","Align right":"Rata kanan",Justify:"Rata kanan-kiri","Text alignment":"Perataan teks","Text alignment toolbar":"Alat perataan teks"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const r=i.id=i.id||{};r.dictionary=Object.assign(r.dictionary||{},{Bold:"Tebal",Code:"Kode",Italic:"Miring",Strikethrough:"Coret",Subscript:"Subskrip",Superscript:"Superskrip",Underline:"Garis bawah"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.id=i.id||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Kutipan"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const i=a.id=a.id||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose heading":"Pilih tajuk",Heading:"Tajuk","Heading 1":"Tajuk 1","Heading 2":"Tajuk 2","Heading 3":"Tajuk 3","Heading 4":"Tajuk 4","Heading 5":"Tajuk 5","Heading 6":"Tajuk 6",Paragraph:"Paragraf","Type or paste your content here.":"Ketik atau tempel konten Anda di sini.","Type your title":"Ketik judul Anda"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.id=i.id||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Garis horizontal"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.id=a.id||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"","Centered image":"Gambar rata tengah","Change image text alternative":"Ganti alternatif teks gambar","Enter image caption":"Tambahkan deskripsi gambar","Full size image":"Gambar ukuran penuh","Image resize list":"Daftar ukuran gambar","Image toolbar":"Alat gambar","image widget":"widget gambar","In line":"",Insert:"Sisipkan","Insert image":"Sisipkan gambar","Insert image via URL":"Sisipkan gambar melalui URL","Left aligned image":"Gambar rata kiri",Original:"Asli","Resize image":"Ubah ukuran gambar","Resize image to %0":"Ubah ukuran gambar ke %0","Resize image to the original size":"Ubah ukuran gambar ke ukuran asli","Right aligned image":"Gambar rata kanan","Side image":"Gambar sisi","Text alternative":"Alternatif teks",Update:"Perbarui","Update image URL":"Perbarui URL gambar","Upload failed":"Gagal mengunggah","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.id=n.id||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Kurangi indentasi","Increase indent":"Tambah indentasi"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const i=a.id=a.id||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose language":"Pilih bahasa",Language:"Bahasa","Remove language":"Singkirkan bahasa"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.id=n.id||{};a.dictionary=Object.assign(a.dictionary||{},{Downloadable:"Dapat diunduh","Edit link":"Sunting tautan",Link:"Tautan","Link image":"","Link URL":"URL tautan","Open in a new tab":"Buka di tab baru","Open link in new tab":"Buka tautan di tab baru","This link has no URL":"Tautan ini tidak memiliki URL",Unlink:"Hapus tautan"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.id=e.id||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Daftar Tak Berangka","Bulleted list styles toolbar":"Bilah alat gaya daftar bullet",Circle:"Lingkaran",Decimal:"Desimal","Decimal with leading zero":"Desimal dengan awalan nol",Disc:"Disk","Lower-latin":"","Lower–roman":"","Numbered List":"Daftar Berangka","Numbered list styles toolbar":"Bilah alat gaya daftar angka",Square:"Kotak","To-do List":"Daftar untuk-dikerjakan","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.id=i.id||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Hapus Format"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.id=e.id||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"Latar belakang",Border:"Garis batas","Cell properties":"Properti sel","Center table":"",Color:"Warna","Color picker":"",Column:"Kolom",Dashed:"","Delete column":"Hapus kolom","Delete row":"Hapus baris",Dimensions:"Dimensi",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Kolom tajuk","Header row":"Baris tajuk",Height:"Tinggi","Horizontal text alignment toolbar":"","Insert column left":"Sisipkan kolom ke kiri","Insert column right":"Sisipkan kolom ke kanan","Insert row above":"Sisipkan baris ke atas","Insert row below":"Sisipkan baris ke bawah","Insert table":"Sisipkan tabel",Inset:"","Justify cell text":"","Merge cell down":"Gabungkan sel ke bawah","Merge cell left":"Gabungkan sel ke kiri","Merge cell right":"Gabungkan sel ke kanan","Merge cell up":"Gabungkan sel ke atas","Merge cells":"Gabungkan sel",None:"",Outset:"",Padding:"",Ridge:"",Row:"Baris","Select column":"Seleksi kolom","Select row":"Seleksi baris",Solid:"","Split cell horizontally":"Bagikan sel secara horizontal","Split cell vertically":"Bagikan sel secara vertikal",Style:"Gaya","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"Properti tabel","Table toolbar":"Alat tabel",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:"Lebar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.id=a.id||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 dari %1",Aquamarine:"Biru laut",Black:"Hitam",Blue:"Biru",Cancel:"Batal","Dim grey":"Kelabu gelap","Dropdown toolbar":"Alat dropdown","Edit block":"Sunting blok","Editor toolbar":"Alat editor",Green:"Hijau",Grey:"Kelabu","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Biru terang","Light green":"Hijau terang","Light grey":"Kelabu terang",Next:"Berikutnya",Orange:"Jingga",Previous:"Sebelumnya",Purple:"Ungu",Red:"Merah",Redo:"Lakukan lagi","Remove color":"Hapus warna","Restore default":"","Rich Text Editor":"Editor Teks Kaya","Rich Text Editor, %0":"Editor Teks Kaya, %0",Save:"Simpan","Show more items":"",Turquoise:"Turkish",Undo:"Batal","Upload in progress":"Sedang mengunggah",White:"Putih","Widget toolbar":"Alat widget",Yellow:"Kuning"}),e.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/it.js b/core/assets/vendor/ckeditor5/translations/it.js new file mode 100644 index 000000000000..0109c4aa6edc --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/it.js @@ -0,0 +1 @@ +!function(i){const n=i.it=i.it||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Allinea al centro","Align left":"Allinea a sinistra","Align right":"Allinea a destra",Justify:"Giustifica","Text alignment":"Allineamento del testo","Text alignment toolbar":"Barra degli strumenti dell'allineamento"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.it=i.it||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Grassetto",Code:"Codice",Italic:"Corsivo",Strikethrough:"Barrato",Subscript:"Pedice",Superscript:"Apice",Underline:"Sottolineato"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.it=i.it||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Blocco citazione"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const n=e.it=e.it||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose heading":"Seleziona intestazione",Heading:"Intestazione","Heading 1":"Intestazione 1","Heading 2":"Intestazione 2","Heading 3":"Intestazione 3","Heading 4":"Intestazione 4","Heading 5":"Intestazione 5","Heading 6":"Intestazione 6",Paragraph:"Paragrafo","Type or paste your content here.":"Inserire o incollare qui il proprio contenuto.","Type your title":"Inserire il proprio titolo"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.it=i.it||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Linea orizzontale"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const e=i.it=i.it||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"Interrompi testo","Centered image":"Immagine centrata","Change image text alternative":"Cambia testo alternativo dell'immagine","Enter image caption":"inserire didascalia dell'immagine","Full size image":"Immagine a dimensione intera","Image resize list":"Elenco ridimensionamenti immagine","Image toolbar":"Barra degli strumenti dell'immagine","image widget":"Widget immagine","In line":"In linea",Insert:"Inserisci","Insert image":"Inserisci immagine","Insert image via URL":"Inserisci immagine tramite URL","Left aligned image":"Immagine allineata a sinistra",Original:"Originale","Resize image":"Ridimensiona immagine","Resize image to %0":"Ridimensiona immagine a %0","Resize image to the original size":"Ridimensiona immagine alle dimensioni originali","Right aligned image":"Immagine allineata a destra","Side image":"Immagine laterale","Text alternative":"Testo alternativo",Update:"Aggiorna","Update image URL":"Aggiorna URL immagine","Upload failed":"Caricamento fallito","Wrap text":"Testo a capo"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.it=i.it||{};n.dictionary=Object.assign(n.dictionary||{},{"Decrease indent":"Riduci rientro","Increase indent":"Aumenta rientro"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.it=i.it||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose language":"Seleziona lingua",Language:"Lingua","Remove language":"Rimuovi lingua"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.it=n.it||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Scaricabile","Edit link":"Modifica collegamento",Link:"Collegamento","Link image":"Collega immagine","Link URL":"URL del collegamento","Open in a new tab":"Apri in una nuova scheda","Open link in new tab":"Apri collegamento in nuova scheda","This link has no URL":"Questo collegamento non ha un URL",Unlink:"Elimina collegamento"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.it=e.it||{};i.dictionary=Object.assign(i.dictionary||{},{"Bulleted List":"Elenco puntato","Bulleted list styles toolbar":"Barra degli strumenti con gli stili degli elenchi puntati",Circle:"Cerchio",Decimal:"Numero","Decimal with leading zero":"Numero con zero anteposto",Disc:"Disco","Lower-latin":"Lettera minuscola","Lower–roman":"Numero romano minuscolo","Numbered List":"Elenco numerato","Numbered list styles toolbar":"Barra degli strumenti con gli stili degli elenchi numerati",Square:"Quadrato","To-do List":"Elenco cose da fare","Toggle the circle list style":"Attiva/disattiva lo stile degli elenchi con cerchi","Toggle the decimal list style":"Attiva/disattiva lo stile degli elenchi con numeri","Toggle the decimal with leading zero list style":"Attiva/disattiva lo stile degli elenchi con numeri con zero anteposto","Toggle the disc list style":"Attiva/disattiva lo stile degli elenchi con dischi","Toggle the lower–latin list style":"Attiva/disattiva lo stile degli elenchi con lettere minuscole","Toggle the lower–roman list style":"Attiva/disattiva lo stile degli elenchi con numeri romani minuscoli","Toggle the square list style":"Attiva/disattiva lo stile degli elenchi con quadrati","Toggle the upper–latin list style":"Attiva/disattiva lo stile degli elenchi con lettere maiuscole","Toggle the upper–roman list style":"Attiva/disattiva lo stile degli elenchi con numeri romani maiuscoli","Upper-latin":"Lettera maiuscola","Upper-roman":"Numero romano maiuscolo"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.it=i.it||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Rimuovi formato"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.it=i.it||{};n.dictionary=Object.assign(n.dictionary||{},{Source:"Sorgente"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.it=e.it||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"Allinea il testo della cella in basso","Align cell text to the center":"Allinea il testo della cella al centro","Align cell text to the left":"Allinea il testo della cella a sinistra","Align cell text to the middle":"Allinea il testo della cella in mezzo","Align cell text to the right":"Allinea il testo della cella a destra","Align cell text to the top":"Allinea il testo della cella in alto","Align table to the left":"Allinea tabella a sinistra","Align table to the right":"Allinea tabella a destra",Alignment:"Allineamento",Background:"Sfondo",Border:"Bordo","Cell properties":"Proprietà cella","Center table":"Allinea tabella al centro",Color:"Colore","Color picker":"Selezione colore",Column:"Colonna",Dashed:"Tratteggiato","Delete column":"Elimina colonna","Delete row":"Elimina riga",Dimensions:"Dimensioni",Dotted:"Punteggiato",Double:"Doppio","Enter table caption":"Inserire la didascalia della tabella",Groove:"Scanalatura","Header column":"Intestazione colonna","Header row":"Riga d'intestazione",Height:"Altezza","Horizontal text alignment toolbar":"Barra degli strumenti dell'allineamento orizzontale del testo","Insert column left":"Inserisci colonna a sinistra","Insert column right":"Inserisci colonna a destra","Insert row above":"Inserisci riga sopra","Insert row below":"Inserisci riga sotto","Insert table":"Inserisci tabella",Inset:"Incassato","Justify cell text":"Testo della cella giustificato","Merge cell down":"Unisci cella sotto","Merge cell left":"Unisci cella a sinistra","Merge cell right":"Unisci cella a destra","Merge cell up":"Unisci cella sopra","Merge cells":"Unisci celle",None:"Nessuno",Outset:"Rialzato",Padding:"Spaziatura interna",Ridge:"Rilievo",Row:"Riga","Select column":"Seleziona colonna","Select row":"Seleziona riga",Solid:"Solido","Split cell horizontally":"Dividi cella orizzontalmente","Split cell vertically":"Dividi cella verticalmente",Style:"Stile","Table alignment toolbar":"Barra degli strumenti dell'allineamento della tabella","Table cell text alignment":"Allineamento del testo nella cella della tabella","Table properties":"Proprietà tabella","Table toolbar":"Barra degli strumenti della tabella",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Il colore non è valido. Provare "#FF0000" o "rgb(255,0,0)" o "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Il valore non è valido. Provare "10px" o "2em" o semplicemente "2".',"Toggle caption off":"Attiva didascalia","Toggle caption on":"Disattiva didascalia","Vertical text alignment toolbar":"Barra degli strumenti dell'allineamento verticale del testo",Width:"Larghezza"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.it=i.it||{};t.dictionary=Object.assign(t.dictionary||{},{"HTML object":"Oggetto HTML"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const t=a.it=a.it||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Quasi uguale a",Angle:"Angolo","Approximately equal to":"Approssimativamente uguale a","Asterisk operator":"Operatore asterisco","Austral sign":"Simbolo austral","back with leftwards arrow above":"back con sopra freccia verso sinistra","Bitcoin sign":"Simbolo bitcoin","Cedi sign":"Simbolo cedi","Cent sign":"Simbolo centesimo","Character categories":"Categorie di caratteri","Colon sign":"Simbolo colon","Contains as member":"Contiene","Copyright sign":"Simbolo copyright","Cruzeiro sign":"Simbolo cruzeiro","Currency sign":"Simbolo valuta","Degree sign":"Simbolo gradi","Division sign":"Segno di divisione","Dollar sign":"Simbolo dollaro","Dong sign":"Simbolo dong","Double dagger":"Doppio obelisco","Double exclamation mark":"Doppio punto esclamativo","Double low-9 quotation mark":"Doppie virgolette basse","Double question mark":"Doppio punto interrogativo","downwards arrow to bar":"Freccia verso barra in basso","downwards dashed arrow":"Freccia tratteggiata verso il basso","downwards double arrow":"Freccia doppia verso il basso","Drachma sign":"Simbolo dracma","Element of":"Elemento di","Em dash":"Trattino lungo (em)","Empty set":"Insieme vuoto","En dash":"Trattino medio (en)","end with leftwards arrow above":"end con sopra freccia verso sinistra","Euro sign":"Simbolo euro","Euro-currency sign":"Simbolo valuta euro","Exclamation question mark":"Punti esclamativo e interrogativo","For all":"Per ogni","Fraction slash":"Barra di frazione","French franc sign":"Simbolo franco francese","German penny sign":"Simbolo pfennig tedesco","Greater-than or equal to":"Maggiore o uguale a","Greater-than sign":"Simbolo maggiore di","Guarani sign":"Simbolo guaranÃ","Horizontal ellipsis":"Puntini di sospensione orizzontali","Hryvnia sign":"Simbolo grivnia","Identical to":"Identico a","Indian rupee sign":"Simbolo rupia indiana",Infinity:"Infinito",Integral:"Integrale",Intersection:"Intersezione","Inverted exclamation mark":"Punto esclamativo invertito","Inverted question mark":"Punto interrogativo invertito","Kip sign":"Simbolo kip","Latin capital letter a with breve":"Lettera A latina maiuscola con breve","Latin capital letter a with macron":"Lettera A latina maiuscola con macron","Latin capital letter a with ogonek":"Lettera A latina maiuscola con codetta","Latin capital letter c with acute":"Lettera C latina maiuscola con accento acuto","Latin capital letter c with caron":"Lettera C latina maiuscola con pipa","Latin capital letter c with circumflex":"Lettera C latina maiuscola con accento circonflesso","Latin capital letter c with dot above":"Lettera C latina maiuscola con punto sovrascritto","Latin capital letter d with caron":"Lettera D latina maiuscola con pipa","Latin capital letter d with stroke":"Lettera D latina maiuscola con barra","Latin capital letter e with breve":"Lettera E latina maiuscola con accento breve","Latin capital letter e with caron":"Lettera E latina maiuscola con pipa","Latin capital letter e with dot above":"Lettera E latina maiuscola con punto sovrascritto","Latin capital letter e with macron":"Lettera E latina maiuscola con macron","Latin capital letter e with ogonek":"Lettera E latina maiuscola con codetta","Latin capital letter eng":"Nasale velare maiuscola","Latin capital letter g with breve":"Lettera G latina maiuscola con breve","Latin capital letter g with cedilla":"Lettera G latina maiuscola con cediglia","Latin capital letter g with circumflex":"Lettera G latina maiuscola con accento circonflesso","Latin capital letter g with dot above":"Lettera G latina maiuscola con punto sovrascritto","Latin capital letter h with circumflex":"Lettera H latina maiuscola con accento circonflesso","Latin capital letter h with stroke":"Lettera H latina maiuscola con barra","Latin capital letter i with breve":"Lettera I latina maiuscola con breve","Latin capital letter i with dot above":"Lettera I latina maiuscola con punto sovrascritto","Latin capital letter i with macron":"Lettera I latina maiuscola con macron","Latin capital letter i with ogonek":"Lettera I latina maiuscola con codetta","Latin capital letter i with tilde":"Lettera I latina maiuscola con tilde","Latin capital letter j with circumflex":"Lettera J latina maiuscola con accento circonflesso","Latin capital letter k with cedilla":"Lettera K latina maiuscola con cediglia","Latin capital letter l with acute":"Lettera L latina maiuscola con accento acuto","Latin capital letter l with caron":"Lettera L latina maiuscola con pipa","Latin capital letter l with cedilla":"Lettera L latina maiuscola con cediglia","Latin capital letter l with middle dot":"Lettera L latina maiuscola con punto in mezzo","Latin capital letter l with stroke":"Lettera L latina maiuscola con barra","Latin capital letter n with acute":"Lettera N latina maiuscola con accento acuto","Latin capital letter n with caron":"Lettera N latina maiuscola con pipa","Latin capital letter n with cedilla":"Lettera N latina maiuscola con cediglia","Latin capital letter o with breve":"Lettera O latina maiuscola con breve","Latin capital letter o with double acute":"Lettera O latina maiuscola con doppio accento acuto","Latin capital letter o with macron":"Lettera O latina maiuscola con macron","Latin capital letter r with acute":"Lettera R latina maiuscola con accento acuto","Latin capital letter r with caron":"Lettera R latina maiuscola con pipa","Latin capital letter r with cedilla":"Lettera R latina maiuscola con cediglia","Latin capital letter s with acute":"Lettera S latina maiuscola con accento acuto","Latin capital letter s with caron":"Lettera S latina maiuscola con pipa","Latin capital letter s with cedilla":"Lettera S latina maiuscola con cediglia","Latin capital letter s with circumflex":"Lettera S latina maiuscola con accento circonflesso","Latin capital letter t with caron":"Lettera T latina maiuscola con pipa","Latin capital letter t with cedilla":"Lettera T latina maiuscola con cediglia","Latin capital letter t with stroke":"Lettera T latina maiuscola con barra","Latin capital letter u with breve":"Lettera U latina maiuscola con breve","Latin capital letter u with double acute":"Lettera U latina maiuscola con doppio accento acuto","Latin capital letter u with macron":"Lettera U latina maiuscola con macron","Latin capital letter u with ogonek":"Lettera U latina maiuscola con codetta","Latin capital letter u with ring above":"Lettera U latina maiuscola con anello in alto","Latin capital letter u with tilde":"Lettera U latina maiuscola con tilde","Latin capital letter w with circumflex":"Lettera W latina maiuscola con accento circonflesso","Latin capital letter y with circumflex":"Lettera Y latina maiuscola con accento circonflesso","Latin capital letter y with diaeresis":"Lettera Y latina maiuscola con dieresi","Latin capital letter z with acute":"Lettera Z latina maiuscola con accento acuto","Latin capital letter z with caron":"Lettera Z latina maiuscola con pipa","Latin capital letter z with dot above":"Lettera Z latina maiuscola con punto sovrascritto","Latin capital ligature ij":"Legatura IJ latina maiuscola","Latin capital ligature oe":"Legatura OE latina maiuscola","Latin small letter a with breve":"Lettera A latina minuscola con breve","Latin small letter a with macron":"Lettera A latina minuscola con macron","Latin small letter a with ogonek":"Lettera A latina minuscola con codetta","Latin small letter c with acute":"Lettera C latina minuscola con accento acuto","Latin small letter c with caron":"Lettera C latina minuscola con pipa","Latin small letter c with circumflex":"Lettera C latina minuscola con accento circonflesso","Latin small letter c with dot above":"Lettera C latina minuscola con punto sovrascritto","Latin small letter d with caron":"Lettera D latina minuscola con pipa","Latin small letter d with stroke":"Lettera D latina minuscola con barra","Latin small letter dotless i":"Lettera I latina minuscola senza punto","Latin small letter e with breve":"Lettera E latina minuscola con accento breve","Latin small letter e with caron":"Lettera E latina minuscola con pipa","Latin small letter e with dot above":"Lettera E latina minuscola con punto sovrascritto","Latin small letter e with macron":"Lettera E latina minuscola con macron","Latin small letter e with ogonek":"Lettera E latina minuscola con codetta","Latin small letter eng":"Nasale velare minuscola","Latin small letter f with hook":"Lettera f latina minuscola con gancio","Latin small letter g with breve":"Lettera G latina minuscola con breve","Latin small letter g with cedilla":"Lettera G latina minuscola con cediglia","Latin small letter g with circumflex":"Lettera G latina minuscola con accento circonflesso","Latin small letter g with dot above":"Lettera G latina minuscola con punto sovrascritto","Latin small letter h with circumflex":"Lettera H latina minuscola con accento circonflesso","Latin small letter h with stroke":"Lettera H latina minuscola con barra","Latin small letter i with breve":"Lettera I latina minuscola con breve","Latin small letter i with macron":"Lettera I latina minuscola con macron","Latin small letter i with ogonek":"Lettera I latina minuscola con codetta","Latin small letter i with tilde":"Lettera I latina minuscola con tilde","Latin small letter j with circumflex":"Lettera J latina minuscola con accento circonflesso","Latin small letter k with cedilla":"Lettera K latina minuscola con cediglia","Latin small letter kra":"Lettera Kra latina minuscola","Latin small letter l with acute":"Lettera L latina minuscola con accento acuto","Latin small letter l with caron":"Lettera L latina minuscola con pipa","Latin small letter l with cedilla":"Lettera L latina minuscola con cediglia","Latin small letter l with middle dot":"Lettera L latina minuscola con punto in mezzo","Latin small letter l with stroke":"Lettera L latina minuscola con barra","Latin small letter long s":"Lettera S latina lunga minuscola","Latin small letter n preceded by apostrophe":"Lettera N latina minuscola preceduta da apostrofo","Latin small letter n with acute":"Lettera N latina minuscola con accento acuto","Latin small letter n with caron":"Lettera N latina minuscola con pipa","Latin small letter n with cedilla":"Lettera N latina minuscola con cediglia","Latin small letter o with breve":"Lettera O latina minuscola con breve","Latin small letter o with double acute":"Lettera O latina minuscola con doppio accento acuto","Latin small letter o with macron":"Lettera O latina minuscola con macron","Latin small letter r with acute":"Lettera R latina minuscola con accento acuto","Latin small letter r with caron":"Lettera R latina minuscola con pipa","Latin small letter r with cedilla":"Lettera R latina minuscola con cediglia","Latin small letter s with acute":"Lettera S latina minuscola con accento acuto","Latin small letter s with caron":"Lettera S latina minuscola con pipa","Latin small letter s with cedilla":"Lettera S latina minuscola con cediglia","Latin small letter s with circumflex":"Lettera S latina minuscola con accento circonflesso","Latin small letter t with caron":"Lettera T latina minuscola con pipa","Latin small letter t with cedilla":"Lettera T latina minuscola con cediglia","Latin small letter t with stroke":"Lettera T latina minuscola con barra","Latin small letter u with breve":"Lettera U latina minuscola con breve","Latin small letter u with double acute":"Lettera U latina minuscola con doppio accento acuto","Latin small letter u with macron":"Lettera U latina minuscola con macron","Latin small letter u with ogonek":"Lettera U latina minuscola con codetta","Latin small letter u with ring above":"Lettera U latina minuscola con cerchio in alto","Latin small letter u with tilde":"Lettera U latina minuscola con tilde","Latin small letter w with circumflex":"Lettera W latina minuscola con accento circonflesso","Latin small letter y with circumflex":"Lettera Y latina minuscola con accento circonflesso","Latin small letter z with acute":"Lettera Z latina minuscola con accento acuto","Latin small letter z with caron":"Lettera Z latina minuscola con pipa","Latin small letter z with dot above":"Lettera Z latina minuscola con punto sovrascritto","Latin small ligature ij":"Legatura IJ latina minuscola","Latin small ligature oe":"Legatura OE latina minuscola","Left double quotation mark":"Doppie virgolette a sinistra","Left single quotation mark":"Virgoletta a sinistra","Left-pointing double angle quotation mark":"Virgolette doppie angolari a sinistra","leftwards arrow to bar":"Freccia verso barra a sinistra","leftwards dashed arrow":"Freccia tratteggiata verso sinistra","leftwards double arrow":"Freccia doppia verso sinistra","Less-than or equal to":"Minore o uguale a","Less-than sign":"Simbolo minore di","Lira sign":"Simbolo lira","Livre tournois sign":"Simbolo livre tournois","Logical and":"E logico","Logical or":"O logico",Macron:"Macron","Manat sign":"Simbolo manat","Mill sign":"Simbolo millesimo","Minus sign":"Segno di sottrazione","Multiplication sign":"Segno di moltiplicazione","N-ary product":"Prodotto ennesimo","N-ary summation":"Sommatoria",Nabla:"Nabla","Naira sign":"Simbolo naira","New sheqel sign":"Simbolo nuovo shekel","Nordic mark sign":"Simbolo marco nordico","Not an element of":"Non parte di","Not equal to":"Non uguale a","Not sign":"Simbolo Not","on with exclamation mark with left right arrow above":"on! con sopra freccia verso sinistra",Overline:"Linea alta","Paragraph sign":"Simbolo paragrafo","Partial differential":"Derivata parziale","Per mille sign":"Simbolo per mille","Per ten thousand sign":"Simbolo per diecimila","Peseta sign":"Simbolo peseta","Peso sign":"Simbolo peso","Plus-minus sign":"Segno più o meno","Pound sign":"Simbolo sterlina","Proportional to":"Proporzionale a","Question exclamation mark":"Punti interrogativo ed esclamativo","Registered sign":"Simbolo marchio registrato","Reversed paragraph sign":"Simbolo paragrafo invertito","Right double quotation mark":"Doppie virgolette a destra","Right single quotation mark":"Virgoletta a destra","Right-pointing double angle quotation mark":"Virgolette doppie angolari a destra","rightwards arrow to bar":"Freccia verso barra a destra","rightwards dashed arrow":"Freccia tratteggiata verso destra","rightwards double arrow":"Freccia doppia verso destra","Ruble sign":"Simbolo rublo","Rupee sign":"Simbolo rupia","Section sign":"Simbolo sezione","Single left-pointing angle quotation mark":"Virgoletta angolare a sinistra","Single low-9 quotation mark":"Virgoletta bassa","Single right-pointing angle quotation mark":"Virgoletta angolare a destra","soon with rightwards arrow above":"soon con sopra freccia verso destra","Special characters":"Caratteri speciali","Spesmilo sign":"Simbolo spesmilo","Square root":"Radice quadrata","Tenge sign":"Simbolo tenge","There exists":"Esiste","Tilde operator":"Operatore tilde","top with upwards arrow above":"top con sopra freccia verso l'alto","Trade mark sign":"Simbolo trademark","Tugrik sign":"Simbolo tugrik","Turkish lira sign":"Simbolo lira turca","Two dot leader":"Due punti iniziali",Union:"Unione","up down arrow with base":"Doppia freccia verticale con base","upwards arrow to bar":"Freccia verso barra in alto","upwards dashed arrow":"Freccia tratteggiata verso l'alto","upwards double arrow":"Freccia doppia verso l'alto","Vulgar fraction one half":"Frazione semplice un mezzo","Vulgar fraction one quarter":"Frazione semplice un quarto","Vulgar fraction three quarters":"Frazione semplice tre quarti","Won sign":"Simbolo won","Yen sign":"Simbolo yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const r=o.it=o.it||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 di %1",Aquamarine:"Aquamarina",Black:"Nero",Blue:"Blu",Cancel:"Annulla","Dim grey":"Grigio tenue","Dropdown toolbar":"Barra degli strumenti del menu a discesa","Edit block":"Modifica blocco","Editor toolbar":"Barra degli strumenti dell'editor",Green:"Verde",Grey:"Grigio","Insert paragraph after block":"Inserisci paragrafo dopo blocco","Insert paragraph before block":"Inserisci paragrafo prima di blocco","Light blue":"Azzurro","Light green":"Verde chiaro","Light grey":"Grigio chiaro",Next:"Avanti",Orange:"Arancio",Previous:"Indietro",Purple:"Porpora",Red:"Rosso",Redo:"Ripristina","Remove color":"Rimuovi colore","Restore default":"Ripristina predefinito","Rich Text Editor":"Editor di testo formattato","Rich Text Editor, %0":"Editor di testo formattato, %0",Save:"Salva","Select all":"Seleziona tutto","Show more items":"Mostra più elementi",Turquoise:"Turchese",Undo:"Annulla","Upload in progress":"Caricamento in corso",White:"Bianco","Widget toolbar":"Barra degli strumenti del widget",Yellow:"Giallo"}),r.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ja.js b/core/assets/vendor/ckeditor5/translations/ja.js new file mode 100644 index 000000000000..1ff28067cc5b --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ja.js @@ -0,0 +1 @@ +!function(n){const i=n.ja=n.ja||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"ä¸å¤®æƒãˆ","Align left":"å·¦æƒãˆ","Align right":"å³æƒãˆ",Justify:"両端æƒãˆ","Text alignment":"æ–‡å—æƒãˆ","Text alignment toolbar":"テã‚ストã®æ•´åˆ—"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ja=i.ja||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"ボールド",Code:"コード",Italic:"イタリック",Strikethrough:"å–り消ã—ç·š",Subscript:"下付ãæ–‡å—",Superscript:"上付ãæ–‡å—",Underline:"アンダーライン"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ja=i.ja||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"ブãƒãƒƒã‚¯ã‚¯ã‚ªãƒ¼ãƒˆ(引用)"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.ja=n.ja||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose heading":"見出ã—ã‚’é¸æŠž",Heading:"見出ã—","Heading 1":"見出ã—1","Heading 2":"見出ã—2","Heading 3":"見出ã—3 ","Heading 4":"見出ã—4","Heading 5":"見出ã—5","Heading 6":"見出ã—6",Paragraph:"段è½","Type or paste your content here.":"コンテンツをã“ã“ã«å…¥åŠ›ã¾ãŸã¯è²¼ã‚Šä»˜ã‘ã—ã¦ãã ã•ã„。","Type your title":"タイトルを入力"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ja=i.ja||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"区切り"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.ja=e.ja||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"ä¸å¤®å¯„ã›ç”»åƒ","Change image text alternative":"ç”»åƒã®ä»£æ›¿ãƒ†ã‚ストを変更","Enter image caption":"ç”»åƒã®æ³¨é‡ˆã‚’入力","Full size image":"フルサイズ画åƒ","Image resize list":"ç”»åƒã‚µã‚¤ã‚ºãƒªã‚¹ãƒˆ","Image toolbar":"ç”»åƒ","image widget":"ç”»åƒã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆ","In line":"",Insert:"挿入","Insert image":"ç”»åƒæŒ¿å…¥","Insert image via URL":"ç”»åƒURLを挿入","Left aligned image":"左寄ã›ç”»åƒ",Original:"オリジナル","Resize image":"ç”»åƒã‚µã‚¤ã‚º","Resize image to %0":"ç”»åƒã‚µã‚¤ã‚ºã‚’%0ã«å¤‰æ›´","Resize image to the original size":"ç”»åƒã‚µã‚¤ã‚ºã‚’å…ƒã®ã‚µã‚¤ã‚ºã«å¤‰æ›´","Right aligned image":"å³å¯„ã›ç”»åƒ","Side image":"サイドイメージ","Text alternative":"代替テã‚スト",Update:"æ›´æ–°","Update image URL":"ç”»åƒURLã‚’æ›´æ–°","Upload failed":"アップãƒãƒ¼ãƒ‰å¤±æ•—","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ja=n.ja||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"インデントã®å‰Šé™¤","Increase indent":"インデントã®è¿½åŠ "})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ja=n.ja||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"ダウンãƒãƒ¼ãƒ‰å¯èƒ½","Edit link":"リンクを編集",Link:"リンク","Link image":"リンク画åƒ","Link URL":"リンクURL","Open in a new tab":"æ–°ã—ã„タブã§é–‹ã","Open link in new tab":"æ–°ã—ã„タブã§ãƒªãƒ³ã‚¯ã‚’é–‹ã","This link has no URL":"リンクã«URLãŒè¨å®šã•ã‚Œã¦ã„ã¾ã›ã‚“",Unlink:"リンク解除"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.ja=e.ja||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"箇æ¡æ›¸ãリスト","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"番å·ä»˜ãリスト","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ja=i.ja||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"フォーマットã®å‰Šé™¤"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.ja=e.ja||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"列",Dashed:"","Delete column":"列を削除","Delete row":"行を削除",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"見出ã—列","Header row":"見出ã—è¡Œ",Height:"","Horizontal text alignment toolbar":"","Insert column left":"","Insert column right":"","Insert row above":"上ã«è¡Œã‚’挿入","Insert row below":"下ã«è¡Œã‚’挿入","Insert table":"表ã®æŒ¿å…¥",Inset:"","Justify cell text":"","Merge cell down":"下ã®ã‚»ãƒ«ã¨çµåˆ","Merge cell left":"å·¦ã®ã‚»ãƒ«ã¨çµåˆ","Merge cell right":"å³ã®ã‚»ãƒ«ã¨çµåˆ","Merge cell up":"上ã®ã‚»ãƒ«ã¨çµåˆ","Merge cells":"セルをçµåˆ",None:"",Outset:"",Padding:"",Ridge:"",Row:"è¡Œ","Select column":"","Select row":"",Solid:"","Split cell horizontally":"縦ã«ã‚»ãƒ«ã‚’分離","Split cell vertically":"横ã«ã‚»ãƒ«ã‚’分離",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.ja=t.ja||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"特殊文å—","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.ja=e.ja||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"è–„ã„é’ç·‘",Black:"é»’",Blue:"é’",Cancel:"ã‚ャンセル","Dim grey":"æš—ã„ç°è‰²","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"ç·‘",Grey:"ç°è‰²","Insert paragraph after block":"ブãƒãƒƒã‚¯ã®å¾Œã«ãƒ‘ラグラフを挿入","Insert paragraph before block":"ブãƒãƒƒã‚¯ã®å‰ã«ãƒ‘ラグラフを挿入","Light blue":"明るã„é’","Light green":"明るã„ç·‘","Light grey":"明るã„ç°è‰²",Next:"",Orange:"オレンジ",Previous:"",Purple:"ç´«",Red:"赤",Redo:"ã‚„ã‚Šç›´ã—","Remove color":"カラーを削除","Restore default":"","Rich Text Editor":"リッãƒãƒ†ã‚ストエディター","Rich Text Editor, %0":"リッãƒãƒ†ã‚ストエディター, %0",Save:"ä¿å˜","Select all":"ã™ã¹ã¦é¸æŠž","Show more items":"",Turquoise:"水色",Undo:"å…ƒã«æˆ»ã™","Upload in progress":"アップãƒãƒ¼ãƒ‰ä¸",White:"白","Widget toolbar":"ウィジェットツールãƒãƒ¼",Yellow:"黄"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/kk.js b/core/assets/vendor/ckeditor5/translations/kk.js new file mode 100644 index 000000000000..0bcf7db44bd4 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/kk.js @@ -0,0 +1 @@ +!function(n){const i=n.kk=n.kk||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Ортадан туралау","Align left":"Солға туралау","Align right":"Оңға туралау",Justify:"","Text alignment":"Мәтінді туралау","Text alignment toolbar":"Мәтінді туралау құралдар тақтаÑÑ‹"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/km.js b/core/assets/vendor/ckeditor5/translations/km.js new file mode 100644 index 000000000000..5ef6ffe10517 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/km.js @@ -0,0 +1 @@ +!function(n){const i=n.km=n.km||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"ážáž˜áŸ’រឹម​កណ្ដាល","Align left":"ážáž˜áŸ’រឹម​ឆ្វáŸáž„","Align right":"ážáž˜áŸ’រឹម​ស្ដាំ",Justify:"ážáž˜áŸ’រឹម​សងážáž¶áž„","Text alignment":"ការ​ážáž˜áŸ’រឹម​អក្សរ","Text alignment toolbar":"របារ​ឧបករណáŸâ€‹ážáž˜áŸ’រឹម​អក្សរ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.km=i.km||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"ដិáž",Code:"កូដ",Italic:"ទ្រáŸáž",Strikethrough:"ឆូážáž€ážŽáŸ’ដាល",Subscript:"អក្សរ​ážáž¼áž…ក្រោម",Superscript:"អក្សរ​ážáž¼áž…លើ",Underline:"គូស​បន្ទាážáŸ‹â€‹áž€áŸ’រោម"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.km=i.km||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"ប្លុក​ពាក្យ​សម្រង់"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.km=n.km||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"ជ្រើសរើស​ក្បាលអážáŸ’ážáž”áž‘",Heading:"ក្បាលអážáŸ’ážáž”áž‘","Heading 1":"ក្បាលអážáŸ’ážáž”áž‘ 1","Heading 2":"ក្បាលអážáŸ’ážáž”áž‘ 2","Heading 3":"ក្បាលអážáŸ’ážáž”áž‘ 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"កážáž¶ážážŽáŸ’ឌ","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.km=e.km||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"","Change image text alternative":"","Enter image caption":"បញ្ចូល​ពាក្យ​ពណ៌នា​រូបភាព","Full size image":"រូបភាព​ពáŸáž‰â€‹áž‘ំហំ","Image resize list":"","Image toolbar":"","image widget":"វិដជិážâ€‹ážšáž¼áž”ភាព","In line":"",Insert:"","Insert image":"បញ្ចូល​រូបភាព","Insert image via URL":"","Left aligned image":"",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"","Side image":"រូបភាព​នៅ​ážáž¶áž„","Text alternative":"",Update:"","Update image URL":"","Upload failed":"អាប់ឡូážâ€‹áž˜áž·áž“បាន","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.km=n.km||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"",Link:"ážáŸ†ážŽ","Link image":"","Link URL":"URL ážáŸ†ážŽ","Open in a new tab":"","Open link in new tab":"","This link has no URL":"",Unlink:"ផ្ដាច់​ážáŸ†ážŽ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.km=e.km||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"បញ្ជី​ជា​ចំណុច","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"បញ្ជី​ជា​លáŸáž","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.km=e.km||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"បោះបង់","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"ធ្វើ​វិញ","Remove color":"","Restore default":"","Rich Text Editor":"កម្មវិធី​កែសម្រួល​អážáŸ’ážáž”ទ​សម្បូរបែប","Rich Text Editor, %0":"កម្មវិធី​កែសម្រួល​អážáŸ’ážáž”ទ​សម្បូរបែប, %0",Save:"រក្សាទុ","Show more items":"",Turquoise:"",Undo:"លែង​ធ្វើ​វិញ",White:"",Yellow:""}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/kn.js b/core/assets/vendor/ckeditor5/translations/kn.js new file mode 100644 index 000000000000..4af863edc30f --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/kn.js @@ -0,0 +1 @@ +!function(i){const n=i.kn=i.kn||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"â€â€à²¦à²ªà³à²ª",Code:"",Italic:"â€à²‡à²Ÿà²¾à²²à²¿à²•à³",Strikethrough:"",Subscript:"",Superscript:"",Underline:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.kn=n.kn||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"â€â€â€â€à²—à³à²°à³à²¤à²¿à²¸à²²à²¾à²¦ â€â€à²‰à²²à³à²²à³‡à²–"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.kn=n.kn||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"ಶೀರà³à²·à²¿à²•à³† ಆಯà³à²•à³†à²®à²¾à²¡à³",Heading:"ಶೀರà³à²·à²¿à²•à³†","Heading 1":"ಶೀರà³à²·à²¿à²•à³† 1","Heading 2":"ಶೀರà³à²·à²¿à²•à³† 2","Heading 3":"ಶೀರà³à²·à²¿à²•à³† 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"ಪà³à²¯à²¾à²°à²¾à²—à³à²°à²¾à²«à³","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.kn=e.kn||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"","Change image text alternative":"â€à²šà²¿à²¤à³à²°à²¦ ಬದಲಿ ಪಠà³à²¯ ಬದಲಾಯಿಸà³","Enter image caption":"â€à²šà²¿à²¤à³à²°à²¦ ಶೀರà³à²·à²¿à²•à³† ಸೇರಿಸà³","Full size image":"â€à²ªà³‚ರà³à²£ â€â€à²…ಳತೆಯ ಚಿತà³à²°","Image resize list":"","Image toolbar":"","image widget":"â€à²šà²¿à²¤à³à²° ವಿಜೆಟà³","In line":"",Insert:"","Insert image":"","Insert image via URL":"","Left aligned image":"",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"","Side image":"â€à²ªà²•à³à²•à²¦ ಚಿತà³à²°","Text alternative":"â€à²ªà² à³à²¯à²¦ ಬದಲಿ",Update:"","Update image URL":"","Upload failed":"","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.kn=n.kn||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"",Link:"â€à²•à³Šà²‚ಡಿ","Link image":"","Link URL":"â€à²•à³Šà²‚ಡಿ ಸಂಪರà³à²•à²¿à²¸à³","Open in a new tab":"","Open link in new tab":"","This link has no URL":"",Unlink:"â€à²•à³Šà²‚ಡಿ ತೆಗೆ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.kn=e.kn||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"â€â€à²¬à³à²²à³†à²Ÿà³ ಪಟà³à²Ÿà²¿","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"â€à²¸à²‚ಖà³à²¯à³†à²¯ ಪಟà³à²Ÿà²¿â€","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.kn=e.kn||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"ರದà³à²¦à³à²®à²¾à²¡à³","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"â€à²®à²¤à³à²¤à³† ಮಾಡà³","Remove color":"","Restore default":"","Rich Text Editor":"â€à²¸à²®à³ƒà²¦à³à²§ ಪಠà³à²¯ ಸಂಪಾದಕâ€â€","Rich Text Editor, %0":"â€à²¸à²®à³ƒà²¦à³à²§ ಪಠà³à²¯ ಸಂಪಾದಕâ€, %0",Save:"ಉಳಿಸà³","Show more items":"",Turquoise:"",Undo:"â€â€à²°à²¦à³à²¦à³",White:"",Yellow:""}),o.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ko.js b/core/assets/vendor/ckeditor5/translations/ko.js new file mode 100644 index 000000000000..dab245730572 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ko.js @@ -0,0 +1 @@ +!function(n){const i=n.ko=n.ko||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"ê°€ìš´ë° ì •ë ¬","Align left":"왼쪽 ì •ë ¬","Align right":"오른쪽 ì •ë ¬",Justify:"양쪽 ì •ë ¬","Text alignment":"í…스트 ì •ë ¬","Text alignment toolbar":"í…스트 ì •ë ¬ 툴바"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.ko=i.ko||{};o.dictionary=Object.assign(o.dictionary||{},{Bold:"굵게",Code:"코드",Italic:"기울임꼴",Strikethrough:"ì·¨ì†Œì„ ",Subscript:"아래 첨ìž",Superscript:"위 첨ìž",Underline:"밑줄"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.ko=o.ko||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"ì¸ìš© 단ë½"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.ko=n.ko||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"ì œëª© ì„ íƒ",Heading:"ì œëª©","Heading 1":"ì œëª© 1","Heading 2":"ì œëª© 2","Heading 3":"ì œëª© 3","Heading 4":"ì œëª© 4","Heading 5":"ì œëª© 5","Heading 6":"ì œëª© 6",Paragraph:"문단","Type or paste your content here.":"ì—¬ê¸°ì— ë‚´ìš©ì„ ìž…ë ¥í•˜ê±°ë‚˜ 붙여넣기 하세요.","Type your title":"ì œëª©ì„ ìž…ë ¥í•´ì£¼ì„¸ìš”"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ko=i.ko||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"수í‰ì„ "})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.ko=e.ko||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"ê°€ìš´ë° ì •ë ¬","Change image text alternative":"대체 문구 변경","Enter image caption":"사진 ì„¤ëª…ì„ ìž…ë ¥í•˜ì„¸ìš”","Full size image":"꽉 ì°¬ í¬ê¸°","Image resize list":"사진 í¬ê¸° 목ë¡","Image toolbar":"사진 툴바","image widget":"사진 ìœ„ì ¯","In line":"",Insert:"","Insert image":"사진 삽입","Insert image via URL":"","Left aligned image":"왼쪽 ì •ë ¬",Original:"ì›ë³¸","Resize image":"사진 í¬ê¸° ì¡°ì ˆ","Resize image to %0":"ì‚¬ì§„ì˜ í¬ê¸°ë¥¼ %0으로 ì¡°ì ˆ","Resize image to the original size":"ì‚¬ì§„ì„ ì›ëž˜ í¬ê¸°ë¡œ ëŒë ¤ë†“기","Right aligned image":"오른쪽 ì •ë ¬","Side image":"본문 ì˜†ì— ë°°ì¹˜","Text alternative":"대체 문구",Update:"","Update image URL":"","Upload failed":"업로드 실패","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ko=n.ko||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"들여쓰기 줄ì´ê¸°","Increase indent":"들여쓰기 늘리기"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ko=n.ko||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"다운로드 가능","Edit link":"ë§í¬ 편집",Link:"ë§í¬","Link image":"사진 ë§í¬","Link URL":"ë§í¬ 주소","Open in a new tab":"새 íƒì—ì„œ 열기","Open link in new tab":"새 íƒì—ì„œ ë§í¬ 열기","This link has no URL":"ì´ ë§í¬ì—는 URLì´ ì—†ìŠµë‹ˆë‹¤.",Unlink:"ë§í¬ ì‚ì œ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.ko=e.ko||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"불릿 목ë¡","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"번호 목ë¡","Numbered list styles toolbar":"",Square:"","To-do List":"í™•ì¸ ëª©ë¡","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.ko=o.ko||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"ì„œì‹ ì§€ìš°ê¸°"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.ko=e.ko||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"",Dashed:"","Delete column":"","Delete row":"",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"","Header row":"",Height:"","Horizontal text alignment toolbar":"","Insert column left":"","Insert column right":"","Insert row above":"","Insert row below":"","Insert table":"í…Œì´ë¸” 삽입",Inset:"","Justify cell text":"","Merge cell down":"","Merge cell left":"","Merge cell right":"","Merge cell up":"","Merge cells":"",None:"",Outset:"",Padding:"",Ridge:"",Row:"","Select column":"","Select row":"",Solid:"","Split cell horizontally":"","Split cell vertically":"",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.ko=t.ko||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"특수 문ìž","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.ko=e.ko||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"0% / %1",Aquamarine:"ì—°í•œ ì²ë¡ìƒ‰",Black:"ê²€ì€ìƒ‰",Blue:"파랑색",Cancel:"취소","Dim grey":"진한 회색","Dropdown toolbar":"ë“œë¡ë‹¤ìš´ 툴바","Edit block":"편집 ì˜ì—","Editor toolbar":"ì—디터 툴바",Green:"ì´ˆë¡ìƒ‰",Grey:"회색","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"ì—°í•œ 파랑색","Light green":"ë°ì€ ì´ˆë¡ìƒ‰","Light grey":"ë°ì€ 회색",Next:"다ìŒ",Orange:"주황색",Previous:"ì´ì „",Purple:"ë³´ë¼ìƒ‰",Red:"빨간색",Redo:"다시 실행","Remove color":"색깔 ì œê±°","Restore default":"","Rich Text Editor":"리치 í…스트 편집기","Rich Text Editor, %0":"리치 í…스트 편집기, %0",Save:"ì €ìž¥","Select all":"ì „ì²´ ì„ íƒ","Show more items":"ë”보기",Turquoise:"ì²ë¡ìƒ‰",Undo:"실행 취소","Upload in progress":"업로드 진행 중",White:"í°ìƒ‰","Widget toolbar":"ìœ„ì ¯ 툴바",Yellow:"노랑색"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ku.js b/core/assets/vendor/ckeditor5/translations/ku.js new file mode 100644 index 000000000000..1a40202c83e9 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ku.js @@ -0,0 +1 @@ +!function(n){const i=n.ku=n.ku||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"بەهێڵکردنی ناورەڕاست","Align left":"بەهێڵکردنی Ú†Û•Ù¾","Align right":"بەهێڵکردنی ڕاست",Justify:"هاوستوونی","Text alignment":"ڕیززکردنی تێکست","Text alignment toolbar":"تووڵامرازی ڕیززکردنی تێکست"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ku=i.ku||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Ù‚Û•ÚµÛ•Ùˆ",Code:"کۆد",Italic:"لار",Strikethrough:"Ù‡ÛŽÚµ بەسەرداهاتوو",Subscript:"ژێرنووس",Superscript:"سەرنووس",Underline:"ژێرهێڵ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ku=i.ku||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"وتەی وەرگیراو"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.ku=n.ku||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"سەرنووسە هەڵبژێرە",Heading:"سەرنووسە","Heading 1":"سەرنووسەی 1","Heading 2":"سەرنووسەی 2","Heading 3":"سەرنووسەی 3","Heading 4":"سەرنووسەی 4","Heading 5":"سەرنووسەی 5","Heading 6":"سەرنووسەی 6",Paragraph:"پەراگراÙ","Type or paste your content here.":"بنووسە یاخوود ناوەڕۆکی کۆپیکراو لیڕە بلکێنە","Type your title":"نوسینی ناونیشان"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ku=i.ku||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Ù‡ÛŽÚµÛŒ ئاسۆیی"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.ku=e.ku||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"ناوەڕاستکراوی ÙˆÛŽÙ†Û•","Change image text alternative":"گۆڕینی جێگروەی تێکیسی ÙˆÛŽÙ†Û•","Enter image caption":"سەردێڕی ÙˆÛŽÙ†Û• دابنێ","Full size image":"Ù¾Ú• بەقەبارەی ÙˆÛŽÙ†Û•","Image resize list":"","Image toolbar":"تووڵامرازی ÙˆÛŽÙ†Û•","image widget":"وێدجیتی ÙˆÛŽÙ†Û•","In line":"",Insert:"","Insert image":"ÙˆÛŽÙ†Û• دابنێ","Insert image via URL":"","Left aligned image":"ڕیزکردنی ÙˆÛŽÙ†Û• بۆ لای Ú†Û•Ù¾",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"ڕیزکردنی ÙˆÛŽÙ†Û• بۆ لای ڕاست","Side image":"لای ÙˆÛŽÙ†Û•","Text alternative":"جێگرەوەی تێکست",Update:"","Update image URL":"","Upload failed":"بارکردنەکە سەرنەکەووت","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ku=n.ku||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"کەمکردنەوەی بۆشایی","Increase indent":"زیادکردنی بۆشایی"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ku=n.ku||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Downloadable","Edit link":"دەستکاری بەستەر",Link:"بەستەر","Link image":"","Link URL":"ناونیشانی بەستەر","Open in a new tab":"کردنەوەی Ù„Û• پەنجەرەیەکی نوێ","Open link in new tab":"کردنەوەی بەستەرەکە Ù„Û• پەڕەیەکی نوێ","This link has no URL":"ئەم بەستەرە ناونیشانی نیە",Unlink:"لابردنی بەستەر"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.ku=e.ku||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"لیستەی خاڵەیی","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"لیستەی ژمارەیی","Numbered list styles toolbar":"",Square:"","To-do List":"لیستەی کردن","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ku=i.ku||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"لابردنی شێواز"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.ku=e.ku||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"ستوون",Dashed:"","Delete column":"سڕینەوەی ستوون","Delete row":"سڕینەوەی ڕیز",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"ستوونی دەسپێک","Header row":"ڕیزی دەسپێک",Height:"","Horizontal text alignment toolbar":"","Insert column left":"دانانی ستوون Ù„Û• Ú†Û•Ù¾","Insert column right":"دانانی ستوون Ù„Û• ڕاست","Insert row above":"دانانی ڕیز Ù„Û• سەرەوە","Insert row below":"دانانی ڕیز Ù„Û• ژێرەوە","Insert table":"خشتە دابنێ",Inset:"","Justify cell text":"","Merge cell down":"تێکەڵکردنی خانەکان بەرەو ژێرەوە","Merge cell left":"تێکەڵکردنی خانەکان بەرەو Ú†Û•Ù¾","Merge cell right":"تێکەڵکردنی خانەکان بەرەو ڕاست","Merge cell up":"تێکەڵکردنی خانەکان بەرەو سەر","Merge cells":"تێکەڵکردنی خانەکان",None:"",Outset:"",Padding:"",Ridge:"",Row:"ڕیز","Select column":"","Select row":"",Solid:"","Split cell horizontally":"بەشکردنی خانەکان بە ئاسۆیی","Split cell vertically":"بەشکردنی خانەکان بە ئەستوونی",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"تووڵامرازی خشتە",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.ku=e.ku||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 Ù„Û• %1",Aquamarine:"شینی دەریایی",Black:"Ú•Û•Ø´",Blue:"شین",Cancel:"هەڵوەشاندنەوە","Dim grey":"ڕەساسی تاریک","Dropdown toolbar":"تووڵامرازی لیستەیی","Edit block":"دەستکاری بلۆک","Editor toolbar":"تووڵامرازی دەسکاریکەر",Green:"سەوز",Grey:"ڕەساسی","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"شینی ڕووناک","Light green":"سەوزی ڕووناک","Light grey":"ڕەساسی ڕووناک",Next:"دواتر",Orange:"پرتەقاڵی",Previous:"پێشتر",Purple:"مۆر",Red:"سور",Redo:"هەلگەڕاندنەوە","Remove color":"لابردنی Ú•Û•Ù†Ú¯","Restore default":"","Rich Text Editor":"سەرنوسەری دەقی بەپیت","Rich Text Editor, %0":"سەرنوسەری دەقی بەپیت, %0",Save:"پاشکەوتکردن","Show more items":"بڕگەی زیاتر نیشانبدە",Turquoise:"شینی ئاسمانی",Undo:"ÙˆÛ•Ú© خۆی Ù„ÛŽ بکەوە","Upload in progress":"بارکردنەکە Ù„Û• جێبەجێکردن دایە",White:"سپی","Widget toolbar":"تووڵامرازی ویدجێت",Yellow:"زەرد"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/lt.js b/core/assets/vendor/ckeditor5/translations/lt.js new file mode 100644 index 000000000000..4e31868fe8df --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/lt.js @@ -0,0 +1 @@ +!function(i){const t=i.lt=i.lt||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Centruoti","Align left":"Lygiuoti į kairÄ™","Align right":"Lygiuoti į deÅ¡inÄ™",Justify:"Lygiuoti per visÄ… plotį","Text alignment":"Teksto lygiavimas","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const a=i.lt=i.lt||{};a.dictionary=Object.assign(a.dictionary||{},{Bold:"ParyÅ¡kintas",Code:"Kodas",Italic:"Kursyvas",Strikethrough:"Perbrauktas",Subscript:"Žemiau",Superscript:"AukÅ¡Äiau",Underline:"Pabrauktas"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const i=t.lt=t.lt||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Citata"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const t=a.lt=a.lt||{};t.dictionary=Object.assign(t.dictionary||{},{"Choose heading":"Pasirinkite antraÅ¡tÄ™",Heading:"AntraÅ¡tÄ—","Heading 1":"AntraÅ¡tÄ— 1","Heading 2":"AntraÅ¡tÄ— 2","Heading 3":"AntraÅ¡tÄ— 3","Heading 4":"AntraÅ¡tÄ— 4","Heading 5":"AntraÅ¡tÄ— 5","Heading 6":"AntraÅ¡tÄ— 6",Paragraph:"Paragrafas","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.lt=e.lt||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Vaizdas centre","Change image text alternative":"Pakeisti vaizdo alternatyvųjį tekstÄ…","Enter image caption":"Ä®veskite vaizdo antraÅ¡tÄ™","Full size image":"Pilno dydžio vaizdas","Image resize list":"","Image toolbar":"","image widget":"vaizdų valdiklis","In line":"",Insert:"","Insert image":"Ä®terpti vaizdÄ…","Insert image via URL":"","Left aligned image":"Vaizdas kairÄ—je",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Vaizdas deÅ¡inÄ—je","Side image":"Vaizdas Å¡one","Text alternative":"Alternatyvusis tekstas",Update:"","Update image URL":"","Upload failed":"Ä®kelti nepavyko","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.lt=i.lt||{};n.dictionary=Object.assign(n.dictionary||{},{"Decrease indent":"Sumažinti atitraukimÄ…","Increase indent":"Padidinti atitraukimÄ…"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.lt=n.lt||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"Keisti nuorodÄ…",Link:"PridÄ—ti nuorodÄ…","Link image":"","Link URL":"Nuorodos URL","Open in a new tab":"","Open link in new tab":"Atidaryti nuorodÄ… naujame skirtuke","This link has no URL":"Å i nuorda neturi URL",Unlink:"PaÅ¡alinti nuorodÄ…"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.lt=e.lt||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"SÄ…raÅ¡as","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Numeruotas rÄ…raÅ¡as","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.lt=i.lt||{};t.dictionary=Object.assign(t.dictionary||{},{"Remove Format":"Naikinti formatavimÄ…"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.lt=e.lt||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Stulpelis",Dashed:"","Delete column":"IÅ¡trinti stulpelį","Delete row":"IÅ¡trinti eilutÄ™",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"AntraÅ¡tÄ—s stulpelis","Header row":"AntraÅ¡tÄ—s eilutÄ—",Height:"","Horizontal text alignment toolbar":"","Insert column left":"Ä®terpti stulpelį kairÄ—je","Insert column right":"Ä®terpti stulpelį deÅ¡inÄ—je","Insert row above":"Ä®terpti eilutÄ™ aukÅ¡Äiau","Insert row below":"Ä®terpti eilutÄ™ žemiau","Insert table":"Ä®terpti lentelÄ™",Inset:"","Justify cell text":"","Merge cell down":"Prijungti langelį apaÄioje","Merge cell left":"Prijungti langelį kairÄ—je","Merge cell right":"Prijungti langelį deÅ¡inÄ—je","Merge cell up":"Prijungti langelį virÅ¡uje","Merge cells":"Sujungti langelius",None:"",Outset:"",Padding:"",Ridge:"",Row:"EilutÄ—","Select column":"","Select row":"",Solid:"","Split cell horizontally":"Padalinti langelį horizontaliai","Split cell vertically":"Padalinti langelį vertikaliai",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.lt=i.lt||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"Aquamarine",Black:"Juoda",Blue:"MÄ—lyna",Cancel:"AtÅ¡aukti","Dim grey":"PilkÅ¡va","Dropdown toolbar":"","Edit block":"Redaguoti blokÄ…","Editor toolbar":"",Green:"Žalia",Grey:"Pilka","Light blue":"Å viesiai mÄ—lyna","Light green":"Å viesiai žalia","Light grey":"Å viesiai pilka",Next:"",Orange:"OranžinÄ—",Previous:"",Purple:"VioletinÄ—",Red:"Raudona",Redo:"Pirmyn","Remove color":"PaÅ¡alinti spalvÄ…","Restore default":"","Rich Text Editor":"RaiÅ¡kiojo teksto redaktorius","Rich Text Editor, %0":"RaiÅ¡kiojo teksto redaktorius, %0",Save:"IÅ¡saugoti","Show more items":"",Turquoise:"Turkio",Undo:"Atgal","Upload in progress":"Ä®kelima",White:"Balta",Yellow:"Geltona"}),o.getPluralForm=function(i){return i%10==1&&(i%100>19||i%100<11)?0:i%10>=2&&i%10<=9&&(i%100>19||i%100<11)?1:i%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/lv.js b/core/assets/vendor/ckeditor5/translations/lv.js new file mode 100644 index 000000000000..344d7527afe0 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/lv.js @@ -0,0 +1 @@ +!function(i){const n=i.lv=i.lv||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"CentrÄ“t","Align left":"Pa kreisi","Align right":"Pa labi",Justify:"IzlÄ«dzinÄt abas malas","Text alignment":"Teksta izlÄ«dzinÄÅ¡ana","Text alignment toolbar":"Teksta lÄ«dzinÄÅ¡anas rÄ«kjosla"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(s){const t=s.lv=s.lv||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Trekns",Code:"Kods",Italic:"KursÄ«vs",Strikethrough:"NosvÄ«trots",Subscript:"ApakÅ¡raksts",Superscript:"AugÅ¡raksts",Underline:"PasvÄ«trots"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.lv=i.lv||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"CitÄts"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(s){const i=s.lv=s.lv||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose heading":"IzvÄ“lÄ“ties virsrakstu",Heading:"Virsraksts","Heading 1":"Virsraksts 1","Heading 2":"Virsraksts 2","Heading 3":"Virsraksts 3","Heading 4":"Virsraksts 4","Heading 5":"Virsraksts 5","Heading 6":"Virsraksts 6",Paragraph:"PagrÄfs","Type or paste your content here.":"Rakstiet vai ielÄ«mÄ“jiet saturu Å¡eit.","Type your title":"Ievadiet virsrakstu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.lv=i.lv||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"HorizontÄli atdaloÅ¡Ä lÄ«nija"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const e=t.lv=t.lv||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"","Centered image":"CentrÄ“ts attÄ“ls","Change image text alternative":"MainÄ«t attÄ“la alternatÄ«vo tekstu","Enter image caption":"Ievadiet attÄ“la parakstu","Full size image":"Pilna izmÄ“ra attÄ“ls","Image resize list":"","Image toolbar":"AttÄ“lu rÄ«kjosla","image widget":"attÄ“la sÄ«krÄ«ks","In line":"",Insert:"","Insert image":"Ievietot attÄ“lu","Insert image via URL":"","Left aligned image":"Pa kreisi lÄ«dzinÄts attÄ“ls",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Pa labi lÄ«dzinÄts attÄ“ls","Side image":"SÄnÄ novietots attÄ“ls","Text alternative":"AlternatÄ«vais teksts",Update:"","Update image URL":"","Upload failed":"AugÅ¡upielÄde neizdevusies","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.lv=i.lv||{};n.dictionary=Object.assign(n.dictionary||{},{"Decrease indent":"SamazinÄt atkÄpi","Increase indent":"PalielinÄt atkÄpi"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.lv=i.lv||{};n.dictionary=Object.assign(n.dictionary||{},{Downloadable:"LejupielÄdÄ“jams","Edit link":"Labot Saiti",Link:"Saite","Link image":"","Link URL":"Saites URL","Open in a new tab":"AtvÄ“rt jaunÄ cilnÄ“","Open link in new tab":"AtvÄ“rt saiti jaunÄ cilnÄ“","This link has no URL":"Saitei nav norÄdÄ«ts URL",Unlink:"Noņemt Saiti"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.lv=e.lv||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"NenumurÄ“ts Saraksts","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"NumurÄ“ts Saraksts","Numbered list styles toolbar":"",Square:"","To-do List":"To-do Saraksts","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.lv=o.lv||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"Noņemt formatÄ“jumu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.lv=e.lv||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Kolonna",Dashed:"","Delete column":"DzÄ“st kolonnu","Delete row":"DzÄ“st rindu",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Å Ä« kolonna ir galvene","Header row":"Å Ä« rinda ir galvene",Height:"","Horizontal text alignment toolbar":"","Insert column left":"Ievietot kolonnu pa kreisi","Insert column right":"Ievietot kolonnu pa labi","Insert row above":"Ievietot rindu virs","Insert row below":"Ievietot rindu zem","Insert table":"Ievietot tabulu",Inset:"","Justify cell text":"","Merge cell down":"Apvienot Å¡Å«nas uz leju","Merge cell left":"Apvienot Å¡Å«nas pa kreisi","Merge cell right":"Apvienot Å¡Å«nas pa labi","Merge cell up":"Apvienot Å¡Å«nas uz augÅ¡u","Merge cells":"Apvienot Å¡Å«nas",None:"",Outset:"",Padding:"",Ridge:"",Row:"Rinda","Select column":"","Select row":"",Solid:"","Split cell horizontally":"AtdalÄ«t Å¡Å«nu horizontÄli","Split cell vertically":"AtdalÄ«t Å¡Å«nu vertikÄli",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"Tabulas rÄ«kjosla",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.lv=e.lv||{};a.dictionary=Object.assign(a.dictionary||{},{"%0 of %1":"%0 no %1",Aquamarine:"AkvamarÄ«ns",Black:"Melns",Blue:"Zils",Cancel:"Atcelt","Dim grey":"BlÄvi pelÄ“ks","Dropdown toolbar":"Papildus izvÄ“lnes rÄ«kjosla","Edit block":"Labot bloku","Editor toolbar":"Redaktora rÄ«kjosla",Green:"Zaļš",Grey:"PelÄ“ks","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"GaiÅ¡i zils","Light green":"GaiÅ¡i zaļš","Light grey":"GaiÅ¡i pelÄ“ks",Next:"NÄkamÄ",Orange:"Oranžs",Previous:"IepriekÅ¡Ä“jÄ",Purple:"Violets",Red:"Sarkans",Redo:"Uz priekÅ¡u","Remove color":"Noņemt krÄsu","Restore default":"","Rich Text Editor":"BagÄtinÄtais Teksta Redaktors","Rich Text Editor, %0":"BagÄtinÄtais Teksta Redaktors, %0",Save:"SaglabÄt","Show more items":"ParÄdÄ«t vairÄk vienumus",Turquoise:"TirkÄ«za",Undo:"Atsaukt","Upload in progress":"Notiek augÅ¡upielÄde",White:"Balts","Widget toolbar":"SÄ«krÄ«ku rÄ«kjosla",Yellow:"Dzeltens"}),a.getPluralForm=function(e){return e%10==1&&e%100!=11?0:0!=e?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/nb.js b/core/assets/vendor/ckeditor5/translations/nb.js new file mode 100644 index 000000000000..575e55bfd0d8 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/nb.js @@ -0,0 +1 @@ +!function(t){const n=t.nb=t.nb||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Midstill","Align left":"Venstrejuster","Align right":"Høyrejuster",Justify:"Blokkjuster","Text alignment":"Tekstjustering","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.nb=n.nb||{};i.dictionary=Object.assign(i.dictionary||{},{Bold:"Fet",Code:"Kode",Italic:"Kursiv",Strikethrough:"Gjennomstreking",Subscript:"",Superscript:"",Underline:"Understreking"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.nb=n.nb||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Blokksitat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.nb=e.nb||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose heading":"Velg overskrift",Heading:"Overskrift","Heading 1":"Overskrift 1","Heading 2":"Overskrift 2","Heading 3":"Overskrift 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"Avsnitt","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.nb=e.nb||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Midtstilt bilde","Change image text alternative":"Endre tekstalternativ for bilde","Enter image caption":"Skriv inn bildetekst","Full size image":"Bilde i full størrelse","Image resize list":"","Image toolbar":"","image widget":"Bilde-widget","In line":"",Insert:"","Insert image":"Sett inn bilde","Insert image via URL":"","Left aligned image":"Venstrejustert bilde",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Høyrejustert bilde","Side image":"Sidebilde","Text alternative":"Tekstalternativ for bilde",Update:"","Update image URL":"","Upload failed":"Opplasting feilet","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.nb=n.nb||{};e.dictionary=Object.assign(e.dictionary||{},{Downloadable:"","Edit link":"Rediger lenke",Link:"Lenke","Link image":"","Link URL":"URL for lenke","Open in a new tab":"","Open link in new tab":"Ã…pne lenke i ny fane","This link has no URL":"Denne lenken har ingen URL",Unlink:"Fjern lenke"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.nb=e.nb||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"Punktmerket liste","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Nummerert liste","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.nb=e.nb||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Kolonne",Dashed:"","Delete column":"Slett kolonne","Delete row":"Slett rad",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Overskriftkolonne","Header row":"Overskriftrad",Height:"","Horizontal text alignment toolbar":"","Insert column left":"","Insert column right":"","Insert row above":"Sett inn rad over","Insert row below":"Sett inn rad under","Insert table":"Sett inn tabell",Inset:"","Justify cell text":"","Merge cell down":"SlÃ¥ sammen celle ned","Merge cell left":"SlÃ¥ sammen celle til venstre","Merge cell right":"SlÃ¥ sammen celle til høyre","Merge cell up":"SlÃ¥ sammen celle opp","Merge cells":"SlÃ¥ sammen celler",None:"",Outset:"",Padding:"",Ridge:"",Row:"Rad","Select column":"","Select row":"",Solid:"","Split cell horizontally":"Del celle horisontalt","Split cell vertically":"Del celle vertikalt",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.nb=e.nb||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Avbryt","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Gjør om","Remove color":"","Restore default":"","Rich Text Editor":"Rikteksteditor","Rich Text Editor, %0":"Rikteksteditor, %0",Save:"Lagre","Show more items":"",Turquoise:"",Undo:"Angre","Upload in progress":"Opplasting pÃ¥gÃ¥r",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ne.js b/core/assets/vendor/ckeditor5/translations/ne.js new file mode 100644 index 000000000000..03346b74b69d --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ne.js @@ -0,0 +1 @@ +!function(n){const i=n.ne=n.ne||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"केनà¥à¤¦à¥à¤° पङà¥à¤•à¥à¤¤à¤¿à¤¬à¤¦à¥à¤§ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Align left":"बायाठपङà¥à¤•à¥à¤¤à¤¿à¤¬à¤¦à¥à¤§ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Align right":"दायाठपङà¥à¤•à¥à¤¤à¤¿à¤¬à¤¦à¥à¤§ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥",Justify:"जसà¥à¤Ÿà¤¿à¤«à¤¾à¤‡ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Text alignment":"पाठसंरेखण","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ne=i.ne||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"बोलà¥à¤¡",Code:"कोड",Italic:"इटालिक",Strikethrough:"सà¥à¤Ÿà¥à¤°à¤¾à¤‡à¤•à¤¥à¥à¤°à¥‚",Subscript:"सबसà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ",Superscript:"सà¥à¤ªà¤°à¤¸à¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ",Underline:"रेखांकन"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ne=n.ne||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"बà¥à¤²à¤• उदà¥à¤§à¤°à¤£"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.ne=n.ne||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"शीरà¥à¤·à¤• छनौट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥",Heading:"शीरà¥à¤·à¤•","Heading 1":"शीरà¥à¤·à¤•-à¤à¤•","Heading 2":"शीरà¥à¤·à¤• २","Heading 3":"शीरà¥à¤·à¤• ३","Heading 4":"शीरà¥à¤·à¤• ४","Heading 5":"शीरà¥à¤·à¤• ५","Heading 6":"शीरà¥à¤·à¤• ६",Paragraph:"अनà¥à¤šà¥à¤›à¥‡à¤¦","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.ne=e.ne||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"केनà¥à¤¦à¥à¤°à¤¿à¤¤ तसà¥à¤µà¥€à¤°","Change image text alternative":"तसà¥à¤µà¥€à¤° पाठविकलà¥à¤ª परिवरà¥à¤¤à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Enter image caption":"तसà¥à¤µà¥€à¤° कà¥à¤¯à¤¾à¤ªà¥à¤¶à¤¨ पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Full size image":"पूरà¥à¤£ आकार तसà¥à¤µà¥€à¤°","Image resize list":"","Image toolbar":"","image widget":"तसà¥à¤µà¥€à¤° विजेट","In line":"",Insert:"","Insert image":"तसà¥à¤µà¥€à¤° समà¥à¤®à¤¿à¤²à¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Insert image via URL":"","Left aligned image":"बायाठपङà¥à¤•à¥à¤¤à¤¿ तसà¥à¤µà¥€à¤°",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"दायाठपङà¥à¤•à¥à¤¤à¤¿à¤¬à¤¦à¥à¤§ तसà¥à¤µà¥€à¤°","Side image":"साइड तसà¥à¤µà¥€à¤°","Text alternative":"पाठविकलà¥à¤ª",Update:"","Update image URL":"","Upload failed":"अपलोड असफल à¤à¤¯à¥‹","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.ne=n.ne||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"इनà¥à¤¡à¥‡à¤¨à¥à¤Ÿ घटाउन","Increase indent":"इनà¥à¤¡à¥‡à¤¨à¥à¤Ÿ बढाउन"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ne=n.ne||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"डाउनलोड योगà¥à¤¯","Edit link":"लिङà¥à¤• समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥",Link:"लिङà¥à¤•","Link image":"","Link URL":"लिङà¥à¤• यूआरà¤à¤²","Open in a new tab":"नयाठटà¥à¤¯à¤¾à¤¬à¤®à¤¾ खोलà¥à¤¨","Open link in new tab":"नयाठटà¥à¤¯à¤¾à¤¬à¤®à¤¾ लिङà¥à¤• खोलà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","This link has no URL":"यो लिङà¥à¤•à¤¸à¤à¤— यूआरà¤à¤² छैन",Unlink:"अनलिङà¥à¤• गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.ne=e.ne||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"गोली चिनà¥à¤¹ अङà¥à¤•à¤¿à¤¤ सूची","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"सूचीबदà¥à¤§ सूची","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ne=n.ne||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"ढाà¤à¤šà¤¾ हटाउनà¥à¤¹à¥‹à¤¸à¥"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.ne=e.ne||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"सà¥à¤¤à¤®à¥à¤",Dashed:"","Delete column":"सà¥à¤¤à¤®à¥à¤ मेटाउनà¥à¤¹à¥‹à¤¸à¥","Delete row":"पङà¥à¤•à¥à¤¤à¤¿ मेटाउनà¥à¤¹à¥‹à¤¸à¥",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"हेडर सà¥à¤¤à¤®à¥à¤","Header row":"हेडर पङà¥à¤•à¥à¤¤à¤¿",Height:"","Horizontal text alignment toolbar":"","Insert column left":"बायाठसà¥à¤¤à¤®à¥à¤ समà¥à¤®à¤¿à¤²à¤¿à¤¤ गरà¥à¤¨","Insert column right":"दायाठसà¥à¤¤à¤®à¥à¤ समà¥à¤®à¤¿à¤²à¤¿à¤¤ गरà¥à¤¨","Insert row above":"माथि पंकà¥à¤¤à¤¿ समà¥à¤®à¤¿à¤²à¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Insert row below":"तल पंकà¥à¤¤à¤¿ समà¥à¤®à¤¿à¤²à¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Insert table":"तालिका समà¥à¤®à¤¿à¤²à¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥",Inset:"","Justify cell text":"","Merge cell down":"ककà¥à¤· तल मरà¥à¤œ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Merge cell left":"सेल बायाठमरà¥à¤œ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Merge cell right":"दायाठककà¥à¤· मरà¥à¤œ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Merge cell up":"ककà¥à¤· माथि मरà¥à¤œ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Merge cells":"ककà¥à¤· मरà¥à¤œ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥",None:"",Outset:"",Padding:"",Ridge:"",Row:"पङà¥à¤•à¥à¤¤à¤¿","Select column":"","Select row":"",Solid:"","Split cell horizontally":"कà¥à¤·à¥ˆà¤¤à¤¿à¤œ ककà¥à¤· विà¤à¤¾à¤œà¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Split cell vertically":"ठाडो ककà¥à¤· विà¤à¤¾à¤œà¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.ne=e.ne||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"०% मधà¥à¤¯à¥‡ १%",Aquamarine:"अवà¥à¤•à¤µà¤¾à¤®à¤°à¤¿à¤¨",Black:"कालो",Blue:"निलो",Cancel:"रदà¥à¤¦ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Dim grey":"धमिलो खैरो","Dropdown toolbar":"","Edit block":"बà¥à¤²à¤• समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨","Editor toolbar":"",Green:"हरियो",Grey:"खैरो","Light blue":"हलà¥à¤•à¤¾ निलो","Light green":"हलà¥à¤•à¤¾ हरियो","Light grey":"हलà¥à¤•à¤¾ खैरो",Next:"अरà¥à¤•à¥‹",Orange:"सà¥à¤¨à¥à¤¤à¤²à¤¾ रंग",Previous:"अघिलà¥à¤²à¥‹",Purple:"बैंगनी रंग",Red:"रातो",Redo:"रिडà¥","Remove color":"रंग हटाउन","Restore default":"","Rich Text Editor":"धनी पाठसमà¥à¤ªà¤¾à¤¦à¤•","Rich Text Editor, %0":"धनी पाठसमà¥à¤ªà¤¾à¤¦à¤•, %0",Save:"सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥","Show more items":"",Turquoise:"तà¥à¤°à¤•à¥‹à¤‡à¤¸",Undo:"पूरà¥à¤µà¤µà¤¤","Upload in progress":"अपलोड हà¥à¤¦à¥ˆà¤›",White:"सेतो",Yellow:"पहेंलो"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/nl.js b/core/assets/vendor/ckeditor5/translations/nl.js new file mode 100644 index 000000000000..221a417e0b7f --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/nl.js @@ -0,0 +1 @@ +!function(i){const n=i.nl=i.nl||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Midden uitlijnen","Align left":"Links uitlijnen","Align right":"Rechts uitlijnen",Justify:"Volledig uitlijnen","Text alignment":"Tekst uitlijning","Text alignment toolbar":"Tekst uitlijning werkbalk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.nl=i.nl||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Vet",Code:"Code",Italic:"Cursief",Strikethrough:"Doorhalen",Subscript:"Subscript",Superscript:"Superscript",Underline:"Onderlijnen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.nl=n.nl||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Blok citaat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const n=o.nl=o.nl||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose heading":"Kies kop",Heading:"Koppen","Heading 1":"Kop 1","Heading 2":"Kop 2","Heading 3":"Kop 3","Heading 4":"Kop 4","Heading 5":"Kop 5","Heading 6":"Kop 6",Paragraph:"Paragraaf","Type or paste your content here.":"Voer of plak uw inhoud in.","Type your title":"Voor uw titel in"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.nl=n.nl||{};i.dictionary=Object.assign(i.dictionary||{},{"Horizontal line":"Horizontale lijn"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.nl=e.nl||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Gecentreerde afbeelding","Change image text alternative":"Verander alt-tekst van de afbeelding","Enter image caption":"Typ een afbeeldingsbijschrift","Full size image":"Afbeelding op volledige grootte","Image resize list":"","Image toolbar":"Afbeeldingswerkbalk","image widget":"afbeeldingswidget","In line":"",Insert:"Invoegen","Insert image":"Afbeelding toevoegen","Insert image via URL":"","Left aligned image":"Links uitgelijnde afbeelding",Original:"Origineel","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Rechts uitgelijnde afbeelding","Side image":"Afbeelding naast tekst","Text alternative":"Alt-tekst",Update:"","Update image URL":"","Upload failed":"Uploaden afbeelding mislukt","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.nl=n.nl||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Minder inspringen","Increase indent":"Inspringen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const n=a.nl=a.nl||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose language":"Kies taal",Language:"Taal","Remove language":"Taal verwijderen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.nl=n.nl||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Downloadbaar","Edit link":"Bewerk link",Link:"Link","Link image":"Link afbeelding","Link URL":"Link URL","Open in a new tab":"Open een nieuw tabblad","Open link in new tab":"Open link in nieuw tabblad","This link has no URL":"Deze link heeft geen URL",Unlink:"Verwijder link"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.nl=e.nl||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Ongenummerde lijst","Bulleted list styles toolbar":"",Circle:"Cirkel",Decimal:"Decimaal","Decimal with leading zero":"",Disc:"Schijf","Lower-latin":"","Lower–roman":"","Numbered List":"Genummerde lijst","Numbered list styles toolbar":"",Square:"Vierkant","To-do List":"To-do lijst","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.nl=n.nl||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"Verwijder format"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.nl=n.nl||{};i.dictionary=Object.assign(i.dictionary||{},{Source:"Bron"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.nl=e.nl||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"Tekst in de cel centreren","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"Uitlijning",Background:"Achtergrond",Border:"Rand","Cell properties":"Celeigenschappen","Center table":"Tabel centreren",Color:"Kleur","Color picker":"",Column:"Kolom",Dashed:"","Delete column":"Verwijder kolom","Delete row":"Verwijder rij",Dimensions:"",Dotted:"Stippellijn",Double:"Dubbel","Enter table caption":"",Groove:"","Header column":"Titel kolom","Header row":"Titel rij",Height:"Hoogte","Horizontal text alignment toolbar":"","Insert column left":"Kolom links invoegen","Insert column right":"Kolom rechts invoegen","Insert row above":"Rij hierboven invoegen","Insert row below":"Rij hieronder invoegen","Insert table":"Tabel invoegen",Inset:"","Justify cell text":"","Merge cell down":"Cel hieronder samenvoegen","Merge cell left":"Cel hiervoor samenvoegen","Merge cell right":"Cel hierna samenvoegen","Merge cell up":"Cel hierboven samenvoegen","Merge cells":"Cellen samenvoegen",None:"Geen",Outset:"",Padding:"",Ridge:"",Row:"Rij","Select column":"Selecteer kolom","Select row":"Selecteer rij",Solid:"","Split cell horizontally":"Splits cel horizontaal","Split cell vertically":"Splits cel verticaal",Style:"Stijl","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"Tabeleigenschappen","Table toolbar":"Tabel werkbalk",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'De kleur in niet correct, probeer "#FF0000" of "rgb(255,0,0)" of "red".','The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:"Breedte"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.nl=n.nl||{};i.dictionary=Object.assign(i.dictionary||{},{"HTML object":"HTML object"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.nl=e.nl||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Bijna gelijk aan",Angle:"Hoek","Approximately equal to":"Ongeveer gelijk aan","Asterisk operator":"Asterisk teken","Austral sign":"Austral teken","back with leftwards arrow above":"back met linkswijzende pijl erboven","Bitcoin sign":"Bitcoin teken","Cedi sign":"Cedi teken","Cent sign":"Cent teken","Character categories":"Karakter categorieën","Colon sign":"Colón teken","Contains as member":"Bevat als onderdeel","Copyright sign":"","Cruzeiro sign":"Cruzeiro teken","Currency sign":"Valuta teken","Degree sign":"Graden teken","Division sign":"Deel teken","Dollar sign":"Dollar teken","Dong sign":"Dong teken","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"benedenwijzende pijl naar streep","downwards dashed arrow":"benedenwijzende gestreepte pijl","downwards double arrow":"benedenwijzende dubbele pijl","Drachma sign":"Drachme teken","Element of":"Onderdeel van","Em dash":"Kastlijntje","Empty set":"Lege set","En dash":"Half kastlijntje","end with leftwards arrow above":"end met linkswijzende pijl erboven","Euro sign":"Euro teken","Euro-currency sign":"Euro-valuta teken","Exclamation question mark":"","For all":"Voor alles","Fraction slash":"Breuk teken","French franc sign":"Franse frank teken","German penny sign":"Duitse penny teken","Greater-than or equal to":"Groter-dan of gelijk aan","Greater-than sign":"Groter-dan teken","Guarani sign":"Guarani teken","Horizontal ellipsis":"","Hryvnia sign":"Grivna teken","Identical to":"Gelijk aan","Indian rupee sign":"Indiaanse roepie teken",Infinity:"Infinity",Integral:"Integraal",Intersection:"Kruispunt","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"Kip teken","Latin capital letter a with breve":"Latijnse hoofdletter a met breve","Latin capital letter a with macron":"Latijnse hoofdletter a met macron","Latin capital letter a with ogonek":"Latijnse hoofdletter a met ogonek","Latin capital letter c with acute":"Latijnse hoofdletter c met acute","Latin capital letter c with caron":"Latijnse hoofdletter c met caron","Latin capital letter c with circumflex":"Latijnse hoofdletter c met circumflex","Latin capital letter c with dot above":"Latijnse hoofdletter c met punt erboven","Latin capital letter d with caron":"Latijnse hoofdletter d met caron","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"Latijnse kleine letter a met breve","Latin small letter a with macron":"Latijnse kleine letter a met macron","Latin small letter a with ogonek":"Latijnse kleine letter a met ogonek","Latin small letter c with acute":"Latijnse kleine letter c met acute","Latin small letter c with caron":"Latijnse kleine letter c met caron","Latin small letter c with circumflex":"Latijnse kleine letter c met circumflex","Latin small letter c with dot above":"Latijnse kleine letter met punt erboven","Latin small letter d with caron":"Latijnse kleine letter d met caron","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"Latijnse kleine letter f met hoek","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"linkswijzende pijl naar streep","leftwards dashed arrow":"linkswijzende gestreepte pijl","leftwards double arrow":"linkswijzende dubbele pijl","Less-than or equal to":"Kleiner-dan of gelijk aan","Less-than sign":"Kleiner-dan teken","Lira sign":"Lira teken","Livre tournois sign":"Livre tournois teken","Logical and":"Logische en","Logical or":"Logische of",Macron:"Makron","Manat sign":"Manat teken","Mill sign":"Mill teken","Minus sign":"Min teken","Multiplication sign":"Vermenigvuldigingsteken","N-ary product":"N-ary product","N-ary summation":"N-ary sommatie",Nabla:"Nabla","Naira sign":"Naira teken","New sheqel sign":"Nieuwe sjekel teken","Nordic mark sign":"Noorse mark teken","Not an element of":"Geen onderdeel van","Not equal to":"Niet gelijk aan","Not sign":"Niet teken","on with exclamation mark with left right arrow above":"on met uitroepteken met links rechts pijl erboven",Overline:"Overline","Paragraph sign":"Paragraaf teken","Partial differential":"Gedeeltelijk differentieel","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"Peseta teken","Peso sign":"Peso teken","Plus-minus sign":"Plus-minus teken","Pound sign":"Pond teken","Proportional to":"Verhoudend tot","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"Omgekeerd paragraaf teken","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"rechtswijzende pijl naar streep","rightwards dashed arrow":"rechtswijzende gestreepte pijl","rightwards double arrow":"rechtswijzende dubbele pijl","Ruble sign":"Roebel teken","Rupee sign":"Roepie teken","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"soon met rechtswijzende pijl erboven","Special characters":"Speciale karakters","Spesmilo sign":"Spesmilo teken","Square root":"Vierkantswortel","Tenge sign":"Tenge teken","There exists":"Er bestaat","Tilde operator":"Tidle teken","top with upwards arrow above":"top met bovenwijzende pijl erboven","Trade mark sign":"","Tugrik sign":"Tugrik teken","Turkish lira sign":"Turkse lira teken","Two dot leader":"",Union:"Unie","up down arrow with base":"boven beneden pijl met streep","upwards arrow to bar":"bovenwijzende pijl naar streep","upwards dashed arrow":"bovenwijzende gestreepte pijl","upwards double arrow":"bovenwijzende dubbele pijl","Vulgar fraction one half":"Gewone breuk een half","Vulgar fraction one quarter":"Gewone breuk een kwart","Vulgar fraction three quarters":"Gewone breuk driekwart","Won sign":"Won teken","Yen sign":"Yen teken"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.nl=e.nl||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"0% van 1%",Aquamarine:"Aquamarijn",Black:"Zwart",Blue:"Blauw",Cancel:"Annuleren","Dim grey":"Gedimd grijs","Dropdown toolbar":"Drop-down werkbalk","Edit block":"Blok aanpassen","Editor toolbar":"Editor welkbalk",Green:"Groen",Grey:"Grijs","Insert paragraph after block":"Voeg paragraaf toe na blok","Insert paragraph before block":"Voeg paragraaf toe voor blok","Light blue":"Lichtblauw","Light green":"Lichtgroen","Light grey":"Lichtgrijs",Next:"Volgende",Orange:"Oranje",Previous:"Vorige",Purple:"Paars",Red:"Rood",Redo:"Opnieuw","Remove color":"Verwijder kleur","Restore default":"Standaardinstellingen terugzetten","Rich Text Editor":"Tekstbewerker","Rich Text Editor, %0":"Tekstbewerker, 0%",Save:"Opslaan","Select all":"Selecteer alles","Show more items":"Meer items weergeven",Turquoise:"Turquoise",Undo:"Ongedaan maken","Upload in progress":"Bezig met uploaden",White:"Wit","Widget toolbar":"Widget werkbalk",Yellow:"Geel"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/no.js b/core/assets/vendor/ckeditor5/translations/no.js new file mode 100644 index 000000000000..f6e1e70875de --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/no.js @@ -0,0 +1 @@ +!function(t){const n=t.no=t.no||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Midtstill","Align left":"Venstrejuster","Align right":"Høyrejuster",Justify:"Blokkjuster","Text alignment":"Tekstjustering","Text alignment toolbar":"Verktøylinje for tekstjustering"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const e=t.no=t.no||{};e.dictionary=Object.assign(e.dictionary||{},{Bold:"Fet",Code:"Kode",Italic:"Kursiv",Strikethrough:"Gjennomstreket",Subscript:"Senket skrift",Superscript:"Hevet skrift",Underline:"Understreket"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const n=o.no=o.no||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Blokksitat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const e=i.no=i.no||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Velg overskrift",Heading:"Overskrift","Heading 1":"Overskrift 1","Heading 2":"Overskrift 2","Heading 3":"Overskrift 3","Heading 4":"Overskrift 4","Heading 5":"Overskrift 5","Heading 6":"Overskrift 6",Paragraph:"Avsnitt","Type or paste your content here.":"Skriv eller lim inn ditt innhold her","Type your title":"Skriv inn tittel"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.no=n.no||{};i.dictionary=Object.assign(i.dictionary||{},{"Horizontal line":"Horisontal linje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.no=e.no||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Midtstilt bilde","Change image text alternative":"Endre tekstalternativ til bildet","Enter image caption":"Skriv inn bildetekst","Full size image":"Bilde i full størrelse","Image resize list":"","Image toolbar":"Verktøylinje for bilde","image widget":"Bilde-widget","In line":"",Insert:"","Insert image":"Sett inn bilde","Insert image via URL":"","Left aligned image":"Venstrejustert bilde",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Høyrejustert bilde","Side image":"Sidestilt bilde","Text alternative":"Tekstalternativ",Update:"","Update image URL":"","Upload failed":"Kunne ikke laste opp","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.no=n.no||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Reduser innrykk","Increase indent":"Øk innrykk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.no=n.no||{};e.dictionary=Object.assign(e.dictionary||{},{Downloadable:"Nedlastbar","Edit link":"Rediger lenke",Link:"Lenke","Link image":"","Link URL":"Lenke-URL","Open in a new tab":"Ã…pne i ny fane","Open link in new tab":"Ã…pne lenke i ny fane","This link has no URL":"Denne lenken mangler en URL",Unlink:"Fjern lenke"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.no=e.no||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Punktliste","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Nummerert liste","Numbered list styles toolbar":"",Square:"","To-do List":"Oppgaveliste","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.no=n.no||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"Fjern formatering"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.no=e.no||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"Juster celletekst til bunn ","Align cell text to the center":"Juster celletekst til midten ","Align cell text to the left":"Juster celletekst til venstre ","Align cell text to the middle":"Juster celletekst til midten","Align cell text to the right":"Juster celletekst til høyre ","Align cell text to the top":"Juster celletekst til topp","Align table to the left":"Juster tabell til venstre ","Align table to the right":"Juster tabell til høyre ",Alignment:"Justering",Background:"Bakgrunn ",Border:"Kantlinje ","Cell properties":"Celleegenskaper ","Center table":"Sentrer tabell ",Color:"Farge","Color picker":"Fargevalg ",Column:"Kolonne",Dashed:"Stiplet","Delete column":"Slett kolonne","Delete row":"Slett rad",Dimensions:"Dimensjoner",Dotted:"Stiplede",Double:"Dobbel ","Enter table caption":"",Groove:"Grov","Header column":"Overskriftkolonne","Header row":"Overskriftrad",Height:"Høyde","Horizontal text alignment toolbar":"Verktøylinje for justering av tekst horisontalt ","Insert column left":"Sett inn kolonne til venstre","Insert column right":"Sett inn kolonne til høyre","Insert row above":"Sett inn rad over","Insert row below":"Sett inn rad under","Insert table":"Sett inn tabell",Inset:"Innover","Justify cell text":"Rett celletekst ","Merge cell down":"SlÃ¥ sammen celle under","Merge cell left":"SlÃ¥ sammen celle til venstre","Merge cell right":"SlÃ¥ sammen celle til høyre","Merge cell up":"SlÃ¥ sammen celle over","Merge cells":"SlÃ¥ sammen celler",None:"Ingen",Outset:"Utover",Padding:"Fylling",Ridge:"Kjede",Row:"Rad","Select column":"Velg kolonne ","Select row":"Velg rad",Solid:"Hel","Split cell horizontally":"Del opp celle horisontalt","Split cell vertically":"Del opp celle vertikalt",Style:"Stil ","Table alignment toolbar":"Verktøylinje for justering av tabell ","Table cell text alignment":"Celle tekstjustering ","Table properties":"Egenskaper for tabell","Table toolbar":"Tabell verktøylinje ",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"Ugyldig farge ",'The value is invalid. Try "10px" or "2em" or simply "2".':"Ugyldig verdi ","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Verktøylinje for justering av tekst vertikalt ",Width:"Bredde"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.no=e.no||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 av %1",Aquamarine:"Akvamarin",Black:"Svart",Blue:"BlÃ¥",Cancel:"Avbryt","Dim grey":"Svak grÃ¥","Dropdown toolbar":"Verktøylinje for nedtrekksliste","Edit block":"Rediger blokk","Editor toolbar":"Verktøylinje for redigeringsverktøy",Green:"Grønn",Grey:"GrÃ¥","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"LyseblÃ¥","Light green":"Lysegrønn","Light grey":"LysegrÃ¥",Next:"Neste",Orange:"Oransje",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gjør om","Remove color":"Fjern farge","Restore default":"Tilbakestill til standard","Rich Text Editor":"Tekstredigeringsverktøy for rik tekst","Rich Text Editor, %0":"Tekstredigeringsverktøy for rik tekst, %0",Save:"Lagre","Select all":"Velg alt ","Show more items":"Vis flere elementer",Turquoise:"Turkis",Undo:"Angre","Upload in progress":"Laster opp fil",White:"Hvit","Widget toolbar":"Widget verktøylinje ",Yellow:"Gul"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/oc.js b/core/assets/vendor/ckeditor5/translations/oc.js new file mode 100644 index 000000000000..7d662342f2eb --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/oc.js @@ -0,0 +1 @@ +!function(i){const c=i.oc=i.oc||{};c.dictionary=Object.assign(c.dictionary||{},{Bold:"Gras",Code:"",Italic:"Italica",Strikethrough:"",Subscript:"",Superscript:"",Underline:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const n=o.oc=o.oc||{};n.dictionary=Object.assign(n.dictionary||{},{"%0 of %1":"",Cancel:"Anullar","Remove color":"","Restore default":"",Save:"Enregistrar","Show more items":""}),n.getPluralForm=function(o){return o>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/pl.js b/core/assets/vendor/ckeditor5/translations/pl.js new file mode 100644 index 000000000000..7f0331f91389 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/pl.js @@ -0,0 +1 @@ +!function(n){const i=n.pl=n.pl||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Wyrównaj do Å›rodka","Align left":"Wyrównaj do lewej","Align right":"Wyrównaj do prawej",Justify:"Wyrównaj obustronnie","Text alignment":"Wyrównanie tekstu","Text alignment toolbar":"Pasek narzÄ™dzi wyrównania tekstu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.pl=e.pl||{};i.dictionary=Object.assign(i.dictionary||{},{Bold:"Pogrubienie",Code:"Kod",Italic:"Kursywa",Strikethrough:"PrzekreÅ›lenie",Subscript:"Indeks dolny",Superscript:"Indeks górny",Underline:"PodkreÅ›lenie"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.pl=o.pl||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Cytat blokowy"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.pl=e.pl||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose heading":"Wybierz nagłówek",Heading:"Nagłówek","Heading 1":"Nagłówek 1","Heading 2":"Nagłówek 2","Heading 3":"Nagłówek 3","Heading 4":"Nagłówek 4","Heading 5":"Nagłówek 5","Heading 6":"Nagłówek 6",Paragraph:"Akapit","Type or paste your content here.":"Wpisz lub wklej tutaj treść dokumentu.","Type your title":"Podaj tytuÅ‚"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.pl=i.pl||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Linia pozioma"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.pl=a.pl||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"","Centered image":"Obraz wyrównany do Å›rodka","Change image text alternative":"ZmieÅ„ tekst zastÄ™pczy obrazka","Enter image caption":"Wstaw tytuÅ‚ obrazka","Full size image":"Obraz w peÅ‚nym rozmiarze","Image resize list":"","Image toolbar":"Pasek narzÄ™dzi obrazka","image widget":"Obraz","In line":"",Insert:"Wstaw","Insert image":"Wstaw obraz","Insert image via URL":"Wstaw obraz z adresu URL","Left aligned image":"Obraz wyrównany do lewej",Original:"Oryginalny","Resize image":"ZmieÅ„ rozmiar obrazka","Resize image to %0":"ZmieÅ„ rozmiar do %0","Resize image to the original size":"Przywróć oryginalny rozmiar obrazu","Right aligned image":"Obraz wyrównany do prawej","Side image":"Obraz dosuniÄ™ty do brzegu, oblewany tekstem","Text alternative":"Tekst zastÄ™pczy obrazka",Update:"Zaktualizuj","Update image URL":"Uaktualnij obraz z adresu URL","Upload failed":"PrzesyÅ‚anie obrazu nie powiodÅ‚o siÄ™","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.pl=i.pl||{};n.dictionary=Object.assign(n.dictionary||{},{"Decrease indent":"Zmniejsz wciÄ™cie","Increase indent":"ZwiÄ™ksz wciÄ™cie"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.pl=n.pl||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"Wybierz jÄ™zyk",Language:"JÄ™zyk","Remove language":"UsuÅ„ jÄ™zyk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.pl=n.pl||{};o.dictionary=Object.assign(o.dictionary||{},{Downloadable:"Do pobrania","Edit link":"Edytuj odnoÅ›nik",Link:"Wstaw odnoÅ›nik","Link image":"Wstaw odnoÅ›nik do obrazka","Link URL":"Adres URL","Open in a new tab":"Otwórz w nowej zakÅ‚adce","Open link in new tab":"Otwórz odnoÅ›nik w nowej zakÅ‚adce","This link has no URL":"Nie podano adresu URL odnoÅ›nika",Unlink:"UsuÅ„ odnoÅ›nik"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.pl=e.pl||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Lista wypunktowana","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Lista numerowana","Numbered list styles toolbar":"",Square:"","To-do List":"Lista rzeczy do zrobienia","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.pl=o.pl||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"UsuÅ„ formatowanie"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.pl=i.pl||{};n.dictionary=Object.assign(n.dictionary||{},{Source:"ŹródÅ‚o"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.pl=e.pl||{};o.dictionary=Object.assign(o.dictionary||{},{"Align cell text to the bottom":"Wyrównaj tekst w komórce do doÅ‚u","Align cell text to the center":"Wyrównaj tekst w komórce do Å›rodka","Align cell text to the left":"Wyrównaj tekst w komórce do lewej","Align cell text to the middle":"Wyrównaj tekst w komórce do Å›rodka","Align cell text to the right":"Wyrównaj tekst w komórce do prawej","Align cell text to the top":"Wyrównaj tekst w komórce do góry","Align table to the left":"Wyrównaj tabelÄ™ do lewej","Align table to the right":"Wyrównaj tabelÄ™ do prawej",Alignment:"Wyrównanie",Background:"TÅ‚o",Border:"Obramowanie","Cell properties":"WÅ‚aÅ›ciwoÅ›ci komórki","Center table":"Wyrównaj tabelÄ™ do Å›rodka",Color:"Kolor","Color picker":"Wybór koloru",Column:"Kolumna",Dashed:"Kreskowane","Delete column":"UsuÅ„ kolumnÄ™","Delete row":"UsuÅ„ wiersz",Dimensions:"Wymiary",Dotted:"Kropkowane",Double:"Podwójne","Enter table caption":"Wprowadź podpis tabeli",Groove:"WklÄ™sÅ‚e","Header column":"Kolumna nagłówka","Header row":"Wiersz nagłówka",Height:"Wysokość","Horizontal text alignment toolbar":"Pasek narzÄ™dzi wyrównania tekstu w poziomie","Insert column left":"Wstaw kolumnÄ™ z lewej","Insert column right":"Wstaw kolumnÄ™ z prawej","Insert row above":"Wstaw wiersz ponad","Insert row below":"Wstaw wiersz poniżej","Insert table":"Wstaw tabelÄ™",Inset:"ZapadniÄ™te","Justify cell text":"Wyjustuj tekst komórki","Merge cell down":"Scal komórkÄ™ w dół","Merge cell left":"Scal komórkÄ™ w lewo","Merge cell right":"Scal komórkÄ™ w prawo","Merge cell up":"Scal komórkÄ™ w górÄ™","Merge cells":"Scal komórki",None:"Brak",Outset:"WysuniÄ™te",Padding:"DopeÅ‚nienie",Ridge:"WypukÅ‚e",Row:"Wiersz","Select column":"Zaznacz kolumnÄ™","Select row":"Zaznacz wiersz",Solid:"CiÄ…gÅ‚e","Split cell horizontally":"Podziel komórkÄ™ poziomo","Split cell vertically":"Podziel komórkÄ™ pionowo",Style:"Styl","Table alignment toolbar":"Pasek narzÄ™dzi wyrównania tabeli","Table cell text alignment":"Wyrównanie tekstu komórki tabeli","Table properties":"WÅ‚aÅ›ciwoÅ›ci tabeli","Table toolbar":"Pasek narzÄ™dzi tabel",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Kolor jest niepoprawny. Spróbuj wpisać "#FF0000", "rgb(255,0,0)" lub "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Wartość jest niepoprawna. Spróbuj wpisać "10px", "2em" lub po prostu "2".',"Toggle caption off":"Ukryj podpis tabeli","Toggle caption on":"Pokaż podpis tabeli","Vertical text alignment toolbar":"Pasek narzÄ™dzi wyrównania tekstu w pionie",Width:"Szerokość"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.pl=i.pl||{};n.dictionary=Object.assign(n.dictionary||{},{"HTML object":"Obiekt HTML"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.pl=t.pl||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"Znak australa","back with leftwards arrow above":"","Bitcoin sign":"Znak bitcoina","Cedi sign":"Znak cedi","Cent sign":"Znak centa","Character categories":"Kategorie znaków","Colon sign":"Znak colona","Contains as member":"","Copyright sign":"","Cruzeiro sign":"Znak cruzeiro","Currency sign":"Znak waluty","Degree sign":"","Division sign":"","Dollar sign":"Znak dolara","Dong sign":"Znak donga","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"Znak drachmy","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"Znak euro","Euro-currency sign":"Znak euro","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"Znak franka francuskiego","German penny sign":"Znak feniga","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"Znak guarani","Horizontal ellipsis":"","Hryvnia sign":"Znak hrywny","Identical to":"","Indian rupee sign":"Znak rupii indyjskiej",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"Znak kipa","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"Znak liry","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"Znak manata","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"Znak nairy","New sheqel sign":"Znak nowego szekla","Nordic mark sign":"Znak marki nordyckiej","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"Znak pesety","Peso sign":"Znak peso","Plus-minus sign":"","Pound sign":"Znak funta","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"Znak rubla","Rupee sign":"Znak rupii","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Znaki specjalne","Spesmilo sign":"","Square root":"","Tenge sign":"Znak tenge","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"Znak tugrika","Turkish lira sign":"Znak liry tureckiej","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"Znak wona","Yen sign":"Znak jena"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const e=o.pl=o.pl||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akwamaryna",Black:"Czarny",Blue:"Niebieski",Cancel:"Anuluj","Dim grey":"Ciemnoszary","Dropdown toolbar":"Rozwijany pasek narzÄ™dzi","Edit block":"Edytuj blok","Editor toolbar":"Pasek narzÄ™dzi edytora",Green:"Zielony",Grey:"Szary","Insert paragraph after block":"Wstaw akapit po bloku","Insert paragraph before block":"Wstaw akapit przed blokiem","Light blue":"Jasnoniebieski","Light green":"Jasnozielony","Light grey":"Jasnoszary",Next:"NastÄ™pny",Orange:"PomaraÅ„czowy",Previous:"Poprzedni",Purple:"Purpurowy",Red:"Czerwony",Redo:"Ponów","Remove color":"UsuÅ„ kolor","Restore default":"Przywróć domyÅ›lne","Rich Text Editor":"Edytor tekstu sformatowanego","Rich Text Editor, %0":"Edytor tekstu sformatowanego, %0",Save:"Zapisz","Select all":"Zaznacz wszystko","Show more items":"Pokaż wiÄ™cej",Turquoise:"Turkusowy",Undo:"Cofnij","Upload in progress":"Trwa przesyÅ‚anie",White:"BiaÅ‚y","Widget toolbar":"Pasek widgetów",Yellow:"Żółty"}),e.getPluralForm=function(o){return 1==o?0:o%10>=2&&o%10<=4&&(o%100<12||o%100>14)?1:1!=o&&o%10>=0&&o%10<=1||o%10>=5&&o%10<=9||o%100>=12&&o%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/pt-br.js b/core/assets/vendor/ckeditor5/translations/pt-br.js new file mode 100644 index 000000000000..6603bb870fe9 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/pt-br.js @@ -0,0 +1 @@ +!function(t){const i=t["pt-br"]=t["pt-br"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Centralizar","Align left":"Alinhar à esquerda","Align right":"Alinhar à direita",Justify:"Justificar","Text alignment":"Alinhamento do texto","Text alignment toolbar":"Ferramentas de alinhamento de texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i["pt-br"]=i["pt-br"]||{};o.dictionary=Object.assign(o.dictionary||{},{Bold:"Negrito",Code:"Código",Italic:"Itálico",Strikethrough:"Tachado",Subscript:"Subscrito",Superscript:"Sobrescrito",Underline:"Sublinhado"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o["pt-br"]=o["pt-br"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Bloco de citação"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const t=o["pt-br"]=o["pt-br"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Choose heading":"Escolha o tÃtulo",Heading:"Titulo","Heading 1":"TÃtulo 1","Heading 2":"TÃtulo 2","Heading 3":"TÃtulo 3","Heading 4":"TÃtulo 4","Heading 5":"TÃtulo 5","Heading 6":"TÃtulo 6",Paragraph:"Parágrafo","Type or paste your content here.":"Digite ou cole o conteúdo aqui.","Type your title":"Digite o tÃtulo"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i["pt-br"]=i["pt-br"]||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Linha horizontal"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e["pt-br"]=e["pt-br"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Break text":"","Centered image":"Imagem centralizada","Change image text alternative":"Alterar texto alternativo da imagem","Enter image caption":"Inserir legenda da imagem","Full size image":"Imagem completa","Image resize list":"Lista de redimensionamento de imagem","Image toolbar":"Ferramentas de Imagem","image widget":"Ferramenta de imagem","In line":"",Insert:"Inserir","Insert image":"Inserir imagem","Insert image via URL":"Inserir imagem via URL","Left aligned image":"Imagem alinhada à esquerda",Original:"Original","Resize image":"Redimensionar imagem","Resize image to %0":"Redimensionar a imagem para 0%","Resize image to the original size":"Redimensionar a imagem para o tamanho original","Right aligned image":"Imagem alinhada à direita","Side image":"Imagem lateral","Text alternative":"Texto alternativo",Update:"Atualizar","Update image URL":"","Upload failed":"Falha ao subir arquivo","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["pt-br"]=n["pt-br"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Diminuir indentação","Increase indent":"Aumentar indentação"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["pt-br"]=n["pt-br"]||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Pode ser baixado","Edit link":"Editar link",Link:"Link","Link image":"Link da imagem","Link URL":"URL","Open in a new tab":"Abrir em nova aba","Open link in new tab":"Abrir link em nova aba","This link has no URL":"Este link não possui uma URL",Unlink:"Remover link"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e["pt-br"]=e["pt-br"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"Lista com marcadores","Bulleted list styles toolbar":"Barra de ferramentas de estilos de lista com marcador",Circle:"CÃrculo",Decimal:"Decimal","Decimal with leading zero":"Decimal com zero à esquerda",Disc:"Disco","Lower-latin":"Latim inferior","Lower–roman":"Romano inferior","Numbered List":"Lista numerada","Numbered list styles toolbar":"Barra de ferramentas de estilos de lista numerada",Square:"Quadrado","To-do List":"Lista de Tarefas","Toggle the circle list style":"Alternar o estilo da lista de cÃrculo","Toggle the decimal list style":"Alternar o estilo de lista decimal","Toggle the decimal with leading zero list style":"Alternar o decimal com estilo de lista zero à esquerda","Toggle the disc list style":"Alternar o estilo da lista de disco","Toggle the lower–latin list style":"Alternar o estilo de lista latina inferior","Toggle the lower–roman list style":"Alternar o estilo de lista romana inferior","Toggle the square list style":"Alternar o estilo de lista quadrada","Toggle the upper–latin list style":"Alternar o estilo de lista latino superior","Toggle the upper–roman list style":"Alternar o estilo de lista romana superior","Upper-latin":"Latim superior","Upper-roman":"Romano superior"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const t=o["pt-br"]=o["pt-br"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Remove Format":"Remover Formatação"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e["pt-br"]=e["pt-br"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Align cell text to the bottom":"Alinhar texto da célula para baixo","Align cell text to the center":"Alinhar texto da célula centralizado","Align cell text to the left":"Alinhar texto da célula para a esquerda","Align cell text to the middle":"Alinhar texto da célula para o meio","Align cell text to the right":"Alinhar texto da célula para a direita","Align cell text to the top":"Alinhar texto da célula para o topo","Align table to the left":"Alinhar tabela para esquerda","Align table to the right":"Alinhar tabela para direita",Alignment:"Alinhamento",Background:"Cor de fundo",Border:"Borda","Cell properties":"Propriedades da célula","Center table":"Centralizar tabela",Color:"Cor","Color picker":"Seletor de cor",Column:"Coluna",Dashed:"Tracejada","Delete column":"Excluir coluna","Delete row":"Excluir linha",Dimensions:"Dimensões",Dotted:"Pontilhada",Double:"Dupla","Enter table caption":"",Groove:"Ranhura","Header column":"Coluna de cabeçalho","Header row":"Linha de cabeçalho",Height:"Altura","Horizontal text alignment toolbar":"Ferramentas de alinhamento horizontal do texto","Insert column left":"Inserir coluna à esquerda","Insert column right":"Inserir coluna à direita","Insert row above":"Inserir linha acima","Insert row below":"Inserir linha abaixo","Insert table":"Inserir tabela",Inset:"Baixo relevo","Justify cell text":"Justificar texto da célula","Merge cell down":"Mesclar abaixo","Merge cell left":"Mesclar à esquerda","Merge cell right":"Mesclar à direita","Merge cell up":"Mesclar acima","Merge cells":"Mesclar células",None:"Sem borda",Outset:"Alto relevo",Padding:"Margem interna",Ridge:"Crista",Row:"Linha","Select column":"Selecionar coluna","Select row":"Selecionar linha",Solid:"Sólida","Split cell horizontally":"Dividir horizontalmente","Split cell vertically":"Dividir verticalmente",Style:"Estilo","Table alignment toolbar":"Ferramentas de alinhamento da tabela","Table cell text alignment":"Alinhamento do texto na célula","Table properties":"Propriedades da tabela","Table toolbar":"Ferramentas de Tabela",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Cor inválida. Tente "#FF0000" ou "rgb(255,0,0)" ou "red"','The value is invalid. Try "10px" or "2em" or simply "2".':'Valor inválido. Tente "10px" ou "2em" ou apenas "2"',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Ferramentas de alinhamento vertical do texto",Width:"Largura"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const o=a["pt-br"]=a["pt-br"]||{};o.dictionary=Object.assign(o.dictionary||{},{"Almost equal to":"Quase igual a",Angle:"Ângulo","Approximately equal to":"Aproximadamente igual a","Asterisk operator":"Operador asterisco","Austral sign":"SÃmbolo de Austral","back with leftwards arrow above":"volta com a seta esquerda acima","Bitcoin sign":"SÃmbolo do Bitcoin","Cedi sign":"SÃmbolo de Cedi","Cent sign":"SÃmbolo de Centavo","Character categories":"Categoria de caracteres","Colon sign":"Sinal de dois pontos","Contains as member":"Contém como membro","Copyright sign":"SÃmbolo de direitos reservados","Cruzeiro sign":"SÃmbolo do Cruzeiro","Currency sign":"SÃmbolo de moeda","Degree sign":"Sinal de grau","Division sign":"Sinal de divisão","Dollar sign":"SÃmbolo do dólar","Dong sign":"SÃmbolo do Dong","Double dagger":"Adaga dupla","Double exclamation mark":"Sinal do ponto de exclamação duplo","Double low-9 quotation mark":"Aspas duplas baixas simples","Double question mark":"Ponto de interrogação duplo","downwards arrow to bar":"seta para baixo para barra","downwards dashed arrow":"Seta tracejada para baixo","downwards double arrow":"Seta dupla para baixo","Drachma sign":"Sinal de Dracma","Element of":"Elemento de","Em dash":"Travessão","Empty set":"Conjunto vazio","En dash":"Traço","end with leftwards arrow above":"termina com a seta esquerda acima","Euro sign":"SÃmbolo do Euro","Euro-currency sign":"SÃmbolo da Moeda do Euro","Exclamation question mark":"Ponto de exclamação","For all":"Para todos","Fraction slash":"Barra de fração","French franc sign":"SÃmbolo do Franco Francês","German penny sign":"SÃmbolo do Centavo Alemão","Greater-than or equal to":"Maior que ou igual a","Greater-than sign":"Sinal maior que","Guarani sign":"SÃmbolo de Guarani","Horizontal ellipsis":"Elipse horizontal","Hryvnia sign":"SÃmbolo de Hryvnia","Identical to":"Idêntico a","Indian rupee sign":"SÃmbolo da Rupia Indiana",Infinity:"Infinito",Integral:"Integral",Intersection:"Interseção","Inverted exclamation mark":"Ponto de exclamação invertido","Inverted question mark":"Ponto de interrogação invertido","Kip sign":"SÃmbolo do Kip","Latin capital letter a with breve":"SÃmbolo latim maiúsculo A com breve","Latin capital letter a with macron":"SÃmbolo latim maiúsculo A com macron","Latin capital letter a with ogonek":"SÃmbolo latim maiúsculo A com ogonek","Latin capital letter c with acute":"SÃmbolo latim maiúsculo C com acento agudo","Latin capital letter c with caron":"SÃmbolo latim maiúsculo C com caron","Latin capital letter c with circumflex":"SÃmbolo latim maiúsculo C com acento circunflexo","Latin capital letter c with dot above":"SÃmbolo latim maiúsculo C com ponto acima","Latin capital letter d with caron":"SÃmbolo latim maiúsculo D com caron","Latin capital letter d with stroke":"SÃmbolo latin maiúsculo D com um traçado vertical","Latin capital letter e with breve":"SÃmbolo latim maiúsculo E com breve","Latin capital letter e with caron":"SÃmbolo latim maiúsculo E com caron","Latin capital letter e with dot above":"SÃmbolo latim maiúsculo E com ponto acima","Latin capital letter e with macron":"SÃmbolo latim maiúsculo E com macron","Latin capital letter e with ogonek":"SÃmbolo latim maiúsculo E com ogonek","Latin capital letter eng":"SÃmbolo latim maiúsculo Eng","Latin capital letter g with breve":"SÃmbolo latim maiúsculo G com breve","Latin capital letter g with cedilla":"SÃmbolo latim maiúsculo G com cedilha","Latin capital letter g with circumflex":"SÃmbolo latim maiúsculo G com acento circunflexo","Latin capital letter g with dot above":"SÃmbolo latim maiúsculo G com ponto acima","Latin capital letter h with circumflex":"SÃmbolo latim maiúsculo H com acento circunflexo","Latin capital letter h with stroke":"SÃmbolo latin maiúsculo H com um traçado vertical","Latin capital letter i with breve":"SÃmbolo latim maiúsculo I com breve","Latin capital letter i with dot above":"SÃmbolo latim maiúsculo I com ponto acima","Latin capital letter i with macron":"SÃmbolo latim maiúsculo I com macron","Latin capital letter i with ogonek":"SÃmbolo latim maiúsculo I com ogonek","Latin capital letter i with tilde":"SÃmbolo latim maiúsculo I com til","Latin capital letter j with circumflex":"SÃmbolo latim maiúsculo J com acento circunflexo","Latin capital letter k with cedilla":"SÃmbolo latim maiúsculo K com cedilha","Latin capital letter l with acute":"SÃmbolo latim maiúsculo l com acento agudo","Latin capital letter l with caron":"SÃmbolo latim maiúsculo I com caron","Latin capital letter l with cedilla":"SÃmbolo latim maiúsculo L com cedilha","Latin capital letter l with middle dot":"SÃmbolo latin maiúsculo L com ponto no meio","Latin capital letter l with stroke":"SÃmbolo latin maiúsculo L com um traçado vertical","Latin capital letter n with acute":"SÃmbolo latim maiúsculo N com acento agudo","Latin capital letter n with caron":"SÃmbolo latim maiúsculo N com caron","Latin capital letter n with cedilla":"SÃmbolo latim maiúsculo N com cedilha","Latin capital letter o with breve":"SÃmbolo latim maiúsculo O com breve","Latin capital letter o with double acute":"SÃmbolo latim maiúsculo O com acento agudo duplo","Latin capital letter o with macron":"SÃmbolo latim maiúsculo I com macron","Latin capital letter r with acute":"SÃmbolo latim maiúsculo R com acento agudo","Latin capital letter r with caron":"SÃmbolo latim maiúsculo R com caron","Latin capital letter r with cedilla":"SÃmbolo latim maiúsculo R com cedilha","Latin capital letter s with acute":"SÃmbolo latim maiúsculo S com acento agudo","Latin capital letter s with caron":"SÃmbolo latim maiúsculo S com caron","Latin capital letter s with cedilla":"SÃmbolo latim maiúsculo S com cedilha","Latin capital letter s with circumflex":"SÃmbolo latim maiúsculo S com acento circunflexo","Latin capital letter t with caron":"SÃmbolo latim maiúsculo T com caron","Latin capital letter t with cedilla":"SÃmbolo latim maiúsculo T com cedilha","Latin capital letter t with stroke":"SÃmbolo latin maiúsculo T com um traçado vertical","Latin capital letter u with breve":"SÃmbolo latim maiúsculo U com breve","Latin capital letter u with double acute":"SÃmbolo latim maiúsculo U com acento agudo duplo","Latin capital letter u with macron":"SÃmbolo latim maiúsculo I com macron","Latin capital letter u with ogonek":"SÃmbolo latim maiúsculo U com ogonek","Latin capital letter u with ring above":"SÃmbolo latim maiúsculo U com anel acima","Latin capital letter u with tilde":"SÃmbolo latim maiúsculo U com til","Latin capital letter w with circumflex":"SÃmbolo latim maiúsculo W com acento circunflexo","Latin capital letter y with circumflex":"SÃmbolo latim maiúsculo Y com acento circunflexo","Latin capital letter y with diaeresis":"SÃmbolo latim maiúsculo Z com trema","Latin capital letter z with acute":"SÃmbolo latim maiúsculo Z com acento agudo","Latin capital letter z with caron":"SÃmbolo latim maiúsculo Z com caron","Latin capital letter z with dot above":"SÃmbolo latim maiúsculo Z com ponto acima","Latin capital ligature ij":"SÃmbolo latin maiúsculo ligadura IJ","Latin capital ligature oe":"SÃmbolo latin maiúsculo ligadura OE","Latin small letter a with breve":"SÃmbolo latim minúsculo A com breve","Latin small letter a with macron":"SÃmbolo latim minúsculo A com macron","Latin small letter a with ogonek":"SÃmbolo latim minúsculo A com ogonek","Latin small letter c with acute":"SÃmbolo latim minúsculo C com acento agudo","Latin small letter c with caron":"SÃmbolo latim minúsculo C com caron","Latin small letter c with circumflex":"SÃmbolo latim minúsculo C com acento circunflexo","Latin small letter c with dot above":"SÃmbolo latim minúsculo C com ponto acima","Latin small letter d with caron":"SÃmbolo latim minúsculo D com caron","Latin small letter d with stroke":"SÃmbolo latin minúsculo D com um traçado vertical","Latin small letter dotless i":"SÃmbolo latin sem ponto I","Latin small letter e with breve":"SÃmbolo latim minúsculo E com breve","Latin small letter e with caron":"SÃmbolo latim minúsculo E com caron","Latin small letter e with dot above":"SÃmbolo latim minúsculo E com ponto acima","Latin small letter e with macron":"SÃmbolo latim minúsculo E com macron","Latin small letter e with ogonek":"SÃmbolo latim minúsculo E com ogonek","Latin small letter eng":"SÃmbolo latim minúsculo Eng","Latin small letter f with hook":"SÃmbolo latim minúsculo F com gancho","Latin small letter g with breve":"SÃmbolo latim minúsculo G com breve","Latin small letter g with cedilla":"SÃmbolo latim minúsculo G com cedilha","Latin small letter g with circumflex":"SÃmbolo latim minúsculo G com acento circunflexo","Latin small letter g with dot above":"SÃmbolo latim minúsculo G com ponto acima","Latin small letter h with circumflex":"SÃmbolo latim minúsculo H com acento circunflexo","Latin small letter h with stroke":"SÃmbolo latin minúsculo H com um traçado vertical","Latin small letter i with breve":"SÃmbolo latim minúsculo I com breve","Latin small letter i with macron":"SÃmbolo latim minúsculo I com macron","Latin small letter i with ogonek":"SÃmbolo latim minúsculo I com ogonek","Latin small letter i with tilde":"SÃmbolo latim minúsculo I com til","Latin small letter j with circumflex":"SÃmbolo latim minúsculo J com acento circunflexo","Latin small letter k with cedilla":"SÃmbolo latim minúsculo K com cedilha","Latin small letter kra":"SÃmbolo latin minúsculo K","Latin small letter l with acute":"SÃmbolo latim minúsculo I com acento agudo","Latin small letter l with caron":"SÃmbolo latim minúsculo I com caron","Latin small letter l with cedilla":"SÃmbolo latim minúsculo L com cedilha","Latin small letter l with middle dot":"SÃmbolo latin minúsculo L com ponto no meio","Latin small letter l with stroke":"SÃmbolo latin minúsculo L com um traçado vertical","Latin small letter long s":"SÃmbolo latim minúsculo long s","Latin small letter n preceded by apostrophe":"SÃmbolo latim minúsculo N precedido por apóstrofe","Latin small letter n with acute":"SÃmbolo latim minúsculo N com acento agudo","Latin small letter n with caron":"SÃmbolo latim minúsculo N com caron","Latin small letter n with cedilla":"SÃmbolo latim minúsculo N com cedilha","Latin small letter o with breve":"SÃmbolo latim minúsculo O com breve","Latin small letter o with double acute":"SÃmbolo latim minúsculo O com acento agudo duplo","Latin small letter o with macron":"SÃmbolo latim minúsculo O com macron","Latin small letter r with acute":"SÃmbolo latim minúsculo R com acento agudo","Latin small letter r with caron":"SÃmbolo latim minúsculo R com caron","Latin small letter r with cedilla":"SÃmbolo latim minúsculo R com cedilha","Latin small letter s with acute":"SÃmbolo latim minúsculo S com acento agudo","Latin small letter s with caron":"SÃmbolo latim minúsculo S com caron","Latin small letter s with cedilla":"SÃmbolo latim minúsculo S com cedilha","Latin small letter s with circumflex":"SÃmbolo latim minúsculo S com acento circunflexo","Latin small letter t with caron":"SÃmbolo latim minúsculo T com caron","Latin small letter t with cedilla":"SÃmbolo latim minúsculo T com cedilha","Latin small letter t with stroke":"SÃmbolo latin minúsculo T com um traçado vertical","Latin small letter u with breve":"SÃmbolo latim minúsculo U com breve","Latin small letter u with double acute":"SÃmbolo latim minúsculo U com acento agudo","Latin small letter u with macron":"SÃmbolo latim minúsculo U com macron","Latin small letter u with ogonek":"SÃmbolo latim minúsculo U com ogonek","Latin small letter u with ring above":"SÃmbolo latim minúsculo U com anel acima","Latin small letter u with tilde":"SÃmbolo latim minúsculo U com til","Latin small letter w with circumflex":"SÃmbolo latim minúsculo W com acento circunflexo","Latin small letter y with circumflex":"SÃmbolo latim minúsculo Y com acento circunflexo","Latin small letter z with acute":"SÃmbolo latim minúsculo Z com acento agudo","Latin small letter z with caron":"SÃmbolo latim minúsculo Z com caron","Latin small letter z with dot above":"SÃmbolo latim minúsculo Z com ponto acima","Latin small ligature ij":"SÃmbolo latin minúsculo ligadura IJ","Latin small ligature oe":"SÃmbolo latin minúsculo ligadura OE","Left double quotation mark":"Aspas dupla esquerda","Left single quotation mark":"Aspas simples esquerda","Left-pointing double angle quotation mark":"Aspas angulares duplas esquerda","leftwards arrow to bar":"seta para a esquerda para barra","leftwards dashed arrow":"Seta tracejada para esquerda","leftwards double arrow":"Seta dupla para esquerda","Less-than or equal to":"Menor que ou igual a","Less-than sign":"Sinal menor que","Lira sign":"SÃmbolo da Lira","Livre tournois sign":"SÃmbolo de Livre tournois","Logical and":"Operador lógico AND","Logical or":"Operador lógico OR",Macron:"Macron","Manat sign":"SÃmbolo do Manat","Mill sign":"SÃmbolo de Mill","Minus sign":"Sinal de menos","Multiplication sign":"Sinal de multiplicação","N-ary product":"SÃmbolo Produto N-ário","N-ary summation":"Somatório",Nabla:"Nabla","Naira sign":"SÃmbolo de Naira","New sheqel sign":"SÃmbolo do Novo Sheqel","Nordic mark sign":"SÃmbolo da Marca Nórdica","Not an element of":"Não é um elemento de","Not equal to":"Diferente de","Not sign":"Sinal de não","on with exclamation mark with left right arrow above":"com ponto de exclamação com a seta esquerda direita acima",Overline:"Sobrepor","Paragraph sign":"SÃmbolo de parágrafo","Partial differential":"Diferencial parcial","Per mille sign":"SÃmbolo de por 1 mil","Per ten thousand sign":"SÃmbolo de por 10 mil","Peseta sign":"SÃmbolo de Peseta","Peso sign":"Sinal de Peso","Plus-minus sign":"Sinal de mais ou menos","Pound sign":"SÃmbolo de Libra","Proportional to":"Proporcional a","Question exclamation mark":"Ponto de interrogação","Registered sign":"SÃmbolo de registrado","Reversed paragraph sign":"SÃmbolo de parágrafo reverso","Right double quotation mark":"Aspas dupla direita","Right single quotation mark":"Aspas simples direita","Right-pointing double angle quotation mark":"Aspas angulares duplas direita","rightwards arrow to bar":"seta para a direita para barra","rightwards dashed arrow":"Seta tracejada para direita","rightwards double arrow":"Seta dupla para direita","Ruble sign":"SÃmbolo do Rublo Russo","Rupee sign":"SÃmbolo da Rupia","Section sign":"SÃmbolo de seleção","Single left-pointing angle quotation mark":"Aspas angulares simples esquerda","Single low-9 quotation mark":"Aspas baixas simples","Single right-pointing angle quotation mark":"Aspas angulares simples direita","soon with rightwards arrow above":"SÃmbolo soon com a seta para a direita acima","Special characters":"Caracteres especiais","Spesmilo sign":"SÃmbolo do Spesmilo","Square root":"Raiz quadrada","Tenge sign":"SÃmbolo do Tenge","There exists":"Existe","Tilde operator":"Operador til","top with upwards arrow above":"SÃmbolo topo com a seta para cima acima","Trade mark sign":"SÃmbolo de marca registrada","Tugrik sign":"SÃmbolo de Tugrik","Turkish lira sign":"SÃmbolo da Lira Turca","Two dot leader":"Dois pontos",Union:"União","up down arrow with base":"seta para baixo com base","upwards arrow to bar":"seta para cima para barra","upwards dashed arrow":"Seta tracejada para cima","upwards double arrow":"Seta dupla para cima","Vulgar fraction one half":"Fração um meio","Vulgar fraction one quarter":"Fração um quarto","Vulgar fraction three quarters":"Fração três quartos","Won sign":"SÃmbolo do Won","Yen sign":"SÃmbolo do Yen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(r){const e=r["pt-br"]=r["pt-br"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Ãgua-marinha",Black:"Preto",Blue:"Azul",Cancel:"Cancelar","Dim grey":"Cinza escuro","Dropdown toolbar":"Barra de Ferramentas da Lista Suspensa","Edit block":"Editor de bloco","Editor toolbar":"Ferramentas do Editor",Green:"Verde",Grey:"Cinza","Insert paragraph after block":"Inserir parágrafo após o bloco","Insert paragraph before block":"Inserir parágrafo antes do bloco","Light blue":"Azul claro","Light green":"Verde claro","Light grey":"Cinza claro",Next:"Próximo",Orange:"Laranja",Previous:"Anterior",Purple:"Púrpura",Red:"Vermelho",Redo:"Refazer","Remove color":"Remover cor","Restore default":"","Rich Text Editor":"Editor de Formatação","Rich Text Editor, %0":"Editor de Formatação, %0",Save:"Salvar","Select all":"Selecionar tudo","Show more items":"Exibir mais itens",Turquoise:"Turquesa",Undo:"Desfazer","Upload in progress":"Enviando dados",White:"Branco","Widget toolbar":"Ferramentas de Widgets",Yellow:"Amarelo"}),e.getPluralForm=function(r){return r>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/pt.js b/core/assets/vendor/ckeditor5/translations/pt.js new file mode 100644 index 000000000000..9339e80932db --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/pt.js @@ -0,0 +1 @@ +!function(t){const n=t.pt=t.pt||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Alinhar ao centro","Align left":"Alinhar à esquerda","Align right":"Alinhar à direita",Justify:"Justificar","Text alignment":"Alinhamento de texto","Text alignment toolbar":"Ferramentas de alinhamento de texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.pt=i.pt||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Negrito",Code:"Código",Italic:"Itálico",Strikethrough:"",Subscript:"",Superscript:"",Underline:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.pt=a.pt||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"",Heading:"Cabeçalho","Heading 1":"Cabeçalho 1","Heading 2":"Cabeçalho 2","Heading 3":"Cabeçalho 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"Parágrafo","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.pt=e.pt||{};a.dictionary=Object.assign(a.dictionary||{},{"Break text":"","Centered image":"Imagem centrada","Change image text alternative":"","Enter image caption":"Indicar legenda da imagem","Full size image":"Imagem em tamanho completo","Image resize list":"","Image toolbar":"","image widget":"módulo de imagem","In line":"",Insert:"","Insert image":"Inserir imagem","Insert image via URL":"","Left aligned image":"",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"","Side image":"Imagem lateral","Text alternative":"Texto alternativo",Update:"","Update image URL":"","Upload failed":"Falha ao carregar","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.pt=i.pt||{};n.dictionary=Object.assign(n.dictionary||{},{Downloadable:"","Edit link":"",Link:"Hiperligação","Link image":"","Link URL":"URL da ligação","Open in a new tab":"","Open link in new tab":"","This link has no URL":"",Unlink:"Desligar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.pt=e.pt||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"Lista não ordenada","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Lista ordenada","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.pt=e.pt||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Cancelar","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Refazer","Remove color":"","Restore default":"","Rich Text Editor":"Editor de texto avançado","Rich Text Editor, %0":"Editor de texto avançado, %0",Save:"Guardar","Show more items":"",Turquoise:"",Undo:"Desfazer",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ro.js b/core/assets/vendor/ckeditor5/translations/ro.js new file mode 100644 index 000000000000..82d9e6e35fc4 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ro.js @@ -0,0 +1 @@ +!function(i){const n=i.ro=i.ro||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Aliniază la centru","Align left":"Aliniază la stânga","Align right":"Aliniază la dreapta",Justify:"Aliniază stânga-dreapta","Text alignment":"Aliniere text","Text alignment toolbar":"Bara aliniere text"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ro=i.ro||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"ÃŽngroÈ™at",Code:"Cod",Italic:"Cursiv",Strikethrough:"Tăiere text cu o linie",Subscript:"Indice",Superscript:"Exponent",Underline:"Subliniat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.ro=o.ro||{};i.dictionary=Object.assign(i.dictionary||{},{"Block quote":"Bloc citat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.ro=i.ro||{};t.dictionary=Object.assign(t.dictionary||{},{"Choose heading":"Alege titlu",Heading:"Titlu","Heading 1":"Titlu 1","Heading 2":"Titlu 2","Heading 3":"Titlu 3","Heading 4":"Titlu 4","Heading 5":"Titlu 5","Heading 6":"Titlu 6",Paragraph:"Paragraf","Type or paste your content here.":"Scrie sau inserează aici conÈ›inutul tău","Type your title":"Scrie titlul tău"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ro=i.ro||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Linie orizontală"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const e=i.ro=i.ro||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"","Centered image":"Imagine aliniată pe centru","Change image text alternative":"Schimbă textul alternativ al imaginii","Enter image caption":"Introdu titlul descriptiv al imaginii","Full size image":"Imagine mărime completă","Image resize list":"Lista cu mărimi de redimensionare","Image toolbar":"Bară imagine","image widget":"widget imagine","In line":"",Insert:"Inserează","Insert image":"Inserează imagine","Insert image via URL":"Inserează o imagine via URL","Left aligned image":"Imagine aliniată la stânga",Original:"Original","Resize image":"Redimensionează imaginea","Resize image to %0":"Redimensionează imaginea la %0","Resize image to the original size":"Redimensionează imaginea la mărimea originală","Right aligned image":"Imagine aliniată la dreapta","Side image":"Imagine laterală","Text alternative":"Text alternativ",Update:"Actualizează","Update image URL":"Actualizează o imagine via URL","Upload failed":"ÃŽncărcare eÈ™uată","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.ro=n.ro||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"MicÈ™orează indent","Increase indent":"MăreÈ™te indent"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.ro=a.ro||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose language":"Alege limba",Language:"Limbă","Remove language":"Șterge limba"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ro=n.ro||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Descărcabil","Edit link":"Modifică link",Link:"Link","Link image":"Link imagine","Link URL":"Link URL","Open in a new tab":"Deschide în tab nou","Open link in new tab":"Deschide link în tab nou","This link has no URL":"Acest link nu are niciun URL",Unlink:"Șterge link"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const i=t.ro=t.ro||{};i.dictionary=Object.assign(i.dictionary||{},{"Bulleted List":"Listă cu puncte","Bulleted list styles toolbar":"Toolbar Listă cu puncte",Circle:"Cerc",Decimal:"Număr","Decimal with leading zero":"Număr cu zero la început ",Disc:"Disc","Lower-latin":"Litere mici latine","Lower–roman":"Litere mici romane","Numbered List":"Listă numerotată","Numbered list styles toolbar":"Toolbar Listă numerotată",Square:"Pătrat","To-do List":"Listă cu activități","Toggle the circle list style":"ComutaÈ›i stilul la lista cu cercuri","Toggle the decimal list style":"ComutaÈ›i stilul la lista cu numere","Toggle the decimal with leading zero list style":"ComutaÈ›i stilul la lista cu numere cu zero la început","Toggle the disc list style":"ComutaÈ›i stilul la lista cu discuri","Toggle the lower–latin list style":"ComutaÈ›i stilul la lista cu litere mici latine","Toggle the lower–roman list style":"ComutaÈ›i stilul la lista cu litere mici romane","Toggle the square list style":"ComutaÈ›i stilul la lista cu pătrate","Toggle the upper–latin list style":"ComutaÈ›i stilul la lista cu litere mari latine","Toggle the upper–roman list style":"ComutaÈ›i stilul la lista cu litere mari romane","Upper-latin":"Litere mari latine","Upper-roman":"Litere mari romane"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.ro=o.ro||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"Șterge formatare"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.ro=e.ro||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"Alinează textul celulei jos","Align cell text to the center":"Alinează textul celulei la centru","Align cell text to the left":"Alinează textul celulei la stânga","Align cell text to the middle":"Alinează textul celulei la mijloc","Align cell text to the right":"Alinează textul celulei la dreapta","Align cell text to the top":"Alinează textul celulei sus","Align table to the left":"Alinează tabela la stânga","Align table to the right":"Alinează tabela la dreapta",Alignment:"Aliniere",Background:"Fundal",Border:"Bordură","Cell properties":"Proprietățile celulei","Center table":"Tabelă centrată",Color:"Culoare","Color picker":"Alegere culoare",Column:"Coloană",Dashed:"Linii întrerupte","Delete column":"Șterge coloană","Delete row":"Șterge rând",Dimensions:"Dimensiuni",Dotted:"Punctată",Double:"Dublă","Enter table caption":"Adaugă subtitlul tabelei",Groove:"Groove","Header column":"Antet coloană","Header row":"Rând antet",Height:"ÃŽnălÈ›ime","Horizontal text alignment toolbar":"Toolbar aliniere text orizontală","Insert column left":"Inserează coloană la stânga","Insert column right":"Inserează coloană la dreapta","Insert row above":"Inserează rând deasupra","Insert row below":"Inserează rând dedesubt","Insert table":"Inserează tabel",Inset:"Inserează","Justify cell text":"Textul celulei justify","Merge cell down":"ÃŽmbină celula în jos","Merge cell left":"ÃŽmbină celula la stânga","Merge cell right":"ÃŽmbină celula la dreapta","Merge cell up":"ÃŽmbină celula în sus","Merge cells":"ÃŽmbină celulele",None:"Nimic",Outset:"Elimină",Padding:"SpaÈ›iere",Ridge:"Crestată",Row:"Rând","Select column":"Selectează coloana","Select row":"Selectează linia",Solid:"Solidă","Split cell horizontally":"Scindează celula pe orizontală","Split cell vertically":"Scindează celula pe verticală",Style:"Stil","Table alignment toolbar":"Toolbar aliniere tabelă","Table cell text alignment":"Alinierea textului celulei tabelei","Table properties":"Proprietățile tabelei","Table toolbar":"Bară tabel",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Culoarea este invalidă. ÃŽncearcă "#FF0000" sau "rgb(255,0,0)" sau "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Valoarea este invalidă. ÃŽncearcă "10px" sau "2em" sau simplu "2".',"Toggle caption off":"DezactivaÈ›i subtitlul","Toggle caption on":"ActivaÈ›i subtitlul","Vertical text alignment toolbar":"Toolbar aliniere text verticală",Width:"Lungime"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.ro=e.ro||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 din %1",Aquamarine:"Acvamarin",Black:"Negru",Blue:"Albastru",Cancel:"Anulare","Dim grey":"Gri slab","Dropdown toolbar":"Bară listă opÈ›iuni","Edit block":"Editează bloc","Editor toolbar":"Bară editor",Green:"Verde",Grey:"Gri","Insert paragraph after block":"Inserează un paragraf după bloc","Insert paragraph before block":"Inserează un paragraf înaintea blocului","Light blue":"Albastru deschis","Light green":"Verde deschis","Light grey":"Gri deschis",Next:"ÃŽnainte",Orange:"Portocaliu",Previous:"ÃŽnapoi",Purple:"Violet",Red:"RoÈ™u",Redo:"Revenire","Remove color":"Șterge culoare","Restore default":"Reface la default","Rich Text Editor":"Editor de text","Rich Text Editor, %0":"Editor de text, %0",Save:"Salvare","Select all":"Selectează-le pe toate","Show more items":"Arată mai multe elemente",Turquoise:"Turcoaz",Undo:"Anulare","Upload in progress":"ÃŽncărcare în curs",White:"Alb","Widget toolbar":"Bară widget",Yellow:"Galben"}),r.getPluralForm=function(e){return 1==e?0:e%100>19||e%100==0&&0!=e?2:1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ru.js b/core/assets/vendor/ckeditor5/translations/ru.js new file mode 100644 index 000000000000..d894fd48bbd6 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ru.js @@ -0,0 +1 @@ +!function(n){const i=n.ru=n.ru||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Выравнивание по центру","Align left":"Выравнивание по левому краю","Align right":"Выравнивание по правому краю",Justify:"Выравнивание по ширине","Text alignment":"Выравнивание текÑта","Text alignment toolbar":"Выравнивание"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ru=i.ru||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Жирный",Code:"ИÑходный код",Italic:"КурÑив",Strikethrough:"Зачеркнутый",Subscript:"ПодÑтрочный",Superscript:"ÐадÑтрочный",Underline:"Подчеркнутый"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ru=i.ru||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Цитата"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.ru=n.ru||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Выбор ÑтилÑ",Heading:"Стиль","Heading 1":"Заголовок 1","Heading 2":"Заголовок 2","Heading 3":"Заголовок 3","Heading 4":"Заголовок 4","Heading 5":"Заголовок 5","Heading 6":"Заголовок 6",Paragraph:"Параграф","Type or paste your content here.":"Введите или вÑтавьте Ñюда ваш текÑÑ‚","Type your title":"Введите заголовок"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ru=i.ru||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Ð“Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.ru=e.ru||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"Разрывать текÑÑ‚","Centered image":"Выравнивание по центру","Change image text alternative":"Редактировать альтернативный текÑÑ‚","Enter image caption":"ПодпиÑÑŒ к изображению","Full size image":"Оригинальный размер изображениÑ","Image resize list":"СпиÑок размеров","Image toolbar":"Панель инÑтрументов изображениÑ","image widget":"Виджет изображений","In line":"Ð’ текÑте",Insert:"Ð’Ñтавить","Insert image":"Ð’Ñтавить изображение","Insert image via URL":"Ð’Ñтавить изображение по URL","Left aligned image":"Выравнивание по левому краю",Original:"Оригинальный","Resize image":"Изменить размер изображениÑ","Resize image to %0":"Изменить размер Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¾ %0","Resize image to the original size":"Вернуть размер Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ðº оригинальному","Right aligned image":"Выравнивание по правому краю","Side image":"Боковое изображение","Text alternative":"Ðльтернативный текÑÑ‚",Update:"Изменить","Update image URL":"Изменить URL изображениÑ","Upload failed":"Загрузка не выполнена","Wrap text":"Обтекать текÑÑ‚"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ru=n.ru||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Уменьшить отÑтуп","Increase indent":"Увеличить отÑтуп"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.ru=n.ru||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"Выбрать Ñзык",Language:"Язык","Remove language":"Убрать Ñзык"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ru=n.ru||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Загружаемые","Edit link":"Редактировать ÑÑылку",Link:"СÑылка","Link image":"СÑылка на изображение","Link URL":"СÑылка URL","Open in a new tab":"Открыть в новой вкладке","Open link in new tab":"Открыть ÑÑылку в новой вкладке","This link has no URL":"Ð”Ð»Ñ Ñтой ÑÑылки не уÑтановлен Ð°Ð´Ñ€ÐµÑ URL",Unlink:"Убрать ÑÑылку"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.ru=e.ru||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Маркированный ÑпиÑок","Bulleted list styles toolbar":"Стили маркированного ÑпиÑка",Circle:"ОкружноÑÑ‚ÑŒ",Decimal:"ДеÑÑтичный","Decimal with leading zero":"ДеÑÑтичный Ñ Ð²ÐµÐ´ÑƒÑ‰Ð¸Ð¼ нулем",Disc:"ДиÑк","Lower-latin":"Малые латинÑкие","Lower–roman":"Малые римÑкие","Numbered List":"Ðумерованный ÑпиÑок","Numbered list styles toolbar":"Стили нумерованного ÑпиÑка",Square:"Квадрат","To-do List":"СпиÑок задач","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"Большие латинÑкие","Upper-roman":"Большие римÑкие"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ru=i.ru||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"Убрать форматирование"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ru=i.ru||{};n.dictionary=Object.assign(n.dictionary||{},{Source:"HTML редактор"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.ru=e.ru||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"ВыровнÑÑ‚ÑŒ текÑÑ‚ Ñчейки по нижнему краю","Align cell text to the center":"ВыровнÑÑ‚ÑŒ текÑÑ‚ по центру","Align cell text to the left":"ВыровнÑÑ‚ÑŒ текÑÑ‚ по левому краю","Align cell text to the middle":"ВыровнÑÑ‚ÑŒ текÑÑ‚ Ñчейки по центру","Align cell text to the right":"ВыровнÑÑ‚ÑŒ текÑÑ‚ по правому краю","Align cell text to the top":"ВыровнÑÑ‚ÑŒ текÑÑ‚ Ñчейки по верхнему краю","Align table to the left":"ВыровнÑÑ‚ÑŒ таблицу по левому краю","Align table to the right":"ВыровнÑÑ‚ÑŒ таблицу по правому краю",Alignment:"Выравнивание",Background:"Фон",Border:"Граница","Cell properties":"СвойÑтва Ñчейки","Center table":"ВыровнÑÑ‚ÑŒ таблицу по центру",Color:"Цвет","Color picker":"Выбор цвета",Column:"Столбец",Dashed:"ПунктирнаÑ","Delete column":"Удалить Ñтолбец","Delete row":"Удалить Ñтроку",Dimensions:"Размеры",Dotted:"ТочечнаÑ",Double:"ДвойнаÑ","Enter table caption":"ПодпиÑÑŒ таблицы",Groove:"ЖелобчатаÑ","Header column":"Столбец заголовков","Header row":"Строка заголовков",Height:"Ð’Ñ‹Ñота","Horizontal text alignment toolbar":"Панель инÑтрументов горизонтального Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑта","Insert column left":"Ð’Ñтавить Ñтолбец Ñлева","Insert column right":"Ð’Ñтавить Ñтолбец Ñправа","Insert row above":"Ð’Ñтавить Ñтроку выше","Insert row below":"Ð’Ñтавить Ñтроку ниже","Insert table":"Ð’Ñтавить таблицу",Inset:"ВдавленнаÑ","Justify cell text":"ВыровнÑÑ‚ÑŒ текÑÑ‚ по ширине","Merge cell down":"Объединить Ñ Ñчейкой Ñнизу","Merge cell left":"Объединить Ñ Ñчейкой Ñлева","Merge cell right":"Объединить Ñ Ñчейкой Ñправа","Merge cell up":"Объединить Ñ Ñчейкой Ñверху","Merge cells":"Объединить Ñчейки",None:"Ðет",Outset:"ВыпуклаÑ",Padding:"ОтÑтуп",Ridge:"РебриÑтаÑ",Row:"Строка","Select column":"Выбрать Ñтолбец","Select row":"Выбрать Ñтроку",Solid:"СплошнаÑ","Split cell horizontally":"Разделить Ñчейку горизонтально","Split cell vertically":"Разделить Ñчейку вертикально",Style:"Стиль","Table alignment toolbar":"Панель инÑтрументов Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹","Table cell text alignment":"Выравнивание текÑта в Ñчейке таблицы","Table properties":"СвойÑтва таблицы","Table toolbar":"Панель инÑтрументов таблицы",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Ðеверный цвет. Попробуйте "#FF0000" или "rgb(255,0,0)" или "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Ðеверное значение. Попробуйте "10px" или "2em" или проÑто "2".',"Toggle caption off":"Выключить опиÑание","Toggle caption on":"Включить опиÑание","Vertical text alignment toolbar":"Панель инÑтрументов вертикального Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑта",Width:"Ширина"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ru=i.ru||{};n.dictionary=Object.assign(n.dictionary||{},{"HTML object":"HTML объект"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.ru=t.ru||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"Категории","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"СпецÑимволы","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.ru=e.ru||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 из %1",Aquamarine:"Ðквамариновый",Black:"Чёрный",Blue:"Синий",Cancel:"Отмена","Dim grey":"Тёмно-Ñерый","Dropdown toolbar":"Ð’Ñ‹Ð¿Ð°Ð´Ð°ÑŽÑ‰Ð°Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ инÑтрументов","Edit block":"Редактировать блок","Editor toolbar":"Панель инÑтрументов редактора",Green:"Зелёный",Grey:"Серый","Insert paragraph after block":"Ð’Ñтавить параграф поÑле блока","Insert paragraph before block":"Ð’Ñтавить параграф перед блоком","Light blue":"Голубой","Light green":"Салатовый","Light grey":"Светло-Ñерый",Next:"Следующий",Orange:"Оранжевый",Previous:"Предыдущий",Purple:"Фиолетовый",Red:"КраÑный",Redo:"Повторить","Remove color":"Убрать цвет","Restore default":"По умолчанию","Rich Text Editor":"Редактор","Rich Text Editor, %0":"Редактор, %0",Save:"Сохранить","Select all":"Выбрать вÑе","Show more items":"Другие инÑтрументы",Turquoise:"Бирюзовый",Undo:"Отменить","Upload in progress":"Идёт загрузка",White:"Белый","Widget toolbar":"Панель инÑтрументов виджета",Yellow:"Жёлтый"}),r.getPluralForm=function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:e%10==0||e%10>=5&&e%10<=9||e%100>=11&&e%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/si.js b/core/assets/vendor/ckeditor5/translations/si.js new file mode 100644 index 000000000000..e6af8b2a9d83 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/si.js @@ -0,0 +1 @@ +!function(i){const n=i.si=i.si||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"à¶à¶¯à¶šà·”රු",Code:"",Italic:"ඇලකුරු",Strikethrough:"",Subscript:"",Superscript:"",Underline:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.si=e.si||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"","Change image text alternative":"","Enter image caption":"","Full size image":"","Image resize list":"","Image toolbar":"","image widget":"","In line":"",Insert:"","Insert image":"පින්à¶à·–රය ඇà¶à·”ල් කරන්න","Insert image via URL":"","Left aligned image":"",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"","Side image":"","Text alternative":"",Update:"","Update image URL":"","Upload failed":"උඩුගචකිරීම අසà·à¶»à·Šà¶®à¶š විය","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.si=e.si||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"බුලටිචලà·à¶ºà·’ස්à¶à·”à·€","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"අංකිචලà·à¶ºà·’ස්à¶à·”à·€","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.si=n.si||{};i.dictionary=Object.assign(i.dictionary||{},{Redo:"නà·à·€à¶ කරන්න",Undo:"අහà·à·ƒà·’ කරන්න"}),i.getPluralForm=function(n){return 1!=n}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/sk.js b/core/assets/vendor/ckeditor5/translations/sk.js new file mode 100644 index 000000000000..dc3ddbac9037 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/sk.js @@ -0,0 +1 @@ +!function(n){const a=n.sk=n.sk||{};a.dictionary=Object.assign(a.dictionary||{},{"Align center":"ZarovnaÅ¥ na stred","Align left":"ZarovnaÅ¥ vľavo","Align right":"ZarovnaÅ¥ vpravo",Justify:"Do bloku","Text alignment":"Zarovnanie textu","Text alignment toolbar":"Panel nástrojov zarovnania textu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.sk=n.sk||{};i.dictionary=Object.assign(i.dictionary||{},{Bold:"TuÄné",Code:"Kód",Italic:"KurzÃva",Strikethrough:"PreÅ¡krtnuté",Subscript:"Dolný index",Superscript:"Horný index",Underline:"PodÄiarknuté"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sk=i.sk||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Citát"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const a=i.sk=i.sk||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose heading":"Vyberte nadpis",Heading:"Nadpis","Heading 1":"Nadpis 1","Heading 2":"Nadpis 2","Heading 3":"Nadpis 3","Heading 4":"Nadpis 4","Heading 5":"Nadpis 5","Heading 6":"Nadpis 6",Paragraph:"Odsek","Type or paste your content here.":"Vložte obsah","Type your title":"Vložte nadpis"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sk=i.sk||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Vodorovná Äiara"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.sk=e.sk||{};a.dictionary=Object.assign(a.dictionary||{},{"Break text":"","Centered image":"ZarovnaÅ¥ na stred","Change image text alternative":"Zmeňte alternatÃvny text obrázka","Enter image caption":"Vložte popis obrázka","Full size image":"Obrázok v plnej veľkosti","Image resize list":"Zoznam možnostà zmeny veľkosti","Image toolbar":"Panel nástrojov obrázka","image widget":"widget obrázka","In line":"",Insert:"VložiÅ¥","Insert image":"VložiÅ¥ obrázok","Insert image via URL":"VložiÅ¥ obrázok pomocou URL","Left aligned image":"ZarovnaÅ¥ vľavo",Original:"Originál","Resize image":"ZmeniÅ¥ veľkosÅ¥ obrázka","Resize image to %0":"ZmeniÅ¥ veľkosÅ¥ na %0","Resize image to the original size":"ZmeniÅ¥ veľkosÅ¥ na pôvodnú","Right aligned image":"ZarovnaÅ¥ vpravo","Side image":"BoÄný obrázok","Text alternative":"AlternatÃvny text",Update:"AktualizovaÅ¥","Update image URL":"AktualizovaÅ¥ URL obrázka","Upload failed":"Nahrávanie zlyhalo","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.sk=n.sk||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"ZmenÅ¡iÅ¥ odsadenie","Increase indent":"ZväÄÅ¡iÅ¥ odsadenie"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const n=a.sk=a.sk||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose language":"VybraÅ¥ jazyk",Language:"Jazyk","Remove language":"OdstrániÅ¥ jazyk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.sk=n.sk||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Na stiahnutie","Edit link":"UpraviÅ¥ odkaz",Link:"Odkaz","Link image":"Adresa obrázku","Link URL":"URL adresa","Open in a new tab":"OtvoriÅ¥ v novej záložke","Open link in new tab":"OtvoriÅ¥ odkaz v novom okne","This link has no URL":"Tento odkaz nemá nastavenú URL adresu",Unlink:"ZruÅ¡iÅ¥ odkaz"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.sk=e.sk||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Zoznam s odrážkami","Bulleted list styles toolbar":"Panel zoznamu s odrážkami",Circle:"Kruh",Decimal:"ÄŒÃsla","Decimal with leading zero":"ÄŒÃsla s nulou na zaÄiatku",Disc:"Plný kruh","Lower-latin":"Malé pÃsmená","Lower–roman":"Malé rÃmske ÄÃsla","Numbered List":"ÄŒÃslovaný zoznam","Numbered list styles toolbar":"Panel so Å¡týlmi ÄÃslovaného zoznamu",Square:"Å tvorec","To-do List":"To-do zoznam","Toggle the circle list style":"Prepnúť na zoznam s kruhovým oznaÄenÃm","Toggle the decimal list style":"Prepnúť na ÄÃselný zoznam","Toggle the decimal with leading zero list style":"Prepnúť na ÄÃselný zoznam s nulou na zaÄiatku","Toggle the disc list style":"Prepnúť na zoznam s oznaÄenÃm plného kruhu","Toggle the lower–latin list style":"Prepnúť na zoznam s malými pÃsmenami","Toggle the lower–roman list style":"Prepnúť na zoznam s malými rÃmskymi ÄÃslami","Toggle the square list style":"Prepnúť na zoznam so Å¡tvorcovým oznaÄenÃm","Toggle the upper–latin list style":"Prepnúť na zoznam s veľkými pÃsmenami","Toggle the upper–roman list style":"Prepnúť na zoznam s veľkými rÃmskymi ÄÃslami","Upper-latin":"Veľké pÃsmená","Upper-roman":"Veľké rÃmske ÄÃsla"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.sk=i.sk||{};o.dictionary=Object.assign(o.dictionary||{},{"Remove Format":"VyÄistiÅ¥ formátovanie"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.sk=e.sk||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"ZarovnaÅ¥ text bunky nadol","Align cell text to the center":"ZarovnaÅ¥ text bunky na stred","Align cell text to the left":"ZarovnaÅ¥ text bunky doľava","Align cell text to the middle":"ZarovnaÅ¥ text bunky na stred","Align cell text to the right":"ZarovnaÅ¥ text bunky doprava","Align cell text to the top":"ZarovnaÅ¥ text bunky nahor","Align table to the left":"ZarovnaÅ¥ tabuľku doľava","Align table to the right":"ZarovnaÅ¥ tabuľku doprava",Alignment:"Zarovnanie",Background:"Pozadie",Border:"Orámovanie","Cell properties":"Vlastnosti bunky","Center table":"CentrovaÅ¥ tabuľku",Color:"Farba","Color picker":"VybraÅ¥ farbu",Column:"Stĺpec",Dashed:"ÄŒiarkovaná","Delete column":"OdstrániÅ¥ stĺpec","Delete row":"OdstrániÅ¥ riadok",Dimensions:"Rozmery",Dotted:"Bodkovaná",Double:"Dvojitá","Enter table caption":"",Groove:"Drážkovaná","Header column":"Stĺpec hlaviÄky","Header row":"Riadok hlaviÄky",Height:"Výška","Horizontal text alignment toolbar":"Horizontálne zarovnanie textu v panely","Insert column left":"VložiÅ¥ stĺpec vľavo","Insert column right":"VložiÅ¥ stĺpec vpravo","Insert row above":"VložiÅ¥ riadok nad","Insert row below":"VložiÅ¥ riadok pod","Insert table":"VložiÅ¥ tabuľku",Inset:"Vložená z vnútra","Justify cell text":"ZarovnaÅ¥ text bunky z oboch strán","Merge cell down":"ZlúÄiÅ¥ bunku dole","Merge cell left":"ZlúÄiÅ¥ bunku vľavo","Merge cell right":"ZlúÄiÅ¥ bunku vpravo","Merge cell up":"ZlúÄiÅ¥ bunku hore","Merge cells":"ZlúÄiÅ¥ bunky",None:"Žiadna",Outset:"Vložená zvonku",Padding:"Vnútorný okraj",Ridge:"Rámovaná",Row:"Riadok","Select column":"VybraÅ¥ stĺpec","Select row":"VybraÅ¥ riadok",Solid:"Plná","Split cell horizontally":"RozdeliÅ¥ bunku vodorovne","Split cell vertically":"RozdeliÅ¥ bunku zvislo",Style:"Å týl","Table alignment toolbar":"Panel zarovnania tabuľky","Table cell text alignment":"Zarovnanie textu v bunke","Table properties":"Vlastnosti tabuľky","Table toolbar":"Panel nástrojov tabuľky",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Farba má nesprávny formát. Skúste "#FF0000", "rgb(255,0,0)" alebo "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Hodnota je nesprávna. Skúste "10px", "2em" alebo jednoducho "2".',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Vertikálne zarovnanie textu v panely",Width:"Å Ãrka"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const t=a.sk=a.sk||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"ÄŒiastoÄne rovný",Angle:"Uhol","Approximately equal to":"Aproximácia","Asterisk operator":"HviezdiÄka / násobenie","Austral sign":"Znak Austral","back with leftwards arrow above":"Å Ãpka späť","Bitcoin sign":"Mena Bitcoin","Cedi sign":"Znak Cedi","Cent sign":"Znak cent","Character categories":"Kategórie znakov","Colon sign":"Dvojbodka","Contains as member":"Obsahuje prvok","Copyright sign":"Copyright","Cruzeiro sign":"Mena Cruzeiro","Currency sign":"Znak meny","Degree sign":"Znak stupeň","Division sign":"Delenie","Dollar sign":"Znak Dolár","Dong sign":"Znak Dong","Double dagger":"DvojkrÞ","Double exclamation mark":"Dvojitý výkriÄnÃk","Double low-9 quotation mark":"Dvojitá spodná uvodzovka","Double question mark":"Dvojitý otáznik","downwards arrow to bar":"Å¡Ãpka nadol do zvislej Äiary","downwards dashed arrow":"preruÅ¡ovaná Å¡Ãpka nadol","downwards double arrow":"dvojitá Å¡Ãpka nadol","Drachma sign":"Znak Drachma","Element of":"Patrà / Je súÄasÅ¥ou","Em dash":"Dlhá pomĺÄka","Empty set":"Prázdna množina","En dash":"PomĺÄka","end with leftwards arrow above":"Å Ãpka koniec","Euro sign":"Znak Euro","Euro-currency sign":"Mena Euro","Exclamation question mark":"VýkriÄnÃk a otáznik","For all":"Pre vÅ¡etky prvky v množine","Fraction slash":"LomÃtko / Delenie","French franc sign":"Mena Francúzsky Frank","German penny sign":"Nemecká penny","Greater-than or equal to":"VäÄÅ¡Ã alebo rovný","Greater-than sign":"VäÄÅ¡Ã ako","Guarani sign":"Znak Guarani","Horizontal ellipsis":"Trojbodka","Hryvnia sign":"Znak Hryvnia","Identical to":"Identický k","Indian rupee sign":"Znak Indická rupia",Infinity:"NekoneÄno",Integral:"Integrál",Intersection:"PrieseÄnÃk / Prienik","Inverted exclamation mark":"Obrátený výkriÄnÃk","Inverted question mark":"Obrátený otáznik","Kip sign":"Znak Kip","Latin capital letter a with breve":"Latinské veľké pÃsmeno a s mäkÄeňom","Latin capital letter a with macron":"Latinské veľké pÃsmeno a s Äiarou","Latin capital letter a with ogonek":"Latinské veľké pÃsmeno a s háÄikom","Latin capital letter c with acute":"Latinské veľké pÃsmeno c s dĺžňom","Latin capital letter c with caron":"Latinské veľké pÃsmeno c s mäkÄeňom","Latin capital letter c with circumflex":"Latinské veľké pÃsmeno c s obráteným mäkÄeňom","Latin capital letter c with dot above":"Latinské veľké pÃsmeno c s bodkou nad znakom","Latin capital letter d with caron":"Latinské veľké pÃsmeno d s mäkÄeňom","Latin capital letter d with stroke":"Latinské veľké pÃsmeno d s preÄiarknutÃm","Latin capital letter e with breve":"Latinské veľké pÃsmeno e s mäkÄeňom","Latin capital letter e with caron":"Latinské veľké pÃsmeno e s mäkÄeňom","Latin capital letter e with dot above":"Latinské veľké pÃsmeno e s bodkou nad znakom","Latin capital letter e with macron":"Latinské veľké pÃsmeno e s Äiarou","Latin capital letter e with ogonek":"Latinské veľké pÃsmeno e s háÄikom","Latin capital letter eng":"Latinské veľké pÃsmeno Eng","Latin capital letter g with breve":"Latinské veľké pÃsmeno g s mäkÄeňom","Latin capital letter g with cedilla":"Latinské veľké pÃsmeno g s háÄikom","Latin capital letter g with circumflex":"Latinské veľké pÃsmeno g s obráteným mäkÄeňom","Latin capital letter g with dot above":"Latinské veľké pÃsmeno g s bodkou nad znakom","Latin capital letter h with circumflex":"Latinské veľké pÃsmeno h s obráteným mäkÄeňom","Latin capital letter h with stroke":"Latinské veľké pÃsmeno h s preÄiarknutÃm","Latin capital letter i with breve":"Latinské veľké pÃsmeno i s mäkÄeňom","Latin capital letter i with dot above":"Latinské veľké pÃsmeno i s bodkou nad znakom","Latin capital letter i with macron":"Latinské veľké pÃsmeno i s Äiarou","Latin capital letter i with ogonek":"Latinské veľké pÃsmeno i s háÄikom","Latin capital letter i with tilde":"Latinské veľké pÃsmeno i s vlnovkou","Latin capital letter j with circumflex":"Latinské veľké pÃsmeno j s obráteným mäkÄeňom","Latin capital letter k with cedilla":"Latinské veľké pÃsmeno k s háÄikom","Latin capital letter l with acute":"Latinské veľké pÃsmeno l s dĺžňom","Latin capital letter l with caron":"Latinské veľké pÃsmeno l s mäkÄeňom","Latin capital letter l with cedilla":"Latinské veľké pÃsmeno l s háÄikom","Latin capital letter l with middle dot":"Latinské veľké pÃsmeno l s bodkou uprostred","Latin capital letter l with stroke":"Latinské veľké pÃsmeno l s preÄiarknutÃm","Latin capital letter n with acute":"Latinské veľké pÃsmeno n s dĺžňom","Latin capital letter n with caron":"Latinské veľké pÃsmeno n s mäkÄeňom","Latin capital letter n with cedilla":"Latinské veľké pÃsmeno n s háÄikom","Latin capital letter o with breve":"Latinské veľké pÃsmeno o s mäkÄeňom","Latin capital letter o with double acute":"Latinské veľké pÃsmeno o s dĺžňom","Latin capital letter o with macron":"Latinské veľké pÃsmeno o s Äiarou","Latin capital letter r with acute":"Latinské veľké pÃsmeno r s dĺžňom","Latin capital letter r with caron":"Latinské veľké pÃsmeno r s mäkÄeňom","Latin capital letter r with cedilla":"Latinské veľké pÃsmeno r s háÄikom","Latin capital letter s with acute":"Latinské veľké pÃsmeno s s dĺžňom","Latin capital letter s with caron":"Latinské veľké pÃsmeno s s mäkÄeňom","Latin capital letter s with cedilla":"Latinské veľké pÃsmeno s s háÄikom","Latin capital letter s with circumflex":"Latinské veľké pÃsmeno s s obráteným mäkÄeňom","Latin capital letter t with caron":"Latinské veľké pÃsmeno t s mäkÄeňom","Latin capital letter t with cedilla":"Latinské veľké pÃsmeno t s háÄikom","Latin capital letter t with stroke":"Latinské veľké pÃsmeno t s preÄiarknutÃm","Latin capital letter u with breve":"Latinské veľké pÃsmeno u s mäkÄeňom","Latin capital letter u with double acute":"Latinské veľké pÃsmeno u s dvojitým dĺžňom","Latin capital letter u with macron":"Latinské veľké pÃsmeno u s Äiarou","Latin capital letter u with ogonek":"Latinské veľké pÃsmeno u s háÄikom","Latin capital letter u with ring above":"Latinské veľké pÃsmeno u s krúžkom nad znakom","Latin capital letter u with tilde":"Latinské veľké pÃsmeno u s vlnovkou","Latin capital letter w with circumflex":"Latinské veľké pÃsmeno w s obráteným mäkÄeňom","Latin capital letter y with circumflex":"Latinské veľké pÃsmeno y s obráteným mäkÄeňom","Latin capital letter y with diaeresis":"Latinské veľké pÃsmeno y s dvojbodkou nad znakom","Latin capital letter z with acute":"Latinské veľké pÃsmeno z s dĺžňom","Latin capital letter z with caron":"Latinské veľké pÃsmeno z s mäkÄeňom","Latin capital letter z with dot above":"Latinské veľké pÃsmeno z s bodkou nad znakom","Latin capital ligature ij":"Latinský veľký znak ligatúry ij","Latin capital ligature oe":"Latinský veľký znak ligatúry oe","Latin small letter a with breve":"Latinské malé pÃsmeno a s mäkÄeňom","Latin small letter a with macron":"Latinské malé pÃsmeno a s Äiarou","Latin small letter a with ogonek":"Latinské malé pÃsmeno a s háÄikom","Latin small letter c with acute":"Latinské malé pÃsmeno c s dĺžňom","Latin small letter c with caron":"Latinské malé pÃsmeno c s mäkÄeňom","Latin small letter c with circumflex":"Latinské malé pÃsmeno c s obráteným mäkÄeňom","Latin small letter c with dot above":"Latinské malé pÃsmeno c s bodkou nad znakom","Latin small letter d with caron":"Latinské malé pÃsmeno d s mäkÄeňom","Latin small letter d with stroke":"Latinské malé pÃsmeno d s preÄiarknutÃm","Latin small letter dotless i":"Latinské malé pÃsmeno i bez bodky","Latin small letter e with breve":"Latinské malé pÃsmeno e s mäkÄeňom","Latin small letter e with caron":"Latinské malé pÃsmeno e s mäkÄeňom","Latin small letter e with dot above":"Latinské malé pÃsmeno e s bodkou nad znakom","Latin small letter e with macron":"Latinské malé pÃsmeno e s Äiarou","Latin small letter e with ogonek":"Latinské malé pÃsmeno e s háÄikom","Latin small letter eng":"Latinské malé pÃsmeno Eng","Latin small letter f with hook":"Funkcia","Latin small letter g with breve":"Latinské malé pÃsmeno g s mäkÄeňom","Latin small letter g with cedilla":"Latinské malé pÃsmeno g s háÄikom","Latin small letter g with circumflex":"Latinské malé pÃsmeno g s obráteným mäkÄeňom","Latin small letter g with dot above":"Latinské malé pÃsmeno g s bodkou nad znakom","Latin small letter h with circumflex":"Latinské malé pÃsmeno h s obráteným mäkÄeňom","Latin small letter h with stroke":"Latinské malé pÃsmeno h s preÄiarknutÃm","Latin small letter i with breve":"Latinské malé pÃsmeno i s mäkÄeňom","Latin small letter i with macron":"Latinské malé pÃsmeno i s Äiarou","Latin small letter i with ogonek":"Latinské malé pÃsmeno i s háÄikom","Latin small letter i with tilde":"Latinské malé pÃsmeno i s vlnovkou","Latin small letter j with circumflex":"Latinské malé pÃsmeno j s obráteným mäkÄeňom","Latin small letter k with cedilla":"Latinské malé pÃsmeno k s háÄikom","Latin small letter kra":"latinský malý znak Kra","Latin small letter l with acute":"Latinské malé pÃsmeno l s dĺžňom","Latin small letter l with caron":"Latinské malé pÃsmeno l s mäkÄeňom","Latin small letter l with cedilla":"Latinské malé pÃsmeno l s háÄikom","Latin small letter l with middle dot":"Latinské malé pÃsmeno l s bodkou uprostred","Latin small letter l with stroke":"Latinské malé pÃsmeno l s preÄiarknutÃm","Latin small letter long s":"Malé dlhé pÃsmeno s","Latin small letter n preceded by apostrophe":"Latinské malé pÃsmeno n s apostrofom","Latin small letter n with acute":"Latinské malé pÃsmeno n s dĺžňom","Latin small letter n with caron":"Latinské malé pÃsmeno n s mäkÄeňom","Latin small letter n with cedilla":"Latinské malé pÃsmeno n s háÄikom","Latin small letter o with breve":"Latinské malé pÃsmeno o s mäkÄeňom","Latin small letter o with double acute":"Latinské malé pÃsmeno o s dĺžňom","Latin small letter o with macron":"Latinské malé pÃsmeno o s Äiarou","Latin small letter r with acute":"Latinské malé pÃsmeno r s dĺžňom","Latin small letter r with caron":"Latinské malé pÃsmeno r s mäkÄeňom","Latin small letter r with cedilla":"Latinské malé pÃsmeno r s háÄikom","Latin small letter s with acute":"Latinské malé pÃsmeno s s dĺžňom","Latin small letter s with caron":"Latinské malé pÃsmeno s s mäkÄeňom","Latin small letter s with cedilla":"Latinské malé pÃsmeno s s háÄikom","Latin small letter s with circumflex":"Latinské malé pÃsmeno s s obráteným mäkÄeňom","Latin small letter t with caron":"Latinské malé pÃsmeno t s mäkÄeňom","Latin small letter t with cedilla":"Latinské malé pÃsmeno t s háÄikom","Latin small letter t with stroke":"Latinské malé pÃsmeno t s preÄiarknutÃm","Latin small letter u with breve":"Latinské malé pÃsmeno u s mäkÄeňom","Latin small letter u with double acute":"Latinské malé pÃsmeno u s dvojitým dĺžňom","Latin small letter u with macron":"Latinské malé pÃsmeno o s Äiarou","Latin small letter u with ogonek":"Latinské malé pÃsmeno u s háÄikom","Latin small letter u with ring above":"Latinské malé pÃsmeno u s krúžkom nad znakom","Latin small letter u with tilde":"Latinské malé pÃsmeno u s vlnovkou","Latin small letter w with circumflex":"Latinské malé pÃsmeno w s obráteným mäkÄeňom","Latin small letter y with circumflex":"Latinské malé pÃsmeno y s obráteným mäkÄeňom","Latin small letter z with acute":"Latinské malé pÃsmeno z s dĺžňom","Latin small letter z with caron":"Malé pÃsmeno s z mäkÄeňom","Latin small letter z with dot above":"Latinské malé pÃsmeno z s bodkou nad znakom","Latin small ligature ij":"Latinský malý znak ligatúry ij","Latin small ligature oe":"Latinský malý znak ligatúry oe","Left double quotation mark":"Ľavá dvojitá uvodzovka","Left single quotation mark":"Ľavá uvodzovka","Left-pointing double angle quotation mark":"Dvojitá Å¡Ãpka ukazujúca doľava","leftwards arrow to bar":"Å¡Ãpka doľava do zvislej Äiary","leftwards dashed arrow":"preruÅ¡ovaná Å¡Ãpka doľava","leftwards double arrow":"dvojitá Å¡Ãpka doľava","Less-than or equal to":"MenÅ¡Ã alebo rovný","Less-than sign":"MenÅ¡Ã ako","Lira sign":"Mena LÃra","Livre tournois sign":"Znak Livre tournois","Logical and":"Logický AND","Logical or":"Logický OR",Macron:"Horná Äiara","Manat sign":"Znak Manat","Mill sign":"Znak Mill","Minus sign":"Znak mÃnus","Multiplication sign":"Násobenie","N-ary product":"Znak cyklického násobenia","N-ary summation":"Znak cyklického sÄÃtania",Nabla:"Nabla","Naira sign":"Znak Naira","New sheqel sign":"Nový znak Å¡ekelu","Nordic mark sign":"Znak Nórska marka","Not an element of":"Nepatrà / Nie je súÄasÅ¥ou","Not equal to":"Nerovná sa","Not sign":"Nie je rovný","on with exclamation mark with left right arrow above":"ON s výkriÄnÃkom so Å¡Ãpkou doľava doprava hore",Overline:"PreÅ¡krtnutie","Paragraph sign":"Odsek","Partial differential":"Parciálna diferencia","Per mille sign":"Promile","Per ten thousand sign":"Na desaÅ¥tisÃc","Peseta sign":"Znak Peseta","Peso sign":"Znak Peso","Plus-minus sign":"Znak plus-mÃnus","Pound sign":"Znak Libra","Proportional to":"Úmerný k","Question exclamation mark":"Otáznik a výkriÄnÃk","Registered sign":"Registrovaný","Reversed paragraph sign":"Obrátený znak odseku","Right double quotation mark":"Pravá dvojitá uvodzovka","Right single quotation mark":"Pravá uvodzovka","Right-pointing double angle quotation mark":"Dvojitá Å¡Ãpka ukazujúca doprava","rightwards arrow to bar":"Å¡Ãpka doprava do zvislej Äiary","rightwards dashed arrow":"Äiarkovaná Å¡Ãpka doprava","rightwards double arrow":"dvojitá Å¡Ãpka doprava","Ruble sign":"Znak Ruble","Rupee sign":"Znak Rupee","Section sign":"Sekcia","Single left-pointing angle quotation mark":"Å Ãpka ukazujúca doľava","Single low-9 quotation mark":"Spodná uvodzovka","Single right-pointing angle quotation mark":"Å Ãpka ukazujúca doprava","soon with rightwards arrow above":"Äoskoro so Å¡Ãpkou doprava hore","Special characters":"Å peciálne znaky","Spesmilo sign":"Znak Spesmilo","Square root":"Odmocnina","Tenge sign":"Znak Tenge","There exists":"Existuje v množine","Tilde operator":"Vlnovka","top with upwards arrow above":"TOP so Å¡Ãpkou hore","Trade mark sign":"Ochranná známka","Tugrik sign":"Znak Tugrik","Turkish lira sign":"Znak Turecká lÃra","Two dot leader":"Horizontálna dvojbodka",Union:"Zjednotenie","up down arrow with base":"Å Ãpka hore-dole od základne","upwards arrow to bar":"Å¡Ãpka nahor do zvislej Äiary","upwards dashed arrow":"Äiarkovaná Å¡Ãpka nahor","upwards double arrow":"dvojitá Å¡Ãpka nahor","Vulgar fraction one half":"Polovica","Vulgar fraction one quarter":"Jedna Å¡tvrtina","Vulgar fraction three quarters":"Tri Å¡tvrtiny","Won sign":"Znak Won","Yen sign":"Znak Jen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const e=o.sk=o.sk||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"AkvamarÃnová",Black:"ÄŒierna",Blue:"Modrá",Cancel:"ZruÅ¡iÅ¥","Dim grey":"Tmavosivá","Dropdown toolbar":"Panel nástrojov roletového menu","Edit block":"UpraviÅ¥ odsek","Editor toolbar":"Panel nástrojov editora",Green:"Zelená",Grey:"Sivá","Insert paragraph after block":"VložiÅ¥ odstavec za blok","Insert paragraph before block":"VložiÅ¥ odstavec pred blok","Light blue":"Bledomodrá","Light green":"Bledozelená","Light grey":"Bledosivá",Next:"ÄŽalÅ¡ie",Orange:"Oranžová",Previous:"Predchádzajúce",Purple:"Fialová",Red:"ÄŒervená",Redo:"Znova","Remove color":"ZruÅ¡iÅ¥ farbu","Restore default":"","Rich Text Editor":"Editor s formátovanÃm","Rich Text Editor, %0":"Editor s formátovanÃm, %0",Save:"UložiÅ¥","Select all":"OznaÄiÅ¥ vÅ¡etko","Show more items":"ZobraziÅ¥ viac položiek",Turquoise:"Tyrkysová",Undo:"Späť","Upload in progress":"Prebieha nahrávanie",White:"Biela","Widget toolbar":"Panel nástrojov ovládacieho prvku",Yellow:"Žltá"}),e.getPluralForm=function(o){return o%1==0&&1==o?0:o%1==0&&o>=2&&o<=4?1:o%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/sl.js b/core/assets/vendor/ckeditor5/translations/sl.js new file mode 100644 index 000000000000..60bc2569f0ee --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/sl.js @@ -0,0 +1 @@ +!function(a){const n=a.sl=a.sl||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Sredinska poravnava","Align left":"Poravnava levo","Align right":"Poravnava desno",Justify:"Postavi na sredino","Text alignment":"Poravnava besedila","Text alignment toolbar":"Orodna vrstica besedila"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const i=o.sl=o.sl||{};i.dictionary=Object.assign(i.dictionary||{},{Bold:"Krepko",Code:"Koda",Italic:"PoÅ¡evno",Strikethrough:"PreÄrtano",Subscript:"NaroÄnik",Superscript:"Nadpis",Underline:"PodÄrtaj"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.sl=i.sl||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Blokiraj citat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const i=a.sl=a.sl||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose heading":"Izberi naslov",Heading:"Naslov","Heading 1":"Naslov 1","Heading 2":"Naslov 2","Heading 3":"Naslov 3","Heading 4":"Naslov 4","Heading 5":"Naslov 5","Heading 6":"Naslov 6",Paragraph:"Odstavek","Type or paste your content here.":"Vnesi ali prilepi vsebino","Type your title":"Vnesi naslov"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.sl=n.sl||{};i.dictionary=Object.assign(i.dictionary||{},{"Horizontal line":"Vodoravna Ärta"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.sl=e.sl||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"Akvamarin",Black:"ÄŒrna",Blue:"Modra",Cancel:"PrekliÄi","Dim grey":"Temno siva","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"Zelena",Grey:"Siva","Light blue":"Svetlo modra","Light green":"Svetlo zelena","Light grey":"Svetlo siva",Next:"",Orange:"Oranžna",Previous:"",Purple:"VijoliÄna",Red:"RdeÄa","Remove color":"Odstrani barvo","Restore default":"","Rich Text Editor":"","Rich Text Editor, %0":"",Save:"Shrani","Show more items":"",Turquoise:"Turkizna",White:"Bela",Yellow:"Rumena"}),o.getPluralForm=function(e){return e%100==1?0:e%100==2?1:e%100==3||e%100==4?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/sq.js b/core/assets/vendor/ckeditor5/translations/sq.js new file mode 100644 index 000000000000..9e3a0a94aba5 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/sq.js @@ -0,0 +1 @@ +!function(t){const i=t.sq=t.sq||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Radhit në mes","Align left":"Radhit majtas","Align right":"Radhit djathtas",Justify:"Plotësim","Text alignment":"Radhitja e tekstit","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sq=i.sq||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Trash",Code:"Kod",Italic:"Pjerrtë",Strikethrough:"Vi në mes",Subscript:"",Superscript:"",Underline:"Nënvizuar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.sq=n.sq||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Thonjëzat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sq=i.sq||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose heading":"Përzgjidh nëntitullin",Heading:"Nëntitulli","Heading 1":"Nëntitulli 1","Heading 2":"Nëntitulli 2","Heading 3":"Nëntitulli 3","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"Paragrafi","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.sq=e.sq||{};t.dictionary=Object.assign(t.dictionary||{},{"Break text":"","Centered image":"Foto e vendosur në mes","Change image text alternative":"Ndrysho tekstin zgjedhor të fotos","Enter image caption":"Shto përshkrimin e fotos","Full size image":"Foto me madhësi të plotë","Image resize list":"","Image toolbar":"","image widget":"Vegla e fotos","In line":"",Insert:"","Insert image":"Shto Foto","Insert image via URL":"","Left aligned image":"Foto e vendosur majtas",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Foto e vendosur djathtas","Side image":"Foto anësore","Text alternative":"Teksti zgjedhor",Update:"","Update image URL":"","Upload failed":"Ngarkimi dështoi","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.sq=n.sq||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"Redakto nyjën",Link:"Shto nyjën","Link image":"","Link URL":"Nyja e URL-së","Open in a new tab":"","Open link in new tab":"Hap nyjën në faqe të re","This link has no URL":"Kjo nyje nuk ka URL",Unlink:"Largo nyjën"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.sq=e.sq||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Listë me Pika","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Listë me Numra","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const e=t.sq=t.sq||{};e.dictionary=Object.assign(e.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Kolona",Dashed:"","Delete column":"Gris kolonën","Delete row":"Grish rreshtin",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Kolona e kokës","Header row":"Rreshti i kokës",Height:"","Horizontal text alignment toolbar":"","Insert column left":"","Insert column right":"","Insert row above":"Shto rresht sipër","Insert row below":"Shto rresht poshtë","Insert table":"Shto tabelë",Inset:"","Justify cell text":"","Merge cell down":"Bashko kutizat poshtë","Merge cell left":"Bashko kutizat majtas","Merge cell right":"Bashko kutizat djathtas","Merge cell up":"Bashko kutizat sipër","Merge cells":"Bashko kutizat",None:"",Outset:"",Padding:"",Ridge:"",Row:"Rreshti","Select column":"","Select row":"",Solid:"","Split cell horizontally":"Ndaj kutizat horizontalisht","Split cell vertically":"Ndajë kutizat vertikalisht",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.sq=e.sq||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Anulo","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Ribëj","Remove color":"","Restore default":"","Rich Text Editor":"Redaktues i Tekstit të Pasur","Rich Text Editor, %0":"Redaktues i Tekstit të Pasur, %0",Save:"Ruaj","Show more items":"",Turquoise:"",Undo:"Rikthe","Upload in progress":"Duke ngarkuar",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/sr-latn.js b/core/assets/vendor/ckeditor5/translations/sr-latn.js new file mode 100644 index 000000000000..8f01a2c44c61 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/sr-latn.js @@ -0,0 +1 @@ +!function(n){const a=n["sr-latn"]=n["sr-latn"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Align center":"Centralno ravnanje","Align left":"Levo ravnanje","Align right":"Desno ravnanje",Justify:"Obostrano ravnanje","Text alignment":"Ravnanje teksta","Text alignment toolbar":"Alatke za ravnanje teksta"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n["sr-latn"]=n["sr-latn"]||{};o.dictionary=Object.assign(o.dictionary||{},{Bold:"Podebljano",Code:"Kod",Italic:"Kurziv",Strikethrough:"Precrtan",Subscript:"Index dole",Superscript:"Index gore",Underline:"PodvuÄen"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const t=n["sr-latn"]=n["sr-latn"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Block quote":"Citat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const i=a["sr-latn"]=a["sr-latn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Choose heading":"Odredi stil",Heading:"Stilovi","Heading 1":"Naslov 1","Heading 2":"Naslov 2","Heading 3":"Naslov 3","Heading 4":"Naslov 4","Heading 5":"Naslov 5","Heading 6":"Naslov 6",Paragraph:"Pasus","Type or paste your content here.":"UpiÅ¡ite ili nalepite naslov","Type your title":"Odredite naslov"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["sr-latn"]=n["sr-latn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Horizontal line":"Horizontalna razdelna linija"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e["sr-latn"]=e["sr-latn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"Prelom teksta","Centered image":"Slika u sredini","Change image text alternative":"Izmena alternativnog teksta","Enter image caption":"Odredi tekst ispod slike","Full size image":"Slika u punoj veliÄini","Image resize list":"Lista veliÄine slike","Image toolbar":"Slika traka sa alatkama","image widget":"modul sa slikom","In line":"U redu",Insert:"Ubaci","Insert image":"Dodaj sliku","Insert image via URL":"Ubaci sliku preko URL-a","Left aligned image":"Leva slika",Original:"Original","Resize image":"Promenite veliÄinu slike","Resize image to %0":"Promenite veliÄinu slike na% 0","Resize image to the original size":"Promenite veliÄinu slike do originalne veliÄine","Right aligned image":"Desna slika","Side image":"BoÄna slika","Text alternative":"Alternativni tekst",Update:"Ažuriraj","Update image URL":"Ažuriraj URL slike","Upload failed":"Postavljanje neuspeÅ¡no","Wrap text":"Prelomiti tekst"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n["sr-latn"]=n["sr-latn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Smanji uvlaÄenje","Increase indent":"Povećaj uclaÄenje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n["sr-latn"]=n["sr-latn"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"Izaberi jezik",Language:"Jezik","Remove language":"Odstrani jezik"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["sr-latn"]=n["sr-latn"]||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Moguće preuzimanje","Edit link":"Ispravi link",Link:"Link","Link image":"Link slike","Link URL":"URL link","Open in a new tab":"Otvori u novoj kartici","Open link in new tab":"Otvori link u novom prozoru","This link has no URL":"Link ne sadrži URL",Unlink:"Оtkloni link"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const e=i["sr-latn"]=i["sr-latn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"Bulleted List":"Nabrajane liste","Bulleted list styles toolbar":"Traka sa alatkama za nabrajane liste",Circle:"Krug",Decimal:"Decimala","Decimal with leading zero":"Decimalni broj sa nulom na poÄetku",Disc:"Disk","Lower-latin":"Donji - latinski","Lower–roman":"Donji - rimski","Numbered List":"Lista sa brojevima","Numbered list styles toolbar":"Traka sa altakama za liste sa brojevima",Square:"Kvadrat","To-do List":"Lista obaveza","Toggle the circle list style":"UkljuÄite / iskljuÄite stil liste krugova","Toggle the decimal list style":"UkljuÄi / iskljuÄi stil dekadne liste","Toggle the decimal with leading zero list style":"Prebaci decimalni znak sa vodecÌim stilom liste nula","Toggle the disc list style":"UkljuÄite / iskljuÄite stil liste diskova","Toggle the lower–latin list style":"UkljuÄite / iskljuÄite stil donje liste latinice","Toggle the lower–roman list style":"UkljuÄite / iskljuÄite stil donje rimske liste","Toggle the square list style":"UkljuÄite / iskljuÄite stil liste kvadrata","Toggle the upper–latin list style":"UkljuÄite / iskljuÄite stil gornje liste latinice","Toggle the upper–roman list style":"UkljuÄite / iskljuÄite stil gornje rimske liste","Upper-latin":"Gornji - latinski","Upper-roman":"Gornji - rimski"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["sr-latn"]=n["sr-latn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"Ukloni formatiranje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["sr-latn"]=n["sr-latn"]||{};i.dictionary=Object.assign(i.dictionary||{},{Source:"Izvor"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e["sr-latn"]=e["sr-latn"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Align cell text to the bottom":"Poravnajte tekst cÌelije prema dole","Align cell text to the center":"Poravnajte tekst cÌelije u sredinu","Align cell text to the left":"Poravnajte tekst cÌelije levo","Align cell text to the middle":"Poravnajte tekst cÌelije u sredinu","Align cell text to the right":"Poravnajte tekst cÌelije desno","Align cell text to the top":"Poravnajte tekst cÌelije prema gore","Align table to the left":"Poravnajte tabelu na levu stranu","Align table to the right":"Poravnajte tabelu na desnu stranu",Alignment:"Poravnanje",Background:"Pozadina",Border:"Granica","Cell properties":"Svojstva ćelije","Center table":"Centar tabele",Color:"Boja","Color picker":"BiraÄ boja",Column:"Kolona",Dashed:"Razbijeno","Delete column":"BriÅ¡i kolonu","Delete row":"BriÅ¡i red",Dimensions:"Dimenzija",Dotted:"Sa taÄkama",Double:"Dvostruki","Enter table caption":"Unesite naslov tabele",Groove:"Kolosek","Header column":"Kolona za zaglavlje","Header row":"Red za zaglavlje",Height:"Visina","Horizontal text alignment toolbar":"Horizontalna traka sa alatkama za poravnavanje teksta","Insert column left":"Dodaj kolonu levo","Insert column right":"Dodaj kolonu desno","Insert row above":"Dodaj red iznad","Insert row below":"Dodaj red ispod","Insert table":"Dodaj tabelu",Inset:"Prilog","Justify cell text":"Opravdajte tekst cÌelije","Merge cell down":"Spoj ćelije na dole","Merge cell left":"Spoj ćelije na levo","Merge cell right":"Spoj ćelije na desno","Merge cell up":"Spoj ćelije na gore","Merge cells":"Spoj ćelije",None:"Nijedan",Outset:"PoÄetak",Padding:"Postavljanje",Ridge:"Greben",Row:"Red","Select column":"Odaberi kolonu","Select row":"Odaberi red",Solid:"ÄŒvrst","Split cell horizontally":"Deli ćelije vodoravno","Split cell vertically":"Deli ćelije uspravno",Style:"Stil","Table alignment toolbar":"Traka sa alatkama za poravnavanje tabele","Table cell text alignment":"Poravnaj tekst u tabeli","Table properties":"Svojstva tabele","Table toolbar":"Tabela traka sa alatkama",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Boja je nevažecÌa. PokuÅ¡ajte sa "# FF0000" ili "rgb (255,0,0)" ili "crvena".','The value is invalid. Try "10px" or "2em" or simply "2".':"Vrednost je nevažecÌa. PokuÅ¡ajte sa „10pk“ ili „2em“ ili jednostavno „2“.","Toggle caption off":"IskljuÄivanje natpisa","Toggle caption on":"UkljuÄite naslov","Vertical text alignment toolbar":"Vertikalna traka sa alatkama za poravnavanje teksta",Width:"Å irina"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const t=n["sr-latn"]=n["sr-latn"]||{};t.dictionary=Object.assign(t.dictionary||{},{"HTML object":"HTML objеkat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const t=a["sr-latn"]=a["sr-latn"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Skoro jednako",Angle:"Ugao","Approximately equal to":"Otprilike jednako","Asterisk operator":"Asterisk operator","Austral sign":"Australni znak","back with leftwards arrow above":"Nazad sa strelicom levo","Bitcoin sign":"Znak bitcoina","Cedi sign":"Znak cedi","Cent sign":"Znak centа","Character categories":"Kategorija karaktera","Colon sign":"DvotaÄka","Contains as member":"Sadrži kao Älan","Copyright sign":"Simbol autorskog prava","Cruzeiro sign":"Znak cruzeiro","Currency sign":"Znak valute","Degree sign":"Znak stepena","Division sign":"Znak divizije","Dollar sign":"Znak dolara","Dong sign":"Znak dong","Double dagger":"Dvostruki bodež","Double exclamation mark":"Dvosrtuki uzviÄnik","Double low-9 quotation mark":"Dvostruki niski-9 navodnik","Double question mark":"Dvostruki upitnik","downwards arrow to bar":"Strelica prema dole ka traci","downwards dashed arrow":"Prekidana strelica prema dole","downwards double arrow":"Dupla strelica prema dole","Drachma sign":"Znak drahma","Element of":"Element od","Em dash":"Em crtica","Empty set":"Prazan set","En dash":"En crtica","end with leftwards arrow above":"ZavrÅ¡ite strelicom levo","Euro sign":"Znak eura","Euro-currency sign":"Znak valute eura","Exclamation question mark":"Znak uzviÄnika upitnika","For all":"Za sve","Fraction slash":"Crta frakcije","French franc sign":"Znak francuskog franaka","German penny sign":"Znak nemaÄki peni","Greater-than or equal to":"Znak veće od ili jednako","Greater-than sign":"Znak veće od","Guarani sign":"Znak guarani","Horizontal ellipsis":"Horizontalna elipsa","Hryvnia sign":"Znak grivna","Identical to":"IdentiÄan","Indian rupee sign":"Znak indijske rupije",Infinity:"BeskonaÄnost",Integral:"Integral",Intersection:"Raskrsnica","Inverted exclamation mark":"Obrnuti uzviÄnik","Inverted question mark":"Obrnuti upitnik","Kip sign":"Znak kip","Latin capital letter a with breve":"Latinsko veliko slovo a sa brevom","Latin capital letter a with macron":"Latinsko veliko slovo a sa makronom","Latin capital letter a with ogonek":"Latinsko veliko slovo a sa ogonek","Latin capital letter c with acute":"Latinsko veliko slovo c sa akutom","Latin capital letter c with caron":"Latinsko veliko slovo c sa caronom","Latin capital letter c with circumflex":"Latinsko veliko slovo c sa circumflex","Latin capital letter c with dot above":"Latinsko veliko slovo c sa taÄkom iznad","Latin capital letter d with caron":"Latinsko veliko slovo d sa caronom","Latin capital letter d with stroke":"Latinsko veliko slovo d sa stroke","Latin capital letter e with breve":"Latinsko veliko slovo e sa breve","Latin capital letter e with caron":"Latinsko veliko slovo e sa caron","Latin capital letter e with dot above":"Latinsko veliko slovo e sa taÄkom iznad","Latin capital letter e with macron":"Latinsko veliko slovo e sa macron","Latin capital letter e with ogonek":"Latinsko veliko slovo e sa ogonek","Latin capital letter eng":"Latinsko veliko slovo eng","Latin capital letter g with breve":"Latinsko veliko slovo g sa breve","Latin capital letter g with cedilla":"Latinsko veliko slovo g sa cedillom","Latin capital letter g with circumflex":"Latinsko veliko slovo g sa circumflex","Latin capital letter g with dot above":"Latinsko veliko slovo g sa taÄkom iznad","Latin capital letter h with circumflex":"Latinsko veliko slovo h sa circumflex","Latin capital letter h with stroke":"Latinsko veliko slovo h sa stroke","Latin capital letter i with breve":"Latinsko veloko slovo i sa breve","Latin capital letter i with dot above":"Latinsko veliko slovo i sa tackom iznad","Latin capital letter i with macron":"Latinsko veliko slovo i sa macron","Latin capital letter i with ogonek":"Latinsko veliko slovo i sa ogonek","Latin capital letter i with tilde":"Latinsko veliko slovo i sa tildom","Latin capital letter j with circumflex":"Latinsko veliko slovo j sa circumflex","Latin capital letter k with cedilla":"Latinsko veliko slovo k sa cedila","Latin capital letter l with acute":"Latinsko veloko slovo l sa akutom","Latin capital letter l with caron":"Latinsko veliko slovo l sa caron","Latin capital letter l with cedilla":"Latinsko veliko slovo l sa cedila","Latin capital letter l with middle dot":"Latinsko veliko slovo l sa srednjom taÄkom","Latin capital letter l with stroke":"Latinsko veliko slovo l sa stroke","Latin capital letter n with acute":"Latinsko veliko slovo n sa akutom ","Latin capital letter n with caron":"Latinsko veliko slovo n sa caron","Latin capital letter n with cedilla":"Latinsko veliko slovo n sa cedilom","Latin capital letter o with breve":"Latinsko veliko slovo o sa breve","Latin capital letter o with double acute":"Latinsko veliko slovo o sa dvostrukom akutom","Latin capital letter o with macron":"Latinsko veliko slovo o sa macron","Latin capital letter r with acute":"Latinsko veliko slovo r sa akutom","Latin capital letter r with caron":"Latinsko veliko slovo r sa caron","Latin capital letter r with cedilla":"Latinsko veliko slovo r sa cedila","Latin capital letter s with acute":"Latinsko veliko slovo s sa akutom","Latin capital letter s with caron":"Latinsko veliko slovo s sa caron","Latin capital letter s with cedilla":"Latinsko veliko slovo s sa cedila","Latin capital letter s with circumflex":"Latinsko veliko slovo s sa circumflex","Latin capital letter t with caron":"Latinsko veliko slovo t sa caron","Latin capital letter t with cedilla":"Latinsko veliko slovo t sa cedila","Latin capital letter t with stroke":"Latinsko veliko slovo t sa stroke","Latin capital letter u with breve":"Latinsko veliko slovo u sa breve","Latin capital letter u with double acute":"Latinsko veliko slovo u s dvostrukom akutom","Latin capital letter u with macron":"Latinsko veliko slovo u sa macron","Latin capital letter u with ogonek":"Latinsko veliko slovo u sa ogonek","Latin capital letter u with ring above":"Latinsko veliko slovo u s prstenom iznad","Latin capital letter u with tilde":"Latinsko veliko slovo u sa tildom","Latin capital letter w with circumflex":"Latinsko veliko slovo w sa circumflex","Latin capital letter y with circumflex":"Latinsko veliko slovo y sa circumflex","Latin capital letter y with diaeresis":"Latinsko veliko slovo y sa dijarezom","Latin capital letter z with acute":"Latinsko veliko slovo z sa akutom","Latin capital letter z with caron":"Latinsko veliko slovo z sa caron","Latin capital letter z with dot above":"Latinsko veliko slovo z sa taÄkom iznad","Latin capital ligature ij":"Latinska velika ligatura ij","Latin capital ligature oe":"Latinska velika ligatura oe","Latin small letter a with breve":"Latinsko malo slovo a sa brevom","Latin small letter a with macron":"Latinsko malo slovo a sa makronom","Latin small letter a with ogonek":"Latinsko malo slovo a sa ogonek","Latin small letter c with acute":"Latinsko malo slovo c sa akutom","Latin small letter c with caron":"Latinsko malo slovo c sa caronom","Latin small letter c with circumflex":"Latino malo slovo c sa circumflex","Latin small letter c with dot above":"Latinsko malo slovo c sa taÄkom iznad","Latin small letter d with caron":"Latinsko malo slovo d sa caronom","Latin small letter d with stroke":"Latinsko malo slovo d sa stroke","Latin small letter dotless i":"Latinsko malo slovo i bez taÄke","Latin small letter e with breve":"Latinsko malo slovo e sa breve","Latin small letter e with caron":"Latinsko malo slovo e sa caron","Latin small letter e with dot above":"Latinsko malo slovo e sa taÄkom iznad","Latin small letter e with macron":"Latinsko malo slovo e sa macron","Latin small letter e with ogonek":"Latinsko malo slovo e sa ogonek","Latin small letter eng":"Latinsko malo slovo eng","Latin small letter f with hook":"Latinsko malo slovo f sa kukom","Latin small letter g with breve":"Latinsko malo slovo g sa breve","Latin small letter g with cedilla":"Latinsko malo slovo g sa cedillom","Latin small letter g with circumflex":"Latinsko malo slovo g sa circumflex","Latin small letter g with dot above":"Latinsko malo slovo g sa taÄkom iznad","Latin small letter h with circumflex":"Latinsko malo slovo h sa circumflex","Latin small letter h with stroke":"Latinsko malo slovo h sa stroke","Latin small letter i with breve":"Latinsko malo slovo i sa breve","Latin small letter i with macron":"Latinsko malo slovo i sa macron","Latin small letter i with ogonek":"Latinsko malo slovo i sa ogonek","Latin small letter i with tilde":"Latinsko malo slovo i sa tildom","Latin small letter j with circumflex":"Latinsko malo slovo j sa circumflex","Latin small letter k with cedilla":"Latinsko malo slovo k sa cedila","Latin small letter kra":"Latinsko malo slovo kra","Latin small letter l with acute":"Latinsko malo slovo l sa akutom","Latin small letter l with caron":"Latinsko malo slovo l sa caron","Latin small letter l with cedilla":"Latinsko malo slovo l sa cedila","Latin small letter l with middle dot":"Latinsko malo slovo l sa srednjom taÄkom","Latin small letter l with stroke":"Latinsko malo slovo l sa stroke","Latin small letter long s":"Latinsko malo slovo dugaÄko s","Latin small letter n preceded by apostrophe":"Latinsko malo slovo n koje prethodi apostrof","Latin small letter n with acute":"Latinsko malo slovo n sa akutom ","Latin small letter n with caron":"Latinsko malo slovo n sa caron ","Latin small letter n with cedilla":"Latinsko malo slovo n sa cedilom","Latin small letter o with breve":"Latinsko malo slovo o sa breve","Latin small letter o with double acute":"Latinsko malo slovo o sa dvostrukom akutom","Latin small letter o with macron":"Latinsko malo slovo o sa macron","Latin small letter r with acute":"Latinsko malo slovo r sa akutom","Latin small letter r with caron":"Latinsko malo slovo r sa caron","Latin small letter r with cedilla":"Latinsko malo slovo r sa cedila","Latin small letter s with acute":"Latinsko malo slovo s sa akutom","Latin small letter s with caron":"Latinsko malo slovo s sa caron","Latin small letter s with cedilla":"Latinsko malo slovo s sa cedila","Latin small letter s with circumflex":"Latinsko malo slovo s sa circumflex","Latin small letter t with caron":"Latinsko malo slovo t sa caron","Latin small letter t with cedilla":"Latinsko malo slovo t sa cedila","Latin small letter t with stroke":"Latinsko malo slovo t sa stroke","Latin small letter u with breve":"Latinsko malo slovo u sa breve","Latin small letter u with double acute":"Latinsko malo slovo u s dvostrukom akutom","Latin small letter u with macron":"Latinsko malo slovo u sa macron","Latin small letter u with ogonek":"Latinsko malo slovo u sa ogonek","Latin small letter u with ring above":"Latinsko malo slovo u s prstenom iznad","Latin small letter u with tilde":"Latinsko malo slovo u sa tildom","Latin small letter w with circumflex":"Latinsko malo slovo w sa circumflex","Latin small letter y with circumflex":"Latinsko malo slovo y sa circumflex","Latin small letter z with acute":"Latinsko malo slovo z sa akutom","Latin small letter z with caron":"Latinsko malo slovo z sa caron","Latin small letter z with dot above":"Latinsko malo slovo z sa taÄkom iznad","Latin small ligature ij":"Latinska mala ligatura ij","Latin small ligature oe":"Latinska mala ligatura oe","Left double quotation mark":"Levi dvostruki navodnik","Left single quotation mark":"Levi pojedinaÄni navodnik","Left-pointing double angle quotation mark":"Levi dvostrani navodnik dvostrukog ugla","leftwards arrow to bar":"Strelica nalevo ka traci","leftwards dashed arrow":"Prekidana strelica levo","leftwards double arrow":"Dupla strlica levo","Less-than or equal to":"Znak manje od ili jednako","Less-than sign":"Znak manje od","Lira sign":"Znak lire","Livre tournois sign":"Znak livre tournois","Logical and":"LogiÄki i","Logical or":"LogiÄki ili",Macron:"Macron","Manat sign":"Znak manat","Mill sign":"Znak mlina","Minus sign":"Znak minus","Multiplication sign":"Znak množenja","N-ary product":"N-ari proizvod","N-ary summation":"N-ari zbir",Nabla:"Nabla","Naira sign":"Znak naira","New sheqel sign":"Znak novi Å¡ekel","Nordic mark sign":"Nordijski znak","Not an element of":"Nije element","Not equal to":"Nejednako sa","Not sign":"Nije znak","on with exclamation mark with left right arrow above":"UkljuÄeno sa uzviÄnikom sa strelicom levo desno",Overline:"Overline","Paragraph sign":"Znak paragraf","Partial differential":"DelimiÄni diferencijal","Per mille sign":"Znak per mile","Per ten thousand sign":"Znak za deset hiljada","Peseta sign":"Znak pezeta","Peso sign":"Znak peso","Plus-minus sign":"Znak plus-minus","Pound sign":"Znak funti","Proportional to":"Srazmerno","Question exclamation mark":"Znak upitnika uzviÄnika","Registered sign":"Registrovani znak","Reversed paragraph sign":"Obrnuti znak paragrafa","Right double quotation mark":"Desni dvostruki navodnik","Right single quotation mark":"Desni pojedinaÄni navodnik","Right-pointing double angle quotation mark":"Desni dvostrani navodnik dvostrukog ugla","rightwards arrow to bar":"Strelica nadesno ka traci","rightwards dashed arrow":"Prekidana strelica desno","rightwards double arrow":"Dupla strelica desno","Ruble sign":"Znak ruble","Rupee sign":"Znak rupia","Section sign":"Znak sekcija","Single left-pointing angle quotation mark":"PojedinaÄni navodnik ugla levog pokazivanja","Single low-9 quotation mark":"Jedan niski-9 navodnik","Single right-pointing angle quotation mark":"PojedinaÄni navodnik ugla desnog pokazivanja","soon with rightwards arrow above":"Uskoro sa strelicom nadesno","Special characters":"Specijalni karakteri","Spesmilo sign":"Znak spesmilio","Square root":"Kvadratni koren","Tenge sign":"Znak tenge","There exists":"Postoji","Tilde operator":"Tilde operator","top with upwards arrow above":"Na vrhu sa strelicom prema gore","Trade mark sign":"Znak brenda","Tugrik sign":"Znak tugrik","Turkish lira sign":"Znak turskih lira","Two dot leader":"Vodja sa dve taÄke",Union:"Unija","up down arrow with base":"Strelica nadole sa bazom","upwards arrow to bar":"Strelica prema gore ka traci","upwards dashed arrow":"Prekidana strelica prema gore","upwards double arrow":"Dupla strelica prema gore","Vulgar fraction one half":"Vulgarna frakcija jedna polovina","Vulgar fraction one quarter":"Vulgarna frakcija jedna Äetvrtina","Vulgar fraction three quarters":"Vulgarna frakcija tri Äetvrtine","Won sign":"Znak von","Yen sign":"Znak jena"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a["sr-latn"]=a["sr-latn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Zelenkastoplava",Black:"Crna",Blue:"Plava",Cancel:"Odustani","Dim grey":"Bledo siva","Dropdown toolbar":"Padajuća traka sa alatkama","Edit block":"Blok ureÄ‘ivaÄ","Editor toolbar":"UreÄ‘ivaÄ traka sa alatkama",Green:"Zelena",Grey:"Siva","Insert paragraph after block":"Уметните одломак поÑле блока","Insert paragraph before block":"Уметните одломак пре блока","Light blue":"Svetloplava","Light green":"Svetlo zelena","Light grey":"Svetlo siva",Next:"Sledeći",Orange:"Narandžasta",Previous:"Prethodni",Purple:"LjubiÄasta",Red:"Crvena",Redo:"Ponovo","Remove color":"Otkloni boju","Restore default":"Vrati podrazumevano","Rich Text Editor":"ProÅ¡ireni ureÄ‘ivaÄ teksta","Rich Text Editor, %0":"ProÅ¡ireni ureÄ‘ivaÄ teksta, %0",Save:"SaÄuvaj","Select all":"OznaÄi sve","Show more items":"Prikaži joÅ¡ stavki",Turquoise:"Tirkizna",Undo:"PovlaÄenje","Upload in progress":"Postavljanje u toku",White:"Bela","Widget toolbar":"Видгет трака Ñа алаткама",Yellow:"Žuta"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/sr.js b/core/assets/vendor/ckeditor5/translations/sr.js new file mode 100644 index 000000000000..d334aa32f29e --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/sr.js @@ -0,0 +1 @@ +!function(n){const i=n.sr=n.sr||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Централно равнанје","Align left":"Лево равнање","Align right":"ДеÑно равнање",Justify:"ОбоÑтрано равнање","Text alignment":"Равнање текÑта","Text alignment toolbar":"Ðлатке за равнање текÑта"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sr=i.sr||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Подебљано",Code:"Код",Italic:"Курзив",Strikethrough:"Прецртан",Subscript:"Ð˜Ð½Ð´ÐµÐºÑ Ð´Ð¾Ð»Ðµ",Superscript:"Ð˜Ð½Ð´ÐµÐºÑ Ð³Ð¾Ñ€Ðµ",Underline:"Подвучен"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sr=i.sr||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Цитат"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.sr=n.sr||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Одреди Ñтил",Heading:"Стилови","Heading 1":"ÐаÑлов 1","Heading 2":"ÐаÑлов 2","Heading 3":"ÐаÑлов 3","Heading 4":"ÐаÑлов 4","Heading 5":"ÐаÑлов 5","Heading 6":"ÐаÑлов 6",Paragraph:"ПаÑуÑ","Type or paste your content here.":"Упишите или налепите наÑлов","Type your title":"Одредите наÑлов"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sr=i.sr||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Хоризонтална разделна линија"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.sr=e.sr||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"Прелом текÑта","Centered image":"Слика у Ñредини","Change image text alternative":"Измена алтернативног текÑта","Enter image caption":"Одреди текÑÑ‚ иÑпод Ñлике","Full size image":"Слика у пуној величини","Image resize list":"ЛиÑта величине Ñлике","Image toolbar":"Слика трака Ñа алтакама","image widget":"модул Ñа Ñликом","In line":"У реду",Insert:"Убаци","Insert image":"Додај Ñлику","Insert image via URL":"Убаци Ñлику преко УРЛ-а","Left aligned image":"Лева Ñлика",Original:"Оригинал","Resize image":"Промените величину Ñлике","Resize image to %0":"Промените величину Ñлике на% 0","Resize image to the original size":"Промените величину Ñлике до оригиналне величине","Right aligned image":"ДеÑна Ñлика","Side image":"Бочна Ñлика","Text alternative":"Ðлтернативни текÑÑ‚",Update:"Ðжурирај","Update image URL":"Ðжурирај УРЛ Ñлике","Upload failed":"ПоÑтављање неуÑпешно","Wrap text":"Преломити текÑÑ‚"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.sr=n.sr||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Смањи увлачење","Increase indent":"Повећај увлачење"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.sr=n.sr||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"Изабери језик",Language:"Језик","Remove language":"ОдÑтрани језик"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.sr=n.sr||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Могуће преузимање","Edit link":"ИÑправи линк",Link:"Линк","Link image":"Линк Ñлике","Link URL":"УРЛ линк","Open in a new tab":"Отвори у новој картици","Open link in new tab":"Отвори линк у новом прозору","This link has no URL":"Линк не Ñадржи УРЛ",Unlink:"Отклони линк"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.sr=e.sr||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Ðабрајане лиÑте","Bulleted list styles toolbar":"Трака Ñа алаткама за набрајане лиÑте",Circle:"Круг",Decimal:"Децимала","Decimal with leading zero":"Децимала Ñа нулом на почетку",Disc:"ДиÑк","Lower-latin":"Доњи - латинÑки","Lower–roman":"Доњи - римÑки","Numbered List":"ЛиÑта Ñа бројевима","Numbered list styles toolbar":"Трака Ñа алаткама за лиÑте Ñа бројевима",Square:"Квадрат","To-do List":"ЛиÑта обавеза","Toggle the circle list style":"Укључи / иÑкључи Ñтил лиÑте кругова","Toggle the decimal list style":"Укључи / иÑкључи Ñтил декадне лиÑте","Toggle the decimal with leading zero list style":"Пребаци децимални знак Ñа водећим Ñтилом лиÑте нула","Toggle the disc list style":"Укључите / иÑкључите Ñтил лиÑте диÑкова","Toggle the lower–latin list style":"Укључите / иÑкључите Ñтил доње лиÑте латинице","Toggle the lower–roman list style":"Укључите/ иÑкључите Ñтил доње римÑке лиÑте","Toggle the square list style":"Укључи / иÑкључи Ñтил лиÑте квадрата","Toggle the upper–latin list style":"Укључите / иÑкључите Ñтил горње лиÑте латинице","Toggle the upper–roman list style":"Укључите / иÑкључите Ñтил горње римÑке лиÑте","Upper-latin":"Горњи - латинÑки","Upper-roman":"Горњи - римÑки"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sr=i.sr||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"Уклони форматирање"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sr=i.sr||{};n.dictionary=Object.assign(n.dictionary||{},{Source:"Извор"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.sr=e.sr||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"Поравнајте текÑÑ‚ ћелије према доле","Align cell text to the center":"Поравнајте текÑÑ‚ ћелије у Ñредину","Align cell text to the left":"Поравнајте текÑÑ‚ ћелије лево","Align cell text to the middle":"Поравнајте текÑÑ‚ ћелије у Ñредину","Align cell text to the right":"Поравнајте текÑÑ‚ ћелије деÑно","Align cell text to the top":"Поравнајте текÑÑ‚ ћелије према горе","Align table to the left":"Поравнајте табелу на леву Ñтрану","Align table to the right":"Поравнајте табелу на деÑну Ñтрану",Alignment:"Поравнање",Background:"Позадина",Border:"Граница","Cell properties":"СвојÑтва ћелије","Center table":"Центар табеле",Color:"Боја","Color picker":"Бирач боја",Column:"Колона",Dashed:"Разбијено","Delete column":"Бриши колону","Delete row":"Бриши ред",Dimensions:"Димензија",Dotted:"Са тачкама",Double:"ДвоÑтруко","Enter table caption":"УнеÑите наÑлов табеле ",Groove:"КолоÑек","Header column":"Колона за заглавље","Header row":"Ред за заглавлје",Height:"ВиÑина","Horizontal text alignment toolbar":"Хоризонтална трака Ñа алаткама за поравнање текÑта","Insert column left":"Додај колону лево","Insert column right":"Додај колону деÑно","Insert row above":"Додај ред изнад","Insert row below":"Додај ред иÑпод","Insert table":"Додај табелу",Inset:"Прилог","Justify cell text":"Оправдајте текÑÑ‚ ћелије","Merge cell down":"Спој ћелије на доле","Merge cell left":"Cпој ћелије на лево","Merge cell right":"Спој ћелије на деÑно","Merge cell up":"Спој ћелије на горе","Merge cells":"Спој ћелије",None:"Ðиједан",Outset:"Почетак",Padding:"ПоÑтављање",Ridge:"Гребен",Row:"Ред","Select column":"Изабери колону","Select row":"Изабери ред",Solid:"ЧврÑÑ‚","Split cell horizontally":"Дели ћелије водоравно","Split cell vertically":"Дели ћелије уÑправно",Style:"Стил","Table alignment toolbar":"Трака Ñа алаткама за поравнање табеле","Table cell text alignment":"Поравнај текÑту табели","Table properties":"СвојÑтва табеле","Table toolbar":"Табела трака Ñа алаткама",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Боја је неважећа. Покушајте Ñа "#FF0000" или "rgb(255,0,0)" или "црвена".','The value is invalid. Try "10px" or "2em" or simply "2".':'ВредноÑÑ‚ је неважећа. Покушајте Ñа "10px" или "2em" или једноÑтавно "2".',"Toggle caption off":"ИÑкључивање натпиÑа ","Toggle caption on":"Укључите наÑлов ","Vertical text alignment toolbar":"Вертикална трака Ñа алаткама за поравнање текÑта",Width:"Ширина"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sr=i.sr||{};n.dictionary=Object.assign(n.dictionary||{},{"HTML object":"ХТМЛ објекат "})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.sr=t.sr||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"Скоро једнако",Angle:"Угао","Approximately equal to":"Отприлике једнако","Asterisk operator":"ÐÑÑ‚ÐµÑ€Ð¸ÐºÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€","Austral sign":"ÐуÑтрални знак","back with leftwards arrow above":"Ðазад Ñа Ñтрелицом лево","Bitcoin sign":"Знак биткиона","Cedi sign":"Знак цеди","Cent sign":"Знак цента","Character categories":"Категорија карактера","Colon sign":"Двотачка","Contains as member":"Садржи као члан","Copyright sign":"Симбол ауторÑког права","Cruzeiro sign":"Знак црузеиро","Currency sign":"Знак валуте","Degree sign":"Знак Ñтепена","Division sign":"Знак дивизије","Dollar sign":"Знак долара","Dong sign":"Знак донг","Double dagger":"ДвоÑтруки бодеж","Double exclamation mark":"ДвоÑтруки узвичник","Double low-9 quotation mark":"ДвоÑтруки ниÑки -9 наводник","Double question mark":"ДвоÑтруки упитник","downwards arrow to bar":"Стрелица према доле ка траци","downwards dashed arrow":"Прекидана Ñтрелица према доле","downwards double arrow":"Дупла Ñтрелица према доле","Drachma sign":"Знак драхма","Element of":"Елемент од","Em dash":"Ем цртица","Empty set":"Празан Ñет","En dash":"Ен цртица","end with leftwards arrow above":"Завршите Ñтрелицом лево","Euro sign":"Знак еура","Euro-currency sign":"Знак валуте еура","Exclamation question mark":"Знак узвичника упитника","For all":"За Ñве","Fraction slash":"Црта фракције","French franc sign":"Знак француÑког франака","German penny sign":"Знак немачки пени","Greater-than or equal to":"Знак веће од или једнако","Greater-than sign":"Знак веће од","Guarani sign":"Знак гуарани","Horizontal ellipsis":"Хоризонтална елипÑа","Hryvnia sign":"Знак гривна","Identical to":"Идентичан","Indian rupee sign":"Знак индијÑке рупије",Infinity:"БеÑконачноÑÑ‚",Integral:"Интеграл",Intersection:"РаÑкрÑница","Inverted exclamation mark":"Обрнути узвичник","Inverted question mark":"Обрнути упитник","Kip sign":"Знак кип","Latin capital letter a with breve":"ЛатинÑко велико Ñлово а Ñа бревом ","Latin capital letter a with macron":"ЛатинÑко белико Ñлово а Ñа макроном","Latin capital letter a with ogonek":"ЛатинÑко велико Ñлово а Ñа огонек","Latin capital letter c with acute":"ЛатинÑко велико Ñлово ц Ñа акутом","Latin capital letter c with caron":"ЛатинÑко велико Ñлово ц Ñа цароном","Latin capital letter c with circumflex":"ЛатинÑко велико Ñлово ц Ñа цирцумфлекÑ","Latin capital letter c with dot above":"ЛатинÑко велико Ñлово ц Ñа тачком изнад","Latin capital letter d with caron":"ЛатинÑко велико Ñлово д Ñа цароном","Latin capital letter d with stroke":"ЛатинÑко велико Ñлово д Ñа Ñтроке","Latin capital letter e with breve":"ЛатинÑко велико Ñлово е Ñа бреве","Latin capital letter e with caron":"ЛатинÑко велико Ñлово е Ñа царон","Latin capital letter e with dot above":"ЛатинÑко велико Ñлово е Ñа тачком изнад","Latin capital letter e with macron":"ЛатинÑко велико Ñлово е Ñа мацрон","Latin capital letter e with ogonek":"ЛатинÑко велико Ñлово е Ñа огонек","Latin capital letter eng":"ЛатинÑко велико Ñлово енг","Latin capital letter g with breve":"ЛатинÑк велико Ñлово г Ñа бреве","Latin capital letter g with cedilla":"ЛатинÑко велико Ñлово г Ñа цедилом","Latin capital letter g with circumflex":"ЛатинÑко велико Ñлово г Ñа цирцумфлекÑ","Latin capital letter g with dot above":"ЛатинÑко велико Ñлово г Ñа тачком изнад","Latin capital letter h with circumflex":"ЛатинÑко велико Ñлово Ñ… Ñа цирцумфлекÑ","Latin capital letter h with stroke":"ЛатинÑко велико Ñлово Ñ… Ñа Ñтроке","Latin capital letter i with breve":"ЛатинÑко велико Ñлово и Ñа бреве","Latin capital letter i with dot above":"ЛатинÑко велико Ñлово и Ñа тачком изнад","Latin capital letter i with macron":"ЛатинÑко велико Ñлово и Ñа мацрон","Latin capital letter i with ogonek":"ЛатинÑко велоко Ñлово и Ñа огонек","Latin capital letter i with tilde":"ЛатинÑко велико Ñлово и Ñа тилдом","Latin capital letter j with circumflex":"ЛатинÑко велико Ñлово ј Ñа цирцумфлекÑ","Latin capital letter k with cedilla":"ЛатинÑко велико Ñлово к Ñа цедила","Latin capital letter l with acute":"ЛаинÑко велико Ñлово л Ñа акутом","Latin capital letter l with caron":"ЛатинÑко велико Ñлово л Ñа царон","Latin capital letter l with cedilla":"ЛатинÑко велико Ñлово л Ñа цедила","Latin capital letter l with middle dot":"ЛатинÑко велико Ñлово л Ñа Ñреднјом тачком","Latin capital letter l with stroke":"ЛатинÑко велико Ñлово л Ñа Ñтроке","Latin capital letter n with acute":"ЛатинÑко влико Ñлово н Ñа акутом","Latin capital letter n with caron":"ЛатинÑко велико Ñлово н Ñа царон","Latin capital letter n with cedilla":"ЛатинÑко велико Ñлово н Ñа цедилом","Latin capital letter o with breve":"ЛатинÑко велико Ñлово о Ñа бреве","Latin capital letter o with double acute":"ЛатинÑко велико Ñлово о Ñа двоÑтруком акутом","Latin capital letter o with macron":"ЛатинÑко велико Ñлово о Ñа мацрон","Latin capital letter r with acute":"ЛатинÑко велико Ñлово Ñ€ Ñа акутом","Latin capital letter r with caron":"ЛатинÑко велико Ñлово Ñ€ Ñа царон","Latin capital letter r with cedilla":"ЛатинÑко велико Ñлово Ñ€ Ñа цедила","Latin capital letter s with acute":"ЛатинÑко велоко Ñлово Ñ Ñа акутом","Latin capital letter s with caron":"ЛатинÑко велико Ñлово Ñ Ñа царон","Latin capital letter s with cedilla":"ЛатинÑко велико Ñлово Ñ Ñа цедила","Latin capital letter s with circumflex":"ЛатинÑко велико Ñлово Ñ Ñа цирцумфлекÑ","Latin capital letter t with caron":"ЛатинÑко велико Ñлово Ñ‚ Ñа царон","Latin capital letter t with cedilla":"ЛатинÑко велико Ñлово Ñ‚ Ñа цедила","Latin capital letter t with stroke":"ЛатинÑко велико Ñлово Ñ‚ Ñа Ñтроке","Latin capital letter u with breve":"ЛатинÑко велико Ñлово у Ñа бреве","Latin capital letter u with double acute":"ЛатинÑко велико Ñлово у Ñ Ð´Ð²Ð¾Ñтруким акутом","Latin capital letter u with macron":"ЛатинÑко велико Ñлово у Ñа мацрон","Latin capital letter u with ogonek":"ЛатинÑко велико Ñлово у Ñа огонек","Latin capital letter u with ring above":"ЛатинÑко велико Ñлово у Ñ Ð¿Ñ€ÐµÑтеном изнад","Latin capital letter u with tilde":"ЛатинÑко велико Ñлово у Ñа тилдом","Latin capital letter w with circumflex":"ЛатинÑко велико Ñлово дупло в Ñа цирцумфлекÑ","Latin capital letter y with circumflex":"ЛатинÑко велико Ñлово ипÑилон Ñа цирцумфлекÑ","Latin capital letter y with diaeresis":"ЛатинÑко велико Ñлово ипÑилон Ñа дијарезом","Latin capital letter z with acute":"ЛатинÑко велико Ñлово з Ñа акутом","Latin capital letter z with caron":"ЛатинÑко велико Ñлово з Ñа царон","Latin capital letter z with dot above":"ЛатинÑко велико Ñлово з Ñа тачком изнад","Latin capital ligature ij":"ЛатинÑка велика лигатура иј","Latin capital ligature oe":"ЛатинÑка велика лигатура ое","Latin small letter a with breve":"ЛатинÑко мало Ñлово а Ñа бревом","Latin small letter a with macron":"ЛатинÑко мало Ñлово а Ñа макроном","Latin small letter a with ogonek":"ЛатинÑко мало Ñлово Ñ Ñа огонек","Latin small letter c with acute":"ЛатинÑко мало Ñлово ц Ñа акутом","Latin small letter c with caron":"ЛатинÑко мало Ñлово ц Ñа цароном","Latin small letter c with circumflex":"ЛатинÑко мало Ñлово ц Ñа цирцумфлекÑ","Latin small letter c with dot above":"ЛатинÑко мало Ñлвово ц Ñа тачком изнад","Latin small letter d with caron":"ЛатинÑко мало Ñлово д Ñа цароном","Latin small letter d with stroke":"ЛатинÑко мало Ñлово д Ñа Ñтроке","Latin small letter dotless i":"ЛатинÑко мало Ñлово и без тачке","Latin small letter e with breve":"ЛатинÑко мало Ñлово е Ñа бреве","Latin small letter e with caron":"ЛатинÑко мало Ñлово е Ñа царон","Latin small letter e with dot above":"ЛатинÑко мало Ñлово е Ñа тачком изнад","Latin small letter e with macron":"ЛатинÑко мало Ñлово е Ñа мацрон","Latin small letter e with ogonek":"ЛатинÑко мало Ñлво е Ñа огонек","Latin small letter eng":"ЛатинÑко мало Ñлово енг","Latin small letter f with hook":"ЛатинÑко мало Ñлово Ñ„ Ñа куком","Latin small letter g with breve":"ЛатинÑко мало Ñлово г Ñа бреве","Latin small letter g with cedilla":"ЛатинÑко мало Ñлово г Ñа цедилом","Latin small letter g with circumflex":"ЛатинÑко мало Ñлобо г Ñа цирцумфлекÑ","Latin small letter g with dot above":"ЛатинÑко мало Ñлово г Ñа тачком изнад","Latin small letter h with circumflex":"ЛатинÑко мало Ñлово Ñ… Ñа цирцумфлекÑ","Latin small letter h with stroke":"ЛатинÑко мало Ñлово Ñ… Ñа Ñтроке","Latin small letter i with breve":"ЛатинÑко мало Ñлово и Ñа бреве","Latin small letter i with macron":"ЛатинÑко мало Ñлово и Ñа мацрон","Latin small letter i with ogonek":"ЛатинÑко мало Ñлово и Ñа огонек","Latin small letter i with tilde":"ЛатинÑко мало Ñлово и Ñа тилдом","Latin small letter j with circumflex":"ЛатнцÑко мало Ñлово ј Ñа цирцумфлекÑ","Latin small letter k with cedilla":"ЛатинÑко мало Ñлово к Ñа цедила","Latin small letter kra":"ЛатинÑко мало Ñлово кра","Latin small letter l with acute":"ЛатинÑко мало Ñлово л Ñа акутом","Latin small letter l with caron":"ЛатинÑко мало Ñлово л Ñа царон","Latin small letter l with cedilla":"ЛатинÑко мало Ñлово л Ñа цедила","Latin small letter l with middle dot":"ЛатинÑко мало Ñлово Ñа цреднјом тачком","Latin small letter l with stroke":"ЛатинÑко мало Ñлово л Ñа Ñтроке","Latin small letter long s":"ЛатинÑко мало Ñлово дугачко Ñ","Latin small letter n preceded by apostrophe":"ЛатинÑко мало Ñлово н које претходи апоÑтроф","Latin small letter n with acute":"ЛатинÑко мало Ñлово н Ñа акутом","Latin small letter n with caron":"ЛатинÑко мало Ñлово н Ñа царон","Latin small letter n with cedilla":"ЛатинÑко мало Ñлово н Ñа цедилом","Latin small letter o with breve":"ЛатинÑко мало Ñлово о Ñа бреве","Latin small letter o with double acute":"ЛатинÑко мало Ñлово о Ñа двоÑтруком акутом","Latin small letter o with macron":"ЛатинÑко мало Ñлово о Ñа марон","Latin small letter r with acute":"ЛатинÑко мало Ñлово Ñ€ Ñа акутом","Latin small letter r with caron":"ЛатинÑко мало Ñлово Ñ€ Ñа царон","Latin small letter r with cedilla":"ЛатинÑко мало Ñлово Ñ€ Ñа цедила","Latin small letter s with acute":"ЛатинÑко мало Ñлово Ñ Ñа акутом","Latin small letter s with caron":"ЛатинÑко мало Ñлово Ñ Ñа царон","Latin small letter s with cedilla":"ЛатинÑко мало Ñлово Ñ Ñа цедила","Latin small letter s with circumflex":"ЛатинÑко мало Ñлово Ñ Ñа цирцумфлекÑ","Latin small letter t with caron":"ЛатинÑко мало Ñлово Ñ‚ Ñа царон","Latin small letter t with cedilla":"ЛатинÑко мало Ñлово Ñ‚ Ñа цедила","Latin small letter t with stroke":"ЛатинÑко мало Ñлово Ñ‚ Ñа Ñтроке","Latin small letter u with breve":"ЛатинÑко мало Ñлово у Ñа бреве","Latin small letter u with double acute":"ЛатинÑко мало Ñлово у Ñ Ð´Ð²Ð¾Ñтруким акутом","Latin small letter u with macron":"ЛатинÑко мало Ñлово у Ñа мацрон","Latin small letter u with ogonek":"ЛатинÑко мало Ñлово у Ñа огонек","Latin small letter u with ring above":"ЛатинÑко мало Ñлово у Ñ Ð¿Ñ€Ñтеном изнад","Latin small letter u with tilde":"ЛатинÑко мало Ñлово у Ñа тилдом","Latin small letter w with circumflex":"ЛатинÑко мало Ñлово дупло в Ñа цирцумфлекÑ","Latin small letter y with circumflex":"ЛатинÑко мало Ñлово ипÑилон Ñа цирцумфлекÑ","Latin small letter z with acute":"ЛатинÑко мало Ñлово з Ñа акутом","Latin small letter z with caron":"ЛатинÑко мало Ñлово з Ñа царон","Latin small letter z with dot above":"ЛатинÑко мало Ñлово з Ñа тачком изнад","Latin small ligature ij":"ЛатинÑка мала лигатура иј","Latin small ligature oe":"ЛатинÑка мала лигатура ое","Left double quotation mark":"Леви двоÑтруки наводник","Left single quotation mark":"Леви појединачни наводник","Left-pointing double angle quotation mark":"Леви двоÑтрани наводник двоÑтруког угла ","leftwards arrow to bar":"Стрелица налево ка траци","leftwards dashed arrow":"Прекидана Ñтрелица лево","leftwards double arrow":"Дупла Ñтрелица лево","Less-than or equal to":"Збак мање од или једнако","Less-than sign":"Знак мање од","Lira sign":"Знак лире","Livre tournois sign":"Знак ливре тоурноиÑ","Logical and":"Логички и","Logical or":"Локички или",Macron:"Мацрон","Manat sign":"Знак манат","Mill sign":"Знак млна","Minus sign":"Знак минуÑ","Multiplication sign":"Знак множења","N-ary product":"Ð-ари производ","N-ary summation":"Ð-ари збир",Nabla:"Ðабла","Naira sign":"Знак наира","New sheqel sign":"Знак нови шекел","Nordic mark sign":"ÐордијÑки знак","Not an element of":"Ðије елемент","Not equal to":"Ðеједнако Ñа","Not sign":"Ðије знак","on with exclamation mark with left right arrow above":"Укључено Ñа узвичником Ñа Ñтрелицомлево деÑно",Overline:"Оверлине","Paragraph sign":"Знак параграф","Partial differential":"Делимични диференцијал","Per mille sign":"Знак пер миле","Per ten thousand sign":"Знак за деÑет хиљада","Peseta sign":"Знак пезета","Peso sign":"Знак пеÑо","Plus-minus sign":"Знак плуÑ-минуÑ","Pound sign":"Знак фунти","Proportional to":"Сразмерно","Question exclamation mark":"Знак упитника узвичника","Registered sign":"РегиÑтровани знак","Reversed paragraph sign":"Обрнути знак параграфа","Right double quotation mark":"ДеÑни двоÑтруки наводник","Right single quotation mark":"ДеÑни појединачни наводник","Right-pointing double angle quotation mark":"ДеÑни двоÑтрани наводик двоÑтруког угла ","rightwards arrow to bar":"Стрелица надеÑно ка траци","rightwards dashed arrow":"Прекидана Ñтрелица деÑно","rightwards double arrow":"Дупла Ñтрелица деÑно","Ruble sign":"Знак рубле","Rupee sign":"Знак рупиа","Section sign":"Знак Ñелекција","Single left-pointing angle quotation mark":"Појединачни наводник угла левог показиванја","Single low-9 quotation mark":"Један ниÑки -9 наводник","Single right-pointing angle quotation mark":"Појединачни наводник угла деÑног показивања","soon with rightwards arrow above":"УÑкоро Ñа Ñтрелицом надеÑно","Special characters":"Специјални карактери","Spesmilo sign":"Знак ÑпеÑмилио","Square root":"Квадратни корен","Tenge sign":"Знак тенге","There exists":"ПоÑтоји","Tilde operator":"Тилде оператор","top with upwards arrow above":"Ðа врху Ñа Ñтрелицом према горе","Trade mark sign":"Знак бренда","Tugrik sign":"Знак тугрик","Turkish lira sign":"Знак турÑких лира","Two dot leader":"Вођа Ñа две тачке",Union:"Унија","up down arrow with base":"Стрелица на доле Ñа базом","upwards arrow to bar":"Стрелица према горе ка траци","upwards dashed arrow":"Прекидана Ñтрелица према горе","upwards double arrow":"Дупла Ñтрелица према горе","Vulgar fraction one half":"Вулгарна фракција једна половина","Vulgar fraction one quarter":"Вулгарна фракција једна четвртина","Vulgar fraction three quarters":"Вулгарна фрација три четвртине","Won sign":"Знак вон","Yen sign":"Знак јена"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.sr=e.sr||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"ЗеленкаÑтоплава",Black:"Црна",Blue:"Плава",Cancel:"ОдуÑтани","Dim grey":"Бледо Ñива","Dropdown toolbar":"Падајућа трака Ñа алаткама","Edit block":"Блок уређивач","Editor toolbar":"Уређивач трака Ñа алаткама",Green:"Зелена",Grey:"Сива","Insert paragraph after block":"Umetnite odlomak posle bloka","Insert paragraph before block":"Umetnite odlomak pre bloka","Light blue":"Светлоплава","Light green":"Светлозелена","Light grey":"Светло Ñива",Next:"Следећи",Orange:"ÐараџаÑта",Previous:"Претходни",Purple:"ЉубичаÑта",Red:"Црвена",Redo:"Поново","Remove color":"Отклони боју","Restore default":"Врати подразумевано","Rich Text Editor":"Проширен уређивач текÑта","Rich Text Editor, %0":"Проширени уређивач текÑта, %0",Save:"Сачувај","Select all":"Означи Ñве.","Show more items":"Прикажи још Ñтавки",Turquoise:"Тиркизна",Undo:"Повлачење","Upload in progress":"ПоÑтављање у току",White:"Бела","Widget toolbar":"Widget traka sa alatkama",Yellow:"Жута"}),o.getPluralForm=function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/sv.js b/core/assets/vendor/ckeditor5/translations/sv.js new file mode 100644 index 000000000000..f14a47207a79 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/sv.js @@ -0,0 +1 @@ +!function(t){const n=t.sv=t.sv||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Centrera","Align left":"Vänsterjustera","Align right":"Högerjustera",Justify:"Justera till marginaler","Text alignment":"Textjustering","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const t=n.sv=n.sv||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Fet",Code:"Kod",Italic:"Kursiv",Strikethrough:"Genomstruken",Subscript:"Nedsänkta tecken",Superscript:"Upphöjda tecken",Underline:"Understrykning"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const o=i.sv=i.sv||{};o.dictionary=Object.assign(o.dictionary||{},{"Block quote":"Blockcitat"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const r=i.sv=i.sv||{};r.dictionary=Object.assign(r.dictionary||{},{"Choose heading":"Välj rubrik",Heading:"Rubrik","Heading 1":"Rubrik 1","Heading 2":"Rubrik 2","Heading 3":"Rubrik 3","Heading 4":"Rubrik 4","Heading 5":"Rubrik 5","Heading 6":"Rubrik 6",Paragraph:"Paragraf","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.sv=e.sv||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Centrerad bild","Change image text alternative":"Ändra bildens alternativa text","Enter image caption":"Fyll i bildtext","Full size image":"Bild i full storlek","Image resize list":"","Image toolbar":"","image widget":"image widget","In line":"",Insert:"","Insert image":"Infoga bild","Insert image via URL":"","Left aligned image":"Vänsterjusterad bild",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Högerjusterad bild","Side image":"Kantbild","Text alternative":"Alternativ text",Update:"","Update image URL":"","Upload failed":"Uppladdning misslyckades","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.sv=n.sv||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"Redigera länk",Link:"Länk","Link image":"","Link URL":"Länkens URL","Open in a new tab":"","Open link in new tab":"Öppna länk i ny flik","This link has no URL":"Denna länk saknar URL",Unlink:"Ta bort länk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.sv=e.sv||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Punktlista","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Numrerad lista","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.sv=i.sv||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"Radera formatering"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.sv=e.sv||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"Kolumn",Dashed:"","Delete column":"Ta bort kolumn","Delete row":"Ta bort rad",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"","Header row":"",Height:"","Horizontal text alignment toolbar":"","Insert column left":"","Insert column right":"","Insert row above":"","Insert row below":"","Insert table":"Lägg in tabell",Inset:"","Justify cell text":"","Merge cell down":"","Merge cell left":"","Merge cell right":"","Merge cell up":"","Merge cells":"",None:"",Outset:"",Padding:"",Ridge:"",Row:"Rad","Select column":"","Select row":"",Solid:"","Split cell horizontally":"","Split cell vertically":"",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.sv=e.sv||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Avbryt","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Gör om","Remove color":"","Restore default":"","Rich Text Editor":"Rich Text-editor","Rich Text Editor, %0":"Rich Text-editor, %0",Save:"Spara","Show more items":"",Turquoise:"",Undo:"Ã…ngra",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/th.js b/core/assets/vendor/ckeditor5/translations/th.js new file mode 100644 index 000000000000..5881f41eef44 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/th.js @@ -0,0 +1 @@ +!function(i){const n=i.th=i.th||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"คำพูดบล็à¸à¸"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.th=n.th||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"เลืà¸à¸à¸‚นาดหัวข้à¸",Heading:"หัวข้à¸","Heading 1":"หัวข้à¸à¸‚นาด 1","Heading 2":"","Heading 3":"","Heading 4":"","Heading 5":"","Heading 6":"",Paragraph:"ย่à¸à¸«à¸™à¹‰à¸²","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.th=i.th||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"เส้นà¹à¸™à¸§à¸™à¸à¸™"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.th=e.th||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"จัดà¹à¸™à¸§à¸£à¸¹à¸›à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡","Change image text alternative":"เปลี่ยนข้à¸à¸„วามเมื่à¸à¹„ม่พบรูป","Enter image caption":"ระบุคำà¸à¸˜à¸´à¸šà¸²à¸¢à¸ าพ","Full size image":"รูปขนาดเต็ม","Image resize list":"","Image toolbar":"เครื่à¸à¸‡à¸¡à¸·à¸à¸£à¸¹à¸›à¸ าพ","image widget":"วิดเจ็ตรูปภาพ","In line":"",Insert:"","Insert image":"à¹à¸—รà¸à¸£à¸¹à¸›","Insert image via URL":"","Left aligned image":"จัดà¹à¸™à¸§à¸ าพซ้าย",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"จัดà¹à¸™à¸§à¸ าพขวา","Side image":"รูปด้านข้าง","Text alternative":"ข้à¸à¸„วามเมื่à¸à¹„ม่พบรูป",Update:"","Update image URL":"","Upload failed":"à¸à¸±à¸›à¹‚หลดไม่สำเร็จ","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.th=n.th||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"ลดà¸à¸²à¸£à¹€à¸¢à¸·à¹‰à¸à¸‡","Increase indent":"เพิ่มà¸à¸²à¸£à¹€à¸¢à¸·à¹‰à¸à¸‡"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.th=i.th||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"ลบรูปà¹à¸šà¸š"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.th=e.th||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"คà¸à¸¥à¸±à¸¡à¸™à¹Œ",Dashed:"","Delete column":"ลบคà¸à¸¥à¸±à¸¡à¸™à¹Œ","Delete row":"ลบà¹à¸–ว",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"หัวข้à¸à¸„à¸à¸¥à¸±à¸¡à¸™à¹Œ","Header row":"ส่วนหัวà¹à¸–ว",Height:"","Horizontal text alignment toolbar":"","Insert column left":"à¹à¸—รà¸à¸„à¸à¸¥à¸±à¸¡à¸™à¹Œà¸—างซ้าย","Insert column right":"à¹à¸—รà¸à¸„à¸à¸¥à¸±à¸¡à¸™à¹Œà¸—างขวา","Insert row above":"à¹à¸—รà¸à¸ªà¹ˆà¸§à¸™à¸«à¸±à¸§à¸”้านบน","Insert row below":"à¹à¸—รà¸à¸ªà¹ˆà¸§à¸™à¸«à¸±à¸§à¸”้านล่าง","Insert table":"à¹à¸—รà¸à¸•à¸²à¸£à¸²à¸‡",Inset:"","Justify cell text":"","Merge cell down":"ผสานเซลล์ด้านล่าง","Merge cell left":"ผสานเซลล์ด้านซ้าย","Merge cell right":"ผสานเซลล์ด้านขวา","Merge cell up":"ผสานเซลล์ด้านบน","Merge cells":"ผสานเซลล์",None:"",Outset:"",Padding:"",Ridge:"",Row:"à¹à¸–ว","Select column":"","Select row":"",Solid:"","Split cell horizontally":"à¹à¸¢à¸à¹€à¸‹à¸¥à¸¥à¹Œà¹à¸™à¸§à¸™à¸à¸™","Split cell vertically":"à¹à¸¢à¸à¹€à¸‹à¸¥à¸¥à¹Œà¹à¸™à¸§à¸•à¸±à¹‰à¸‡",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"เครื่à¸à¸‡à¸¡à¸·à¸à¸•à¸²à¸£à¸²à¸‡",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.th=e.th||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"พลà¸à¸¢à¸ªà¸µà¸Ÿà¹‰à¸²",Black:"สีดำ",Blue:"สีน้ำเงิน",Cancel:"ยà¸à¹€à¸¥à¸´à¸","Dim grey":"สีเทาเข้ม","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"สีเขียว",Grey:"สีเทา","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"สีฟ้า","Light green":"สีเขียวà¸à¹ˆà¸à¸™","Light grey":"สีเทาà¸à¹ˆà¸à¸™",Next:"",Orange:"สีส้ม",Previous:"",Purple:"สีม่วง",Red:"สีà¹à¸”ง",Redo:"ทำซ้ำ","Remove color":"ลบสี","Restore default":"","Rich Text Editor":"","Rich Text Editor, %0":"",Save:"บันทึà¸","Show more items":"",Turquoise:"สีเขียวขุ่น",Undo:"ย้à¸à¸™à¸à¸¥à¸±à¸š","Upload in progress":"à¸à¸³à¸¥à¸±à¸‡à¸”ำเนินà¸à¸²à¸£à¸à¸±à¸›à¹‚หลด",White:"สีขาว","Widget toolbar":"à¹à¸–มเครื่à¸à¸‡à¸¡à¸·à¸à¸§à¸´à¸”เจ็ต",Yellow:"สีเหลืà¸à¸‡"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/tk.js b/core/assets/vendor/ckeditor5/translations/tk.js new file mode 100644 index 000000000000..85a2e92ce28c --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/tk.js @@ -0,0 +1 @@ +!function(e){const i=e.tk=e.tk||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Merkeze deňleÅŸdir","Align left":"Çepe deňleÅŸdiriň","Align right":"Saga deňleÅŸdiriň",Justify:"Akla","Text alignment":"Tekstiň deňleÅŸdirilmegi","Text alignment toolbar":"Teksti deňleÅŸdirmek gurallar paneli"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.tk=i.tk||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Galyň",Code:"Kod",Italic:"Italik",Strikethrough:"Ãœsti çyzykly",Subscript:"AÅŸaky ýazgy",Superscript:"Ãœst ýazgy",Underline:"AÅŸagy çyzykly"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.tk=i.tk||{};t.dictionary=Object.assign(t.dictionary||{},{"Block quote":"Sitata blokirläň"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const y=a.tk=a.tk||{};y.dictionary=Object.assign(y.dictionary||{},{"Choose heading":"SözbaÅŸy saýlaň",Heading:"SözbaÅŸy","Heading 1":"SözbaÅŸy 1","Heading 2":"SözbaÅŸy 2","Heading 3":"SözbaÅŸy 3","Heading 4":"SözbaÅŸy 4","Heading 5":"SözbaÅŸy 5","Heading 6":"SözbaÅŸy 6",Paragraph:"Abzas","Type or paste your content here.":"Mazmunyňyzy ÅŸu ýere ýazyň ýa-da goýuň.","Type your title":"SözbaÅŸyny ýazyň"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.tk=i.tk||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Gorizontal çyzyk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.tk=e.tk||{};a.dictionary=Object.assign(a.dictionary||{},{"Break text":"","Centered image":"MerkezleÅŸdirilen surat","Change image text alternative":"Surat tekstiniň alternatiwasyny üýtgediň","Enter image caption":"Surat ýazgysyny giriziň","Full size image":"Doly ululykdaky surat","Image resize list":"","Image toolbar":"Surat gurallar paneli","image widget":"surat widjeti","In line":"",Insert:"","Insert image":"Surat goýuň","Insert image via URL":"","Left aligned image":"Çep deňleÅŸdirilen surat",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"Sag deňleÅŸdirilen surat","Side image":"Gapdal surat","Text alternative":"Tekstiň alternatiwasy",Update:"","Update image URL":"","Upload failed":"Ãükläp bolmady","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.tk=n.tk||{};e.dictionary=Object.assign(e.dictionary||{},{"Decrease indent":"Indent peseltmek","Increase indent":"Indent köpeltmek"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const a=i.tk=i.tk||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"Dili saýlaň",Language:"Dil","Remove language":"Dili pozuň"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const n=a.tk=a.tk||{};n.dictionary=Object.assign(n.dictionary||{},{Downloadable:"Göçürip alyp bolýar","Edit link":"BaglanyÅŸygy üýtget",Link:"BaglanyÅŸyk","Link image":"Surat baglanyÅŸygy","Link URL":"URL baglanyÅŸygy","Open in a new tab":"Täze goýmada açyň","Open link in new tab":"Täze goýmada baglanyÅŸyk açyň","This link has no URL":"Bu baglanyÅŸykda URL ýok",Unlink:"BaglanyÅŸygy aýyr"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.tk=e.tk||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Bullet sanawy","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Sanly sanaw","Numbered list styles toolbar":"",Square:"","To-do List":"Edilmeli iÅŸleriň sanawy","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const t=o.tk=o.tk||{};t.dictionary=Object.assign(t.dictionary||{},{"Remove Format":"Formaty aýyryň"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.tk=e.tk||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"Öýjük tekstini aÅŸagyna deňleÅŸdiriň","Align cell text to the center":"Öýjük tekstini merkeze deňleÅŸdiriň","Align cell text to the left":"Öýjük tekstini çepe deňleÅŸdiriň","Align cell text to the middle":"Öýjük tekstini ortasyna deňleÅŸdiriň","Align cell text to the right":"Öýjük tekstini saga deňleÅŸdiriň","Align cell text to the top":"Öýjük tekstini ýokarsyna deňleÅŸdiriň","Align table to the left":"Tablisany çepe deňleÅŸdiriň","Align table to the right":"Tablisany sag tarapa deňleÅŸdiriň",Alignment:"DeňleÅŸdirmek",Background:"Arka",Border:"Serhet","Cell properties":"Öýjük aýratynlyklary","Center table":"Tablisany merkezleÅŸdiriň",Color:"Reňk","Color picker":"Reňk saýlaýjy",Column:"Sütün",Dashed:"Çyzykly","Delete column":"Sütüni pozuň","Delete row":"Setiri poz",Dimensions:"Ölçegleri",Dotted:"Nokatly",Double:"GoÅŸa","Enter table caption":"",Groove:"Groove","Header column":"SözbaÅŸy sütüni","Header row":"SözbaÅŸy hatary",Height:"Boý","Horizontal text alignment toolbar":"Kese tekst tekizlemek gurallar paneli","Insert column left":"Sütüni çepe goýuň","Insert column right":"Sütüni saga goýuň","Insert row above":"Hatary ýokaryk goýuň","Insert row below":"Hatary aÅŸak goýuň","Insert table":"Tablisa goýuň",Inset:"Inset","Justify cell text":"Öýjük tekstini esaslandyryň","Merge cell down":"Öýjügi aÅŸak birleÅŸdiriň","Merge cell left":"Öýjügi çepe birleÅŸdiriň","Merge cell right":"Öýjügi saga birleÅŸdiriň","Merge cell up":"Öýjügi ýokary birleÅŸdiriň","Merge cells":"Öýjükleri birleÅŸdiriň",None:"Hiç",Outset:"Outset",Padding:"Padding",Ridge:"Kertik",Row:"Setir","Select column":"Sütün saýlaň","Select row":"Setir saýlaň",Solid:"Gaty","Split cell horizontally":"Öýjügi keseligine bölüň","Split cell vertically":"Öýjügi dikligine bölüň",Style:"Stil","Table alignment toolbar":"Tablisa deňleÅŸdirmek gurallar paneli","Table cell text alignment":"Tablisa öýjükleriniň tekstini deňleÅŸdirmek","Table properties":"Tablisa aýratynlyklary","Table toolbar":"Tablisa gurallar paneli",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Reňki nädogry "#FF0000" ýa-da "rgb(255,0,0)" ýa-da "gyzyl" barlap görüň.','The value is invalid. Try "10px" or "2em" or simply "2".':'Baha nädogry "10px" ýa-da "2em" ýa-da diňe "2" barlap görüň.',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Dik tekst tekizlemek gurallar paneli",Width:"Ini"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.tk=t.tk||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"Iki nokat nyÅŸany","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"çepe tarap goÅŸa ok","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"Ãörite nyÅŸanlar","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.tk=a.tk||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"1%-iň 0%-i",Aquamarine:"Akuamarin",Black:"Gara",Blue:"Gök",Cancel:"Ãatyr","Dim grey":"Goýy çal","Dropdown toolbar":"Açylýan gurallar paneli","Edit block":"Bloky redaktirläň","Editor toolbar":"Redaktor gurallar paneli",Green:"ÃaÅŸyl",Grey:"Çal","Insert paragraph after block":"Blokdan soň abzas goýuň","Insert paragraph before block":"Blokdan öň abzas goýuň","Light blue":"Açyk gök","Light green":"Açyk ýaÅŸyl","Light grey":"Açyk çal",Next:"Indiki",Orange:"MämiÅŸi",Previous:"Öňki",Purple:"Gyrmyzy",Red:"Gyzyl",Redo:"Öňe gaýtar","Remove color":"Reňki aýyryň","Restore default":"","Rich Text Editor":"Baý Tekst Redaktory","Rich Text Editor, %0":"Baý Tekst Redaktory, %0",Save:"Saklaň","Select all":"Ählisini saýla","Show more items":"Has köp zady görkeziň",Turquoise:"Turkuaz",Undo:"Yza gaýtar","Upload in progress":"Ãüklemek dowam edýär",White:"Ak","Widget toolbar":"Widget gurallar paneli",Yellow:"Sary"}),e.getPluralForm=function(a){return 1!=a}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/tr.js b/core/assets/vendor/ckeditor5/translations/tr.js new file mode 100644 index 000000000000..6ae4c4d783bf --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/tr.js @@ -0,0 +1 @@ +!function(a){const i=a.tr=a.tr||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Ortala","Align left":"Sola hizala","Align right":"SaÄŸa hizala",Justify:"Ä°ki yana yasla","Text alignment":"Yazı hizalama","Text alignment toolbar":"Yazı Hizlama Araç ÇubuÄŸu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const t=i.tr=i.tr||{};t.dictionary=Object.assign(t.dictionary||{},{Bold:"Kalın",Code:"Kod",Italic:"Ä°talik",Strikethrough:"Ãœstü çizili",Subscript:"Alt Simge",Superscript:"Ãœst Simge",Underline:"Altı Çizgili"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const t=n.tr=n.tr||{};t.dictionary=Object.assign(t.dictionary||{},{"Block quote":"Alıntı"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const e=a.tr=a.tr||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"BaÅŸlık tipi seç",Heading:"BaÅŸlık","Heading 1":"1. Seviye BaÅŸlık","Heading 2":"2. Seviye BaÅŸlık","Heading 3":"3. Seviye BaÅŸlık","Heading 4":"4. Seviye BaÅŸlık","Heading 5":"5. Seviye BaÅŸlık","Heading 6":"6. Seviye BaÅŸlık",Paragraph:"Paragraf","Type or paste your content here.":"İçeriÄŸinizi buraya yapıştırın yada yazın.","Type your title":"BaÅŸlığınızı yazınız"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.tr=i.tr||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Yatay çiizgi"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const a=e.tr=e.tr||{};a.dictionary=Object.assign(a.dictionary||{},{"Break text":"","Centered image":"Ortalanmış görsel","Change image text alternative":"Görsel alternatif yazısını deÄŸiÅŸtir","Enter image caption":"Resim açıklaması gir","Full size image":"Tam Boyut Görsel","Image resize list":"","Image toolbar":"Resim araç çubuÄŸu","image widget":"resim aracı","In line":"",Insert:"","Insert image":"Görsel Ekle","Insert image via URL":"","Left aligned image":"Sola hizalı görsel",Original:"Orijinal","Resize image":"Resmi boyutlandır","Resize image to %0":"Resmi %0 ölçülerine boyutlandır","Resize image to the original size":"Resmi orijinal büyüklüğüne al","Right aligned image":"SaÄŸa hizalı görsel","Side image":"Yan Görsel","Text alternative":"Yazı alternatifi",Update:"Güncelle","Update image URL":"","Upload failed":"Yükleme baÅŸarsız","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.tr=i.tr||{};n.dictionary=Object.assign(n.dictionary||{},{"Decrease indent":"Girintiyi azalt","Increase indent":"Girintiyi arttır"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.tr=n.tr||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Ä°ndirilebilir","Edit link":"BaÄŸlantıyı deÄŸiÅŸtir",Link:"BaÄŸlantı","Link image":"","Link URL":"BaÄŸlantı Adresi","Open in a new tab":"Yeni sekmede aç","Open link in new tab":"Yeni sekmede aç","This link has no URL":"BaÄŸlantı adresi yok",Unlink:"BaÄŸlantıyı kaldır"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.tr=e.tr||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Simgeli Liste","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Numaralı Liste","Numbered list styles toolbar":"",Square:"","To-do List":"Yapılacaklar Listesi","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.tr=i.tr||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"Biçimlendirmeyi Kaldır"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.tr=e.tr||{};l.dictionary=Object.assign(l.dictionary||{},{"Align cell text to the bottom":"Hücre içindeki metni alta hizala","Align cell text to the center":"Hücre içindeki metnini ortaya hizalama","Align cell text to the left":"Hücre içindeki metnini sola hizala","Align cell text to the middle":"Hücre içindeki metni ortaya hizala","Align cell text to the right":"Hücre içindeki metnini saÄŸa hizala","Align cell text to the top":"Hücre içindeki metni üste hizala","Align table to the left":"Tabloyu sola hizala","Align table to the right":"Tabloyu saÄŸa hizala",Alignment:"Hizalama",Background:"Arkaplan",Border:"Kenar","Cell properties":"Hücre özellikleri","Center table":"Tabloyu ortala",Color:"Renk","Color picker":"Renk seçici",Column:"Kolon",Dashed:"Kesik çizgili","Delete column":"Kolonu sil","Delete row":"Satırı sil",Dimensions:"Ölçüler",Dotted:"Noktalı",Double:"Çift","Enter table caption":"",Groove:"Yiv","Header column":"BaÅŸlık kolonu","Header row":"BaÅŸlık satırı",Height:"Yükseklik","Horizontal text alignment toolbar":"Yatay metin hizalama araç çubuÄŸu","Insert column left":"Sola kolon ekle","Insert column right":"SaÄŸa kolon ekle","Insert row above":"Ãœste satır ekle","Insert row below":"Alta satır ekle","Insert table":"Tablo Ekle",Inset:"İçe","Justify cell text":"Hücre içindeki metini iki yana yasla","Merge cell down":"AÅŸağıya doÄŸru birleÅŸtir","Merge cell left":"Sola doÄŸru birleÅŸtir","Merge cell right":"SaÄŸa doÄŸru birleÅŸtir","Merge cell up":"Yukarı doÄŸru birleÅŸtir","Merge cells":"Hücreleri birleÅŸtir",None:"Yok",Outset:"Dışarıya",Padding:"İç boÅŸluk",Ridge:"Yükselti",Row:"Satır","Select column":"Kolon seç","Select row":"Satır seç",Solid:"Dolu","Split cell horizontally":"Hücreyi yatay böl","Split cell vertically":"Hücreyi dikey böl",Style:"Stil","Table alignment toolbar":"Tablo hizalama araç çubuÄŸu","Table cell text alignment":"Tablo hücresi metin hizalaması","Table properties":"Tablo özellikleri","Table toolbar":"Tablo araç çubuÄŸu",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Geçersiz renk. "#FF0000" veya "rgb(255,0,0)" veya "red" deneyin.','The value is invalid. Try "10px" or "2em" or simply "2".':'Geçersiz deÄŸer. "10px" veya "2em" veya sadece "2" deneyin.',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Dikey metin hizalama araç çubuÄŸu",Width:"GeniÅŸlik"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(a){const t=a.tr=a.tr||{};t.dictionary=Object.assign(t.dictionary||{},{"Almost equal to":"Neredeyse eÅŸit",Angle:"Açı","Approximately equal to":"Yaklaşık olarak eÅŸit","Asterisk operator":"Yıldız operatörü","Austral sign":"Austral iÅŸareti","back with leftwards arrow above":"geri sol ok yukarıda","Bitcoin sign":"Bitcoin iÅŸareti","Cedi sign":"Cedi iÅŸareti","Cent sign":"KuruÅŸ iÅŸareti","Character categories":"Karakter kategorileri","Colon sign":"Ä°ki nokta üst üste iÅŸareti","Contains as member":"Ãœye olarak içerir","Copyright sign":"Telif hakkı iÅŸareti","Cruzeiro sign":"Cruzeiro iÅŸareti","Currency sign":"Para birimi iÅŸareti","Degree sign":"Derece iÅŸareti","Division sign":"Bölme iÅŸareti","Dollar sign":"Dolar iÅŸareti","Dong sign":"Dong iÅŸareti","Double dagger":"Çift hançer","Double exclamation mark":"Çift ünlem iÅŸareti","Double low-9 quotation mark":"Çift düşük 9 tırnak iÅŸareti","Double question mark":"Çift soru iÅŸareti","downwards arrow to bar":"aÅŸağı ok çubuÄŸu","downwards dashed arrow":"aÅŸağı doÄŸru kesik ok","downwards double arrow":"aÅŸağı çift ok","Drachma sign":"Drahmisi iÅŸareti","Element of":"Öğesi","Em dash":"Uzun çizgi","Empty set":"BoÅŸ küme","En dash":"Çizgi","end with leftwards arrow above":"sona sol ok yukarıda","Euro sign":"Avro iÅŸareti","Euro-currency sign":"Avro para birimi simgesi","Exclamation question mark":"Ãœnlem soru iÅŸareti","For all":"Hepsi için","Fraction slash":"Kesir eÄŸik çizgi","French franc sign":"Fransız Frangı iÅŸareti","German penny sign":"Alman kuruÅŸ iÅŸareti","Greater-than or equal to":"Büyük veya eÅŸit","Greater-than sign":"Büyüktür iÅŸareti","Guarani sign":"Guarani iÅŸareti","Horizontal ellipsis":"Yatay elips","Hryvnia sign":"Grivnası iÅŸareti","Identical to":"Benzeri","Indian rupee sign":"Hint Rupisi iÅŸareti",Infinity:"Sonsuzluk",Integral:"Ä°ntegral",Intersection:"KesiÅŸim","Inverted exclamation mark":"Ters ünlem iÅŸareti","Inverted question mark":"Ters soru iÅŸareti","Kip sign":"Kip iÅŸareti","Latin capital letter a with breve":"Ãœstü yuvarlak büyük a harfi","Latin capital letter a with macron":"Ãœstü çizili büyük a harfi","Latin capital letter a with ogonek":"Altı kuyruklu iÅŸaretli büyük a harfi","Latin capital letter c with acute":"Ãœzeri tırnaklı büyük c harfi","Latin capital letter c with caron":"Ãœstü ters ÅŸapkalı büyük c harfi","Latin capital letter c with circumflex":"Ãœzeri ÅŸapkalı büyük c harfi","Latin capital letter c with dot above":"Ãœstü noktalı büyük c harfi","Latin capital letter d with caron":"Ãœstü ters ÅŸapkalı büyük d harfi","Latin capital letter d with stroke":"Ortası çizgili büyük d harfi","Latin capital letter e with breve":"Ãœstü ters ÅŸapkalı büyük e harfi","Latin capital letter e with caron":"Ãœstü ters ÅŸapkalı büyük e harfi","Latin capital letter e with dot above":"Ãœstü noktalı büyük e harfi","Latin capital letter e with macron":"Ãœstü çizili büyük e harfi","Latin capital letter e with ogonek":"Altı kuyruklu büyük e harfi","Latin capital letter eng":"Alttan kuyruklu büyük n harfi","Latin capital letter g with breve":"Ãœstü ters ÅŸapkalı büyük g harfi","Latin capital letter g with cedilla":"Altı kuyruklu büyük g harfi","Latin capital letter g with circumflex":"Ãœzeri ÅŸapkalı büyük g harfi","Latin capital letter g with dot above":"Ãœstü noktalı büyük g harfi","Latin capital letter h with circumflex":"Ãœzeri ÅŸapkalı büyük h harfi","Latin capital letter h with stroke":"Ãœst kısmı çizgili büyük h harfi","Latin capital letter i with breve":"Ãœstü ters ÅŸapkalı büyük i harfi","Latin capital letter i with dot above":"Ãœstü noktalı büyük i harfi","Latin capital letter i with macron":"Ãœstü çizili büyük i harfi","Latin capital letter i with ogonek":"Altı kuyruklu büyük i harfi","Latin capital letter i with tilde":"Ãœstü tilda iÅŸaretli büyük i harfi","Latin capital letter j with circumflex":"Ãœzeri ÅŸapkalı büyük j harfi","Latin capital letter k with cedilla":"Altı kuyruklu büyük k harfi","Latin capital letter l with acute":"Ãœzeri tırnaklı büyük L harfi","Latin capital letter l with caron":"Ãœstü ters ÅŸapkalı büyük L harfi","Latin capital letter l with cedilla":"Altı kuyruklu büyük L harfi","Latin capital letter l with middle dot":"Ortası noktalı büyük L harfi","Latin capital letter l with stroke":"Ãœst kısmı çizgili büyük L harfi","Latin capital letter n with acute":"Ãœzeri tırnaklı büyük n harfi","Latin capital letter n with caron":"Ãœstü ters ÅŸapkalı büyük n harfi","Latin capital letter n with cedilla":"Altı kuyruklu büyük n harfi","Latin capital letter o with breve":"Ãœstü ters ÅŸapkalı büyük o harfi","Latin capital letter o with double acute":"Ãœstü çift tırnaklı büyük o harfi","Latin capital letter o with macron":"Ãœstü çizili büyük o harfi","Latin capital letter r with acute":"Ãœzeri tırnaklı büyük r harfi","Latin capital letter r with caron":"Ãœstü ters ÅŸapkalı büyük r harfi","Latin capital letter r with cedilla":"Altı kuyruklu büyük r harfi","Latin capital letter s with acute":"Ãœzeri tırnaklı büyük s harfi","Latin capital letter s with caron":"Ãœstü ters ÅŸapkalı büyük s harfi","Latin capital letter s with cedilla":"Altı kuyruklu büyük s harfi","Latin capital letter s with circumflex":"Ãœzeri ÅŸapkalı büyük s harfi","Latin capital letter t with caron":"Ãœstü ters ÅŸapkalı büyük t harfi","Latin capital letter t with cedilla":"Altı kuyruklu büyük t harfi","Latin capital letter t with stroke":"Ãœst kısmı çizgili büyük t harfi","Latin capital letter u with breve":"Ãœstü ters ÅŸapkalı büyük u harfi","Latin capital letter u with double acute":"Ãœstü çift tırnaklı büyük u harfi","Latin capital letter u with macron":"Ãœstü çizili büyük u harfi","Latin capital letter u with ogonek":"Altı kuyruklu büyük u harfi","Latin capital letter u with ring above":"Ãœstü derece iÅŸaretli büyük u harfi","Latin capital letter u with tilde":"Ãœstü tildalı büyük u harfi","Latin capital letter w with circumflex":"Ãœzeri ÅŸapkalı büyük w harfi","Latin capital letter y with circumflex":"Ãœzeri ÅŸapkalı büyük y harfi","Latin capital letter y with diaeresis":"Ãœstü çift noktalı büyük y harfi","Latin capital letter z with acute":"Ãœzeri tırnaklı büyük z harfi","Latin capital letter z with caron":"Ãœstü ters ÅŸapkalı büyük z harfi","Latin capital letter z with dot above":"Ãœstü noktalı büyük z harfi","Latin capital ligature ij":"Büyük ij harfi","Latin capital ligature oe":"Büyük yunan OE harfi","Latin small letter a with breve":"Ãœstü yuvarlak küçük a harfi","Latin small letter a with macron":"Ãœstü çizili küçük a harfi","Latin small letter a with ogonek":"Altı kuyruklu iÅŸaretli küçük a harfi","Latin small letter c with acute":"Ãœzeri tırnaklı küçük c harfi","Latin small letter c with caron":"Ãœstü ters ÅŸapkalı küçük c harfi","Latin small letter c with circumflex":"Ãœzeri ÅŸapkalı küçük c harfi","Latin small letter c with dot above":"Ãœstü noktalı küçük c harfi","Latin small letter d with caron":"Ãœstü ters ÅŸapkalı küçük d harfi","Latin small letter d with stroke":"Ortası çizgili küçük d harfi","Latin small letter dotless i":"Noktası küçük i harfi","Latin small letter e with breve":"Ãœstü ters ÅŸapkalı küçük e harfi","Latin small letter e with caron":"Ãœstü ters ÅŸapkalı küçük e harfi","Latin small letter e with dot above":"Ãœstü noktalı küçük e harfi","Latin small letter e with macron":"Ãœstü çizili küçük e harfi","Latin small letter e with ogonek":"Altı kuyruklu küçük e harfi","Latin small letter eng":"Alttan kuyruklu küçük n harfi","Latin small letter f with hook":"Latince küçük f harfi","Latin small letter g with breve":"Ãœstü ters ÅŸapkalı küçük g harfi","Latin small letter g with cedilla":"Altı kuyruklu küçük g harfi","Latin small letter g with circumflex":"Ãœzeri ÅŸapkalı küçük g harfi","Latin small letter g with dot above":"Ãœstü noktalı küçük g harfi","Latin small letter h with circumflex":"Ãœzeri ÅŸapkalı küçük g harfi","Latin small letter h with stroke":"Ãœst kısmı çizgili küçük h harfi","Latin small letter i with breve":"Ãœstü ters ÅŸapkalı küçük i harfi","Latin small letter i with macron":"Ãœstü çizili küçük i harfi","Latin small letter i with ogonek":"Altı kuyruklu küçük i harfi","Latin small letter i with tilde":"Ãœstü tilda iÅŸaretli küçük i harfi","Latin small letter j with circumflex":"Ãœzeri ÅŸapkalı küçük j harfi","Latin small letter k with cedilla":"Altı kuyruklu küçük k harfi","Latin small letter kra":"Küçük küt k harfi","Latin small letter l with acute":"Ãœzeri tırnaklı küçük L harfi","Latin small letter l with caron":"Ãœstü ters ÅŸapkalı küçük L harfi","Latin small letter l with cedilla":"Altı kuyruklu küçük L harfi","Latin small letter l with middle dot":"Ortası noktalı küçük L harfi","Latin small letter l with stroke":"Ãœst kısmı çizgili küçük L harfi","Latin small letter long s":"Uzun küçük s harfi","Latin small letter n preceded by apostrophe":"Önden apostrof küçük n harfi","Latin small letter n with acute":"Ãœzeri tırnaklı küçük n harfi","Latin small letter n with caron":"Ãœstü ters ÅŸapkalı küçük n harfi","Latin small letter n with cedilla":"Altı kuyruklu küçük n harfi","Latin small letter o with breve":"Ãœstü ters ÅŸapkalı küçük o harfi","Latin small letter o with double acute":"Ãœstü çift tırnaklı küçük o harfi","Latin small letter o with macron":"Ãœstü çizili küçük o harfi","Latin small letter r with acute":"Ãœzeri tırnaklı küçük r harfi","Latin small letter r with caron":"Ãœstü ters ÅŸapkalı küçük r harfi","Latin small letter r with cedilla":"Altı kuyruklu küçük r harfi","Latin small letter s with acute":"Ãœzeri tırnaklı küçük s harfi","Latin small letter s with caron":"Ãœstü ters ÅŸapkalı küçük s harfi","Latin small letter s with cedilla":"Altı kuyruklu küçük s harfi","Latin small letter s with circumflex":"Ãœzeri ÅŸapkalı küçük s harfi","Latin small letter t with caron":"Ãœstü ters ÅŸapkalı küçük t harfi","Latin small letter t with cedilla":"Altı kuyruklu küçük t harfi","Latin small letter t with stroke":"Ãœst kısmı çizgili küçük t harfi","Latin small letter u with breve":"Ãœstü ters ÅŸapkalı küçük u harfi","Latin small letter u with double acute":"Ãœstü çift tırnaklı küçük u harfi","Latin small letter u with macron":"Ãœstü çizili küçük u harfi","Latin small letter u with ogonek":"Altı kuyruklu küçük u harfi","Latin small letter u with ring above":"Ãœstü derece iÅŸaretli küçük u harfi","Latin small letter u with tilde":"Ãœstü tildalı küçük u harfi","Latin small letter w with circumflex":"Ãœzeri ÅŸapkalı küçük w harfi","Latin small letter y with circumflex":"Ãœzeri ÅŸapkalı küçük y harfi","Latin small letter z with acute":"Ãœzeri tırnaklı küçük z harfi","Latin small letter z with caron":"Ãœstü ters ÅŸapkalı küçük z harfi","Latin small letter z with dot above":"Ãœstü noktalı küçük z harfi","Latin small ligature ij":"Küçük ij harfi","Latin small ligature oe":"Küçük yunan OE harfi","Left double quotation mark":"Sol çift tırnak iÅŸareti","Left single quotation mark":"Sol tek tırnak iÅŸareti","Left-pointing double angle quotation mark":"Sola dönük çift açılı tırnak iÅŸareti","leftwards arrow to bar":"sola ok çubuÄŸu","leftwards dashed arrow":"sola kesik çizgili ok","leftwards double arrow":"sola çift ok","Less-than or equal to":"Küçük veya eÅŸit","Less-than sign":"Küçüktür iÅŸareti","Lira sign":"Lira iÅŸareti","Livre tournois sign":"Livre tournois iÅŸareti","Logical and":"Mantıksal VE","Logical or":"Mantıksal VEYA",Macron:"Uzatma iÅŸareti","Manat sign":"Manat iÅŸareti","Mill sign":"Mill iÅŸareti","Minus sign":"Eksi iÅŸareti","Multiplication sign":"Çarpma iÅŸareti","N-ary product":"N-ary ürünü","N-ary summation":"N-ary toplamı",Nabla:"Nabla","Naira sign":"Naira iÅŸareti","New sheqel sign":"Yeni ÅŸekel iÅŸareti","Nordic mark sign":"Ä°skandinav iÅŸareti","Not an element of":"Onun öğesi deÄŸil","Not equal to":"EÅŸit deÄŸil","Not sign":"Ä°mzalanmamış","on with exclamation mark with left right arrow above":"üzerinde sol saÄŸ ok bulunan ünlem iÅŸaretiyle",Overline:"Ãœstü çizili","Paragraph sign":"Paragraf iÅŸareti","Partial differential":"Kısmi diferansiyel","Per mille sign":"Bin iÅŸareti için","Per ten thousand sign":"Her on bine göre iÅŸareti","Peseta sign":"Peseta iÅŸareti","Peso sign":"Peso iÅŸareti","Plus-minus sign":"Artı eksi iÅŸareti","Pound sign":"Sterlin iÅŸareti","Proportional to":"Orantılı","Question exclamation mark":"Soru ünlem iÅŸareti","Registered sign":"Kayıtlı iÅŸareti","Reversed paragraph sign":"Ters paragraf iÅŸareti","Right double quotation mark":"SaÄŸ çift tırnak iÅŸareti","Right single quotation mark":"SaÄŸ tek tırnak iÅŸareti","Right-pointing double angle quotation mark":"SaÄŸa bakan çift açılı tırnak iÅŸareti","rightwards arrow to bar":"saÄŸa ok çubuÄŸu","rightwards dashed arrow":"saÄŸa kesik çizgili ok","rightwards double arrow":"saÄŸa çift ok","Ruble sign":"Ruble iÅŸareti","Rupee sign":"Rupi iÅŸareti","Section sign":"Bölüm iÅŸareti","Single left-pointing angle quotation mark":"Tek sola dönük açı tırnak iÅŸareti","Single low-9 quotation mark":"Tek düşük 9 tırnak iÅŸareti","Single right-pointing angle quotation mark":"SaÄŸa bakan tek açılı tırnak iÅŸareti","soon with rightwards arrow above":"yakında saÄŸ ok ile","Special characters":"Özel karakterler","Spesmilo sign":"Spesmilo iÅŸareti","Square root":"Kare kök","Tenge sign":"Tenge iÅŸareti","There exists":"Var","Tilde operator":"Tilde operatörü","top with upwards arrow above":"en üst yukarı oku","Trade mark sign":"Ticari marka iÅŸareti","Tugrik sign":"Tugrik iÅŸareti","Turkish lira sign":"Türk Lirası iÅŸareti","Two dot leader":"Öncelikli iki nokta",Union:"BirleÅŸik","up down arrow with base":"taban ile yukarı aÅŸağı ok","upwards arrow to bar":"yukarı ok çubuÄŸu","upwards dashed arrow":"yukarı doÄŸru kesik ok","upwards double arrow":"yukarı çift ok","Vulgar fraction one half":"Kaba kesir bir buçuk","Vulgar fraction one quarter":"Kaba kesir bir çeyrek","Vulgar fraction three quarters":"Kaba bölüm dörtte üç","Won sign":"Kazanılan iÅŸaret","Yen sign":"Yen iÅŸareti"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const r=e.tr=e.tr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"Su YeÅŸili",Black:"Siyah",Blue:"Mavi",Cancel:"Ä°ptal","Dim grey":"Koyu Gri","Dropdown toolbar":"Açılır araç çubuÄŸu","Edit block":"BloÄŸu Düzenle","Editor toolbar":"Düzenleme araç çubuÄŸu",Green:"YeÅŸil",Grey:"Gri","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Açık Mavi","Light green":"Açık YeÅŸil","Light grey":"Açık Gri",Next:"Sonraki",Orange:"Turuncu",Previous:"Önceki",Purple:"Mor",Red:"Kırmızı",Redo:"Tekrar yap","Remove color":"Rengi Sil","Restore default":"","Rich Text Editor":"Zengin İçerik Editörü","Rich Text Editor, %0":"Zengin İçerik Editörü, %0",Save:"Kaydet","Select all":"Hepsini seç","Show more items":"Daha fazla öğe göster",Turquoise:"Turkuaz",Undo:"Geri al","Upload in progress":"Yükleme iÅŸlemi devam ediyor",White:"Beyaz","Widget toolbar":"BileÅŸen araç çubuÄŸu",Yellow:"Sarı"}),r.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/tt.js b/core/assets/vendor/ckeditor5/translations/tt.js new file mode 100644 index 000000000000..4b4281a5cec5 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/tt.js @@ -0,0 +1 @@ +!function(t){const i=t.tt=t.tt||{};i.dictionary=Object.assign(i.dictionary||{},{Bold:"Калын",Code:"Код",Italic:"",Strikethrough:"",Subscript:"",Superscript:"",Underline:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(o){const t=o.tt=o.tt||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"",Cancel:"",Redo:"Кабатла","Remove color":"","Restore default":"",Save:"Сакла","Show more items":"",Undo:""}),t.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/ug.js b/core/assets/vendor/ckeditor5/translations/ug.js new file mode 100644 index 000000000000..ae6a91a9145e --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/ug.js @@ -0,0 +1 @@ +!function(n){const i=n.ug=n.ug||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"ئوتتۇرىغا توغرىلاش","Align left":"سولغا توغرىلاش","Align right":"ئوÚغا توغرىلاش",Justify:"تەكشىلەش","Text alignment":"تÛكىست توغرىلاش","Text alignment toolbar":"تÛكىست توغرىلاش قورالبالدىقى"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ug=i.ug||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"توم",Code:"كود",Italic:"يانتۇ",Strikethrough:"ئۆچۈرۈش سىزىقى",Subscript:"ئاستبەلگە",Superscript:"ئۈستبەلگە",Underline:"ئاستى سىزىق"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.ug=i.ug||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"نەقىل"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.ug=n.ug||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"ماۋزۇ تاللاش",Heading:"ماۋزۇ","Heading 1":"ماۋزۇ 1","Heading 2":"ماۋزۇ 2","Heading 3":"ماۋزۇ 3","Heading 4":"ماۋزۇ 4","Heading 5":"ماۋزۇ 5","Heading 6":"ماۋزۇ 6",Paragraph:"ئابزاس","Type or paste your content here.":"","Type your title":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.ug=e.ug||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تÛكىست تاللىغۇچنى ئۆزگەرتىش","Enter image caption":"Ø±Û•Ø³Ù‰Ù…Ù†Ù‰Ú ØªÛمىسىنى كىرگۈزۈÚ","Full size image":"ئەسلى Ú†ÙˆÚلۇقتىكى رەسىم","Image resize list":"","Image toolbar":"","image widget":"رەسىمچىك","In line":"",Insert:"","Insert image":"رەسىم قىستۇرۇش","Insert image via URL":"","Left aligned image":"سولغا توغۇرلانغان رەسىم",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"ئوÚغا توغۇرلانغان رەسىم","Side image":"يان رەسىم","Text alternative":"تÛكىست ئاملاشتۇرۇش",Update:"","Update image URL":"","Upload failed":"چىقىرىش مەغلۇپ بولدى","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.ug=n.ug||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"",Link:"ئۇلانما","Link image":"","Link URL":"ئۇلاش ئادىرسى","Open in a new tab":"","Open link in new tab":"","This link has no URL":"",Unlink:"ئۇلانمىنى ئۈزۈش"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.ug=e.ug||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"بەلگە تىزىملىك","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"نومۇرلۇق تىزىملىك","Numbered list styles toolbar":"",Square:"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.ug=e.ug||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"",Dashed:"","Delete column":"","Delete row":"",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"","Header row":"",Height:"","Horizontal text alignment toolbar":"","Insert column left":"","Insert column right":"","Insert row above":"","Insert row below":"","Insert table":"جەدۋەل قىستۇر",Inset:"","Justify cell text":"","Merge cell down":"","Merge cell left":"","Merge cell right":"","Merge cell up":"","Merge cells":"",None:"",Outset:"",Padding:"",Ridge:"",Row:"","Select column":"","Select row":"",Solid:"","Split cell horizontally":"","Split cell vertically":"",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.ug=e.ug||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"ئىناۋەتسىز","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"تەكرارلاش","Remove color":"رەÚنى چىقىرىۋÛتىش","Restore default":"","Rich Text Editor":"تÛكىست تەھرىرلىگۈچ","Rich Text Editor, %0":"تÛكىست تەھرىرلىگۈچ، 0%",Save:"ساقلاش","Show more items":"",Turquoise:"",Undo:"ÙŠÛنىۋÛلىش",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/uk.js b/core/assets/vendor/ckeditor5/translations/uk.js new file mode 100644 index 000000000000..54b38775ade1 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/uk.js @@ -0,0 +1 @@ +!function(n){const i=n.uk=n.uk||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"По центру","Align left":"По лівому краю","Align right":"По правому краю",Justify:"По ширині","Text alignment":"Ð’Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту","Text alignment toolbar":"Панель інÑтрументів Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.uk=i.uk||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Жирний",Code:"Код",Italic:"КурÑив",Strikethrough:"ЗакреÑлений",Subscript:"Ðижній індекÑ",Superscript:"Верхній індекÑ",Underline:"ПідкреÑлений"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.uk=i.uk||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"Цитата"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.uk=n.uk||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"Оберіть заголовок",Heading:"Заголовок","Heading 1":"Заголовок 1","Heading 2":"Заголовок 2","Heading 3":"Заголовок 3","Heading 4":"Заголовок 4","Heading 5":"Заголовок 5","Heading 6":"Заголовок 6",Paragraph:"Параграф","Type or paste your content here.":"Введіть або вÑтавте Ñвій вміÑÑ‚ тут.","Type your title":"Введіть назву"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.uk=i.uk||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"Горизонтальна лініÑ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.uk=e.uk||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾ центру","Change image text alternative":"Змінити текÑтову альтернативу зображеннÑ","Enter image caption":"Введіть Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ","Full size image":"Повний розмір зображеннÑ","Image resize list":"Перелік розмірів","Image toolbar":"Панелі інÑтрументів зображеннÑ","image widget":"Віджет зображеннÑ","In line":"",Insert:"Ð’Ñтавити","Insert image":"Ð’Ñтавити зображеннÑ","Insert image via URL":"Ð’Ñтавити Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· поÑиланнÑ","Left aligned image":"Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð»Ñ–Ð²Ð¾Ñ€ÑƒÑ‡",Original:"Оригінал","Resize image":"РозтÑгнути зображеннÑ","Resize image to %0":"РозтÑгнути Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð¾ %0","Resize image to the original size":"РозтÑгнути Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð¾ оригінального розміру","Right aligned image":"Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¾Ñ€ÑƒÑ‡","Side image":"Бокове зображеннÑ","Text alternative":"ТекÑтова альтернатива",Update:"Оновити","Update image URL":"Оновити поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зображеннÑ","Upload failed":"Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑŒ","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.uk=n.uk||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Зменшити відÑтуп","Increase indent":"Збільшити відÑтуп"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.uk=n.uk||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"Обрати мову",Language:"Мова","Remove language":"Видалити мову"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.uk=n.uk||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Завантажувальне","Edit link":"Редагувати поÑиланнÑ",Link:"ПоÑиланнÑ","Link image":"ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ","Link URL":"URL поÑиланнÑ","Open in a new tab":"Вікрити у новій вкладці","Open link in new tab":"Відкрити поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñƒ новій вкладці","This link has no URL":"Це поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ðµ має URL",Unlink:"Видалити поÑиланнÑ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.uk=e.uk||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Маркерний ÑпиÑок","Bulleted list styles toolbar":"Панель маркерних ÑпиÑків",Circle:"Коло",Decimal:"Цифри","Decimal with leading zero":"Цифри із провідним нулем",Disc:"Круг","Lower-latin":"","Lower–roman":"","Numbered List":"Ðумерований ÑпиÑок","Numbered list styles toolbar":"Панель нумерованих ÑпиÑків",Square:"Квадрат","To-do List":"СпиÑок Ñправ","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.uk=i.uk||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"Видалити форматуваннÑ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.uk=e.uk||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"ВирівнÑти текÑÑ‚ комірки по низу","Align cell text to the center":"ВирівнÑти текÑÑ‚ по центру","Align cell text to the left":"ВирівнÑти текÑÑ‚ по лівому краю","Align cell text to the middle":"ВирівнÑти текÑÑ‚ комірки по Ñередині","Align cell text to the right":"ВирівнÑти текÑÑ‚ по правому краю","Align cell text to the top":"ВирівнÑти текÑÑ‚ комірки по верху ","Align table to the left":"ВирівнÑти таблицю по лівому краю","Align table to the right":"ВирівнÑти таблицю по правому краю ",Alignment:"ВирівнюваннÑ",Background:"Фон",Border:"Межа","Cell properties":"ВлаÑтивоÑÑ‚Ñ– комірок","Center table":"Відцентрувати таблицю",Color:"Колір","Color picker":"Вибір кольору",Column:"Стовпець",Dashed:"Пунктирна","Delete column":"Видалити Ñтовпець","Delete row":"Видалити Ñ€Ñдок",Dimensions:"Розміри",Dotted:"Точкова",Double:"Подвійна","Enter table caption":"",Groove:"ЖолобчаÑта","Header column":"Заголовок ÑтовпцÑ","Header row":"Заголовок Ñ€Ñдка",Height:"ВиÑота","Horizontal text alignment toolbar":"Панель інÑтрументів Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ текÑту","Insert column left":"Ð’Ñтавити Ñтовпець зліва","Insert column right":"Ð’Ñтавити Ñтовпець Ñправа","Insert row above":"Ð’Ñтавити Ñ€Ñдок знизу","Insert row below":"Ð’Ñтавити Ñ€Ñдок зверху","Insert table":"Ð’Ñтавити таблицю",Inset:"Угнута","Justify cell text":"ВирівнÑти текÑÑ‚ по ширині ","Merge cell down":"Поєднати комірки внизу","Merge cell left":"Поєднати комірки ліворуч","Merge cell right":"Поєднати комірки праворуч","Merge cell up":"Поєднати комірки вгору","Merge cells":"Поєднати комірки",None:"Ðе вказано",Outset:"Випукла",Padding:"ЗаповненнÑ",Ridge:"РебриÑта",Row:"Ð Ñдок","Select column":"Виберіть Ñтовпчик","Select row":"Виберіть Ñ€Ñдок",Solid:"Суцільний","Split cell horizontally":"Розділити комірки горизонтально","Split cell vertically":"Розділити комірки вертикально",Style:"Стиль","Table alignment toolbar":"Панель інÑтрументів Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–","Table cell text alignment":"Ð’Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту комірки","Table properties":"ВлаÑтивоÑÑ‚Ñ– таблиці","Table toolbar":"Панель інÑтрументів таблиці",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Колір недійÑний. Спробуйте "#FF0000" або "rgb(255,0,0)" або "red"','The value is invalid. Try "10px" or "2em" or simply "2".':'Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ´Ñ–Ð¹Ñне. Спробуйте "10px" або "2em" або проÑто "2"',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"Панель інÑтрументів вертикального Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту",Width:"Ширина"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.uk=e.uk||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 із %1",Aquamarine:"Ðквамариновий",Black:"Чорний",Blue:"Синій",Cancel:"Відміна","Dim grey":"Темно-Ñірий","Dropdown toolbar":"Випадаюча панель інÑтрументів","Edit block":"Редагувати блок","Editor toolbar":"Панель інÑтрументів редактора",Green:"Зелений",Grey:"Сірий","Insert paragraph after block":"Додати абзац піÑÐ»Ñ Ð±Ð»Ð¾ÐºÐ°","Insert paragraph before block":"Додати абзац перед блоком","Light blue":"Світло-Ñиній","Light green":"Світло-зелений","Light grey":"Світло-Ñірий",Next:"ÐаÑтупний",Orange:"Помаранчевий",Previous:"Попередній",Purple:"Фіолетовий",Red:"Червоний",Redo:"Повтор","Remove color":"Видалити колір","Restore default":"","Rich Text Editor":"Розширений текÑтовий редактор","Rich Text Editor, %0":"Розширений текÑтовий редактор, %0",Save:"Зберегти","Select all":"Вибрати вÑе","Show more items":"Показати більше",Turquoise:"Бірюзовий",Undo:"Відміна","Upload in progress":"ВиконуєтьÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ",White:"Білий","Widget toolbar":"Панель інÑтрументів віджетів",Yellow:"Жовтий"}),o.getPluralForm=function(e){return e%1==0&&e%10==1&&e%100!=11?0:e%1==0&&e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:e%1==0&&(e%10==0||e%10>=5&&e%10<=9||e%100>=11&&e%100<=14)?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/vi.js b/core/assets/vendor/ckeditor5/translations/vi.js new file mode 100644 index 000000000000..8be30edc4e6c --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/vi.js @@ -0,0 +1 @@ +!function(n){const i=n.vi=n.vi||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Canh giữa","Align left":"Canh trái","Align right":"Canh phải",Justify:"Canh Ä‘á»u","Text alignment":"Căn chỉnh văn bản","Text alignment toolbar":"Thanh công cụ canh chữ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.vi=i.vi||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"Äáºm",Code:"Code",Italic:"Nghiêng",Strikethrough:"Gạch ngang",Subscript:"Chữ nhá» dÆ°á»›i",Superscript:"Chữ nhá» trên",Underline:"Gạch dÆ°á»›i"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.vi=i.vi||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"TrÃch dẫn"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.vi=i.vi||{};n.dictionary=Object.assign(n.dictionary||{},{"Choose heading":"Chá»n tiêu Ä‘á»",Heading:"Tiêu Ä‘á»","Heading 1":"Tiêu Ä‘á» 1","Heading 2":"Tiêu Ä‘á» 2","Heading 3":"Tiêu Ä‘á» 3","Heading 4":"Tiêu Ä‘á» 4","Heading 5":"Tiêu Ä‘á» 5","Heading 6":"Tiêu Ä‘á» 6",Paragraph:"Äoạn văn","Type or paste your content here.":"Nháºp hoặc dán ná»™i dung tại đây","Type your title":"Nháºp tá»±a Ä‘á»"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.vi=n.vi||{};i.dictionary=Object.assign(i.dictionary||{},{"Horizontal line":"ÄÆ°á»ng ngang"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.vi=n.vi||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"","Centered image":"Ảnh canh giữa","Change image text alternative":"Äổi chữ alt của ảnh","Enter image caption":"Nháºp mô tả ảnh","Full size image":"Ảnh đầy đủ","Image resize list":"Danh sách ảnh đã chỉnh kÃch thÆ°á»›c","Image toolbar":"Thanh công cụ hình ảnh","image widget":"tiện Ãch ảnh","In line":"",Insert:"Chèn","Insert image":"Chèn ảnh","Insert image via URL":"Chèn ảnh từ URL","Left aligned image":"Ảnh canh trái",Original:"Nguyên bản","Resize image":"Chỉnh kÃch cỡ ảnh","Resize image to %0":"Chỉnh kÃch cỡ ảnh vá» %0","Resize image to the original size":"Chỉnh vỠảnh kÃch cỡ nguyên gốc","Right aligned image":"Ảnh canh phải","Side image":"Ảnh má»™t bên","Text alternative":"Chữ alt",Update:"Cáºp nháºt","Update image URL":"Cáºp nháºt ảnh từ URL","Upload failed":"Tải thất bại","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.vi=n.vi||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"Giảm lá»","Increase indent":"Tăng lá»"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.vi=n.vi||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"Có thể tải vá»","Edit link":"Sá»a liên kết",Link:"Chèn liên kết","Link image":"Liên kết của ảnh","Link URL":"ÄÆ°á»ng dẫn liên kết","Open in a new tab":"Mở trên tab má»›i","Open link in new tab":"Mở liên kết","This link has no URL":"Liên kết không có Ä‘Æ°á»ng dẫn",Unlink:"Bá» liên kết"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.vi=e.vi||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"Danh sách đánh ký hiệu","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"Danh sách đánh số","Numbered list styles toolbar":"",Square:"","To-do List":"Danh sách cần là m","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.vi=i.vi||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"Xóa định dang"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const e=t.vi=t.vi||{};e.dictionary=Object.assign(e.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"Căn lá»",Background:"Mà u ná»n",Border:"Viá»n","Cell properties":"Thuá»™c tÃnh của ô","Center table":"",Color:"Mà u","Color picker":"",Column:"Cá»™t",Dashed:"","Delete column":"Xoá cá»™t","Delete row":"Xoá hà ng",Dimensions:"KÃch thÆ°á»›c",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"Tiêu Ä‘á» cá»™t","Header row":"Tiêu Ä‘á» hà ng",Height:"Cao","Horizontal text alignment toolbar":"","Insert column left":"Thêm cá»™t và o bên trái","Insert column right":"Thêm cá»™t và o bên phải","Insert row above":"Thêm hà ng phÃa trên","Insert row below":"Thêm hà ng ở dÆ°á»›i","Insert table":"Tạo bảng",Inset:"","Justify cell text":"","Merge cell down":"Sát nháºp ô xuống dÆ°á»›i","Merge cell left":"Sát nháºp ô qua trái","Merge cell right":"Sát nháºp ô qua phải","Merge cell up":"Sát nháºp ô lên trên","Merge cells":"Sát nháºp ô",None:"",Outset:"",Padding:"Cách lá»",Ridge:"",Row:"Hà ng","Select column":"Chá»n cá»™t","Select row":"Chá»n hà ng",Solid:"","Split cell horizontally":"Tách ô theo chiá»u ngang","Split cell vertically":"Tách ô theo chiá»u dá»c",Style:"Kiểu","Table alignment toolbar":"","Table cell text alignment":"Căn lá» văn bản trong ô","Table properties":"Thuá»™c tÃnh của bảng","Table toolbar":"Thanh công cụ bảng",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:"Rá»™ng"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const o=n.vi=n.vi||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 đến %1",Aquamarine:"Xanh ngá»c biển",Black:"Äen",Blue:"Xanh biển",Cancel:"Hủy","Dim grey":"Xám má»","Dropdown toolbar":"Thanh công cụ danh mục","Edit block":"Chỉnh sá»a Ä‘oạn","Editor toolbar":"Thanh công cụ biên táºp",Green:"Xanh lá",Grey:"Xám","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Xanh dÆ°Æ¡ng","Light green":"Xanh lá nhạt","Light grey":"Xám nhạt",Next:"Tiếp theo",Orange:"Cam",Previous:"Quay lại",Purple:"TÃm",Red:"Äá»",Redo:"Tiếp tục","Remove color":"Xóa mà u","Restore default":"","Rich Text Editor":"Trình soạn thảo văn bản","Rich Text Editor, %0":"Trình soạn thảo văn bản, %0",Save:"LÆ°u","Show more items":"Xem thêm",Turquoise:"Xanh ngá»c bÃch",Undo:"Hoà n tác","Upload in progress":"Äang tải lên",White:"Trắng","Widget toolbar":"Thanh công cụ tiện Ãch",Yellow:"Và ng"}),o.getPluralForm=function(n){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/zh-cn.js b/core/assets/vendor/ckeditor5/translations/zh-cn.js new file mode 100644 index 000000000000..7a5cc92ea173 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/zh-cn.js @@ -0,0 +1 @@ +!function(n){const i=n["zh-cn"]=n["zh-cn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"å±…ä¸å¯¹é½","Align left":"左对é½","Align right":"å³å¯¹é½",Justify:"两端对é½","Text alignment":"对é½","Text alignment toolbar":"对é½å·¥å…·æ "})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i["zh-cn"]=i["zh-cn"]||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"åŠ ç²—",Code:"代ç ",Italic:"倾斜",Strikethrough:"åˆ é™¤çº¿",Subscript:"ä¸‹æ ‡",Superscript:"ä¸Šæ ‡",Underline:"下划线"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const c=n["zh-cn"]=n["zh-cn"]||{};c.dictionary=Object.assign(c.dictionary||{},{"Block quote":"å—引用"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n["zh-cn"]=n["zh-cn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"æ ‡é¢˜ç±»åž‹",Heading:"æ ‡é¢˜","Heading 1":"æ ‡é¢˜ 1","Heading 2":"æ ‡é¢˜ 2","Heading 3":"æ ‡é¢˜ 3","Heading 4":"æ ‡é¢˜ 4","Heading 5":"æ ‡é¢˜ 5","Heading 6":"æ ‡é¢˜ 6",Paragraph:"段è½","Type or paste your content here.":"在这里输入或粘贴内容","Type your title":"è¾“å…¥æ ‡é¢˜"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["zh-cn"]=n["zh-cn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Horizontal line":"水平线"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e["zh-cn"]=e["zh-cn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"图片居ä¸","Change image text alternative":"更改图片替æ¢æ–‡æœ¬","Enter image caption":"è¾“å…¥å›¾ç‰‡æ ‡é¢˜","Full size image":"图片通æ 显示","Image resize list":"图片大å°åˆ—表","Image toolbar":"图片工具æ ","image widget":"图åƒå°éƒ¨ä»¶","In line":"",Insert:"æ’å…¥","Insert image":"æ’入图åƒ","Insert image via URL":"通过URL地å€æ’入图片","Left aligned image":"图片左侧对é½",Original:"原始大å°","Resize image":"调整图åƒå¤§å°","Resize image to %0":"调整图åƒå¤§å°ä¸º0%","Resize image to the original size":"调整图åƒå¤§å°ä¸ºåŽŸå§‹å¤§å°","Right aligned image":"图片å³ä¾§å¯¹é½","Side image":"图片侧边显示","Text alternative":"替æ¢æ–‡æœ¬",Update:"æ›´æ–°","Update image URL":"更新图片URL地å€","Upload failed":"ä¸Šä¼ å¤±è´¥","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["zh-cn"]=n["zh-cn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"å‡å°‘缩进","Increase indent":"å¢žåŠ ç¼©è¿›"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n["zh-cn"]=n["zh-cn"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"选择è¯è¨€",Language:"è¯è¨€","Remove language":"移除è¯è¨€"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["zh-cn"]=n["zh-cn"]||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"å¯ä¸‹è½½","Edit link":"修改链接",Link:"超链接","Link image":"链接图片","Link URL":"链接网å€","Open in a new tab":"åœ¨æ–°æ ‡ç¾é¡µä¸æ‰“å¼€","Open link in new tab":"åœ¨æ–°æ ‡ç¾é¡µä¸æ‰“开链接","This link has no URL":"æ¤é“¾æŽ¥æ²¡æœ‰è®¾ç½®ç½‘å€",Unlink:"å–消超链接"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e["zh-cn"]=e["zh-cn"]||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"项目符å·åˆ—表","Bulleted list styles toolbar":"项目符å·åˆ—è¡¨æ ·å¼å·¥å…·æ¡",Circle:"空心圆点",Decimal:"阿拉伯数å—","Decimal with leading zero":"å‰å¯¼é›¶é˜¿æ‹‰ä¼¯æ•°å—",Disc:"实心圆点","Lower-latin":"å°å†™æ‹‰ä¸å—æ¯","Lower–roman":"å°å†™ç½—马数å—","Numbered List":"项目编å·åˆ—表","Numbered list styles toolbar":"项目编å·åˆ—è¡¨æ ·å¼å·¥å…·æ¡",Square:"实心方å—","To-do List":"待办列表","Toggle the circle list style":"切æ¢ç©ºå¿ƒåŽŸç‚¹åˆ—è¡¨æ ·å¼","Toggle the decimal list style":"切æ¢é˜¿æ‹‰ä¼¯æ•°å—åˆ—è¡¨æ ·å¼","Toggle the decimal with leading zero list style":"切æ¢å‰å¯¼é›¶é˜¿æ‹‰ä¼¯æ•°å—åˆ—è¡¨æ ·å¼","Toggle the disc list style":"切æ¢å®žå¿ƒåŽŸç‚¹åˆ—è¡¨æ ·å¼","Toggle the lower–latin list style":"切æ¢å°å†™æ‹‰ä¸å—æ¯åˆ—è¡¨æ ·å¼","Toggle the lower–roman list style":"切æ¢å°å†™ç½—马数å—åˆ—è¡¨æ ·å¼","Toggle the square list style":"切æ¢å®žå¿ƒæ–¹å—åˆ—è¡¨æ ·å¼","Toggle the upper–latin list style":"切æ¢å¤§å†™æ‹‰ä¸å—æ¯åˆ—è¡¨æ ·å¼","Toggle the upper–roman list style":"切æ¢å¤§å†™ç½—马数å—åˆ—è¡¨æ ·å¼","Upper-latin":"大写拉ä¸å—æ¯","Upper-roman":"大写罗马数å—"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n["zh-cn"]=n["zh-cn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Remove Format":"ç§»é™¤æ ¼å¼"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const c=n["zh-cn"]=n["zh-cn"]||{};c.dictionary=Object.assign(c.dictionary||{},{Source:"æºä»£ç "})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e["zh-cn"]=e["zh-cn"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"使å•å…ƒæ ¼æ–‡æœ¬å¯¹é½åˆ°åº•éƒ¨","Align cell text to the center":"使å•å…ƒæ ¼æ–‡æœ¬æ°´å¹³å±…ä¸","Align cell text to the left":"使å•å…ƒæ ¼æ–‡æœ¬å·¦å¯¹é½","Align cell text to the middle":"使å•å…ƒæ ¼æ–‡æœ¬åž‚ç›´å±…ä¸","Align cell text to the right":"使å•å…ƒæ ¼æ–‡æœ¬å³å¯¹é½","Align cell text to the top":"使å•å…ƒæ ¼æ–‡æœ¬å¯¹é½åˆ°é¡¶éƒ¨","Align table to the left":"ä½¿è¡¨æ ¼å·¦å¯¹é½","Align table to the right":"ä½¿è¡¨æ ¼å³å¯¹é½",Alignment:"对é½",Background:"背景",Border:"边框","Cell properties":"å•å…ƒæ ¼å±žæ€§","Center table":"è¡¨æ ¼å±…ä¸",Color:"颜色","Color picker":"颜色选择器",Column:"列",Dashed:"虚线","Delete column":"åˆ é™¤æœ¬åˆ—","Delete row":"åˆ é™¤æœ¬è¡Œ",Dimensions:"尺寸",Dotted:"点状虚线",Double:"åŒçº¿","Enter table caption":"",Groove:"凹槽边框","Header column":"æ ‡é¢˜åˆ—","Header row":"æ ‡é¢˜è¡Œ",Height:"高度","Horizontal text alignment toolbar":"水平文本对é½å·¥å…·æ ","Insert column left":"左侧æ’入列","Insert column right":"å³ä¾§æ’入列","Insert row above":"在上é¢æ’入一行","Insert row below":"在下é¢æ’入一行","Insert table":"æ’å…¥è¡¨æ ¼",Inset:"凹边框","Justify cell text":"对é½å•å…ƒæ ¼æ–‡æœ¬","Merge cell down":"å‘下åˆå¹¶å•å…ƒæ ¼","Merge cell left":"å‘å·¦åˆå¹¶å•å…ƒæ ¼","Merge cell right":"å‘å³åˆå¹¶å•å…ƒæ ¼","Merge cell up":"å‘上åˆå¹¶å•å…ƒæ ¼","Merge cells":"åˆå¹¶å•å…ƒæ ¼",None:"æ— ",Outset:"凸边框",Padding:"内边è·",Ridge:"垄状边框",Row:"è¡Œ","Select column":"选择列","Select row":"选择行",Solid:"实线","Split cell horizontally":"横å‘拆分å•å…ƒæ ¼","Split cell vertically":"纵å‘拆分å•å…ƒæ ¼",Style:"æ ·å¼","Table alignment toolbar":"è¡¨æ ¼å¯¹é½å·¥å…·æ ","Table cell text alignment":"è¡¨æ ¼å•å…ƒæ ¼ä¸çš„文本水平对é½","Table properties":"è¡¨æ ¼å±žæ€§","Table toolbar":"è¡¨æ ¼å·¥å…·æ ",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'é¢œè‰²æ— æ•ˆã€‚å°è¯•ä½¿ç”¨"#FF0000"ã€"rgb(255,0,0)"或者"red"。','The value is invalid. Try "10px" or "2em" or simply "2".':"æ— æ•ˆå€¼ã€‚å°è¯•ä½¿ç”¨â€œ10pxâ€ã€â€œ2exâ€æˆ–者åªå†™â€œ2â€ã€‚","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"垂直文本对é½å·¥å…·æ ",Width:"宽度"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t["zh-cn"]=t["zh-cn"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"约ç‰äºŽ",Angle:"角","Approximately equal to":"è¿‘ä¼¼ç‰äºŽ","Asterisk operator":"星å·è¿ç®—符","Austral sign":"澳大利亚货å¸ç¬¦å·","back with leftwards arrow above":"带有backæ ‡è¯†çš„å‘å·¦ç®å¤´","Bitcoin sign":"比特å¸ç¬¦å·","Cedi sign":"塞地符å·","Cent sign":"分å¸ç¬¦å·","Character categories":"å—符类别","Colon sign":"科朗符å·","Contains as member":"包å«","Copyright sign":"版æƒç¬¦å·","Cruzeiro sign":"å…‹é²å¡žç½—符å·","Currency sign":"è´§å¸ç¬¦å·","Degree sign":"度数符å·","Division sign":"除å·","Dollar sign":"美元符å·","Dong sign":"越å—盾符å·","Double dagger":"åŒå‰‘å·","Double exclamation mark":"åŒå¹å·","Double low-9 quotation mark":"低ä½åŽåŒå¼•å·","Double question mark":"åŒé—®å·","downwards arrow to bar":"头部带æ çš„å‘下ç®å¤´","downwards dashed arrow":"å‘下虚线ç®å¤´","downwards double arrow":"å‘下åŒç®å¤´","Drachma sign":"德拉克马符å·","Element of":"属于","Em dash":"é•¿ç ´æŠ˜å·","Empty set":"空集","En dash":"çŸç ´æŠ˜å·","end with leftwards arrow above":"带有endæ ‡è¯†çš„å‘å·¦ç®å¤´","Euro sign":"欧元符å·","Euro-currency sign":"欧元货å¸ç¬¦å·","Exclamation question mark":"æ„Ÿå¹ç–‘é—®å·","For all":"对于全部","Fraction slash":"分数斜线","French franc sign":"法国法郎符å·","German penny sign":"德国便士符å·","Greater-than or equal to":"大于ç‰äºŽ","Greater-than sign":"大于å·","Guarani sign":"瓜拉尼货å¸ç¬¦å·","Horizontal ellipsis":"çœç•¥å·","Hryvnia sign":"戈里夫纳符å·","Identical to":"æ’ç‰äºŽ","Indian rupee sign":"å°åº¦å¢æ¯”符å·",Infinity:"æ— ç©·å¤§",Integral:"积分",Intersection:"交集","Inverted exclamation mark":"åæ„Ÿå¹å·","Inverted question mark":"åé—®å·","Kip sign":" 基普符å·","Latin capital letter a with breve":"带çŸéŸ³ç¬¦çš„大写拉ä¸å—æ¯a","Latin capital letter a with macron":"带长音符的大写拉ä¸å—æ¯a","Latin capital letter a with ogonek":"带å尾形符的大写拉ä¸å—æ¯a","Latin capital letter c with acute":"带é”音符的大写拉ä¸å—æ¯c","Latin capital letter c with caron":"带抑扬符的大写拉ä¸å—æ¯c","Latin capital letter c with circumflex":"带扬抑符的大写拉ä¸å—æ¯c","Latin capital letter c with dot above":"带上点的大写拉ä¸å—æ¯c","Latin capital letter d with caron":"带抑扬符的大写拉ä¸å—æ¯d","Latin capital letter d with stroke":"å¸¦åˆ èŠ‚çº¿çš„å¤§å†™æ‹‰ä¸å—æ¯d","Latin capital letter e with breve":"带çŸéŸ³ç¬¦çš„大写拉ä¸å—æ¯e","Latin capital letter e with caron":"带抑扬符的大写拉ä¸å—æ¯e","Latin capital letter e with dot above":"带上点的大写拉ä¸å—æ¯e","Latin capital letter e with macron":"带长音符的大写拉ä¸å—æ¯e","Latin capital letter e with ogonek":"带å尾形符的大写拉ä¸å—æ¯e","Latin capital letter eng":"大写拉ä¸å—æ¯eng","Latin capital letter g with breve":"带çŸéŸ³ç¬¦çš„大写拉ä¸å—æ¯g","Latin capital letter g with cedilla":"带软音符的大写拉ä¸å—æ¯g","Latin capital letter g with circumflex":"带扬抑符的大写拉ä¸å—æ¯g","Latin capital letter g with dot above":"带上点的大写拉ä¸å—æ¯g","Latin capital letter h with circumflex":"带扬抑符的大写拉ä¸å—æ¯h","Latin capital letter h with stroke":"å¸¦åˆ èŠ‚çº¿çš„å¤§å†™æ‹‰ä¸å—æ¯h","Latin capital letter i with breve":"带çŸéŸ³ç¬¦çš„大写拉ä¸å—æ¯i","Latin capital letter i with dot above":"带上点的大写拉ä¸å—æ¯i","Latin capital letter i with macron":"带长音符的大写拉ä¸å—æ¯i","Latin capital letter i with ogonek":"带å尾形符的大写拉ä¸å—æ¯i","Latin capital letter i with tilde":"带è…化符的大写拉ä¸å—æ¯i","Latin capital letter j with circumflex":"带扬抑符的大写拉ä¸å—æ¯j","Latin capital letter k with cedilla":"带软音符的大写拉ä¸å—æ¯k","Latin capital letter l with acute":"带é”音符的大写拉ä¸å—æ¯l","Latin capital letter l with caron":"带抑扬符的大写拉ä¸å—æ¯l","Latin capital letter l with cedilla":"带软音符的大写拉ä¸å—æ¯l","Latin capital letter l with middle dot":"带ä¸ç‚¹çš„大写拉ä¸å—æ¯l","Latin capital letter l with stroke":"å¸¦åˆ èŠ‚çº¿çš„å¤§å†™æ‹‰ä¸å—æ¯l","Latin capital letter n with acute":"带é”音符的大写拉ä¸å—æ¯n","Latin capital letter n with caron":"带抑扬符的大写拉ä¸å—æ¯n","Latin capital letter n with cedilla":"带软音符的大写拉ä¸å—æ¯n","Latin capital letter o with breve":"带çŸéŸ³ç¬¦çš„大写拉ä¸å—æ¯o","Latin capital letter o with double acute":"带åŒé”音符的大写拉ä¸å—æ¯o","Latin capital letter o with macron":"带长音符的大写拉ä¸å—æ¯o","Latin capital letter r with acute":"带é”音符的大写拉ä¸å—æ¯r","Latin capital letter r with caron":"带抑扬符的大写拉ä¸å—æ¯r","Latin capital letter r with cedilla":"带软音符的大写拉ä¸å—æ¯r","Latin capital letter s with acute":"带é”音符的大写拉ä¸å—æ¯s","Latin capital letter s with caron":"带抑扬符的大写拉ä¸å—æ¯s","Latin capital letter s with cedilla":"带软音符的大写拉ä¸å—æ¯s","Latin capital letter s with circumflex":"带扬抑符的大写拉ä¸å—æ¯s","Latin capital letter t with caron":"带抑扬符的大写拉ä¸å—æ¯t","Latin capital letter t with cedilla":"带软音符的大写拉ä¸å—æ¯t","Latin capital letter t with stroke":"å¸¦åˆ èŠ‚çº¿çš„å¤§å†™æ‹‰ä¸å—æ¯t","Latin capital letter u with breve":"带çŸéŸ³ç¬¦çš„大写拉ä¸å—æ¯u","Latin capital letter u with double acute":"带åŒé”音符的大写拉ä¸å—æ¯u","Latin capital letter u with macron":"带长音符的大写拉ä¸å—æ¯u","Latin capital letter u with ogonek":"带å尾形符的大写拉ä¸å—æ¯u","Latin capital letter u with ring above":"带上圆圈的大写拉ä¸å—æ¯u","Latin capital letter u with tilde":"带è…化符的大写拉ä¸å—æ¯u","Latin capital letter w with circumflex":"带扬抑符的大写拉ä¸å—æ¯w","Latin capital letter y with circumflex":"带扬抑符的大写拉ä¸å—æ¯y","Latin capital letter y with diaeresis":"带分音符的大写拉ä¸å—æ¯y","Latin capital letter z with acute":"带é”音符的大写拉ä¸å—æ¯z","Latin capital letter z with caron":"带抑扬符的大写拉ä¸å—æ¯z","Latin capital letter z with dot above":"带上点的大写拉ä¸å—æ¯z","Latin capital ligature ij":"大写拉ä¸è¿žå—符ij","Latin capital ligature oe":"大写拉ä¸è¿žå—符oe","Latin small letter a with breve":"带çŸéŸ³ç¬¦çš„å°å†™æ‹‰ä¸å—æ¯a","Latin small letter a with macron":"带长音符的å°å†™æ‹‰ä¸å—æ¯a","Latin small letter a with ogonek":"带å尾形符的å°å†™æ‹‰ä¸å—æ¯a","Latin small letter c with acute":"带é”音符的å°å†™æ‹‰ä¸å—æ¯c","Latin small letter c with caron":"带抑扬符的å°å†™æ‹‰ä¸å—æ¯c","Latin small letter c with circumflex":"带扬抑符的å°å†™æ‹‰ä¸å—æ¯c","Latin small letter c with dot above":"带上点的å°å†™æ‹‰ä¸å—æ¯c","Latin small letter d with caron":"带抑扬符的å°å†™æ‹‰ä¸å—æ¯d","Latin small letter d with stroke":"å¸¦åˆ èŠ‚çº¿çš„å°å†™æ‹‰ä¸å—æ¯d","Latin small letter dotless i":"没有点的å°å†™æ‹‰ä¸å—æ¯i","Latin small letter e with breve":"带çŸéŸ³ç¬¦çš„å°å†™æ‹‰ä¸å—æ¯e","Latin small letter e with caron":"带抑扬符的å°å†™æ‹‰ä¸å—æ¯e","Latin small letter e with dot above":"带上点的å°å†™æ‹‰ä¸å—æ¯e","Latin small letter e with macron":"带长音符的å°å†™æ‹‰ä¸å—æ¯e","Latin small letter e with ogonek":"带å尾形符的å°å†™æ‹‰ä¸å—æ¯e","Latin small letter eng":"å°å†™æ‹‰ä¸å—æ¯eng","Latin small letter f with hook":"带钩的拉ä¸æ–‡å°å†™å—æ¯ F","Latin small letter g with breve":"带çŸéŸ³ç¬¦çš„å°å†™æ‹‰ä¸å—æ¯g","Latin small letter g with cedilla":"带软音符的å°å†™æ‹‰ä¸å—æ¯g","Latin small letter g with circumflex":"带扬抑符的å°å†™æ‹‰ä¸å—æ¯g","Latin small letter g with dot above":"带上点的å°å†™æ‹‰ä¸å—æ¯g","Latin small letter h with circumflex":"带扬抑符的å°å†™æ‹‰ä¸å—æ¯h","Latin small letter h with stroke":"å¸¦åˆ èŠ‚çº¿çš„å°å†™æ‹‰ä¸å—æ¯h","Latin small letter i with breve":"带çŸéŸ³ç¬¦çš„å°å†™æ‹‰ä¸å—æ¯i","Latin small letter i with macron":"带长音符的å°å†™æ‹‰ä¸å—æ¯i","Latin small letter i with ogonek":"带å尾形符的å°å†™æ‹‰ä¸å—æ¯i","Latin small letter i with tilde":"带è…化符的å°å†™æ‹‰ä¸å—æ¯i","Latin small letter j with circumflex":"带扬抑符的å°å†™æ‹‰ä¸å—æ¯j","Latin small letter k with cedilla":"带软音符的å°å†™æ‹‰ä¸å—æ¯k","Latin small letter kra":"å°å†™æ‹‰ä¸å—æ¯kra","Latin small letter l with acute":"带é”音符的å°å†™æ‹‰ä¸å—æ¯l","Latin small letter l with caron":"带抑扬符的å°å†™æ‹‰ä¸å—æ¯l","Latin small letter l with cedilla":"带软音符的å°å†™æ‹‰ä¸å—æ¯l","Latin small letter l with middle dot":"带ä¸ç‚¹çš„å°å†™æ‹‰ä¸å—æ¯l","Latin small letter l with stroke":"å¸¦åˆ èŠ‚çº¿çš„å°å†™æ‹‰ä¸å—æ¯l","Latin small letter long s":"å°å†™æ‹‰ä¸å—æ¯é•¿s","Latin small letter n preceded by apostrophe":"å† ä»¥æ’‡å·çš„å°å†™æ‹‰ä¸å—æ¯n","Latin small letter n with acute":"带é”音符的å°å†™æ‹‰ä¸å—æ¯n","Latin small letter n with caron":"带抑扬符的å°å†™æ‹‰ä¸å—æ¯n","Latin small letter n with cedilla":"带软音符的å°å†™æ‹‰ä¸å—æ¯n","Latin small letter o with breve":"带çŸéŸ³ç¬¦çš„å°å†™æ‹‰ä¸å—æ¯o","Latin small letter o with double acute":"带åŒé”音符的å°å†™æ‹‰ä¸å—æ¯o","Latin small letter o with macron":"带长音符的å°å†™æ‹‰ä¸å—æ¯o","Latin small letter r with acute":"带é”音符的å°å†™æ‹‰ä¸å—æ¯r","Latin small letter r with caron":"带抑扬符的å°å†™æ‹‰ä¸å—æ¯r","Latin small letter r with cedilla":"带软音符的å°å†™æ‹‰ä¸å—æ¯r","Latin small letter s with acute":"带é”音符的å°å†™æ‹‰ä¸å—æ¯s","Latin small letter s with caron":"带抑扬符的å°å†™æ‹‰ä¸å—æ¯s","Latin small letter s with cedilla":"带软音符的å°å†™æ‹‰ä¸å—æ¯s","Latin small letter s with circumflex":"带扬抑符的å°å†™æ‹‰ä¸å—æ¯s","Latin small letter t with caron":"带抑扬符的å°å†™æ‹‰ä¸å—æ¯t","Latin small letter t with cedilla":"带软音符的å°å†™æ‹‰ä¸å—æ¯t","Latin small letter t with stroke":"å¸¦åˆ èŠ‚çº¿çš„å°å†™æ‹‰ä¸å—æ¯t","Latin small letter u with breve":"带çŸéŸ³ç¬¦çš„å°å†™æ‹‰ä¸å—æ¯u","Latin small letter u with double acute":"带åŒé”音符的å°å†™æ‹‰ä¸å—æ¯u","Latin small letter u with macron":"带长音符的å°å†™æ‹‰ä¸å—æ¯u","Latin small letter u with ogonek":"带å尾形符的å°å†™æ‹‰ä¸å—æ¯u","Latin small letter u with ring above":"带上圆圈的å°å†™æ‹‰ä¸å—æ¯u","Latin small letter u with tilde":"带è…化符的å°å†™æ‹‰ä¸å—æ¯u","Latin small letter w with circumflex":"带扬抑符的å°å†™æ‹‰ä¸å—æ¯w","Latin small letter y with circumflex":"带扬抑符的å°å†™æ‹‰ä¸å—æ¯y","Latin small letter z with acute":"带é”音符的å°å†™æ‹‰ä¸å—æ¯z","Latin small letter z with caron":"带抑扬符的å°å†™æ‹‰ä¸å—æ¯z","Latin small letter z with dot above":"带上点的å°å†™æ‹‰ä¸å—æ¯z","Latin small ligature ij":"å°å†™æ‹‰ä¸è¿žå—符ij","Latin small ligature oe":"å°å†™æ‹‰ä¸è¿žå—符oe","Left double quotation mark":"å·¦åŒå¼•å·","Left single quotation mark":"å·¦å•å¼•å·","Left-pointing double angle quotation mark":"åŒå·¦å°–括å·","leftwards arrow to bar":"头部带æ çš„å‘å·¦ç®å¤´","leftwards dashed arrow":"å‘左虚线ç®å¤´","leftwards double arrow":"å‘å·¦åŒç®å¤´","Less-than or equal to":"å°äºŽç‰äºŽ","Less-than sign":"å°äºŽå·","Lira sign":"里拉符å·","Livre tournois sign":"里弗尔符å·","Logical and":"逻辑与","Logical or":"逻辑或",Macron:"长音符å·","Manat sign":"马纳特符å·","Mill sign":"密尔符å·","Minus sign":"è´Ÿå·","Multiplication sign":"称å·","N-ary product":"N 元乘积","N-ary summation":"N 元求和",Nabla:"劈形算符","Naira sign":"奈拉符å·","New sheqel sign":"新谢克尔符å·","Nordic mark sign":"北欧马克å¾ç¬¦å·","Not an element of":"ä¸å±žäºŽ","Not equal to":"ä¸ç‰äºŽ","Not sign":"éž","on with exclamation mark with left right arrow above":"带有NOï¼æ ‡è¯†çš„å·¦å³åŒå‘ç®å¤´",Overline:"上划线","Paragraph sign":"段è½ç¬¦å·","Partial differential":"å微分","Per mille sign":"åƒåˆ†å·","Per ten thousand sign":"万分å·","Peseta sign":"比塞塔符å·","Peso sign":"比索符å·","Plus-minus sign":"æ£è´Ÿå·","Pound sign":"英镑符å·","Proportional to":"比例","Question exclamation mark":"疑问感å¹å·","Registered sign":"æ³¨å†Œå•†æ ‡","Reversed paragraph sign":"åå‘段è½ç¬¦å·","Right double quotation mark":"å³åŒå¼•å·","Right single quotation mark":"å³å•å¼•å·","Right-pointing double angle quotation mark":"åŒå³å°–括å·","rightwards arrow to bar":"头部带æ çš„å‘å³ç®å¤´","rightwards dashed arrow":"å‘å³è™šçº¿ç®å¤´","rightwards double arrow":"å‘å³åŒç®å¤´","Ruble sign":"ä¿„ç½—æ–¯å¢å¸ƒ","Rupee sign":"å¢æ¯”符å·","Section sign":"èŠ‚æ ‡è®°","Single left-pointing angle quotation mark":"å•å·¦å°–括å·","Single low-9 quotation mark":"低ä½åŽå•å¼•å·","Single right-pointing angle quotation mark":"å•å³å°–括å·","soon with rightwards arrow above":"带有soonæ ‡è¯†çš„å‘å³ç®å¤´","Special characters":"特殊å—符","Spesmilo sign":"斯佩斯米洛符å·","Square root":"å¹³æ–¹æ ¹","Tenge sign":"åšæˆˆç¬¦å·","There exists":"å˜åœ¨","Tilde operator":"波浪线è¿ç®—符","top with upwards arrow above":"带有topæ ‡è¯†çš„å‘上ç®å¤´","Trade mark sign":"å•†æ ‡ç¬¦å·","Tugrik sign":"å›¾æ ¼é‡Œå…‹ç¬¦å·","Turkish lira sign":"土耳其里拉符å·","Two dot leader":"二点å‰å¯¼ç¬¦",Union:"并集","up down arrow with base":"处于基线的上下ç®å¤´","upwards arrow to bar":"头部带æ çš„å‘上ç®å¤´","upwards dashed arrow":"å‘上虚线ç®å¤´","upwards double arrow":"å‘上åŒç®å¤´","Vulgar fraction one half":"普通分数二分之一","Vulgar fraction one quarter":"普通分数四分之一","Vulgar fraction three quarters":"普通分数四分之三","Won sign":"韩元符å·","Yen sign":"日元符å·"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e["zh-cn"]=e["zh-cn"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"第 %0 æ¥ï¼Œå…± %1 æ¥",Aquamarine:"æµ·è“色",Black:"黑色",Blue:"è“色",Cancel:"å–消","Dim grey":"æš—ç°è‰²","Dropdown toolbar":"下拉工具æ ","Edit block":"编辑框","Editor toolbar":"编辑器工具æ ",Green:"绿色",Grey:"ç°è‰²","Insert paragraph after block":"在åŽé¢æ’入段è½","Insert paragraph before block":"在å‰é¢æ’入段è½","Light blue":"æµ…è“色","Light green":"浅绿色","Light grey":"æµ…ç°è‰²",Next:"下一æ¥",Orange:"橙色",Previous:"上一æ¥",Purple:"紫色",Red:"红色",Redo:"é‡åš","Remove color":"移除颜色","Restore default":"æ¢å¤é»˜è®¤","Rich Text Editor":"富文本编辑器","Rich Text Editor, %0":"富文本编辑器, %0",Save:"ä¿å˜","Select all":"全选","Show more items":"显示更多",Turquoise:"é’色",Undo:"撤销","Upload in progress":"æ£åœ¨ä¸Šä¼ ",White:"白色","Widget toolbar":"å°éƒ¨ä»¶å·¥å…·æ ",Yellow:"黄色"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/translations/zh.js b/core/assets/vendor/ckeditor5/translations/zh.js new file mode 100644 index 000000000000..d12f7f167360 --- /dev/null +++ b/core/assets/vendor/ckeditor5/translations/zh.js @@ -0,0 +1 @@ +!function(n){const i=n.zh=n.zh||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"ç½®ä¸å°é½Š","Align left":"é å·¦å°é½Š","Align right":"é å³å°é½Š",Justify:"å·¦å³å°é½Š","Text alignment":"æ–‡å—å°é½Š","Text alignment toolbar":"æ–‡å—å°é½Š"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.zh=i.zh||{};n.dictionary=Object.assign(n.dictionary||{},{Bold:"ç²—é«”",Code:"代碼",Italic:"斜體",Strikethrough:"刪除線",Subscript:"下標",Superscript:"上標",Underline:"底線"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.zh=i.zh||{};n.dictionary=Object.assign(n.dictionary||{},{"Block quote":"段è½å¼•ç”¨"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const e=n.zh=n.zh||{};e.dictionary=Object.assign(e.dictionary||{},{"Choose heading":"é¸å–標題",Heading:"標題","Heading 1":"標題 1","Heading 2":"標題 2","Heading 3":"標題 3","Heading 4":"標題 4","Heading 5":"標題 5","Heading 6":"標題 6",Paragraph:"段è½","Type or paste your content here.":"在æ¤è¼¸å…¥æˆ–è²¼ä¸Šä½ çš„å…§å®¹ã€‚","Type your title":"è¼¸å…¥ä½ çš„æ¨™é¡Œ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.zh=i.zh||{};n.dictionary=Object.assign(n.dictionary||{},{"Horizontal line":"水平線"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const i=e.zh=e.zh||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Centered image":"ç½®ä¸åœ–片","Change image text alternative":"修改圖片的替代文å—","Enter image caption":"輸入圖片說明","Full size image":"完整尺寸圖片","Image resize list":"圖片縮放清單","Image toolbar":"圖片工具","image widget":"圖片å°å·¥å…·","In line":"",Insert:"","Insert image":"æ’入圖片","Insert image via URL":"","Left aligned image":"å‘å·¦å°é½Šåœ–片",Original:"原始圖片","Resize image":"縮放圖片","Resize image to %0":"縮放圖片到 %0","Resize image to the original size":"縮放圖片到原始尺寸","Right aligned image":"å‘å³å°é½Šåœ–片","Side image":"å´é‚Šåœ–片","Text alternative":"替代文å—",Update:"","Update image URL":"","Upload failed":"上傳失敗","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.zh=n.zh||{};i.dictionary=Object.assign(i.dictionary||{},{"Decrease indent":"減少縮排","Increase indent":"å¢žåŠ ç¸®æŽ’"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const a=n.zh=n.zh||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"é¸æ“‡èªžè¨€",Language:"語言","Remove language":"移除語言"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(n){const i=n.zh=n.zh||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"å¯ä¸‹è¼‰","Edit link":"編輯連çµ",Link:"連çµ","Link image":"圖片連çµ","Link URL":"連çµË™ URL","Open in a new tab":"在新視窗開啟","Open link in new tab":"在新視窗開啟連çµ","This link has no URL":"連çµæ²’有URL",Unlink:"移除連çµ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const l=e.zh=e.zh||{};l.dictionary=Object.assign(l.dictionary||{},{"Bulleted List":"符號清單","Bulleted list styles toolbar":"",Circle:"",Decimal:"","Decimal with leading zero":"",Disc:"","Lower-latin":"","Lower–roman":"","Numbered List":"有åºæ¸…å–®","Numbered list styles toolbar":"",Square:"","To-do List":"代辦清單","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.zh=i.zh||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"ç§»é™¤æ ¼å¼"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(i){const n=i.zh=i.zh||{};n.dictionary=Object.assign(n.dictionary||{},{Source:"原始碼"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const t=e.zh=e.zh||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"å‘下å°é½Š","Align cell text to the center":"ç½®ä¸å°é½Š","Align cell text to the left":"é å·¦å°é½Š","Align cell text to the middle":"ç½®ä¸å°é½Š","Align cell text to the right":"é å³å°é½Š","Align cell text to the top":"å‘上å°é½Š","Align table to the left":"é å·¦å°é½Š","Align table to the right":"é å³å°é½Š",Alignment:"å°é½Š",Background:"背景é¡è‰²",Border:"邊框","Cell properties":"儲å˜æ ¼å±¬æ€§","Center table":"ç½®ä¸å°é½Š",Color:"æ–‡å—é¡è‰²","Color picker":"é¡è‰²é¸æ“‡",Column:"欄",Dashed:"虛線","Delete column":"刪除欄","Delete row":"刪除列",Dimensions:"尺寸",Dotted:"點線",Double:"雙線","Enter table caption":"",Groove:"內凹線","Header column":"標題欄","Header row":"標題列",Height:"高度","Horizontal text alignment toolbar":"æ°´å¹³å°é½Š","Insert column left":"æ’入左方欄","Insert column right":"æ’å…¥å³æ–¹æ¬„","Insert row above":"æ’入上方列","Insert row below":"æ’入下方列","Insert table":"æ’å…¥è¡¨æ ¼",Inset:"內邊線","Justify cell text":"分散å°é½Š","Merge cell down":"åˆä½µä¸‹æ–¹å„²å˜æ ¼","Merge cell left":"åˆä½µå·¦æ–¹å„²å˜æ ¼","Merge cell right":"åˆä½µå³æ–¹å„²å˜æ ¼","Merge cell up":"åˆä½µä¸Šæ–¹å„²å˜æ ¼","Merge cells":"åˆä½µå„²å˜æ ¼",None:"ç„¡",Outset:"外框線",Padding:"儲å˜æ ¼ç•™ç™½",Ridge:"凸起線",Row:"列","Select column":"é¸æ“‡æ¬„","Select row":"é¸æ“‡åˆ—",Solid:"實線","Split cell horizontally":"水平分割儲å˜æ ¼","Split cell vertically":"垂直分割儲å˜æ ¼",Style:"樣å¼","Table alignment toolbar":"è¡¨æ ¼å°é½Š","Table cell text alignment":"儲å˜æ ¼æ–‡å—å°é½Š","Table properties":"è¡¨æ ¼å±¬æ€§","Table toolbar":"è¡¨æ ¼å·¥å…·",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'é¡è‰²ä»£ç¢¼éŒ¯èª¤ã€‚試試看 "#FF0000" 或 "rgb(255, 0, 0)" 或 "red"。','The value is invalid. Try "10px" or "2em" or simply "2".':'尺寸代碼錯誤。試試看 "10px" 或 "2em" 或簡單寫 "2"。',"Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"åž‚ç›´å°é½Š",Width:"寬度"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(t){const a=t.zh=t.zh||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"å‘下åœæ¢ç®é ","downwards dashed arrow":"å‘下虛線ç®é ","downwards double arrow":"å‘下雙ç®é ","Drachma sign":"","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"å‘å·¦åœæ¢ç®é ","leftwards dashed arrow":"å‘左虛線ç®é ","leftwards double arrow":"å‘左雙ç®é ","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"å‘å³åœæ¢ç®é ","rightwards dashed arrow":"å‘å³è™›ç·šç®é ","rightwards double arrow":"å‘å³é›™ç®é ","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"特殊å—å…ƒ","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"å‘上åœæ¢ç®é ","upwards dashed arrow":"å‘上虛線ç®é ","upwards double arrow":"å‘上雙ç®é ","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));!function(e){const o=e.zh=e.zh||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"æ·ºç¶ è‰²",Black:"黑色",Blue:"è—色",Cancel:"å–消","Dim grey":"æ·¡ç°è‰²","Dropdown toolbar":"下拉é¸å–®","Edit block":"編輯å€å¡Š","Editor toolbar":"編輯器工具",Green:"ç¶ è‰²",Grey:"ç°è‰²","Insert paragraph after block":"在這個å€å¡Šå¾Œé¢æ’入一個段è½","Insert paragraph before block":"在這個å€å¡Šå‰é¢æ’入一個段è½","Light blue":"亮è—色","Light green":"äº®ç¶ è‰²","Light grey":"亮ç°è‰²",Next:"下一",Orange:"橘色",Previous:"上一",Purple:"紫色",Red:"紅色",Redo:"é‡åš","Remove color":"移除é¡è‰²","Restore default":"","Rich Text Editor":"è±å¯Œæ–‡å—編輯器","Rich Text Editor, %0":"è±å¯Œæ–‡å—編輯器,%0",Save:"儲å˜","Select all":"é¸å–全部","Show more items":"顯示更多",Turquoise:"è—ç¶ è‰²",Undo:"å–消","Upload in progress":"æ£åœ¨ä¸Šå‚³",White:"白色","Widget toolbar":"å°å·¥å…·",Yellow:"黃色"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/core/composer.json b/core/composer.json index 0121aca5c95a..2566db7afb71 100644 --- a/core/composer.json +++ b/core/composer.json @@ -65,6 +65,7 @@ "drupal/book": "self.version", "drupal/breakpoint": "self.version", "drupal/ckeditor": "self.version", + "drupal/ckeditor5": "self.version", "drupal/claro": "self.version", "drupal/classy": "self.version", "drupal/color": "self.version", diff --git a/core/core.libraries.yml b/core/core.libraries.yml index f4449213627e..826fa73e4d12 100644 --- a/core/core.libraries.yml +++ b/core/core.libraries.yml @@ -22,6 +22,234 @@ ckeditor: js: assets/vendor/ckeditor/ckeditor.js: { preprocess: false, minified: true } +ckeditor5: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/ckeditor5-dll.js: { preprocess: false, minified: true } + +ckeditor5.editorClassic: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/editor-classic.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.editorDecoupled: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/editor-decoupled.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + - core/ckeditor5.htmlSupport + +ckeditor5.internal: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/essentials.js: { preprocess: false, minified: true } + assets/vendor/ckeditor5/heading.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.basic: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/basic-styles.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.specialCharacters: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/special-characters.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.blockquote: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/block-quote.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.image: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/image.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.link: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/link.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.list: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/list.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.horizontalLine: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/horizontal-line.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.htmlSupport: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/html-support.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.alignment: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/alignment.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.removeFormat: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/remove-format.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.pasteFromOffice: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/paste-from-office.js: { preprocess: false, minified: true } + dependencies: + - ckeditor5/ckeditor5 + +ckeditor5.indent: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/indent.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.sourceEditing: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/source-editing.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.table: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/table.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.language: + remote: https://github.com/ckeditor/ckeditor5 + version: "31.0.0" + license: + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/v31.0.0/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/language.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + css.escape: remote: https://github.com/mathiasbynens/CSS.escape version: "1.5.1" diff --git a/core/modules/ckeditor5/ckeditor5.api.php b/core/modules/ckeditor5/ckeditor5.api.php new file mode 100644 index 000000000000..dce79025ebf5 --- /dev/null +++ b/core/modules/ckeditor5/ckeditor5.api.php @@ -0,0 +1,235 @@ +<?php + +/** + * @file + * Documentation related to CKEditor 5. + */ + +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition; + +/** + * @defgroup ckeditor5_architecture CKEditor 5 architecture + * @{ + * + * @section overview Overview + * The CKEditor 5 module integrates CKEditor 5 with Drupal's filtering and text + * editor APIs. + * + * Where possible, it uses upstream CKEditor plugins, but it also relies on + * Drupal-specific CKEditor plugins to ensure a consistent user experience. + * + * @see https://ckeditor.com/ckeditor-5/ + * + * @section data_models Data models + * Drupal and CKEditor 5 have very different data models. + * + * Drupal stores blobs of HTML that remains manageable thanks to the use of + * filters and granular HTML restrictions — crucially this remains manageable + * thanks to those restrictions but also because Drupal does not need to + * process, render, understand or otherwise interact with it. + * + * @see \Drupal\text\Plugin\Field\FieldType\TextItemBase + * @see \Drupal\filter\Plugin\Filter\FilterInterface::getHTMLRestrictions() + * + * On the other hand, CKEditor 5 must not only be able to render these + * blobs, but also allow editing and creating it. This requires a much deeper + * understanding of that HTML. + * + * CKEditor 5 (in contrast with CKEditor 4) therefore has its own data model to + * represent this information — that data model is explicitly not HTML. + * + * Therefore all interactions between Drupal and CKEditor 5 need to translate + * between these different data models. + * + * @see https://ckeditor.com/docs/ckeditor5/latest/framework/guides/architecture/editing-engine.html#element-types-and-custom-data + * + * @section plugins CKEditor 5 Plugins + * CKEditor 5 plugins may use either YAML or a PHP annotation for their + * definitions. A PHP class does not need an annotation if it is defined in yml. + * + * To be discovered, YAML definition files must be named + * {module_name}.ckeditor5.yml. + * + * @see ckeditor5.ckeditor5.yml for many examples of CKEditor 5 plugin + * configuration as YAML. + * + * The minimally required metadata: the CKEditor 5 plugins to load, the label + * and the HTML elements it can generate — here's an example for a module + * providing a Marquee plugin, both in yml and Annotation form: + * + * @code + * MODULE_NAME_marquee: + * ckeditor5: + * plugins: [PACKAGE.CLASS] + * drupal: + * label: Marquee + * elements: + * - <marquee> + * @endcode + * + * and + * + * @code + * * @CKEditor5Plugin( + * * id = "MODULE_NAME_marquee", + * * ckeditor5 = @CKEditor5AspectsOfCKEditor5Plugin( + * * plugins = { "PACKAGE.CLASS" }, + * * ), + * * drupal = @DrupalAspectsOfCKEditor5Plugin( + * * label = @Translation("Marquee"), + * * elements = { "<marquee>" }, + * * ) + * * ) + * @endcode + * + * The metadata relating strictly to the CKEditor 5 plugin's JS code is stored + * in the 'ckeditor5' key; all other metadata is stored in the 'drupal' key. + * + * If the plugin has a dependency on another module, adding the 'provider' key + * will prevent the plugin from being loaded if that module is not installed. + * + * All of these can be defined in YAML or annotations. A given plugin should + * choose one or the other, as a definition can't parse both at once. + * + * Overview of all available plugin definition properties: + * + * - provider: Allows a plugin to have a dependency on another module. If it has + * a value, a module with a machine name matching that value must be installed + * for the configured plugin to load. + * - ckeditor5.plugins: A list CKEditor 5 JavaScript plugins to load, as + * '{package.Class}' , such as 'drupalMedia.DrupalMedia'. + * - ckeditor5.config: A keyed array of additional values for the constructor of + * the CKEditor 5 JavaScript plugins being loaded. i.e. this becomes the + * CKEditor 5 plugin configuration settings (see + * https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/configuration.html) + * for a given plugin. + * - drupal.label: Human-readable name of the CKEditor 5 plugin. + * - drupal.library: A Drupal asset library to load with the plugin. + * - drupal.admin_library: A Drupal asset library that will load in the text + * format admin UI when the plugin is available. + * - drupal.class: Optional PHP class that makes it possible for the plugin to + * provide dynamic values, or a configuration UI. The value should be + * formatted as '\Drupal\{module_name}\Plugin\CKEditor5Plugin\{class_name}' to + * make it discoverable. + * - drupal.elements: A list of elements and attributes the plugin allows use of + * within CKEditor 5. This uses the same syntax as the 'filter_html' plugin + * with an additional special keyword: '<$block>' . Using + * '<$block [attribute(s)]>` will permit the provided attributes in all block + * level tags that are explicitly enabled in any plugin. i.e. if only '<p>', + * '<h3>' and '<h2>' tags are allowed, then '<$block data-something>' will + * allow the 'data-something' attribute for '<p>', '<h3>' and '<h2>' tags. + * - drupal.toolbar_items: List of toolbar items the plugin provides. Keyed by a + * machine name and the value being a pair defining the label: + * @code + * toolbar_items: + * indent: + * label: Indent + * outdent: + * label: Outdent + * @encode + * - drupal.conditions: Conditions required for the plugin to load (other than + * module dependencies, which are defined by the 'provider' property). + * Conditions can check for three different things: + * - 'toolbarItem': a toolbar item that must be enabled + * - 'filter': a filter that must be enabled + * - 'imageUploadStatus': TRUE if image upload must be enabled, FALSE if it + * must not be enabled + * - 'plugins': a list of CKEditor 5 Drupal plugin IDs that must be enabled + * + * All of these can be defined in YAML or annotations. A given plugin should + * choose one or the other, as a definition can't parse both at once. + * + * @see \Drupal\ckeditor5\Annotation\CKEditor5Plugin + * @see \Drupal\ckeditor5\Annotation\CKEditor5AspectsOfCKEditor5Plugin + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin + * + * @section upgrade_path Upgrade path + * + * Modules can provide upgrade paths similar to the built-in upgrade path for + * Drupal core's CKEditor 4 to CKEditor 5, by providing a CKEditor4To5Upgrade + * plugin. This plugin type allows: + * - mapping a CKEditor 4 button to an equivalent CKEditor 5 toolbar item + * - mapping CKEditor 4 plugin settings to equivalent CKEditor 5 plugin + * configuration. + * The supported CKEditor 4 buttons and/or CKEditor 4 plugin settings must be + * specified in the annotation. + * See Drupal core's implementation for an example. + * + * @see \Drupal\ckeditor5\Annotation\CKEditor4To5Upgrade + * @see \Drupal\ckeditor5\Plugin\CKEditor4To5UpgradePluginInterface + * @see \Drupal\ckeditor5\Plugin\CKEditor4To5Upgrade\Core + * + * @section public_api Public API + * + * The CKEditor 5 module provides no public API, other than: + * - the annotations and interfaces mentioned above; + * - to help implement CKEditor 5 plugins: + * \Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait and + * \Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; + * - \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition, which is used to + * interact with plugin definitions in hook_ckeditor5_plugin_info_alter(); + * - to help contributed modules write tests: + * \Drupal\Tests\ckeditor5\Kernel\CKEditor5ValidationTestTrait and + * \Drupal\Tests\ckeditor5\Traits\CKEditor5TestTrait; + * - to help contributed modules write configuration schemas for configurable + * plugins, the data types in config/schema/ckeditor5.data_types.yml are + * likely to be useful. They automatically get validation constraints applied; + * - to help contributed modules write validation constraints for configurable + * plugins, it is strongly recommended to subclass + * \Drupal\Tests\ckeditor5\Kernel\ValidatorsTest. For very complex validation + * constraints that need to access text editor and/or format, use + * \Drupal\ckeditor5\Plugin\Validation\Constraint\TextEditorObjectDependentValidatorTrait. + * + * @} + */ + +/** + * @addtogroup hooks + * @{ + */ + +/** + * Modify the list of available CKEditor 5 plugins. + * + * This hook may be used to modify plugin properties after they have been + * specified by other modules. + * + * @param array $plugin_definitions + * An array of all the existing plugin definitions, passed by reference. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManager + */ +function hook_ckeditor5_plugin_info_alter(array &$plugin_definitions): void { + assert($plugin_definitions['ckeditor5_link'] instanceof CKEditor5PluginDefinition); + $link_plugin_definition = $plugin_definitions['ckeditor5_link']->toArray(); + $link_plugin_definition['ckeditor5']['config']['link']['decorators'][] = [ + 'mode' => 'manual', + 'label' => t('Open in new window'), + 'attributes' => [ + 'target' => '_blank', + ], + ]; + $plugin_definitions['ckeditor5_link'] = new CKEditor5PluginDefinition($link_plugin_definition); +} + +/** + * Modify the list of available CKEditor 4 to 5 Upgrade plugins. + * + * This hook may be used to modify plugin properties after they have been + * specified by other modules. For example, to override a default upgrade path. + * + * @param array $plugin_definitions + * An array of all the existing plugin definitions, passed by reference. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor4To5UpgradePluginManager + */ +function hook_ckeditor4to5upgrade_plugin_info_alter(array &$plugin_definitions): void { + // Remove core's upgrade path for the "Maximize" button (which is: there is no + // equivalent). This allows a different CKEditor4To5Upgrade plugin to define + // this upgrade path instead. + unset($plugin_definitions['core']['cke4_buttons']['Maximize']); +} + +/** + * @} End of "addtogroup hooks". + */ diff --git a/core/modules/ckeditor5/ckeditor5.ckeditor5.yml b/core/modules/ckeditor5/ckeditor5.ckeditor5.yml new file mode 100644 index 000000000000..474322d1c6a6 --- /dev/null +++ b/core/modules/ckeditor5/ckeditor5.ckeditor5.yml @@ -0,0 +1,510 @@ +# CKEditor 5 Drupal plugin definitions. +# @see this module's README.md for details on defining CKEditor 5 plugins in +# Drupal. + +ckeditor5_essentials: + ckeditor5: + plugins: + - drupalHtmlEngine.DrupalHtmlEngine + - essentials.Essentials + drupal: + label: Essentials + library: ckeditor5/drupal.ckeditor5.internal + admin_library: ckeditor5/admin.internal + toolbar_items: + undo: + label: Undo + redo: + label: Redo + elements: + - <br> + conditions: [] + +ckeditor5_paragraph: + ckeditor5: + plugins: [paragraph.Paragraph] + drupal: + label: Paragraph + library: core/ckeditor5.internal + admin_library: ckeditor5/admin.internal + elements: + - <p> + +ckeditor5_heading: + ckeditor5: + plugins: [heading.Heading] + config: + heading: + # These are the options passed to the CKEditor heading constructor + # @see https://ckeditor.com/docs/ckeditor5/latest/api/module_heading_heading-HeadingConfig.html#member-options + # for details on what each of these config properties do. + options: + - { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' } + - { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' } + - { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' } + - { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' } + - { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' } + - { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' } + - { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' } + drupal: + label: Headings + library: core/ckeditor5.internal + admin_library: ckeditor5/admin.heading + class: Drupal\ckeditor5\Plugin\CKEditor5Plugin\Heading + toolbar_items: + heading: + label: Heading + elements: + - <h1> + - <h2> + - <h3> + - <h4> + - <h5> + - <h6> + +ckeditor5_htmlSupport: + ckeditor5: + plugins: [htmlSupport.GeneralHtmlSupport] + config: + htmlSupport: + allow: + - + name: + regexp: + pattern: /.*/ + attributes: true + classes: true + styles: true + drupal: + label: Arbitrary HTML support + elements: false + library: core/ckeditor5.htmlSupport + # @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface::getEnabledDefinitions() + conditions: [] + +ckeditor5_specialCharacters: + ckeditor5: + plugins: + - specialCharacters.SpecialCharacters + - specialCharacters.SpecialCharactersEssentials + drupal: + label: Special characters + library: core/ckeditor5.specialCharacters + admin_library: ckeditor5/admin.specialCharacters + toolbar_items: + specialCharacters: + label: Special characters + elements: false + +ckeditor5_sourceEditing: + ckeditor5: + plugins: + - sourceEditing.SourceEditing + - htmlSupport.GeneralHtmlSupport + drupal: + label: Source editing + class: \Drupal\ckeditor5\Plugin\CKEditor5Plugin\SourceEditing + # This is the only CKEditor 5 plugin allowed to generate a superset of elements. + # @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\SourceEditing::getElementsSubset() + elements: ['<*>'] + library: core/ckeditor5.sourceEditing + admin_library: ckeditor5/admin.sourceEditing + toolbar_items: + sourceEditing: + label: Source + +ckeditor5_bold: + ckeditor5: + plugins: [basicStyles.Bold] + drupal: + label: Bold + library: core/ckeditor5.basic + admin_library: ckeditor5/admin.basic + toolbar_items: + bold: + label: Bold + elements: + - <strong> + +ckeditor5_emphasis: + ckeditor5: + plugins: + - basicStyles.Italic + - drupalEmphasis.DrupalEmphasis + drupal: + label: Emphasis + library: ckeditor5/drupal.ckeditor5.emphasis + admin_library: ckeditor5/admin.basic + toolbar_items: + italic: + label: Italic + elements: + - <em> + +ckeditor5_underline: + ckeditor5: + plugins: [basicStyles.Underline] + drupal: + label: Underline + library: core/ckeditor5.basic + admin_library: ckeditor5/admin.basic + toolbar_items: + underline: + label: Underline + elements: + - <u> + +ckeditor5_code: + ckeditor5: + plugins: [basicStyles.Code] + drupal: + label: Code + library: core/ckeditor5.basic + admin_library: ckeditor5/admin.basic + toolbar_items: + code: + label: Code + elements: + - <code> + +ckeditor5_strikethrough: + ckeditor5: + plugins: [basicStyles.Strikethrough] + drupal: + label: Strikethrough + library: core/ckeditor5.basic + admin_library: ckeditor5/admin.basic + toolbar_items: + strikethrough: + label: Strikethrough + elements: + - <s> + +ckeditor5_subscript: + ckeditor5: + plugins: [basicStyles.Subscript] + drupal: + label: Subscript + library: core/ckeditor5.basic + admin_library: ckeditor5/admin.basic + toolbar_items: + subscript: + label: Subscript + elements: + - <sub> + +ckeditor5_superscript: + ckeditor5: + plugins: [basicStyles.Superscript] + drupal: + label: Superscript + library: core/ckeditor5.basic + admin_library: ckeditor5/admin.basic + toolbar_items: + superscript: + label: Superscript + elements: + - <sup> + +ckeditor5_blockquote: + ckeditor5: + plugins: + - blockQuote.BlockQuote + drupal: + label: Block quote + library: core/ckeditor5.blockquote + admin_library: ckeditor5/admin.blockquote + toolbar_items: + blockQuote: + label: Block quote + elements: + - <blockquote> + +ckeditor5_link: + ckeditor5: + plugins: + - link.Link + drupal: + label: Link + library: core/ckeditor5.link + admin_library: ckeditor5/admin.link + toolbar_items: + link: + label: Link + elements: + - <a href> + +ckeditor5_linkImage: + ckeditor5: + plugins: + - link.LinkImage + config: + # Append the "Link" button to the image balloon toolbar. + image: + toolbar: + - '|' + - linkImage + drupal: + label: Linked Image + elements: false + conditions: + plugins: + - ckeditor5_link + - ckeditor5_image + +ckeditor5_linkMedia: + ckeditor5: + plugins: + - drupalMedia.DrupalLinkMedia + config: + # Append the "Link" button to the media balloon toolbar. + drupalMedia: + toolbar: [drupalLinkMedia] + drupal: + label: Linked Media + elements: false + conditions: + plugins: + - ckeditor5_link + - media_media + +ckeditor5_list: + ckeditor5: + plugins: [list.List] + drupal: + label: List + library: core/ckeditor5.list + admin_library: ckeditor5/admin.list + toolbar_items: + bulletedList: + label: Bulleted list + numberedList: + label: Numbered list + elements: + - <ul> + - <ol> + - <li> + +ckeditor5_horizontalLine: + ckeditor5: + plugins: [horizontalLine.HorizontalLine] + drupal: + label: Horizontal line + library: core/ckeditor5.horizontalLine + admin_library: ckeditor5/admin.horizontalLine + toolbar_items: + horizontalLine: + label: Horizontal line + elements: + - <hr> + +ckeditor5_alignment: + ckeditor5: + plugins: [alignment.Alignment] + config: + # @see core/modules/system/css/components/align.module.css + alignment: + options: + - name: left + className: text-align-left + - name: center + className: text-align-center + - name: right + className: text-align-right + - name: justify + className: text-align-justify + drupal: + label: Alignment + library: core/ckeditor5.alignment + admin_library: ckeditor5/admin.alignment + toolbar_items: + alignment: + label: Text alignment + "alignment:left": + label: Align left + "alignment:center": + label: Align center + "alignment:right": + label: Align right + "alignment:justify": + label: justify + elements: + - <$block class="text-align-left text-align-center text-align-right text-align-justify"> + +ckeditor5_removeFormat: + ckeditor5: + plugins: [removeFormat.RemoveFormat] + drupal: + label: Remove Format + library: core/ckeditor5.removeFormat + admin_library: ckeditor5/admin.removeFormat + toolbar_items: + removeFormat: + label: Remove Format + elements: false + +ckeditor5_pasteFromOffice: + ckeditor5: + plugins: [pasteFromOffice.PasteFromOffice] + drupal: + label: Paste From Office + library: core/ckeditor5.pasteFromOffice + elements: false + conditions: [] + +ckeditor5_table: + ckeditor5: + plugins: + - table.Table + - table.TableToolbar + config: + table: + contentToolbar: [tableColumn, tableRow, mergeTableCells] + drupal: + label: Table + library: core/ckeditor5.table + admin_library: ckeditor5/admin.table + toolbar_items: + insertTable: + label: table + elements: + - <table> + - <tr> + - <td> + - <th> + - <thead> + - <tbody> + - <tfoot> + +ckeditor5_image: + ckeditor5: + plugins: + - image.Image + - image.ImageToolbar + - drupalImage.DrupalImage + config: + image: + toolbar: [imageTextAlternative] + drupal: + label: Image + library: ckeditor5/drupal.ckeditor5.image + elements: + - <img src alt data-entity-uuid data-entity-type height width> + conditions: + toolbarItem: uploadImage + imageUploadStatus: true + +ckeditor5_imageCaption: + ckeditor5: + plugins: + - image.ImageCaption + config: + image: + toolbar: [toggleImageCaption] + drupal: + label: Image caption + elements: + - <img data-caption> + conditions: + toolbarItem: uploadImage + imageUploadStatus: true + filter: filter_caption + +ckeditor5_imageAlign: + ckeditor5: + plugins: + - image.ImageStyle + config: + image: + toolbar: + - name: 'imageStyle:icons' + items: + - 'imageStyle:alignLeft' + - 'imageStyle:alignCenter' + - 'imageStyle:alignRight' + defaultItem: 'imageStyle:alignCenter' + drupal: + label: Image align + elements: + - <img data-align> + conditions: + toolbarItem: uploadImage + imageUploadStatus: true + filter: filter_align + +ckeditor5_indent: + ckeditor5: + plugins: [indent.Indent] + drupal: + label: Indent + elements: false + library: core/ckeditor5.indent + admin_library: ckeditor5/admin.indent + toolbar_items: + indent: + label: Indent + outdent: + label: Outdent + +ckeditor5_language: + ckeditor5: + plugins: [language.TextPartLanguage] + drupal: + label: Language + library: ckeditor5/ckeditor5.language + admin_library: ckeditor5/admin.language + class: Drupal\ckeditor5\Plugin\CKEditor5Plugin\Language + toolbar_items: + textPartLanguage: + label: Language + elements: + - <span lang dir> + +media_media: + provider: media + ckeditor5: + plugins: + - drupalMedia.DrupalMedia + config: + drupalMedia: + toolbar: [mediaImageTextAlternative] + themeError: + func: + name: Drupal.theme + args: [mediaEmbedPreviewError] + invoke: true + drupal: + label: Media + library: ckeditor5/drupal.ckeditor5.media + class: Drupal\ckeditor5\Plugin\CKEditor5Plugin\Media + elements: + - <drupal-media data-entity-type data-entity-uuid alt> + conditions: + filter: media_embed + +media_library_mediaLibrary: + provider: media_library + ckeditor5: + plugins: [] + config: + drupalMedia: + openDialog: + func: + name: Drupal.ckeditor5.openDialog + invoke: false + dialogSettings: + height: 75% + dialogClass: media-library-widget-modal + title: Add or select media + drupal: + label: Media Library + elements: false + admin_library: ckeditor5/admin.drupalmedia + class: Drupal\ckeditor5\Plugin\CKEditor5Plugin\MediaLibrary + library: editor/drupal.editor.dialog + toolbar_items: + drupalMedia: + label: Drupal media + conditions: + filter: media_embed + toolbarItem: drupalMedia diff --git a/core/modules/ckeditor5/ckeditor5.info.yml b/core/modules/ckeditor5/ckeditor5.info.yml new file mode 100644 index 000000000000..6d93d11a3fa0 --- /dev/null +++ b/core/modules/ckeditor5/ckeditor5.info.yml @@ -0,0 +1,8 @@ +name: CKEditor 5 +type: module +description: "WYSIWYG editing for rich text fields using CKEditor 5." +version: VERSION +package: Core (Experimental) +lifecycle: experimental +dependencies: + - drupal:editor diff --git a/core/modules/ckeditor5/ckeditor5.libraries.yml b/core/modules/ckeditor5/ckeditor5.libraries.yml new file mode 100644 index 000000000000..a4f082c2c5ca --- /dev/null +++ b/core/modules/ckeditor5/ckeditor5.libraries.yml @@ -0,0 +1,184 @@ +# cspell:ignore imageupload + +ckeditor5.language: + css: + component: + css/language.css: {} + dependencies: + - core/ckeditor5.language + +drupal.ckeditor5.internal: + js: + js/build/drupalHtmlEngine.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5.internal + +drupal.ckeditor5: + js: + js/ckeditor5.js: {} + css: + theme: + css/quickedit.css: { } + dependencies: + - core/jquery + - core/drupal + - core/drupal.debounce + - core/ckeditor5.editorClassic + - core/ckeditor5.editorDecoupled + - core/ckeditor5 + - editor/drupal.editor + - ckeditor5/drupal.ckeditor5.quickedit-temporary-work-around + +drupal.ckeditor5.quickedit-temporary-work-around: + deprecated: "Temporary work-around until https://www.drupal.org/project/drupal/issues/3196689 lands." + css: + theme: + css/quickedit-override.css: {} + +drupal.ckeditor5.image: + js: + js/build/drupalImage.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5.image + +drupal.ckeditor5.emphasis: + version: VERSION + js: + js/build/drupalEmphasis.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5.basic + +drupal.ckeditor5.media: + js: + js/media_embed_ckeditor5.theme.js: {} + js/build/drupalMedia.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + - core/drupal + +ie11.user.warnings: + js: + js/ie11.user.warnings.js: { } + css: + theme: + css/ie-warnings.css: { } + dependencies: + - core/drupal + - core/drupal.message + - editor/drupal.editor + - core/modernizr + +ie11.filter.warnings: + js: + js/ie11.filter.warnings.js: {} + dependencies: + - core/drupal + - core/drupal.message + - core/once + - core/modernizr + +drupal.ckeditor5.filter.admin: + js: + js/ckeditor5.filter.admin.js: {} + css: + theme: + css/filter.admin.css: { } + dependencies: + - core/drupal + - core/drupal.message + - core/once + - core/drupal.ajax + +admin: + js: + js/ckeditor5.admin.js: { } + css: + theme: + css/toolbar.admin.css: { } + dependencies: + - core/sortable + - filter/drupal.filter.admin + - core/jquery + - core/once + +admin.specialCharacters: + css: + theme: + css/special-characters.css: { } + +admin.removeFormat: + css: + theme: + css/remove-format.css: { } + +admin.internal: + css: + theme: + css/internal.admin.css: { } + +admin.basic: + css: + theme: + css/basic.admin.css: { } + +admin.blockquote: + css: + theme: + css/blockquote.admin.css: { } + +admin.link: + css: + theme: + css/link.admin.css: { } + +admin.list: + css: + theme: + css/list.admin.css: { } + +admin.heading: + css: + theme: + css/heading.admin.css: { } + dependencies: + - core/ckeditor5.internal + +admin.horizontalLine: + css: + theme: + css/horizontal-line.admin.css: { } + +admin.alignment: + css: + theme: + css/alignment.admin.css: { } + +admin.imageupload: + css: + theme: + css/imageupload.admin.css: { } + +admin.indent: + css: + theme: + css/indent.admin.css: { } + +admin.language: + css: + theme: + css/language.admin.css: { } + +admin.drupalmedia: + css: + theme: + css/drupalmedia.admin.css: { } + +admin.sourceEditing: + css: + theme: + css/source-editing.admin.css: { } + +admin.table: + css: + theme: + css/table.admin.css: { } diff --git a/core/modules/ckeditor5/ckeditor5.module b/core/modules/ckeditor5/ckeditor5.module new file mode 100644 index 000000000000..b6ccf9711ce9 --- /dev/null +++ b/core/modules/ckeditor5/ckeditor5.module @@ -0,0 +1,398 @@ +<?php + +/** + * @file + * Implements hooks for the CKEditor 5 module. + */ + +declare(strict_types = 1); + +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\Core\Ajax\AjaxResponse; +use Drupal\Core\Ajax\InvokeCommand; +use Drupal\Core\Ajax\MessageCommand; +use Drupal\Core\Ajax\PrependCommand; +use Drupal\Core\Ajax\ReplaceCommand; +use Drupal\Core\Ajax\RemoveCommand; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Render\Element; +use Drupal\Core\Routing\RouteMatchInterface; +use Drupal\Core\Url; +use Symfony\Component\Validator\Constraints\Choice; + +/** + * Implements hook_help(). + */ +function ckeditor5_help($route_name, RouteMatchInterface $route_match) { + switch ($route_name) { + case 'help.page.ckeditor5': + $output = ''; + $output .= '<h3>' . t('About') . '</h3>'; + $output .= '<p>' . t('The CKEditor 5 module provides a highly-accessible, highly-usable visual text editor and adds a toolbar to text fields. Users can use buttons to format content and to create semantically correct and valid HTML. The CKEditor module uses the framework provided by the <a href=":text_editor">Text Editor module</a>. It requires JavaScript to be enabled in the browser. For more information, see the <a href=":doc_url">online documentation for the CKEditor 5 module</a> and the <a href=":cke5_url">CKEditor 5 website</a>.', [':doc_url' => 'https://www.drupal.org/docs/contributed-modules/ckeditor-5', ':cke5_url' => 'https://ckeditor.com/ckeditor-5/', ':text_editor' => Url::fromRoute('help.page', ['name' => 'editor'])->toString()]) . '</p>'; + $output .= '<h3>' . t('Uses') . '</h3>'; + $output .= '<dl>'; + $output .= '<dt>' . t('Enabling CKEditor 5 for individual text formats') . '</dt>'; + $output .= '<dd>' . t('CKEditor 5 has to be enabled and configured separately for individual text formats from the <a href=":formats">Text formats and editors page</a> because the filter settings for each text format can be different. For more information, see the <a href=":text_editor">Text Editor help page</a> and <a href=":filter">Filter help page</a>.', [':formats' => Url::fromRoute('filter.admin_overview')->toString(), ':text_editor' => Url::fromRoute('help.page', ['name' => 'editor'])->toString(), ':filter' => Url::fromRoute('help.page', ['name' => 'filter'])->toString()]) . '</dd>'; + $output .= '<dt>' . t('Migration for existing text formats switching to CKEditor 5') . '</dt>'; + $output .= '<dd>' . t('Text formats switching to CKEditor 5 from CKEditor 4 (or no text editor) should be able to do so with minimal effort and zero data loss. Existing configuration will be automatically migrated to CKEditor 5 compatible configuration. In instances where functionality can not be migrated, detailed messages are provided explaining what is necessary for feature parity.') . '</dd>'; + $output .= '<dt>' . t('Configuring the toolbar') . '</dt>'; + $output .= '<dd>' . t('When CKEditor 5 is chosen from the <em>Text editor</em> drop-down menu, its toolbar configuration is displayed. You can add and remove buttons from the <em>Active toolbar</em> by dragging and dropping them. Separators and rows can be added to organize the buttons.') . '</dd>'; + $output .= '<dt>' . t('Filtering HTML content') . '</dt>'; + $output .= '<dd>' . t("Unlike other text editors, plugin configuration determines the tags and attributes allowed in text formats using CKEditor 5. If using the <em>Limit allowed HTML tags and correct faulty HTML</em> filter, this filter's values will be automatically set based on enabled plugins and toolbar items."); + $output .= '<dt>' . t('Toggling between formatted text and HTML source') . '</dt>'; + $output .= '<dd>' . t('If the <em>Source</em> button is available in the toolbar, users can click this button to disable the visual editor and edit the HTML source directly. After toggling back, the visual editor uses the HTML tags allowed via plugin configuration (and not explicity disallowed by filters) to format the text. Tags not enabled via plugin configuration will be be stripped out of the HTML source when the user toggles back to the text editor.') . '</dd>'; + $output .= '<dt>' . t('Developing CKEditor 5 plugins in Drupal') . '</dt>'; + $output .= '<dd>' . t('See the <a href=":dev_docs_url">online documentation</a> for detailed information on developing CKEditor 5 plugins for use in Drupal.', [':dev_docs_url' => 'https://www.drupal.org/docs/contributed-modules/ckeditor-5/plugin-and-contrib-module-development']) . '</dd>'; + $output .= '</dd>'; + $output .= '<dt>' . t('Accessibility features') . '</dt>'; + $output .= '<dd>' . t('The built in WYSIWYG editor (CKEditor 5) comes with a number of accessibility features. CKEditor 5 comes with built in <a href=":shortcuts">keyboard shortcuts</a>, which can be beneficial for both power users and keyboard only users.', [':shortcuts' => 'https://ckeditor.com/docs/ckeditor5/latest/features/keyboard-support.html']) . '</dd>'; + $output .= '<dt>' . t('Generating accessible content') . '</dt>'; + $output .= '<dd>'; + $output .= '<ul>'; + // @todo Uncomment this in https://www.drupal.org/project/ckeditor5/issues/3230230 + // $output .= '<li>' . t('HTML tables can be created with table headers and caption/summary elements.') . '</li>'; + // @todo Uncomment this in https://www.drupal.org/project/ckeditor5/issues/3222757 + // $output .= '<li>' . t('Alt text is required by default on images added through CKEditor (note that this can be overridden).') . '</li>'; + $output .= '<li>' . t('Semantic HTML5 figure/figcaption are available to add captions to images.') . '</li>'; + $output .= '<li>' . t('To support multilingual page content, CKEditor 5 can be configured to include a language button in the toolbar.') . '</li>'; + $output .= '</ul>'; + $output .= '</dd>'; + $output .= '</dl>'; + return $output; + } +} + +/** + * Implements hook_theme(). + */ +function ckeditor5_theme() { + return [ + // The theme hook is used for rendering the CKEditor 5 toolbar settings in + // the Drupal admin UI. The toolbar settings UI is internal, and utilizing + // it outside of core usages is not supported because the UI can change at + // any point. + // @internal + 'ckeditor5_settings_toolbar' => [ + 'render element' => 'form', + ], + ]; +} + +/** + * Implements hook_module_implements_alter(). + */ +function ckeditor5_module_implements_alter(&$implementations, $hook) { + // This module's implementation of form_filter_format_form_alter() must happen + // after the editor module's implementation, as that implementation adds the + // active editor to $form_state. It must also happen after the media module's + // implementation so media_filter_format_edit_form_validate can be removed + // from the validation chain, as that validator is not needed with CKEditor 5 + // and will trigger a false error. + if ($hook === 'form_alter' && isset($implementations['ckeditor5']) && isset($implementations['editor'])) { + $group = $implementations['ckeditor5']; + unset($implementations['ckeditor5']); + + $offset = array_search('editor', array_keys($implementations)) + 1; + if (array_key_exists('media', $implementations)) { + $media_offset = array_search('media', array_keys($implementations)) + 1; + $offset = max([$offset, $media_offset]); + } + $implementations = array_slice($implementations, 0, $offset, TRUE) + + ['ckeditor5' => $group] + + array_slice($implementations, $offset, NULL, TRUE); + } +} + +/** + * Implements hook_form_FORM_ID_alter(). + */ +function ckeditor5_form_filter_format_form_alter(array &$form, FormStateInterface $form_state, $form_id) { + $editor = $form_state->get('editor'); + + // CKEditor 5 plugin config determines the available HTML tags. If an HTML + // restricting filter is enabled and the editor is CKEditor 5, the 'Allowed + // HTML tags' field is made read only and automatically populated with the + // values needed by CKEditor 5 plugins. + // @see \Drupal\ckeditor5\Plugin\Editor\CKEditor5::buildConfigurationForm() + if ($editor && $editor->getEditor() === 'ckeditor5') { + if (isset($form['filters']['settings']['filter_html']['allowed_html'])) { + $filter_allowed_html = &$form['filters']['settings']['filter_html']['allowed_html']; + + if (isset($form['editor']['settings']['subform']['plugins']['ckeditor5_sourceEditing']['allowed_tags'])) { + $source_allowed_tags = &$form['editor']['settings']['subform']['plugins']['ckeditor5_sourceEditing']['allowed_tags']; + // @todo if this triggers the callback via keyboard navigation such as + // tab, focus should move to the next element, not to the rebuilt + // "allowed tags" field + // https://www.drupal.org/project/ckeditor5/issues/3231321. + $source_allowed_tags['#ajax'] = [ + 'callback' => '_update_ckeditor5_html_filter', + 'trigger_as' => ['name' => 'editor_configure'], + 'event' => 'change', + ]; + } + + $filter_allowed_html['#value_callback'] = [CKEditor5::class, 'getGeneratedAllowedHtmlValue']; + // Set readonly and add the form-disabled wrapper class as using #disabled + // or the disabled attribute will prevent the new values from being + // validated. + $filter_allowed_html['#attributes']['readonly'] = TRUE; + $filter_allowed_html['#wrapper_attributes']['class'][] = 'form-disabled'; + + $filter_allowed_html['#description'] = t('With CKEditor 5 this is a + read-only field. The allowed HTML tags and attributes are determined + by the CKEditor 5 configuration. Manually removing tags would break + enabled functionality, and any manually added tags would be removed by + CKEditor 5 on render.'); + + // The media_filter_format_edit_form_validate validator is not needed + // with CKEditor 5 as it exists to enforce the inclusion of specific + // allowed tags that are added automatically by CKEditor 5. The + // validator is removed so it does not conflict with the automatic + // addition of those allowed tags. + $key = array_search('media_filter_format_edit_form_validate', $form['#validate']); + if ($key !== FALSE) { + unset($form['#validate'][$key]); + } + } + } + + // Override the AJAX callbacks for changing editors, so multiple areas of the + // form can be updated on change. + $form['editor']['editor']['#ajax'] = [ + 'callback' => '_update_ckeditor5_html_filter', + 'trigger_as' => ['name' => 'editor_configure'], + ]; + $form['editor']['configure']['#ajax'] = [ + 'callback' => '_update_ckeditor5_html_filter', + ]; + + $form['editor']['settings']['subform']['toolbar']['items']['#ajax'] = [ + 'callback' => '_update_ckeditor5_html_filter', + 'trigger_as' => ['name' => 'editor_configure'], + 'event' => 'change', + 'ckeditor5_only' => 'true', + ]; + + foreach (Element::children($form['filters']['status']) as $filter_type) { + $form['filters']['status'][$filter_type]['#ajax'] = [ + 'callback' => '_update_ckeditor5_html_filter', + 'trigger_as' => ['name' => 'editor_configure'], + 'event' => 'change', + 'ckeditor5_only' => 'true', + ]; + } + + if (!function_exists('_add_ajax_listeners_to_plugin_inputs')) { + + /** + * Recursively adds AJAX listeners to plugin settings elements. + * + * These are added so allowed tags and other fields that have values + * dependent on plugin settings can be updated via AJAX when these settings + * are changed in the editor form. + * + * @param array $plugins_config_form + * The plugins config subform render array. + */ + function _add_ajax_listeners_to_plugin_inputs(array &$plugins_config_form): void { + $field_types = [ + 'checkbox', + 'select', + 'radios', + ]; + if (isset($plugins_config_form['#type']) && in_array($plugins_config_form['#type'], $field_types) && !isset($plugins_config_form['#ajax'])) { + $plugins_config_form['#ajax'] = [ + 'callback' => '_update_ckeditor5_html_filter', + 'trigger_as' => ['name' => 'editor_configure'], + 'event' => 'change', + 'ckeditor5_only' => 'true', + ]; + } + + foreach ($plugins_config_form as $key => &$value) { + if (is_array($value) && strpos($key, '#') === FALSE) { + _add_ajax_listeners_to_plugin_inputs($value); + } + } + } + + } + + if (isset($form['editor']['settings']['subform']['plugins'])) { + _add_ajax_listeners_to_plugin_inputs($form['editor']['settings']['subform']['plugins']); + } + + // Add an ID to the filter settings vertical tabs wrapper to facilitate AJAX + // updates. + $form['filter_settings']['#wrapper_attributes']['id'] = 'filter-settings-wrapper'; + + // Add an ID to the editor settings vertical tabs wrapper so it can be easily + // targeted by JavaScript. + // @todo consider moving this to editor.module when this module is moved to + // Drupal core https://www.drupal.org/project/ckeditor5/issues/3231322. + $form['editor']['settings']['subform']['plugin_settings']['#wrapper_attributes']['id'] = 'plugin-settings-wrapper'; + + $form['#after_build'][] = [CKEditor5::class, 'assessActiveTextEditorAfterBuild']; + $form['#validate'][] = [CKEditor5::class, 'validateSwitchingToCKEditor5']; +} + +/** + * AJAX callback handler for filter_format_form(). + * + * Used instead of editor_form_filter_admin_form_ajax from the editor module. + */ +function _update_ckeditor5_html_filter(array $form, FormStateInterface $form_state) { + $response = new AjaxResponse(); + $renderer = \Drupal::service('renderer'); + + // Replace the editor settings with the settings for the currently selected + // editor. This is the default behavior of editor.module. Except when using + // CKEditor 5: then we only want CKEditor 5's plugin settings to be updated: + // the client side-rendered admin UI would otherwise be dependent on network + // latency. + $renderedField = $renderer->render($form['editor']['settings']); + if ($form_state->get('ckeditor5_is_active') && $form_state->get('ckeditor5_is_selected')) { + $response->addCommand(new ReplaceCommand('#plugin-settings-wrapper', $form['editor']['settings']['subform']['plugin_settings']['#markup'])); + } + else { + $response->addCommand(new ReplaceCommand('#editor-settings-wrapper', $renderedField)); + } + + if ($form_state->get('ckeditor5_is_active')) { + // Delete all existing validation messages, replace them with the current set. + $response->addCommand(new RemoveCommand('#ckeditor5-realtime-validation-messages-container > *')); + $messages = \Drupal::messenger()->deleteAll(); + foreach ($messages as $type => $messages_by_type) { + foreach ($messages_by_type as $message) { + $response->addCommand(new MessageCommand($message, '#ckeditor5-realtime-validation-messages-container', ['type' => $type], FALSE)); + } + } + } + else { + // If switching to CKEditor 5 triggers a validation error, the real-time + // validation messages container will not exist, because CKEditor 5's + // configuration form will not be rendered. + // In this case, render it into the (empty) editor settings wrapper. When + // the validation error is addressed, CKEditor 5's configuration form will + // get rendered and will overwrite those validation error messages. + $response->addCommand(new PrependCommand('#editor-settings-wrapper', ['#type' => 'status_messages'])); + } + + // Rebuild filter_settings form item when one of the following is true: + // - Switching to CKEditor 5 from another text editor, and the current + // configuration triggers no fundamental compatibility errors. + // - Switching from CKEditor 5 to a different editor. + // - The editor is not being switched, and is currently CKEditor 5. + if ($form_state->get('ckeditor5_is_active') || ($form_state->get('ckeditor5_is_selected') && !$form_state->getError($form['editor']['editor']))) { + // Replace the filter settings with the settings for the currently selected + // editor. + $renderedSettings = $renderer->render($form['filter_settings']); + $response->addCommand(new ReplaceCommand('#filter-settings-wrapper', $renderedSettings)); + } + + // If switching to CKEditor 5 from another editor and there are errors in that + // switch, add an error class to the editor select, otherwise remove. + $response->addCommand(new InvokeCommand('[data-drupal-selector="edit-editor-editor"]', !$form_state->get('ckeditor5_is_active') && $form_state->get('ckeditor5_is_selected') && !empty($form_state->getErrors()) ? 'addClass' : 'removeClass', ['error'])); + + if (!function_exists('_add_attachments_to_editor_update_response')) { + + /** + * Recursively find #attach items in the form and add as attachments to the + * AJAX response. + * + * @param array $form + * A form array. + * @param \Drupal\Core\Ajax\AjaxResponse $response + * The AJAX response attachments will be added to. + */ + function _add_attachments_to_editor_update_response(array $form, AjaxResponse &$response): void { + foreach ($form as $key => $value) { + if ($key === "#attached") { + $response->addAttachments(array_diff_key($value, ['placeholders' => ''])); + } + elseif (is_array($value) && strpos((string) $key, '#') === FALSE) { + _add_attachments_to_editor_update_response($value, $response); + } + } + } + + } + + _add_attachments_to_editor_update_response($form, $response); + + return $response; +} + +/** + * Implements hook_library_info_alter(). + */ +function ckeditor5_library_info_alter(&$libraries, $extension) { + if ($extension === 'filter') { + $libraries['drupal.filter.admin']['dependencies'][] = 'ckeditor5/ie11.filter.warnings'; + $libraries['drupal.filter.admin']['dependencies'][] = 'ckeditor5/drupal.ckeditor5.filter.admin'; + } + + // If the 'ckeditor5/ie11.user.warnings' library is added as a dependency of + // other Ckeditor 5 libraries, it won't reliably work as the CKEditor 5 assets + // are loaded via AJAX, and the IE11-incompatible syntax in CKEditor 5 can + // prevent the AJAX call from successfully loading the functionality in + // 'ckeditor5/ie11.user.warnings'. Adding this as a dependency of + // 'system/base', as excessive as it may seem, is the most reliable way to + // assure it is loaded as part of the page request. + if ($extension === 'system') { + $libraries['base']['dependencies'][] = 'ckeditor5/ie11.user.warnings'; + } + + if ($extension === 'core') { + // Generate libraries for each of the CKEditor 5 translation files so that + // the correct translation file can be attached depending on the current + // language. + $files = scandir('core/assets/vendor/ckeditor5/translations'); + foreach ($files as $file) { + if ($file[0] !== '.' && preg_match('/\.js$/', $file)) { + $langcode = basename($file, '.js'); + $libraries['ckeditor5.translations.' . $langcode] = [ + 'remote' => $libraries['ckeditor5']['remote'], + 'version' => $libraries['ckeditor5']['version'], + 'license' => $libraries['ckeditor5']['license'], + 'js' => [ + 'assets/vendor/ckeditor5/translations/' . $file => ['preprocess' => FALSE, 'minified' => TRUE], + ], + ]; + } + } + } +} + +/** + * Implements hook_validation_constraint_alter(). + */ +function ckeditor5_validation_constraint_alter(array &$definitions) { + // Add the Symfony validation constraints that Drupal core does not add in + // \Drupal\Core\Validation\ConstraintManager::registerDefinitions() for + // unknown reasons. Do it defensively, to not break when this changes. + if (!isset($definitions['Choice'])) { + $definitions['Choice'] = [ + 'label' => 'Choice', + 'class' => Choice::class, + 'type' => FALSE, + 'provider' => 'core', + 'id' => 'Choice', + ]; + } +} + +/** + * Implements hook_config_schema_info_alter(). + */ +function ckeditor5_config_schema_info_alter(&$definitions) { + // In \Drupal\Tests\config\Functional\ConfigImportAllTest, this hook may be + // called without ckeditor5.pair.schema.yml being active. + if (!isset($definitions['ckeditor5_valid_pair__format_and_editor'])) { + return; + } + // @see filter.format.*.filters + $definitions['ckeditor5_valid_pair__format_and_editor']['mapping']['filters'] = $definitions['filter.format.*']['mapping']['filters']; + // @see @see editor.editor.*.image_upload + $definitions['ckeditor5_valid_pair__format_and_editor']['mapping']['image_upload'] = $definitions['editor.editor.*']['mapping']['image_upload']; +} diff --git a/core/modules/ckeditor5/ckeditor5.routing.yml b/core/modules/ckeditor5/ckeditor5.routing.yml new file mode 100644 index 000000000000..9efcc338f707 --- /dev/null +++ b/core/modules/ckeditor5/ckeditor5.routing.yml @@ -0,0 +1,27 @@ +ckeditor5.upload_image: + path: '/ckeditor5/upload-image/{editor}' + defaults: + _controller: '\Drupal\ckeditor5\Controller\CKEditor5ImageController::upload' + methods: [POST] + requirements: + _entity_access: 'editor.use' + _custom_access: '\Drupal\ckeditor5\Controller\CKEditor5ImageController::imageUploadEnabledAccess' + _csrf_token: 'TRUE' + options: + parameters: + editor: + type: entity:editor + +ckeditor5.media_image: + path: '/ckeditor5/{editor}/is-media-image' + defaults: + _controller: '\Drupal\ckeditor5\Controller\CKEditor5MediaController::isMediaImage' + methods: [GET] + requirements: + _entity_access: 'editor.use' + _custom_access: '\Drupal\ckeditor5\Controller\CKEditor5MediaController::access' + _csrf_token: 'TRUE' + options: + parameters: + editor: + type: entity:editor diff --git a/core/modules/ckeditor5/ckeditor5.services.yml b/core/modules/ckeditor5/ckeditor5.services.yml new file mode 100644 index 000000000000..033840825af5 --- /dev/null +++ b/core/modules/ckeditor5/ckeditor5.services.yml @@ -0,0 +1,15 @@ +services: + plugin.manager.ckeditor5.plugin: + class: Drupal\ckeditor5\Plugin\CKEditor5PluginManager + parent: default_plugin_manager + # @todo Remove in Drupal 11: https://www.drupal.org/project/ckeditor5/issues/3239012 + plugin.manager.ckeditor4to5upgrade.plugin: + public: false + class: Drupal\ckeditor5\Plugin\CKEditor4To5UpgradePluginManager + parent: default_plugin_manager + ckeditor5.smart_default_settings: + class: Drupal\ckeditor5\SmartDefaultSettings + arguments: + - '@plugin.manager.ckeditor5.plugin' + - '@plugin.manager.ckeditor4to5upgrade.plugin' + - '@?plugin.manager.ckeditor.plugin' diff --git a/core/modules/ckeditor5/config/schema/ckeditor5.data_types.yml b/core/modules/ckeditor5/config/schema/ckeditor5.data_types.yml new file mode 100644 index 000000000000..9ee32d4a17a4 --- /dev/null +++ b/core/modules/ckeditor5/config/schema/ckeditor5.data_types.yml @@ -0,0 +1,12 @@ +# @see https://ckeditor.com/docs/ckeditor5/latest/features/toolbar/toolbar.html +ckeditor5.toolbar_item: + type: string + label: 'Toolbar item' + constraints: + CKEditor5ToolbarItem: [] + +ckeditor5.element: + type: string + label: 'Element' + constraints: + CKEditor5Element: [] diff --git a/core/modules/ckeditor5/config/schema/ckeditor5.pair.schema.yml b/core/modules/ckeditor5/config/schema/ckeditor5.pair.schema.yml new file mode 100644 index 000000000000..8bf146455cd2 --- /dev/null +++ b/core/modules/ckeditor5/config/schema/ckeditor5.pair.schema.yml @@ -0,0 +1,15 @@ +# @see ckeditor5_config_schema_info_alter() +ckeditor5_valid_pair__format_and_editor: + type: mapping + label: 'Text Format plus Text Editor pair using CKEditor 5' + constraints: + CKEditor5FundamentalCompatibility: [] + mapping: + settings: + type: editor.settings.ckeditor5 + # @see ckeditor5_config_schema_info_alter() + # @see filter.format.*.filters + filters: {} + # @see ckeditor5_config_schema_info_alter() + # @see editor.editor.*.image_upload + image_upload: {} diff --git a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml new file mode 100644 index 000000000000..29171f9e36d9 --- /dev/null +++ b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml @@ -0,0 +1,76 @@ +# Schema for the configuration files of the CKEditor5 module. + +editor.settings.ckeditor5: + type: mapping + label: 'CKEditor 5 settings' + mapping: + toolbar: + type: mapping + label: 'Toolbar configuration' + mapping: + items: + type: sequence + label: 'Items' + sequence: + type: ckeditor5.toolbar_item + label: 'Button' + constraints: + # Each active CKEditor 5 toolbar item whose plugin has conditions must have those conditions met. + CKEditor5ToolbarItemConditionsMet: [] + plugins: + type: sequence + label: 'Plugins' + sequence: + type: ckeditor5.plugin.[%key] + constraints: + # Each enabled CKEditor 5 plugin that implements \Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface + # must exist in here. + CKEditor5EnabledConfigurablePlugins: [] + +# Plugin \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Language +ckeditor5.plugin.ckeditor5_language: + type: mapping + label: 'Language' + mapping: + language_list: + type: string + label: 'Language list ID' + constraints: + # Configuring this does not make sense without the corresponding button. + CKEditor5ToolbarItemDependencyConstraint: + toolbarItem: textPartLanguage + # Only two possible values are accepted. + Choice: + - un + - all + +# Plugin \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Heading +ckeditor5.plugin.ckeditor5_heading: + type: mapping + label: Headings + mapping: + enabled_headings: + type: sequence + label: 'Enabled Headings' + constraints: + NotBlank: + message: "Enable at least one heading, otherwise disable the Heading plugin." + sequence: + type: string + label: 'Heading type' + constraints: + Choice: + callback: \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Heading::validChoices + +ckeditor5.plugin.ckeditor5_sourceEditing: + type: mapping + label: Source Editing + mapping: + allowed_tags: + type: sequence + label: 'Allowed Tags' + sequence: + type: ckeditor5.element + label: 'Allowed Tag' + constraints: + SourceEditingRedundantTags: [] diff --git a/core/modules/ckeditor5/css/alignment.admin.css b/core/modules/ckeditor5/css/alignment.admin.css new file mode 100644 index 000000000000..2830a9d55656 --- /dev/null +++ b/core/modules/ckeditor5/css/alignment.admin.css @@ -0,0 +1,45 @@ +.ckeditor5-toolbar-button-alignment\:left { + background-image: url(../icons/align-left.svg); +} +.ckeditor5-toolbar-button-alignment\:right { + background-image: url(../icons/align-right.svg); +} +.ckeditor5-toolbar-button-alignment\:center { + background-image: url(../icons/align-center.svg); +} +.ckeditor5-toolbar-button-alignment\:justify { + background-image: url(../icons/align-justify.svg); +} +.ckeditor5-toolbar-button-alignment { + background-image: url(../icons/align-left.svg); +} + +.ckeditor5-toolbar-button-alignment { + display: flex; + align-items: center; + justify-content: flex-end; + padding-right: 20px; + background-position-x: 10px; +} +[dir="rtl"] .ckeditor5-toolbar-button-alignment { + padding-right: 0; + padding-left: 20px; + background-position-x: 30px; +} +.ckeditor5-toolbar-button-alignment::after { + position: relative; + right: -10px; + display: inline-block; + width: 7px; + height: 7px; + content: ""; + transform: rotate(135deg); + color: #000; + border-width: 2px 2px 0 0; + border-style: solid; + background-position-x: -10px; +} +[dir="rtl"] .ckeditor5-toolbar-button-alignment::after { + right: 10px; + background-position-x: 10px; +} diff --git a/core/modules/ckeditor5/css/basic.admin.css b/core/modules/ckeditor5/css/basic.admin.css new file mode 100644 index 000000000000..8db1109e328c --- /dev/null +++ b/core/modules/ckeditor5/css/basic.admin.css @@ -0,0 +1,27 @@ +.ckeditor5-toolbar-button-bold { + background-image: url(../icons/bold.svg); +} + +.ckeditor5-toolbar-button-italic { + background-image: url(../icons/italic.svg); +} + +.ckeditor5-toolbar-button-underline { + background-image: url(../icons/underline.svg); +} + +.ckeditor5-toolbar-button-code { + background-image: url(../icons/code.svg); +} + +.ckeditor5-toolbar-button-strikethrough { + background-image: url(../icons/strikethrough.svg); +} + +.ckeditor5-toolbar-button-subscript { + background-image: url(../icons/subscript.svg); +} + +.ckeditor5-toolbar-button-superscript { + background-image: url(../icons/superscript.svg); +} diff --git a/core/modules/ckeditor5/css/blockquote.admin.css b/core/modules/ckeditor5/css/blockquote.admin.css new file mode 100644 index 000000000000..7f6ac95c7708 --- /dev/null +++ b/core/modules/ckeditor5/css/blockquote.admin.css @@ -0,0 +1,3 @@ +.ckeditor5-toolbar-button-blockQuote { + background-image: url(../icons/blockquote.svg); +} diff --git a/core/modules/ckeditor5/css/drupalmedia.admin.css b/core/modules/ckeditor5/css/drupalmedia.admin.css new file mode 100644 index 000000000000..7a381a053dc8 --- /dev/null +++ b/core/modules/ckeditor5/css/drupalmedia.admin.css @@ -0,0 +1,4 @@ +/* cspell:ignore medialibrary */ +.ckeditor5-toolbar-button-drupalMedia { + background-image: url(../icons/medialibrary.svg); +} diff --git a/core/modules/ckeditor5/css/filter.admin.css b/core/modules/ckeditor5/css/filter.admin.css new file mode 100644 index 000000000000..dc9c54cbb3bf --- /dev/null +++ b/core/modules/ckeditor5/css/filter.admin.css @@ -0,0 +1,4 @@ +.ckeditor5-filter-attention { + padding: 4px; + outline: 1px red dashed; +} diff --git a/core/modules/ckeditor5/css/heading.admin.css b/core/modules/ckeditor5/css/heading.admin.css new file mode 100644 index 000000000000..d16d435a4a2d --- /dev/null +++ b/core/modules/ckeditor5/css/heading.admin.css @@ -0,0 +1,23 @@ +/** + * @file + * Styles for header options in the admin UI. + * + * These styles are copied from CKEditor 5's editor styles, which load when an + * editor is present, but are not guaranteed to load in the admin UI. + */ + +.ck.ck-heading_heading1 { + font-size: 20px; +} + +.ck.ck-heading_heading2 { + font-size: 17px; +} + +.ck.ck-heading_heading3 { + font-size: 14px; +} + +.ck[class*="ck-heading_heading"] { + font-weight: bold; +} diff --git a/core/modules/ckeditor5/css/horizontal-line.admin.css b/core/modules/ckeditor5/css/horizontal-line.admin.css new file mode 100644 index 000000000000..383eb2a10d5b --- /dev/null +++ b/core/modules/ckeditor5/css/horizontal-line.admin.css @@ -0,0 +1,4 @@ +/* cspell:ignore horizontalline */ +.ckeditor5-toolbar-button-horizontalLine { + background-image: url(../icons/horizontalline.svg); +} diff --git a/core/modules/ckeditor5/css/ie-warnings.css b/core/modules/ckeditor5/css/ie-warnings.css new file mode 100644 index 000000000000..dcdcc362e3e7 --- /dev/null +++ b/core/modules/ckeditor5/css/ie-warnings.css @@ -0,0 +1,17 @@ +.quickedit-field.quickedit-highlighted.ck5-ie11, +.quickedit-form.quickedit-highlighted.ck5-ie11, +.quickedit-field .quickedit-highlighted.ck5-ie11 { + cursor: default; + box-shadow: 0 0 0 1px #f00, 0 0 0 2px #f00; +} + +.quickedit .icon.ck5-ie11 { + margin-left: 0.5em; + padding-left: 1.5em; +} + +.quickedit .icon.ck5-ie11:before { + background-image: url(../../../misc/icons/e32700/error.svg); + background-position: left center; + background-size: 1.3em; +} diff --git a/core/modules/ckeditor5/css/imageupload.admin.css b/core/modules/ckeditor5/css/imageupload.admin.css new file mode 100644 index 000000000000..5d4f9549b0fd --- /dev/null +++ b/core/modules/ckeditor5/css/imageupload.admin.css @@ -0,0 +1,4 @@ +/* cspell:ignore imageupload */ +.ckeditor5-toolbar-button-uploadImage { + background-image: url(../icons/imageupload.svg); +} diff --git a/core/modules/ckeditor5/css/indent.admin.css b/core/modules/ckeditor5/css/indent.admin.css new file mode 100644 index 000000000000..1d6f8f04221e --- /dev/null +++ b/core/modules/ckeditor5/css/indent.admin.css @@ -0,0 +1,7 @@ +.ckeditor5-toolbar-button-indent { + background-image: url(../icons/indent.svg); +} + +.ckeditor5-toolbar-button-outdent { + background-image: url(../icons/outdent.svg); +} diff --git a/core/modules/ckeditor5/css/internal.admin.css b/core/modules/ckeditor5/css/internal.admin.css new file mode 100644 index 000000000000..62a5ac434b9d --- /dev/null +++ b/core/modules/ckeditor5/css/internal.admin.css @@ -0,0 +1,45 @@ +.ckeditor5-toolbar-button-divider { + background-image: url(../icons/divider.svg); +} +.ckeditor5-toolbar-button-wrapping { + background-image: url(../icons/separator.svg); +} + +.ckeditor5-toolbar-button-undo { + background-image: url(../icons/undo.svg); +} + +.ckeditor5-toolbar-button-redo { + background-image: url(../icons/redo.svg); +} + +.ckeditor5-toolbar-button-heading { + display: flex; + align-items: center; + justify-content: space-between; + width: 100px; + color: #000; +} +.ckeditor5-toolbar-button-heading::before { + margin-left: 10px; + content: "Heading"; + font-size: 14px; +} +[dir="rtl"] .ckeditor5-toolbar-button-heading::before { + margin-right: 10px; + margin-left: 0; +} +.ckeditor5-toolbar-button-heading::after { + display: inline-block; + width: 7px; + height: 7px; + margin-right: 10px; + content: ""; + transform: rotate(135deg); + border-width: 2px 2px 0 0; + border-style: solid; +} +[dir="rtl"] .ckeditor5-toolbar-button-heading::after { + margin-right: 0; + margin-left: 10px; +} diff --git a/core/modules/ckeditor5/css/language.admin.css b/core/modules/ckeditor5/css/language.admin.css new file mode 100644 index 000000000000..42ebab47e99b --- /dev/null +++ b/core/modules/ckeditor5/css/language.admin.css @@ -0,0 +1,30 @@ +.ckeditor5-toolbar-button-textPartLanguage { + display: flex; + align-items: center; + justify-content: space-between; + width: 110px; + color: #000; +} +.ckeditor5-toolbar-button-textPartLanguage::before { + margin-left: 10px; + content: "Language"; + font-size: 14px; +} +[dir="rtl"] .ckeditor5-toolbar-button-textPartLanguage::before { + margin-right: 10px; + margin-left: 0; +} +.ckeditor5-toolbar-button-textPartLanguage::after { + display: inline-block; + width: 7px; + height: 7px; + margin-right: 10px; + content: ""; + transform: rotate(135deg); + border-width: 2px 2px 0 0; + border-style: solid; +} +[dir="rtl"] .ckeditor5-toolbar-button-textPartLanguage::after { + margin-right: 0; + margin-left: 10px; +} diff --git a/core/modules/ckeditor5/css/language.css b/core/modules/ckeditor5/css/language.css new file mode 100644 index 000000000000..b13e52150e23 --- /dev/null +++ b/core/modules/ckeditor5/css/language.css @@ -0,0 +1,19 @@ +/** + * @file + * Language: add styling for elements that have a language attribute. + */ + +/** + * Show the user that a 'lang' tag has been applied by adding a thin dotted + * border. We also append the value of the tag between brackets, for example: + * '(en)'. Since the html element has a 'lang' attribute too we only target + * elements within the html scope. + */ +.ck-content [lang] { + outline: 1px dotted gray; +} +.ck-content [lang]:after { + content: " ("attr(lang)")"; + color: #666; + font-size: 10px; +} diff --git a/core/modules/ckeditor5/css/link.admin.css b/core/modules/ckeditor5/css/link.admin.css new file mode 100644 index 000000000000..e6e2ccdb1138 --- /dev/null +++ b/core/modules/ckeditor5/css/link.admin.css @@ -0,0 +1,3 @@ +.ckeditor5-toolbar-button-link { + background-image: url(../icons/link.svg); +} diff --git a/core/modules/ckeditor5/css/list.admin.css b/core/modules/ckeditor5/css/list.admin.css new file mode 100644 index 000000000000..7c37fa0cf05b --- /dev/null +++ b/core/modules/ckeditor5/css/list.admin.css @@ -0,0 +1,8 @@ +/* cspell:ignore bulletedlist numberedlist */ +.ckeditor5-toolbar-button-bulletedList { + background-image: url(../icons/bulletedlist.svg); +} + +.ckeditor5-toolbar-button-numberedList { + background-image: url(../icons/numberedlist.svg); +} diff --git a/core/modules/ckeditor5/css/quickedit-override.css b/core/modules/ckeditor5/css/quickedit-override.css new file mode 100644 index 000000000000..e64eb0d03cf1 --- /dev/null +++ b/core/modules/ckeditor5/css/quickedit-override.css @@ -0,0 +1,9 @@ +.quickedit-editable, +.quickedit-editing.ck.ck-editor__editable_inline { + top: inherit !important; + left: inherit !important; + margin-bottom: inherit !important; +} +.quickedit-editing.ck.ck-editor__editable_inline > :first-child { + margin-top: inherit; +} diff --git a/core/modules/ckeditor5/css/quickedit.css b/core/modules/ckeditor5/css/quickedit.css new file mode 100644 index 000000000000..297adfc497be --- /dev/null +++ b/core/modules/ckeditor5/css/quickedit.css @@ -0,0 +1,4 @@ +.quickedit-toolgroup.wysiwyg-main .ck.ck-toolbar { + border: none; + background: none; +} diff --git a/core/modules/ckeditor5/css/remove-format.css b/core/modules/ckeditor5/css/remove-format.css new file mode 100644 index 000000000000..4796738743dd --- /dev/null +++ b/core/modules/ckeditor5/css/remove-format.css @@ -0,0 +1,3 @@ +.ckeditor5-toolbar-button-removeFormat { + background-image: url(../icons/remove-format.svg); +} diff --git a/core/modules/ckeditor5/css/source-editing.admin.css b/core/modules/ckeditor5/css/source-editing.admin.css new file mode 100644 index 000000000000..3f23cc3f3d1c --- /dev/null +++ b/core/modules/ckeditor5/css/source-editing.admin.css @@ -0,0 +1,3 @@ +.ckeditor5-toolbar-button-sourceEditing { + background-image: url(../icons/source-editing.svg); +} diff --git a/core/modules/ckeditor5/css/special-characters.css b/core/modules/ckeditor5/css/special-characters.css new file mode 100644 index 000000000000..8f726e11a8ef --- /dev/null +++ b/core/modules/ckeditor5/css/special-characters.css @@ -0,0 +1,3 @@ +.ckeditor5-toolbar-button-specialCharacters { + background-image: url(../icons/special-characters.svg); +} diff --git a/core/modules/ckeditor5/css/table.admin.css b/core/modules/ckeditor5/css/table.admin.css new file mode 100644 index 000000000000..807e961faa2b --- /dev/null +++ b/core/modules/ckeditor5/css/table.admin.css @@ -0,0 +1,3 @@ +.ckeditor5-toolbar-button-insertTable { + background-image: url(../icons/table.svg); +} diff --git a/core/modules/ckeditor5/css/toolbar.admin.css b/core/modules/ckeditor5/css/toolbar.admin.css new file mode 100644 index 000000000000..40b04dd95124 --- /dev/null +++ b/core/modules/ckeditor5/css/toolbar.admin.css @@ -0,0 +1,99 @@ +.ckeditor5-toolbar-disabled { + display: flex; + justify-content: space-between; +} +.ckeditor5-toolbar-available { + flex: 1; +} + +.ckeditor5-toolbar-tray { + display: flex; + flex-flow: row wrap; + align-items: center; + min-height: 40px; + margin: 0 0 0.5em 0; + padding: 0; + list-style: none; + /* Disallow any user selections in the drag-and-drop toolbar config UI. */ + user-select: none; +} + +.ckeditor5-toolbar-active__buttons { + margin: 5px 0; + padding: 0.1667em 0.1667em 0.08em; + border: 1px solid #c4c4c4; + border-radius: 2px; + background: #fafafa; +} + +.ckeditor5-toolbar-item, +.ckeditor5-toolbar-button { + display: block; + min-width: 36px; + height: 36px; + cursor: move; + border-radius: 2px; +} + +.ckeditor5-toolbar-item { + position: relative; + margin: 5px 8px 5px 0; +} + +.ckeditor5-toolbar-disabled .ckeditor5-toolbar-item { + border: 1px solid #e6e6e6; +} + +.ckeditor5-toolbar-button { + border: none; + background-color: #eee; + background-repeat: no-repeat; + background-position: center; + background-size: 20px; +} + +.ckeditor5-toolbar-button:focus, +.ckeditor5-toolbar-button:hover { + color: #000; + background-color: #e6e6e6; +} + +.ckeditor5-toolbar-button:focus, +.ckeditor5-toolbar-button:hover, +.ckeditor5-toolbar-button { + text-decoration: none; +} +.ckeditor5-toolbar-tooltip { + position: absolute; + z-index: 1; + left: 50%; + display: block; + padding: 6px 10px; + transform: translate(-50%, 2px); + text-transform: capitalize; + color: #fff; + border-radius: 3px; + background: #333; + font-size: 12px; + line-height: 1; +} + +.ckeditor5-toolbar-tooltip::before { + position: absolute; + top: -10px; + left: 50%; + width: 0; + height: 5px; + content: ""; + transform: translateX(-50%); + border-right: solid 5px transparent; + border-bottom: solid 5px #333; + border-left: solid 5px transparent; +} + +.ckeditor5-toolbar-button + .ckeditor5-toolbar-tooltip { + visibility: hidden; +} +.ckeditor5-toolbar-button[data-expanded="true"] + .ckeditor5-toolbar-tooltip { + visibility: visible; +} diff --git a/core/modules/ckeditor5/icons/align-center.svg b/core/modules/ckeditor5/icons/align-center.svg new file mode 100644 index 000000000000..4d5a61dc2f3c --- /dev/null +++ b/core/modules/ckeditor5/icons/align-center.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm2.286 4c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75z"/></svg> \ No newline at end of file diff --git a/core/modules/ckeditor5/icons/align-justify.svg b/core/modules/ckeditor5/icons/align-justify.svg new file mode 100644 index 000000000000..277c3de58056 --- /dev/null +++ b/core/modules/ckeditor5/icons/align-justify.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg> \ No newline at end of file diff --git a/core/modules/ckeditor5/icons/align-left.svg b/core/modules/ckeditor5/icons/align-left.svg new file mode 100644 index 000000000000..bf1a93259835 --- /dev/null +++ b/core/modules/ckeditor5/icons/align-left.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg> \ No newline at end of file diff --git a/core/modules/ckeditor5/icons/align-right.svg b/core/modules/ckeditor5/icons/align-right.svg new file mode 100644 index 000000000000..4d51b5bdfbbe --- /dev/null +++ b/core/modules/ckeditor5/icons/align-right.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M18 3.75a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 8a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 4a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75zm0-8a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75z"/></svg> \ No newline at end of file diff --git a/core/modules/ckeditor5/icons/blockquote.svg b/core/modules/ckeditor5/icons/blockquote.svg new file mode 100644 index 000000000000..9f67095ddc23 --- /dev/null +++ b/core/modules/ckeditor5/icons/blockquote.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 10.423a6.5 6.5 0 0 1 6.056-6.408l.038.67C6.448 5.423 5.354 7.663 5.22 10H9c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574zm8 0a6.5 6.5 0 0 1 6.056-6.408l.038.67c-2.646.739-3.74 2.979-3.873 5.315H17c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574z"></path></svg> diff --git a/core/modules/ckeditor5/icons/bold.svg b/core/modules/ckeditor5/icons/bold.svg new file mode 100644 index 000000000000..15b145fc7f54 --- /dev/null +++ b/core/modules/ckeditor5/icons/bold.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.187 17H5.773c-.637 0-1.092-.138-1.364-.415-.273-.277-.409-.718-.409-1.323V4.738c0-.617.14-1.062.419-1.332.279-.27.73-.406 1.354-.406h4.68c.69 0 1.288.041 1.793.124.506.083.96.242 1.36.478.341.197.644.447.906.75a3.262 3.262 0 0 1 .808 2.162c0 1.401-.722 2.426-2.167 3.075C15.05 10.175 16 11.315 16 13.01a3.756 3.756 0 0 1-2.296 3.504 6.1 6.1 0 0 1-1.517.377c-.571.073-1.238.11-2 .11zm-.217-6.217H7v4.087h3.069c1.977 0 2.965-.69 2.965-2.072 0-.707-.256-1.22-.768-1.537-.512-.319-1.277-.478-2.296-.478zM7 5.13v3.619h2.606c.729 0 1.292-.067 1.69-.2a1.6 1.6 0 0 0 .91-.765c.165-.267.247-.566.247-.897 0-.707-.26-1.176-.778-1.409-.519-.232-1.31-.348-2.375-.348H7z"></path></svg> diff --git a/core/modules/ckeditor5/icons/bulletedlist.svg b/core/modules/ckeditor5/icons/bulletedlist.svg new file mode 100644 index 000000000000..cad4a657f26b --- /dev/null +++ b/core/modules/ckeditor5/icons/bulletedlist.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0C1 4.784 1.777 4 2.75 4c.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75C1.784 7.5 1 6.723 1 5.75zm6 9c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0c0-.966.777-1.75 1.75-1.75.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75-.966 0-1.75-.777-1.75-1.75z"></path></svg> diff --git a/core/modules/ckeditor5/icons/code.svg b/core/modules/ckeditor5/icons/code.svg new file mode 100644 index 000000000000..fe08f7604f23 --- /dev/null +++ b/core/modules/ckeditor5/icons/code.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 5.7 5.2 3.9v1.3l-5.6 4c-.1.2-.3.2-.5.2-.3-.1-.6-.7-.6-1l.3-.4 4.7-3.5L11.5 7l-.2-.2c-.1-.3-.1-.6 0-.8.2-.2.5-.4.8-.4a.8.8 0 0 1 .4.1zm-5.2 0L2 9.6v1.3l5.6 4c.1.2.3.2.5.2.3-.1.7-.7.6-1 0-.1 0-.3-.2-.4l-5-3.5L8.2 7l.2-.2c.1-.3.1-.6 0-.8-.2-.2-.5-.4-.8-.4a.8.8 0 0 0-.3.1z"/></svg> diff --git a/core/modules/ckeditor5/icons/divider.svg b/core/modules/ckeditor5/icons/divider.svg new file mode 100644 index 000000000000..7d0545391cb8 --- /dev/null +++ b/core/modules/ckeditor5/icons/divider.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="9" y="2" width="2" height="16" /></svg> diff --git a/core/modules/ckeditor5/icons/horizontalline.svg b/core/modules/ckeditor5/icons/horizontalline.svg new file mode 100644 index 000000000000..a89a54851345 --- /dev/null +++ b/core/modules/ckeditor5/icons/horizontalline.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 9h16v2H2z"/></svg> diff --git a/core/modules/ckeditor5/icons/imageupload.svg b/core/modules/ckeditor5/icons/imageupload.svg new file mode 100644 index 000000000000..954eebdfe523 --- /dev/null +++ b/core/modules/ckeditor5/icons/imageupload.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.91 10.54c.26-.23.64-.21.88.03l3.36 3.14 2.23-2.06a.64.64 0 0 1 .87 0l2.52 2.97V4.5H3.2v10.12l3.71-4.08zm10.27-7.51c.6 0 1.09.47 1.09 1.05v11.84c0 .59-.49 1.06-1.09 1.06H2.79c-.6 0-1.09-.47-1.09-1.06V4.08c0-.58.49-1.05 1.1-1.05h14.38zm-5.22 5.56a1.96 1.96 0 1 1 3.4-1.96 1.96 1.96 0 0 1-3.4 1.96z"></path></svg> diff --git a/core/modules/ckeditor5/icons/indent.svg b/core/modules/ckeditor5/icons/indent.svg new file mode 100644 index 000000000000..cd360e2f26f0 --- /dev/null +++ b/core/modules/ckeditor5/icons/indent.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zM1.632 6.95 5.02 9.358a.4.4 0 0 1-.013.661l-3.39 2.207A.4.4 0 0 1 1 11.892V7.275a.4.4 0 0 1 .632-.326z"/></svg> diff --git a/core/modules/ckeditor5/icons/italic.svg b/core/modules/ckeditor5/icons/italic.svg new file mode 100644 index 000000000000..43ca23085657 --- /dev/null +++ b/core/modules/ckeditor5/icons/italic.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.586 14.633.021.004c-.036.335.095.655.393.962.082.083.173.15.274.201h1.474a.6.6 0 1 1 0 1.2H5.304a.6.6 0 0 1 0-1.2h1.15c.474-.07.809-.182 1.005-.334.157-.122.291-.32.404-.597l2.416-9.55a1.053 1.053 0 0 0-.281-.823 1.12 1.12 0 0 0-.442-.296H8.15a.6.6 0 0 1 0-1.2h6.443a.6.6 0 1 1 0 1.2h-1.195c-.376.056-.65.155-.823.296-.215.175-.423.439-.623.79l-2.366 9.347z"/></svg> diff --git a/core/modules/ckeditor5/icons/link.svg b/core/modules/ckeditor5/icons/link.svg new file mode 100644 index 000000000000..d88bdec3ef21 --- /dev/null +++ b/core/modules/ckeditor5/icons/link.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg> diff --git a/core/modules/ckeditor5/icons/medialibrary.svg b/core/modules/ckeditor5/icons/medialibrary.svg new file mode 100644 index 000000000000..e3e32bd9a23d --- /dev/null +++ b/core/modules/ckeditor5/icons/medialibrary.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z" /><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z" /></svg> diff --git a/core/modules/ckeditor5/icons/numberedlist.svg b/core/modules/ckeditor5/icons/numberedlist.svg new file mode 100644 index 000000000000..7828079102a6 --- /dev/null +++ b/core/modules/ckeditor5/icons/numberedlist.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM3.5 3v5H2V3.7H1v-1h2.5V3zM.343 17.857l2.59-3.257H2.92a.6.6 0 1 0-1.04 0H.302a2 2 0 1 1 3.995 0h-.001c-.048.405-.16.734-.333.988-.175.254-.59.692-1.244 1.312H4.3v1h-4l.043-.043zM7 14.75a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"></path></svg> diff --git a/core/modules/ckeditor5/icons/outdent.svg b/core/modules/ckeditor5/icons/outdent.svg new file mode 100644 index 000000000000..a8ddcdae54be --- /dev/null +++ b/core/modules/ckeditor5/icons/outdent.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zm1.618-9.55L.98 9.358a.4.4 0 0 0 .013.661l3.39 2.207A.4.4 0 0 0 5 11.892V7.275a.4.4 0 0 0-.632-.326z"/></svg> diff --git a/core/modules/ckeditor5/icons/redo.svg b/core/modules/ckeditor5/icons/redo.svg new file mode 100644 index 000000000000..d175568124fb --- /dev/null +++ b/core/modules/ckeditor5/icons/redo.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.958 9.367-2.189 1.837a.75.75 0 0 0 .965 1.149l3.788-3.18a.747.747 0 0 0 .21-.284.75.75 0 0 0-.17-.945L13.77 4.762a.75.75 0 1 0-.964 1.15l2.331 1.955H6.22A.75.75 0 0 0 6 7.9a4 4 0 1 0 1.477 7.718l-.344-1.489A2.5 2.5 0 1 1 6.039 9.4l-.008-.032h8.927z"/></svg> diff --git a/core/modules/ckeditor5/icons/remove-format.svg b/core/modules/ckeditor5/icons/remove-format.svg new file mode 100644 index 000000000000..0df1d6462db4 --- /dev/null +++ b/core/modules/ckeditor5/icons/remove-format.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.69 14.915c.053.052.173.083.36.093a.366.366 0 0 1 .345.485l-.003.01a.738.738 0 0 1-.697.497h-2.67a.374.374 0 0 1-.353-.496l.013-.038a.681.681 0 0 1 .644-.458c.197-.012.325-.043.386-.093a.28.28 0 0 0 .072-.11L9.592 4.5H6.269c-.359-.017-.609.013-.75.09-.142.078-.289.265-.442.563-.192.29-.516.464-.864.464H4.17a.43.43 0 0 1-.407-.569L4.46 3h13.08l-.62 2.043a.81.81 0 0 1-.775.574h-.114a.486.486 0 0 1-.486-.486c.001-.284-.054-.464-.167-.54-.112-.076-.367-.106-.766-.091h-3.28l-2.68 10.257c-.006.074.007.127.038.158zM3 17h8a.5.5 0 1 1 0 1H3a.5.5 0 1 1 0-1zm11.299 1.17a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.06-1.06l1.415 1.414 1.414-1.415a.75.75 0 1 1 1.06 1.06l-1.413 1.415 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414-1.414 1.414z"/></svg> \ No newline at end of file diff --git a/core/modules/ckeditor5/icons/separator.svg b/core/modules/ckeditor5/icons/separator.svg new file mode 100644 index 000000000000..f8a665393914 --- /dev/null +++ b/core/modules/ckeditor5/icons/separator.svg @@ -0,0 +1 @@ +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="6.65" height="6.65" rx="1" fill="black"/><rect y="13" width="6.65" height="6.65" rx="1" fill="black"/><rect x="9" width="6.65" height="6.65" rx="1" fill="black"/><path d="M7.59998 16.3134L13.5799 12.8609L13.5799 19.7659L7.59998 16.3134Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7307 16.7783H17.13C18.2346 16.7783 19.13 15.8829 19.13 14.7783V4.84961C19.13 3.74504 18.2346 2.84961 17.13 2.84961H16.9706V3.84961H17.13C17.6823 3.84961 18.13 4.29732 18.13 4.84961V14.7783C18.13 15.3306 17.6823 15.7783 17.13 15.7783H12.7307V16.7783Z" fill="black"/></svg> diff --git a/core/modules/ckeditor5/icons/source-editing.svg b/core/modules/ckeditor5/icons/source-editing.svg new file mode 100644 index 000000000000..0bf9e953df58 --- /dev/null +++ b/core/modules/ckeditor5/icons/source-editing.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 0 5 4.5v15.003h-16V0h11zM3 1.5v3.25l-1.497 1-.003 8 1.5 1v3.254L7.685 18l-.001 1.504H17.5V8.002L16 9.428l-.004-4.22-4.222-3.692L3 1.5z"/><path d="M4.06 6.64a.75.75 0 0 1 .958 1.15l-.085.07L2.29 9.75l2.646 1.89c.302.216.4.62.232.951l-.058.095a.75.75 0 0 1-.951.232l-.095-.058-3.5-2.5V9.14l3.496-2.5zm4.194 6.22a.75.75 0 0 1-.958-1.149l.085-.07 2.643-1.89-2.646-1.89a.75.75 0 0 1-.232-.952l.058-.095a.75.75 0 0 1 .95-.232l.096.058 3.5 2.5v1.22l-3.496 2.5zm7.644-.836 2.122 2.122-5.825 5.809-2.125-.005.003-2.116zm2.539-1.847 1.414 1.414a.5.5 0 0 1 0 .707l-1.06 1.06-2.122-2.12 1.061-1.061a.5.5 0 0 1 .707 0z"/></svg> \ No newline at end of file diff --git a/core/modules/ckeditor5/icons/special-characters.svg b/core/modules/ckeditor5/icons/special-characters.svg new file mode 100644 index 000000000000..8e0251be0782 --- /dev/null +++ b/core/modules/ckeditor5/icons/special-characters.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 2.5a7.47 7.47 0 0 1 4.231 1.31 7.268 7.268 0 0 1 2.703 3.454 7.128 7.128 0 0 1 .199 4.353c-.39 1.436-1.475 2.72-2.633 3.677h2.013c0-.226.092-.443.254-.603a.876.876 0 0 1 1.229 0c.163.16.254.377.254.603v.853c0 .209-.078.41-.22.567a.873.873 0 0 1-.547.28l-.101.006h-4.695a.517.517 0 0 1-.516-.518v-1.265c0-.21.128-.398.317-.489a5.601 5.601 0 0 0 2.492-2.371 5.459 5.459 0 0 0 .552-3.693 5.53 5.53 0 0 0-1.955-3.2A5.71 5.71 0 0 0 10 4.206 5.708 5.708 0 0 0 6.419 5.46 5.527 5.527 0 0 0 4.46 8.663a5.457 5.457 0 0 0 .554 3.695 5.6 5.6 0 0 0 2.497 2.37.55.55 0 0 1 .317.49v1.264c0 .286-.23.518-.516.518H2.618a.877.877 0 0 1-.614-.25.845.845 0 0 1-.254-.603v-.853c0-.226.091-.443.254-.603a.876.876 0 0 1 1.228 0c.163.16.255.377.255.603h1.925c-1.158-.958-2.155-2.241-2.545-3.678a7.128 7.128 0 0 1 .199-4.352 7.268 7.268 0 0 1 2.703-3.455A7.475 7.475 0 0 1 10 2.5z"/></svg> \ No newline at end of file diff --git a/core/modules/ckeditor5/icons/strikethrough.svg b/core/modules/ckeditor5/icons/strikethrough.svg new file mode 100644 index 000000000000..756a6870ea13 --- /dev/null +++ b/core/modules/ckeditor5/icons/strikethrough.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 16.4c-.8-.4-1.5-.9-2.2-1.5a.6.6 0 0 1-.2-.5l.3-.6h1c1 1.2 2.1 1.7 3.7 1.7 1 0 1.8-.3 2.3-.6.6-.4.6-1.2.6-1.3.2-1.2-.9-2.1-.9-2.1h2.1c.3.7.4 1.2.4 1.7v.8l-.6 1.2c-.6.8-1.1 1-1.6 1.2a6 6 0 0 1-2.4.6c-1 0-1.8-.3-2.5-.6zM6.8 9 6 8.3c-.4-.5-.5-.8-.5-1.6 0-.7.1-1.3.5-1.8.4-.6 1-1 1.6-1.3a6.3 6.3 0 0 1 4.7 0 4 4 0 0 1 1.7 1l.3.7c0 .1.2.4-.2.7-.4.2-.9.1-1 0a3 3 0 0 0-1.2-1c-.4-.2-1-.3-2-.4-.7 0-1.4.2-2 .6-.8.6-1 .8-1 1.5 0 .8.5 1 1.2 1.5.6.4 1.1.7 1.9 1H6.8z"/><path d="M3 10.5V9h14v1.5z"/></svg> diff --git a/core/modules/ckeditor5/icons/subscript.svg b/core/modules/ckeditor5/icons/subscript.svg new file mode 100644 index 000000000000..da53b284a562 --- /dev/null +++ b/core/modules/ckeditor5/icons/subscript.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.03 10.349 3.818-3.819a.8.8 0 1 1 1.132 1.132L8.16 11.48l3.819 3.818a.8.8 0 1 1-1.132 1.132L7.03 12.61l-3.818 3.82a.8.8 0 1 1-1.132-1.132L5.9 11.48 2.08 7.662A.8.8 0 1 1 3.212 6.53l3.818 3.82zm8.147 7.829h2.549c.254 0 .447.05.58.152a.49.49 0 0 1 .201.413.54.54 0 0 1-.159.393c-.105.108-.266.162-.48.162h-3.594c-.245 0-.435-.066-.572-.197a.621.621 0 0 1-.205-.463c0-.114.044-.265.132-.453a1.62 1.62 0 0 1 .288-.444c.433-.436.824-.81 1.172-1.122.348-.312.597-.517.747-.615.267-.183.49-.368.667-.553.177-.185.312-.375.405-.57.093-.194.139-.384.139-.57a1.008 1.008 0 0 0-.554-.917 1.197 1.197 0 0 0-.56-.133c-.426 0-.761.182-1.005.546a2.332 2.332 0 0 0-.164.39 1.609 1.609 0 0 1-.258.488c-.096.114-.237.17-.423.17a.558.558 0 0 1-.405-.156.568.568 0 0 1-.161-.427c0-.218.05-.446.151-.683.101-.238.252-.453.452-.646s.454-.349.762-.467a2.998 2.998 0 0 1 1.081-.178c.498 0 .923.076 1.274.228a1.916 1.916 0 0 1 1.004 1.032 1.984 1.984 0 0 1-.156 1.794c-.2.32-.405.572-.613.754-.208.182-.558.468-1.048.857-.49.39-.826.691-1.008.906a2.703 2.703 0 0 0-.24.309z"/></svg> diff --git a/core/modules/ckeditor5/icons/superscript.svg b/core/modules/ckeditor5/icons/superscript.svg new file mode 100644 index 000000000000..92c9be8064b8 --- /dev/null +++ b/core/modules/ckeditor5/icons/superscript.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M15.677 8.678h2.549c.254 0 .447.05.58.152a.49.49 0 0 1 .201.413.54.54 0 0 1-.159.393c-.105.108-.266.162-.48.162h-3.594c-.245 0-.435-.066-.572-.197a.621.621 0 0 1-.205-.463c0-.114.044-.265.132-.453a1.62 1.62 0 0 1 .288-.444c.433-.436.824-.81 1.172-1.122.348-.312.597-.517.747-.615.267-.183.49-.368.667-.553.177-.185.312-.375.405-.57.093-.194.139-.384.139-.57a1.008 1.008 0 0 0-.554-.917 1.197 1.197 0 0 0-.56-.133c-.426 0-.761.182-1.005.546a2.332 2.332 0 0 0-.164.39 1.609 1.609 0 0 1-.258.488c-.096.114-.237.17-.423.17a.558.558 0 0 1-.405-.156.568.568 0 0 1-.161-.427c0-.218.05-.446.151-.683.101-.238.252-.453.452-.646s.454-.349.762-.467a2.998 2.998 0 0 1 1.081-.178c.498 0 .923.076 1.274.228a1.916 1.916 0 0 1 1.004 1.032 1.984 1.984 0 0 1-.156 1.794c-.2.32-.405.572-.613.754-.208.182-.558.468-1.048.857-.49.39-.826.691-1.008.906a2.703 2.703 0 0 0-.24.309zM7.03 10.349l3.818-3.819a.8.8 0 1 1 1.132 1.132L8.16 11.48l3.819 3.818a.8.8 0 1 1-1.132 1.132L7.03 12.61l-3.818 3.82a.8.8 0 1 1-1.132-1.132L5.9 11.48 2.08 7.662A.8.8 0 1 1 3.212 6.53l3.818 3.82z"></path></svg> diff --git a/core/modules/ckeditor5/icons/table.svg b/core/modules/ckeditor5/icons/table.svg new file mode 100644 index 000000000000..374ef8863851 --- /dev/null +++ b/core/modules/ckeditor5/icons/table.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 6v3h4V6H3zm0 4v3h4v-3H3zm0 4v3h4v-3H3zm5 3h4v-3H8v3zm5 0h4v-3h-4v3zm4-4v-3h-4v3h4zm0-4V6h-4v3h4zm1.5 8a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 17V4c.222-.863 1.068-1.5 2-1.5h13c.932 0 1.778.637 2 1.5v13zM12 13v-3H8v3h4zm0-4V6H8v3h4z"/></svg> \ No newline at end of file diff --git a/core/modules/ckeditor5/icons/underline.svg b/core/modules/ckeditor5/icons/underline.svg new file mode 100644 index 000000000000..11bab0dde0d9 --- /dev/null +++ b/core/modules/ckeditor5/icons/underline.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 18v-1.5h14V18zM5.2 10V3.6c0-.4.4-.6.8-.6.3 0 .7.2.7.6v6.2c0 2 1.3 2.8 3.2 2.8 1.9 0 3.4-.9 3.4-2.9V3.6c0-.3.4-.5.8-.5.3 0 .7.2.7.5V10c0 2.7-2.2 4-4.9 4-2.6 0-4.7-1.2-4.7-4z"></path></svg> diff --git a/core/modules/ckeditor5/icons/undo.svg b/core/modules/ckeditor5/icons/undo.svg new file mode 100644 index 000000000000..0e01bcac2875 --- /dev/null +++ b/core/modules/ckeditor5/icons/undo.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m5.042 9.367 2.189 1.837a.75.75 0 0 1-.965 1.149l-3.788-3.18a.747.747 0 0 1-.21-.284.75.75 0 0 1 .17-.945L6.23 4.762a.75.75 0 1 1 .964 1.15L4.863 7.866h8.917A.75.75 0 0 1 14 7.9a4 4 0 1 1-1.477 7.718l.344-1.489a2.5 2.5 0 1 0 1.094-4.73l.008-.032H5.042z"/></svg> diff --git a/core/modules/ckeditor5/js/build/drupalEmphasis.js b/core/modules/ckeditor5/js/build/drupalEmphasis.js new file mode 100644 index 000000000000..7aa31a0b7fc9 --- /dev/null +++ b/core/modules/ckeditor5/js/build/drupalEmphasis.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalEmphasis=t())}(self,(function(){return function(){var e={"ckeditor5/src/core.js":function(e,t,r){e.exports=r("dll-reference CKEditor5.dll")("./src/core.js")},"dll-reference CKEditor5.dll":function(e){"use strict";e.exports=CKEditor5.dll}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.d=function(e,t){for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var o={};return function(){"use strict";r.d(o,{default:function(){return s}});var e=r("ckeditor5/src/core.js");class t extends e.Plugin{static get pluginName(){return"DrupalEmphasisEditing"}init(){this.editor.conversion.for("downcast").attributeToElement({model:"italic",view:"em",converterPriority:"high"})}}var i=t;class n extends e.Plugin{static get requires(){return[i]}static get pluginName(){return"DrupalEmphasis"}}var s={DrupalEmphasis:n}}(),o=o.default}()})); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/build/drupalHtmlEngine.js b/core/modules/ckeditor5/js/build/drupalHtmlEngine.js new file mode 100644 index 000000000000..448883cc9683 --- /dev/null +++ b/core/modules/ckeditor5/js/build/drupalHtmlEngine.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalHtmlEngine=t())}(self,(function(){return function(){var e={"ckeditor5/src/core.js":function(e,t,n){e.exports=n("dll-reference CKEditor5.dll")("./src/core.js")},"dll-reference CKEditor5.dll":function(e){"use strict";e.exports=CKEditor5.dll}},t={};function n(r){var p=t[r];if(void 0!==p)return p.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var r={};return function(){"use strict";n.d(r,{default:function(){return o}});var e=n("ckeditor5/src/core.js");class t{constructor(){this.chunks=[],this.selfClosingTags=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]}build(){return this.chunks.join("")}appendNode(e){e.nodeType===Node.TEXT_NODE?this._appendText(e):e.nodeType===Node.ELEMENT_NODE?this._appendElement(e):e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&this._appendChildren(e)}_appendElement(e){const t=e.nodeName.toLowerCase();this._append("<"),this._append(t),this._appendAttributes(e),this._append(">"),this.selfClosingTags.includes(t)||(this._appendChildren(e),this._append("</"),this._append(t),this._append(">"))}_appendChildren(e){Object.keys(e.childNodes).forEach((t=>{this.appendNode(e.childNodes[t])}))}_appendAttributes(e){Object.keys(e.attributes).forEach((t=>{this._append(" "),this._append(e.attributes[t].name),this._append('="'),this._append(this.constructor._escapeAttribute(e.attributes[t].value)),this._append('"')}))}_appendText(e){const t=document.implementation.createHTMLDocument("").createElement("p");t.textContent=e.textContent,this._append(t.innerHTML)}_append(e){this.chunks.push(e)}static _escapeAttribute(e){return e.replace(/&/g,"&").replace(/'/g,"'").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">").replace(/\r\n/g," ").replace(/[\r\n]/g," ")}}class p{getHtml(e){const n=new t;return n.appendNode(e),n.build()}}class i extends e.Plugin{init(){this.editor.data.processor.htmlWriter=new p}static get pluginName(){return"DrupalHtmlEngine"}}var o={DrupalHtmlEngine:i}}(),r=r.default}()})); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/build/drupalImage.js b/core/modules/ckeditor5/js/build/drupalImage.js new file mode 100644 index 000000000000..44d330d5c9a3 --- /dev/null +++ b/core/modules/ckeditor5/js/build/drupalImage.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.CKEditor5=e():(t.CKEditor5=t.CKEditor5||{},t.CKEditor5.drupalImage=e())}(self,(function(){return function(){var t={"ckeditor5/src/core.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/upload.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/upload.js")},"ckeditor5/src/utils.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"dll-reference CKEditor5.dll":function(t){"use strict";t.exports=CKEditor5.dll}},e={};function i(r){var n=e[r];if(void 0!==n)return n.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,i),a.exports}i.d=function(t,e){for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};var r={};return function(){"use strict";i.d(r,{default:function(){return p}});var t=i("ckeditor5/src/core.js");function e(t){return t.createEmptyElement("img")}function n(){function t(t,e,i){if(!i.consumable.consume(e.item,t.name))return;const r=i.mapper.toViewElement(e.item),n=i.writer,a=n.createContainerElement("a",{href:e.attributeNewValue});n.insert(n.createPositionBefore(r),a),n.move(n.createRangeOn(r),n.createPositionAt(a,0)),i.consumable.consume(e.item,"attribute:htmlLinkAttributes:imageBlock")&&function(t,e,i){if(e.attributes)for(const[r,n]of Object.entries(e.attributes))t.setAttribute(r,n,i);e.styles&&t.setStyle(e.styles,i),e.classes&&t.addClass(e.classes,i)}(i.writer,e.item.getAttribute("htmlLinkAttributes"),a)}return e=>{e.on("attribute:linkHref:imageBlock",t,{priority:"high"})}}class a extends t.Plugin{static get pluginName(){return"DrupalImageEditing"}init(){const{editor:t}=this,{conversion:i}=t,{schema:r}=t.model;r.isRegistered("imageInline")&&r.extend("imageInline",{allowAttributes:["dataEntityUuid","dataEntityType","width","height"]}),r.isRegistered("imageBlock")&&r.extend("imageBlock",{allowAttributes:["dataEntityUuid","dataEntityType","width","height"]}),i.for("upcast").add(function(t){function e(e,i,r){const{viewItem:n}=i,{writer:a,consumable:o,safeInsert:s,updateConversionResult:u,schema:l}=r,d=[];let c;if(o.test(n,{name:!0,attributes:"src"})){if(c=l.checkChild(i.modelCursor,"imageInline")?a.createElement("imageInline",{src:n.getAttribute("src")}):a.createElement("imageBlock",{src:n.getAttribute("src")}),t.plugins.has("ImageStyleEditing")&&o.test(n,{name:!0,attributes:"data-align"})){const t={left:"alignBlockLeft",center:"alignCenter",right:"alignBlockRight"},e={left:"alignLeft",right:"alignRight"},i=n.getAttribute("data-align"),r=c.is("element","imageBlock")?t[i]:e[i];a.setAttribute("imageStyle",r,c),d.push("data-align")}if(c.is("element","imageBlock")&&o.test(n,{name:!0,attributes:"data-caption"})){const e=a.createElement("caption"),i=t.data.processor.toView(n.getAttribute("data-caption")),o=a.createDocumentFragment();r.consumable.constructor.createFrom(i,r.consumable),r.convertChildren(i,o);for(const t of Array.from(o.getChildren()))a.append(t,e);a.append(e,c),d.push("data-caption")}o.test(n,{name:!0,attributes:"data-entity-uuid"})&&(a.setAttribute("dataEntityUuid",n.getAttribute("data-entity-uuid"),c),d.push("data-entity-uuid")),o.test(n,{name:!0,attributes:"data-entity-type"})&&(a.setAttribute("dataEntityType",n.getAttribute("data-entity-type"),c),d.push("data-entity-type")),s(c,i.modelCursor)&&(o.consume(n,{name:!0,attributes:d}),u(c,i))}}return t=>{t.on("element:img",e,{priority:"high"})}}(t)).attributeToAttribute({view:{name:"img",key:"width"},model:{key:"width",value:t=>`${t.getAttribute("width")}px`}}).attributeToAttribute({view:{name:"img",key:"height"},model:{key:"height",value:t=>`${t.getAttribute("height")}px`}}),i.for("downcast").add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("data-entity-uuid",e.attributeNewValue,s||o)}return e=>{e.on("attribute:dataEntityUuid",t)}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("data-entity-type",e.attributeNewValue,s||o)}return e=>{e.on("attribute:dataEntityType",t)}}()),i.for("dataDowncast").add(function(t){return e=>{e.on("insert:caption",((e,i,r)=>{const{consumable:n,writer:a,mapper:o}=r;if(!n.consume(i.item,"insert"))return;const s=t.model.createRangeIn(i.item),u=a.createDocumentFragment();o.bindElements(i.item,u);for(const{item:e}of Array.from(s)){const i={item:e,range:t.model.createRangeOn(e)},n=`insert:${e.name||"$text"}`;t.data.downcastDispatcher.fire(n,i,r);for(const n of e.getAttributeKeys())Object.assign(i,{attributeKey:n,attributeOldValue:null,attributeNewValue:i.item.getAttribute(n)}),t.data.downcastDispatcher.fire(`attribute:${n}`,i,r)}for(const t of a.createRangeIn(u).getItems())o.unbindViewElement(t);o.unbindViewElement(u);const l=t.data.processor.toData(u);if(l){const t=o.toViewElement(i.item.parent);a.setAttribute("data-caption",l,t)}}),{priority:"high"})}}(t)).elementToElement({model:"imageBlock",view:(t,{writer:i})=>e(i),converterPriority:"high"}).elementToElement({model:"imageInline",view:(t,{writer:i})=>e(i),converterPriority:"high"}).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i,o={alignLeft:"left",alignRight:"right",alignCenter:"center",alignBlockRight:"right",alignBlockLeft:"left"};if(!o[e.attributeNewValue]||!n.consume(r,t.name))return;const s=i.mapper.toViewElement(r),u=Array.from(s.getChildren()).find((t=>"img"===t.name));a.setAttribute("data-align",o[e.attributeNewValue],u||s)}return e=>{e.on("attribute:imageStyle",t,{priority:"high"})}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("width",e.attributeNewValue.replace("px",""),s||o)}return e=>{e.on("attribute:width:imageInline",t,{priority:"high"}),e.on("attribute:width:imageBlock",t,{priority:"high"})}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("height",e.attributeNewValue.replace("px",""),s||o)}return e=>{e.on("attribute:height:imageInline",t,{priority:"high"}),e.on("attribute:height:imageBlock",t,{priority:"high"})}}()).add(n())}}class o extends t.Plugin{static get requires(){return[a]}static get pluginName(){return"DrupalImage"}}var s=o;class u extends t.Plugin{init(){const{editor:t}=this;t.plugins.get("ImageUploadEditing").on("uploadComplete",((e,{data:i,imageElement:r})=>{t.model.change((t=>{t.setAttribute("dataEntityUuid",i.dataEntityUuid,r),t.setAttribute("dataEntityType",i.dataEntityType,r)}))}))}static get pluginName(){return"DrupalImageUploadEditing"}}var l=i("ckeditor5/src/upload.js"),d=i("ckeditor5/src/utils.js");class c{constructor(t,e){this.loader=t,this.options=e}upload(){return this.loader.file.then((t=>new Promise(((e,i)=>{this._initRequest(),this._initListeners(e,i,t),this._sendRequest(t)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){this.xhr=new XMLHttpRequest,this.xhr.open("POST",this.options.uploadUrl,!0),this.xhr.responseType="json"}_initListeners(t,e,i){const r=this.xhr,n=this.loader,a=`Couldn't upload file: ${i.name}.`;r.addEventListener("error",(()=>e(a))),r.addEventListener("abort",(()=>e())),r.addEventListener("load",(()=>{const i=r.response;if(!i||i.error)return e(i&&i.error&&i.error.message?i.error.message:a);t({urls:{default:i.url},dataEntityUuid:i.uuid?i.uuid:"",dataEntityType:i.entity_type?i.entity_type:""})})),r.upload&&r.upload.addEventListener("progress",(t=>{t.lengthComputable&&(n.uploadTotal=t.total,n.uploaded=t.loaded)}))}_sendRequest(t){const e=this.options.headers||{},i=this.options.withCredentials||!1;Object.keys(e).forEach((t=>{this.xhr.setRequestHeader(t,e[t])})),this.xhr.withCredentials=i;const r=new FormData;r.append("upload",t),this.xhr.send(r)}}class m extends t.Plugin{static get requires(){return[l.FileRepository]}static get pluginName(){return"DrupalFileRepository"}init(){const t=this.editor.config.get("drupalImageUpload");t&&(t.uploadUrl?this.editor.plugins.get(l.FileRepository).createUploadAdapter=e=>new c(e,t):(0,d.logWarning)("simple-upload-adapter-missing-uploadurl"))}}class g extends t.Plugin{static get requires(){return[m,u]}static get pluginName(){return"DrupalImageUpload"}}var p={DrupalImage:s,DrupalImageUpload:g}}(),r=r.default}()})); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/build/drupalMedia.js b/core/modules/ckeditor5/js/build/drupalMedia.js new file mode 100644 index 000000000000..ee2cc68094af --- /dev/null +++ b/core/modules/ckeditor5/js/build/drupalMedia.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalMedia=t())}(self,(function(){return function(){var e={"ckeditor5/src/core.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"ckeditor5/src/widget.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":function(e){"use strict";e.exports=CKEditor5.dll}},t={};function i(r){var n=t[r];if(void 0!==n)return n.exports;var a=t[r]={exports:{}};return e[r](a,a.exports,i),a.exports}i.d=function(e,t){for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var r={};return function(){"use strict";i.d(r,{default:function(){return y}});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/widget.js");class n extends e.Command{execute(e){const t=this.editor.plugins.get("DrupalMediaEditing"),i=Object.entries(t.attrs).reduce(((e,[t,i])=>(e[i]=t,e)),{}),r=Object.keys(e).reduce(((t,r)=>(i[r]&&(t[i[r]]=e[r]),t)),{});this.editor.model.change((e=>{this.editor.model.insertContent(function(e,t){return e.createElement("drupalMedia",t)}(e,r))}))}refresh(){const e=this.editor.model,t=e.document.selection,i=e.schema.findAllowedParent(t.getFirstPosition(),"drupalMedia");this.isEnabled=null!==i}}class a extends e.Plugin{static get requires(){return[t.Widget]}init(){this.attrs={drupalMediaAlt:"alt",drupalMediaAlign:"data-align",drupalMediaCaption:"data-caption",drupalMediaEntityType:"data-entity-type",drupalMediaEntityUuid:"data-entity-uuid",drupalMediaViewMode:"data-view-mode"};const e=this.editor.config.get("drupalMedia");if(!e)return;const{previewURL:t,themeError:i}=e;this.previewURL=t,this.labelError=this.editor.t("Preview failed"),this.themeError=i||`\n <p>${this.editor.t("An error occurred while trying to preview the media. Please save your work and reload this page.")}<p>\n `,this._defineSchema(),this._defineConverters(),this.editor.commands.add("insertDrupalMedia",new n(this.editor))}async _fetchPreview(e,t){const i=await fetch(`${e}?${new URLSearchParams(t)}`,{headers:{"X-Drupal-MediaPreview-CSRF-Token":this.editor.config.get("drupalMedia").previewCsrfToken}});if(i.ok){return{label:i.headers.get("drupal-media-label"),preview:await i.text()}}return{label:this.labelError,preview:this.themeError}}_defineSchema(){this.editor.model.schema.register("drupalMedia",{allowWhere:"$block",isObject:!0,isContent:!0,allowAttributes:Object.keys(this.attrs)})}_defineConverters(){const e=this.editor.conversion;e.for("upcast").elementToElement({view:{name:"drupal-media"},model:"drupalMedia"}),e.for("dataDowncast").elementToElement({model:"drupalMedia",view:{name:"drupal-media"}}),e.for("editingDowncast").elementToElement({model:"drupalMedia",view:(e,{writer:i})=>{const r=i.createContainerElement("div",{class:"drupal-media"}),n=i.createRawElement("div",{"data-drupal-media-preview":"loading"},(t=>{this.previewURL?this._fetchPreview(this.previewURL,{text:this._renderElement(e),uuid:e.getAttribute("drupalMediaEntityUuid")}).then((({label:e,preview:i})=>{t.innerHTML=i,t.setAttribute("aria-label",e),t.setAttribute("data-drupal-media-preview","ready")})):(t.innerHTML=this.themeError,t.setAttribute("aria-label","drupal-media"),t.setAttribute("data-drupal-media-preview","unavailable"))}));return i.insert(i.createPositionAt(r,0),n),i.setCustomProperty("drupalMedia",!0,r),(0,t.toWidget)(r,i,{label:"media widget"})}}),Object.keys(this.attrs).forEach((t=>{e.attributeToAttribute({model:{key:t,name:"drupalMedia"},view:{name:"drupal-media",key:this.attrs[t]}})}))}_renderElement(e){const t=e.getAttributes();let i="<drupal-media";return Array.from(t).forEach((e=>{this.attrs[e[0]]&&"drupalMediaCaption"!==e[0]&&(i+=` ${this.attrs[e[0]]}="${e[1]}"`)})),i+="></drupal-media>",i}static get pluginName(){return"DrupalMediaEditing"}}var s=i("ckeditor5/src/ui.js");class o extends e.Plugin{init(){const e=this.editor,t=this.editor.config.get("drupalMedia");if(!t)return;const{libraryURL:i,openDialog:r,dialogSettings:n={}}=t;i&&"function"==typeof r&&e.ui.componentFactory.add("drupalMedia",(t=>{const a=e.commands.get("insertDrupalMedia"),o=new s.ButtonView(t);return o.set({label:e.t("Insert Drupal Media"),icon:'<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z" fill="black"/></svg>\n',tooltip:!0}),o.bind("isOn","isEnabled").to(a,"value","isEnabled"),this.listenTo(o,"execute",(()=>{r(i,(({attributes:t})=>{e.execute("insertDrupalMedia",t)}),n)})),o}))}}function l(e){return!!e&&e.is("element","drupalMedia")}function d(e){const i=e.getSelectedElement();return i&&function(e){return(0,t.isWidget)(e)&&!!e.getCustomProperty("drupalMedia")}(i)?i:null}class u extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"DrupalMediaToolbar"}afterInit(){const e=this.editor,{t:i}=e;e.plugins.get(t.WidgetToolbarRepository).register("drupalMedia",{ariaLabel:i("Drupal Media toolbar"),items:e.config.get("drupalMedia.toolbar")||[],getRelatedElement:e=>d(e)})}}class c extends e.Command{refresh(){const e=this.editor.model.document.selection.getSelectedElement();this.isEnabled=!1,l(e)&&this._isMediaImage(e).then((e=>{this.isEnabled=e})),l(e)&&e.hasAttribute("drupalMediaAlt")?this.value=e.getAttribute("drupalMediaAlt"):this.value=!1}execute(e){const{model:t}=this.editor,i=t.document.selection.getSelectedElement();e.newValue=e.newValue.trim(),t.change((t=>{e.newValue.length>0?t.setAttribute("drupalMediaAlt",e.newValue,i):t.removeAttribute("drupalMediaAlt",i)}))}async _isMediaImage(e){const t=this.editor.config.get("drupalMedia");if(!t)return null;const{isMediaUrl:i}=t,r=new URLSearchParams({uuid:e.getAttribute("drupalMediaEntityUuid")}),n=await fetch(`${i}&${r}`);return n.ok?JSON.parse(await n.text()):null}}class m extends e.Plugin{static get pluginName(){return"MediaImageTextAlternativeEditing"}init(){this.editor.commands.add("mediaImageTextAlternative",new c(this.editor))}}function h(e){const t=e.editing.view,i=s.BalloonPanelView.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}var p=i("ckeditor5/src/utils.js");class f extends s.View{constructor(t){super(t);const i=this.locale.t;this.focusTracker=new p.FocusTracker,this.keystrokes=new p.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(i("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new s.ViewCollection,this._focusCycler=new s.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,s.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,s.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}_createButton(e,t,i,r){const n=new s.ButtonView(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.extendTemplate({attributes:{class:i}}),r&&n.delegate("execute").to(this,r),n}_createLabeledInputView(){const e=this.locale.t,t=new s.LabeledFieldView(this.locale,s.createLabeledInputText);return t.label=e("Override text alternative"),t}}class g extends e.Plugin{static get requires(){return[s.ContextualBalloon]}static get pluginName(){return"MediaImageTextAlternativeUi"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,i=t.t;t.ui.componentFactory.add("mediaImageTextAlternative",(r=>{const n=t.commands.get("mediaImageTextAlternative"),a=new s.ButtonView(r);return a.set({label:i("Override media image text alternative"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isVisible").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new f(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("mediaImageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{d(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(d(e.editing.view.document.selection)){const i=h(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,s.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("mediaImageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:h(e)}),i.fieldView.element.value=t.value||"",i.fieldView.value=i.fieldView.element.value,this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class b extends e.Plugin{static get requires(){return[m,g]}static get pluginName(){return"MediaImageTextAlternative"}}function w(e,t,i){if(t.attributes)for(const[r,n]of Object.entries(t.attributes))e.setAttribute(r,n,i);t.styles&&e.setStyle(t.styles,i),t.classes&&e.addClass(t.classes,i)}function v(e){return t=>{t.on("element:drupal-media",((t,i,r)=>{const n=i.viewItem.parent;n.is("element","a")&&function(t,n){const a=e._consumeAllowedAttributes(t,r);a&&r.writer.setAttribute(n,a,i.modelRange)}(n,"htmlLinkAttributes")}),{priority:"low"})}}class M extends e.Plugin{init(){const{editor:e}=this;if(!e.plugins.has("GeneralHtmlSupport"))return;const{schema:t}=e.model,{conversion:i}=e,r=e.plugins.get("DataFilter");t.extend("drupalMedia",{allowAttributes:["htmlLinkAttributes"]}),i.for("upcast").add(v(r)),i.for("editingDowncast").add((e=>e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const r=i.mapper.toViewElement(t.item),n=function(e,t,i){const r=e.createRangeOn(t);for(const{item:e}of r.getWalker())if(e.is("element",i))return e}(i.writer,r,"a");w(i.writer,t.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"}))),i.for("dataDowncast").add((e=>e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const r=i.mapper.toViewElement(t.item).parent;w(i.writer,t.item.getAttribute("htmlLinkAttributes"),r)}),{priority:"low"})))}static get pluginName(){return"DrupalMediaGeneralHtmlSupport"}}class k extends e.Plugin{static get requires(){return[a,M,o,u,b]}}function _(){return e=>{e.on("element:a",((e,t,i)=>{const r=t.viewItem,n=(a=r,Array.from(a.getChildren()).find((e=>"drupal-media"===e.name)));var a;if(!n)return;if(!i.consumable.consume(r,{attributes:["href"]}))return;const s=r.getAttribute("href");if(!s)return;const o=i.convertItem(n,t.modelCursor);t.modelRange=o.modelRange,t.modelCursor=o.modelCursor;const l=t.modelCursor.nodeBefore;l&&l.is("element","drupalMedia")&&i.writer.setAttribute("linkHref",s,l)}),{priority:"high"})}}class A extends e.Plugin{static get requires(){return["LinkEditing","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaEditing"}init(){const{editor:e}=this;e.model.schema.extend("drupalMedia",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add(_()),e.conversion.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:r}=i;if(!i.consumable.consume(t.item,e.name))return;const n=i.mapper.toViewElement(t.item),a=Array.from(n.getChildren()).find((e=>"a"===e.name));if(a)t.attributeNewValue?r.setAttribute("href",t.attributeNewValue,a):(r.move(r.createRangeIn(a),r.createPositionAt(n,0)),r.remove(a));else{const e=Array.from(n.getChildren()).find((e=>e.getAttribute("data-drupal-media-preview"))),i=r.createContainerElement("a",{href:t.attributeNewValue});r.insert(r.createPositionAt(n,0),i),r.move(r.createRangeOn(e),r.createPositionAt(i,0))}}),{priority:"high"})})),e.conversion.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:r}=i;if(!i.consumable.consume(t.item,e.name))return;const n=i.mapper.toViewElement(t.item),a=r.createContainerElement("a",{href:t.attributeNewValue});r.insert(r.createPositionBefore(n),a),r.move(r.createRangeOn(n),r.createPositionAt(a,0))}),{priority:"high"})}))}}class x extends e.Plugin{static get requires(){return["LinkEditing","LinkUI","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaUi"}init(){const{editor:e}=this,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedMedia(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkMediaButton()}_createToolbarLinkMediaButton(){const{editor:e}=this,{t:t}=e;e.ui.componentFactory.add("drupalLinkMedia",(i=>{const r=new s.ButtonView(i),n=e.plugins.get("LinkUI"),a=e.commands.get("link");return r.set({isEnabled:!0,label:t("Link media"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>\n',keystroke:"Ctrl+K",tooltip:!0,isToggleable:!0}),r.bind("isEnabled").to(a,"isEnabled"),r.bind("isOn").to(a,"value",(e=>!!e)),this.listenTo(r,"execute",(()=>{this._isSelectedLinkedMedia(e.model.document.selection)?n._addActionsView():n._showUI(!0)})),r}))}_isSelectedLinkedMedia(e){const t=e.getSelectedElement();return!!t&&t.is("element","drupalMedia")&&t.hasAttribute("linkHref")}}class E extends e.Plugin{static get requires(){return[A,x]}static get pluginName(){return"DrupalLinkMedia"}}var y={DrupalMedia:k,MediaImageTextAlternative:b,MediaImageTextAlternativeEditing:m,MediaImageTextAlternativeUi:g,DrupalLinkMedia:E}}(),r=r.default}()})); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/ckeditor5.admin.es6.js b/core/modules/ckeditor5/js/ckeditor5.admin.es6.js new file mode 100644 index 000000000000..f40f4b0e96de --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5.admin.es6.js @@ -0,0 +1,1025 @@ +/** + * @file + * Provides admin UI for the CKEditor 5. + */ + +((Drupal, drupalSettings, $, JSON, once, Sortable) => { + const toolbarHelp = [ + { + message: Drupal.t( + "The toolbar buttons that don't fit the user's browser window width will be grouped in a dropdown. If multiple toolbar rows are preferred, those can be configured by adding an explicit wrapping breakpoint wherever you want to start a new row.", + null, + { + context: + 'CKEditor 5 toolbar help text, default, no explicit wrapping breakpoint', + }, + ), + button: 'wrapping', + condition: false, + }, + { + message: Drupal.t( + 'You have configured a multi-row toolbar by using an explicit wrapping breakpoint. This may not work well in narrow browser windows. To use automatic grouping, remove any of these divider buttons.', + null, + { + context: + 'CKEditor 5 toolbar help text, with explicit wrapping breakpoint', + }, + ), + button: 'wrapping', + condition: true, + }, + ]; + + /** + * Allows attaching listeners to a value. + * + * @type {Observable} + */ + const Observable = class { + /** + * Creates new Observable with a value. + * + * @param {*} value + * The value to be observed. + */ + constructor(value) { + this._listeners = []; + this._value = value; + } + + /** + * Notifies subscribers about new value. + */ + notify() { + this._listeners.forEach((listener) => listener(this._value)); + } + + /** + * Subscribes to be notified for changes. + * + * @param {Function} listener + * The function to be called when a new value is set. + */ + subscribe(listener) { + this._listeners.push(listener); + } + + /** + * The value of the observable. + * + * @return {*} + * The current value. + */ + get value() { + return this._value; + } + + /** + * Sets the value of the observable and notifies subscribers. + * + * @param {*} val + * The new value of the observable. + */ + set value(val) { + if (val !== this._value) { + this._value = val; + this.notify(); + } + } + }; + + /** + * Gets selected buttons. + * + * @param {Array} selected + * The selected buttons retrieved from state. + * @param {Array} dividers + * The available dividers. + * @param {Array} available + * The available buttons. + * @return {Array} + * An array containing selected buttons. + */ + const getSelectedButtons = (selected, dividers, available) => { + return selected.map((id) => ({ + ...[...dividers, ...available].find((button) => button.id === id), + })); + }; + + /** + * Updates selected buttons to the textarea. + * + * @param {Array} selection + * The current selection. + * @param {Element} textarea + * The textarea element. + */ + const updateSelectedButtons = (selection, textarea) => { + const newValue = JSON.stringify(selection); + + const priorValue = textarea.innerHTML; + textarea.value = newValue; + textarea.innerHTML = newValue; + + // The textarea is programmatically updated, so no native JavaScript + // event is triggered. Event listeners need to be aware of this config + // update, so a custom event is dispatched immediately after the + // config update. + textarea.dispatchEvent( + new CustomEvent('change', { + detail: { + priorValue, + }, + }), + ); + }; + + /** + * Function to add button to selected buttons. + * + * @param {Observable} selection + * The currently selected buttons. + * @param {Element} element + * The element which is being added. + * @param {function} announceChange + * Function to call to announce the change. + */ + const addToSelectedButtons = (selection, element, announceChange) => { + const list = [...selection.value]; + list.push(element.dataset.id); + selection.value = list; + + if (announceChange) { + setTimeout(() => { + announceChange(element.dataset.label); + }); + } + }; + + /** + * Function to remove button from selected buttons. + * + * @param {Observable} selection + * The currently selected buttons. + * @param {Element} element + * The element which is being removed. + * @param {function} announceChange + * Function to call to announce the change. + */ + const removeFromSelectedButtons = (selection, element, announceChange) => { + const list = [...selection.value]; + const index = Array.from(element.parentElement.children).findIndex( + (child) => { + return child === element; + }, + ); + list.splice(index, 1); + selection.value = list; + + if (announceChange) { + setTimeout(() => { + announceChange(element.dataset.label); + }); + } + }; + + /** + * Moves element within active buttons. + * + * @param {Observable} selection + * The currently selected buttons. + * @param {Element} element + * The element being moved. + * @param {Number} dir + * The direction which the element is being moved. + */ + const moveWithinSelectedButtons = (selection, element, dir) => { + const list = [...selection.value]; + const index = Array.from(element.parentElement.children).findIndex( + (child) => { + return child === element; + }, + ); + // If moving up, check it is not the first, else check it is not the last. + const condition = dir < 0 ? index > 0 : index < list.length - 1; + if (condition) { + list.splice(index + dir, 0, list.splice(index, 1)[0]); + selection.value = list; + } + }; + + /** + * Copies element to active buttons. + * + * @param {Observable} selection + * The currently selected buttons. + * @param {Element} element + * The element to be copied. + * @param {Function} announceChange + * A function to call to announce the change. + */ + const copyToActiveButtons = (selection, element, announceChange) => { + const list = [...selection.value]; + list.push(element.dataset.id); + selection.value = list; + + setTimeout(() => { + if (announceChange) { + announceChange(element.dataset.label); + } + }); + }; + + /** + * Renders the CKEditor 5 button admin UI. + * + * @param {Element} root + * The element where the admin UI should be rendered. + * @param {Observable} selectedButtons + * An Observable object containing selected buttons. + * @param {Array} availableButtons + * An array containing available buttons. + * @param {Array} dividerButtons + * An array containing available divider buttons. + */ + const render = (root, selectedButtons, availableButtons, dividerButtons) => { + const toolbarHelpText = toolbarHelp + .filter( + (helpItem) => + selectedButtons.value.includes(helpItem.button) === + helpItem.condition, + ) + .map((helpItem) => helpItem.message); + root.innerHTML = Drupal.theme.ckeditor5Admin({ + availableButtons: Drupal.theme.ckeditor5AvailableButtons({ + buttons: availableButtons.filter( + (button) => !selectedButtons.value.includes(button.id), + ), + }), + dividerButtons: Drupal.theme.ckeditor5DividerButtons({ + buttons: dividerButtons, + }), + activeToolbar: Drupal.theme.ckeditor5SelectedButtons({ + buttons: getSelectedButtons( + selectedButtons.value, + dividerButtons, + availableButtons, + ), + }), + helpMessage: toolbarHelpText, + }); + + // Create sortable groups for available buttons, current toolbar items, + // and dividers. + new Sortable( + root.querySelector( + '[data-button-list="ckeditor5-toolbar-active-buttons"]', + ), + { + group: { name: 'toolbar', put: ['divider', 'available'] }, + sort: true, + store: { + set: (sortable) => { + selectedButtons.value = sortable.toArray(); + }, + }, + }, + ); + const toolbarAvailableButtons = new Sortable( + root.querySelector( + '[data-button-list="ckeditor5-toolbar-available-buttons"]', + ), + { + group: { name: 'available', put: ['toolbar'] }, + sort: false, + onAdd: (event) => { + // If the moved item is a divider, it should not be added to + // the available buttons list. + if ( + dividerButtons.find( + (dividerButton) => dividerButton.id === event.item.dataset.id, + ) + ) { + const { newIndex } = event; + setTimeout(() => { + // Remove the divider button from the available buttons + // list. Draggable reassesses the lists during each drag + // event, so the DOM removal should not be disruptive. + document + .querySelectorAll('.ckeditor5-toolbar-available__buttons li') + [newIndex].remove(); + }); + } + }, + }, + ); + new Sortable( + root.querySelector( + '[data-button-list="ckeditor5-toolbar-divider-buttons"]', + ), + { + group: { name: 'divider', put: false, pull: 'clone', sort: 'false' }, + }, + ); + + root + .querySelectorAll('[data-drupal-selector="ckeditor5-toolbar-button"]') + .forEach((element) => { + const expandButton = (event) => { + event.currentTarget + .querySelectorAll('.ckeditor5-toolbar-button') + .forEach((buttonElement) => { + buttonElement.setAttribute('data-expanded', true); + }); + }; + const retractButton = (event) => { + event.currentTarget + .querySelectorAll('.ckeditor5-toolbar-button') + .forEach((buttonElement) => { + buttonElement.setAttribute('data-expanded', false); + }); + }; + element.addEventListener('mouseenter', expandButton); + element.addEventListener('focus', expandButton); + element.addEventListener('mouseleave', retractButton); + element.addEventListener('blur', retractButton); + + element.addEventListener('keyup', (event) => { + // Keys supported by the admin UI. Depending on the element that is + // triggering the event, the event could trigger changes in the state. + // Changes to the state trigger re-rendering of the admin UI, which + // means that for consistent navigation, each action modifying state + // needs to set focus back on the button that is being moved. The state + // change also triggers an AJAX request which re-renders parts of the + // form, and moves the focus to the triggering form element, meaning + // that focus needs to be set back on the button again. + const supportedKeys = [ + 'ArrowLeft', + 'ArrowRight', + 'ArrowUp', + 'ArrowDown', + ]; + const dir = document.documentElement.dir; + if (supportedKeys.includes(event.key)) { + if (event.currentTarget.dataset.divider.toLowerCase() === 'true') { + switch (event.key) { + case 'ArrowDown': { + const announceChange = (name) => { + Drupal.announce( + Drupal.t( + 'Button @name has been copied to the active toolbar.', + { '@name': name }, + ), + ); + }; + copyToActiveButtons( + selectedButtons, + event.currentTarget, + announceChange, + ); + // Focus the last button since new button is always added to the + // end of the list. + root + .querySelector( + '[data-button-list="ckeditor5-toolbar-active-buttons"] li:last-child', + ) + .focus(); + break; + } + } + } else if ( + selectedButtons.value.includes(event.currentTarget.dataset.id) + ) { + const index = Array.from( + element.parentElement.children, + ).findIndex((child) => { + return child === element; + }); + switch (event.key) { + case 'ArrowLeft': { + const leftOffset = dir === 'ltr' ? -1 : 1; + moveWithinSelectedButtons( + selectedButtons, + event.currentTarget, + leftOffset, + ); + // Move focus to left or right from the current index depending + // on current language direction. Use index instead of the + // data-id because dividers don't have a unique ID. + root + .querySelectorAll( + '[data-button-list="ckeditor5-toolbar-active-buttons"] li', + ) + [index + leftOffset].focus(); + break; + } + case 'ArrowRight': { + const rightOffset = dir === 'ltr' ? 1 : -1; + moveWithinSelectedButtons( + selectedButtons, + event.currentTarget, + rightOffset, + ); + // Move focus to right or left from the current index depending + // on current language direction. Use index instead of the + // data-id because dividers don't have a unique ID. + root + .querySelectorAll( + '[data-button-list="ckeditor5-toolbar-active-buttons"] li', + ) + [index + rightOffset].focus(); + break; + } + case 'ArrowUp': { + const announceChange = (name) => { + Drupal.announce( + Drupal.t( + 'Button @name has been removed from the active toolbar.', + { '@name': name }, + ), + ); + }; + removeFromSelectedButtons( + selectedButtons, + event.currentTarget, + announceChange, + ); + // Focus only if the button wasn't a divider because dividers + // are simply removed from the active buttons instead of moving + // to another list. + if ( + !dividerButtons.find( + (dividerButton) => + event.currentTarget.dataset.id === dividerButton.id, + ) + ) { + // Focus button based on the data-id attribute from the + // available buttons list. + root + .querySelector( + `[data-button-list="ckeditor5-toolbar-available-buttons"] [data-id="${event.currentTarget.dataset.id}"]`, + ) + .focus(); + } + break; + } + } + } else if ( + toolbarAvailableButtons + .toArray() + .includes(event.currentTarget.dataset.id) + ) { + switch (event.key) { + case 'ArrowDown': { + const announceChange = (name) => { + Drupal.announce( + Drupal.t( + 'Button @name has been moved to the active toolbar.', + { '@name': name }, + ), + ); + }; + addToSelectedButtons( + selectedButtons, + event.currentTarget, + announceChange, + ); + // Focus the last button since new button is always added to the + // end of the list. + root + .querySelector( + '[data-button-list="ckeditor5-toolbar-active-buttons"] li:last-child', + ) + .focus(); + break; + } + } + } + } + }); + }); + }; + + /** + * Attach CKEditor 5 admin UI. + * + * @type {Drupal~behavior} + * + * @prop {Drupal~behaviorAttach} attach + * Attaches admin app to edit the CKEditor 5 toolbar. + * @prop {Drupal~behaviorDetach} detach + * Detaches admin app from the CKEditor 5 configuration form on 'unload'. + */ + Drupal.behaviors.ckeditor5Admin = { + attach(context) { + once('ckeditor5-admin-toolbar', '#ckeditor5-toolbar-app').forEach( + (container) => { + const selectedTextarea = context.querySelector( + '#ckeditor5-toolbar-buttons-selected', + ); + const available = Object.entries( + JSON.parse( + context.querySelector('#ckeditor5-toolbar-buttons-available') + .innerHTML, + ), + ).map(([name, attrs]) => ({ name, id: name, ...attrs })); + const dividers = [ + { + id: 'divider', + name: '|', + label: Drupal.t('Divider'), + }, + { + id: 'wrapping', + name: '-', + label: Drupal.t('Wrapping'), + }, + ]; + + // Selected is used for managing the state. Sortable is handling updates + // to the state when the system is operated by mouse. There are + // functions making direct modifications to the state when system is + // operated by keyboard. + const selected = new Observable( + JSON.parse(selectedTextarea.innerHTML).map((name) => { + return [...dividers, ...available].find((button) => { + return button.name === name; + }).id; + }), + ); + + const mapSelection = (selection) => { + return selection.map((id) => { + return [...dividers, ...available].find((button) => { + return button.id === id; + }).name; + }); + }; + // Whenever the state is changed, update the textarea with the changes. + // This will also trigger re-render of the admin UI to reinitialize the + // Sortable state. + selected.subscribe((selection) => { + updateSelectedButtons(mapSelection(selection), selectedTextarea); + render(container, selected, available, dividers); + }); + + [ + context.querySelector('#ckeditor5-toolbar-buttons-available'), + context.querySelector('[class*="editor-settings-toolbar-items"]'), + ] + .filter((el) => el) + .forEach((el) => { + el.classList.add('visually-hidden'); + }); + + render(container, selected, available, dividers); + }, + ); + // Safari's focus outlines take into account absolute positioned elements. + // When a toolbar option is blurred, the portion of the focus outline + // surrounding the absolutely positioned tooltip does not go away. To + // prevent keyboard navigation users from seeing outline artifacts for + // every option they've tabbed through, we provide a keydown listener + // that can catch blur-causing events before the blur happens. If the + // tooltip is hidden before the blur event, the outline will disappear + // correctly. + once( + 'safari-focus-fix', + document.querySelectorAll('.ckeditor5-toolbar-item'), + ).forEach((item) => { + item.addEventListener('keydown', (e) => { + const keyCodeDirections = { + 9: 'tab', + 37: 'left', + 38: 'up', + 39: 'right', + 40: 'down', + }; + if ( + ['tab', 'left', 'up', 'right', 'down'].includes( + keyCodeDirections[e.keyCode], + ) + ) { + let hideTip = false; + const isActive = e.target.closest( + '[data-button-list="ckeditor5-toolbar-active__buttons"]', + ); + if (isActive) { + if ( + ['tab', 'left', 'up', 'right'].includes( + keyCodeDirections[e.keyCode], + ) + ) { + hideTip = true; + } + } else if (['tab', 'down'].includes(keyCodeDirections[e.keyCode])) { + hideTip = true; + } + if (hideTip) { + e.target + .querySelector('[data-expanded]') + .setAttribute('data-expanded', 'false'); + } + } + }); + }); + + /** + * Updates the UI state info in the form's 'data-drupal-ui-state' attribute. + * + * @param {object} states + * An object with one or more items with the structure { ui-property: stored-value } + */ + const updateUiStateStorage = (states) => { + const form = document.querySelector( + '#filter-format-edit-form, #filter-format-add-form', + ); + + // Get the current stored UI state as an object. + const currentStates = form.hasAttribute('data-drupal-ui-state') + ? JSON.parse(form.getAttribute('data-drupal-ui-state')) + : {}; + + // Store the updated UI state object as an object literal in the parent + // form's 'data-drupal-ui-state' attribute. + form.setAttribute( + 'data-drupal-ui-state', + JSON.stringify({ ...currentStates, ...states }), + ); + }; + + /** + * Gets a stored UI state property. + * + * @param {string} property + * The UI state property to retrieve the value of. + * + * @return {string|null} + * When present, the stored value of the property. + */ + const getUiStateStorage = (property) => { + const form = document.querySelector( + '#filter-format-edit-form, #filter-format-add-form', + ); + + if (form === null) { + return; + } + + // Parse the object literal stored in the form's 'data-drupal-ui-state' + // attribute and return the value of the object property that matches + // the 'property' argument. + return form.hasAttribute('data-drupal-ui-state') + ? JSON.parse(form.getAttribute('data-drupal-ui-state'))[property] + : null; + }; + + // Add an attribute to the parent form for storing UI states, so this + // information can be retrieved after AJAX rebuilds. + once( + 'ui-state-storage', + document.querySelector( + '#filter-format-edit-form, #filter-format-add-form', + ), + ).forEach((form) => { + form.setAttribute('data-drupal-ui-state', JSON.stringify({})); + }); + + /** + * Maintains the active vertical tab after AJAX rebuild. + * + * @param {Element} verticalTabs + * The vertical tabs element. + */ + const maintainActiveVerticalTab = (verticalTabs) => { + const id = verticalTabs.id; + + // If the UI state storage has an active tab, click that tab. + const activeTab = getUiStateStorage(`${id}-active-tab`); + if (activeTab) { + setTimeout(() => { + document.querySelector(activeTab).click(); + }); + } + + // Add click listener that adds any tab click into UI storage. + verticalTabs.querySelectorAll('.vertical-tabs__menu').forEach((tab) => { + tab.addEventListener('click', (e) => { + const state = {}; + const href = e.target + .closest('[href]') + .getAttribute('href') + .split('--')[0]; + state[`${id}-active-tab`] = `#${id} [href^='${href}']`; + updateUiStateStorage(state); + }); + }); + }; + + once( + 'plugin-settings', + document.querySelector('#plugin-settings-wrapper'), + ).forEach(maintainActiveVerticalTab); + once( + 'filter-settings', + document.querySelector('#filter-settings-wrapper'), + ).forEach(maintainActiveVerticalTab); + + // Add listeners to maintain focus after AJAX rebuilds. + const selectedButtons = document.querySelector( + '#ckeditor5-toolbar-buttons-selected', + ); + + once('textarea-listener', selectedButtons).forEach((textarea) => { + textarea.addEventListener('change', (e) => { + const buttonName = document.activeElement.getAttribute('data-id'); + if (!buttonName) { + // If there is no 'data-id' attribute, then the config + // is happening via mouse. + return; + } + let focusSelector = ''; + + // Divider elements are treated differently as there can be multiple + // elements with the same button name. + if (['divider', 'wrapping'].includes(buttonName)) { + const oldConfig = JSON.parse(e.detail.priorValue); + const newConfig = JSON.parse(e.target.innerHTML); + + // If the divider is being removed from active buttons, it does not + // 'move' anywhere. Move focus to the prior active button + if (oldConfig.length > newConfig.length) { + for (let item = 0; item < newConfig.length; item++) { + if (newConfig[item] !== oldConfig[item]) { + focusSelector = `[data-button-list="ckeditor5-toolbar-active-buttons"] li:nth-child(${Math.min( + item - 1, + 0, + )})`; + break; + } + } + } else if (oldConfig.length < newConfig.length) { + // If the divider is being added, it will be the last active item. + focusSelector = + '[data-button-list="ckeditor5-toolbar-active-buttons"] li:last-child'; + } else { + // When moving a dividers position within the active buttons. + document + .querySelectorAll( + `[data-button-list="ckeditor5-toolbar-active-buttons"] [data-id='${buttonName}']`, + ) + .forEach((divider, index) => { + if (divider === document.activeElement) { + focusSelector = `${buttonName}|${index}`; + } + }); + } + } else { + focusSelector = `[data-id='${buttonName}']`; + } + + // Store the focus selector in an attribute on the form itself, which + // will not be overwritten after the AJAX rebuild. This makes it + // the value available to the textarea focus listener that is + // triggered after the AJAX rebuild. + updateUiStateStorage({ focusSelector }); + }); + + textarea.addEventListener('focus', () => { + // The selector that should receive focus is stored in the parent + // form element. Move focus to that selector. + const focusSelector = getUiStateStorage('focusSelector'); + + if (focusSelector) { + // If focusSelector includes '|', it is a separator that is being + // moved within the active button list. Different logic us used to + // determine focus since there can be multiple separators of the + // same type within the active buttons list. + if (focusSelector.includes('|')) { + const [buttonName, count] = focusSelector.split('|'); + document + .querySelectorAll( + `[data-button-list="ckeditor5-toolbar-active-buttons"] [data-id='${buttonName}']`, + ) + .forEach((item, index) => { + if (index === parseInt(count, 10)) { + item.focus(); + } + }); + } else { + const toFocus = document.querySelector(focusSelector); + if (toFocus) { + toFocus.focus(); + } + } + } + }); + }); + }, + }; + + /** + * Theme function for CKEditor 5 selected buttons. + * + * @param {Object} options + * An object containing options. + * @param {Array} options.buttons + * An array of selected buttons. + * @return {string} + * The selected buttons markup. + * + * @internal + */ + Drupal.theme.ckeditor5SelectedButtons = ({ buttons }) => { + return ` + <ul class="ckeditor5-toolbar-tray ckeditor5-toolbar-active__buttons" data-button-list="ckeditor5-toolbar-active-buttons" role="listbox" aria-orientation="horizontal" aria-labelledby="ckeditor5-toolbar-active-buttons-label"> + ${buttons + .map((button) => + Drupal.theme.ckeditor5Button({ button, listType: 'active' }), + ) + .join('')} + </ul> + `; + }; + + /** + * Theme function for CKEditor 5 divider buttons. + * + * @param {Object} options + * An object containing options. + * @param {Array} options.buttons + * An array of divider buttons. + * @return {string} + * The CKEditor 5 divider buttons markup. + * + * @internal + */ + Drupal.theme.ckeditor5DividerButtons = ({ buttons }) => { + return ` + <ul class="ckeditor5-toolbar-tray ckeditor5-toolbar-divider__buttons" data-button-list="ckeditor5-toolbar-divider-buttons" role="listbox" aria-orientation="horizontal" aria-labelledby="ckeditor5-toolbar-divider-buttons-label"> + ${buttons + .map((button) => + Drupal.theme.ckeditor5Button({ button, listType: 'divider' }), + ) + .join('')} + </ul> + `; + }; + + /** + * Theme function for CKEditor 5 available buttons. + * + * @param {Object} options + * An object containing options. + * @param {Array} options.buttons + * An array of available buttons. + * @return {string} + * The CKEditor 5 available buttons markup. + * + * @internal + */ + Drupal.theme.ckeditor5AvailableButtons = ({ buttons }) => { + return ` + <ul class="ckeditor5-toolbar-tray ckeditor5-toolbar-available__buttons" data-button-list="ckeditor5-toolbar-available-buttons" role="listbox" aria-orientation="horizontal" aria-labelledby="ckeditor5-toolbar-available-buttons-label"> + ${buttons + .map((button) => + Drupal.theme.ckeditor5Button({ button, listType: 'available' }), + ) + .join('')} + </ul> + `; + }; + + /** + * Theme function for CKEditor 5 buttons. + * + * @param {Object} options + * An object containing options. + * @param {Object} options.button + * An object containing button options. + * @param {String} options.button.label + * Button label. + * @param {String} options.button.id + * Button id. + * @param {String} options.listType + * The type of the list. + * @return {string} + * The CKEditor 5 buttons markup. + * + * @internal + */ + Drupal.theme.ckeditor5Button = ({ button: { label, id }, listType }) => { + const visuallyHiddenLabel = Drupal.t(`@listType button @label`, { + '@listType': listType !== 'divider' ? listType : 'available', + '@label': label, + }); + return ` + <li class="ckeditor5-toolbar-item ckeditor5-toolbar-item-${id}" role="option" tabindex="0" data-drupal-selector="ckeditor5-toolbar-button" data-id="${id}" data-label="${label}" data-divider="${ + listType === 'divider' + }"> + <span class="ckeditor5-toolbar-button ckeditor5-toolbar-button-${id}"> + <span class="visually-hidden">${visuallyHiddenLabel})}</span> + </span> + <span class="ckeditor5-toolbar-tooltip" aria-hidden="true">${label}</span> + </li> + `; + }; + + /** + * Theme function for CKEditor 5 admin UI. + * + * @param {Object} options + * An object containing options. + * @param {String} options.availableButtons + * Markup for available buttons. + * @param {String} options.dividerButtons + * Markup for divider buttons. + * @param {String} options.activeToolbar + * Markup for active toolbar. + * @param {Array} options.helpMessage + * An array of help messages. + * @return {string} + * The CKEditor 5 admin UI markup. + * + * @internal + */ + Drupal.theme.ckeditor5Admin = ({ + availableButtons, + dividerButtons, + activeToolbar, + helpMessage, + }) => { + return ` + <div aria-live="polite" data-drupal-selector="ckeditor5-admin-help-message"> + <p>${helpMessage.join('</p><p>')}</p> + </div> + <div class="ckeditor5-toolbar-disabled"> + <div class="ckeditor5-toolbar-available"> + <label id="ckeditor5-toolbar-available-buttons-label">${Drupal.t( + 'Available buttons', + )}</label> + ${availableButtons} + </div> + <div class="ckeditor5-toolbar-divider"> + <label id="ckeditor5-toolbar-divider-buttons-label">${Drupal.t( + 'Button divider', + )}</label> + ${dividerButtons} + </div> + </div> + <div class="ckeditor5-toolbar-active"> + <label id="ckeditor5-toolbar-active-buttons-label">${Drupal.t( + 'Active toolbar', + )}</label> + ${activeToolbar} + </div> + `; + }; + + // Make a copy of the default filterStatus attach behaviors so it can be + // called within this module's override of it. + const originalFilterStatusAttach = Drupal.behaviors.filterStatus.attach; + + // Overrides the default filterStatus to provided functionality needs + // specific to CKEditor 5. + Drupal.behaviors.filterStatus.attach = (context, settings) => { + const filterStatusCheckboxes = document.querySelectorAll( + '#filters-status-wrapper input.form-checkbox', + ); + + // CKEditor 5 has uses cases that require updating the filter settings via + // AJAX. When this happens, the checkboxes that enable filters must be + // reprocessed by the filterStatus behavior. For this to occur: + // 1. 'filter-status' must be removed from the element's once registry so + // the process can run again and take into account any filter settings + // elements that have been added or removed from the DOM. + // @see core/assets/vendor/once/once.js + once.remove('filter-status', filterStatusCheckboxes); + + // 2. Any listeners to the 'click.filterUpdate' event should be removed so + // they do not conflict with event listeners that are added as part of + // the AJAX refresh. + $(filterStatusCheckboxes).off('click.filterUpdate'); + + // Call the original behavior. + originalFilterStatusAttach(context, settings); + }; + + // Activates otherwise-inactive tabs that have form elements with validation + // errors. + // @todo Remove when https://www.drupal.org/project/drupal/issues/2911932 lands. + Drupal.behaviors.tabErrorsVisible = { + attach(context) { + context.querySelectorAll('details .form-item .error').forEach((item) => { + const details = item.closest('details'); + if (details.style.display === 'none') { + const tabSelect = document.querySelector(`[href='#${details.id}']`); + if (tabSelect) { + tabSelect.click(); + } + } + }); + }, + }; +})(Drupal, drupalSettings, jQuery, JSON, once, Sortable); diff --git a/core/modules/ckeditor5/js/ckeditor5.admin.js b/core/modules/ckeditor5/js/ckeditor5.admin.js new file mode 100644 index 000000000000..1d031035f35e --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5.admin.js @@ -0,0 +1,584 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +(function (Drupal, drupalSettings, $, JSON, once, Sortable) { + var toolbarHelp = [{ + message: Drupal.t("The toolbar buttons that don't fit the user's browser window width will be grouped in a dropdown. If multiple toolbar rows are preferred, those can be configured by adding an explicit wrapping breakpoint wherever you want to start a new row.", null, { + context: 'CKEditor 5 toolbar help text, default, no explicit wrapping breakpoint' + }), + button: 'wrapping', + condition: false + }, { + message: Drupal.t('You have configured a multi-row toolbar by using an explicit wrapping breakpoint. This may not work well in narrow browser windows. To use automatic grouping, remove any of these divider buttons.', null, { + context: 'CKEditor 5 toolbar help text, with explicit wrapping breakpoint' + }), + button: 'wrapping', + condition: true + }]; + + var Observable = function () { + function Observable(value) { + _classCallCheck(this, Observable); + + this._listeners = []; + this._value = value; + } + + _createClass(Observable, [{ + key: "notify", + value: function notify() { + var _this = this; + + this._listeners.forEach(function (listener) { + return listener(_this._value); + }); + } + }, { + key: "subscribe", + value: function subscribe(listener) { + this._listeners.push(listener); + } + }, { + key: "value", + get: function get() { + return this._value; + }, + set: function set(val) { + if (val !== this._value) { + this._value = val; + this.notify(); + } + } + }]); + + return Observable; + }(); + + var getSelectedButtons = function getSelectedButtons(selected, dividers, available) { + return selected.map(function (id) { + return _objectSpread({}, [].concat(_toConsumableArray(dividers), _toConsumableArray(available)).find(function (button) { + return button.id === id; + })); + }); + }; + + var updateSelectedButtons = function updateSelectedButtons(selection, textarea) { + var newValue = JSON.stringify(selection); + var priorValue = textarea.innerHTML; + textarea.value = newValue; + textarea.innerHTML = newValue; + textarea.dispatchEvent(new CustomEvent('change', { + detail: { + priorValue: priorValue + } + })); + }; + + var addToSelectedButtons = function addToSelectedButtons(selection, element, announceChange) { + var list = _toConsumableArray(selection.value); + + list.push(element.dataset.id); + selection.value = list; + + if (announceChange) { + setTimeout(function () { + announceChange(element.dataset.label); + }); + } + }; + + var removeFromSelectedButtons = function removeFromSelectedButtons(selection, element, announceChange) { + var list = _toConsumableArray(selection.value); + + var index = Array.from(element.parentElement.children).findIndex(function (child) { + return child === element; + }); + list.splice(index, 1); + selection.value = list; + + if (announceChange) { + setTimeout(function () { + announceChange(element.dataset.label); + }); + } + }; + + var moveWithinSelectedButtons = function moveWithinSelectedButtons(selection, element, dir) { + var list = _toConsumableArray(selection.value); + + var index = Array.from(element.parentElement.children).findIndex(function (child) { + return child === element; + }); + var condition = dir < 0 ? index > 0 : index < list.length - 1; + + if (condition) { + list.splice(index + dir, 0, list.splice(index, 1)[0]); + selection.value = list; + } + }; + + var copyToActiveButtons = function copyToActiveButtons(selection, element, announceChange) { + var list = _toConsumableArray(selection.value); + + list.push(element.dataset.id); + selection.value = list; + setTimeout(function () { + if (announceChange) { + announceChange(element.dataset.label); + } + }); + }; + + var render = function render(root, selectedButtons, availableButtons, dividerButtons) { + var toolbarHelpText = toolbarHelp.filter(function (helpItem) { + return selectedButtons.value.includes(helpItem.button) === helpItem.condition; + }).map(function (helpItem) { + return helpItem.message; + }); + root.innerHTML = Drupal.theme.ckeditor5Admin({ + availableButtons: Drupal.theme.ckeditor5AvailableButtons({ + buttons: availableButtons.filter(function (button) { + return !selectedButtons.value.includes(button.id); + }) + }), + dividerButtons: Drupal.theme.ckeditor5DividerButtons({ + buttons: dividerButtons + }), + activeToolbar: Drupal.theme.ckeditor5SelectedButtons({ + buttons: getSelectedButtons(selectedButtons.value, dividerButtons, availableButtons) + }), + helpMessage: toolbarHelpText + }); + new Sortable(root.querySelector('[data-button-list="ckeditor5-toolbar-active-buttons"]'), { + group: { + name: 'toolbar', + put: ['divider', 'available'] + }, + sort: true, + store: { + set: function set(sortable) { + selectedButtons.value = sortable.toArray(); + } + } + }); + var toolbarAvailableButtons = new Sortable(root.querySelector('[data-button-list="ckeditor5-toolbar-available-buttons"]'), { + group: { + name: 'available', + put: ['toolbar'] + }, + sort: false, + onAdd: function onAdd(event) { + if (dividerButtons.find(function (dividerButton) { + return dividerButton.id === event.item.dataset.id; + })) { + var newIndex = event.newIndex; + setTimeout(function () { + document.querySelectorAll('.ckeditor5-toolbar-available__buttons li')[newIndex].remove(); + }); + } + } + }); + new Sortable(root.querySelector('[data-button-list="ckeditor5-toolbar-divider-buttons"]'), { + group: { + name: 'divider', + put: false, + pull: 'clone', + sort: 'false' + } + }); + root.querySelectorAll('[data-drupal-selector="ckeditor5-toolbar-button"]').forEach(function (element) { + var expandButton = function expandButton(event) { + event.currentTarget.querySelectorAll('.ckeditor5-toolbar-button').forEach(function (buttonElement) { + buttonElement.setAttribute('data-expanded', true); + }); + }; + + var retractButton = function retractButton(event) { + event.currentTarget.querySelectorAll('.ckeditor5-toolbar-button').forEach(function (buttonElement) { + buttonElement.setAttribute('data-expanded', false); + }); + }; + + element.addEventListener('mouseenter', expandButton); + element.addEventListener('focus', expandButton); + element.addEventListener('mouseleave', retractButton); + element.addEventListener('blur', retractButton); + element.addEventListener('keyup', function (event) { + var supportedKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown']; + var dir = document.documentElement.dir; + + if (supportedKeys.includes(event.key)) { + if (event.currentTarget.dataset.divider.toLowerCase() === 'true') { + switch (event.key) { + case 'ArrowDown': + { + var announceChange = function announceChange(name) { + Drupal.announce(Drupal.t('Button @name has been copied to the active toolbar.', { + '@name': name + })); + }; + + copyToActiveButtons(selectedButtons, event.currentTarget, announceChange); + root.querySelector('[data-button-list="ckeditor5-toolbar-active-buttons"] li:last-child').focus(); + break; + } + } + } else if (selectedButtons.value.includes(event.currentTarget.dataset.id)) { + var index = Array.from(element.parentElement.children).findIndex(function (child) { + return child === element; + }); + + switch (event.key) { + case 'ArrowLeft': + { + var leftOffset = dir === 'ltr' ? -1 : 1; + moveWithinSelectedButtons(selectedButtons, event.currentTarget, leftOffset); + root.querySelectorAll('[data-button-list="ckeditor5-toolbar-active-buttons"] li')[index + leftOffset].focus(); + break; + } + + case 'ArrowRight': + { + var rightOffset = dir === 'ltr' ? 1 : -1; + moveWithinSelectedButtons(selectedButtons, event.currentTarget, rightOffset); + root.querySelectorAll('[data-button-list="ckeditor5-toolbar-active-buttons"] li')[index + rightOffset].focus(); + break; + } + + case 'ArrowUp': + { + var _announceChange = function _announceChange(name) { + Drupal.announce(Drupal.t('Button @name has been removed from the active toolbar.', { + '@name': name + })); + }; + + removeFromSelectedButtons(selectedButtons, event.currentTarget, _announceChange); + + if (!dividerButtons.find(function (dividerButton) { + return event.currentTarget.dataset.id === dividerButton.id; + })) { + root.querySelector("[data-button-list=\"ckeditor5-toolbar-available-buttons\"] [data-id=\"".concat(event.currentTarget.dataset.id, "\"]")).focus(); + } + + break; + } + } + } else if (toolbarAvailableButtons.toArray().includes(event.currentTarget.dataset.id)) { + switch (event.key) { + case 'ArrowDown': + { + var _announceChange2 = function _announceChange2(name) { + Drupal.announce(Drupal.t('Button @name has been moved to the active toolbar.', { + '@name': name + })); + }; + + addToSelectedButtons(selectedButtons, event.currentTarget, _announceChange2); + root.querySelector('[data-button-list="ckeditor5-toolbar-active-buttons"] li:last-child').focus(); + break; + } + } + } + } + }); + }); + }; + + Drupal.behaviors.ckeditor5Admin = { + attach: function attach(context) { + once('ckeditor5-admin-toolbar', '#ckeditor5-toolbar-app').forEach(function (container) { + var selectedTextarea = context.querySelector('#ckeditor5-toolbar-buttons-selected'); + var available = Object.entries(JSON.parse(context.querySelector('#ckeditor5-toolbar-buttons-available').innerHTML)).map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + name = _ref2[0], + attrs = _ref2[1]; + + return _objectSpread({ + name: name, + id: name + }, attrs); + }); + var dividers = [{ + id: 'divider', + name: '|', + label: Drupal.t('Divider') + }, { + id: 'wrapping', + name: '-', + label: Drupal.t('Wrapping') + }]; + var selected = new Observable(JSON.parse(selectedTextarea.innerHTML).map(function (name) { + return [].concat(dividers, _toConsumableArray(available)).find(function (button) { + return button.name === name; + }).id; + })); + + var mapSelection = function mapSelection(selection) { + return selection.map(function (id) { + return [].concat(dividers, _toConsumableArray(available)).find(function (button) { + return button.id === id; + }).name; + }); + }; + + selected.subscribe(function (selection) { + updateSelectedButtons(mapSelection(selection), selectedTextarea); + render(container, selected, available, dividers); + }); + [context.querySelector('#ckeditor5-toolbar-buttons-available'), context.querySelector('[class*="editor-settings-toolbar-items"]')].filter(function (el) { + return el; + }).forEach(function (el) { + el.classList.add('visually-hidden'); + }); + render(container, selected, available, dividers); + }); + once('safari-focus-fix', document.querySelectorAll('.ckeditor5-toolbar-item')).forEach(function (item) { + item.addEventListener('keydown', function (e) { + var keyCodeDirections = { + 9: 'tab', + 37: 'left', + 38: 'up', + 39: 'right', + 40: 'down' + }; + + if (['tab', 'left', 'up', 'right', 'down'].includes(keyCodeDirections[e.keyCode])) { + var hideTip = false; + var isActive = e.target.closest('[data-button-list="ckeditor5-toolbar-active__buttons"]'); + + if (isActive) { + if (['tab', 'left', 'up', 'right'].includes(keyCodeDirections[e.keyCode])) { + hideTip = true; + } + } else if (['tab', 'down'].includes(keyCodeDirections[e.keyCode])) { + hideTip = true; + } + + if (hideTip) { + e.target.querySelector('[data-expanded]').setAttribute('data-expanded', 'false'); + } + } + }); + }); + + var updateUiStateStorage = function updateUiStateStorage(states) { + var form = document.querySelector('#filter-format-edit-form, #filter-format-add-form'); + var currentStates = form.hasAttribute('data-drupal-ui-state') ? JSON.parse(form.getAttribute('data-drupal-ui-state')) : {}; + form.setAttribute('data-drupal-ui-state', JSON.stringify(_objectSpread(_objectSpread({}, currentStates), states))); + }; + + var getUiStateStorage = function getUiStateStorage(property) { + var form = document.querySelector('#filter-format-edit-form, #filter-format-add-form'); + + if (form === null) { + return; + } + + return form.hasAttribute('data-drupal-ui-state') ? JSON.parse(form.getAttribute('data-drupal-ui-state'))[property] : null; + }; + + once('ui-state-storage', document.querySelector('#filter-format-edit-form, #filter-format-add-form')).forEach(function (form) { + form.setAttribute('data-drupal-ui-state', JSON.stringify({})); + }); + + var maintainActiveVerticalTab = function maintainActiveVerticalTab(verticalTabs) { + var id = verticalTabs.id; + var activeTab = getUiStateStorage("".concat(id, "-active-tab")); + + if (activeTab) { + setTimeout(function () { + document.querySelector(activeTab).click(); + }); + } + + verticalTabs.querySelectorAll('.vertical-tabs__menu').forEach(function (tab) { + tab.addEventListener('click', function (e) { + var state = {}; + var href = e.target.closest('[href]').getAttribute('href').split('--')[0]; + state["".concat(id, "-active-tab")] = "#".concat(id, " [href^='").concat(href, "']"); + updateUiStateStorage(state); + }); + }); + }; + + once('plugin-settings', document.querySelector('#plugin-settings-wrapper')).forEach(maintainActiveVerticalTab); + once('filter-settings', document.querySelector('#filter-settings-wrapper')).forEach(maintainActiveVerticalTab); + var selectedButtons = document.querySelector('#ckeditor5-toolbar-buttons-selected'); + once('textarea-listener', selectedButtons).forEach(function (textarea) { + textarea.addEventListener('change', function (e) { + var buttonName = document.activeElement.getAttribute('data-id'); + + if (!buttonName) { + return; + } + + var focusSelector = ''; + + if (['divider', 'wrapping'].includes(buttonName)) { + var oldConfig = JSON.parse(e.detail.priorValue); + var newConfig = JSON.parse(e.target.innerHTML); + + if (oldConfig.length > newConfig.length) { + for (var item = 0; item < newConfig.length; item++) { + if (newConfig[item] !== oldConfig[item]) { + focusSelector = "[data-button-list=\"ckeditor5-toolbar-active-buttons\"] li:nth-child(".concat(Math.min(item - 1, 0), ")"); + break; + } + } + } else if (oldConfig.length < newConfig.length) { + focusSelector = '[data-button-list="ckeditor5-toolbar-active-buttons"] li:last-child'; + } else { + document.querySelectorAll("[data-button-list=\"ckeditor5-toolbar-active-buttons\"] [data-id='".concat(buttonName, "']")).forEach(function (divider, index) { + if (divider === document.activeElement) { + focusSelector = "".concat(buttonName, "|").concat(index); + } + }); + } + } else { + focusSelector = "[data-id='".concat(buttonName, "']"); + } + + updateUiStateStorage({ + focusSelector: focusSelector + }); + }); + textarea.addEventListener('focus', function () { + var focusSelector = getUiStateStorage('focusSelector'); + + if (focusSelector) { + if (focusSelector.includes('|')) { + var _focusSelector$split = focusSelector.split('|'), + _focusSelector$split2 = _slicedToArray(_focusSelector$split, 2), + buttonName = _focusSelector$split2[0], + count = _focusSelector$split2[1]; + + document.querySelectorAll("[data-button-list=\"ckeditor5-toolbar-active-buttons\"] [data-id='".concat(buttonName, "']")).forEach(function (item, index) { + if (index === parseInt(count, 10)) { + item.focus(); + } + }); + } else { + var toFocus = document.querySelector(focusSelector); + + if (toFocus) { + toFocus.focus(); + } + } + } + }); + }); + } + }; + + Drupal.theme.ckeditor5SelectedButtons = function (_ref3) { + var buttons = _ref3.buttons; + return "\n <ul class=\"ckeditor5-toolbar-tray ckeditor5-toolbar-active__buttons\" data-button-list=\"ckeditor5-toolbar-active-buttons\" role=\"listbox\" aria-orientation=\"horizontal\" aria-labelledby=\"ckeditor5-toolbar-active-buttons-label\">\n ".concat(buttons.map(function (button) { + return Drupal.theme.ckeditor5Button({ + button: button, + listType: 'active' + }); + }).join(''), "\n </ul>\n "); + }; + + Drupal.theme.ckeditor5DividerButtons = function (_ref4) { + var buttons = _ref4.buttons; + return "\n <ul class=\"ckeditor5-toolbar-tray ckeditor5-toolbar-divider__buttons\" data-button-list=\"ckeditor5-toolbar-divider-buttons\" role=\"listbox\" aria-orientation=\"horizontal\" aria-labelledby=\"ckeditor5-toolbar-divider-buttons-label\">\n ".concat(buttons.map(function (button) { + return Drupal.theme.ckeditor5Button({ + button: button, + listType: 'divider' + }); + }).join(''), "\n </ul>\n "); + }; + + Drupal.theme.ckeditor5AvailableButtons = function (_ref5) { + var buttons = _ref5.buttons; + return "\n <ul class=\"ckeditor5-toolbar-tray ckeditor5-toolbar-available__buttons\" data-button-list=\"ckeditor5-toolbar-available-buttons\" role=\"listbox\" aria-orientation=\"horizontal\" aria-labelledby=\"ckeditor5-toolbar-available-buttons-label\">\n ".concat(buttons.map(function (button) { + return Drupal.theme.ckeditor5Button({ + button: button, + listType: 'available' + }); + }).join(''), "\n </ul>\n "); + }; + + Drupal.theme.ckeditor5Button = function (_ref6) { + var _ref6$button = _ref6.button, + label = _ref6$button.label, + id = _ref6$button.id, + listType = _ref6.listType; + var visuallyHiddenLabel = Drupal.t("@listType button @label", { + '@listType': listType !== 'divider' ? listType : 'available', + '@label': label + }); + return "\n <li class=\"ckeditor5-toolbar-item ckeditor5-toolbar-item-".concat(id, "\" role=\"option\" tabindex=\"0\" data-drupal-selector=\"ckeditor5-toolbar-button\" data-id=\"").concat(id, "\" data-label=\"").concat(label, "\" data-divider=\"").concat(listType === 'divider', "\">\n <span class=\"ckeditor5-toolbar-button ckeditor5-toolbar-button-").concat(id, "\">\n <span class=\"visually-hidden\">").concat(visuallyHiddenLabel, ")}</span>\n </span>\n <span class=\"ckeditor5-toolbar-tooltip\" aria-hidden=\"true\">").concat(label, "</span>\n </li>\n "); + }; + + Drupal.theme.ckeditor5Admin = function (_ref7) { + var availableButtons = _ref7.availableButtons, + dividerButtons = _ref7.dividerButtons, + activeToolbar = _ref7.activeToolbar, + helpMessage = _ref7.helpMessage; + return "\n <div aria-live=\"polite\" data-drupal-selector=\"ckeditor5-admin-help-message\">\n <p>".concat(helpMessage.join('</p><p>'), "</p>\n </div>\n <div class=\"ckeditor5-toolbar-disabled\">\n <div class=\"ckeditor5-toolbar-available\">\n <label id=\"ckeditor5-toolbar-available-buttons-label\">").concat(Drupal.t('Available buttons'), "</label>\n ").concat(availableButtons, "\n </div>\n <div class=\"ckeditor5-toolbar-divider\">\n <label id=\"ckeditor5-toolbar-divider-buttons-label\">").concat(Drupal.t('Button divider'), "</label>\n ").concat(dividerButtons, "\n </div>\n </div>\n <div class=\"ckeditor5-toolbar-active\">\n <label id=\"ckeditor5-toolbar-active-buttons-label\">").concat(Drupal.t('Active toolbar'), "</label>\n ").concat(activeToolbar, "\n </div>\n "); + }; + + var originalFilterStatusAttach = Drupal.behaviors.filterStatus.attach; + + Drupal.behaviors.filterStatus.attach = function (context, settings) { + var filterStatusCheckboxes = document.querySelectorAll('#filters-status-wrapper input.form-checkbox'); + once.remove('filter-status', filterStatusCheckboxes); + $(filterStatusCheckboxes).off('click.filterUpdate'); + originalFilterStatusAttach(context, settings); + }; + + Drupal.behaviors.tabErrorsVisible = { + attach: function attach(context) { + context.querySelectorAll('details .form-item .error').forEach(function (item) { + var details = item.closest('details'); + + if (details.style.display === 'none') { + var tabSelect = document.querySelector("[href='#".concat(details.id, "']")); + + if (tabSelect) { + tabSelect.click(); + } + } + }); + } + }; +})(Drupal, drupalSettings, jQuery, JSON, once, Sortable); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/ckeditor5.es6.js b/core/modules/ckeditor5/js/ckeditor5.es6.js new file mode 100644 index 000000000000..5f97a7b07965 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5.es6.js @@ -0,0 +1,560 @@ +/** + * @file + * CKEditor 5 implementation of {@link Drupal.editors} API. + */ +/* global CKEditor5 */ +((Drupal, debounce, CKEditor5, $) => { + /** + * The CKEDITOR instances. + * + * @type {Map} + */ + Drupal.CKEditor5Instances = new Map(); + + /** + * The callback functions. + * + * @type {Map} + */ + const callbacks = new Map(); + + /** + * List of element ids with the required attribute. + * + * @type {Set} + */ + const required = new Set(); + + function findFunc(scope, name) { + if (!scope) { + return null; + } + const parts = name.includes('.') ? name.split('.') : name; + + if (parts.length > 1) { + return findFunc(scope[parts.shift()], parts); + } + return typeof scope[parts[0]] === 'function' ? scope[parts[0]] : null; + } + + function buildFunc(config) { + const { func } = config; + // Assuming a global object. + const fn = findFunc(window, func.name); + if (typeof fn === 'function') { + const result = func.invoke ? fn(...func.args) : fn; + return result; + } + return null; + } + + /** + * Converts a string representing regexp to a RegExp object. + * + * @param {Object} config + * An object containing configuration. + * @param {string} config.pattern + * The regexp pattern that is used to create the RegExp object. + * + * @return {RegExp} + * Regexp object built from the string regexp. + */ + function buildRegexp(config) { + const { pattern } = config.regexp; + + const main = pattern.match(/\/(.+)\/.*/)[1]; + const options = pattern.match(/\/.+\/(.*)/)[1]; + + return new RegExp(main, options); + } + + /** + * Casts configuration items to correct types. + * + * @param {Object} config + * The config object. + * @return {Object} + * The config object with items transformed to correct type. + */ + function processConfig(config) { + /** + * Processes an array in config recursively. + * + * @param {Array} config + * An array that should be processed recursively. + * @return {Array} + * An array that has been processed recursively. + */ + function processArray(config) { + return config.map((item) => { + if (typeof item === 'object') { + return processConfig(item); + } + + return item; + }); + } + + return Object.entries(config).reduce((processed, [key, value]) => { + if (typeof value === 'object') { + if (value.hasOwnProperty('func')) { + processed[key] = buildFunc(value); + } else if (value.hasOwnProperty('regexp')) { + processed[key] = buildRegexp(value); + } else if (Array.isArray(value)) { + processed[key] = processArray(value); + } else { + processed[key] = processConfig(value); + } + } else { + processed[key] = value; + } + + return processed; + }, {}); + } + + /** + * Set an id to a data-attribute for registering this element instance. + * + * @param {Element} element + * An element that should receive unique ID. + * + * @return {string} + * The id to use for this element. + */ + const setElementId = (element) => { + const id = Math.random().toString().slice(2, 9); + element.setAttribute('data-ckeditor5-id', id); + + return id; + }; + + /** + * Return a unique selector for the element. + * + * @param {HTMLElement} element + * An element which unique ID should be retrieved. + * + * @return {string} + * The id to use for this element. + */ + const getElementId = (element) => element.getAttribute('data-ckeditor5-id'); + + /** + * Select CKEditor5 plugin classes to include. + * + * Found in the CKEditor5 global js object as {package.Class}. + * + * @param {Array} plugins + * List of package and Class name of plugins + * + * @return {Array} + * List of JavaScript Classes to add in the extraPlugins property of config. + */ + function selectPlugins(plugins) { + return plugins.map((pluginDefinition) => { + const [build, name] = pluginDefinition.split('.'); + if (CKEditor5[build] && CKEditor5[build][name]) { + return CKEditor5[build][name]; + } + + // eslint-disable-next-line no-console + console.warn(`Failed to load ${build} - ${name}`); + return null; + }); + } + + /** + * Adds CSS to ensure proper styling of CKEditor 5 inside off-canvas dialogs. + * + * @param {HTMLElement} element + * The element the editor is attached to. + */ + const offCanvasCss = (element) => { + element.parentNode.setAttribute('data-drupal-ck-style-fence', true); + + // Only proceed if the styles haven't been added yet. + if (!document.querySelector('#ckeditor5-off-canvas-reset')) { + const prefix = `#drupal-off-canvas [data-drupal-ck-style-fence]`; + let existingCss = ''; + + // Find every existing style that doesn't come from off-canvas resets and + // copy them to new styles with a prefix targeting CKEditor inside an + // off-canvas dialog. + [...document.styleSheets].forEach((sheet) => { + if ( + !sheet.href || + (sheet.href && sheet.href.indexOf('off-canvas') === -1) + ) { + // This is wrapped in a try/catch as Chromium browsers will fail if + // the stylesheet was provided via a CORS request. + // @see https://bugs.chromium.org/p/chromium/issues/detail?id=775525 + try { + const rules = sheet.cssRules; + [...rules].forEach((rule) => { + let { cssText } = rule; + const selector = rule.cssText.split('{')[0]; + + // Prefix all selectors added after a comma. + cssText = cssText.replace( + selector, + selector.replace(/,/g, `, ${prefix}`), + ); + + // When adding to existingCss, prefix the first selector as well. + existingCss += `${prefix} ${cssText}`; + }); + } catch (e) { + // eslint-disable-next-line no-console + console.warn( + `Stylesheet ${sheet.href} not included in CKEditor reset due to the browser's CORS policy.`, + ); + } + } + }); + + // Additional styles that need to be explicity added in addition to the + // prefixed versions of existing css in `existingCss`. + const addedCss = [ + `${prefix} .ck.ck-content {display:block;min-height:5rem;}`, + `${prefix} .ck.ck-content * {display:initial;background:initial;color:initial;padding:initial;}`, + `${prefix} .ck.ck-content li {display:list-item}`, + `${prefix} .ck.ck-content ol li {list-style-type: decimal}`, + `${prefix} .ck[contenteditable], ${prefix} .ck[contenteditable] * {-webkit-user-modify: read-write;-moz-user-modify: read-write;}`, + ]; + + // Styles to ensure block elements are displayed as such inside + // off-canvas dialogs. These are all element types that are styled with + // ` all: initial;` in the off-canvas reset that should default to being + // displayed as blocks within CKEditor. + // @see core/misc/dialog/off-canvas.reset.pcss.css + const blockSelectors = [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'p', + 'ol', + 'ul', + 'address', + 'article', + 'aside', + 'blockquote', + 'body', + 'dd', + 'div', + 'dl', + 'dt', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'header', + 'hgroup', + 'hr', + 'html', + 'legend', + 'main', + 'menu', + 'pre', + 'section', + 'xmp', + ] + .map((blockElement) => `${prefix} .ck.ck-content ${blockElement}`) + .join(', \n'); + const blockCss = `${blockSelectors} { display: block; }`; + + const prefixedCss = [...addedCss, existingCss, blockCss].join('\n'); + + // Create a new style tag with the prefixed styles added above. + const offCanvasCss = document.createElement('style'); + offCanvasCss.innerHTML = prefixedCss; + offCanvasCss.setAttribute('id', 'ckeditor5-off-canvas-reset'); + document.body.appendChild(offCanvasCss); + } + }; + + /** + * @namespace + */ + Drupal.editors.ckeditor5 = { + /** + * Editor attach callback. + * + * @param {HTMLElement} element + * The element to attach the editor to. + * @param {string} format + * The text format for the editor. + */ + attach(element, format) { + const { editorClassic } = CKEditor5; + const { + toolbar, + plugins, + config: pluginConfig, + language, + } = format.editorSettings; + const extraPlugins = selectPlugins(plugins); + + const config = { + extraPlugins, + toolbar, + language, + ...processConfig(pluginConfig), + }; + // Set the id immediately so that it is available when onChange is called. + const id = setElementId(element); + const { ClassicEditor } = editorClassic; + + ClassicEditor.create(element, config) + .then((editor) => { + // Save a reference to the initialized instance. + Drupal.CKEditor5Instances.set(id, editor); + + // CKEditor4 had a feature to remove the required attribute + // see: https://www.drupal.org/project/drupal/issues/1954968 + if (element.hasAttribute('required')) { + required.add(id); + element.removeAttribute('required'); + } + + editor.model.document.on('change:data', () => { + const callback = callbacks.get(id); + if (callback) { + if (editor.plugins.has('SourceEditing')) { + // If the change:data is being called while in source editing + // mode, it means that the form is being submitted. To avoid + // race conditions, in this case the callback gets called + // without decorating the callback with debounce. + // @see https://www.drupal.org/i/3229174 + // @see Drupal.editorDetach + if (editor.plugins.get('SourceEditing').isSourceEditingMode) { + callback(); + return; + } + } + + // Marks the field as changed. + // @see Drupal.editorAttach + debounce(callback, 400)(); + } + }); + + const isOffCanvas = element.closest('#drupal-off-canvas'); + + if (isOffCanvas) { + offCanvasCss(element); + } + }) + .catch((error) => { + // eslint-disable-next-line no-console + console.error(error); + }); + }, + + /** + * Editor detach callback. + * + * @param {HTMLElement} element + * The element to detach the editor from. + * @param {string} format + * The text format used for the editor. + * @param {string} trigger + * The event trigger for the detach. + */ + detach(element, format, trigger) { + const id = getElementId(element); + const editor = Drupal.CKEditor5Instances.get(id); + if (!editor) { + return; + } + if (trigger === 'serialize') { + editor.updateSourceElement(); + } else { + element.removeAttribute('contentEditable'); + + // Prepare variables that will be used when discarding Quickedit changes. + let textElement = null; + let originalValue = null; + const usingQuickEdit = (((Drupal || {}).quickedit || {}).editors || {}) + .editor; + if (usingQuickEdit) { + // The revert() function in QuickEdit's text editor does not work with + // CKEditor 5, as it is triggered before CKEditor 5 is fully + // destroyed. This function is overridden so the functionality it + // provides can happen after the CKEditor destroy() promise is + // fulfilled. + // This pulls the necessary values from the QuickEdit Backbone Model + // before it is destroyed, so they can be used by + // `editor.destroy().then()` to perform the expected revert. + Drupal.quickedit.editors.editor.prototype.revert = + function revertQuickeditChanges() { + textElement = this.$textElement[0]; + originalValue = this.model.get('originalValue'); + }; + } + + editor + .destroy() + .then(() => { + // If textElement and originalValue are not null, a QuickEdit + // revert has been requested. Perform the revert here as it + // can't happen until the CKEditor instance is destroyed. + if (textElement && originalValue) { + textElement.innerHTML = originalValue; + } + + // Clean up stored references. + Drupal.CKEditor5Instances.delete(id); + callbacks.delete(id); + if (required.has(id)) { + element.setAttribute('required', 'required'); + required.delete(id); + } + }) + .catch((error) => { + // eslint-disable-next-line no-console + console.error(error); + }); + } + }, + + /** + * Registers a callback which CKEditor5 will call on change:data event. + * + * @param {HTMLElement} element + * The element where the change occurred. + * @param {function} callback + * Callback called with the value of the editor. + */ + onChange(element, callback) { + callbacks.set(getElementId(element), callback); + }, + + /** + * Attaches an inline editor to a DOM element. + * + * @param {HTMLElement} element + * The element to attach the editor to. + * @param {object} format + * The text format used in the editor. + * @param {string} [mainToolbarId] + * The id attribute for the main editor toolbar, if any. + * + * @see Drupal.quickedit.editors.editor + */ + attachInlineEditor(element, format, mainToolbarId) { + const { editorDecoupled } = CKEditor5; + const { + toolbar, + plugins, + config: pluginConfig, + language, + } = format.editorSettings; + const extraPlugins = selectPlugins(plugins); + const config = { + extraPlugins, + toolbar, + language, + ...processConfig(pluginConfig), + }; + const id = setElementId(element); + const { DecoupledEditor } = editorDecoupled; + + DecoupledEditor.create(element, config) + .then((editor) => { + Drupal.CKEditor5Instances.set(id, editor); + const toolbar = document.getElementById(mainToolbarId); + toolbar.appendChild(editor.ui.view.toolbar.element); + editor.model.document.on('change:data', () => { + const callback = callbacks.get(id); + if (callback) { + // Quick Edit requires the current data to update EditorModel. + // @see Drupal.quickedit.editors.editor + debounce(callback, 400)(editor.getData()); + } + }); + }) + .catch((error) => { + // eslint-disable-next-line no-console + console.error(error); + }); + }, + }; + + Drupal.ckeditor5 = { + /** + * Variable storing the current dialog's save callback. + * + * @type {?function} + */ + saveCallback: null, + + openDialog(url, saveCallback, dialogSettings) { + // Add a consistent dialog class. + const classes = dialogSettings.dialogClass + ? dialogSettings.dialogClass.split(' ') + : []; + classes.push('ui-dialog--narrow'); + dialogSettings.dialogClass = classes.join(' '); + dialogSettings.autoResize = + window.matchMedia('(min-width: 600px)').matches; + dialogSettings.width = 'auto'; + + const $content = $( + `<div class="ckeditor5-dialog-loading"><span style="top: -40px;" class="ckeditor5-dialog-loading-link">${Drupal.t( + 'Loading...', + )}</span></div>`, + ); + $content.appendTo($('body')); + + const ckeditorAjaxDialog = Drupal.ajax({ + dialog: dialogSettings, + dialogType: 'modal', + selector: '.ckeditor5-dialog-loading-link', + url, + progress: { type: 'throbber' }, + submit: { + editor_object: {}, + }, + }); + ckeditorAjaxDialog.execute(); + + // After a short delay, show "Loading…" message. + window.setTimeout(() => { + $content.find('span').animate({ top: '0px' }); + }, 1000); + + // Store the save callback to be executed when this dialog is closed. + Drupal.ckeditor5.saveCallback = saveCallback; + }, + }; + + // Respond to new dialogs that are opened by CKEditor, closing the AJAX loader. + $(window).on('dialog:beforecreate', () => { + $('.ckeditor5-dialog-loading').animate( + { top: '-40px' }, + function removeDialogLoading() { + $(this).remove(); + }, + ); + }); + + // Respond to dialogs that are saved, sending data back to CKEditor. + $(window).on('editor:dialogsave', (e, values) => { + if (Drupal.ckeditor5.saveCallback) { + Drupal.ckeditor5.saveCallback(values); + } + }); + + // Respond to dialogs that are closed, removing the current save handler. + $(window).on('dialog:afterclose', () => { + if (Drupal.ckeditor5.saveCallback) { + Drupal.ckeditor5.saveCallback = null; + } + }); +})(Drupal, Drupal.debounce, CKEditor5, jQuery); diff --git a/core/modules/ckeditor5/js/ckeditor5.filter.admin.es6.js b/core/modules/ckeditor5/js/ckeditor5.filter.admin.es6.js new file mode 100644 index 000000000000..0e837f7f8326 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5.filter.admin.es6.js @@ -0,0 +1,156 @@ +/** + * @file + * Provides Text Editor UI improvements specific to CKEditor 5. + */ + +((Drupal, once) => { + Drupal.behaviors.allowedTagsListener = { + attach: function attach(context) { + once( + 'allowed-tags-listener', + context.querySelector( + '[data-drupal-selector="edit-filters-filter-html-settings-allowed-html"]', + ), + ).forEach((textarea) => { + const editorSelect = document.querySelector( + '[data-drupal-selector="edit-editor-editor"]', + ); + const filterCheckbox = document.querySelector( + '[data-drupal-selector="edit-filters-filter-html-status"]', + ); + const formSubmit = document.querySelector( + '[data-drupal-selector="edit-actions-submit"]', + ); + const wrapper = textarea.closest('div'); + + const resetChanges = () => { + const updateButtonContainer = document.querySelector( + '[data-ckeditor5-allowed-tags-info]', + ); + if (updateButtonContainer) { + updateButtonContainer.remove(); + } + + const allowedTagsDisabledHelp = document.querySelector( + '[data-ckeditor5-allowed-tags-disabled-help]', + ); + if (allowedTagsDisabledHelp) { + allowedTagsDisabledHelp.remove(); + } + + formSubmit.removeAttribute('disabled'); + wrapper.classList.remove('ckeditor5-filter-attention'); + }; + + resetChanges(); + + const addAllowedTagsUpdateButton = () => { + resetChanges(); + + if ( + editorSelect.value === 'ckeditor5' && + filterCheckbox && + filterCheckbox.checked + ) { + if (!textarea.hasAttribute('readonly')) { + wrapper.classList.add('ckeditor5-filter-attention'); + + const container = document.createElement('div'); + container.setAttribute('data-ckeditor5-allowed-tags-info', true); + const description = document.createElement('p'); + + description.innerText = Drupal.t( + 'Switching to CKEditor 5 requires, at minimum, the tags "<p> <br>". After switching to CKEditor 5, this field will be read only, and will be updated based on which CKEditor 5 plugins are enabled. When switching to CKEditor 5 from an existing text format with content, we recommend documenting what tags are in use and then enabling the CKEditor 5 tags that support them.', + ); + + const updateButton = document.createElement('button'); + updateButton.setAttribute( + 'name', + 'update-ckeditor5-allowed-tags', + ); + updateButton.innerText = Drupal.t( + 'Apply changes to allowed tags.', + ); + updateButton.addEventListener('click', () => { + editorSelect.dispatchEvent(new CustomEvent('change')); + setTimeout(() => { + resetChanges(); + }); + }); + + container.appendChild(description); + container.appendChild(updateButton); + + wrapper.appendChild(container); + + // In this very specific use case, submitting the filter form must + // be prevented. + // - CKEditor 5 is the selected editor, but it's not yet accepted + // by the form because it's not passing the validation restraint + // requiring CKEditor 5 compatible "Allowed Tags". This validator, + // by necessity fires before CKEditor 5 is registered with the + // form. + // - The registering of an editor with the form typically occurs + // when a change + formSubmit.setAttribute('disabled', true); + const formSubmitHelp = document.createElement('p'); + formSubmitHelp.setAttribute( + 'data-ckeditor5-allowed-tags-disabled-help', + true, + ); + formSubmitHelp.textContent = Drupal.t( + 'This form is not submittable when the editor is set to CKEditor 5 unless the "Limit allowed HTML tags and correct faulty HTML" filter\'s "Allowed HTML tags" field includes the tags required by CKEDitor 5', + ); + formSubmit.parentNode.append(formSubmitHelp); + } + } + }; + editorSelect.addEventListener('change', addAllowedTagsUpdateButton); + filterCheckbox.addEventListener('change', addAllowedTagsUpdateButton); + }); + }, + }; + + // Copy the function that is about to be overridden so it can be invoked + // inside the override. + const originalAjaxEventResponse = Drupal.Ajax.prototype.eventResponse; + + /** + * Overrides Ajax.eventResponse with CKEditor 5 specific customizations. + * + * This is the handler for events that will ultimately trigger an AJAX + * response. It is overridden here to provide additional logic to prevent + * specific CKEditor 5-related events from triggering that AJAX response + * unless certain criteria are met. + */ + Drupal.Ajax.prototype.eventResponse = function ckeditor5AjaxEventResponse( + ...args + ) { + // There are AJAX callbacks that should only be triggered if the editor + // <select> is set to 'ckeditor5'. They should be active when the text + // format is using CKEditor 5 and when a user is attempting to switch to + // CKEditor 5 but is prevented from doing so by validation. Triggering these + // AJAX callback when trying to switch to CKEditor 5 but blocked by + // validation benefits the user as they get real time feedback as they + // configure the text format to be CKEditor 5 compatible. This spares them + // from having to submit the form multiple times in order to determine if + // their settings are compatible. + // This validation stage is also why the AJAX callbacks can't be + // conditionally added server side, as validation errors interrupt the form + // rebuild before the AJAX callbacks could be added via form_alter. + if (this.ckeditor5_only) { + // The ckeditor5_only property is added to form elements that should only + // trigger AJAX callbacks when the editor <select> value is 'ckeditor5'. + // These callbacks provide real-time validation that should be present for + // both text formats using CKEditor 5 and text formats in the process of + // switching to CKEditor 5, but prevented from doing so by validation. + if ( + this.$form[0].querySelector('#edit-editor-editor').value !== 'ckeditor5' + ) { + return; + } + } + + originalAjaxEventResponse.apply(this, args); + }; +})(Drupal, once); diff --git a/core/modules/ckeditor5/js/ckeditor5.filter.admin.js b/core/modules/ckeditor5/js/ckeditor5.filter.admin.js new file mode 100644 index 000000000000..2e8a0a0d970d --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5.filter.admin.js @@ -0,0 +1,87 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal, once) { + Drupal.behaviors.allowedTagsListener = { + attach: function attach(context) { + once('allowed-tags-listener', context.querySelector('[data-drupal-selector="edit-filters-filter-html-settings-allowed-html"]')).forEach(function (textarea) { + var editorSelect = document.querySelector('[data-drupal-selector="edit-editor-editor"]'); + var filterCheckbox = document.querySelector('[data-drupal-selector="edit-filters-filter-html-status"]'); + var formSubmit = document.querySelector('[data-drupal-selector="edit-actions-submit"]'); + var wrapper = textarea.closest('div'); + + var resetChanges = function resetChanges() { + var updateButtonContainer = document.querySelector('[data-ckeditor5-allowed-tags-info]'); + + if (updateButtonContainer) { + updateButtonContainer.remove(); + } + + var allowedTagsDisabledHelp = document.querySelector('[data-ckeditor5-allowed-tags-disabled-help]'); + + if (allowedTagsDisabledHelp) { + allowedTagsDisabledHelp.remove(); + } + + formSubmit.removeAttribute('disabled'); + wrapper.classList.remove('ckeditor5-filter-attention'); + }; + + resetChanges(); + + var addAllowedTagsUpdateButton = function addAllowedTagsUpdateButton() { + resetChanges(); + + if (editorSelect.value === 'ckeditor5' && filterCheckbox && filterCheckbox.checked) { + if (!textarea.hasAttribute('readonly')) { + wrapper.classList.add('ckeditor5-filter-attention'); + var container = document.createElement('div'); + container.setAttribute('data-ckeditor5-allowed-tags-info', true); + var description = document.createElement('p'); + description.innerText = Drupal.t('Switching to CKEditor 5 requires, at minimum, the tags "<p> <br>". After switching to CKEditor 5, this field will be read only, and will be updated based on which CKEditor 5 plugins are enabled. When switching to CKEditor 5 from an existing text format with content, we recommend documenting what tags are in use and then enabling the CKEditor 5 tags that support them.'); + var updateButton = document.createElement('button'); + updateButton.setAttribute('name', 'update-ckeditor5-allowed-tags'); + updateButton.innerText = Drupal.t('Apply changes to allowed tags.'); + updateButton.addEventListener('click', function () { + editorSelect.dispatchEvent(new CustomEvent('change')); + setTimeout(function () { + resetChanges(); + }); + }); + container.appendChild(description); + container.appendChild(updateButton); + wrapper.appendChild(container); + formSubmit.setAttribute('disabled', true); + var formSubmitHelp = document.createElement('p'); + formSubmitHelp.setAttribute('data-ckeditor5-allowed-tags-disabled-help', true); + formSubmitHelp.textContent = Drupal.t('This form is not submittable when the editor is set to CKEditor 5 unless the "Limit allowed HTML tags and correct faulty HTML" filter\'s "Allowed HTML tags" field includes the tags required by CKEDitor 5'); + formSubmit.parentNode.append(formSubmitHelp); + } + } + }; + + editorSelect.addEventListener('change', addAllowedTagsUpdateButton); + filterCheckbox.addEventListener('change', addAllowedTagsUpdateButton); + }); + } + }; + var originalAjaxEventResponse = Drupal.Ajax.prototype.eventResponse; + + Drupal.Ajax.prototype.eventResponse = function ckeditor5AjaxEventResponse() { + if (this.ckeditor5_only) { + if (this.$form[0].querySelector('#edit-editor-editor').value !== 'ckeditor5') { + return; + } + } + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + originalAjaxEventResponse.apply(this, args); + }; +})(Drupal, once); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/ckeditor5.js b/core/modules/ckeditor5/js/ckeditor5.js new file mode 100644 index 000000000000..e216c1228f43 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5.js @@ -0,0 +1,348 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +(function (Drupal, debounce, CKEditor5, $) { + Drupal.CKEditor5Instances = new Map(); + var callbacks = new Map(); + var required = new Set(); + + function findFunc(scope, name) { + if (!scope) { + return null; + } + + var parts = name.includes('.') ? name.split('.') : name; + + if (parts.length > 1) { + return findFunc(scope[parts.shift()], parts); + } + + return typeof scope[parts[0]] === 'function' ? scope[parts[0]] : null; + } + + function buildFunc(config) { + var func = config.func; + var fn = findFunc(window, func.name); + + if (typeof fn === 'function') { + var result = func.invoke ? fn.apply(void 0, _toConsumableArray(func.args)) : fn; + return result; + } + + return null; + } + + function buildRegexp(config) { + var pattern = config.regexp.pattern; + var main = pattern.match(/\/(.+)\/.*/)[1]; + var options = pattern.match(/\/.+\/(.*)/)[1]; + return new RegExp(main, options); + } + + function processConfig(config) { + function processArray(config) { + return config.map(function (item) { + if (_typeof(item) === 'object') { + return processConfig(item); + } + + return item; + }); + } + + return Object.entries(config).reduce(function (processed, _ref) { + var _ref2 = _slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + + if (_typeof(value) === 'object') { + if (value.hasOwnProperty('func')) { + processed[key] = buildFunc(value); + } else if (value.hasOwnProperty('regexp')) { + processed[key] = buildRegexp(value); + } else if (Array.isArray(value)) { + processed[key] = processArray(value); + } else { + processed[key] = processConfig(value); + } + } else { + processed[key] = value; + } + + return processed; + }, {}); + } + + var setElementId = function setElementId(element) { + var id = Math.random().toString().slice(2, 9); + element.setAttribute('data-ckeditor5-id', id); + return id; + }; + + var getElementId = function getElementId(element) { + return element.getAttribute('data-ckeditor5-id'); + }; + + function selectPlugins(plugins) { + return plugins.map(function (pluginDefinition) { + var _pluginDefinition$spl = pluginDefinition.split('.'), + _pluginDefinition$spl2 = _slicedToArray(_pluginDefinition$spl, 2), + build = _pluginDefinition$spl2[0], + name = _pluginDefinition$spl2[1]; + + if (CKEditor5[build] && CKEditor5[build][name]) { + return CKEditor5[build][name]; + } + + console.warn("Failed to load ".concat(build, " - ").concat(name)); + return null; + }); + } + + var offCanvasCss = function offCanvasCss(element) { + element.parentNode.setAttribute('data-drupal-ck-style-fence', true); + + if (!document.querySelector('#ckeditor5-off-canvas-reset')) { + var prefix = "#drupal-off-canvas [data-drupal-ck-style-fence]"; + var existingCss = ''; + + _toConsumableArray(document.styleSheets).forEach(function (sheet) { + if (!sheet.href || sheet.href && sheet.href.indexOf('off-canvas') === -1) { + try { + var rules = sheet.cssRules; + + _toConsumableArray(rules).forEach(function (rule) { + var cssText = rule.cssText; + var selector = rule.cssText.split('{')[0]; + cssText = cssText.replace(selector, selector.replace(/,/g, ", ".concat(prefix))); + existingCss += "".concat(prefix, " ").concat(cssText); + }); + } catch (e) { + console.warn("Stylesheet ".concat(sheet.href, " not included in CKEditor reset due to the browser's CORS policy.")); + } + } + }); + + var addedCss = ["".concat(prefix, " .ck.ck-content {display:block;min-height:5rem;}"), "".concat(prefix, " .ck.ck-content * {display:initial;background:initial;color:initial;padding:initial;}"), "".concat(prefix, " .ck.ck-content li {display:list-item}"), "".concat(prefix, " .ck.ck-content ol li {list-style-type: decimal}"), "".concat(prefix, " .ck[contenteditable], ").concat(prefix, " .ck[contenteditable] * {-webkit-user-modify: read-write;-moz-user-modify: read-write;}")]; + var blockSelectors = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'ol', 'ul', 'address', 'article', 'aside', 'blockquote', 'body', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'header', 'hgroup', 'hr', 'html', 'legend', 'main', 'menu', 'pre', 'section', 'xmp'].map(function (blockElement) { + return "".concat(prefix, " .ck.ck-content ").concat(blockElement); + }).join(', \n'); + var blockCss = "".concat(blockSelectors, " { display: block; }"); + var prefixedCss = [].concat(addedCss, [existingCss, blockCss]).join('\n'); + + var _offCanvasCss = document.createElement('style'); + + _offCanvasCss.innerHTML = prefixedCss; + + _offCanvasCss.setAttribute('id', 'ckeditor5-off-canvas-reset'); + + document.body.appendChild(_offCanvasCss); + } + }; + + Drupal.editors.ckeditor5 = { + attach: function attach(element, format) { + var editorClassic = CKEditor5.editorClassic; + var _format$editorSetting = format.editorSettings, + toolbar = _format$editorSetting.toolbar, + plugins = _format$editorSetting.plugins, + pluginConfig = _format$editorSetting.config, + language = _format$editorSetting.language; + var extraPlugins = selectPlugins(plugins); + + var config = _objectSpread({ + extraPlugins: extraPlugins, + toolbar: toolbar, + language: language + }, processConfig(pluginConfig)); + + var id = setElementId(element); + var ClassicEditor = editorClassic.ClassicEditor; + ClassicEditor.create(element, config).then(function (editor) { + Drupal.CKEditor5Instances.set(id, editor); + + if (element.hasAttribute('required')) { + required.add(id); + element.removeAttribute('required'); + } + + editor.model.document.on('change:data', function () { + var callback = callbacks.get(id); + + if (callback) { + if (editor.plugins.has('SourceEditing')) { + if (editor.plugins.get('SourceEditing').isSourceEditingMode) { + callback(); + return; + } + } + + debounce(callback, 400)(); + } + }); + var isOffCanvas = element.closest('#drupal-off-canvas'); + + if (isOffCanvas) { + offCanvasCss(element); + } + }).catch(function (error) { + console.error(error); + }); + }, + detach: function detach(element, format, trigger) { + var id = getElementId(element); + var editor = Drupal.CKEditor5Instances.get(id); + + if (!editor) { + return; + } + + if (trigger === 'serialize') { + editor.updateSourceElement(); + } else { + element.removeAttribute('contentEditable'); + var textElement = null; + var originalValue = null; + var usingQuickEdit = (((Drupal || {}).quickedit || {}).editors || {}).editor; + + if (usingQuickEdit) { + Drupal.quickedit.editors.editor.prototype.revert = function revertQuickeditChanges() { + textElement = this.$textElement[0]; + originalValue = this.model.get('originalValue'); + }; + } + + editor.destroy().then(function () { + if (textElement && originalValue) { + textElement.innerHTML = originalValue; + } + + Drupal.CKEditor5Instances.delete(id); + callbacks.delete(id); + + if (required.has(id)) { + element.setAttribute('required', 'required'); + required.delete(id); + } + }).catch(function (error) { + console.error(error); + }); + } + }, + onChange: function onChange(element, callback) { + callbacks.set(getElementId(element), callback); + }, + attachInlineEditor: function attachInlineEditor(element, format, mainToolbarId) { + var editorDecoupled = CKEditor5.editorDecoupled; + var _format$editorSetting2 = format.editorSettings, + toolbar = _format$editorSetting2.toolbar, + plugins = _format$editorSetting2.plugins, + pluginConfig = _format$editorSetting2.config, + language = _format$editorSetting2.language; + var extraPlugins = selectPlugins(plugins); + + var config = _objectSpread({ + extraPlugins: extraPlugins, + toolbar: toolbar, + language: language + }, processConfig(pluginConfig)); + + var id = setElementId(element); + var DecoupledEditor = editorDecoupled.DecoupledEditor; + DecoupledEditor.create(element, config).then(function (editor) { + Drupal.CKEditor5Instances.set(id, editor); + var toolbar = document.getElementById(mainToolbarId); + toolbar.appendChild(editor.ui.view.toolbar.element); + editor.model.document.on('change:data', function () { + var callback = callbacks.get(id); + + if (callback) { + debounce(callback, 400)(editor.getData()); + } + }); + }).catch(function (error) { + console.error(error); + }); + } + }; + Drupal.ckeditor5 = { + saveCallback: null, + openDialog: function openDialog(url, saveCallback, dialogSettings) { + var classes = dialogSettings.dialogClass ? dialogSettings.dialogClass.split(' ') : []; + classes.push('ui-dialog--narrow'); + dialogSettings.dialogClass = classes.join(' '); + dialogSettings.autoResize = window.matchMedia('(min-width: 600px)').matches; + dialogSettings.width = 'auto'; + var $content = $("<div class=\"ckeditor5-dialog-loading\"><span style=\"top: -40px;\" class=\"ckeditor5-dialog-loading-link\">".concat(Drupal.t('Loading...'), "</span></div>")); + $content.appendTo($('body')); + var ckeditorAjaxDialog = Drupal.ajax({ + dialog: dialogSettings, + dialogType: 'modal', + selector: '.ckeditor5-dialog-loading-link', + url: url, + progress: { + type: 'throbber' + }, + submit: { + editor_object: {} + } + }); + ckeditorAjaxDialog.execute(); + window.setTimeout(function () { + $content.find('span').animate({ + top: '0px' + }); + }, 1000); + Drupal.ckeditor5.saveCallback = saveCallback; + } + }; + $(window).on('dialog:beforecreate', function () { + $('.ckeditor5-dialog-loading').animate({ + top: '-40px' + }, function removeDialogLoading() { + $(this).remove(); + }); + }); + $(window).on('editor:dialogsave', function (e, values) { + if (Drupal.ckeditor5.saveCallback) { + Drupal.ckeditor5.saveCallback(values); + } + }); + $(window).on('dialog:afterclose', function () { + if (Drupal.ckeditor5.saveCallback) { + Drupal.ckeditor5.saveCallback = null; + } + }); +})(Drupal, Drupal.debounce, CKEditor5, jQuery); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/drupalemphasis.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/drupalemphasis.js new file mode 100644 index 000000000000..8fc5bab54230 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/drupalemphasis.js @@ -0,0 +1,26 @@ +/* eslint-disable import/no-extraneous-dependencies */ +// cspell:ignore drupalemphasisediting + +import { Plugin } from 'ckeditor5/src/core'; +import DrupalEmphasisEditing from './drupalemphasisediting'; + +/** + * @internal + */ +class DrupalEmphasis extends Plugin { + /** + * @inheritdoc + */ + static get requires() { + return [DrupalEmphasisEditing]; + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalEmphasis'; + } +} + +export default DrupalEmphasis; diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/drupalemphasisediting.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/drupalemphasisediting.js new file mode 100644 index 000000000000..aba92b33e8fc --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/drupalemphasisediting.js @@ -0,0 +1,30 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { Plugin } from 'ckeditor5/src/core'; + +/** + * @internal + */ +/** + * Converts italic text into em. + */ +class DrupalEmphasisEditing extends Plugin { + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalEmphasisEditing'; + } + + /** + * @inheritdoc + */ + init() { + this.editor.conversion.for('downcast').attributeToElement({ + model: 'italic', + view: 'em', + converterPriority: 'high', + }); + } +} + +export default DrupalEmphasisEditing; diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/index.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/index.js new file mode 100644 index 000000000000..b557f9d2ee59 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalEmphasis/src/index.js @@ -0,0 +1,10 @@ +// cspell:ignore drupalemphasis + +import DrupalEmphasis from './drupalemphasis'; + +/** + * @internal + */ +export default { + DrupalEmphasis, +}; diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlbuilder.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlbuilder.js new file mode 100644 index 000000000000..1bdf25e1bdc7 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlbuilder.js @@ -0,0 +1,176 @@ +// cSpell:words apos + +/** + * HTML builder that converts document fragments into strings. + * + * @internal + */ +export default class DrupalHtmlBuilder { + /** + * Constructs a new object. + */ + constructor() { + this.chunks = []; + // @see https://html.spec.whatwg.org/multipage/syntax.html#elements-2 + this.selfClosingTags = [ + 'area', + 'base', + 'br', + 'col', + 'embed', + 'hr', + 'img', + 'input', + 'link', + 'meta', + 'param', + 'source', + 'track', + 'wbr', + ]; + } + + /** + * Returns the current HTML string built from document fragments. + * + * @return {string} + * The HTML string built from document fragments. + */ + build() { + return this.chunks.join(''); + } + + /** + * Converts document fragment into HTML string and appends to the value. + * + * @param {DocumentFragment} node + * A document fragment to be appended to the value. + */ + appendNode(node) { + if (node.nodeType === Node.TEXT_NODE) { + this._appendText(node); + } else if (node.nodeType === Node.ELEMENT_NODE) { + this._appendElement(node); + } else if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { + this._appendChildren(node); + } + } + + /** + * Appends element node to the value. + * + * @param {DocumentFragment} node + * A document fragment to be appended to the value. + * + * @private + */ + _appendElement(node) { + const nodeName = node.nodeName.toLowerCase(); + + this._append('<'); + this._append(nodeName); + this._appendAttributes(node); + this._append('>'); + if (!this.selfClosingTags.includes(nodeName)) { + this._appendChildren(node); + this._append('</'); + this._append(nodeName); + this._append('>'); + } + } + + /** + * Appends child nodes to the value. + * + * @param {DocumentFragment} node + * A document fragment to be appended to the value. + * + * @private + */ + _appendChildren(node) { + Object.keys(node.childNodes).forEach((child) => { + this.appendNode(node.childNodes[child]); + }); + } + + /** + * Appends attributes to the value. + * + * @param {DocumentFragment} node + * A document fragment to be appended to the value. + * + * @private + */ + _appendAttributes(node) { + Object.keys(node.attributes).forEach((attr) => { + this._append(' '); + this._append(node.attributes[attr].name); + this._append('="'); + this._append( + this.constructor._escapeAttribute(node.attributes[attr].value), + ); + this._append('"'); + }); + } + + /** + * Appends text to the value. + * + * @param {DocumentFragment} node + * A document fragment to be appended to the value. + * + * @private + */ + _appendText(node) { + // Text node doesn't have innerHTML property and textContent doesn't encode + // entities. That's why the text is repacked into another node and extracted + // using innerHTML. + const doc = document.implementation.createHTMLDocument(''); + const container = doc.createElement('p'); + container.textContent = node.textContent; + + this._append(container.innerHTML); + } + + /** + * Appends string to the value. + * + * @param {string} str + * A string to be appended to the value. + * + * @private + */ + _append(str) { + this.chunks.push(str); + } + + /** + * Escapes attribute value for compatibility with Drupal's XSS filtering. + * + * Drupal's XSS filtering cannot handle entities inside element attribute + * values. The XSS filtering was written based on W3C XML recommendations + * which constituted that the ampersand character (&) and the angle + * brackets (< and >) must not appear in their literal form in attribute + * values. This differs from the HTML living standard which permits angle + * brackets. + * + * @param {string} text + * A string to be escaped. + * + * @see https://www.w3.org/TR/2008/REC-xml-20081126/#NT-AttValue + * @see https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(single-quoted)-state + * @see https://www.drupal.org/project/drupal/issues/3227831 + * + * @private + */ + static _escapeAttribute(text) { + return text + .replace(/&/g, '&') + .replace(/'/g, ''') + .replace(/"/g, '"') + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/\r\n/g, ' ') + .replace(/[\r\n]/g, ' '); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlengine.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlengine.js new file mode 100644 index 000000000000..6b101b32604b --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlengine.js @@ -0,0 +1,35 @@ +/* eslint-disable import/no-extraneous-dependencies */ +// cSpell:words drupalhtmlwriter +import { Plugin } from 'ckeditor5/src/core'; +import DrupalHtmlWriter from './drupalhtmlwriter'; + +/** + * A plugin that overrides the CKEditor HTML writer. + * + * Override the CKEditor 5 HTML writer to escape ampersand characters (&) and + * the angle brackets (< and >). This is required because + * \Drupal\Component\Utility\Xss::filter fails to parse element attributes with + * unescaped entities in value. + * + * @see https://www.drupal.org/project/drupal/issues/3227831 + * @see DrupalHtmlBuilder._escapeAttribute + * + * @internal + */ +class DrupalHtmlEngine extends Plugin { + /** + * @inheritdoc + */ + init() { + this.editor.data.processor.htmlWriter = new DrupalHtmlWriter(); + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalHtmlEngine'; + } +} + +export default DrupalHtmlEngine; diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlwriter.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlwriter.js new file mode 100644 index 000000000000..56fe94ff18e0 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlwriter.js @@ -0,0 +1,31 @@ +// cSpell:words drupalhtmlbuilder dataprocessor basichtmlwriter htmlwriter +import DrupalHtmlBuilder from './drupalhtmlbuilder'; + +/** + * Custom HTML writer. It creates HTML by traversing DOM nodes. + * + * It differs to BasicHtmlWriter in the way it encodes entities in element + * attributes. + * + * @see module:engine/dataprocessor/basichtmlwriter~BasicHtmlWriter + * @implements {module:engine/dataprocessor/htmlwriter~HtmlWriter} + * + * @see https://www.drupal.org/project/drupal/issues/3227831 + * + * @internal + */ +export default class DrupalHtmlWriter { + /** + * Returns an HTML string created from the document fragment. + * + * @param {DocumentFragment} fragment + * @return {String} + */ + // eslint-disable-next-line class-methods-use-this + getHtml(fragment) { + const builder = new DrupalHtmlBuilder(); + builder.appendNode(fragment); + + return builder.build(); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/index.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/index.js new file mode 100644 index 000000000000..f58f6764fd0a --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalHtmlEngine/src/index.js @@ -0,0 +1,9 @@ +// cspell:ignore drupalengine drupalhtmlengine +import DrupalHtmlEngine from './drupalhtmlengine'; + +/** + * @internal + */ +export default { + DrupalHtmlEngine, +}; diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/README.md b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/README.md new file mode 100644 index 000000000000..d127535e5c5d --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/README.md @@ -0,0 +1,16 @@ +# ckeditor5-drupal-image + +Drupal image plugin for CKEditor5 + +Provides required attributes `data-entity-uuid` and `data-entity-type`. + +## Usage + +This project is for creating minified js for [Drupal CKEditor5](http://drupal.org/project/ckeditor5) + +## Build + +Run `npm run build:dll` to create the minified js. + +Check the file path in `webpack.config.js` to ensure it points to the dll +manifest in your copy of `ckeditor5`. diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/drupalimage.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/drupalimage.js new file mode 100644 index 000000000000..88de3fc0f485 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/drupalimage.js @@ -0,0 +1,26 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words drupalimageediting */ + +import { Plugin } from 'ckeditor5/src/core'; +import DrupalImageEditing from './drupalimageediting'; + +/** + * @internal + */ +class DrupalImage extends Plugin { + /** + * @inheritdoc + */ + static get requires() { + return [DrupalImageEditing]; + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalImage'; + } +} + +export default DrupalImage; diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/drupalimageediting.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/drupalimageediting.js new file mode 100644 index 000000000000..5fc34039dce7 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/drupalimageediting.js @@ -0,0 +1,521 @@ +/* eslint-disable import/no-extraneous-dependencies */ +// cSpell:words conversionutils downcasted linkimageediting +import { Plugin } from 'ckeditor5/src/core'; +import { setViewAttributes } from '@ckeditor/ckeditor5-html-support/src/conversionutils'; + +function createImageViewElement(writer) { + return writer.createEmptyElement('img'); +} + +function modelEntityUuidToDataAttribute() { + function converter(evt, data, conversionApi) { + const { item } = data; + const { consumable, writer } = conversionApi; + + if (!consumable.consume(item, evt.name)) { + return; + } + + const viewElement = conversionApi.mapper.toViewElement(item); + const imageInFigure = Array.from(viewElement.getChildren()).find( + (child) => child.name === 'img', + ); + + writer.setAttribute( + 'data-entity-uuid', + data.attributeNewValue, + imageInFigure || viewElement, + ); + } + + return (dispatcher) => { + dispatcher.on('attribute:dataEntityUuid', converter); + }; +} + +// Downcast `caption` model to `data-caption` attribute with its content +// downcasted to plain HTML. This is needed because CKEditor 5 uses <caption> +// element internally in various places, which differs from Drupal which uses +// an attribute. For now to support that we have to manually repeat work done in +// the DowncastDispatcher's private methods. +function viewCaptionToCaptionAttribute(editor) { + return (dispatcher) => { + dispatcher.on( + 'insert:caption', + (evt, data, conversionApi) => { + const { consumable, writer, mapper } = conversionApi; + if (!consumable.consume(data.item, 'insert')) { + return; + } + + const range = editor.model.createRangeIn(data.item); + const viewDocumentFragment = writer.createDocumentFragment(); + + // Bind caption model element to the detached view document fragment so + // all content of the caption will be downcasted into that document + // fragment. + mapper.bindElements(data.item, viewDocumentFragment); + + // eslint-disable-next-line no-restricted-syntax + for (const { item } of Array.from(range)) { + const itemData = { + item, + range: editor.model.createRangeOn(item), + }; + + // The following lines are extracted from + // DowncastDispatcher._convertInsertWithAttributes(). + const eventName = `insert:${item.name || '$text'}`; + + editor.data.downcastDispatcher.fire( + eventName, + itemData, + conversionApi, + ); + + // eslint-disable-next-line no-restricted-syntax + for (const key of item.getAttributeKeys()) { + Object.assign(itemData, { + attributeKey: key, + attributeOldValue: null, + attributeNewValue: itemData.item.getAttribute(key), + }); + + editor.data.downcastDispatcher.fire( + `attribute:${key}`, + itemData, + conversionApi, + ); + } + } + + // Unbind all the view elements that were downcasted to the document + // fragment. + // eslint-disable-next-line no-restricted-syntax + for (const child of writer + .createRangeIn(viewDocumentFragment) + .getItems()) { + mapper.unbindViewElement(child); + } + + mapper.unbindViewElement(viewDocumentFragment); + + // Stringify view document fragment to HTML string. + const captionText = editor.data.processor.toData(viewDocumentFragment); + + if (captionText) { + const imageViewElement = mapper.toViewElement(data.item.parent); + + writer.setAttribute('data-caption', captionText, imageViewElement); + } + }, + // Override default caption converter. + { priority: 'high' }, + ); + }; +} + +function modelEntityTypeToDataAttribute() { + function converter(evt, data, conversionApi) { + const { item } = data; + const { consumable, writer } = conversionApi; + + if (!consumable.consume(item, evt.name)) { + return; + } + + const viewElement = conversionApi.mapper.toViewElement(item); + const imageInFigure = Array.from(viewElement.getChildren()).find( + (child) => child.name === 'img', + ); + + writer.setAttribute( + 'data-entity-type', + data.attributeNewValue, + imageInFigure || viewElement, + ); + } + + return (dispatcher) => { + dispatcher.on('attribute:dataEntityType', converter); + }; +} + +function modelImageStyleToDataAttribute() { + function converter(evt, data, conversionApi) { + const { item } = data; + const { consumable, writer } = conversionApi; + + const mapping = { + alignLeft: 'left', + alignRight: 'right', + alignCenter: 'center', + alignBlockRight: 'right', + alignBlockLeft: 'left', + }; + + // Consume only for the values that can be converted into data-align. + if ( + !mapping[data.attributeNewValue] || + !consumable.consume(item, evt.name) + ) { + return; + } + + const viewElement = conversionApi.mapper.toViewElement(item); + const imageInFigure = Array.from(viewElement.getChildren()).find( + (child) => child.name === 'img', + ); + + writer.setAttribute( + 'data-align', + mapping[data.attributeNewValue], + imageInFigure || viewElement, + ); + } + + return (dispatcher) => { + dispatcher.on('attribute:imageStyle', converter, { priority: 'high' }); + }; +} + +function modelImageWidthToAttribute() { + function converter(evt, data, conversionApi) { + const { item } = data; + const { consumable, writer } = conversionApi; + + if (!consumable.consume(item, evt.name)) { + return; + } + + const viewElement = conversionApi.mapper.toViewElement(item); + const imageInFigure = Array.from(viewElement.getChildren()).find( + (child) => child.name === 'img', + ); + + writer.setAttribute( + 'width', + data.attributeNewValue.replace('px', ''), + imageInFigure || viewElement, + ); + } + + return (dispatcher) => { + dispatcher.on('attribute:width:imageInline', converter, { + priority: 'high', + }); + dispatcher.on('attribute:width:imageBlock', converter, { + priority: 'high', + }); + }; +} + +function modelImageHeightToAttribute() { + function converter(evt, data, conversionApi) { + const { item } = data; + const { consumable, writer } = conversionApi; + + if (!consumable.consume(item, evt.name)) { + return; + } + + const viewElement = conversionApi.mapper.toViewElement(item); + const imageInFigure = Array.from(viewElement.getChildren()).find( + (child) => child.name === 'img', + ); + + writer.setAttribute( + 'height', + data.attributeNewValue.replace('px', ''), + imageInFigure || viewElement, + ); + } + + return (dispatcher) => { + dispatcher.on('attribute:height:imageInline', converter, { + priority: 'high', + }); + dispatcher.on('attribute:height:imageBlock', converter, { + priority: 'high', + }); + }; +} + +function viewImageToModelImage(editor) { + function converter(evt, data, conversionApi) { + const { viewItem } = data; + const { writer, consumable, safeInsert, updateConversionResult, schema } = + conversionApi; + const attributesToConsume = []; + + let image; + + // Not only check if a given `img` view element has been consumed, but also + // verify it has `src` attribute present. + if (!consumable.test(viewItem, { name: true, attributes: 'src' })) { + return; + } + + // Create image that's allowed in the given context. + if (schema.checkChild(data.modelCursor, 'imageInline')) { + image = writer.createElement('imageInline', { + src: viewItem.getAttribute('src'), + }); + } else { + image = writer.createElement('imageBlock', { + src: viewItem.getAttribute('src'), + }); + } + + if ( + editor.plugins.has('ImageStyleEditing') && + consumable.test(viewItem, { name: true, attributes: 'data-align' }) + ) { + // https://ckeditor.com/docs/ckeditor5/latest/api/module_image_imagestyle_utils.html#constant-defaultStyles + const dataToPresentationMapBlock = { + left: 'alignBlockLeft', + center: 'alignCenter', + right: 'alignBlockRight', + }; + const dataToPresentationMapInline = { + left: 'alignLeft', + right: 'alignRight', + }; + + const dataAlign = viewItem.getAttribute('data-align'); + const alignment = image.is('element', 'imageBlock') + ? dataToPresentationMapBlock[dataAlign] + : dataToPresentationMapInline[dataAlign]; + + writer.setAttribute('imageStyle', alignment, image); + + // Make sure the attribute can be consumed after successful `safeInsert` + // operation. + attributesToConsume.push('data-align'); + } + + // Check if the view element has still unconsumed `data-caption` attribute. + // Also, we can add caption only to block image. + if ( + image.is('element', 'imageBlock') && + consumable.test(viewItem, { name: true, attributes: 'data-caption' }) + ) { + // Create `caption` model element. Thanks to that element the rest of the + // `ckeditor5-plugin` converters can recognize this image as a block image + // with a caption. + const caption = writer.createElement('caption'); + + // Parse HTML from data-caption attribute and upcast it to model fragment. + const viewFragment = editor.data.processor.toView( + viewItem.getAttribute('data-caption'), + ); + const modelFragment = writer.createDocumentFragment(); + + // Consumable must know about those newly parsed view elements. + conversionApi.consumable.constructor.createFrom( + viewFragment, + conversionApi.consumable, + ); + conversionApi.convertChildren(viewFragment, modelFragment); + + // Insert caption model nodes into the caption. + // eslint-disable-next-line no-restricted-syntax + for (const child of Array.from(modelFragment.getChildren())) { + writer.append(child, caption); + } + + // Insert the caption element into image, as a last child. + writer.append(caption, image); + + // Make sure the attribute can be consumed after successful `safeInsert` + // operation. + attributesToConsume.push('data-caption'); + } + + if ( + consumable.test(viewItem, { name: true, attributes: 'data-entity-uuid' }) + ) { + writer.setAttribute( + 'dataEntityUuid', + viewItem.getAttribute('data-entity-uuid'), + image, + ); + attributesToConsume.push('data-entity-uuid'); + } + + if ( + consumable.test(viewItem, { name: true, attributes: 'data-entity-type' }) + ) { + writer.setAttribute( + 'dataEntityType', + viewItem.getAttribute('data-entity-type'), + image, + ); + attributesToConsume.push('data-entity-type'); + } + + // Try to place the image in the allowed position. + if (!safeInsert(image, data.modelCursor)) { + return; + } + + // Mark given element as consumed. Now other converters will not process it + // anymore. + consumable.consume(viewItem, { + name: true, + attributes: attributesToConsume, + }); + + // Make sure `modelRange` and `modelCursor` is up to date after inserting + // new nodes into the model. + updateConversionResult(image, data); + } + + return (dispatcher) => { + dispatcher.on('element:img', converter, { priority: 'high' }); + }; +} + +// Modified alternative implementation of linkimageediting.js' downcastImageLink. +function downcastBlockImageLink() { + function converter(evt, data, conversionApi) { + if (!conversionApi.consumable.consume(data.item, evt.name)) { + return; + } + + // The image will be already converted - so it will be present in the view. + const image = conversionApi.mapper.toViewElement(data.item); + const writer = conversionApi.writer; + + // 1. Create an empty link element. + const linkElement = writer.createContainerElement('a', { + href: data.attributeNewValue, + }); + // 2. Insert link before the associated image. + writer.insert(writer.createPositionBefore(image), linkElement); + // 3. Move the image into the link. + writer.move( + writer.createRangeOn(image), + writer.createPositionAt(linkElement, 0), + ); + + // Modified alternative implementation of GHS' addBlockImageLinkAttributeConversion(). + // This is happening here as well to avoid a race condition with the link + // element not yet existing. + if ( + conversionApi.consumable.consume( + data.item, + 'attribute:htmlLinkAttributes:imageBlock', + ) + ) { + setViewAttributes( + conversionApi.writer, + data.item.getAttribute('htmlLinkAttributes'), + linkElement, + ); + } + } + + return (dispatcher) => { + dispatcher.on('attribute:linkHref:imageBlock', converter, { + priority: 'high', + }); + }; +} + +/** + * @internal + */ +export default class DrupalImageEditing extends Plugin { + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalImageEditing'; + } + + /** + * @inheritdoc + */ + init() { + const { editor } = this; + const { conversion } = editor; + const { schema } = editor.model; + + if (schema.isRegistered('imageInline')) { + schema.extend('imageInline', { + allowAttributes: [ + 'dataEntityUuid', + 'dataEntityType', + 'width', + 'height', + ], + }); + } + + if (schema.isRegistered('imageBlock')) { + schema.extend('imageBlock', { + allowAttributes: [ + 'dataEntityUuid', + 'dataEntityType', + 'width', + 'height', + ], + }); + } + + // Conversion. + conversion + .for('upcast') + .add(viewImageToModelImage(editor)) + .attributeToAttribute({ + view: { + name: 'img', + key: 'width', + }, + model: { + key: 'width', + value: (viewElement) => { + return `${viewElement.getAttribute('width')}px`; + }, + }, + }) + .attributeToAttribute({ + view: { + name: 'img', + key: 'height', + }, + model: { + key: 'height', + value: (viewElement) => { + return `${viewElement.getAttribute('height')}px`; + }, + }, + }); + + conversion + .for('downcast') + .add(modelEntityUuidToDataAttribute()) + .add(modelEntityTypeToDataAttribute()); + + conversion + .for('dataDowncast') + .add(viewCaptionToCaptionAttribute(editor)) + .elementToElement({ + model: 'imageBlock', + view: (modelElement, { writer }) => + createImageViewElement(writer, 'imageBlock'), + converterPriority: 'high', + }) + .elementToElement({ + model: 'imageInline', + view: (modelElement, { writer }) => + createImageViewElement(writer, 'imageInline'), + converterPriority: 'high', + }) + .add(modelImageStyleToDataAttribute()) + .add(modelImageWidthToAttribute()) + .add(modelImageHeightToAttribute()) + .add(downcastBlockImageLink()); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalfilerepository.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalfilerepository.js new file mode 100644 index 000000000000..3f0d1ca5ccaa --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalfilerepository.js @@ -0,0 +1,47 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words uploadurl drupalimageuploadadapter */ + +import { Plugin } from 'ckeditor5/src/core'; +import { FileRepository } from 'ckeditor5/src/upload'; +import { logWarning } from 'ckeditor5/src/utils'; +import DrupalImageUploadAdapter from './drupalimageuploadadapter'; + +/** + * @internal + */ +export default class DrupalFileRepository extends Plugin { + /** + * @inheritdoc + */ + static get requires() { + return [FileRepository]; + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalFileRepository'; + } + + /** + * @inheritdoc + */ + init() { + const options = this.editor.config.get('drupalImageUpload'); + + if (!options) { + return; + } + + if (!options.uploadUrl) { + logWarning('simple-upload-adapter-missing-uploadurl'); + + return; + } + + this.editor.plugins.get(FileRepository).createUploadAdapter = (loader) => { + return new DrupalImageUploadAdapter(loader, options); + }; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageupload.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageupload.js new file mode 100644 index 000000000000..9123242e61d5 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageupload.js @@ -0,0 +1,29 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words drupalimageuploadediting drupalfilerepository */ + +import { Plugin } from 'ckeditor5/src/core'; +import DrupalImageUploadEditing from './drupalimageuploadediting'; +import DrupalFileRepository from './drupalfilerepository'; + +/** + * Integrates the CKEditor image upload with the Drupal. + * + * @internal + */ +class DrupalImageUpload extends Plugin { + /** + * @inheritdoc + */ + static get requires() { + return [DrupalFileRepository, DrupalImageUploadEditing]; + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalImageUpload'; + } +} + +export default DrupalImageUpload; diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageuploadadapter.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageuploadadapter.js new file mode 100644 index 000000000000..5986432a523f --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageuploadadapter.js @@ -0,0 +1,148 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words simpleuploadadapter filerepository */ + +/** + * Upload adapter. Copied from @ckeditor5/ckeditor5-upload/src/adapters/simpleuploadadapter + * + * @internal + * @implements {module:upload/filerepository~UploadAdapter} + */ +export default class DrupalImageUploadAdapter { + /** + * Creates a new adapter instance. + * + * @param {module:upload/filerepository~FileLoader} loader + * The file loader. + * @param {module:upload/adapters/simpleuploadadapter~SimpleUploadConfig} options + * The upload options. + */ + constructor(loader, options) { + /** + * FileLoader instance to use during the upload. + * + * @member {module:upload/filerepository~FileLoader} #loader + */ + this.loader = loader; + + /** + * The configuration of the adapter. + * + * @member {module:upload/adapters/simpleuploadadapter~SimpleUploadConfig} #options + */ + this.options = options; + } + + /** + * Starts the upload process. + * + * @see module:upload/filerepository~UploadAdapter#upload + * @return {Promise} + * Promise that the upload will be processed. + */ + upload() { + return this.loader.file.then( + (file) => + new Promise((resolve, reject) => { + this._initRequest(); + this._initListeners(resolve, reject, file); + this._sendRequest(file); + }), + ); + } + + /** + * Aborts the upload process. + * + * @see module:upload/filerepository~UploadAdapter#abort + */ + abort() { + if (this.xhr) { + this.xhr.abort(); + } + } + + /** + * Initializes the `XMLHttpRequest` object using the URL specified as + * + * {@link module:upload/adapters/simpleuploadadapter~SimpleUploadConfig#uploadUrl `simpleUpload.uploadUrl`} in the editor's + * configuration. + */ + _initRequest() { + this.xhr = new XMLHttpRequest(); + + this.xhr.open('POST', this.options.uploadUrl, true); + this.xhr.responseType = 'json'; + } + + /** + * Initializes XMLHttpRequest listeners + * + * @private + * @param {Function} resolve Callback function to be called when the request is successful. + * @param {Function} reject Callback function to be called when the request cannot be completed. + * @param {File} file Native File object. + */ + _initListeners(resolve, reject, file) { + const xhr = this.xhr; + const loader = this.loader; + const genericErrorText = `Couldn't upload file: ${file.name}.`; + + xhr.addEventListener('error', () => reject(genericErrorText)); + xhr.addEventListener('abort', () => reject()); + xhr.addEventListener('load', () => { + const response = xhr.response; + + if (!response || response.error) { + return reject( + response && response.error && response.error.message + ? response.error.message + : genericErrorText, + ); + } + + resolve({ + urls: { default: response.url }, + dataEntityUuid: response.uuid ? response.uuid : '', + dataEntityType: response.entity_type ? response.entity_type : '', + }); + }); + + // Upload progress when it is supported. + if (xhr.upload) { + xhr.upload.addEventListener('progress', (evt) => { + if (evt.lengthComputable) { + loader.uploadTotal = evt.total; + loader.uploaded = evt.loaded; + } + }); + } + } + + /** + * Prepares the data and sends the request. + * + * @param {File} file + * File instance to be uploaded. + */ + _sendRequest(file) { + // Set headers if specified. + const headers = this.options.headers || {}; + + // Use the withCredentials flag if specified. + const withCredentials = this.options.withCredentials || false; + + Object.keys(headers).forEach((headerName) => { + this.xhr.setRequestHeader(headerName, headers[headerName]); + }); + + this.xhr.withCredentials = withCredentials; + + // Prepare the form data. + const data = new FormData(); + + data.append('upload', file); + + // Send the request. + this.xhr.send(data); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageuploadediting.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageuploadediting.js new file mode 100644 index 000000000000..61c43c55819b --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imageupload/drupalimageuploadediting.js @@ -0,0 +1,36 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { Plugin } from 'ckeditor5/src/core'; + +/** + * @internal + */ +export default class DrupalImageUploadEditing extends Plugin { + /** + * @inheritdoc + */ + init() { + const { editor } = this; + const imageUploadEditing = editor.plugins.get('ImageUploadEditing'); + imageUploadEditing.on('uploadComplete', (evt, { data, imageElement }) => { + editor.model.change((writer) => { + writer.setAttribute( + 'dataEntityUuid', + data.dataEntityUuid, + imageElement, + ); + writer.setAttribute( + 'dataEntityType', + data.dataEntityType, + imageElement, + ); + }); + }); + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalImageUploadEditing'; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/index.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/index.js new file mode 100644 index 000000000000..c7ca6898351d --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/index.js @@ -0,0 +1,12 @@ +// cspell:ignore imageupload imageresize drupalimage drupalimageupload drupalimageresize + +import DrupalImage from './drupalimage'; +import DrupalImageUpload from './imageupload/drupalimageupload'; + +/** + * @internal + */ +export default { + DrupalImage, + DrupalImageUpload, +}; diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/README.md b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/README.md new file mode 100644 index 000000000000..60336a6afec5 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/README.md @@ -0,0 +1,39 @@ +# ckeditor5-drupal-media + +Drupal media plugin for CKEditor5 + +Provides required attributes `data-entity-uuid` and `data-entity-type`. + +## Usage + +This project is for creating minified js for [Drupal CKEditor5](http://drupal.org/project/ckeditor5) + +When using this plugin, you must provide the following config in `drupalMedia`: + +1. `libraryURL`: The URL at route media_library.ui to open a browse dialog +2. `previewURL`: The URL at route media.filter.preview to render a media preview +3. `openDialog`: The function to open a Drupal dialog +4. `themeError`: The markup to display if the preview fails + +Example config: + +``` +ClassicEditor + .create(editorElement, { + drupalMedia: { + libraryURL: '/media-library?...', + previewURL: '/media/{filter_format}/preview', + openDialog: Drupal.ckeditor5.openDialog, + themeError: Drupal.theme('mediaEmbedPreviewError'), + }, + }); + .then( ... ) + .catch( ... ); +``` + +## Build + +Run `npm run dll:build` to create the minified js. + +Check the file path in `webpack.config.js` to ensure it points to the dll +manifest in your copy of `ckeditor5`. diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmedia.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmedia.js new file mode 100644 index 000000000000..4e0bffd505a8 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmedia.js @@ -0,0 +1,25 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words drupallinkmediaediting drupallinkmediaui */ + +import { Plugin } from 'ckeditor5/src/core'; +import DrupalLinkMediaEditing from './drupallinkmediaediting'; +import DrupalLinkMediaUI from './drupallinkmediaui'; + +/** + * @internal + */ +export default class DrupalLinkMedia extends Plugin { + /** + * @inheritdoc + */ + static get requires() { + return [DrupalLinkMediaEditing, DrupalLinkMediaUI]; + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalLinkMedia'; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaediting.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaediting.js new file mode 100644 index 000000000000..1770fdd61780 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaediting.js @@ -0,0 +1,230 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words drupallinkmediaediting linkediting */ +import { Plugin } from 'ckeditor5/src/core'; + +/** + * Returns the first drupal-media element in a given view element. + * + * @param {module:engine/view/element~Element} viewElement + * The view element. + * + * @return {module:engine/view/element~Element|undefined} + * The first <drupal-media> element or undefined if the element doesn't have + * <drupal-media> as a child element. + */ +function getFirstMedia(viewElement) { + return Array.from(viewElement.getChildren()).find( + (child) => child.name === 'drupal-media', + ); +} + +/** + * Returns a converter that consumes the `href` attribute if a link contains a <drupal-media>. + * + * @return {Function} + * A function that adds an event listener to upcastDispatcher. + */ +function upcastMediaLink() { + return (dispatcher) => { + dispatcher.on( + 'element:a', + (evt, data, conversionApi) => { + const viewLink = data.viewItem; + const mediaInLink = getFirstMedia(viewLink); + + if (!mediaInLink) { + return; + } + + // There's an <drupal-media> inside an <a> element - we consume it so it + // won't be picked up by the Link plugin. + const consumableAttributes = { attributes: ['href'] }; + + // Consume the `href` attribute so the default one will not convert it to + // $text attribute. + if (!conversionApi.consumable.consume(viewLink, consumableAttributes)) { + // Might be consumed by something else - i.e. other converter with + // priority=highest - a standard check. + return; + } + + const linkHref = viewLink.getAttribute('href'); + + // Missing the `href` attribute. + if (!linkHref) { + return; + } + + const conversionResult = conversionApi.convertItem( + mediaInLink, + data.modelCursor, + ); + + // Set media range as conversion result. + data.modelRange = conversionResult.modelRange; + + // Continue conversion where <drupal-media> conversion ends. + data.modelCursor = conversionResult.modelCursor; + + const modelElement = data.modelCursor.nodeBefore; + + if (modelElement && modelElement.is('element', 'drupalMedia')) { + // Set the `linkHref` attribute from <a> element on model drupalMedia + // element. + conversionApi.writer.setAttribute('linkHref', linkHref, modelElement); + } + }, + { priority: 'high' }, + ); + }; +} + +/** + * Return a converter that adds the <a> element to view data. + * + * @return {Function} + * A function that adds an event listener to downcastDispatcher. + */ +function dataDowncastMediaLink() { + return (dispatcher) => { + dispatcher.on( + 'attribute:linkHref:drupalMedia', + (evt, data, conversionApi) => { + const { writer } = conversionApi; + if (!conversionApi.consumable.consume(data.item, evt.name)) { + return; + } + + // The drupalMedia will be already converted - so it will be present in + // the view. + const mediaElement = conversionApi.mapper.toViewElement(data.item); + + // If so, update the attribute if it's defined or remove the entire link + // if the attribute is empty. But if it does not exist. Let's wrap already + // converted drupalMedia by newly created link element. + // 1. Create an empty <a> element. + const linkElement = writer.createContainerElement('a', { + href: data.attributeNewValue, + }); + + // 2. Insert <a> before the <drupal-media> element. + writer.insert(writer.createPositionBefore(mediaElement), linkElement); + + // 3. Move the drupal-media element inside the <a>. + writer.move( + writer.createRangeOn(mediaElement), + writer.createPositionAt(linkElement, 0), + ); + }, + { priority: 'high' }, + ); + }; +} + +/** + * Return a converter that adds the <a> element to editing view. + * + * @return {Function} + * A function that adds an event listener to downcastDispatcher. + * + * @see https://github.com/ckeditor/ckeditor5/blob/v31.0.0/packages/ckeditor5-link/src/linkimageediting.js#L180 + */ +function editingDowncastMediaLink() { + return (dispatcher) => { + dispatcher.on( + 'attribute:linkHref:drupalMedia', + (evt, data, conversionApi) => { + const { writer } = conversionApi; + if (!conversionApi.consumable.consume(data.item, evt.name)) { + return; + } + + // The drupalMedia will be already converted - so it will be present in + // the view. + const mediaContainer = conversionApi.mapper.toViewElement(data.item); + const linkInMedia = Array.from(mediaContainer.getChildren()).find( + (child) => child.name === 'a', + ); + + // If link already exists, instead of creating new link from scratch, + // update the existing link. This makes the UI rendering much smoother. + if (linkInMedia) { + // If attribute has a new value, update it. If new value doesn't exist, + // the link will be removed. + if (data.attributeNewValue) { + writer.setAttribute('href', data.attributeNewValue, linkInMedia); + } else { + // This is triggering elementToElement conversion for drupalMedia + // element which makes caused re-render of the media preview, making + // the media preview flicker once when media is unlinked. + // @todo ensure that this doesn't cause flickering after + // https://www.drupal.org/i/3246380 has been addressed. + writer.move( + writer.createRangeIn(linkInMedia), + writer.createPositionAt(mediaContainer, 0), + ); + writer.remove(linkInMedia); + } + } else { + const mediaPreview = Array.from(mediaContainer.getChildren()).find( + (child) => child.getAttribute('data-drupal-media-preview'), + ); + // 1. Create an empty <a> element. + const linkElement = writer.createContainerElement('a', { + href: data.attributeNewValue, + }); + + // 2. Insert <a> inside the media container. + writer.insert( + writer.createPositionAt(mediaContainer, 0), + linkElement, + ); + + // 3. Move the media preview inside the <a>. + writer.move( + writer.createRangeOn(mediaPreview), + writer.createPositionAt(linkElement, 0), + ); + } + }, + { priority: 'high' }, + ); + }; +} + +/** + * Model to view and view to model conversions for linked media elements. + * + * @internal + * + * @see https://github.com/ckeditor/ckeditor5/blob/v31.0.0/packages/ckeditor5-link/src/linkimage.js + */ +export default class DrupalLinkMediaEditing extends Plugin { + /** + * @inheritdoc + */ + static get requires() { + return ['LinkEditing', 'DrupalMediaEditing']; + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalLinkMediaEditing'; + } + + /** + * @inheritdoc + */ + init() { + const { editor } = this; + editor.model.schema.extend('drupalMedia', { + allowAttributes: ['linkHref'], + }); + + editor.conversion.for('upcast').add(upcastMediaLink()); + editor.conversion.for('editingDowncast').add(editingDowncastMediaLink()); + editor.conversion.for('dataDowncast').add(dataDowncastMediaLink()); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaui.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaui.js new file mode 100644 index 000000000000..68a01a85b2c1 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaui.js @@ -0,0 +1,112 @@ +/* eslint-disable import/no-extraneous-dependencies */ +// cSpell:words linkui +import { Plugin } from 'ckeditor5/src/core'; +import { LINK_KEYSTROKE } from '@ckeditor/ckeditor5-link/src/utils'; +import { ButtonView } from 'ckeditor5/src/ui'; +import linkIcon from '../../../../../icons/link.svg'; + +/** + * The link media UI plugin. + * + * @internal + */ +export default class DrupalLinkMediaUI extends Plugin { + /** + * @inheritdoc + */ + static get requires() { + return ['LinkEditing', 'LinkUI', 'DrupalMediaEditing']; + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalLinkMediaUi'; + } + + /** + * @inheritdoc + */ + init() { + const { editor } = this; + const viewDocument = editor.editing.view.document; + + this.listenTo( + viewDocument, + 'click', + (evt, data) => { + if (this._isSelectedLinkedMedia(editor.model.document.selection)) { + // Prevent browser navigation when clicking a linked media. + data.preventDefault(); + + // Block the `LinkUI` plugin when a media was clicked. In such a case, + // we'd like to display the media toolbar. + evt.stop(); + } + }, + { priority: 'high' }, + ); + this._createToolbarLinkMediaButton(); + } + + /** + * Creates a `DrupalLinkMediaUI` button view. + * + * Clicking this button shows a {@link module:link/linkui~LinkUI#_balloon} + * attached to the selection. When an media is already linked, the view shows + * {@link module:link/linkui~LinkUI#actionsView} or + * {@link module:link/linkui~LinkUI#formView} if it is not. + */ + _createToolbarLinkMediaButton() { + const { editor } = this; + const { t } = editor; + + editor.ui.componentFactory.add('drupalLinkMedia', (locale) => { + const button = new ButtonView(locale); + const plugin = editor.plugins.get('LinkUI'); + const linkCommand = editor.commands.get('link'); + + button.set({ + isEnabled: true, + label: t('Link media'), + icon: linkIcon, + keystroke: LINK_KEYSTROKE, + tooltip: true, + isToggleable: true, + }); + + // Bind button to the command. + button.bind('isEnabled').to(linkCommand, 'isEnabled'); + button.bind('isOn').to(linkCommand, 'value', (value) => !!value); + + // Show the actionsView or formView (both from LinkUI) on button click + // depending on whether the media is already linked. + this.listenTo(button, 'execute', () => { + if (this._isSelectedLinkedMedia(editor.model.document.selection)) { + plugin._addActionsView(); + } else { + plugin._showUI(true); + } + }); + + return button; + }); + } + + /** + * Returns true if a linked media is the only selected element in the model. + * + * @param {module:engine/model/selection~Selection} selection + * @return {Boolean} + */ + // eslint-disable-next-line class-methods-use-this + _isSelectedLinkedMedia(selection) { + const selectedModelElement = selection.getSelectedElement(); + return ( + !!selectedModelElement && + selectedModelElement.is('element', 'drupalMedia') && + selectedModelElement.hasAttribute('linkHref') + ); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmedia.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmedia.js new file mode 100644 index 000000000000..c295fc15b3e2 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmedia.js @@ -0,0 +1,25 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words drupalmediaediting drupalmediageneralhtmlsupport drupalmediaui drupalmediatoolbar mediaimagetextalternative */ + +import { Plugin } from 'ckeditor5/src/core'; +import DrupalMediaEditing from './drupalmediaediting'; +import DrupalMediaUI from './drupalmediaui'; +import DrupalMediaToolbar from './drupalmediatoolbar'; + +import MediaImageTextAlternative from './mediaimagetextalternative'; +import DrupalMediaGeneralHtmlSupport from './drupalmediageneralhtmlsupport'; + +/** + * @internal + */ +export default class DrupalMedia extends Plugin { + static get requires() { + return [ + DrupalMediaEditing, + DrupalMediaGeneralHtmlSupport, + DrupalMediaUI, + DrupalMediaToolbar, + MediaImageTextAlternative, + ]; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js new file mode 100644 index 000000000000..70c05e0093f8 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js @@ -0,0 +1,174 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words insertdrupalmedia */ + +import { Plugin } from 'ckeditor5/src/core'; +import { toWidget, Widget } from 'ckeditor5/src/widget'; + +import InsertDrupalMediaCommand from './insertdrupalmedia'; + +/** + * @internal + */ +export default class DrupalMediaEditing extends Plugin { + static get requires() { + return [Widget]; + } + + init() { + this.attrs = { + drupalMediaAlt: 'alt', + drupalMediaAlign: 'data-align', + drupalMediaCaption: 'data-caption', + drupalMediaEntityType: 'data-entity-type', + drupalMediaEntityUuid: 'data-entity-uuid', + drupalMediaViewMode: 'data-view-mode', + }; + const options = this.editor.config.get('drupalMedia'); + if (!options) { + return; + } + const { previewURL, themeError } = options; + this.previewURL = previewURL; + this.labelError = this.editor.t('Preview failed'); + this.themeError = + themeError || + ` + <p>${this.editor.t( + 'An error occurred while trying to preview the media. Please save your work and reload this page.', + )}<p> + `; + + this._defineSchema(); + this._defineConverters(); + + this.editor.commands.add( + 'insertDrupalMedia', + new InsertDrupalMediaCommand(this.editor), + ); + } + + async _fetchPreview(url, query) { + const response = await fetch(`${url}?${new URLSearchParams(query)}`, { + headers: { + 'X-Drupal-MediaPreview-CSRF-Token': + this.editor.config.get('drupalMedia').previewCsrfToken, + }, + }); + if (response.ok) { + const label = response.headers.get('drupal-media-label'); + const preview = await response.text(); + return { label, preview }; + } + + return { label: this.labelError, preview: this.themeError }; + } + + _defineSchema() { + const schema = this.editor.model.schema; + schema.register('drupalMedia', { + allowWhere: '$block', + isObject: true, + isContent: true, + allowAttributes: Object.keys(this.attrs), + }); + } + + _defineConverters() { + const conversion = this.editor.conversion; + conversion.for('upcast').elementToElement({ + view: { + name: 'drupal-media', + }, + model: 'drupalMedia', + }); + + conversion.for('dataDowncast').elementToElement({ + model: 'drupalMedia', + view: { + name: 'drupal-media', + }, + }); + + conversion.for('editingDowncast').elementToElement({ + model: 'drupalMedia', + view: (modelElement, { writer: viewWriter }) => { + const container = viewWriter.createContainerElement('div', { + class: 'drupal-media', + }); + const media = viewWriter.createRawElement( + 'div', + { 'data-drupal-media-preview': 'loading' }, + (domElement) => { + if (this.previewURL) { + this._fetchPreview(this.previewURL, { + text: this._renderElement(modelElement), + uuid: modelElement.getAttribute('drupalMediaEntityUuid'), + }).then(({ label, preview }) => { + domElement.innerHTML = preview; + domElement.setAttribute('aria-label', label); + domElement.setAttribute('data-drupal-media-preview', 'ready'); + }); + } else { + domElement.innerHTML = this.themeError; + domElement.setAttribute('aria-label', 'drupal-media'); + domElement.setAttribute( + 'data-drupal-media-preview', + 'unavailable', + ); + } + }, + ); + viewWriter.insert(viewWriter.createPositionAt(container, 0), media); + viewWriter.setCustomProperty('drupalMedia', true, container); + return toWidget(container, viewWriter, { label: 'media widget' }); + }, + }); + + // Set attributeToAttribute conversion for all supported attributes. + Object.keys(this.attrs).forEach((modelKey) => { + conversion.attributeToAttribute({ + model: { + key: modelKey, + name: 'drupalMedia', + }, + view: { + name: 'drupal-media', + key: this.attrs[modelKey], + }, + }); + }); + } + + /** + * MediaFilterController::preview requires the saved element. + * + * Not previewing data-caption since it does not get updated by new changes. + * + * @param {module:engine/model/element~Element} modelElement + * The drupalMedia model element to be converted. + * @return {string} + * The model element converted into HTML. + * + * @todo: is there a better way to get the rendered dataDowncast string + * https://www.drupal.org/project/ckeditor5/issues/3231337? + */ + _renderElement(modelElement) { + const attrs = modelElement.getAttributes(); + let element = '<drupal-media'; + Array.from(attrs).forEach((attr) => { + if (this.attrs[attr[0]] && attr[0] !== 'drupalMediaCaption') { + element += ` ${this.attrs[attr[0]]}="${attr[1]}"`; + } + }); + element += '></drupal-media>'; + + return element; + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalMediaEditing'; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediageneralhtmlsupport.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediageneralhtmlsupport.js new file mode 100644 index 000000000000..a84f378ac8a4 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediageneralhtmlsupport.js @@ -0,0 +1,182 @@ +/* eslint-disable import/no-extraneous-dependencies */ +// cSpell:words conversionutils datafilter +import { Plugin } from 'ckeditor5/src/core'; +import { setViewAttributes } from '@ckeditor/ckeditor5-html-support/src/conversionutils'; + +/** + * View-to-model conversion helper preserving allowed attributes on the Drupal Media model. + * + * @param {module:html-support/datafilter~DataFilter} dataFilter + * The General HTML support data filter. + * + * @return {function} + * function that adds an event listener to upcastDispatcher. + */ +function viewToModelDrupalMediaAttributeConverter(dataFilter) { + return (dispatcher) => { + dispatcher.on( + 'element:drupal-media', + (evt, data, conversionApi) => { + function preserveElementAttributes(viewElement, attributeName) { + const viewAttributes = dataFilter._consumeAllowedAttributes( + viewElement, + conversionApi, + ); + + if (viewAttributes) { + conversionApi.writer.setAttribute( + attributeName, + viewAttributes, + data.modelRange, + ); + } + } + function preserveLinkAttributes(linkElement) { + preserveElementAttributes(linkElement, 'htmlLinkAttributes'); + } + + const viewMediaElement = data.viewItem; + const viewContainerElement = viewMediaElement.parent; + + if (viewContainerElement.is('element', 'a')) { + preserveLinkAttributes(viewContainerElement); + } + }, + { priority: 'low' }, + ); + }; +} + +/** + * Gets descendant element from a container. + * + * @param {module:engine/model/writer~Writer} writer + * The writer. + * @param {module:engine/view/element~Element} containerElement + * The container element. + * @param {string} elementName + * The element name. + * @return {module:engine/view/element~Element|undefined} + * The descendant element matching element name or undefined if not found. + */ +function getDescendantElement(writer, containerElement, elementName) { + const range = writer.createRangeOn(containerElement); + + // eslint-disable-next-line no-restricted-syntax + for (const { item } of range.getWalker()) { + if (item.is('element', elementName)) { + return item; + } + } +} + +/** + * Model to editing view attribute converter. + * + * @return {function} + * A function that adds an event listener to downcastDispatcher. + */ +function modelToEditingViewAttributeConverter() { + return (dispatcher) => + dispatcher.on( + 'attribute:linkHref:drupalMedia', + (evt, data, conversionApi) => { + if ( + !conversionApi.consumable.consume( + data.item, + 'attribute:htmlLinkAttributes:drupalMedia', + ) + ) { + return; + } + + const containerElement = conversionApi.mapper.toViewElement(data.item); + const viewElement = getDescendantElement( + conversionApi.writer, + containerElement, + 'a', + ); + + setViewAttributes( + conversionApi.writer, + data.item.getAttribute('htmlLinkAttributes'), + viewElement, + ); + }, + { priority: 'low' }, + ); +} + +/** + * Model to data view attribute converter. + * + * @return {function} + * function that adds an event listener to downcastDispatcher. + */ +function modelToDataViewAttributeConverter() { + return (dispatcher) => + dispatcher.on( + 'attribute:linkHref:drupalMedia', + (evt, data, conversionApi) => { + if ( + !conversionApi.consumable.consume( + data.item, + 'attribute:htmlLinkAttributes:drupalMedia', + ) + ) { + return; + } + + const mediaElement = conversionApi.mapper.toViewElement(data.item); + const linkElement = mediaElement.parent; + setViewAttributes( + conversionApi.writer, + data.item.getAttribute('htmlLinkAttributes'), + linkElement, + ); + }, + { priority: 'low' }, + ); +} + +/** + * Integrates Drupal Media with General HTML Support. + * + * @internal + */ +export default class DrupalMediaGeneralHtmlSupport extends Plugin { + /** + * @inheritdoc + */ + init() { + const { editor } = this; + + // This plugin is only needed if General HTML Support plugin is loaded. + if (!editor.plugins.has('GeneralHtmlSupport')) { + return; + } + + const { schema } = editor.model; + const { conversion } = editor; + const dataFilter = editor.plugins.get('DataFilter'); + + schema.extend('drupalMedia', { + allowAttributes: ['htmlLinkAttributes'], + }); + + conversion + .for('upcast') + .add(viewToModelDrupalMediaAttributeConverter(dataFilter)); + conversion + .for('editingDowncast') + .add(modelToEditingViewAttributeConverter()); + conversion.for('dataDowncast').add(modelToDataViewAttributeConverter()); + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalMediaGeneralHtmlSupport'; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediatoolbar.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediatoolbar.js new file mode 100644 index 000000000000..694ff4eca78c --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediatoolbar.js @@ -0,0 +1,31 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { Plugin } from 'ckeditor5/src/core'; +import { WidgetToolbarRepository } from 'ckeditor5/src/widget'; + +import { getSelectedDrupalMediaWidget } from './utils'; + +/** + * @internal + */ +export default class DrupalMediaToolbar extends Plugin { + static get requires() { + return [WidgetToolbarRepository]; + } + + static get pluginName() { + return 'DrupalMediaToolbar'; + } + + afterInit() { + const editor = this.editor; + const { t } = editor; + const widgetToolbarRepository = editor.plugins.get(WidgetToolbarRepository); + + widgetToolbarRepository.register('drupalMedia', { + ariaLabel: t('Drupal Media toolbar'), + items: editor.config.get('drupalMedia.toolbar') || [], + // Get the selected image or an image containing the figcaption with the selection inside. + getRelatedElement: (selection) => getSelectedDrupalMediaWidget(selection), + }); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaui.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaui.js new file mode 100644 index 000000000000..5e10d0ec719a --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaui.js @@ -0,0 +1,49 @@ +/* eslint-disable import/no-extraneous-dependencies */ +// cspell:ignore medialibrary + +import { Plugin } from 'ckeditor5/src/core'; +import { ButtonView } from 'ckeditor5/src/ui'; +// cspell:ignore medialibrary +import mediaIcon from '../theme/icons/medialibrary.svg'; + +/** + * @internal + */ +export default class DrupalMediaUI extends Plugin { + init() { + const editor = this.editor; + const options = this.editor.config.get('drupalMedia'); + if (!options) { + return; + } + + const { libraryURL, openDialog, dialogSettings = {} } = options; + if (!libraryURL || typeof openDialog !== 'function') { + return; + } + + editor.ui.componentFactory.add('drupalMedia', (locale) => { + const command = editor.commands.get('insertDrupalMedia'); + const buttonView = new ButtonView(locale); + + buttonView.set({ + label: editor.t('Insert Drupal Media'), + icon: mediaIcon, + tooltip: true, + }); + + buttonView.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled'); + this.listenTo(buttonView, 'execute', () => { + openDialog( + libraryURL, + ({ attributes }) => { + editor.execute('insertDrupalMedia', attributes); + }, + dialogSettings, + ); + }); + + return buttonView; + }); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/index.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/index.js new file mode 100644 index 000000000000..dfdc8cc22dd2 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/index.js @@ -0,0 +1,23 @@ +/* eslint-disable import/no-extraneous-dependencies */ +// cspell:ignore mediaimagetextalternative + +import DrupalMedia from './drupalmedia'; + +// cspell:ignore drupallinkmedia +import DrupalLinkMedia from './drupallinkmedia/drupallinkmedia'; + +// cspell:ignore mediaimagetextalternative +import MediaImageTextAlternative from './mediaimagetextalternative'; +import MediaImageTextAlternativeEditing from './mediaimagetextalternative/mediaimagetextalternativeediting'; +import MediaImageTextAlternativeUi from './mediaimagetextalternative/mediaimagetextalternativeui'; + +/** + * @internal + */ +export default { + DrupalMedia, + MediaImageTextAlternative, + MediaImageTextAlternativeEditing, + MediaImageTextAlternativeUi, + DrupalLinkMedia, +}; diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/insertdrupalmedia.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/insertdrupalmedia.js new file mode 100644 index 000000000000..205d42caa4c3 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/insertdrupalmedia.js @@ -0,0 +1,74 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { Command } from 'ckeditor5/src/core'; + +function createDrupalMedia(writer, attributes) { + const drupalMedia = writer.createElement('drupalMedia', attributes); + return drupalMedia; +} + +/** + * @internal + */ +/** + * The insert media command. + * + * The command is registered by the `DrupalMediaEditing` plugin as + * `insertDrupalMedia`. + * + * In order to insert media at the current selection position, execute the + * command and pass the attributes desired in the drupal-media element: + * + * editor.execute('insertDrupalMedia', { + * 'alt': 'Alt text', + * 'data-align': 'left', + * 'data-caption': 'Caption text', + * 'data-entity-type': 'media', + * 'data-entity-uuid': 'media-entity-uuid', + * 'data-view-mode': 'default', + * }); + */ +export default class InsertDrupalMediaCommand extends Command { + execute(attributes) { + const mediaEditing = this.editor.plugins.get('DrupalMediaEditing'); + + // Create object that contains supported data-attributes in view data by + // flipping `DrupalMediaEditing.attrs` object (i.e. keys from object become + // values and values from object become keys). + const dataAttributeMapping = Object.entries(mediaEditing.attrs).reduce( + (result, [key, value]) => { + result[value] = key; + return result; + }, + {}, + ); + + // \Drupal\media\Form\EditorMediaDialog returns data in keyed by + // data-attributes used in view data. This converts data-attribute keys to + // keys used in model. + const modelAttributes = Object.keys(attributes).reduce( + (result, attribute) => { + if (dataAttributeMapping[attribute]) { + result[dataAttributeMapping[attribute]] = attributes[attribute]; + } + return result; + }, + {}, + ); + + this.editor.model.change((writer) => { + this.editor.model.insertContent( + createDrupalMedia(writer, modelAttributes), + ); + }); + } + + refresh() { + const model = this.editor.model; + const selection = model.document.selection; + const allowedIn = model.schema.findAllowedParent( + selection.getFirstPosition(), + 'drupalMedia', + ); + this.isEnabled = allowedIn !== null; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative.js new file mode 100644 index 000000000000..53d9dd4d4f45 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative.js @@ -0,0 +1,26 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { Plugin } from 'ckeditor5/src/core'; +import MediaImageTextAlternativeEditing from './mediaimagetextalternative/mediaimagetextalternativeediting'; +import MediaImageTextAlternativeUi from './mediaimagetextalternative/mediaimagetextalternativeui'; + +/** + * @internal + */ +/** + * The media image text alternative plugin. + */ +export default class MediaImageTextAlternative extends Plugin { + /** + * @inheritDoc + */ + static get requires() { + return [MediaImageTextAlternativeEditing, MediaImageTextAlternativeUi]; + } + + /** + * @inheritDoc + */ + static get pluginName() { + return 'MediaImageTextAlternative'; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js new file mode 100644 index 000000000000..138d733b7974 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js @@ -0,0 +1,77 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { Command } from 'ckeditor5/src/core'; +import { isDrupalMedia } from '../utils'; + +/** + * The media image text alternative command. + * + * This is used to change the `alt` attribute of `<drupalMedia>` elements. + * + * @see https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-image/src/imagetextalternative/imagetextalternativecommand.js + */ +export default class MediaImageTextAlternativeCommand extends Command { + /** + * The command value: `false` if there is no `alt` attribute, otherwise the value of the `alt` attribute. + + /** + * @inheritDoc + */ + refresh() { + const element = this.editor.model.document.selection.getSelectedElement(); + + this.isEnabled = false; + if (isDrupalMedia(element)) { + this._isMediaImage(element).then((hasImageField) => { + this.isEnabled = hasImageField; + }); + } + + if (isDrupalMedia(element) && element.hasAttribute('drupalMediaAlt')) { + this.value = element.getAttribute('drupalMediaAlt'); + } else { + this.value = false; + } + } + + /** + * Executes the command. + * + * @param {Object} options + * An options object. + * @param {String} options.newValue The new value of the `alt` attribute to set. + */ + execute(options) { + const { model } = this.editor; + const imageElement = model.document.selection.getSelectedElement(); + + options.newValue = options.newValue.trim(); + model.change((writer) => { + if (options.newValue.length > 0) { + writer.setAttribute('drupalMediaAlt', options.newValue, imageElement); + } else { + writer.removeAttribute('drupalMediaAlt', imageElement); + } + }); + } + + async _isMediaImage(modelElement) { + const options = this.editor.config.get('drupalMedia'); + if (!options) { + return null; + } + + const { isMediaUrl } = options; + const query = new URLSearchParams({ + uuid: modelElement.getAttribute('drupalMediaEntityUuid'), + }); + // The `isMediaUrl` received from the server is guaranteed to already have + // a query string (for the CSRF token). + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Media::getDynamicPluginConfig() + const response = await fetch(`${isMediaUrl}&${query}`); + if (response.ok) { + return JSON.parse(await response.text()); + } + + return null; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js new file mode 100644 index 000000000000..d1a532b0e98f --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js @@ -0,0 +1,27 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words mediaimagetextalternativecommand textalternativeformview */ + +import { Plugin } from 'ckeditor5/src/core'; +import MediaImageTextAlternativeCommand from './mediaimagetextalternativecommand'; + +/** + * The image text alternative editing plugin. + */ +export default class MediaImageTextAlternativeEditing extends Plugin { + /** + * @inheritDoc + */ + static get pluginName() { + return 'MediaImageTextAlternativeEditing'; + } + + /** + * @inheritDoc + */ + init() { + this.editor.commands.add( + 'mediaImageTextAlternative', + new MediaImageTextAlternativeCommand(this.editor), + ); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeui.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeui.js new file mode 100644 index 000000000000..28ca24ef5ab7 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeui.js @@ -0,0 +1,218 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* cspell:words textalternativeformview */ + +import { Plugin, icons } from 'ckeditor5/src/core'; +import { + ButtonView, + ContextualBalloon, + clickOutsideHandler, +} from 'ckeditor5/src/ui'; + +import { getSelectedDrupalMediaWidget } from '../utils'; +import { + getBalloonPositionData, + repositionContextualBalloon, +} from '../ui/utils'; + +import TextAlternativeFormView from './ui/textalternativeformview'; + +/** + * The media image text alternative UI plugin. + * + * @see https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-image/src/imagetextalternative/imagetextalternativeui.js + */ +export default class MediaImageTextAlternativeUi extends Plugin { + /** + * @inheritDoc + */ + static get requires() { + return [ContextualBalloon]; + } + + /** + * @inheritDoc + */ + static get pluginName() { + return 'MediaImageTextAlternativeUi'; + } + + /** + * @inheritDoc + */ + init() { + this._createButton(); + this._createForm(); + } + + /** + * @inheritDoc + */ + destroy() { + super.destroy(); + this._form.destroy(); + } + + /** + * Creates a button showing the balloon panel for changing the image text + * alternative and registers it in the editor ComponentFactory. + */ + _createButton() { + const editor = this.editor; + const t = editor.t; + + editor.ui.componentFactory.add('mediaImageTextAlternative', (locale) => { + const command = editor.commands.get('mediaImageTextAlternative'); + const view = new ButtonView(locale); + + view.set({ + label: t('Override media image text alternative'), + icon: icons.lowVision, + tooltip: true, + }); + + view.bind('isVisible').to(command, 'isEnabled'); + + this.listenTo(view, 'execute', () => { + this._showForm(); + }); + + return view; + }); + } + + /** + * Creates the {@link module:image/imagetextalternative/ui/textalternativeformview~TextAlternativeFormView} + * form. + * + * @private + */ + _createForm() { + const editor = this.editor; + const view = editor.editing.view; + const viewDocument = view.document; + + /** + * The contextual balloon plugin instance. + */ + this._balloon = this.editor.plugins.get('ContextualBalloon'); + + /** + * A form containing a textarea and buttons, used to change the `alt` text value. + */ + this._form = new TextAlternativeFormView(editor.locale); + + // Render the form so its #element is available for clickOutsideHandler. + this._form.render(); + + this.listenTo(this._form, 'submit', () => { + editor.execute('mediaImageTextAlternative', { + newValue: this._form.labeledInput.fieldView.element.value, + }); + + this._hideForm(true); + }); + + this.listenTo(this._form, 'cancel', () => { + this._hideForm(true); + }); + + // Close the form on Esc key press. + this._form.keystrokes.set('Esc', (data, cancel) => { + this._hideForm(true); + cancel(); + }); + + // Reposition the balloon or hide the form if an image widget is no longer selected. + this.listenTo(editor.ui, 'update', () => { + if (!getSelectedDrupalMediaWidget(viewDocument.selection)) { + this._hideForm(true); + } else if (this._isVisible) { + repositionContextualBalloon(editor); + } + }); + + // Close on click outside of balloon panel element. + clickOutsideHandler({ + emitter: this._form, + activator: () => this._isVisible, + contextElements: [this._balloon.view.element], + callback: () => this._hideForm(), + }); + } + + /** + * Shows the form in a balloon. + */ + _showForm() { + if (this._isVisible) { + return; + } + + const editor = this.editor; + const command = editor.commands.get('mediaImageTextAlternative'); + const labeledInput = this._form.labeledInput; + + this._form.disableCssTransitions(); + + if (!this._isInBalloon) { + this._balloon.add({ + view: this._form, + position: getBalloonPositionData(editor), + }); + } + + // Make sure that each time the panel shows up, the field remains in sync with the value of + // the command. If the user typed in the input, then canceled the balloon (`labeledInput#value` + // stays unaltered) and re-opened it without changing the value of the command, they would see the + // old value instead of the actual value of the command. + // https://github.com/ckeditor/ckeditor5-image/issues/114 + labeledInput.fieldView.element.value = command.value || ''; + labeledInput.fieldView.value = labeledInput.fieldView.element.value; + + this._form.labeledInput.fieldView.select(); + + this._form.enableCssTransitions(); + } + + /** + * Removes the {@link #_form} from the {@link #_balloon}. + * + * @param {Boolean} [focusEditable=false] Controls whether the editing view is focused afterwards. + * @private + */ + _hideForm(focusEditable) { + if (!this._isInBalloon) { + return; + } + + // Blur the input element before removing it from DOM to prevent issues in some browsers. + // See https://github.com/ckeditor/ckeditor5/issues/1501. + if (this._form.focusTracker.isFocused) { + this._form.saveButtonView.focus(); + } + + this._balloon.remove(this._form); + + if (focusEditable) { + this.editor.editing.view.focus(); + } + } + + /** + * Returns `true` when the form is the visible view in the balloon. + * + * @type {Boolean} + */ + get _isVisible() { + return this._balloon.visibleView === this._form; + } + + /** + * Returns `true` when the form is in the balloon. + * + * @type {Boolean} + */ + get _isInBalloon() { + return this._balloon.hasView(this._form); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js new file mode 100644 index 000000000000..49d865f81727 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js @@ -0,0 +1,173 @@ +/* eslint-disable import/no-extraneous-dependencies */ + +// cspell:ignore focusables + +import { + ButtonView, + FocusCycler, + LabeledFieldView, + View, + ViewCollection, + createLabeledInputText, + injectCssTransitionDisabler, + submitHandler, +} from 'ckeditor5/src/ui'; +import { FocusTracker, KeystrokeHandler } from 'ckeditor5/src/utils'; +import { icons } from 'ckeditor5/src/core'; + +// cspell:ignore focusables + +export default class TextAlternativeFormView extends View { + /** + * @inheritdoc + */ + constructor(locale) { + super(locale); + + const t = this.locale.t; + + /** + * Tracks information about the DOM focus in the form. + */ + this.focusTracker = new FocusTracker(); + + /** + * An instance of the KeystrokeHandler. + */ + this.keystrokes = new KeystrokeHandler(); + + /** + * An input with a label. + */ + this.labeledInput = this._createLabeledInputView(); + + /** + * A button used to submit the form. + */ + this.saveButtonView = this._createButton( + t('Save'), + icons.check, + 'ck-button-save', + ); + this.saveButtonView.type = 'submit'; + + /** + * A button used to cancel the form. + */ + this.cancelButtonView = this._createButton( + t('Cancel'), + icons.cancel, + 'ck-button-cancel', + 'cancel', + ); + + /** + * A collection of views which can be focused in the form. + */ + this._focusables = new ViewCollection(); + + /** + * Helps cycling over focusables in the form. + */ + this._focusCycler = new FocusCycler({ + focusables: this._focusables, + focusTracker: this.focusTracker, + keystrokeHandler: this.keystrokes, + actions: { + // Navigate form fields backwards using the Shift + Tab keystroke. + focusPrevious: 'shift + tab', + + // Navigate form fields forwards using the Tab key. + focusNext: 'tab', + }, + }); + + this.setTemplate({ + tag: 'form', + + attributes: { + class: ['ck', 'ck-text-alternative-form', 'ck-responsive-form'], + tabindex: '-1', + }, + + children: [this.labeledInput, this.saveButtonView, this.cancelButtonView], + }); + + injectCssTransitionDisabler(this); + } + + /** + * @inheritdoc + */ + render() { + super.render(); + + this.keystrokes.listenTo(this.element); + + submitHandler({ view: this }); + + [this.labeledInput, this.saveButtonView, this.cancelButtonView].forEach( + (v) => { + // Register the view as focusable. + this._focusables.add(v); + + // Register the view in the focus tracker. + this.focusTracker.add(v.element); + }, + ); + } + + /** + * Creates the button view. + * + * @param {String} label + * The button label + * @param {String} icon + * The button's icon. + * @param {String} className + * The additional button CSS class name. + * @param {String} [eventName] + * The event name that the ButtonView#execute event will be delegated to. + * @return {module:ui/view~View} + * The button view instance. + */ + _createButton(label, icon, className, eventName) { + const button = new ButtonView(this.locale); + + button.set({ + label, + icon, + tooltip: true, + }); + + button.extendTemplate({ + attributes: { + class: className, + }, + }); + + if (eventName) { + button.delegate('execute').to(this, eventName); + } + + return button; + } + + /** + * Creates an input with a label. + * + * @return {module:ui/view~View} + * Labeled field view instance. + */ + _createLabeledInputView() { + const t = this.locale.t; + const labeledInput = new LabeledFieldView( + this.locale, + createLabeledInputText, + ); + + labeledInput.label = t('Override text alternative'); + + return labeledInput; + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/ui/utils.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/ui/utils.js new file mode 100644 index 000000000000..8201692ea783 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/ui/utils.js @@ -0,0 +1,53 @@ +/* eslint-disable import/no-extraneous-dependencies */ + +import { BalloonPanelView } from 'ckeditor5/src/ui'; +import { getSelectedDrupalMediaWidget } from '../utils'; + +/** + * Returns the positioning options that control the geometry of the contextual + * balloon with respect to the selected element in the editor content. + * + * @param {module:core/editor/editor~Editor} editor + * The editor instance. + * @return {Object} + * The options. + * + * @internal + */ +export function getBalloonPositionData(editor) { + const editingView = editor.editing.view; + const defaultPositions = BalloonPanelView.defaultPositions; + + return { + target: editingView.domConverter.viewToDom( + editingView.document.selection.getSelectedElement(), + ), + positions: [ + defaultPositions.northArrowSouth, + defaultPositions.northArrowSouthWest, + defaultPositions.northArrowSouthEast, + defaultPositions.southArrowNorth, + defaultPositions.southArrowNorthWest, + defaultPositions.southArrowNorthEast, + ], + }; +} + +/** + * A helper utility that positions the contextual balloon instance with respect + * to the image in the editor content, if one is selected. + * + * @param {module:core/editor/editor~Editor} editor + * The editor instance. + * + * @internal + */ +export function repositionContextualBalloon(editor) { + const balloon = editor.plugins.get('ContextualBalloon'); + + if (getSelectedDrupalMediaWidget(editor.editing.view.document.selection)) { + const position = getBalloonPositionData(editor); + + balloon.updatePosition(position); + } +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/utils.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/utils.js new file mode 100644 index 000000000000..3289b8931536 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/utils.js @@ -0,0 +1,51 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { isWidget } from 'ckeditor5/src/widget'; + +/** + * Checks if the provided model element is `drupalMedia`. + * + * @param {module:engine/model/element~Element} modelElement + * The model element to be checked. + * @return {boolean} + * A boolean indicating whether element is drupalMedia element. + * + * @internal + */ +export function isDrupalMedia(modelElement) { + return !!modelElement && modelElement.is('element', 'drupalMedia'); +} + +/** + * Checks if view element is <drupal-media> element. + * + * @param {module:engine/view/element~Element} viewElement + * The view element. + * @return {boolean} + * A boolean indicating whether element is <drupal-media> element. + * + * @internal + */ +export function isDrupalMediaWidget(viewElement) { + return ( + isWidget(viewElement) && !!viewElement.getCustomProperty('drupalMedia') + ); +} + +/** + * Gets selected Drupal Media widget if only Drupal Media is currently selected. + * + * @param {module:engine/model/selection~Selection} selection + * The current selection. + * @return {module:engine/view/element~Element|null} + * The currently selected Drupal Media widget or null. + * + * @internal + */ +export function getSelectedDrupalMediaWidget(selection) { + const viewElement = selection.getSelectedElement(); + if (viewElement && isDrupalMediaWidget(viewElement)) { + return viewElement; + } + + return null; +} diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/theme/icons/medialibrary.svg b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/theme/icons/medialibrary.svg new file mode 100644 index 000000000000..f96cff494c72 --- /dev/null +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/theme/icons/medialibrary.svg @@ -0,0 +1 @@ +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z" fill="black"/></svg> diff --git a/core/modules/ckeditor5/js/ie11.filter.warnings.es6.js b/core/modules/ckeditor5/js/ie11.filter.warnings.es6.js new file mode 100644 index 000000000000..aeee85ed5c11 --- /dev/null +++ b/core/modules/ckeditor5/js/ie11.filter.warnings.es6.js @@ -0,0 +1,131 @@ +/** + * @file + * Provides IE11 compatibility warnings when choosing a text editor. + */ + +((Drupal, once, Modernizr) => { + /** + * Presents a warning when selecting CKEditor 5 as a text format's text editor. + * + * @type {Drupal~behavior} + */ + Drupal.behaviors.ckEditor5warn = { + attach: function attach() { + const isIE11 = Modernizr.mq( + '(-ms-high-contrast: active), (-ms-high-contrast: none)', + ); + const editorSelect = once( + 'editor-select', + document.querySelector( + '#filter-format-edit-form #edit-editor-editor, #filter-format-add-form #edit-editor-editor', + ), + ); + + if (typeof editorSelect[0] !== 'undefined') { + const select = editorSelect[0]; + + // Add a container for messages above the text format select element. + const selectMessageContainer = document.createElement('div'); + select.parentNode.insertBefore(selectMessageContainer, select); + const selectMessages = new Drupal.Message(selectMessageContainer); + const editorSettings = document.querySelector( + '#editor-settings-wrapper', + ); + + /** + * Adds an IE11 compatibility warning to the message container. + */ + const ck5Warning = () => { + selectMessages.add( + Drupal.t( + 'CKEditor 5 is not compatible with Internet Explorer 11. Text fields using CKEditor 5 will still be editable but without the benefits of CKEditor.', + ), + { + type: 'warning', + }, + ); + if (isIE11) { + // https://www.drupal.org/docs/system-requirements/browser-requirements + selectMessages.add( + Drupal.t( + 'Text editor toolbar settings are not available. They will be available in any <a href="@supported-browsers">supported browser</a> other than Internet Explorer', + { + '@supported-browsers': + 'https://www.drupal.org/docs/system-requirements/browser-requirements', + }, + ), + { + type: 'error', + }, + ); + editorSettings.hidden = true; + } + }; + + /** + * Adds a warning if the selected editor is ckeditor5, otherwise clears + * the message container. + */ + const updateWarningStatus = () => { + if ( + select.value === 'ckeditor5' && + !select.classList.contains('error') + ) { + ck5Warning(); + } else { + editorSettings.hidden = false; + selectMessages.clear(); + } + }; + + const selectChangeHandler = () => { + // Declare the observer first so the observer callback can access it. + let editorSelectObserver = null; + + /** + * MutationObserver callback for the editor select. + * + * This listens for the removal 'disabled' attribute on the <select>, + * which means the AJAX callback has completed and the form is in a + * state suitable for seeing if the IE11 warning is needed. + * + * @param {Array} mutations + * The element's mutations. + */ + function whenSelectAttributeChanges(mutations) { + for (let i = 0; i < mutations.length; i++) { + // When the select input is no longer disabled, the AJAX request + // is complete and the UI is in a state where it can be determined + // if the IE11 warning is needed. + if ( + mutations[i].type === 'attributes' && + mutations[i].attributeName === 'disabled' && + !select.disabled + ) { + updateWarningStatus(); + editorSelectObserver.disconnect(); + } + } + } + + // An observer is used because during the select change event, it is + // not yet known if validation prevented the switch to CKEditor 5. + // The IE11 warning should only appear if the switch wasn't prevented + // by validation. + editorSelectObserver = new MutationObserver( + whenSelectAttributeChanges, + ); + editorSelectObserver.observe(select, { + attributes: true, + attributeOldValue: true, + }); + }; + + updateWarningStatus(); + + // Listen to text format selection changes. + select.addEventListener('change', selectChangeHandler); + } + }, + }; +})(Drupal, once, Modernizr); diff --git a/core/modules/ckeditor5/js/ie11.filter.warnings.js b/core/modules/ckeditor5/js/ie11.filter.warnings.js new file mode 100644 index 000000000000..2afbf8b6a774 --- /dev/null +++ b/core/modules/ckeditor5/js/ie11.filter.warnings.js @@ -0,0 +1,69 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal, once, Modernizr) { + Drupal.behaviors.ckEditor5warn = { + attach: function attach() { + var isIE11 = Modernizr.mq('(-ms-high-contrast: active), (-ms-high-contrast: none)'); + var editorSelect = once('editor-select', document.querySelector('#filter-format-edit-form #edit-editor-editor, #filter-format-add-form #edit-editor-editor')); + + if (typeof editorSelect[0] !== 'undefined') { + var select = editorSelect[0]; + var selectMessageContainer = document.createElement('div'); + select.parentNode.insertBefore(selectMessageContainer, select); + var selectMessages = new Drupal.Message(selectMessageContainer); + var editorSettings = document.querySelector('#editor-settings-wrapper'); + + var ck5Warning = function ck5Warning() { + selectMessages.add(Drupal.t('CKEditor 5 is not compatible with Internet Explorer 11. Text fields using CKEditor 5 will still be editable but without the benefits of CKEditor.'), { + type: 'warning' + }); + + if (isIE11) { + selectMessages.add(Drupal.t('Text editor toolbar settings are not available. They will be available in any <a href="@supported-browsers">supported browser</a> other than Internet Explorer', { + '@supported-browsers': 'https://www.drupal.org/docs/system-requirements/browser-requirements' + }), { + type: 'error' + }); + editorSettings.hidden = true; + } + }; + + var updateWarningStatus = function updateWarningStatus() { + if (select.value === 'ckeditor5' && !select.classList.contains('error')) { + ck5Warning(); + } else { + editorSettings.hidden = false; + selectMessages.clear(); + } + }; + + var selectChangeHandler = function selectChangeHandler() { + var editorSelectObserver = null; + + function whenSelectAttributeChanges(mutations) { + for (var i = 0; i < mutations.length; i++) { + if (mutations[i].type === 'attributes' && mutations[i].attributeName === 'disabled' && !select.disabled) { + updateWarningStatus(); + editorSelectObserver.disconnect(); + } + } + } + + editorSelectObserver = new MutationObserver(whenSelectAttributeChanges); + editorSelectObserver.observe(select, { + attributes: true, + attributeOldValue: true + }); + }; + + updateWarningStatus(); + select.addEventListener('change', selectChangeHandler); + } + } + }; +})(Drupal, once, Modernizr); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/ie11.user.warnings.es6.js b/core/modules/ckeditor5/js/ie11.user.warnings.es6.js new file mode 100644 index 000000000000..3fe12292cc6a --- /dev/null +++ b/core/modules/ckeditor5/js/ie11.user.warnings.es6.js @@ -0,0 +1,137 @@ +/** + * @file + * Provide warnings when attempting to load CKEditor 5 on IE11. + */ + +((Drupal, Modernizr) => { + const isIE11 = Modernizr.mq( + '(-ms-high-contrast: active), (-ms-high-contrast: none)', + ); + + // If the browser is IE11, create an alternate version of + // Drupal.editors.ckeditor5 that provides warnings. In IE11, the incompatible + // Javascript of CKEditor 5 prevents Drupal.editors.ckeditor5 from being + // created. Features such as Quick Edit that require the presence of a + // Drupal.editors.ckeditor5, even for fields that do not use CKEditor 5. + if (isIE11) { + // This will reference a MutationObserver used by several functions in + // Drupal.editors.ckeditor5. It is declared here and not the editor object + // in order to work with IE11 object scope. + let quickEditLabelObserver = null; + + /** + * @namespace + */ + Drupal.editors.ckeditor5 = { + /** + * Provides a warning when trying to attach CKEditor 5 to a field in IE11. + * + * @param {HTMLElement} element + * The element the editor would have been attached to. + */ + attach: function attach(element) { + // Add a Drupal.Message container above the textarea and use it to + // provide a warning message to IE11 users. + const editorMessageContainer = document.createElement('div'); + element.parentNode.insertBefore(editorMessageContainer, element); + const editorMessages = new Drupal.Message(editorMessageContainer); + editorMessages.add( + Drupal.t( + 'Internet Explorer 11 user: a rich text editor is available for this field when used with any other supported browser.', + ), + { + type: 'warning', + }, + ); + }, + + /** + * Editor detach callback. + */ + detach: function detach() { + const quickEditToolbar = document.querySelector( + '#quickedit-entity-toolbar .quickedit-toolbar', + ); + if (quickEditToolbar) { + // Remove classes that style the Quick Edit toolbar as a warning. + quickEditToolbar.classList.remove('ck5-ie11'); + quickEditToolbar.classList.add('icon-pencil'); + + // Disconnect the observer from the Quick Edit label that converts the + // label to a warning. A warning isn't needed for fields not using + // CKEditor 5. + quickEditLabelObserver.disconnect(); + } + }, + + /** + * Registers a callback which CKEditor 5 will call on change:data event. + */ + onChange: function onChange() { + // Intentionally empty. + }, + + /** + * Provides a warning when Quick Edit tries to attach CKEditor 5 in IE11. + * + * @param {HTMLElement} element + * The element the editor would have been attached to. + * + * @see Drupal.quickedit.editors.editor + */ + attachInlineEditor: function attachInlineEditor(element) { + const quickEditToolbar = document.querySelector( + '#quickedit-entity-toolbar .quickedit-toolbar', + ); + + const notEditableAlert = Drupal.t('Field Not Editable'); + const notEditableMessage = Drupal.t( + 'CKEditor 5 is not compatible with IE11.', + ); + + /** + * Changes the Quick Edit label to a warning. + * + * @param {Element} toolbarLabel + * The Quick Edit toolbar label element. + */ + function quickEditLabelWarnIE11(toolbarLabel) { + // Disconnect the observer to prevent infinite recursion. + quickEditLabelObserver.disconnect(); + + // Change the quickEdit toolbar label to a warning that informs + // IE11 users that they can't edit the field due to CKEditor not + // working with IE11. + toolbarLabel.innerHTML = `<div><b>${notEditableAlert}</b><div>${notEditableMessage}</div></div>`; + quickEditLabelObserver.observe(toolbarLabel, { childList: true }); + } + + if (quickEditToolbar) { + quickEditToolbar.classList.add('ck5-ie11'); + quickEditToolbar.classList.remove('icon-pencil'); + element.classList.add('ck5-ie11'); + + // Prepare variables that will be used for changing the QuickEdit + // toolbar label to a warning. + const toolbarLabel = quickEditToolbar.querySelector( + '.quickedit-toolbar-label', + ); + + // Updating the Quick Edit label to display as a warning is triggered + // via an observer. An observer us used as there are multiple + // Quick Edit Backbone View events that alter the contents of this + // label. An observer is used to guarantee the warning persists + // without having to override multiple Backbone event handlers. + quickEditLabelObserver = new MutationObserver((mutations) => { + for (let i = 0; i < mutations.length; i++) { + if (mutations[i].type === 'childList') { + quickEditLabelWarnIE11(toolbarLabel); + } + } + }); + quickEditLabelObserver.observe(toolbarLabel, { childList: true }); + } + }, + }; + } +})(Drupal, Modernizr); diff --git a/core/modules/ckeditor5/js/ie11.user.warnings.js b/core/modules/ckeditor5/js/ie11.user.warnings.js new file mode 100644 index 000000000000..d1849fbca004 --- /dev/null +++ b/core/modules/ckeditor5/js/ie11.user.warnings.js @@ -0,0 +1,64 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal, Modernizr) { + var isIE11 = Modernizr.mq('(-ms-high-contrast: active), (-ms-high-contrast: none)'); + + if (isIE11) { + var quickEditLabelObserver = null; + Drupal.editors.ckeditor5 = { + attach: function attach(element) { + var editorMessageContainer = document.createElement('div'); + element.parentNode.insertBefore(editorMessageContainer, element); + var editorMessages = new Drupal.Message(editorMessageContainer); + editorMessages.add(Drupal.t('Internet Explorer 11 user: a rich text editor is available for this field when used with any other supported browser.'), { + type: 'warning' + }); + }, + detach: function detach() { + var quickEditToolbar = document.querySelector('#quickedit-entity-toolbar .quickedit-toolbar'); + + if (quickEditToolbar) { + quickEditToolbar.classList.remove('ck5-ie11'); + quickEditToolbar.classList.add('icon-pencil'); + quickEditLabelObserver.disconnect(); + } + }, + onChange: function onChange() {}, + attachInlineEditor: function attachInlineEditor(element) { + var quickEditToolbar = document.querySelector('#quickedit-entity-toolbar .quickedit-toolbar'); + var notEditableAlert = Drupal.t('Field Not Editable'); + var notEditableMessage = Drupal.t('CKEditor 5 is not compatible with IE11.'); + + function quickEditLabelWarnIE11(toolbarLabel) { + quickEditLabelObserver.disconnect(); + toolbarLabel.innerHTML = "<div><b>".concat(notEditableAlert, "</b><div>").concat(notEditableMessage, "</div></div>"); + quickEditLabelObserver.observe(toolbarLabel, { + childList: true + }); + } + + if (quickEditToolbar) { + quickEditToolbar.classList.add('ck5-ie11'); + quickEditToolbar.classList.remove('icon-pencil'); + element.classList.add('ck5-ie11'); + var toolbarLabel = quickEditToolbar.querySelector('.quickedit-toolbar-label'); + quickEditLabelObserver = new MutationObserver(function (mutations) { + for (var i = 0; i < mutations.length; i++) { + if (mutations[i].type === 'childList') { + quickEditLabelWarnIE11(toolbarLabel); + } + } + }); + quickEditLabelObserver.observe(toolbarLabel, { + childList: true + }); + } + } + }; + } +})(Drupal, Modernizr); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/media_embed_ckeditor5.theme.es6.js b/core/modules/ckeditor5/js/media_embed_ckeditor5.theme.es6.js new file mode 100644 index 000000000000..ee9dbbef7b55 --- /dev/null +++ b/core/modules/ckeditor5/js/media_embed_ckeditor5.theme.es6.js @@ -0,0 +1,19 @@ +/** + * @file + * Theme elements for the Media Embed CKEditor5 plugin. + */ + +((Drupal) => { + /** + * Themes the error displayed when the media embed preview fails. + * + * @return {string} + * A string representing a DOM fragment. + * + * @see media-embed-error.html.twig + */ + Drupal.theme.mediaEmbedPreviewError = () => + `<div>${Drupal.t( + 'An error occurred while trying to preview the media. Please save your work and reload this page.', + )}</div>`; +})(Drupal); diff --git a/core/modules/ckeditor5/js/media_embed_ckeditor5.theme.js b/core/modules/ckeditor5/js/media_embed_ckeditor5.theme.js new file mode 100644 index 000000000000..90d0db9545b9 --- /dev/null +++ b/core/modules/ckeditor5/js/media_embed_ckeditor5.theme.js @@ -0,0 +1,12 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal) { + Drupal.theme.mediaEmbedPreviewError = function () { + return "<div>".concat(Drupal.t('An error occurred while trying to preview the media. Please save your work and reload this page.'), "</div>"); + }; +})(Drupal); \ No newline at end of file diff --git a/core/modules/ckeditor5/src/Annotation/CKEditor4To5Upgrade.php b/core/modules/ckeditor5/src/Annotation/CKEditor4To5Upgrade.php new file mode 100644 index 000000000000..d33472b74a1b --- /dev/null +++ b/core/modules/ckeditor5/src/Annotation/CKEditor4To5Upgrade.php @@ -0,0 +1,50 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Annotation; + +use Drupal\Component\Annotation\Plugin; + +/** + * Defines a CKEditor4To5Upgrade annotation object. + * + * Plugin Namespace: Plugin\CKEditor4To5Upgrade. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginInterface + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface + * @see plugin_api + * + * @Annotation + */ +class CKEditor4To5Upgrade extends Plugin { + + /** + * The plugin ID. + * + * @var string + */ + public $id; + + /** + * The CKEditor 4 buttons for which an upgrade path is provided. + * + * @var string[] + */ + public $cke4_buttons; + + /** + * The CKEditor 4 plugins for whose settings an upgrade path is provided. + * + * @var string[] + */ + public $cke4_plugin_settings; + + /** + * The CKEditor 5 plugins with configurable subset with upgrade path provided. + * + * @var string[] + */ + public $cke5_plugin_elements_subset_configuration; + +} diff --git a/core/modules/ckeditor5/src/Annotation/CKEditor5AspectsOfCKEditor5Plugin.php b/core/modules/ckeditor5/src/Annotation/CKEditor5AspectsOfCKEditor5Plugin.php new file mode 100644 index 000000000000..533786a376fa --- /dev/null +++ b/core/modules/ckeditor5/src/Annotation/CKEditor5AspectsOfCKEditor5Plugin.php @@ -0,0 +1,43 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Annotation; + +use Drupal\Component\Annotation\Plugin; + +/** + * Defines the "CKEditor 5 aspects of a CKEditor5Plugin" annotation object. + * + * Plugin Namespace: Plugin\CKEditor5Plugin. + * + * @see \Drupal\ckeditor5\Plugin\CKEditorPluginInterface + * @see \Drupal\ckeditor5\Plugin\CKEditorPluginBase + * @see \Drupal\ckeditor5\Plugin\CKEditorPluginManager + * @see plugin_api + * + * @Annotation + * @see \Drupal\ckeditor5\Annotation\CKEditor5Plugin + * @see \Drupal\ckeditor5\Annotation\DrupalPartsOfCKEditor5Plugin + */ +class CKEditor5AspectsOfCKEditor5Plugin extends Plugin { + + /** + * The CKEditor5 plugin classes provided. + * + * Found in the CKEditor5 global js object as {package.Class}. + * + * @var string[] + */ + public $plugins; + + /** + * A keyed array of additional values for the CKEditor5 constructor config. + * + * This property is optional and it does not need to be declared. + * + * @var array[] + */ + public $config = []; + +} diff --git a/core/modules/ckeditor5/src/Annotation/CKEditor5Plugin.php b/core/modules/ckeditor5/src/Annotation/CKEditor5Plugin.php new file mode 100644 index 000000000000..5c6b876f0592 --- /dev/null +++ b/core/modules/ckeditor5/src/Annotation/CKEditor5Plugin.php @@ -0,0 +1,88 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Annotation; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition; +use Drupal\Component\Annotation\Plugin; + +/** + * Defines a CKEditor5Plugin annotation object. + * + * Plugin Namespace: Plugin\CKEditor5Plugin. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginInterface + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface + * @see plugin_api + * + * @Annotation + * @see \Drupal\ckeditor5\Annotation\CKEditor5AspectsOfCKEditor5Plugin + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin + */ +class CKEditor5Plugin extends Plugin { + + /** + * The plugin ID. + * + * @var string + */ + public $id; + + /** + * The CKEditor 5 aspects of the plugin definition. + * + * @var \Drupal\ckeditor5\Annotation\CKEditor5AspectsOfCKEditor5Plugin + */ + public $ckeditor5; + + /** + * The Drupal aspects of the plugin definition. + * + * @var \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin + */ + public $drupal; + + /** + * {@inheritdoc} + * + * Overridden for compatibility with the AnnotationBridgeDecorator, which + * ensures YAML-defined CKEditor 5 plugin definitions are also processed by + * annotations. Unfortunately it does not (yet) support nested annotations. + * Force YAML-defined plugin definitions to be parsed by the + * annotations, to ensure consistent handling of defaults. + * + * @see \Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator::getDefinitions() + */ + public function __construct($values) { + if (isset($values['ckeditor5']) && is_array($values['ckeditor5'])) { + $values['ckeditor5'] = new CKEditor5AspectsOfCKEditor5Plugin($values['ckeditor5']); + } + if (isset($values['drupal']) && is_array($values['drupal'])) { + $values['drupal'] = new DrupalAspectsOfCKEditor5Plugin($values['drupal']); + } + parent::__construct($values); + } + + /** + * {@inheritdoc} + */ + public function getClass() { + return $this->definition['drupal']['class']; + } + + /** + * {@inheritdoc} + */ + public function setClass($class) { + $this->definition['drupal']['class'] = $class; + } + + /** + * {@inheritdoc} + */ + public function get(): CKEditor5PluginDefinition { + return new CKEditor5PluginDefinition($this->definition); + } + +} diff --git a/core/modules/ckeditor5/src/Annotation/DrupalAspectsOfCKEditor5Plugin.php b/core/modules/ckeditor5/src/Annotation/DrupalAspectsOfCKEditor5Plugin.php new file mode 100644 index 000000000000..9f50ec41911c --- /dev/null +++ b/core/modules/ckeditor5/src/Annotation/DrupalAspectsOfCKEditor5Plugin.php @@ -0,0 +1,100 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Annotation; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\Component\Annotation\Plugin; + +/** + * Defines the "Drupal aspects of a CKEditor5Plugin" annotation object. + * + * Plugin Namespace: Plugin\CKEditor5Plugin. + * + * @see \Drupal\ckeditor5\Plugin\CKEditorPluginInterface + * @see \Drupal\ckeditor5\Plugin\CKEditorPluginBase + * @see \Drupal\ckeditor5\Plugin\CKEditorPluginManager + * @see plugin_api + * + * @Annotation + * @see \Drupal\ckeditor5\Annotation\CKEditor5Plugin + * @see \Drupal\ckeditor5\Annotation\CKEditor5AspectsOfCKEditor5Plugin + */ +class DrupalAspectsOfCKEditor5Plugin extends Plugin { + + /** + * The human-readable name of the CKEditor plugin. + * + * @var \Drupal\Core\Annotation\Translation + * @ingroup plugin_translatable + */ + public $label; + + /** + * The CKEditor 5 plugin class. + * + * If not specified, the CKEditor5PluginDefault class is used. + * + * This property is optional and it does not need to be declared. + * + * @var string + */ + public $class = CKEditor5PluginDefault::class; + + /** + * The library this plugin requires. + * + * This property is optional and it does not need to be declared. + * + * @var string|false + */ + public $library = FALSE; + + /** + * The admin library this plugin provides. + * + * This property is optional and it does not need to be declared. + * + * @var string|false + */ + public $admin_library = FALSE; + + /** + * List of elements and attributes provided. + * + * An array of strings, or false if no elements are provided. + * + * Syntax for each array value: + * - <element> only allows that HTML element with no attributes + * - <element attrA attrB> only allows that HTML element with attributes attrA + * and attrB, and any value for those attributes. + * - <element attrA="foo bar baz" attrB="qux-*"> only allows that HTML element + * with attributes attrA (if attrA contains one of the three listed values) + * and attrB (if its value has the provided prefix). + * - <element data-*> only allows that HTML element with any attribute that + * has the given prefix. + * + * @var string[]|false + */ + public $elements; + + /** + * List of toolbar items the plugin provides. + * + * This property is optional and it does not need to be declared. + * + * @var array[] + */ + public $toolbar_items = []; + + /** + * List of conditions to enable this plugin. + * + * This property is optional and it does not need to be declared. + * + * @var array|false + */ + public $conditions = FALSE; + +} diff --git a/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php b/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php new file mode 100644 index 000000000000..9d4a6c674e9c --- /dev/null +++ b/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php @@ -0,0 +1,297 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Controller; + +use Drupal\Component\Utility\Bytes; +use Drupal\Component\Utility\Crypt; +use Drupal\Component\Utility\Environment; +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Controller\ControllerBase; +use Drupal\Core\Entity\Plugin\DataType\EntityAdapter; +use Drupal\Core\File\Event\FileUploadSanitizeNameEvent; +use Drupal\Core\File\Exception\FileException; +use Drupal\Core\File\FileSystemInterface; +use Drupal\Core\Lock\LockBackendInterface; +use Drupal\Core\Session\AccountInterface; +use Drupal\editor\Entity\Editor; +use Drupal\Core\Validation\DrupalTranslator; +use Drupal\file\Entity\File; +use Drupal\file\FileInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\HttpException; +use Symfony\Component\Mime\MimeTypeGuesserInterface; +use Symfony\Component\Validator\ConstraintViolation; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; + +/** + * Returns response for CKEditor5 Simple image upload adapter. + * + * @internal + * Controller classes are internal. + */ +class CKEditor5ImageController extends ControllerBase { + + /** + * The file system service. + * + * @var \Drupal\Core\File\FileSystem + */ + protected $fileSystem; + + /** + * The currently authenticated user. + * + * @var \Drupal\Core\Session\AccountInterface + */ + protected $currentUser; + + /** + * The MIME type guesser. + * + * @var \Symfony\Component\Mime\MimeTypeGuesserInterface + */ + protected $mimeTypeGuesser; + + /** + * The lock service. + * + * @var \Drupal\Core\Lock\LockBackendInterface + */ + protected $lock; + + /** + * The event dispatcher. + * + * @var \Symfony\Contracts\EventDispatcher\EventDispatcherInterface + */ + protected $eventDispatcher; + + /** + * Constructs a new CKEditor5ImageController. + * + * @param \Drupal\Core\File\FileSystemInterface $file_system + * The file system service. + * @param \Drupal\Core\Session\AccountInterface $current_user + * The currently authenticated user. + * @param \Symfony\Component\Mime\MimeTypeGuesserInterface $mime_type_guesser + * The MIME type guesser. + * @param \Drupal\Core\Lock\LockBackendInterface $lock + * The lock service. + * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $event_dispatcher + * The event dispatcher. + */ + public function __construct(FileSystemInterface $file_system, AccountInterface $current_user, MimeTypeGuesserInterface $mime_type_guesser, LockBackendInterface $lock, EventDispatcherInterface $event_dispatcher) { + $this->fileSystem = $file_system; + $this->currentUser = $current_user; + $this->mimeTypeGuesser = $mime_type_guesser; + $this->lock = $lock; + $this->eventDispatcher = $event_dispatcher; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('file_system'), + $container->get('current_user'), + $container->get('file.mime_type.guesser'), + $container->get('lock'), + $container->get('event_dispatcher'), + ); + } + + /** + * Uploads and saves an image from a CKEditor5 POST. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * The current request object. + * + * @return \Symfony\Component\HttpFoundation\JsonResponse + * A JSON object including the file url. + * + * @throws \Symfony\Component\HttpKernel\Exception\HttpException + * Thrown when file system errors occur. + * @throws \Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException + * Thrown when validation errors occur. + * @throws \Drupal\Core\Entity\EntityStorageException + * Thrown when file entity could not be saved. + */ + public function upload(Request $request) { + // Getting the UploadedFile directly from the request. + $upload = $request->files->get('upload'); + $filename = $upload->getClientOriginalName(); + + $editor = $request->attributes->get('editor'); + $image_upload = $editor->getImageUploadSettings(); + $destination = $image_upload['scheme'] . '://' . $image_upload['directory']; + + // Check the destination file path is writable. + if (!$this->fileSystem->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY)) { + throw new HttpException(500, 'Destination file path is not writable'); + } + + $max_filesize = min(Bytes::toNumber($image_upload['max_size']), Environment::getUploadMaxSize()); + if (!empty($image_upload['max_dimensions']['width']) || !empty($image_upload['max_dimensions']['height'])) { + $max_dimensions = $image_upload['max_dimensions']['width'] . 'x' . $image_upload['max_dimensions']['height']; + } + else { + $max_dimensions = 0; + } + + $validators = [ + 'file_validate_extensions' => ['gif png jpg jpeg'], + 'file_validate_size' => [$max_filesize], + 'file_validate_image_resolution' => [$max_dimensions], + ]; + + $prepared_filename = $this->prepareFilename($filename, $validators); + + // Create the file. + $file_uri = "{$destination}/{$prepared_filename}"; + + // Using the UploadedFile method instead of streamUploadData. + $temp_file_path = $upload->getRealPath(); + + $file_uri = $this->fileSystem->getDestinationFilename($file_uri, FileSystemInterface::EXISTS_RENAME); + + // Lock based on the prepared file URI. + $lock_id = $this->generateLockIdFromFileUri($file_uri); + + if (!$this->lock->acquire($lock_id)) { + throw new HttpException(503, sprintf('File "%s" is already locked for writing.'), NULL, ['Retry-After' => 1]); + } + + // Begin building file entity. + $file = File::create([]); + $file->setOwnerId($this->currentUser->id()); + $file->setFilename($prepared_filename); + if ($this->mimeTypeGuesser instanceof MimeTypeGuesserInterface) { + $file->setMimeType($this->mimeTypeGuesser->guessMimeType($prepared_filename)); + } + else { + $file->setMimeType($this->mimeTypeGuesser->guess($prepared_filename)); + @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); + } + + $file->setFileUri($file_uri); + $file->setSize(@filesize($temp_file_path)); + + $violations = $this->validate($file, $validators); + if ($violations->count() > 0) { + throw new UnprocessableEntityHttpException($violations->__toString()); + } + + try { + $this->fileSystem->move($temp_file_path, $file_uri, FileSystemInterface::EXISTS_ERROR); + } + catch (FileException $e) { + throw new HttpException(500, 'Temporary file could not be moved to file location'); + } + + $file->save(); + + $this->lock->release($lock_id); + + return new JsonResponse([ + 'url' => $file->createFileUrl(), + 'uuid' => $file->uuid(), + 'entity_type' => $file->getEntityTypeId(), + ], 201); + } + + /** + * Access check based on whether image upload is enabled or not. + * + * @param \Drupal\editor\Entity\Editor $editor + * The text editor for which an image upload is occurring. + * + * @return \Drupal\Core\Access\AccessResultInterface + * The access result. + */ + public function imageUploadEnabledAccess(Editor $editor) { + if ($editor->getEditor() !== 'ckeditor5') { + return AccessResult::forbidden(); + } + if ($editor->getImageUploadSettings()['status'] !== TRUE) { + return AccessResult::forbidden(); + } + + return AccessResult::allowed(); + } + + /** + * Validates the file. + * + * @param \Drupal\file\FileInterface $file + * The file entity to validate. + * @param array $validators + * An array of upload validators to pass to file_validate(). + * + * @return \Drupal\Core\Entity\EntityConstraintViolationListInterface + * The list of constraint violations, if any. + */ + protected function validate(FileInterface $file, array $validators) { + $violations = $file->validate(); + + // Remove violations of inaccessible fields as they cannot stem from our + // changes. + $violations->filterByFieldAccess(); + + // Validate the file based on the field definition configuration. + $errors = file_validate($file, $validators); + if (!empty($errors)) { + $translator = new DrupalTranslator(); + foreach ($errors as $error) { + $violation = new ConstraintViolation($translator->trans($error), + (string) $error, + [], + EntityAdapter::createFromEntity($file), + '', + NULL + ); + $violations->add($violation); + } + } + + return $violations; + } + + /** + * Prepares the filename to strip out any malicious extensions. + * + * @param string $filename + * The file name. + * @param array $validators + * The array of upload validators. + * + * @return string + * The prepared/munged filename. + */ + protected function prepareFilename($filename, array &$validators) { + $extensions = $validators['file_validate_extensions'][0] ?? ''; + $event = new FileUploadSanitizeNameEvent($filename, $extensions); + $this->eventDispatcher->dispatch($event); + + return $event->getFilename(); + } + + /** + * Generates a lock ID based on the file URI. + * + * @param string $file_uri + * The file URI. + * + * @return string + * The generated lock ID. + */ + protected static function generateLockIdFromFileUri($file_uri) { + return 'file:ckeditor5:' . Crypt::hashBase64($file_uri); + } + +} diff --git a/core/modules/ckeditor5/src/Controller/CKEditor5MediaController.php b/core/modules/ckeditor5/src/Controller/CKEditor5MediaController.php new file mode 100644 index 000000000000..a508b199f5a7 --- /dev/null +++ b/core/modules/ckeditor5/src/Controller/CKEditor5MediaController.php @@ -0,0 +1,178 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Controller; + +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Access\AccessResultInterface; +use Drupal\Core\Controller\ControllerBase; +use Drupal\Core\Entity\EntityRepositoryInterface; +use Drupal\Core\Session\AccountInterface; +use Drupal\editor\Entity\Editor; +use Drupal\image\Plugin\Field\FieldType\ImageItem; +use Drupal\media\MediaInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; + +/** + * Provides an API for checking if a media entity has image field. + * + * @internal + * Controller classes are internal. + */ +class CKEditor5MediaController extends ControllerBase { + + /** + * The currently authenticated user. + * + * @var \Drupal\Core\Session\AccountInterface + */ + protected $currentUser; + + /** + * The entity repository. + * + * @var \Drupal\Core\Entity\EntityRepositoryInterface + */ + protected $entityRepository; + + /** + * The request stack. + * + * @var \Symfony\Component\HttpFoundation\RequestStack + */ + protected $requestStack; + + /** + * Constructs a new CKEditor5MediaController. + * + * @param \Drupal\Core\Session\AccountInterface $current_user + * The currently authenticated user. + * @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository + * The entity repository. + * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack + * The request stack. + */ + public function __construct(AccountInterface $current_user, EntityRepositoryInterface $entity_repository, RequestStack $request_stack) { + $this->currentUser = $current_user; + $this->entityRepository = $entity_repository; + $this->requestStack = $request_stack; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('current_user'), + $container->get('entity.repository'), + $container->get('request_stack') + ); + } + + /** + * Checks if media has a image field. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * The current request object. + * + * @return \Symfony\Component\HttpFoundation\JsonResponse + * A JSON object including the response. + * + * @throws \Symfony\Component\HttpKernel\Exception\BadRequestHttpException + * Thrown when no media UUID is provided. + * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException + * Thrown when no media with the provided UUID exists. + */ + public function isMediaImage(Request $request) { + $uuid = $request->query->get('uuid'); + if ($uuid == '') { + throw new BadRequestHttpException(); + } + // Access is enforced on route level. + // @see \Drupal\ckeditor5\Controller\CKEditor5MediaController::access(). + if (!$media = $this->entityRepository->loadEntityByUuid('media', $uuid)) { + throw new NotFoundHttpException(); + } + + // Note that we intentionally do not use: + // - \Drupal\Core\Cache\CacheableResponse because caching it on the server + // side is wasteful, hence there is no need for cacheability metadata. + // - \Drupal\Core\Render\HtmlResponse because there is no need for + // attachments nor cacheability metadata. + return (new JsonResponse($this->hasImageField($media), 200)) + // Do not allow any intermediary to cache the response, only the end user. + ->setPrivate() + // Allow the end user to cache it for up to 5 minutes. + ->setMaxAge(300); + } + + /** + * Additional access check for ::isMediaImage(). + * + * This grants access if media embed filter is enabled on the filter format + * and user has access to view the media entity. + * + * Note that access to the filter format is not checked here because the route + * is configured to check entity access to the filter format. + * + * @param \Drupal\editor\Entity\Editor $editor + * The text editor. + * + * @return \Drupal\Core\Access\AccessResultInterface + * The access result. + * + * @throws \Symfony\Component\HttpKernel\Exception\BadRequestHttpException + * Thrown when no media UUID is provided. + * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException + * Thrown when no media with the provided UUID exists. + */ + public function access(Editor $editor): AccessResultInterface { + if ($editor->getEditor() !== 'ckeditor5') { + return AccessResult::forbidden(); + } + // @todo add current request as an argument after + // https://www.drupal.org/project/drupal/issues/2786941 has been resolved. + $request = $this->requestStack->getCurrentRequest(); + $uuid = $request->query->get('uuid'); + if (!$uuid) { + throw new BadRequestHttpException(); + } + $media = $this->entityRepository->loadEntityByUuid('media', $uuid); + if (!$media) { + throw new NotFoundHttpException(); + } + $filters = $editor->getFilterFormat()->filters(); + + return AccessResult::allowedIf($filters->has('media_embed') && $filters->get('media_embed')->status) + ->andIf($media->access('view', $this->currentUser, TRUE)) + ->addCacheableDependency($editor->getFilterFormat()); + } + + /** + * Check if the media type of the entity has a image field. + * + * @param \Drupal\media\MediaInterface $media + * The media item being embedded. + * + * @return bool + * Flag indicating whether the media type has image field or not. + * + * @see \Drupal\media\Form\EditorMediaDialog::getMediaImageSourceFieldName() + */ + protected function hasImageField(MediaInterface $media) { + $field_definition = $media->getSource() + ->getSourceFieldDefinition($media->bundle->entity); + $item_class = $field_definition->getItemDefinition()->getClass(); + if (is_a($item_class, ImageItem::class, TRUE)) { + return TRUE; + } + return FALSE; + } + +} diff --git a/core/modules/ckeditor5/src/HTMLRestrictionsUtilities.php b/core/modules/ckeditor5/src/HTMLRestrictionsUtilities.php new file mode 100644 index 000000000000..dee7d24c5005 --- /dev/null +++ b/core/modules/ckeditor5/src/HTMLRestrictionsUtilities.php @@ -0,0 +1,253 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5; + +use Drupal\Component\Assertion\Inspector; +use Drupal\Component\Utility\DiffArray; +use Drupal\Component\Utility\Html; +use Masterminds\HTML5\Elements; + +/** + * Utilities for interacting with HTML restrictions. + * + * @internal + */ +final class HTMLRestrictionsUtilities { + + /** + * Wildcard types, and the methods that return tags the wildcard represents. + * + * @var string[] + */ + private const WILDCARD_ELEMENT_METHODS = [ + '$block' => 'getBlockElementList', + ]; + + /** + * Formats HTML elements for display. + * + * @param array $elements + * List of elements to format. + * + * @return string + * A formatted list; a string representation of the given HTML elements. + */ + public static function toReadableElements(array $elements): array { + $readable = []; + foreach ($elements as $tag => $attributes) { + $attribute_string = ''; + if (is_array($attributes)) { + foreach ($attributes as $attribute_name => $attribute_values) { + if (is_array($attribute_values)) { + $attribute_values_string = implode(' ', array_keys($attribute_values)); + $attribute_string .= "$attribute_name=\"$attribute_values_string\" "; + } + else { + $attribute_string .= "$attribute_name "; + } + } + } + $joined = '<' . $tag . (!empty($attribute_string) ? ' ' . trim($attribute_string) : '') . '>'; + array_push($readable, $joined); + } + assert(Inspector::assertAllStrings($readable)); + return $readable; + } + + /** + * Parses a HTML restrictions string with >=1 tags in an array of single tags. + * + * @param string $elements_string + * A HTML restrictions string. + * + * @return string[] + * A list of strings, with a HTML tag and potentially attributes in each. + */ + public static function allowedElementsStringToPluginElementsArray(string $elements_string): array { + $html_restrictions = static::allowedElementsStringToHtmlFilterArray($elements_string); + return static::toReadableElements($html_restrictions); + } + + /** + * Parses an HTML string into an array structured as expected by filter_html. + * + * @param string $elements_string + * A string of HTML tags, potentially with attributes. + * + * @return array + * An elements array in the structure expected by filter_html. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManager::WILDCARD_ELEMENT_METHODS + * Each key in this array represents a valid wildcard tag. + */ + public static function allowedElementsStringToHtmlFilterArray(string $elements_string): array { + preg_match('/<(\$[A-Z,a-z]*)/', $elements_string, $wildcard_matches); + + $wildcard = NULL; + if (!empty($wildcard_matches)) { + $wildcard = $wildcard_matches[1]; + assert(substr($wildcard, 0, 1) === '$', 'Wildcard tags must begin with "$"'); + $elements_string = str_replace($wildcard, 'WILDCARD', $elements_string); + } + + $elements = []; + $body_child_nodes = Html::load(str_replace('>', ' />', $elements_string))->getElementsByTagName('body')->item(0)->childNodes; + + foreach ($body_child_nodes as $node) { + if ($node->nodeType !== XML_ELEMENT_NODE) { + // Skip the empty text nodes inside tags. + continue; + } + + $tag = $wildcard ?? $node->tagName; + if ($node->hasAttributes()) { + foreach ($node->attributes as $attribute_name => $attribute) { + $value = empty($attribute->value) ? TRUE : explode(' ', $attribute->value); + self::providedElementsAttributes($elements, $tag, $attribute_name, $value); + } + } + else { + if (!isset($elements[$tag])) { + $elements[$tag] = FALSE; + } + } + } + return $elements; + } + + /** + * Cleans unwanted artifacts from "allowed HTML" arrays. + * + * @param array $elements + * An array of allowed elements, structured as expected by filter_html. + * + * @return array + * The array without unwanted artifacts. + */ + public static function cleanAllowedHtmlArray(array $elements): array { + // When recursively merging elements arrays, unkeyed boolean values can + // appear in attribute config arrays. This removes them. + foreach ($elements as $tag => $tag_config) { + if (is_array($tag_config)) { + $elements[$tag] = array_filter($tag_config); + } + } + return $elements; + } + + /** + * Adds allowed attributes to the elements array. + * + * @param array $elements + * The elements array. + * @param string $tag + * The tag having its attributes configured. + * @param string $attribute + * The attribute being configured. + * @param array|bool $value + * The attribute config value. + */ + public static function providedElementsAttributes(array &$elements, string $tag, string $attribute, $value): void { + $attribute_already_allows_all = isset($elements[$tag][$attribute]) && $elements[$tag][$attribute] === TRUE; + + if ($value === TRUE) { + $elements[$tag][$attribute] = TRUE; + } + elseif (!$attribute_already_allows_all) { + foreach ($value as $attribute_value) { + $elements[$tag][$attribute][$attribute_value] = TRUE; + } + } + } + + /** + * Compares two HTML restrictions. + * + * @param array $elements_array_1 + * The array to compare from. + * @param array $elements_array_2 + * The array to compare to. + * + * @return array + * Returns an array with all the values in $elements_array_1 that are not + * present in $elements_array_1, including values that are FALSE + */ + public static function diffAllowedElements(array $elements_array_1, array $elements_array_2): array { + return array_filter( + DiffArray::diffAssocRecursive($elements_array_1, $elements_array_2), + // DiffArray::diffAssocRecursive() does not know the semantics of the + // HTML restrictions array: unaware that `TAG => FALSE` is a subset of + // `TAG => foo` and that in turn is a subset of `TAG => TRUE`. + // @see \Drupal\filter\Entity\FilterFormat::getHtmlRestrictions() + function ($value, string $tag) use ($elements_array_2) { + return $value !== FALSE || !array_key_exists($tag, $elements_array_2); + }, + ARRAY_FILTER_USE_BOTH + ); + } + + /** + * Parses a HTML restrictions string into htmlSupport plugin config structure. + * + * @param string $elements_string + * A HTML restrictions string. + * + * @return string[] + * An array of allowed elements, structured in the manner expected by the + * CKEditor 5 htmlSupport plugin constructor. + * + * @see https://ckeditor5.github.io/docs/nightly/ckeditor5/latest/features/general-html-support.html#configuration + */ + public static function allowedElementsStringToHtmlSupportConfig(string $elements_string): array { + $html_restrictions = static::allowedElementsStringToHtmlFilterArray($elements_string); + $allowed = []; + foreach ($html_restrictions as $tag => $attributes) { + $to_allow['name'] = $tag; + assert($attributes === FALSE || is_array($attributes)); + if (is_array($attributes)) { + foreach ($attributes as $name => $value) { + assert($value === TRUE || Inspector::assertAllStrings($value)); + $to_allow['attributes'][$name] = $value; + } + } + $allowed[] = $to_allow; + } + + return $allowed; + } + + /** + * Gets a list of block level elements. + * + * @return array + * An array of block level element tags. + */ + private static function getBlockElementList(): array { + return array_filter(array_keys(Elements::$html5), function (string $element) { + return Elements::isA($element, Elements::BLOCK_TAG); + }); + } + + /** + * Returns the tags that match the provided wildcard. + * + * A wildcard tag in element config is a way of representing multiple tags + * with a single item, such as `<$block>` to represent all block tags. Each + * wildcard should have a corresponding callback method listed in + * WILDCARD_ELEMENT_METHODS that returns the set of tags represented by the + * wildcard. + * + * @param string $wildcard + * The wildcard that represents multiple tags. + * + * @return array + * An array of HTML tags. + */ + public static function getWildcardTags(string $wildcard):array { + $wildcard_element_method = self::WILDCARD_ELEMENT_METHODS[$wildcard]; + return call_user_func([self::class, $wildcard_element_method]); + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Core.php b/core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Core.php new file mode 100644 index 000000000000..6a8fe53c7362 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Core.php @@ -0,0 +1,216 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\ckeditor5\Plugin\CKEditor4To5Upgrade; + +use Drupal\ckeditor5\Plugin\CKEditor4To5UpgradePluginInterface; +use Drupal\Core\Plugin\PluginBase; +use Drupal\filter\FilterFormatInterface; + +/** + * Provides the CKEditor 4 to 5 upgrade for Drupal core's CKEditor plugins. + * + * @CKEditor4To5Upgrade( + * id = "core", + * cke4_buttons = { + * "DrupalImage", + * "DrupalLink", + * "DrupalUnlink", + * "Bold", + * "Italic", + * "Underline", + * "Superscript", + * "Subscript", + * "BulletedList", + * "NumberedList", + * "Outdent", + * "Indent", + * "Undo", + * "Redo", + * "Blockquote", + * "JustifyLeft", + * "JustifyCenter", + * "JustifyRight", + * "JustifyBlock", + * "HorizontalRule", + * "Format", + * "Table", + * "Source", + * "Strike", + * "Cut", + * "Copy", + * "Paste", + * "PasteText", + * "PasteFromWord", + * "ShowBlocks", + * "Maximize", + * "-", + * "RemoveFormat", + * "Styles", + * "SpecialChar", + * "Language", + * "DrupalMediaLibrary", + * }, + * cke4_plugin_settings = { + * "stylescombo", + * "language", + * }, + * cke5_plugin_elements_subset_configuration = { + * "ckeditor5_heading", + * } + * ) + * + * @internal + * Plugin classes are internal. + */ +class Core extends PluginBase implements CKEditor4To5UpgradePluginInterface { + + /** + * {@inheritdoc} + */ + public function mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem(string $cke4_button): ?string { + switch ($cke4_button) { + // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\DrupalImage + case 'DrupalImage': + return 'uploadImage'; + + // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\DrupalLink + case 'DrupalLink': + return 'link'; + + case 'DrupalUnlink': + return NULL; + + // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\Internal + case 'Bold': + case 'Italic': + case 'Underline': + case 'Superscript': + case 'Subscript': + case 'BulletedList': + case 'NumberedList': + case 'Outdent': + case 'Indent': + case 'Undo': + case 'Redo': + return lcfirst($cke4_button); + + case 'Blockquote': + return 'blockQuote'; + + case 'JustifyLeft': + return "alignment:left"; + + case 'JustifyCenter': + return "alignment:center"; + + case 'JustifyRight': + return "alignment:right"; + + case 'JustifyBlock': + return "alignment:justify"; + + case 'HorizontalRule': + return 'horizontalLine'; + + case 'Format': + return 'heading'; + + case 'Table': + return 'insertTable'; + + case 'Source': + return 'sourceEditing'; + + case 'Strike': + return 'strikethrough'; + + case 'Cut': + case 'Copy': + case 'Paste': + case 'PasteText': + case 'PasteFromWord': + case 'ShowBlocks': + case 'Maximize': + case '-': + // @see https://www.drupal.org/project/ckeditor5/issues/3211049#comment-14167764 + return NULL; + + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\RemoveFormat + case 'RemoveFormat': + return 'removeFormat'; + + // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\StylesCombo + case 'Styles': + // @todo Change in https://www.drupal.org/project/ckeditor5/issues/3222797 + return NULL; + + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\specialCharacters + case 'SpecialChar': + return 'specialCharacters'; + + // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\Language + case 'Language': + return 'textPartLanguage'; + + // @see \Drupal\media_library\Plugin\CKEditorPlugin\DrupalMediaLibrary + case 'DrupalMediaLibrary': + return 'drupalMedia'; + + default: + throw new \OutOfBoundsException(); + } + } + + /** + * {@inheritdoc} + */ + public function mapCKEditor4SettingsToCKEditor5Configuration(string $cke4_plugin_id, array $cke4_plugin_settings): ?array { + switch ($cke4_plugin_id) { + // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\StylesCombo + case 'stylescombo': + // @todo Change in https://www.drupal.org/project/ckeditor5/issues/3222797 + return NULL; + + // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\Language + case 'language': + // Identical configuration. + return ['ckeditor5_language' => $cke4_plugin_settings]; + + default: + throw new \OutOfBoundsException(); + } + } + + /** + * {@inheritdoc} + */ + public function computeCKEditor5PluginSubsetConfiguration(string $cke5_plugin_id, FilterFormatInterface $text_format): ?array { + switch ($cke5_plugin_id) { + case 'ckeditor5_heading': + $restrictions = $text_format->getHtmlRestrictions(); + if ($restrictions === FALSE) { + // The default is to allow all headings, which makes sense when there + // are no restrictions. + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Heading::DEFAULT_CONFIGURATION + return NULL; + } + // Otherwise, only enable headings that allowed by the restrictions. + $configuration = []; + foreach (range(2, 6) as $index) { + // Merely checking the existence of the array key is sufficient; this + // plugin does not set or need any additional attributes. + // @see \Drupal\filter\Plugin\FilterInterface::getHTMLRestrictions() + if (array_key_exists("h$index", $restrictions['allowed'])) { + $configuration['enabled_headings'][] = "heading$index"; + } + } + return $configuration; + + default: + throw new \OutOfBoundsException(); + } + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor4To5UpgradePluginInterface.php b/core/modules/ckeditor5/src/Plugin/CKEditor4To5UpgradePluginInterface.php new file mode 100644 index 000000000000..3ba927920ac1 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor4To5UpgradePluginInterface.php @@ -0,0 +1,93 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin; + +use Drupal\Component\Plugin\PluginInspectionInterface; +use Drupal\filter\FilterFormatInterface; + +/** + * Defines an interface for CKEditor 4 to 5 upgrade plugins. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor4To5UpgradePluginManager + * @see \Drupal\ckeditor5\Annotation\CKEditor4To5Upgrade + * @see plugin_api + */ +interface CKEditor4To5UpgradePluginInterface extends PluginInspectionInterface { + + /** + * Maps a CKEditor 4 button to the CKEditor 5 equivalent, if it exists. + * + * Generated by inspecting all \Drupal\ckeditor\CKEditorPluginButtonsInterface + * implementations. + * + * @param string $cke4_button + * A valid CKEditor 4 button name. + * + * @return string|null + * The equivalent CKEditor 5 toolbar item, or NULL if no equivalent exists. + * In either case, the button name must be added to the annotation. + * + * @throws \OutOfBoundsException + * Thrown when this plugin does not know whether an equivalent exists. + * + * @see \Drupal\ckeditor\CKEditorPluginButtonsInterface + * @see \Drupal\ckeditor5\Annotation\CKEditor4To5Upgrade + */ + public function mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem(string $cke4_button): ?string; + + /** + * Maps CKEditor 4 settings to the CKEditor 5 equivalent, if needed. + * + * Not every CKEditor 5 plugin has settings; some CKEditor 5 plugins may have + * settings that the CKEditor 4 equivalent did not and vice versa. Therefore + * the complete CKEditor 4 settings are provided, and any CKEditor 5 setting + * can be set. + * + * @param string $cke4_plugin_id + * The CKEditor 4 plugin whose settings need to be mapped. + * @param array $cke4_plugin_settings + * The settings for this CKEditor 4 plugin. + * + * @return array|null + * NULL if not needed, otherwise an array with a single key-value pair: + * - key: the plugin ID of the equivalent CKEditor 5 plugin + * - value: the equivalent settings + * In either case, the button name must be added to the annotation. + * + * @throws \OutOfBoundsException + * Thrown when this plugin does not know whether an equivalent exists. + * + * @see \Drupal\ckeditor\CKEditorPluginConfigurableInterface + * @see \Drupal\ckeditor5\Annotation\CKEditor4To5Upgrade + */ + public function mapCKEditor4SettingsToCKEditor5Configuration(string $cke4_plugin_id, array $cke4_plugin_settings): ?array; + + /** + * Computes elements subset configuration for CKEditor 5 plugin. + * + * Every CKEditor 5 plugin that implements the elements subset interface must + * implement this as well, to ensure a smooth upgrade path. + * + * @param string $cke5_plugin_id + * The CKEditor 5 plugin whose subset configuration needs to be computed. + * @param \Drupal\filter\FilterFormatInterface $text_format + * The text format based on whose restrictions this should be computed. + * + * @return array|null + * NULL if not needed, otherwise a configuration array (which can itself be + * a subset of the default configuration of this CKEditor 5 plugin: perhaps + * only some of the configuration values determine the subset). + * + * @throws \OutOfBoundsException + * Thrown when no upgrade path exists. + * @throws \LogicException + * Thrown when a plugin claims to provide an upgrade path but does not. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginElementsSubsetInterface + * @see \Drupal\ckeditor5\Annotation\CKEditor4To5Upgrade + */ + public function computeCKEditor5PluginSubsetConfiguration(string $cke5_plugin_id, FilterFormatInterface $text_format): ?array; + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor4To5UpgradePluginManager.php b/core/modules/ckeditor5/src/Plugin/CKEditor4To5UpgradePluginManager.php new file mode 100644 index 000000000000..fdb0bce005de --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor4To5UpgradePluginManager.php @@ -0,0 +1,226 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin; + +use Drupal\ckeditor5\Annotation\CKEditor4To5Upgrade; +use Drupal\Component\Assertion\Inspector; +use Drupal\Core\Cache\CacheBackendInterface; +use Drupal\Core\Extension\ModuleHandlerInterface; +use Drupal\Core\Plugin\DefaultPluginManager; +use Drupal\filter\FilterFormatInterface; + +/** + * Provides a CKEditor 4 to 5 upgrade plugin manager. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor4To5UpgradePluginInterface + * @see \Drupal\ckeditor5\Annotation\CKEditor4To5Upgrade + * @see plugin_api + * + * @internal + */ +class CKEditor4To5UpgradePluginManager extends DefaultPluginManager { + + /** + * A map of CKEditor 4 buttons to an upgrade plugin ID. + * + * @var array + */ + protected $cke4ButtonsMap; + + /** + * A map of CKEditor 4 plugins with settings to an upgrade plugin ID. + * + * @var array + */ + protected $cke4PluginSettingsMap; + + /** + * A map of CKEditor 5 plugins with configurable subset to upgrade plugin ID. + * + * @var array + */ + protected $cke5SubsetConfigurationMap; + + /** + * Constructs a CKEditor4To5UpgradePluginManager object. + * + * @param \Traversable $namespaces + * An object that implements \Traversable which contains the root paths + * keyed by the corresponding namespace to look for plugin implementations. + * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend + * Cache backend instance to use. + * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler + * The module handler to invoke the alter hook with. + */ + public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) { + parent::__construct('Plugin/CKEditor4To5Upgrade', $namespaces, $module_handler, CKEditor4To5UpgradePluginInterface::class, CKEditor4To5Upgrade::class); + + $this->alterInfo('ckeditor4to5upgrade_plugin_info'); + $this->setCacheBackend($cache_backend, 'ckeditor4to5upgrade_plugins'); + } + + /** + * Validates plugin definitions: avoids conflicts. Builds maps for later use. + */ + protected function validateAndBuildMaps(): void { + if ($this->cke4ButtonsMap !== NULL) { + return; + } + + foreach ($this->getDefinitions() as $upgrade_plugin_id => $definition) { + // Only one CKEditor4To5Upgrade plugin can define the upgrade path for a + // CKEditor 4 button. + if (isset($definition['cke4_buttons'])) { + assert(Inspector::assertAllStrings($definition['cke4_buttons'])); + foreach ($definition['cke4_buttons'] as $cke4_button_id) { + if (isset($this->cke4ButtonsMap[$cke4_button_id])) { + throw new \OutOfBoundsException(sprintf('The "%s" CKEditor 4 button is already being upgraded by the "%s" CKEditor4To5Upgrade plugin, the "%s" plugin is as well. This conflict needs to be resolved.', $cke4_button_id, $this->cke4ButtonsMap[$cke4_button_id], $upgrade_plugin_id)); + } + $this->cke4ButtonsMap[$cke4_button_id] = $upgrade_plugin_id; + } + } + + // Only one CKEditor4To5Upgrade plugin can define the upgrade path for a + // CKEditor 4 plugin's settings. + if (isset($definition['cke4_plugin_settings'])) { + assert(Inspector::assertAllStrings($definition['cke4_plugin_settings'])); + foreach ($definition['cke4_plugin_settings'] as $cke4_plugin_id) { + if (isset($this->cke4PluginSettingsMap[$cke4_plugin_id])) { + throw new \OutOfBoundsException(sprintf('The "%s" CKEditor 4 plugin\'s settings are already being upgraded by the "%s" CKEditor4To5Upgrade plugin, the "%s" plugin is as well. This conflict needs to be resolved.', $cke4_plugin_id, $this->cke4PluginSettingsMap[$cke4_plugin_id], $upgrade_plugin_id)); + } + $this->cke4PluginSettingsMap[$cke4_plugin_id] = $upgrade_plugin_id; + } + } + + // Only one CKEditor4To5Upgrade plugin can define the upgrade path for a + // CKEditor 5 plugin's elements subset configuration. + if (isset($definition['cke5_plugin_elements_subset_configuration'])) { + assert(Inspector::assertAllStrings($definition['cke5_plugin_elements_subset_configuration'])); + foreach ($definition['cke5_plugin_elements_subset_configuration'] as $cke5_plugin_id) { + if (isset($this->cke5SubsetConfigurationMap[$cke5_plugin_id])) { + throw new \OutOfBoundsException(sprintf('The "%s" CKEditor 5 plugin\'s elements subset configuration is already being computed by the "%s" CKEditor4To5Upgrade plugin, the "%s" plugin is as well. This conflict needs to be resolved.', $cke5_plugin_id, $this->cke5SubsetConfigurationMap[$cke5_plugin_id], $upgrade_plugin_id)); + } + $this->cke5SubsetConfigurationMap[$cke5_plugin_id] = $upgrade_plugin_id; + } + } + } + } + + /** + * Maps a CKEditor 4 button to the CKEditor 5 equivalent, if it exists. + * + * Generated by inspecting all \Drupal\ckeditor\CKEditorPluginButtonsInterface + * implementations. + * + * @param string $cke4_button + * A valid CKEditor 4 button name. + * + * @return string|null + * The equivalent CKEditor 5 toolbar item, or NULL if no equivalent exists. + * + * @throws \OutOfBoundsException + * Thrown when no upgrade path exists. + * @throws \LogicException + * Thrown when a plugin claims to provide an upgrade path but does not. + * + * @see \Drupal\ckeditor\CKEditorPluginButtonsInterface + */ + public function mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem(string $cke4_button): ?string { + $this->validateAndBuildMaps(); + + if (!isset($this->cke4ButtonsMap[$cke4_button])) { + throw new \OutOfBoundsException(sprintf('No upgrade path found for the "%s" button.', $cke4_button)); + } + + $plugin_id = $this->cke4ButtonsMap[$cke4_button]; + try { + return $this->createInstance($plugin_id)->mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem($cke4_button); + } + catch (\OutOfBoundsException $e) { + throw new \LogicException(sprintf('The "%s" CKEditor4To5Upgrade plugin claims to provide an upgrade path for the "%s" CKEditor 4 button but does not.', $plugin_id, $cke4_button)); + } + } + + /** + * Maps CKEditor 4 settings to the CKEditor 5 equivalent, if needed. + * + * Not every CKEditor 5 plugin has settings; some CKEditor 5 plugins may have + * settings that the CKEditor 4 equivalent did not and vice versa. Therefore + * the complete CKEditor 4 settings are provided, and any CKEditor 5 setting + * can be set. + * + * @param string $cke4_plugin_id + * The CKEditor 4 plugin whose settings need to be mapped. + * @param array $cke4_plugin_settings + * The settings for this CKEditor 4 plugin. + * + * @return array|null + * NULL if not needed, otherwise an array with a single key-value pair: + * - key: the plugin ID of the equivalent CKEditor 5 plugin + * - value: the equivalent settings + * + * @throws \OutOfBoundsException + * Thrown when no upgrade path exists. + * @throws \LogicException + * Thrown when a plugin claims to provide an upgrade path but does not. + * + * @see \Drupal\ckeditor\CKEditorPluginConfigurableInterface + */ + public function mapCKEditor4SettingsToCKEditor5Configuration(string $cke4_plugin_id, array $cke4_plugin_settings): ?array { + $this->validateAndBuildMaps(); + + if (!isset($this->cke4PluginSettingsMap[$cke4_plugin_id])) { + throw new \OutOfBoundsException(sprintf('No upgrade path found for the "%s" plugin settings.', $cke4_plugin_id)); + } + + $plugin_id = $this->cke4PluginSettingsMap[$cke4_plugin_id]; + try { + return $this->createInstance($plugin_id)->mapCKEditor4SettingsToCKEditor5Configuration($cke4_plugin_id, $cke4_plugin_settings); + } + catch (\OutOfBoundsException $e) { + throw new \LogicException(sprintf('The "%s" CKEditor4To5Upgrade plugin claims to provide an upgrade path for the "%s" CKEditor 4 plugin settings but does not.', $plugin_id, $cke4_plugin_id)); + } + } + + /** + * Computes elements subset configuration for CKEditor 5 plugin. + * + * Every CKEditor 5 plugin that implements the elements subset interface must + * implement this as well, to ensure a smooth upgrade path. + * + * @param string $cke5_plugin_id + * The CKEditor 5 plugin whose subset configuration needs to be computed. + * @param \Drupal\filter\FilterFormatInterface $text_format + * The text format based on whose restrictions this should be computed. + * + * @return array|null + * NULL if not needed, otherwise a configuration array (which can itself be + * a subset of the default configuration of this CKEditor 5 plugin: perhaps + * only some of the configuration values determine the subset). + * + * @throws \OutOfBoundsException + * Thrown when no upgrade path exists. + * @throws \LogicException + * Thrown when a plugin claims to provide an upgrade path but does not. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginElementsSubsetInterface + */ + public function computeCKEditor5PluginSubsetConfiguration(string $cke5_plugin_id, FilterFormatInterface $text_format): ?array { + $this->validateAndBuildMaps(); + + if (!isset($this->cke5SubsetConfigurationMap[$cke5_plugin_id])) { + throw new \OutOfBoundsException(sprintf('No upgrade path found for the "%s" elements subset configuration.', $cke5_plugin_id)); + } + + $plugin_id = $this->cke5SubsetConfigurationMap[$cke5_plugin_id]; + try { + return $this->createInstance($plugin_id)->computeCKEditor5PluginSubsetConfiguration($cke5_plugin_id, $text_format); + } + catch (\OutOfBoundsException $e) { + throw new \LogicException(sprintf('The "%s" CKEditor4To5Upgrade plugin claims to provide an upgrade path for the "%s" CKEditor 4 plugin settings but does not.', $plugin_id, $cke5_plugin_id)); + } + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/DynamicPluginConfigWithCsrfTokenUrlTrait.php b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/DynamicPluginConfigWithCsrfTokenUrlTrait.php new file mode 100644 index 000000000000..953cec0ac105 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/DynamicPluginConfigWithCsrfTokenUrlTrait.php @@ -0,0 +1,52 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\ckeditor5\Plugin\CKEditor5Plugin; + +use Drupal\Core\Url; + +/** + * Provides a trait for CKEditor 5 with dynamically generated CSRF token URLs. + * + * The Text Editor module's APIs predate the concept of bubbleable metadata. To + * prevent URLs with CSRF tokens from breaking cacheability, placeholders are + * used for those CSRF tokens since https://drupal.org/i/2512132. Placeholders + * are designed to be attached to the data in which they exist, so they can be + * replaced at the last possible moment, without interfering with cacheability. + * Unfortunately, because it is not possible to associate bubbleable metadata + * with a Text Editor's JS settings, we have to manually process these. This is + * acceptable only because a text editor's JS settings are not cacheable anyway + * (just like forms are not cacheable). + * + * @see \Drupal\Core\Access\CsrfAccessCheck + * @see \Drupal\Core\Access\RouteProcessorCsrf::processOutbound() + * @see \Drupal\Core\Render\BubbleableMetadata + * @see \Drupal\editor\Plugin\EditorPluginInterface::getJSSettings() + * @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload::getDynamicPluginConfig() + * @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Media::getDynamicPluginConfig() + * @see https://www.drupal.org/project/drupal/issues/2512132 + * + * @internal + */ +trait DynamicPluginConfigWithCsrfTokenUrlTrait { + + /** + * Gets the given URL with all placeholders replaced. + * + * @param \Drupal\Core\Url $url + * A URL which generates CSRF token placeholders. + * + * @return string + * The URL string, with all placeholders replaced. + */ + private static function getUrlWithReplacedCsrfTokenPlaceholder(Url $url): string { + $generated_url = $url->toString(TRUE); + $url_with_csrf_token_placeholder = [ + '#plain_text' => $generated_url->getGeneratedUrl(), + ]; + $generated_url->applyTo($url_with_csrf_token_placeholder); + return (string) \Drupal::service('renderer')->renderPlain($url_with_csrf_token_placeholder); + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Heading.php b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Heading.php new file mode 100644 index 000000000000..0dcd50a46385 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Heading.php @@ -0,0 +1,226 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\ckeditor5\Plugin\CKEditor5Plugin; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginElementsSubsetInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\editor\EditorInterface; + +/** + * CKEditor 5 Heading plugin. + * + * @internal + * Plugin classes are internal. + */ +class Heading extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface, CKEditor5PluginElementsSubsetInterface { + + use CKEditor5PluginConfigurableTrait; + + /** + * The headings that cannot be disabled. + * + * @var string[] + */ + const ALWAYS_ENABLED_HEADINGS = [ + 'paragraph', + ]; + + /** + * The default configuration for this plugin. + * + * @var string[][] + */ + const DEFAULT_CONFIGURATION = [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ]; + + /** + * {@inheritdoc} + */ + public function defaultConfiguration() { + return static::DEFAULT_CONFIGURATION; + } + + /** + * Computes all valid choices for the "enabled_headings" setting. + * + * @see ckeditor5.schema.yml + * + * @return string[] + * All valid choices. + */ + public static function validChoices(): array { + $cke5_plugin_manager = \Drupal::service('plugin.manager.ckeditor5.plugin'); + assert($cke5_plugin_manager instanceof CKEditor5PluginManagerInterface); + $plugin_definition = $cke5_plugin_manager->getDefinition('ckeditor5_heading'); + assert($plugin_definition->getClass() === static::class); + return array_diff( + array_column($plugin_definition->getCKEditor5Config()['heading']['options'], 'model'), + static::ALWAYS_ENABLED_HEADINGS + ); + } + + /** + * Gets all enabled headings. + * + * @return string[] + * The values in the plugins.ckeditor5_heading.enabled_headings configuration + * plus the headings that are always enabled. + */ + private function getEnabledHeadings(): array { + return array_merge( + self::ALWAYS_ENABLED_HEADINGS, + $this->configuration['enabled_headings'] + ); + } + + /** + * {@inheritdoc} + * + * Form for choosing which heading tags are available. + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + $form['enabled_headings'] = [ + '#type' => 'fieldset', + '#title' => $this->t('Enabled Headings'), + '#description' => $this->t('These are the headings that will appear in the headings dropdown. If a heading is not chosen here, it does not necessarily mean the corresponding tag is disallowed in the text format.'), + ]; + + foreach ($this->getPluginDefinition()->getCKEditor5Config()['heading']['options'] as $heading_option) { + $model = $heading_option['model']; + + if (in_array($model, self::ALWAYS_ENABLED_HEADINGS, TRUE)) { + continue; + } + + // It's safe to use $model as a key: listing the same model twice with + // different properties triggers a schema error in CKEditor 5. + // @see https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html#error-schema-cannot-register-item-twice + // @see https://ckeditor.com/docs/ckeditor5/latest/features/headings.html#configuring-custom-heading-elements + $form['enabled_headings'][$model] = self::generateCheckboxForHeadingOption($heading_option); + $form['enabled_headings'][$model]['#default_value'] = in_array($model, $this->configuration['enabled_headings'], TRUE) ? $model : NULL; + } + + return $form; + } + + /** + * {@inheritdoc} + */ + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) { + // Match the config schema structure at ckeditor5.plugin.ckeditor5_heading. + $form_value = $form_state->getValue('enabled_headings'); + $config_value = array_values(array_filter($form_value)); + $form_state->setValue('enabled_headings', $config_value); + } + + /** + * {@inheritdoc} + */ + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { + $this->configuration['enabled_headings'] = $form_state->getValue('enabled_headings'); + } + + /** + * Generates checkbox for a CKEditor 5 heading plugin config option. + * + * @param array $heading_option + * A heading option configuration as the CKEditor 5 Heading plugin expects + * in its configuration. + * + * @return array + * The checkbox render array. + * + * @see https://ckeditor.com/docs/ckeditor5/latest/api/module_heading_heading-HeadingConfig.html#member-options + */ + private static function generateCheckboxForHeadingOption(array $heading_option): array { + // This requires the `title` and `model` properties. The `class` property is + // optional. The `view` property is not used. + assert(array_key_exists('title', $heading_option)); + assert(array_key_exists('model', $heading_option)); + + $checkbox = [ + '#type' => 'checkbox', + '#title' => $heading_option['title'], + '#return_value' => $heading_option['model'], + ]; + if (isset($heading_option['class'])) { + $checkbox['#label_attributes']['class'][] = $heading_option['class']; + $checkbox['#label_attributes']['class'][] = 'ck'; + } + + return $checkbox; + } + + /** + * {@inheritdoc} + * + * Filters the header options to those chosen in editor config. + */ + public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array { + $enabled_headings = $this->getEnabledHeadings($editor); + $all_heading_options = $static_plugin_config['heading']['options']; + + $configured_heading_options = array_filter($all_heading_options, function ($option) use ($enabled_headings) { + return in_array($option['model'], $enabled_headings, TRUE); + }); + + return [ + 'heading' => [ + 'options' => array_values($configured_heading_options), + ], + ]; + } + + /** + * {@inheritdoc} + */ + public function getElementsSubset(): array { + return $this->enabledHeadingsToTags($this->configuration['enabled_headings']); + } + + /** + * Returns an array of enabled tags based on the enabled headings. + * + * @param string[] $enabled_headings + * Array of the enabled headings. + * + * @return string[] + * List of tags provided by the enabled headings. + */ + private function enabledHeadingsToTags(array $enabled_headings): array { + $plugin_definition = $this->getPluginDefinition(); + $elements = $plugin_definition->getElements(); + $heading_keyed_by_model = []; + foreach ($plugin_definition->getCKEditor5Config()['heading']['options'] as $configured_heading) { + if (isset($configured_heading['model'])) { + $heading_keyed_by_model[$configured_heading['model']] = $configured_heading; + } + } + + $tags_to_return = []; + foreach ($enabled_headings as $model) { + if (isset($heading_keyed_by_model[$model]) && isset($heading_keyed_by_model[$model]['view'])) { + $element_as_tag = "<{$heading_keyed_by_model[$model]['view']}>"; + if (in_array($element_as_tag, $elements, TRUE)) { + $tags_to_return[] = "<{$heading_keyed_by_model[$model]['view']}>"; + } + } + } + + return $tags_to_return; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/ImageUpload.php b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/ImageUpload.php new file mode 100644 index 000000000000..aa1d68267bf9 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/ImageUpload.php @@ -0,0 +1,106 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\CKEditor5Plugin; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Url; +use Drupal\editor\EditorInterface; + +// cspell:ignore imageupload + +/** + * CKEditor 5 Image plugin. + * + * @CKEditor5Plugin( + * id = "ckeditor5_imageUpload", + * ckeditor5 = @CKEditor5AspectsOfCKEditor5Plugin( + * plugins = {"image.ImageUpload", "drupalImage.DrupalImageUpload"}, + * config = { + * "image" = { + * "upload" = { + * "types" = { "jpeg", "png", "gif" } + * } + * } + * }, + * ), + * drupal = @DrupalAspectsOfCKEditor5Plugin( + * label = @Translation("Image Upload"), + * elements = false, + * admin_library = "ckeditor5/admin.imageupload", + * toolbar_items = { + * "uploadImage" = { "label" = "Image upload" } + * }, + * conditions = { + * "toolbarItem" = "uploadImage", + * "imageUploadStatus" = true, + * } + * ) + * ) + * + * @internal + * Plugin classes are internal. + */ +class ImageUpload extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface { + + use CKEditor5PluginConfigurableTrait; + use DynamicPluginConfigWithCsrfTokenUrlTrait; + + /** + * {@inheritdoc} + */ + public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array { + return $static_plugin_config + [ + 'drupalImageUpload' => [ + 'uploadUrl' => self::getUrlWithReplacedCsrfTokenPlaceholder( + Url::fromRoute('ckeditor5.upload_image') + ->setRouteParameter('editor', $editor->getFilterFormat()->id()) + ), + 'withCredentials' => TRUE, + 'headers' => ['Accept' => 'application/json', 'text/javascript'], + ], + ]; + } + + /** + * {@inheritdoc} + * + * @see \Drupal\editor\Form\EditorImageDialog + * @see editor_image_upload_settings_form() + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + $form_state->loadInclude('editor', 'admin.inc'); + return editor_image_upload_settings_form($form_state->get('editor')); + } + + /** + * {@inheritdoc} + */ + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) { + $form_state->setValue('status', (bool) $form_state->getValue('status')); + $form_state->setValue(['max_dimensions', 'width'], (int) $form_state->getValue(['max_dimensions', 'width'])); + $form_state->setValue(['max_dimensions', 'height'], (int) $form_state->getValue(['max_dimensions', 'height'])); + } + + /** + * {@inheritdoc} + */ + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { + // Store this configuration in its out-of-band location. + $form_state->get('editor')->setImageUploadSettings($form_state->getValues()); + } + + /** + * {@inheritdoc} + * + * This returns an empty array as image upload config is stored out of band. + */ + public function defaultConfiguration() { + return []; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php new file mode 100644 index 000000000000..ccbeb9884f91 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php @@ -0,0 +1,102 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\CKEditor5Plugin; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Language\LanguageManager; +use Drupal\Core\Language\LanguageInterface; +use Drupal\editor\EditorInterface; + +/** + * CKEditor 5 Language plugin. + * + * @internal + * Plugin classes are internal. + */ +class Language extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface { + + use CKEditor5PluginConfigurableTrait; + + /** + * {@inheritdoc} + */ + public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array { + $predefined_languages = $this->configuration['language_list'] === 'all' ? + LanguageManager::getStandardLanguageList() : + LanguageManager::getUnitedNationsLanguageList(); + + // Generate the language_list setting as expected by the CKEditor Language + // plugin, but key the values by the full language name so that we can sort + // them later on. + $language_list = []; + foreach ($predefined_languages as $langcode => $language) { + $english_name = $language[0]; + $direction = empty($language[2]) ? NULL : $language[2]; + $language_list[$english_name] = [ + 'title' => $english_name, + 'languageCode' => $langcode, + ]; + if ($direction === LanguageInterface::DIRECTION_RTL) { + $language_list[$english_name]['textDirection'] = 'rtl'; + } + } + + // Sort on full language name. + ksort($language_list); + $dynamic_plugin_config = $static_plugin_config; + $dynamic_plugin_config['language']['textPartLanguage'] = array_values($language_list); + return $dynamic_plugin_config; + } + + /** + * {@inheritdoc} + * + * @see \Drupal\editor\Form\EditorImageDialog + * @see editor_image_upload_settings_form() + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + $predefined_languages = LanguageManager::getStandardLanguageList(); + $form['language_list'] = [ + '#title' => $this->t('Language list'), + '#title_display' => 'invisible', + '#type' => 'select', + '#options' => [ + 'un' => $this->t("United Nations' official languages"), + 'all' => $this->t('All @count languages', ['@count' => count($predefined_languages)]), + ], + '#default_value' => $this->configuration['language_list'], + '#description' => $this->t('The list of languages to show in the language dropdown. The basic list will only show the <a href=":url">six official languages of the UN</a>. The extended list will show all @count languages that are available in Drupal.', [ + ':url' => 'https://www.un.org/en/sections/about-un/official-languages', + '@count' => count($predefined_languages), + ]), + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) { + } + + /** + * {@inheritdoc} + */ + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { + $this->configuration['language_list'] = $form_state->getValue('language_list'); + } + + /** + * {@inheritdoc} + */ + public function defaultConfiguration() { + return ['language_list' => 'un']; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Media.php b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Media.php new file mode 100644 index 000000000000..40d65f067916 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Media.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\CKEditor5Plugin; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\Core\Url; +use Drupal\editor\EditorInterface; + +/** + * CKEditor 5 Media plugin. + * + * Provides drupal-media element and options provided by the CKEditor 5 build. + * + * @internal + * Plugin classes are internal. + */ +class Media extends CKEditor5PluginDefault { + + use DynamicPluginConfigWithCsrfTokenUrlTrait; + + /** + * {@inheritdoc} + */ + public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array { + $dynamic_plugin_config = $static_plugin_config; + $dynamic_plugin_config['drupalMedia']['previewURL'] = Url::fromRoute('media.filter.preview') + ->setRouteParameter('filter_format', $editor->getFilterFormat()->id()) + ->toString(TRUE) + ->getGeneratedUrl(); + $dynamic_plugin_config['drupalMedia']['isMediaUrl'] = self::getUrlWithReplacedCsrfTokenPlaceholder( + Url::fromRoute('ckeditor5.media_image') + ->setRouteParameter('editor', $editor->id()) + ); + $dynamic_plugin_config['drupalMedia']['previewCsrfToken'] = \Drupal::csrfToken()->get('X-Drupal-MediaPreview-CSRF-Token'); + return $dynamic_plugin_config; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/MediaLibrary.php b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/MediaLibrary.php new file mode 100644 index 000000000000..47cf82319978 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/MediaLibrary.php @@ -0,0 +1,102 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\CKEditor5Plugin; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition; +use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Url; +use Drupal\Core\Plugin\ContainerFactoryPluginInterface; +use Drupal\editor\EditorInterface; +use Drupal\media_library\MediaLibraryState; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * CKEditor 5 Media Library plugin. + * + * Provides media library support and options for the CKEditor 5 build. + * + * @internal + * Plugin classes are internal. + */ +class MediaLibrary extends CKEditor5PluginDefault implements ContainerFactoryPluginInterface { + + /** + * The media type entity storage. + * + * @var \Drupal\Core\Config\Entity\ConfigEntityStorageInterface + */ + protected $mediaTypeStorage; + + /** + * MediaLibrary constructor. + * + * @param array $configuration + * A configuration array containing information about the plugin instance. + * @param string $plugin_id + * The plugin_id for the plugin instance. + * @param \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition $plugin_definition + * The plugin implementation definition. + * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager + * The entity type manager. + */ + public function __construct(array $configuration, string $plugin_id, CKEditor5PluginDefinition $plugin_definition, EntityTypeManagerInterface $entity_type_manager) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + $this->mediaTypeStorage = $entity_type_manager->getStorage('media_type'); + } + + /** + * {@inheritDoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('entity_type.manager'), + ); + } + + /** + * {@inheritdoc} + */ + public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array { + $media_type_ids = $this->mediaTypeStorage->getQuery()->execute(); + + if ($editor->hasAssociatedFilterFormat()) { + $media_embed_filter = $editor->getFilterFormat()->filters()->get('media_embed'); + // Optionally limit the allowed media types based on the MediaEmbed + // setting. If the setting is empty, do not limit the options. + if (!empty($media_embed_filter->settings['allowed_media_types'])) { + $media_type_ids = array_intersect_key($media_type_ids, $media_embed_filter->settings['allowed_media_types']); + } + } + if (in_array('image', $media_type_ids, TRUE)) { + // Move image to first position. + // This workaround can be removed once this issue is fixed: + // @see https://www.drupal.org/project/drupal/issues/3073799 + array_unshift($media_type_ids, 'image'); + $media_type_ids = array_unique($media_type_ids); + } + + $state = MediaLibraryState::create( + 'media_library.opener.editor', + $media_type_ids, + reset($media_type_ids), + 1, + ['filter_format_id' => $editor->getFilterFormat()->id()], + ); + + $library_url = Url::fromRoute('media_library.ui') + ->setOption('query', $state->all()) + ->toString(TRUE) + ->getGeneratedUrl(); + + $dynamic_plugin_config = $static_plugin_config; + $dynamic_plugin_config['drupalMedia']['libraryURL'] = $library_url; + return $dynamic_plugin_config; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/SourceEditing.php b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/SourceEditing.php new file mode 100644 index 000000000000..11717006e904 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/SourceEditing.php @@ -0,0 +1,87 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\ckeditor5\Plugin\CKEditor5Plugin; + +use Drupal\ckeditor5\HTMLRestrictionsUtilities; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginElementsSubsetInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\editor\EditorInterface; + +/** + * CKEditor 5 Source Editing plugin configuration. + * + * @internal + * Plugin classes are internal. + */ +class SourceEditing extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface, CKEditor5PluginElementsSubsetInterface { + + use CKEditor5PluginConfigurableTrait; + + /** + * {@inheritdoc} + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + $form['allowed_tags'] = [ + '#type' => 'textarea', + '#title' => $this->t('Manually editable HTML tags'), + '#default_value' => implode(' ', $this->configuration['allowed_tags']), + '#description' => $this->t('A list of HTML tags that can be used while editing source. It is only necessary to add tags that are not already supported by other enabled plugins. For example, if "Bold" is enabled, it is not necessary to add the <code><strong></code> tag, but it may be necessary to add <code><dl><dt><dd></code> in a format that does not have a definition list plugin, but requires definition list markup.'), + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) { + // Match the config schema structure at ckeditor5.plugin.ckeditor5_heading. + $form_value = $form_state->getValue('allowed_tags'); + if (!is_array($form_value)) { + $config_value = HTMLRestrictionsUtilities::allowedElementsStringToPluginElementsArray($form_value); + $form_state->setValue('allowed_tags', $config_value); + } + } + + /** + * {@inheritdoc} + */ + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { + $this->configuration['allowed_tags'] = $form_state->getValue('allowed_tags'); + } + + /** + * {@inheritdoc} + */ + public function defaultConfiguration() { + return [ + 'allowed_tags' => [], + ]; + } + + /** + * {@inheritdoc} + */ + public function getElementsSubset(): array { + return $this->configuration['allowed_tags']; + } + + /** + * {@inheritdoc} + */ + public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array { + $allowed = HTMLRestrictionsUtilities::allowedElementsStringToHtmlSupportConfig(implode('', $this->configuration['allowed_tags'])); + + return [ + 'htmlSupport' => [ + 'allow' => $allowed, + ], + ]; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginConfigurableInterface.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginConfigurableInterface.php new file mode 100644 index 000000000000..a78fe949a236 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginConfigurableInterface.php @@ -0,0 +1,26 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin; + +use Drupal\Component\Plugin\ConfigurableInterface; +use Drupal\Core\Plugin\PluginFormInterface; + +/** + * Defines an interface for configurable CKEditor 5 plugins. + * + * This allows a CKEditor 5 plugin to define a settings form. These settings can + * then be automatically passed on to the corresponding CKEditor 5 instance via + * CKEditor5PluginInterface::getDynamicPluginConfig(). + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait + * @see \Drupal\ckeditor5\CKEditor5PluginInterface + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginBase + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface + * @see \Drupal\ckeditor5\Annotation\CKEditor5Plugin + * @see plugin_api + */ +interface CKEditor5PluginConfigurableInterface extends CKEditor5PluginInterface, ConfigurableInterface, PluginFormInterface { + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginConfigurableTrait.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginConfigurableTrait.php new file mode 100644 index 000000000000..1a790970eb09 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginConfigurableTrait.php @@ -0,0 +1,26 @@ +<?php + +namespace Drupal\ckeditor5\Plugin; + +/** + * Provides a trait for configurable CKEditor 5 plugins. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface + */ +trait CKEditor5PluginConfigurableTrait { + + /** + * {@inheritdoc} + */ + public function getConfiguration() { + return $this->configuration; + } + + /** + * {@inheritdoc} + */ + public function setConfiguration(array $configuration) { + $this->configuration = $configuration + $this->defaultConfiguration(); + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefault.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefault.php new file mode 100644 index 000000000000..e4b0da8e6fe7 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefault.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin; + +use Drupal\Core\Plugin\PluginBase; +use Drupal\editor\EditorInterface; + +/** + * Defines the default CKEditor 5 plugin implementation. + * + * When a CKEditor 5 plugin is not configurable nor has dynamic plugin + * configuration, no custom code needs to be written: this default + * implementation will be used under the hood. + * + * @see @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$class + */ +class CKEditor5PluginDefault extends PluginBase implements CKEditor5PluginInterface { + + /** + * {@inheritdoc} + */ + public function __construct(array $configuration, $plugin_id, $plugin_definition) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + + // Ensure the configuration is set as expected for configurable plugins. + if ($this instanceof CKEditor5PluginConfigurableInterface) { + $this->setConfiguration($configuration); + } + } + + /** + * {@inheritdoc} + */ + public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array { + return $static_plugin_config; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php new file mode 100644 index 000000000000..252f884fe933 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php @@ -0,0 +1,426 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin; + +use Drupal\ckeditor5\HTMLRestrictionsUtilities; +use Drupal\Component\Assertion\Inspector; +use Drupal\Component\Plugin\Definition\PluginDefinition; +use Drupal\Component\Plugin\Definition\PluginDefinitionInterface; +use Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException; +use Drupal\Core\Config\Schema\SchemaCheckTrait; +use Drupal\Core\StringTranslation\TranslatableMarkup; + +/** + * Provides an implementation of a CKEditor 5 plugin definition. + */ +final class CKEditor5PluginDefinition extends PluginDefinition implements PluginDefinitionInterface { + + use SchemaCheckTrait; + + /** + * The CKEditor 5 aspects of the plugin definition. + * + * @var array + */ + private $ckeditor5; + + /** + * The Drupal aspects of the plugin definition. + * + * @var array + */ + private $drupal; + + /** + * CKEditor5PluginDefinition constructor. + * + * @param array $definition + * An array of values from the annotation/YAML. + * + * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException + */ + public function __construct(array $definition) { + $this->id = $id = $definition['id']; + + $expected_prefix = sprintf("%s_", $definition['provider']); + if (strpos($id, $expected_prefix) !== 0) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition must have a plugin ID that starts with "%s".', $id, $expected_prefix)); + } + $this->provider = $definition['provider']; + + static::validateCKEditor5Aspects($id, $definition); + $this->ckeditor5 = $definition['ckeditor5']; + + $this->validateDrupalAspects($id, $definition); + $this->drupal = $definition['drupal']; + } + + /** + * Gets an array representation of this CKEditor 5 plugin definition. + * + * @return array + */ + public function toArray(): array { + return [ + 'id' => $this->id(), + 'provider' => $this->provider, + 'ckeditor5' => $this->ckeditor5, + 'drupal' => $this->drupal, + ]; + } + + /** + * Validates the CKEditor 5 aspects of the CKEditor 5 plugin definition. + * + * @param string $id + * The plugin ID, for use in exception messages. + * @param array $definition + * The plugin definition to validate. + * + * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException + */ + private static function validateCKEditor5Aspects(string $id, array $definition): void { + if (!isset($definition['ckeditor5'])) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition must contain a "ckeditor5" key.', $id)); + } + + if (!isset($definition['ckeditor5']['plugins'])) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition must contain a "ckeditor5.plugins" key.', $id)); + } + } + + /** + * Validates the Drupal aspects of the CKEditor 5 plugin definition. + * + * @param string $id + * The plugin ID, for use in exception messages. + * @param array $definition + * The plugin definition to validate. + * + * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException + */ + private function validateDrupalAspects(string $id, array $definition): void { + if (!isset($definition['drupal'])) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition must contain a "drupal" key.', $id)); + } + + // Without a label, the CKEditor 5 UI, validation constraints et cetera + // cannot be as informative in guiding the end user. + if (!isset($definition['drupal']['label'])) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition must contain a "drupal.label" key.', $id)); + } + elseif (!is_string($definition['drupal']['label']) && !$definition['drupal']['label'] instanceof TranslatableMarkup) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition has a "drupal.label" value that is not a string nor a TranslatableMarkup instance.', $id)); + } + + // Without accurate and complete metadata about what HTML elements a + // CKEditor 5 plugin supports, Drupal cannot ensure a complete and accurate + // upgrade path. + if (!isset($definition['drupal']['elements'])) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition must contain a "drupal.elements" key.', $id)); + } + elseif ($definition['drupal']['elements'] !== FALSE && !(is_array($definition['drupal']['elements']) && !empty($definition['drupal']['elements']) && Inspector::assertAllStrings($definition['drupal']['elements']))) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition has a "drupal.elements" value that is neither a list of HTML tags/attributes nor false.', $id)); + } + elseif (is_array($definition['drupal']['elements'])) { + foreach ($definition['drupal']['elements'] as $index => $element) { + // ckeditor5_sourceEditing is the edge case here: it is the only plugin + // that is allowed to return a superset. It's a special case because it + // is through configuring this particular plugin that additional HTML + // tags can be allowed. + // Even though its plugin definition says '<*>' is supported, this is a + // little lie to convey that this plugin is capable of supporting any + // HTML tag … but which ones are actually supported depends on the + // configuration. + // This also means that without any configuration, it does not support + // any HTML tags. + // @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManager::getProvidedElements() + if ($definition['id'] === 'ckeditor5_sourceEditing') { + continue; + } + $parsed_elements = HTMLRestrictionsUtilities::allowedElementsStringToPluginElementsArray($element); + if (count($parsed_elements) === 0) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition has a value at "drupal.elements.%d" that is not an HTML tag with optional attributes: "%s". Expected structure: "<tag allowedAttribute="allowedValue1 allowedValue2">".', $id, $index, $element)); + } + elseif (count($parsed_elements) > 1) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition has a value at "drupal.elements.%d": multiple tags listed, should be one: "%s".', $id, $index, $element)); + } + } + } + + if (isset($definition['drupal']['class']) && !class_exists($definition['drupal']['class'])) { + throw new InvalidPluginDefinitionException($id, sprintf('The CKEditor 5 "%s" provides a plugin class: "%s", but it does not exist.', $id, $definition['drupal']['class'])); + } + elseif (isset($definition['drupal']['class']) && !in_array(CKEditor5PluginInterface::class, class_implements($definition['drupal']['class']))) { + throw new InvalidPluginDefinitionException($id, sprintf('CKEditor 5 plugins must implement \Drupal\ckeditor5\Plugin\CKEditor5PluginInterface. "%s" does not.', $id)); + } + elseif (in_array(CKEditor5PluginConfigurableInterface::class, class_implements($definition['drupal']['class'], TRUE))) { + $default_configuration = (new \ReflectionClass($definition['drupal']['class'])) + ->newInstanceWithoutConstructor() + ->defaultConfiguration(); + $typed_config = \Drupal::service('config.typed'); + if (!empty($default_configuration)) { + $configuration_name = sprintf("ckeditor5.plugin.%s", $definition['id']); + if (!$typed_config->hasConfigSchema($configuration_name)) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition is configurable, has non-empty default configuration but has no config schema. Config schema is required for validation.', $id)); + } + // TRICKY: SchemaCheckTrait::checkConfigSchema() dynamically adds a + // 'langcode' key-value pair that is irrelevant here. Also, + // ::checkValue() may (counter to its docs) trigger an exception. + $this->configName = 'STRIP'; + $this->schema = $typed_config->createFromNameAndData($configuration_name, $default_configuration); + $schema_errors = []; + foreach ($default_configuration as $key => $value) { + try { + $schema_error = $this->checkValue($key, $value); + } + catch (\InvalidArgumentException $e) { + $schema_error = [$key => $e->getMessage()]; + } + $schema_errors = array_merge($schema_errors, $schema_error); + } + $formatted_schema_errors = []; + foreach ($schema_errors as $key => $value) { + $formatted_schema_errors[] = sprintf("[%s] %s", str_replace('STRIP:', '', $key), trim($value, '.')); + } + if (!empty($schema_errors)) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition is configurable, but its default configuration does not match its config schema. The following errors were found: %s.', $id, implode(', ', $formatted_schema_errors))); + } + } + } + + if ($definition['drupal']['admin_library'] !== FALSE) { + [$extension, $library] = explode('/', $definition['drupal']['admin_library'], 2); + if (\Drupal::service('library.discovery')->getLibraryByName($extension, $library) === FALSE) { + throw new InvalidPluginDefinitionException($id, sprintf('The "%s" CKEditor 5 plugin definition has a "drupal.admin_library" key whose asset library "%s" does not exist.', $id, $definition['drupal']['admin_library'])); + } + } + } + + /** + * {@inheritdoc} + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$class + */ + public function getClass() { + return $this->drupal['class']; + } + + /** + * {@inheritdoc} + */ + public function setClass($class) { + $this->drupal['class'] = $class; + return $this; + } + + /** + * Whether this plugin is configurable by the user. + * + * @return bool + * TRUE if it is configurable, FALSE otherwise. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface + */ + public function isConfigurable(): bool { + return is_subclass_of($this->getClass(), CKEditor5PluginConfigurableInterface::class); + } + + /** + * Gets the human-readable name of the CKEditor plugin. + * + * @return \Drupal\Core\StringTranslation\TranslatableMarkup + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$label + */ + public function label(): TranslatableMarkup { + $label = $this->drupal['label']; + if (!$label instanceof TranslatableMarkup) { + $label = new TranslatableMarkup($label); + } + return $label; + } + + /** + * Gets the list of conditions to enable this plugin. + * + * @return array + * An array of conditions. + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$conditions + * + * @throws \LogicException + * When called on a plugin definition that has no conditions. + */ + public function getConditions(): array { + if (!$this->hasConditions()) { + throw new \LogicException('::getConditions() should only be called if ::hasConditions() returns TRUE.'); + } + return $this->drupal['conditions']; + } + + /** + * Whether this plugin has conditions. + * + * @return bool + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$conditions + */ + public function hasConditions(): bool { + return $this->drupal['conditions'] !== FALSE; + } + + /** + * Gets the list of toolbar items this plugin provides. + * + * @return array[] + * An array of toolbar items. + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$toolbar_items + */ + public function getToolbarItems(): array { + return $this->drupal['toolbar_items']; + } + + /** + * Whether this plugin has toolbar items. + * + * @return bool + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$toolbar_items + */ + public function hasToolbarItems(): bool { + return $this->getToolbarItems() !== []; + } + + /** + * Gets the asset library this plugin needs to be loaded. + * + * @return string + * An asset library ID. + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$library + * + * @throws \LogicException + * When called on a plugin definition that has no library. + */ + public function getLibrary(): string { + if (!$this->hasLibrary()) { + throw new \LogicException('::getLibrary() should only be called if ::hasLibrary() returns TRUE.'); + } + return $this->drupal['library']; + } + + /** + * Whether this plugin has an asset library to load. + * + * @return bool + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$library + */ + public function hasLibrary(): bool { + return $this->drupal['library'] !== FALSE; + } + + /** + * Gets the asset library this plugin needs to be loaded on the admin UI. + * + * @return string + * An asset library ID. + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$admin_library + * + * @throws \LogicException + * When called on a plugin definition that has no admin library. + */ + public function getAdminLibrary(): string { + if (!$this->hasAdminLibrary()) { + throw new \LogicException('::getAdminLibrary() should only be called if ::hasAdminLibrary() returns TRUE.'); + } + return $this->drupal['admin_library']; + } + + /** + * Whether this plugin has an asset library to load on the admin UI. + * + * @return bool + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$admin_library + */ + public function hasAdminLibrary(): bool { + return $this->drupal['admin_library'] !== FALSE; + } + + /** + * Gets the list of elements and attributes this plugin allows to create/edit. + * + * @return string[]|false + * FALSE if this plugin does not create/edit any elements or attributes. + * Otherwise a list. + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$elements + */ + public function getElements() { + return $this->drupal['elements']; + } + + /** + * Whether this plugin allows creating/editing elements and attributes. + * + * @return bool + * + * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$elements + */ + public function hasElements(): bool { + return $this->getElements() !== FALSE; + } + + /** + * Gets the list of CKEditor 5 plugin classes this plugin needs to load. + * + * @return string[] + * CKEditor 5 plugin classes. + * + * @see \Drupal\ckeditor5\Annotation\CKEditor5AspectsOfCKEditor5Plugin::$plugins + */ + public function getCKEditor5Plugins(): array { + return $this->ckeditor5['plugins']; + } + + /** + * Whether this plugin loads CKEditor 5 plugin classes. + * + * @return bool + * + * @see \Drupal\ckeditor5\Annotation\CKEditor5AspectsOfCKEditor5Plugin::$plugins + */ + public function hasCKEditor5Plugins(): bool { + return $this->getCKEditor5Plugins() !== []; + } + + /** + * Gets keyed array of additional values for the CKEditor5 constructor config. + * + * @return array + * The CKEditor 5 constructor config. + * + * @see \Drupal\ckeditor5\Annotation\CKEditor5AspectsOfCKEditor5Plugin::$config + */ + public function getCKEditor5Config(): array { + return $this->ckeditor5['config']; + } + + /** + * Whether this plugin has additional values for the CKEditor5 constructor. + * + * @return bool + * + * @see \Drupal\ckeditor5\Annotation\CKEditor5AspectsOfCKEditor5Plugin::$config + */ + public function hasCKEditor5Config(): bool { + return $this->getCKEditor5Config() !== []; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginElementsSubsetInterface.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginElementsSubsetInterface.php new file mode 100644 index 000000000000..8ecfd466f8d5 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginElementsSubsetInterface.php @@ -0,0 +1,25 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin; + +/** + * Defines an interface for plugins that can support an elements subset. + * + * Plugins can support multiple elements in the `elements` property of their + * definition. A text format may want to use a given plugin without supporting + * every supported element. Plugins that implement this interface return a + * subset based on the configuration in the Text Editor's settings. + */ +interface CKEditor5PluginElementsSubsetInterface extends CKEditor5PluginConfigurableInterface { + + /** + * Returns a configured subset of the elements supported by this plugin. + * + * @return string[] + * An array of supported elements. + */ + public function getElementsSubset(): array; + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginInterface.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginInterface.php new file mode 100644 index 000000000000..64b2b1dddca9 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginInterface.php @@ -0,0 +1,39 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin; + +use Drupal\Component\Plugin\PluginInspectionInterface; +use Drupal\editor\EditorInterface; + +/** + * Defines an interface for CKEditor5 plugins. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginBase + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface + * @see \Drupal\ckeditor5\Annotation\CKEditor5Plugin + * @see plugin_api + */ +interface CKEditor5PluginInterface extends PluginInspectionInterface { + + /** + * Allows a plugin to modify its static configuration. + * + * @param array $static_plugin_config + * The ckeditor5.config entry from the YAML or annotation, if any. If none + * is specified in the YAML or annotation, then the empty array. + * @param \Drupal\editor\EditorInterface $editor + * A configured text editor object. + * + * @return array + * Returns the received $static_plugin_config plus dynamic additions or + * alterations. + * + * @see \Drupal\ckeditor5\Annotation\CKEditor5AspectsOfCKEditor5Plugin::$config + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition::getCKEditor5Config() + */ + public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array; + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php new file mode 100644 index 000000000000..71ca1e66d050 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php @@ -0,0 +1,420 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin; + +use Drupal\ckeditor5\Annotation\CKEditor5Plugin; +use Drupal\ckeditor5\HTMLRestrictionsUtilities; +use Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator; +use Drupal\Component\Assertion\Inspector; +use Drupal\Component\Utility\NestedArray; +use Drupal\Core\Cache\CacheBackendInterface; +use Drupal\Core\Extension\ModuleHandlerInterface; +use Drupal\Core\Plugin\DefaultPluginManager; +use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery; +use Drupal\Core\Plugin\Discovery\YamlDiscoveryDecorator; +use Drupal\editor\EditorInterface; +use Drupal\filter\FilterPluginCollection; + +/** + * Provides a CKEditor5 plugin manager. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginInterface + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginBase + * @see \Drupal\ckeditor5\Annotation\CKEditor5Plugin + * @see plugin_api + * + * @internal + * CKEditor 5 is currently experimental and should only be leveraged by + * experimental modules and development releases of contributed modules. + * See https://www.drupal.org/core/experimental for more information. + */ +class CKEditor5PluginManager extends DefaultPluginManager implements CKEditor5PluginManagerInterface { + + /** + * Constructs a CKEditor5PluginManager object. + * + * @param \Traversable $namespaces + * An object that implements \Traversable which contains the root paths + * keyed by the corresponding namespace to look for plugin implementations. + * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend + * Cache backend instance to use. + * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler + * The module handler to invoke the alter hook with. + */ + public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) { + parent::__construct('Plugin/CKEditor5Plugin', $namespaces, $module_handler, CKEditor5PluginInterface::class, CKEditor5Plugin::class); + + $this->alterInfo('ckeditor5_plugin_info'); + $this->setCacheBackend($cache_backend, 'ckeditor5_plugins'); + } + + /** + * {@inheritdoc} + */ + protected function getDiscovery() { + if (!$this->discovery) { + $discovery = new AnnotatedClassDiscovery($this->subdir, $this->namespaces, $this->pluginDefinitionAnnotationName, $this->additionalAnnotationNamespaces); + $discovery = new YamlDiscoveryDecorator($discovery, 'ckeditor5', $this->moduleHandler->getModuleDirectories()); + // Note: adding translatable properties here is impossible because it only + // supports top-level properties. + // @see \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition::label() + $discovery = new AnnotationBridgeDecorator($discovery, $this->pluginDefinitionAnnotationName); + $this->discovery = $discovery; + } + return $this->discovery; + } + + /** + * {@inheritdoc} + */ + public function getPlugin(string $plugin_id, ?EditorInterface $editor): CKEditor5PluginInterface { + $configuration = $editor + ? self::getPluginConfiguration($editor, $plugin_id) + : []; + return $this->createInstance($plugin_id, $configuration); + } + + /** + * Gets the plugin configuration (if any) from a text editor config entity. + * + * @param \Drupal\editor\EditorInterface $editor + * A text editor config entity that is using CKEditor 5. + * @param string $plugin_id + * A CKEditor 5 plugin ID. + * + * @return array + * The CKEditor 5 plugin configuration, if any. + * + * @throws \InvalidArgumentException + * Thrown when the method is called with any other text editor than CKEditor 5. + */ + protected static function getPluginConfiguration(EditorInterface $editor, string $plugin_id): array { + if ($editor->getEditor() !== 'ckeditor5') { + throw new \InvalidArgumentException('This method should only be called on text editor config entities using CKEditor 5.'); + } + return $editor->getSettings()['plugins'][$plugin_id] ?? []; + } + + /** + * {@inheritdoc} + */ + public function getToolbarItems(): array { + return $this->mergeDefinitionValues('getToolbarItems', $this->getDefinitions()); + } + + /** + * {@inheritdoc} + */ + public function getAdminLibraries(): array { + $list = $this->mergeDefinitionValues('getAdminLibrary', $this->getDefinitions()); + // Include main admin library. + array_unshift($list, 'ckeditor5/admin'); + return $list; + } + + /** + * {@inheritdoc} + */ + public function getEnabledLibraries(EditorInterface $editor): array { + $list = $this->mergeDefinitionValues('getLibrary', $this->getEnabledDefinitions($editor)); + $list = array_unique($list); + // Include main library. + array_unshift($list, 'ckeditor5/drupal.ckeditor5'); + sort($list); + return $list; + } + + /** + * {@inheritdoc} + */ + public function getEnabledDefinitions(EditorInterface $editor): array { + $definitions = $this->getDefinitions(); + ksort($definitions); + + $definitions_with_plugins_condition = []; + + foreach ($definitions as $plugin_id => $definition) { + // Remove definition when plugin has conditions and they are not met. + if ($definition->hasConditions()) { + $plugin = $this->getPlugin($plugin_id, $editor); + if ($this->isPluginDisabled($plugin, $editor)) { + unset($definitions[$plugin_id]); + } + else { + // The `plugins` condition can only be evaluated at the end of + // gathering enabled definitions. ::isPluginDisabled() did not yet + // evaluate that condition. + if (array_key_exists('plugins', $definition->getConditions())) { + $definitions_with_plugins_condition[$plugin_id] = $definition; + } + } + } + // Otherwise, only remove the definition if the plugin has buttons and + // none of its buttons are active. + elseif ($definition->hasToolbarItems()) { + if (empty(array_intersect($editor->getSettings()['toolbar']['items'], array_keys($definition->getToolbarItems())))) { + unset($definitions[$plugin_id]); + } + } + } + + // Only enable the General HTML Support plugin on text formats with no HTML + // restrictions. + // @see https://ckeditor.com/docs/ckeditor5/latest/api/html-support.html + // @see https://github.com/ckeditor/ckeditor5/issues/9856 + if ($editor->getFilterFormat()->getHtmlRestrictions() !== FALSE) { + unset($definitions['ckeditor5_htmlSupport']); + } + + // Evaluate `plugins` condition. + foreach ($definitions_with_plugins_condition as $plugin_id => $definition) { + if (!empty(array_diff($definition->getConditions()['plugins'], array_keys($definitions)))) { + unset($definitions[$plugin_id]); + } + } + + return $definitions; + } + + /** + * {@inheritdoc} + */ + public function findPluginSupportingElement(string $tag): ?string { + // This will contain the element config for a plugin found to support $tag, + // so it can be compared to additional plugins that support $tag so the + // plugin with the most permissive config can be the id returned. + $selected_provided_elements = []; + $plugin_id = NULL; + + foreach ($this->getDefinitions() as $id => $definition) { + $provided_elements = $this->getProvidedElements([$id]); + + // Multiple plugins may support the $tag being searched for. + if (array_key_exists($tag, $provided_elements)) { + // Skip plugins with conditions as those plugins can't be guaranteed to + // provide a given tag without additional criteria being met. In the + // future we could possibly add support for automatically enabling + // filters or other similar requirements a plugin might need in order to + // be enabled and provide the tag it supports. For now, we assume such + // configuration cannot be modified programmatically. + if ($definition->hasConditions()) { + continue; + } + + // True if a plugin has already been selected. If another plugin + // supports $tag, it will be compared against this one. Whichever + // provides broader support for $tag will be the plugin id returned by + // this method. + $selected_plugin = isset($selected_provided_elements[$tag]); + $selected_config = $selected_provided_elements[$tag] ?? FALSE; + + // True if a plugin supporting $tag has been selected but does not allow + // any attributes while the plugin currently being checked does support + // attributes. + $adds_attribute_config = is_array($provided_elements[$tag]) && $selected_plugin && !is_array($selected_config); + $broader_attribute_config = FALSE; + + // If the selected plugin and the plugin being checked both have arrays + // for $tag configuration, they both have attribute configuration. Check + // which attribute configuration is more permissive. + if ($selected_plugin && is_array($selected_config) && is_array($provided_elements[$tag])) { + $selected_plugin_full_attributes = array_filter($selected_config, function ($attribute_config) { + return !is_array($attribute_config); + }); + $being_checked_plugin_full_attributes = array_filter($provided_elements[$tag], function ($attribute_config) { + return !is_array($attribute_config); + }); + if (count($being_checked_plugin_full_attributes) > count($selected_plugin_full_attributes)) { + $broader_attribute_config = TRUE; + } + } + + if (empty($selected_provided_elements) || $broader_attribute_config || $adds_attribute_config) { + $selected_provided_elements = $provided_elements; + $plugin_id = $id; + } + } + } + + return $plugin_id; + } + + /** + * {@inheritdoc} + */ + public function getCKEditor5PluginConfig(EditorInterface $editor): array { + $definitions = $this->getEnabledDefinitions($editor); + + // Allow plugin to modify config, such as loading dynamic values. + $config = []; + foreach ($definitions as $plugin_id => $definition) { + $plugin = $this->getPlugin($plugin_id, $editor); + $config[$plugin_id] = $plugin->getDynamicPluginConfig($definition->getCKEditor5Config(), $editor); + } + + return [ + 'plugins' => $this->mergeDefinitionValues('getCKEditor5Plugins', $definitions), + 'config' => NestedArray::mergeDeepArray($config), + ]; + } + + /** + * {@inheritdoc} + */ + public function getProvidedElements(array $plugin_ids = [], EditorInterface $editor = NULL, bool $retain_wildcard = FALSE): array { + $plugins = $this->getDefinitions(); + if (!empty($plugin_ids)) { + $plugins = array_intersect_key($plugins, array_flip($plugin_ids)); + } + $elements = []; + $processed_elements = []; + + foreach ($plugins as $id => $definition) { + // Some CKEditor 5 plugins only provide functionality, not additional + // elements. + if (!$definition->hasElements()) { + continue; + } + + $defined_elements = $definition->getElements(); + if (is_a($definition->getClass(), CKEditor5PluginElementsSubsetInterface::class, TRUE)) { + // ckeditor5_sourceEditing is the edge case here: it is the only plugin + // that is allowed to return a superset. It's a special case because it + // is through configuring this particular plugin that additional HTML + // tags can be allowed. + // Even though its plugin definition says '<*>' is supported, this is a + // little lie to convey that this plugin is capable of supporting any + // HTML tag … but which ones are actually supported depends on the + // configuration. + // This also means that without any configuration, it does not support + // any HTML tags. + if ($id === 'ckeditor5_sourceEditing') { + $defined_elements = !isset($editor) ? [] : $this->getPlugin($id, $editor)->getElementsSubset(); + } + // The default case: all other plugins that implement this interface are + // explicitly checked for compliance: only subsets are allowed. This is + // essential for \Drupal\ckeditor5\SmartDefaultSettings to be able to + // work: otherwise it would not be able to know which plugins to enable. + elseif (isset($editor)) { + $subset = $this->getPlugin($id, $editor)->getElementsSubset(); + $subset_violations = array_diff($subset, $defined_elements); + if (!empty($subset_violations)) { + throw new \LogicException(sprintf('The "%s" CKEditor 5 plugin implements ::getElementsSubset() and did not return a subset, the following tags are absent from the plugin definition: "%s".', $id, implode(' ', $subset_violations))); + } + $defined_elements = $subset; + } + } + assert(Inspector::assertAllStrings($defined_elements)); + foreach ($defined_elements as $element) { + if (in_array($element, $processed_elements)) { + continue; + } + $processed_elements[] = $element; + $additional_elements = HTMLRestrictionsUtilities::allowedElementsStringToHtmlFilterArray($element); + $elements = array_merge_recursive($elements, $additional_elements); + } + } + + foreach ($elements as $tag_name => $tag_config) { + if (substr($tag_name, 0, 1) === '$') { + $wildcard_tags = HTMLRestrictionsUtilities::getWildcardTags($tag_name); + foreach ($wildcard_tags as $wildcard_tag) { + if (isset($elements[$wildcard_tag])) { + foreach ($tag_config as $attribute_name => $attribute_value) { + if (is_array($attribute_value)) { + $attribute_value = array_keys($attribute_value); + } + $element_already_allows_all_values = isset($elements[$wildcard_tag][$attribute_name]) && $elements[$wildcard_tag][$attribute_name] === TRUE; + if (!$element_already_allows_all_values) { + HTMLRestrictionsUtilities::providedElementsAttributes($elements, $wildcard_tag, $attribute_name, $attribute_value); + } + } + } + } + if (!$retain_wildcard) { + unset($elements[$tag_name]); + } + } + } + + return HTMLRestrictionsUtilities::cleanAllowedHtmlArray($elements); + } + + /** + * Returns array of merged values for the given plugin definitions. + * + * @param string $get_method + * Which CKEditor5PluginDefinition getter to call to get values to merge. + * @param \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition[] $definitions + * The plugin definitions whose values to merge. + * + * @return array + * List of merged values for the given plugin definition method. + */ + protected function mergeDefinitionValues(string $get_method, array $definitions): array { + assert(method_exists(CKEditor5PluginDefinition::class, $get_method)); + $has_method = 'has' . substr($get_method, 3); + assert(method_exists(CKEditor5PluginDefinition::class, $has_method)); + $per_plugin = array_filter(array_map(function (CKEditor5PluginDefinition $definition) use ($get_method, $has_method) { + if ($definition->$has_method()) { + return $definition->$get_method(); + } + }, $definitions)); + return array_reduce($per_plugin, function (array $result, $current): array { + return is_array($current) && is_array(reset($current)) + // Merge nested arrays using their keys. + ? $result + $current + // Merge everything else by appending. + : array_merge($result, (array) $current); + }, []); + } + + /** + * Checks whether a plugin must be disabled due to unmet conditions. + * + * @param \Drupal\ckeditor5\Plugin\CKEditor5PluginInterface $plugin + * A CKEditor 5 plugin instance. + * @param \Drupal\editor\EditorInterface $editor + * A configured text editor object. + * + * @return bool + * Whether the plugin is disabled due to unmet conditions. + */ + protected function isPluginDisabled(CKEditor5PluginInterface $plugin, EditorInterface $editor): bool { + assert($plugin->getPluginDefinition()->hasConditions()); + foreach ($plugin->getPluginDefinition()->getConditions() as $condition_type => $required_value) { + switch ($condition_type) { + case 'toolbarItem': + if (!in_array($required_value, $editor->getSettings()['toolbar']['items'])) { + return TRUE; + } + break; + + case 'imageUploadStatus': + $image_upload_status = $editor->getImageUploadSettings()['status'] ?? FALSE; + if (!$image_upload_status) { + return TRUE; + } + break; + + case 'filter': + $filters = $editor->getFilterFormat()->filters(); + assert($filters instanceof FilterPluginCollection); + if (!$filters->has($required_value) || !$filters->get($required_value)->status) { + return TRUE; + } + break; + + case 'plugins': + // Tricky: this cannot yet be evaluated here. It will evaluated later. + // @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManager::getEnabledDefinitions() + return FALSE; + } + } + + return FALSE; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManagerInterface.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManagerInterface.php new file mode 100644 index 000000000000..800afb2169e3 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManagerInterface.php @@ -0,0 +1,122 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin; + +use Drupal\Component\Plugin\Discovery\DiscoveryInterface; +use Drupal\editor\EditorInterface; + +/** + * Provides the interface for a plugin manager of CKEditor 5 plugins. + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginInterface + * @see \Drupal\ckeditor5\Annotation\CKEditor5Plugin + * @see plugin_api + */ +interface CKEditor5PluginManagerInterface extends DiscoveryInterface { + + /** + * Returns a CKEditor 5 plugin with configuration from the editor. + * + * @param string $plugin_id + * The plugin ID. + * @param \Drupal\editor\EditorInterface|null $editor + * The editor to load configuration from. + * + * @return \Drupal\ckeditor5\Plugin\CKEditor5PluginInterface + * The CKEditor 5 plugin instance. + */ + public function getPlugin(string $plugin_id, ?EditorInterface $editor): CKEditor5PluginInterface; + + /** + * Gets a list of all toolbar items. + * + * @return string[] + * List of all toolbar items provided by plugins. + */ + public function getToolbarItems(): array; + + /** + * Gets a list of all admin library names. + * + * @return string[] + * List of all admin libraries provided by plugins. + */ + public function getAdminLibraries(): array; + + /** + * Gets a list of libraries required for the editor. + * + * This list is filtered by enabled plugins because it is needed at runtime. + * + * @param \Drupal\editor\EditorInterface $editor + * A configured text editor object. + * + * @return string[] + * The list of enabled libraries. + */ + public function getEnabledLibraries(EditorInterface $editor): array; + + /** + * Filter list of definitions by enabled plugins only. + * + * @param \Drupal\editor\EditorInterface $editor + * A configured text editor object. + * + * @return array + * Enabled plugin definitions. + */ + public function getEnabledDefinitions(EditorInterface $editor): array; + + /** + * Searches for CKEditor 5 plugin that supports a given tag. + * + * @param string $tag + * The HTML tag to be searched for within plugin definitions. + * + * @return string|null + * The ID of the plugin that supports the given tag. + */ + public function findPluginSupportingElement(string $tag): ?string; + + /** + * Gets the configuration for the CKEditor 5 plugins enabled in this editor. + * + * @param \Drupal\editor\EditorInterface $editor + * A configured text editor object. + * + * @return array[] + * An array with two key-value pairs: + * 1. 'plugins' lists all plugins to load + * 2. 'config' lists the configuration for all these plugins. + * + * @see https://ckeditor.com/docs/ckeditor5/latest/api/module_editor-classic_classiceditor-ClassicEditor.html + * + * @see \Drupal\ckeditor5\Plugin\Editor\CKEditor5::getJSSettings() + */ + public function getCKEditor5PluginConfig(EditorInterface $editor): array; + + /** + * Create a list of elements with attributes declared for the CKEditor5 build. + * + * @param string[] $plugin_ids + * An array of plugin IDs. + * @param \Drupal\editor\EditorInterface $editor + * A configured text editor object. + * @param bool $retain_wildcard + * If TRUE, the returned array will include config for wildcard elements + * such as `<$block>`. + * + * @return array + * A nested array with a structure as described in + * \Drupal\filter\Plugin\FilterInterface::getHTMLRestrictions(). + * + * @throws \LogicException + * Thrown when an invalid CKEditor5PluginElementsSubsetInterface implementation is encountered. + * + * @see \Drupal\filter\Plugin\FilterInterface::getHTMLRestrictions() + */ + public function getProvidedElements(array $plugin_ids = [], EditorInterface $editor = NULL, bool $retain_wildcard = FALSE): array; + +} diff --git a/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php b/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php new file mode 100644 index 000000000000..b93b78ef0069 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php @@ -0,0 +1,895 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Editor; + +use Drupal\ckeditor5\HTMLRestrictionsUtilities; +use Drupal\ckeditor5\Plugin\CKEditor5Plugin\Heading; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition; +use Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface; +use Drupal\Component\Serialization\Json; +use Drupal\Component\Utility\NestedArray; +use Drupal\Core\Cache\CacheBackendInterface; +use Drupal\Core\Config\Schema\SchemaCheckTrait; +use Drupal\Core\Extension\ModuleHandlerInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Form\SubformState; +use Drupal\Core\Form\SubformStateInterface; +use Drupal\Core\Language\LanguageManagerInterface; +use Drupal\Core\Plugin\ContainerFactoryPluginInterface; +use Drupal\ckeditor5\SmartDefaultSettings; +use Drupal\Core\Validation\Plugin\Validation\Constraint\PrimitiveTypeConstraint; +use Drupal\editor\EditorInterface; +use Drupal\editor\Entity\Editor; +use Drupal\editor\Plugin\EditorBase; +use Drupal\filter\FilterFormatInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Validator\ConstraintViolation; +use Symfony\Component\Validator\ConstraintViolationListInterface; + +/** + * Defines a CKEditor 5-based text editor for Drupal. + * + * @Editor( + * id = "ckeditor5", + * label = @Translation("CKEditor 5"), + * supports_content_filtering = TRUE, + * supports_inline_editing = TRUE, + * is_xss_safe = FALSE, + * supported_element_types = { + * "textarea" + * } + * ) + * + * @internal + * Plugin classes are internal. + */ +class CKEditor5 extends EditorBase implements ContainerFactoryPluginInterface { + + use SchemaCheckTrait; + + /** + * The CKEditor plugin manager. + * + * @var \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface + */ + protected $ckeditor5PluginManager; + + /** + * The language manager. + * + * @var \Drupal\Core\Language\LanguageManagerInterface + */ + protected $languageManager; + + /** + * The module handler. + * + * @var \Drupal\Core\Extension\ModuleHandlerInterface + */ + protected $moduleHandler; + + /** + * Smart default settings utility. + * + * @var \Drupal\ckeditor5\SmartDefaultSettings + */ + protected $smartDefaultSettings; + + /** + * The set of configured CKEditor 5 plugins. + * + * @var \Drupal\ckeditor5\Plugin\CKEditor5PluginInterface[] + */ + private $plugins = []; + + /** + * The submitted editor. + * + * @var \Drupal\editor\EditorInterface + */ + private $submittedEditor; + + /** + * The cache. + * + * @var \Drupal\Core\Cache\CacheBackendInterface + */ + protected $cache; + + /** + * Constructs a CKEditor5 editor plugin. + * + * @param array $configuration + * A configuration array containing information about the plugin instance. + * @param string $plugin_id + * The plugin_id for the plugin instance. + * @param mixed $plugin_definition + * The plugin implementation definition. + * @param \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface $ckeditor5_plugin_manager + * The CKEditor5 plugin manager. + * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager + * The language manager + * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler + * The module handler. + * @param \Drupal\ckeditor5\SmartDefaultSettings $smart_default_settings + * The smart default settings utility. + * @param \Drupal\Core\Cache\CacheBackendInterface $cache + * The cache. + */ + public function __construct(array $configuration, $plugin_id, $plugin_definition, CKEditor5PluginManagerInterface $ckeditor5_plugin_manager, LanguageManagerInterface $language_manager, ModuleHandlerInterface $module_handler, SmartDefaultSettings $smart_default_settings, CacheBackendInterface $cache) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + $this->ckeditor5PluginManager = $ckeditor5_plugin_manager; + $this->languageManager = $language_manager; + $this->moduleHandler = $module_handler; + $this->smartDefaultSettings = $smart_default_settings; + $this->cache = $cache; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('plugin.manager.ckeditor5.plugin'), + $container->get('language_manager'), + $container->get('module_handler'), + $container->get('ckeditor5.smart_default_settings'), + $container->get('cache.default') + ); + } + + /** + * {@inheritdoc} + */ + public function getDefaultSettings() { + return [ + 'toolbar' => [ + 'items' => ['heading', 'bold', 'italic'], + ], + 'plugins' => [ + 'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION, + ], + ]; + } + + /** + * Validates a Text Editor + Text Format pair. + * + * Drupal is designed to only verify schema conformity (and validation) of + * individual config entities. The Text Editor module layers a tightly coupled + * Editor entity on top of the Filter module's FilterFormat config entity. + * This inextricable coupling is clearly visible in EditorInterface: + * \Drupal\editor\EditorInterface::getFilterFormat(). They are always paired. + * Because not every text editor is guaranteed to be compatible with every + * text format, the pair must be validated. + * + * @param \Drupal\editor\EditorInterface $text_editor + * The paired text editor to validate. + * @param \Drupal\filter\FilterFormatInterface $text_format + * The paired text format to validate. + * @param bool $all_compatibility_problems + * Get all compatibility problems (default) or only fundamental ones. + * + * @return \Symfony\Component\Validator\ConstraintViolationListInterface + * The validation constraint violations. + * + * @throws \InvalidArgumentException + * Thrown when the text editor is not configured to use CKEditor 5. + * + * @see \Drupal\editor\EditorInterface::getFilterFormat() + * @see ckeditor5.pair.schema.yml + */ + public static function validatePair(EditorInterface $text_editor, FilterFormatInterface $text_format, bool $all_compatibility_problems = TRUE): ConstraintViolationListInterface { + if ($text_editor->getEditor() !== 'ckeditor5') { + throw new \InvalidArgumentException('This text editor is not configured to use CKEditor 5.'); + } + + $typed_config_manager = \Drupal::getContainer()->get('config.typed'); + $typed_config = $typed_config_manager->createFromNameAndData( + 'ckeditor5_valid_pair__format_and_editor', + [ + // A mix of: + // - editor.editor.*.settings — note that "settings" is top-level in + // editor.editor.*, and so it is here, so all validation constraints + // will continue to work fine. + 'settings' => $text_editor->toArray()['settings'], + // - filter.format.*.filters — note that "filters" is top-level in + // filter.format.*, and so it is here, so all validation constraints + // will continue to work fine. + 'filters' => $text_format->toArray()['filters'], + // - editor.editor.*.image_upload — note that "image_upload" is + // top-level in editor.editor.*, and so it is here, so all validation + // constraints will continue to work fine. + 'image_upload' => $text_editor->toArray()['image_upload'], + ] + ); + $violations = $typed_config->validate(); + + // Only consider validation constraint violations covering the pair, so not + // irrelevant details such as a PrimitiveTypeConstraint in filter settings, + // which do not affect CKEditor 5 anyway. + foreach ($violations as $i => $violation) { + assert($violation instanceof ConstraintViolation); + if (explode('.', $violation->getPropertyPath())[0] === 'filters' && is_a($violation->getConstraint(), PrimitiveTypeConstraint::class)) { + $violations->remove($i); + } + } + + if (!$all_compatibility_problems) { + foreach ($violations as $i => $violation) { + // Remove all violations that are not fundamental — these are at the + // root (property path ''). + if ($violation->getPropertyPath() !== '') { + $violations->remove($i); + } + } + } + + return $violations; + } + + /** + * {@inheritdoc} + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + $editor = $form_state->get('editor'); + assert($editor instanceof Editor); + $language = $this->languageManager->getCurrentLanguage(); + + // When enabling CKEditor 5, generate sensible settings from the + // pre-existing text editor/format rather than the hardcoded defaults + // whenever possible. + // @todo Remove after https://www.drupal.org/project/drupal/issues/3226673. + $format = $form_state->getFormObject()->getEntity(); + assert($format instanceof FilterFormatInterface); + if ($editor->isNew() && !$form_state->get('ckeditor5_is_active') && $form_state->get('ckeditor5_is_selected')) { + assert($editor->getSettings() === $this->getDefaultSettings()); + if (!$format->isNew()) { + [$editor, $messages] = $this->smartDefaultSettings->computeSmartDefaultSettings($editor, $format); + foreach ($messages as $message) { + $this->messenger()->addMessage($message); + } + } + $eventual_editor_and_format = $this->getEventualEditorWithPrimedFilterFormat($form_state, $editor); + // Provide the validated eventual pair in form state to + // ::getGeneratedAllowedHtmlValue(), to update filter_html's + // "allowed_html". + $form_state->set('ckeditor5_validated_pair', $eventual_editor_and_format); + // Ensure that CKEditor 5 plugins that need to interact with the Editor + // config entity are able to access the computed Editor, which was cloned + // from $form_state->get('editor'). + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload::buildConfigurationForm + $form_state->set('editor', $editor); + } + + // AJAX validation errors should appear visually close to the text editor + // since this is a very long form: otherwise they would not be noticed. + $form['real_time_validation_errors_location'] = [ + '#type' => 'container', + '#id' => 'ckeditor5-realtime-validation-messages-container', + ]; + + $form['toolbar'] = [ + '#type' => 'container', + '#title' => $this->t('CKEditor 5 toolbar configuration'), + '#theme' => 'ckeditor5_settings_toolbar', + '#attached' => [ + 'library' => $this->ckeditor5PluginManager->getAdminLibraries(), + 'drupalSettings' => [ + 'ckeditor5' => [ + 'language' => [ + 'dir' => $language->getDirection(), + 'langcode' => $language->getId(), + ], + ], + ], + ], + ]; + + $form['available_items_description'] = [ + '#type' => 'container', + '#markup' => $this->t('Press the down arrow key to add to the toolbar.'), + '#id' => 'available-button-description', + '#attributes' => [ + 'class' => ['visually-hidden'], + ], + ]; + + $form['active_items_description'] = [ + '#type' => 'container', + '#markup' => $this->t('Move this button in the toolbar by pressing the left or right arrow keys. Press the up arrow key to remove from the toolbar.'), + '#id' => 'active-button-description', + '#attributes' => [ + 'class' => ['visually-hidden'], + ], + ]; + + // The items are encoded in markup to provide a no-JS fallback. + // Although CKEditor 5 is useless without JS it would still be possible + // to see all the available toolbar items provided by plugins in the format + // that needs to be entered in the textarea. The UI app parses this list. + $form['toolbar']['available'] = [ + '#type' => 'container', + '#title' => 'Available items', + '#id' => 'ckeditor5-toolbar-buttons-available', + 'available_items' => [ + '#markup' => Json::encode($this->ckeditor5PluginManager->getToolbarItems()), + ], + ]; + + $editor_settings = $editor->getSettings(); + // This form field requires a JSON-style array of valid toolbar items. + // e.g. ["bold","italic","|","uploadImage"]. + // CKEditor 5 config for toolbar items takes an array of strings which + // correspond to the keys under toolbar_items in a plugin yml or annotation. + // @see https://ckeditor.com/docs/ckeditor5/latest/features/toolbar/toolbar.html + $form['toolbar']['items'] = [ + '#type' => 'textarea', + '#title' => $this->t('Toolbar items'), + '#rows' => 1, + '#default_value' => Json::encode($editor_settings['toolbar']['items']), + '#id' => 'ckeditor5-toolbar-buttons-selected', + '#attributes' => [ + 'tabindex' => '-1', + 'aria-hidden' => 'true', + ], + ]; + + $form['plugin_settings'] = [ + '#type' => 'vertical_tabs', + '#title' => $this->t('CKEditor5 plugin settings'), + '#id' => 'ckeditor5-plugin-settings', + ]; + + $this->injectPluginSettingsForm($form, $form_state, $editor); + + // Allow reliable detection of switching to CKEditor 5 from another text + // editor (or none at all). + $form['is_already_using_ckeditor5'] = [ + '#type' => 'hidden', + '#default_value' => TRUE, + ]; + + return $form; + } + + /** + * Determines whether the plugin settings form should be visible. + * + * @param \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition $definition + * The configurable CKEditor 5 plugin to assess the visibility for. + * @param \Drupal\editor\EditorInterface $editor + * A configured text editor object. + * + * @return bool + * Whether this configurable plugin's settings form should be visible. + */ + private function shouldHaveVisiblePluginSettingsForm(CKEditor5PluginDefinition $definition, EditorInterface $editor): bool { + assert($definition->isConfigurable()); + $enabled_plugins = $this->ckeditor5PluginManager->getEnabledDefinitions($editor); + + $plugin_id = $definition->id(); + + // Enabled plugins should be configurable. + if (isset($enabled_plugins[$plugin_id])) { + return TRUE; + } + + // There are two circumstances where a plugin not listed in $enabled_plugins + // due to isEnabled() returning false, that should still have its config + // form provided: + // 1 - A conditionally enabled plugin that does not depend on a toolbar item + // to be active. + // 2 - A conditionally enabled plugin that does depend on a toolbar item, + // and that toolbar item is active. + if ($definition->hasConditions()) { + $conditions = $definition->getConditions(); + if (!array_key_exists('toolbarItem', $conditions)) { + return TRUE; + } + elseif (in_array($conditions['toolbarItem'], $editor->getSettings()['toolbar']['items'], TRUE)) { + return TRUE; + } + } + + return FALSE; + } + + /** + * Injects the CKEditor plugins settings forms as a vertical tabs subform. + * + * @param array &$form + * A reference to an associative array containing the structure of the form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The current state of the form. + * @param \Drupal\editor\EditorInterface $editor + * A configured text editor object. + */ + private function injectPluginSettingsForm(array &$form, FormStateInterface $form_state, EditorInterface $editor): void { + $definitions = $this->ckeditor5PluginManager->getDefinitions(); + $eventual_editor_and_format = $this->getEventualEditorWithPrimedFilterFormat($form_state, $editor); + + foreach ($definitions as $plugin_id => $definition) { + if ($definition->isConfigurable() && $this->shouldHaveVisiblePluginSettingsForm($definition, $eventual_editor_and_format)) { + $plugin = $this->ckeditor5PluginManager->getPlugin($plugin_id, $editor); + $plugin_settings_form = []; + $form['plugins'][$plugin_id] = [ + '#type' => 'details', + '#title' => $definition->label(), + '#open' => TRUE, + '#group' => 'editor][settings][plugin_settings', + '#attributes' => [ + 'data-ckeditor5-plugin-id' => $plugin_id, + ], + ]; + $form['plugins'][$plugin_id] += $plugin->buildConfigurationForm($plugin_settings_form, $form_state); + } + } + } + + /** + * Form #after_build callback: provides text editor state changes. + * + * Updates the internal $this->entity object with submitted values when the + * form is being rebuilt (e.g. submitted via AJAX), so that subsequent + * processing (e.g. AJAX callbacks) can rely on it. + * + * @see \Drupal\Core\Entity\EntityForm::afterBuild() + */ + public static function assessActiveTextEditorAfterBuild(array $element, FormStateInterface $form_state): array { + // The case of the form being built initially, and the text editor plugin in + // use is already CKEditor 5. + if (!$form_state->isProcessingInput()) { + $editor = $form_state->get('editor'); + $already_using_ckeditor5 = $editor && $editor->getEditor() === 'ckeditor5'; + } + else { + // Whenever there is user input, this cannot be the initial build of the + // form and hence we need to inspect user input. + $already_using_ckeditor5 = FALSE; + NestedArray::getValue($form_state->getUserInput(), ['editor', 'settings', 'is_already_using_ckeditor5'], $already_using_ckeditor5); + } + + $form_state->set('ckeditor5_is_active', $already_using_ckeditor5); + $form_state->set('ckeditor5_is_selected', $form_state->getValue(['editor', 'editor']) === 'ckeditor5'); + return $element; + } + + /** + * Validate callback to inform the user of CKEditor 5 compatibility problems. + */ + public static function validateSwitchingToCKEditor5(array $form, FormStateInterface $form_state): void { + if (!$form_state->get('ckeditor5_is_active') && $form_state->get('ckeditor5_is_selected')) { + $minimal_ckeditor5_editor = Editor::create([ + 'format' => NULL, + 'editor' => 'ckeditor5', + ]); + $submitted_filter_format = CKEditor5::getSubmittedFilterFormat($form_state); + $fundamental_incompatibilities = CKEditor5::validatePair($minimal_ckeditor5_editor, $submitted_filter_format, FALSE); + foreach ($fundamental_incompatibilities as $violation) { + // @codingStandardsIgnoreLine + $form_state->setErrorByName('editor][editor', t($violation->getMessageTemplate(), $violation->getParameters())); + } + } + } + + /** + * Value callback to set the CKEditor 5-generated "allowed_html" value. + * + * Used to set the value of filter_html's "allowed_html" form item if the form + * has been validated and hence `ckeditor5_validated_pair` is available + * in form state. This allows setting a guaranteed to be valid value. + * + * `ckeditor5_validated_pair` can be set from two places: + * - When switching to CKEditor 5, this is populated by + * CKEditor5::buildConfigurationForm(). + * - When making filter or editor settings changes, it is populated by + * CKEditor5::validateConfigurationForm(). + * + * @param array $element + * An associative array containing the properties of the element. + * @param mixed $input + * The incoming input to populate the form element. If this is FALSE, + * the element's default value should be returned. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The current state of the form. + * + * @return string + * The value to assign to the element. + */ + public static function getGeneratedAllowedHtmlValue(array &$element, $input, FormStateInterface $form_state): string { + if ($form_state->isValidationComplete()) { + $validated_format = $form_state->get('ckeditor5_validated_pair')->getFilterFormat(); + $configuration = $validated_format->filters()->get('filter_html')->getConfiguration(); + return $configuration['settings']['allowed_html']; + } + else { + if ($input !== FALSE) { + return $input; + } + return $element['#default_value']; + } + } + + /** + * {@inheritdoc} + */ + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) { + $json = $form_state->getValue(['toolbar', 'items']); + $toolbar_items = Json::decode($json); + + // This basic validation must live in the form logic because it can only + // occur in a form context. + if (!$toolbar_items) { + $form_state->setErrorByName('toolbar][items', $this->t('Invalid toolbar value.')); + return; + } + + // Construct a Text Editor config entity with the submitted values for + // validation. Do this on a clone: do not manipulate form state. + $submitted_editor = clone $form_state->get('editor'); + $settings = $submitted_editor->getSettings(); + // Update settings first to match the submitted toolbar items. This is + // necessary for ::shouldHaveVisiblePluginSettingsForm() to work. + $settings['toolbar']['items'] = $toolbar_items; + $submitted_editor->setSettings($settings); + $eventual_editor_and_format_for_plugin_settings_visibility = $this->getEventualEditorWithPrimedFilterFormat($form_state, $submitted_editor); + $settings['plugins'] = []; + foreach ($this->ckeditor5PluginManager->getDefinitions() as $plugin_id => $definition) { + if (!$definition->isConfigurable()) { + continue; + } + // Create a fresh instance of this CKEditor 5 plugin, not tied to a text + // editor configuration entity. + $plugin = $this->ckeditor5PluginManager->getPlugin($plugin_id, NULL); + // If this plugin is configurable but it has empty default configuration, + // that means the configuration must be stored out of band. + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload + // @see editor_image_upload_settings_form() + $default_configuration = $plugin->defaultConfiguration(); + $configuration_stored_out_of_band = empty($default_configuration); + + if ($form_state->hasValue(['plugins', $plugin_id])) { + $subform = $form['plugins'][$plugin_id]; + $subform_state = SubformState::createForSubform($subform, $form, $form_state); + $plugin->validateConfigurationForm($subform, $subform_state); + $plugin->submitConfigurationForm($subform, $subform_state); + + // If the configuration is stored out of band, ::submitConfigurationForm + // will already have stored it. If it is not stored out of band, + // populate $settings, to populate $submitted_editor. + if (!$configuration_stored_out_of_band) { + $settings['plugins'][$plugin_id] = $plugin->getConfiguration(); + } + } + // @see \Drupal\ckeditor5\Plugin\Editor\CKEditor5::injectPluginSettingsForm() + elseif ($this->shouldHaveVisiblePluginSettingsForm($definition, $eventual_editor_and_format_for_plugin_settings_visibility)) { + if (!$configuration_stored_out_of_band) { + $settings['plugins'][$plugin_id] = $default_configuration; + } + } + } + // All plugin settings have been collected, including defaults that depend + // on visibility. Store the collected settings, throw away the interim state + // that allowed determining which defaults to add. + unset($eventual_editor_and_format_for_plugin_settings_visibility); + $submitted_editor->setSettings($settings); + + // Validate the text editor + text format pair. + // Note that the eventual pair is computed and validated, not the received + // pair: if the filter_html filter is in use, the CKEditor 5 configuration + // dictates the filter_html's filter plugin's "allowed_html" setting. + // @see ckeditor5_form_filter_format_form_alter() + // @see ::getGeneratedAllowedHtmlValue() + $eventual_editor_and_format = $this->getEventualEditorWithPrimedFilterFormat($form_state, $submitted_editor); + $violations = CKEditor5::validatePair($eventual_editor_and_format, $eventual_editor_and_format->getFilterFormat()); + foreach ($violations as $violation) { + $form_item_name = static::mapPairViolationPropertyPathsToFormNames($violation->getPropertyPath(), $form); + // When adding a toolbar item, it is possible that not all conditions for + // using it have been met yet. FormBuilder refuses to rebuild forms when a + // validation error is present. But to meet the condition for the toolbar + // item, configuration must be set in a vertical tab that must still + // appear. Work-around: reduce the validation error to a warning message. + // @see \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemConditionsMetConstraintValidator + if ($form_state->isRedirectDisabled() && $form_item_name === 'editor][settings][toolbar][items') { + $this->messenger()->addWarning($violation->getMessage()); + continue; + } + $form_state->getCompleteFormState()->setErrorByName($form_item_name, $violation->getMessage()); + } + + // Pass it on to ::submitConfigurationForm(). + $form_state->get('editor')->setSettings($settings); + + // Provide the validated eventual pair in form state to + // ::getGeneratedAllowedHtmlValue(), to update filter_html's + // "allowed_html". + $form_state->set('ckeditor5_validated_pair', $eventual_editor_and_format); + + assert(TRUE === $this->checkConfigSchema(\Drupal::getContainer()->get('config.typed'), 'editor.editor.id_does_not_matter', $submitted_editor->toArray()), 'Schema errors: ' . print_r($this->checkConfigSchema(\Drupal::getContainer()->get('config.typed'), 'editor.editor.id_does_not_matter', $submitted_editor->toArray()), TRUE)); + } + + /** + * Gets the submitted text format config entity from form state. + * + * Needed for validation. + * + * @param \Drupal\Core\Form\FormStateInterface $filter_format_form_state + * The text format configuration form's form state. + * + * @return \Drupal\filter\FilterFormatInterface + * A FilterFormat config entity representing the current filter form state. + */ + protected static function getSubmittedFilterFormat(FormStateInterface $filter_format_form_state): FilterFormatInterface { + $submitted_filter_format = clone $filter_format_form_state->getFormObject()->getEntity(); + assert($submitted_filter_format instanceof FilterFormatInterface); + + // Get only the values of the filter_format form state that are relevant for + // checking compatibility. This logic is copied from FilterFormatFormBase. + // @see \Drupal\ckeditor5\Plugin\Validation\Constraint\FundamentalCompatibilityConstraintValidator + // @see \Drupal\filter\FilterFormatFormBase::submitForm() + $filter_format_form_values = array_intersect_key( + $filter_format_form_state->getValues(), + array_flip(['filters', 'filter_settings'] + )); + foreach ($filter_format_form_values as $key => $value) { + if ($key !== 'filters') { + $submitted_filter_format->set($key, $value); + } + else { + foreach ($value as $instance_id => $config) { + $submitted_filter_format->setFilterConfig($instance_id, $config); + } + } + } + + return $submitted_filter_format; + } + + /** + * Gets the eventual text format config entity: from form state + editor. + * + * Needed for validation. + * + * @param \Drupal\Core\Form\SubformStateInterface $editor_form_state + * The text editor configuration form's form state. + * @param \Drupal\editor\EditorInterface $submitted_editor + * The current text editor config entity. + * + * @return \Drupal\editor\EditorInterface + * A clone of the received Editor config entity , with a primed associated + * FilterFormat that corresponds to the current form state, to avoid the + * stored FilterFormat config entity being loaded. + */ + protected function getEventualEditorWithPrimedFilterFormat(SubformStateInterface $editor_form_state, EditorInterface $submitted_editor): EditorInterface { + $submitted_filter_format = static::getSubmittedFilterFormat($editor_form_state->getCompleteFormState()); + + $pair = static::createEphemeralPairedEditor($submitted_editor, $submitted_filter_format); + + if ($pair->getFilterFormat()->filters('filter_html')->status) { + // Compute elements provided by the current CKEditor 5 settings. + $enabled_plugins = array_keys($this->ckeditor5PluginManager->getEnabledDefinitions($pair)); + $elements = $this->ckeditor5PluginManager->getProvidedElements($enabled_plugins, $pair); + + // Compute eventual filter_html setting. Eventual as in: this is the list + // of eventually allowed HTML tags. + // @see \Drupal\filter\FilterFormatFormBase::submitForm() + // @see ckeditor5_form_filter_format_form_alter() + $allowed_html = implode(' ', HTMLRestrictionsUtilities::toReadableElements($elements)); + $filter_html_config = $pair->getFilterFormat()->filters('filter_html')->getConfiguration(); + $filter_html_config['settings']['allowed_html'] = $allowed_html; + $pair->getFilterFormat()->setFilterConfig('filter_html', $filter_html_config); + } + + return $pair; + } + + /** + * Creates an ephemeral pair of text editor + text format config entity. + * + * Clones the given text editor config entity object and then overwrites its + * $filterFormat property, to prevent loading the text format config entity + * from entity storage in calls to Editor::hasAssociatedFilterFormat() and + * Editor::getFilterFormat(). + * This is necessary to be able to evaluate unsaved text editor and format + * config entities: + * - for assessing which CKEditor 5 plugins are enabled and whose settings + * forms to show + * - for validating them. + * + * @param \Drupal\editor\EditorInterface $editor + * The submitted text editor config entity, constructed from form values. + * @param \Drupal\filter\FilterFormatInterface $filter_format + * The submitted text format config entity, constructed from form values. + * + * @return \Drupal\editor\EditorInterface + * A clone of the given text editor config entity, with its $filterFormat + * property set to a clone of the given text format config entity. + * + * @throws \ReflectionException + * + * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManager::isPluginDisabled() + * @todo Remove this in https://www.drupal.org/project/drupal/issues/3231347 + */ + protected static function createEphemeralPairedEditor(EditorInterface $editor, FilterFormatInterface $filter_format): EditorInterface { + $paired_editor = clone $editor; + $reflector = new \ReflectionObject($paired_editor); + $property = $reflector->getProperty('filterFormat'); + $property->setAccessible(TRUE); + $property->setValue($paired_editor, clone $filter_format); + return $paired_editor; + } + + /** + * Maps Text Editor config object property paths to form names. + * + * @param string $property_path + * A config object property path. + * @param array $subform + * The subform being checked. + * + * @return string + * The corresponding form name in the subform. + */ + protected static function mapViolationPropertyPathsToFormNames(string $property_path, array $subform): string { + $parts = explode('.', $property_path); + // The "settings" form element does exist, but one level above the Text + // Editor-specific form. This is operating on a subform. + $shifted = array_shift($parts); + assert($shifted === 'settings'); + + // It is not required (nor sensible) for the form structure to match the + // config schema structure 1:1. Automatically identify the relevant form + // name. Try to be specific. Worst case, an entire plugin settings vertical + // tab is targeted. (Hence the minimum of 2 parts: the property path gets at + // minimum mapped to 'toolbar.items' or 'plugins.<plugin ID>'.) + while (count($parts) > 2 && !NestedArray::keyExists($subform, $parts)) { + array_pop($parts); + } + assert(NestedArray::keyExists($subform, $parts)); + return implode('][', array_merge(['settings'], $parts)); + } + + /** + * Maps Text Editor + Text Format pair property paths to form names. + * + * @param string $property_path + * A config object property path. + * @param array $form + * The form being checked. + * + * @return string + * The corresponding form name in the complete form. + */ + protected static function mapPairViolationPropertyPathsToFormNames(string $property_path, array $form): string { + // Fundamental compatibility errors are at the root. Map these to the text + // editor plugin dropdown. + if ($property_path === '') { + return 'editor][editor'; + } + + // Filters are top-level. + if (preg_match('/^filters\..*/', $property_path)) { + return implode('][', array_merge(explode('.', $property_path), ['settings'])); + } + + // Everything else is in the subform. + return 'editor][' . static::mapViolationPropertyPathsToFormNames($property_path, $form); + } + + /** + * {@inheritdoc} + */ + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { + // @see ::validateConfigurationForm() + $editor = $form_state->get('editor'); + + // Prepare the editor settings for editor_form_filter_admin_format_submit(). + // This strips away unwanted form values too, because those never can exist + // in the already validated Editor config entity. + $form_state->setValues($editor->getSettings()); + + parent::submitConfigurationForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function getJSSettings(Editor $editor) { + $toolbar_items = $editor->getSettings()['toolbar']['items']; + $plugin_config = $this->ckeditor5PluginManager->getCKEditor5PluginConfig($editor); + + $settings = [ + 'toolbar' => [ + 'items' => $toolbar_items, + 'shouldNotGroupWhenFull' => in_array('-', $toolbar_items, TRUE), + ], + ] + $plugin_config; + + if ($this->moduleHandler->moduleExists('locale')) { + $ui_langcode = 'en'; + $ckeditor_langcodes = $this->getLangcodes(); + $language_interface = $this->languageManager->getCurrentLanguage(); + if (isset($ckeditor_langcodes[$language_interface->getId()])) { + $ui_langcode = $ckeditor_langcodes[$language_interface->getId()]; + } + $settings['language']['ui'] = $ui_langcode; + } + + return $settings; + } + + /** + * {@inheritdoc} + */ + public function getLibraries(Editor $editor) { + $plugin_libraries = $this->ckeditor5PluginManager->getEnabledLibraries($editor); + + if ($this->moduleHandler->moduleExists('locale')) { + $ui_langcode = 'en'; + $ckeditor_langcodes = $this->getLangcodes(); + $language_interface = $this->languageManager->getCurrentLanguage(); + if (isset($ckeditor_langcodes[$language_interface->getId()])) { + $ui_langcode = $ckeditor_langcodes[$language_interface->getId()]; + } + $plugin_libraries[] = 'core/ckeditor5.translations.' . $ui_langcode; + } + + return $plugin_libraries; + } + + /** + * Returns a list of language codes supported by CKEditor 5. + * + * @return array + * An associative array keyed by language codes. + */ + protected function getLangcodes(): array { + // Cache the file system based language list calculation because this would + // be expensive to calculate all the time. The cache is cleared on core + // upgrades which is the only situation the CKEditor file listing should + // change. + $langcode_cache = $this->cache->get('ckeditor5.langcodes'); + if (!empty($langcode_cache)) { + $langcodes = $langcode_cache->data; + } + if (empty($langcodes)) { + $langcodes = []; + // Collect languages included with CKEditor 5 based on file listing. + $files = scandir('core/assets/vendor/ckeditor5/translations'); + foreach ($files as $file) { + if ($file[0] !== '.' && preg_match('/\.js$/', $file)) { + $langcode = basename($file, '.js'); + $langcodes[$langcode] = $langcode; + } + } + $this->cache->set('ckeditor5.langcodes', $langcodes); + } + + // Get language mapping if available to map to Drupal language codes. + // This is configurable in the user interface and not expensive to get, so + // we don't include it in the cached language list. + $language_mappings = $this->moduleHandler->moduleExists('language') ? language_get_browser_drupal_langcode_mappings() : []; + foreach ($langcodes as $langcode) { + // If this language code is available in a Drupal mapping, use that to + // compute a possibility for matching from the Drupal langcode to the + // CKEditor langcode. + // For instance, CKEditor uses the langcode 'no' for Norwegian, Drupal + // uses 'nb'. This would then remove the 'no' => 'no' mapping and replace + // it with 'nb' => 'no'. Now Drupal knows which CKEditor translation to + // load. + if (isset($language_mappings[$langcode]) && !isset($langcodes[$language_mappings[$langcode]])) { + $langcodes[$language_mappings[$langcode]] = $langcode; + unset($langcodes[$langcode]); + } + } + + return $langcodes; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5ElementConstraint.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5ElementConstraint.php new file mode 100644 index 000000000000..b9c3dc6062af --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5ElementConstraint.php @@ -0,0 +1,26 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Symfony\Component\Validator\Constraint; + +/** + * CKEditor 5 element. + * + * @Constraint( + * id = "CKEditor5Element", + * label = @Translation("CKEditor 5 element", context = "Validation"), + * ) + */ +class CKEditor5ElementConstraint extends Constraint { + + /** + * The default violation message. + * + * @var string + */ + public $message = 'The following tag is not valid HTML: %provided_element.'; + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5ElementConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5ElementConstraintValidator.php new file mode 100644 index 000000000000..fe62d144218f --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5ElementConstraintValidator.php @@ -0,0 +1,37 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Drupal\Component\Utility\Html; +use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Exception\UnexpectedTypeException; + +/** + * CKEditor 5 element validator. + * + * @internal + */ +class CKEditor5ElementConstraintValidator extends ConstraintValidator { + + /** + * {@inheritdoc} + * + * @throws \Symfony\Component\Validator\Exception\UnexpectedTypeException + * Thrown when the given constraint is not supported by this validator. + */ + public function validate($element, $constraint) { + if (!$constraint instanceof CKEditor5ElementConstraint) { + throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\CKEditor5Element'); + } + $body_child_nodes = Html::load(str_replace('>', ' />', trim($element)))->getElementsByTagName('body')->item(0)->childNodes; + + if ($body_child_nodes->count() !== 1 || $body_child_nodes->item(0)->nodeType !== XML_ELEMENT_NODE) { + $this->context->buildViolation($constraint->message) + ->setParameter('%provided_element', $element) + ->addViolation(); + } + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraint.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraint.php new file mode 100644 index 000000000000..7c8e843134c4 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraint.php @@ -0,0 +1,28 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Symfony\Component\Validator\Constraint; + +/** + * The CKEditor 5 plugin settings. + * + * @Constraint( + * id = "CKEditor5EnabledConfigurablePlugins", + * label = @Translation("CKEditor 5 enabled configurable plugins", context = "Validation"), + * ) + * + * @internal + */ +class EnabledConfigurablePluginsConstraint extends Constraint { + + /** + * The default violation message. + * + * @var string + */ + public $message = 'Configuration for the enabled plugin "%plugin_label" (%plugin_id) is missing.'; + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php new file mode 100644 index 000000000000..9d610b9fc1f8 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php @@ -0,0 +1,78 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition; +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Symfony\Component\Validator\Constraint; +use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Exception\UnexpectedTypeException; + +/** + * Enabled configurable plugin settings validator. + * + * @internal + */ +class EnabledConfigurablePluginsConstraintValidator extends ConstraintValidator implements ContainerInjectionInterface { + + use PluginManagerDependentValidatorTrait; + use TextEditorObjectDependentValidatorTrait; + + /** + * {@inheritdoc} + * + * @throws \Symfony\Component\Validator\Exception\UnexpectedTypeException + * Thrown when the given constraint is not supported by this validator. + */ + public function validate($settings, Constraint $constraint) { + if (!$constraint instanceof EnabledConfigurablePluginsConstraint) { + throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\EnabledConfigurablePluginsConstraint'); + } + + $configurable_enabled_definitions = $this->getConfigurableEnabledDefinitions(); + try { + $plugin_settings = $this->context->getRoot()->get('settings.plugins')->getValue(); + } + catch (\InvalidArgumentException $e) { + $plugin_settings = []; + } + + foreach ($configurable_enabled_definitions as $id => $definition) { + if ($definition->hasConditions() && isset($definition->getConditions()['imageUploadStatus']) && $definition->getConditions()['imageUploadStatus'] === TRUE) { + // This is the exception to the rule: this is a privileged plugin due to + // the Text Editor config entity's built-in image upload settings. + // @see \Drupal\editor\Entity\Editor::getImageUploadSettings() + // @see editor_image_upload_settings_form() + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload::buildConfigurationForm() + continue; + } + + if (!isset($plugin_settings[$id]) || empty($plugin_settings[$id])) { + $this->context->buildViolation($constraint->message) + ->setParameter('%plugin_label', $definition->label()) + ->setParameter('%plugin_id', $id) + ->atPath("plugins.$id") + ->addViolation(); + } + } + } + + /** + * Gets all configurable CKEditor 5 plugin definitions that are enabled. + * + * @return \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition[] + * An array of enabled configurable CKEditor 5 plugin definitions. + */ + private function getConfigurableEnabledDefinitions(): array { + $text_editor = $this->createTextEditorObjectFromContext(); + $enabled_definitions = $this->pluginManager->getEnabledDefinitions($text_editor); + $configurable_enabled_definitions = array_filter($enabled_definitions, function (CKEditor5PluginDefinition $definition): bool { + return $definition->isConfigurable(); + }); + + return $configurable_enabled_definitions; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraint.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraint.php new file mode 100644 index 000000000000..6932fe8ae4f4 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraint.php @@ -0,0 +1,56 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Symfony\Component\Validator\Constraint; + +/** + * The fundamental compatibility constraint. + * + * @Constraint( + * id = "CKEditor5FundamentalCompatibility", + * label = @Translation("CKEditor 5 fundamental text format compatibility", context = "Validation"), + * ) + * + * @internal + */ +class FundamentalCompatibilityConstraint extends Constraint { + + /** + * The violation message when no markup filters are enabled. + * + * @var string + */ + public $noMarkupFiltersMessage = 'CKEditor 5 only works with HTML-based text formats. The "%filter_label" (%filter_plugin_id) filter implies this text format is not HTML anymore.'; + + /** + * The violation message when fundamental HTML elements are forbidden. + * + * @var string + */ + public $forbiddenElementsMessage = 'CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are forbidden by the "%filter_label" (%filter_plugin_id) filter.'; + + /** + * The violation message when fundamental HTML elements are not allowed. + * + * @var string + */ + public $nonAllowedElementsMessage = 'CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are not allowed by the "%filter_label" (%filter_plugin_id) filter.'; + + /** + * The violation message when HTML elements cannot be generated by CKE5. + * + * @var string + */ + public $notSupportedElementsMessage = 'The current CKEditor 5 build requires the following elements and attributes: <br><code>@list</code><br>The following elements are not supported: <br><code>@diff</code>'; + + /** + * The violation message when CKE5 can generate disallowed HTML elements. + * + * @var string + */ + public $missingElementsMessage = 'The current CKEditor 5 build requires the following elements and attributes: <br><code>@list</code><br>The following elements are missing: <br><code>@diff</code>'; + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php new file mode 100644 index 000000000000..43de2c35c9a5 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php @@ -0,0 +1,293 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Drupal\ckeditor5\HTMLRestrictionsUtilities; +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Drupal\editor\EditorInterface; +use Drupal\filter\FilterFormatInterface; +use Drupal\filter\Plugin\FilterInterface; +use Symfony\Component\Validator\Constraint; +use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Exception\UnexpectedTypeException; + +/** + * Validates fundamental compatibility of CKEditor 5 with the given text format. + * + * Fundamental requirements: + * 1. No TYPE_MARKUP_LANGUAGE filters allowed. + * 2. Fundamental CKEditor 5 plugins' HTML tags are allowed. + * 3. The HTML restrictions of all TYPE_HTML_RESTRICTOR filters allow the + * configured CKEditor 5 plugins to work. + * + * @see \Drupal\filter\Plugin\FilterInterface::TYPE_HTML_RESTRICTOR + * + * @internal + */ +class FundamentalCompatibilityConstraintValidator extends ConstraintValidator implements ContainerInjectionInterface { + + use PluginManagerDependentValidatorTrait; + use TextEditorObjectDependentValidatorTrait; + + /** + * The fundamental CKEditor 5 plugins without which it cannot function. + * + * @var string[] + */ + const FUNDAMENTAL_CKEDITOR5_PLUGINS = [ + 'ckeditor5_essentials', + 'ckeditor5_paragraph', + ]; + + /** + * {@inheritdoc} + * + * @throws \Symfony\Component\Validator\Exception\UnexpectedTypeException + * Thrown when the given constraint is not supported by this validator. + */ + public function validate($toolbar_item, Constraint $constraint) { + if (!$constraint instanceof FundamentalCompatibilityConstraint) { + throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\FundamentalCompatibility'); + } + + $text_editor = $this->createTextEditorObjectFromContext(); + + // First: the two fundamental checks against the text format. If any of + // them adds a constraint violation, return early, because it is a + // fundamental compatibility problem. + $this->checkNoMarkupFilters($text_editor->getFilterFormat(), $constraint); + if ($this->context->getViolations()->count() > 0) { + return; + } + $this->checkHtmlRestrictionsAreCompatible($text_editor->getFilterFormat(), $constraint); + if ($this->context->getViolations()->count() > 0) { + return; + } + + // Finally: ensure the CKEditor 5 configuration's ability to generate HTML + // markup precisely matches that of the text format. + $this->checkHtmlRestrictionsMatch($text_editor, $constraint); + } + + /** + * Checks no TYPE_MARKUP_LANGUAGE filters are present. + * + * @param \Drupal\filter\FilterFormatInterface $text_format + * The text format to validate. + * @param \Drupal\ckeditor5\Plugin\Validation\Constraint\FundamentalCompatibilityConstraint $constraint + * The constraint to validate. + */ + private function checkNoMarkupFilters(FilterFormatInterface $text_format, FundamentalCompatibilityConstraint $constraint): void { + $markup_filters = static::getFiltersInFormatOfType( + $text_format, + FilterInterface::TYPE_MARKUP_LANGUAGE + ); + if (!empty($markup_filters)) { + foreach ($markup_filters as $markup_filter) { + $this->context->buildViolation($constraint->noMarkupFiltersMessage) + ->setParameter('%filter_label', $markup_filter->getLabel()) + ->setParameter('%filter_plugin_id', $markup_filter->getPluginId()) + ->addViolation(); + } + } + } + + /** + * Checks that fundamental CKEditor 5 plugins' HTML tags are allowed. + * + * @param \Drupal\filter\FilterFormatInterface $text_format + * The text format to validate. + * @param \Drupal\ckeditor5\Plugin\Validation\Constraint\FundamentalCompatibilityConstraint $constraint + * The constraint to validate. + */ + private function checkHtmlRestrictionsAreCompatible(FilterFormatInterface $text_format, FundamentalCompatibilityConstraint $constraint): void { + $minimum_tags = array_keys($this->pluginManager->getProvidedElements(self::FUNDAMENTAL_CKEDITOR5_PLUGINS)); + + $html_restrictions = $text_format->getHtmlRestrictions(); + + $forbidden_minimum_tags = isset($html_restrictions['forbidden_tags']) + ? array_diff($minimum_tags, $html_restrictions['forbidden_tags']) + : []; + if (!empty($forbidden_minimum_tags)) { + $offending_filter = static::findHtmlRestrictorFilterForbiddingTags($text_format, $minimum_tags); + $this->context->buildViolation($constraint->forbiddenElementsMessage) + ->setParameter('%filter_label', $offending_filter->getLabel()) + ->setParameter('%filter_plugin_id', $offending_filter->getPluginId()) + ->addViolation(); + } + + $not_allowed_minimum_tags = isset($html_restrictions['allowed']) + ? array_diff($minimum_tags, array_keys($html_restrictions['allowed'])) + : []; + if (!empty($not_allowed_minimum_tags)) { + $offending_filter = static::findHtmlRestrictorFilterNotAllowingTags($text_format, $minimum_tags); + $this->context->buildViolation($constraint->nonAllowedElementsMessage) + ->setParameter('%filter_label', $offending_filter->getLabel()) + ->setParameter('%filter_plugin_id', $offending_filter->getPluginId()) + ->addViolation(); + } + } + + /** + * Checks the HTML restrictions match the enabled CKEditor 5 plugins' output. + * + * @param \Drupal\editor\EditorInterface $text_editor + * The text editor to validate. + * @param \Drupal\ckeditor5\Plugin\Validation\Constraint\FundamentalCompatibilityConstraint $constraint + * The constraint to validate. + */ + private function checkHtmlRestrictionsMatch(EditorInterface $text_editor, FundamentalCompatibilityConstraint $constraint): void { + $html_restrictor_filters = static::getFiltersInFormatOfType( + $text_editor->getFilterFormat(), + FilterInterface::TYPE_HTML_RESTRICTOR + ); + + $enabled_plugins = array_keys($this->pluginManager->getEnabledDefinitions($text_editor)); + $provided = $this->pluginManager->getProvidedElements($enabled_plugins, $text_editor); + + foreach ($html_restrictor_filters as $filter_plugin_id => $filter) { + $restrictions = $filter->getHTMLRestrictions(); + if (!isset($restrictions['allowed'])) { + // @todo Handle HTML restrictor filters that only set forbidden_tags + // https://www.drupal.org/project/ckeditor5/issues/3231336. + continue; + } + + $allowed = $restrictions['allowed']; + // @todo Validate attributes allowed or forbidden on all elements + // https://www.drupal.org/project/ckeditor5/issues/3231334. + if (isset($allowed['*'])) { + unset($allowed['*']); + } + + $diff_allowed = HTMLRestrictionsUtilities::diffAllowedElements($allowed, $provided); + $diff_elements = HTMLRestrictionsUtilities::diffAllowedElements($provided, $allowed); + + if (!empty($diff_allowed)) { + $this->context->buildViolation($constraint->notSupportedElementsMessage) + ->setParameter('@list', implode(' ', HTMLRestrictionsUtilities::toReadableElements($provided))) + ->setParameter('@diff', implode(' ', HTMLRestrictionsUtilities::toReadableElements($diff_allowed))) + ->atPath("filters.$filter_plugin_id") + ->addViolation(); + } + elseif (!empty($diff_elements)) { + $this->context->buildViolation($constraint->missingElementsMessage) + ->setParameter('@list', implode(' ', HTMLRestrictionsUtilities::toReadableElements($provided))) + ->setParameter('@diff', implode(' ', HTMLRestrictionsUtilities::toReadableElements($diff_elements))) + ->atPath("filters.$filter_plugin_id") + ->addViolation(); + } + } + } + + /** + * Gets the filters of the given type in this text format. + * + * @param \Drupal\filter\FilterFormatInterface $text_format + * A text format whose filters to get. + * @param int $filter_type + * One of FilterInterface::TYPE_*. + * @param callable|null $extra_requirements + * An optional callable that can check a filter of this type for additional + * conditions to be met. Must return TRUE when it meets the conditions, + * FALSE otherwise. + * + * @return \Drupal\filter\Plugin\FilterInterface[] + * The matched filter plugins. + */ + private static function getFiltersInFormatOfType(FilterFormatInterface $text_format, int $filter_type, callable $extra_requirements = NULL): array { + assert(in_array($filter_type, [ + FilterInterface::TYPE_MARKUP_LANGUAGE, + FilterInterface::TYPE_HTML_RESTRICTOR, + FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE, + FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE, + ])); + return array_filter($text_format->filters()->getAll(), function (FilterInterface $filter) use ($filter_type, $extra_requirements) { + if (!$filter->status) { + return FALSE; + } + if ($filter->getType() === $filter_type && ($extra_requirements === NULL || $extra_requirements($filter))) { + return TRUE; + } + return FALSE; + }); + } + + /** + * Analyzes a text format to find the filter not allowing required tags. + * + * @param \Drupal\filter\FilterFormatInterface $text_format + * A text format whose filters to check for compatibility. + * @param string[] $required_tags + * A list of HTML tags that are required. + * + * @return \Drupal\filter\Plugin\FilterInterface + * The filter plugin instance not allowing the required tags. + * + * @throws \InvalidArgumentException + */ + private static function findHtmlRestrictorFilterForbiddingTags(FilterFormatInterface $text_format, array $required_tags): FilterInterface { + // Get HTML restrictor filters that actually restrict HTML. + $filters = static::getFiltersInFormatOfType( + $text_format, + FilterInterface::TYPE_HTML_RESTRICTOR, + function (FilterInterface $filter) { + return $filter->getHTMLRestrictions() !== FALSE; + } + ); + + foreach ($filters as $filter) { + $restrictions = $filter->getHTMLRestrictions(); + + // @todo Fix + // \Drupal\filter_test\Plugin\Filter\FilterTestRestrictTagsAndAttributes::getHTMLRestrictions(), + // whose computed value for forbidden_tags does not comply with the API + // https://www.drupal.org/project/drupal/issues/3231331. + if (array_keys($restrictions['forbidden_tags']) != range(0, count($restrictions['forbidden_tags']))) { + $restrictions['forbidden_tags'] = array_keys($restrictions['forbidden_tags']); + } + if (isset($restrictions['forbidden_tags']) && !empty(array_intersect($required_tags, $restrictions['forbidden_tags']))) { + return $filter; + } + } + + throw new \InvalidArgumentException('This text format does not have a "tags forbidden" restriction that includes the required tags.'); + } + + /** + * Analyzes a text format to find the filter not allowing required tags. + * + * @param \Drupal\filter\FilterFormatInterface $text_format + * A text format whose filters to check for compatibility. + * @param string[] $required_tags + * A list of HTML tags that are required. + * + * @return \Drupal\filter\Plugin\FilterInterface + * The filter plugin instance not allowing the required tags. + * + * @throws \InvalidArgumentException + */ + private static function findHtmlRestrictorFilterNotAllowingTags(FilterFormatInterface $text_format, array $required_tags): FilterInterface { + // Get HTML restrictor filters that actually restrict HTML. + $filters = static::getFiltersInFormatOfType( + $text_format, + FilterInterface::TYPE_HTML_RESTRICTOR, + function (FilterInterface $filter) { + return $filter->getHTMLRestrictions() !== FALSE; + } + ); + + foreach ($filters as $filter) { + $restrictions = $filter->getHTMLRestrictions(); + + if (isset($restrictions['allowed']) && !empty(array_diff($required_tags, array_keys($restrictions['allowed'])))) { + return $filter; + } + } + + throw new \InvalidArgumentException('This text format does not have a "tags allowed" restriction that excludes the required tags.'); + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/PluginManagerDependentValidatorTrait.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/PluginManagerDependentValidatorTrait.php new file mode 100644 index 000000000000..ae52ece32d48 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/PluginManagerDependentValidatorTrait.php @@ -0,0 +1,43 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * Common functionality for many CKEditor 5 validation constraints. + * + * @internal + */ +trait PluginManagerDependentValidatorTrait { + + /** + * The CKEditor 5 plugin manager. + * + * @var \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface + */ + protected $pluginManager; + + /** + * Constructs a CKEditor5ConstraintValidatorTrait object. + * + * @param \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface $plugin_manager + * The CKEditor 5 plugin manager. + */ + public function __construct(CKEditor5PluginManagerInterface $plugin_manager) { + $this->pluginManager = $plugin_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('plugin.manager.ckeditor5.plugin') + ); + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraint.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraint.php new file mode 100644 index 000000000000..76fe468a616d --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraint.php @@ -0,0 +1,35 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Symfony\Component\Validator\Constraint; + +/** + * For disallowing Source Editing tags that are already supported by a plugin. + * + * @Constraint( + * id = "SourceEditingRedundantTags", + * label = @Translation("Source editing should only use otherwise unavailable tags", context = "Validation"), + * ) + * + * @internal + */ +class SourceEditingRedundantTagsConstraint extends Constraint { + + /** + * When a Source Editing tag is added that an enabled plugin supports. + * + * @var string + */ + public $enabledPluginsMessage = 'The following tag(s) are already supported by enabled plugins and should not be added to the Source Editing "Manually editable HTML tags" field: %overlapping_tags.'; + + /** + * When a Source Editing tag is added that a disabled plugin supports. + * + * @var string + */ + public $availablePluginsMessage = 'The following tag(s) are already supported by available plugins and should not be added to the Source Editing "Manually editable HTML tags" field. Instead, enable the following plugins to support these tags: %overlapping_tags.'; + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraintValidator.php new file mode 100644 index 000000000000..618cd3c5951f --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/SourceEditingRedundantTagsConstraintValidator.php @@ -0,0 +1,103 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Drupal\ckeditor5\HTMLRestrictionsUtilities; +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Symfony\Component\Validator\Constraint; +use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Exception\UnexpectedTypeException; + +/** + * Ensures tags already available via plugin are not be added to Source Editing. + * + * @internal + */ +class SourceEditingRedundantTagsConstraintValidator extends ConstraintValidator implements ContainerInjectionInterface { + + use PluginManagerDependentValidatorTrait; + use TextEditorObjectDependentValidatorTrait; + + /** + * {@inheritdoc} + * + * @throws \Symfony\Component\Validator\Exception\UnexpectedTypeException + * Thrown when the given constraint is not supported by this validator. + */ + public function validate($value, Constraint $constraint) { + if (!$constraint instanceof SourceEditingRedundantTagsConstraint) { + throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\SourceEditingRedundantTagsConstraint'); + } + if (empty($value)) { + return; + } + + $text_editor = $this->createTextEditorObjectFromContext(); + $enabled_plugins = $this->pluginManager->getEnabledDefinitions($text_editor); + $disabled_plugins = array_diff_key($this->pluginManager->getDefinitions(), $enabled_plugins); + unset($enabled_plugins['ckeditor5_sourceEditing']); + + // An array of tags enabled by every plugin other than Source Editing. + $enabled_plugin_tags = $this->pluginManager->getProvidedElements(array_keys($enabled_plugins)); + $disabled_plugin_tags = $this->pluginManager->getProvidedElements(array_keys($disabled_plugins)); + + // An array of just the tags enabled by Source Editing. + $source_enabled_tags = HTMLRestrictionsUtilities::allowedElementsStringToHtmlFilterArray($value); + $enabled_plugin_overlap = array_intersect_key($enabled_plugin_tags, $source_enabled_tags); + $disabled_plugin_overlap = array_intersect_key($disabled_plugin_tags, $source_enabled_tags); + + foreach ([$enabled_plugin_overlap, $disabled_plugin_overlap] as &$overlap) { + $checking_enabled = $overlap === $enabled_plugin_overlap; + if (!empty($overlap)) { + foreach ($overlap as $overlapping_tag => $overlapping_config) { + if (is_array($source_enabled_tags[$overlapping_tag])) { + unset($overlap[$overlapping_tag]); + } + } + } + if (!empty($overlap)) { + $plugins_to_check_against = $checking_enabled ? $enabled_plugins : $disabled_plugins; + $tags_plugin_report = $this->pluginsSupplyingTagsMessage($overlap, $plugins_to_check_against); + $message = $checking_enabled ? $constraint->enabledPluginsMessage : $constraint->availablePluginsMessage; + $this->context->buildViolation($message) + ->setParameter('%overlapping_tags', $tags_plugin_report) + ->addViolation(); + } + } + } + + /** + * Creates a message listing plugins and the overlapping tags they provide. + * + * @param array $tags + * An array of overlapping tags. + * @param \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition[] $plugin_definitions + * An array of plugin definitions where overlap was found. + * + * @return string + * A list of plugins that provide the overlapping tags. + */ + private function pluginsSupplyingTagsMessage(array $tags, array $plugin_definitions): string { + $message_array = []; + $message_string = ''; + foreach ($plugin_definitions as $plugin_id => $definition) { + if ($definition->hasElements()) { + $elements_array = HTMLRestrictionsUtilities::allowedElementsStringToHtmlFilterArray(implode('', $definition->getElements())); + foreach ($elements_array as $tag_name => $tag_config) { + if (isset($tags[$tag_name])) { + $message_array[(string) $definition->label()][] = "<$tag_name>"; + } + } + } + } + foreach ($message_array as $plugin_label => $tag_list) { + $tags_string = implode(', ', $tag_list); + $message_string .= "$plugin_label ($tags_string), "; + } + + return trim($message_string, ' ,'); + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/TextEditorObjectDependentValidatorTrait.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/TextEditorObjectDependentValidatorTrait.php new file mode 100644 index 000000000000..63bf2f0dad60 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/TextEditorObjectDependentValidatorTrait.php @@ -0,0 +1,55 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Drupal\editor\EditorInterface; +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Drupal\filter\FilterFormatInterface; + +/** + * Some CKEditor 5 constraint validators need a Text Editor object. + */ +trait TextEditorObjectDependentValidatorTrait { + + /** + * Creates a text editor object from the execution context. + * + * Works both for an individual text editor config entity and a pair. + * + * @return \Drupal\editor\EditorInterface + * A text editor object, with the text format pre-populated. + */ + private function createTextEditorObjectFromContext(): EditorInterface { + if ($this->context->getRoot()->getDataDefinition()->getDataType() === 'ckeditor5_valid_pair__format_and_editor') { + $text_format = FilterFormat::create([ + 'filters' => $this->context->getRoot()->get('filters')->toArray(), + ]); + } + else { + assert($this->context->getRoot()->getDataDefinition()->getDataType() === 'editor.editor.*'); + $text_format = FilterFormat::load($this->context->getRoot()->get('format')->getValue()); + } + assert($text_format instanceof FilterFormatInterface); + + $text_editor = Editor::create([ + 'editor' => 'ckeditor5', + 'settings' => $this->context->getRoot()->get('settings')->toArray(), + 'image_upload' => $this->context->getRoot()->get('image_upload')->toArray(), + // Specify `filterFormat` to ensure that the generated Editor config + // entity object already has the $filterFormat property set, to prevent + // calls to Editor::hasAssociatedFilterFormat() and + // Editor::getFilterFormat() from loading the FilterFormat from storage. + // As far as this validation constraint validator is concerned, the + // concrete FilterFormat entity ID does not matter, all that matters is + // its filter configuration. Those exist in $text_format. + 'filterFormat' => $text_format, + ]); + assert($text_editor instanceof EditorInterface); + + return $text_editor; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConditionsMetConstraint.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConditionsMetConstraint.php new file mode 100644 index 000000000000..37dad3ce6f95 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConditionsMetConstraint.php @@ -0,0 +1,49 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Symfony\Component\Validator\Constraint; + +/** + * A (placed) CKEditor 5 toolbar item's conditions must be met. + * + * @Constraint( + * id = "CKEditor5ToolbarItemConditionsMet", + * label = @Translation("CKEditor 5 toolbar item conditions must be met", context = "Validation"), + * ) + * + * @internal + */ +class ToolbarItemConditionsMetConstraint extends Constraint { + + /** + * The violation message when the required image upload status is not set. + * + * @var string + */ + public $imageUploadStatusRequiredMessage = 'The %toolbar_item toolbar item requires image uploads to be enabled.'; + + /** + * The violation message when a required filter is missing. + * + * @var string + */ + public $filterRequiredMessage = 'The %toolbar_item toolbar item requires the %filter filter to be enabled.'; + + /** + * The violation message when 1 required plugin is missing. + * + * @var string + */ + public $singleMissingRequiredPluginMessage = 'The %toolbar_item toolbar item requires the %plugin plugin to be enabled.'; + + /** + * The violation message when >1 required plugin is missing. + * + * @var string + */ + public $multipleMissingRequiredPluginMessage = 'The %toolbar_item toolbar item requires the %plugins plugins to be enabled.'; + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConditionsMetConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConditionsMetConstraintValidator.php new file mode 100644 index 000000000000..1987c862b4f6 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConditionsMetConstraintValidator.php @@ -0,0 +1,137 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition; +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Symfony\Component\Validator\Constraint; +use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Exception\UnexpectedTypeException; + +/** + * Toolbar item conditions met constraint validator. + * + * @internal + */ +class ToolbarItemConditionsMetConstraintValidator extends ConstraintValidator implements ContainerInjectionInterface { + + use PluginManagerDependentValidatorTrait; + use TextEditorObjectDependentValidatorTrait; + + /** + * {@inheritdoc} + * + * @throws \Symfony\Component\Validator\Exception\UnexpectedTypeException + * Thrown when the given constraint is not supported by this validator. + */ + public function validate($toolbar_item, Constraint $constraint) { + if (!$constraint instanceof ToolbarItemConditionsMetConstraint) { + throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\ToolbarItemConditionsMetConstraint'); + } + + try { + $definition = $this->findDefinitionForToolbarItem($toolbar_item); + } + catch (\OutOfBoundsException $e) { + // No plugin definition found for this toolbar item. It's the + // responsibility of another validation constraint to raise this problem. + // @see \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemConstraint + return; + } + + // If there are no conditions, there is nothing to validate. + if (!$definition->hasConditions()) { + return; + } + + $toolbar_item_label = $definition->getToolbarItems()[$toolbar_item]['label']; + $text_editor = $this->createTextEditorObjectFromContext(); + + $conditions = $definition->getConditions(); + foreach ($conditions as $condition_type => $required_value) { + switch ($condition_type) { + case 'toolbarItem': + // Nothing to validate. + break; + + case 'imageUploadStatus': + $image_upload_settings = $text_editor->getImageUploadSettings(); + if (!isset($image_upload_settings['status']) || (bool) $image_upload_settings['status'] !== TRUE) { + $this->context->buildViolation($constraint->imageUploadStatusRequiredMessage) + ->setParameter('%toolbar_item', $toolbar_item_label) + ->setInvalidValue($toolbar_item) + ->addViolation(); + } + break; + + case 'filter': + $filters = $text_editor->getFilterFormat()->filters(); + if (!$filters->has($required_value) || !$filters->get($required_value)->status) { + $filter_label = $filters->has($required_value) + ? $filters->get($required_value)->getLabel() + : $required_value; + $this->context->buildViolation($constraint->filterRequiredMessage) + ->setParameter('%toolbar_item', $toolbar_item_label) + ->setParameter('%filter', $filter_label) + ->setInvalidValue($toolbar_item) + ->addViolation(); + } + break; + + case 'plugins': + $enabled_definitions = $this->pluginManager->getEnabledDefinitions($text_editor); + if (!array_key_exists($definition->id(), $enabled_definitions)) { + $required_plugin_ids = $definition->getConditions()['plugins']; + $missing_plugin_ids = array_diff($required_plugin_ids, array_keys($enabled_definitions)); + $all_plugins = $this->pluginManager->getDefinitions(); + $missing_plugin_labels = array_map(function (string $plugin_id) use ($all_plugins): TranslatableMarkup { + return !array_key_exists($plugin_id, $all_plugins) + ? $plugin_id + : $all_plugins[$plugin_id]->label(); + }, $missing_plugin_ids); + if (count($missing_plugin_ids) === 1) { + $message = $constraint->singleMissingRequiredPluginMessage; + $parameter = '%plugin'; + } + else { + $message = $constraint->multipleMissingRequiredPluginMessage; + $parameter = '%plugins'; + } + $this->context->buildViolation($message) + ->setParameter('%toolbar_item', $toolbar_item_label) + ->setParameter($parameter, implode(', ', $missing_plugin_labels)) + ->setInvalidValue($toolbar_item) + ->addViolation(); + } + break; + } + } + } + + /** + * Searches for CKEditor 5 plugin that provides a given toolbar item. + * + * @param string $toolbar_item + * The toolbar item to be searched for within plugin definitions. + * + * @return \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition + * The corresponding plugin definition. + * + * @throws \OutOfBoundsException + */ + protected function findDefinitionForToolbarItem(string $toolbar_item): CKEditor5PluginDefinition { + $definitions = $this->pluginManager->getDefinitions(); + foreach ($definitions as $definition) { + if (array_key_exists($toolbar_item, $definition->getToolbarItems())) { + return $definition; + } + } + + // @see \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemConstraint + throw new \OutOfBoundsException("Toolbar item '$toolbar_item' not found."); + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConstraint.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConstraint.php new file mode 100644 index 000000000000..9c31b259fa09 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConstraint.php @@ -0,0 +1,28 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Symfony\Component\Validator\Constraint; + +/** + * A CKEditor 5 toolbar item. + * + * @Constraint( + * id = "CKEditor5ToolbarItem", + * label = @Translation("CKEditor 5 toolbar item", context = "Validation"), + * ) + * + * @see https://ckeditor.com/docs/ckeditor5/latest/features/toolbar/toolbar.html + */ +class ToolbarItemConstraint extends Constraint { + + /** + * The default violation message. + * + * @var string + */ + public $message = 'The provided toolbar item %toolbar_item is not valid.'; + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConstraintValidator.php new file mode 100644 index 000000000000..d669a85d1d57 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemConstraintValidator.php @@ -0,0 +1,70 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Symfony\Component\Validator\Constraint; +use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Exception\UnexpectedTypeException; + +/** + * Toolbar item constraint validator. + * + * @internal + */ +class ToolbarItemConstraintValidator extends ConstraintValidator implements ContainerInjectionInterface { + + use PluginManagerDependentValidatorTrait; + + /** + * {@inheritdoc} + * + * @throws \Symfony\Component\Validator\Exception\UnexpectedTypeException + * Thrown when the given constraint is not supported by this validator. + */ + public function validate($toolbar_item, Constraint $constraint) { + if (!$constraint instanceof ToolbarItemConstraint) { + throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\ToolbarItem'); + } + + if ($toolbar_item === NULL) { + return; + } + + if (!static::isValidToolbarItem($toolbar_item)) { + $this->context->buildViolation($constraint->message) + ->setParameter('%toolbar_item', $toolbar_item) + ->setInvalidValue($toolbar_item) + ->addViolation(); + } + } + + /** + * Validates the given toolbar item. + * + * @param string $toolbar_item + * A toolbar item as expected by CKEditor 5. + * + * @return bool + * Whether the given toolbar item is valid or not. + */ + protected function isValidToolbarItem(string $toolbar_item): bool { + // Special case: the toolbar group separator. + // @see https://ckeditor.com/docs/ckeditor5/latest/features/toolbar/toolbar.html#separating-toolbar-items + if ($toolbar_item === '|') { + return TRUE; + } + + // Special case: the breakpoint separator. + // @see https://ckeditor.com/docs/ckeditor5/latest/features/toolbar/toolbar.html#explicit-wrapping-breakpoint + if ($toolbar_item === '-') { + return TRUE; + } + + $available_toolbar_items = array_keys($this->pluginManager->getToolbarItems()); + return in_array($toolbar_item, $available_toolbar_items, TRUE); + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemDependencyConstraint.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemDependencyConstraint.php new file mode 100644 index 000000000000..50d099bf4249 --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemDependencyConstraint.php @@ -0,0 +1,42 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Symfony\Component\Validator\Constraint; + +/** + * A CKEditor 5 toolbar item. + * + * @Constraint( + * id = "CKEditor5ToolbarItemDependencyConstraint", + * label = @Translation("CKEditor 5 toolbar item dependency", context = "Validation"), + * ) + * + * @internal + */ +class ToolbarItemDependencyConstraint extends Constraint { + + /** + * The default violation message. + * + * @var string + */ + public $message = 'Depends on %toolbar_item, which is not enabled.'; + + /** + * The toolbar item that this validation constraint requires to be enabled. + * + * @var null|string + */ + public $toolbarItem = NULL; + + /** + * {@inheritdoc} + */ + public function getRequiredOptions() { + return ['toolbarItem']; + } + +} diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemDependencyConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemDependencyConstraintValidator.php new file mode 100644 index 000000000000..b3fffe5ff53a --- /dev/null +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/ToolbarItemDependencyConstraintValidator.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5\Plugin\Validation\Constraint; + +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Symfony\Component\Validator\Constraint; +use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Exception\UnexpectedTypeException; + +/** + * Toolbar item dependency constraint validator. + * + * @internal + */ +class ToolbarItemDependencyConstraintValidator extends ConstraintValidator implements ContainerInjectionInterface { + + use PluginManagerDependentValidatorTrait; + + /** + * {@inheritdoc} + * + * @throws \Symfony\Component\Validator\Exception\UnexpectedTypeException + * Thrown when the given constraint is not supported by this validator. + */ + public function validate($toolbar_item, Constraint $constraint) { + if (!$constraint instanceof ToolbarItemDependencyConstraint) { + throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\ToolbarItemDependency'); + } + + $toolbar_items = $this->context->getRoot()->get('settings.toolbar.items')->toArray(); + if (!in_array($constraint->toolbarItem, $toolbar_items, TRUE)) { + $this->context->buildViolation($constraint->message) + ->setParameter('%toolbar_item', $constraint->toolbarItem) + ->addViolation(); + } + } + +} diff --git a/core/modules/ckeditor5/src/SmartDefaultSettings.php b/core/modules/ckeditor5/src/SmartDefaultSettings.php new file mode 100644 index 000000000000..0fb8adabf11b --- /dev/null +++ b/core/modules/ckeditor5/src/SmartDefaultSettings.php @@ -0,0 +1,663 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5; + +use Drupal\ckeditor\CKEditorPluginButtonsInterface; +use Drupal\ckeditor\CKEditorPluginContextualInterface; +use Drupal\ckeditor\CKEditorPluginManager; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition; +use Drupal\ckeditor5\Plugin\CKEditor5PluginElementsSubsetInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface; +use Drupal\Component\Plugin\PluginManagerInterface; +use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\editor\EditorInterface; +use Drupal\editor\Entity\Editor; +use Drupal\filter\FilterFormatInterface; + +/** + * Generates CKEditor 5 settings for existing text editors/formats. + * + * @internal + * This class may change at any time. It is not for use outside this module. + */ +final class SmartDefaultSettings { + + use StringTranslationTrait; + + /** + * The CKEditor 5 plugin manager. + * + * @var \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface + */ + protected $pluginManager; + + /** + * The CKEditor 4 to 5 upgrade plugin manager. + * + * @var \Drupal\Component\Plugin\PluginManagerInterface + */ + protected $upgradePluginManager; + + /** + * The "CKEditor 4 plugin" plugin manager. + * + * @var \Drupal\ckeditor\CKEditorPluginManager + */ + protected $cke4PluginManager; + + /** + * Constructs a SmartDefaultSettings object. + * + * @param \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface $plugin_manager + * The CKEditor 5 plugin manager. + * @param \Drupal\Component\Plugin\PluginManagerInterface $upgrade_plugin_manager + * The CKEditor 4 to 5 upgrade plugin manager. + * @param \Drupal\ckeditor\CKEditorPluginManager $cke4_plugin_manager + * The CKEditor 4 plugin manager. + */ + public function __construct(CKEditor5PluginManagerInterface $plugin_manager, PluginManagerInterface $upgrade_plugin_manager, CKEditorPluginManager $cke4_plugin_manager = NULL) { + $this->pluginManager = $plugin_manager; + $this->upgradePluginManager = $upgrade_plugin_manager; + $this->cke4PluginManager = $cke4_plugin_manager; + } + + /** + * Computes the closest possible equivalent settings for switching to CKEditor 5. + * + * @param \Drupal\editor\EditorInterface|null $text_editor + * The editor being reconfigured for CKEditor 5 to match the CKEditor 4 + * settings as closely as possible (if it was using CKEditor 4). + * @param \Drupal\filter\FilterFormatInterface $text_format + * The text format for which to compute smart default settings. + * + * @return array + * An array with two values: + * 1. The cloned config entity with settings modified for CKEditor 5 … or a + * completely new config entity if this text format did not yet have one. + * 2. Messages explaining what conclusions were reached. + * + * @throws \InvalidArgumentException + * Thrown when computing smart default settings for a new text format, or + * when the given text editor and format do not form a pair. + */ + public function computeSmartDefaultSettings(?EditorInterface $text_editor, FilterFormatInterface $text_format): array { + if ($text_format->isNew()) { + throw new \InvalidArgumentException('Smart default settings can only be computed when there is a pre-existing text format.'); + } + if ($text_editor && $text_editor->id() !== $text_format->id()) { + throw new \InvalidArgumentException('The given text editor and text format must form a pair.'); + } + + $messages = []; + + // Ensure that unsaved changes to the text format object are also respected. + if ($text_editor) { + // Overwrite the Editor config entity object's $filterFormat property, to + // prevent calls to Editor::hasAssociatedFilterFormat() and + // Editor::getFilterFormat() from loading the FilterFormat from storage. + // @todo Remove in https://www.drupal.org/project/ckeditor5/issues/3218985. + $reflector = new \ReflectionObject($text_editor); + $property = $reflector->getProperty('filterFormat'); + $property->setAccessible(TRUE); + $property->setValue($text_editor, $text_format); + } + + // When there is a pre-existing text editor, pass that. Otherwise, generate + // an empty shell of a text editor config entity — this will then + // automatically get the default CKEditor 5 settings. + // @todo Update after https://www.drupal.org/project/drupal/issues/3226673. + /** @var \Drupal\editor\Entity\Editor $editor */ + $editor = $text_editor !== NULL + ? clone $text_editor + : Editor::create([ + 'format' => $text_format->id(), + // @see \Drupal\editor\Entity\Editor::__construct() + // @see \Drupal\ckeditor5\Plugin\Editor\CKEditor5::getDefaultSettings() + 'editor' => 'ckeditor5', + ]); + $editor->setEditor('ckeditor5'); + + // Compute the appropriate settings based on the CKEditor 4 configuration + // if it exists. + $old_editor = $editor->id() ? Editor::load($editor->id()) : NULL; + if ($old_editor && $old_editor->getEditor() === 'ckeditor') { + $enabled_cke4_plugins = $this->getEnabledCkeditor4Plugins($old_editor); + [$upgraded_settings, $messages] = $this->createSettingsFromCKEditor4($old_editor->getSettings(), $enabled_cke4_plugins); + $editor->setSettings($upgraded_settings); + $editor->setImageUploadSettings($old_editor->getImageUploadSettings()); + } + + // First, add toolbar items based on HTML tags. + // NOTE: Helper updates $editor->settings by reference and returns info for the message. + $result = $this->addToolbarItemsToMatchHtmlTagsInFormat($text_format, $editor); + if ($result !== NULL) { + [$enabling_message_content, $unsupported] = $result; + if ($enabling_message_content) { + $messages[] = $this->t('The following plugins were enabled to support tags that are allowed by this text format: %enabling_message_content.', + ['%enabling_message_content' => $enabling_message_content], + ); + } + unset($unsupported['*']); + // Warn user about unsupported tags. + if (!empty($unsupported)) { + $unsupported_string = implode(' ', HTMLRestrictionsUtilities::toReadableElements($unsupported)); + $this->addTagsToSourceEditing($editor, $unsupported_string); + $messages[] = $this->t("The following tags were permitted by this format's filter configuration, but no plugin was available that supports them. To ensure the tags remain supported by this text format, the following were added to the Source Editing plugin's <em>Manually editable HTML tags</em>: @unsupported_string.", [ + '@unsupported_string' => $unsupported_string, + ]); + } + } + + // Next, add more toolbar items to try to also support attributes on already + // supported tags that have still unsupported attributes. + $result = $this->addToolbarItemsToMatchHtmlAttributesInFormat($text_format, $editor); + if ($result !== NULL) { + [$enabled_for_attributes_message_content, $missing_attributes] = $result; + if ($enabled_for_attributes_message_content) { + $messages[] = $this->t('The following plugins were enabled to support specific attributes that are allowed by this text format: %enabled_for_attributes_message_content.', + ['%enabled_for_attributes_message_content' => $enabled_for_attributes_message_content], + ); + } + // Warn user about supported tags but missing attributes. + if ($missing_attributes) { + $this->addTagsToSourceEditing($editor, $missing_attributes); + $messages[] = $this->t("This format's HTML filters includes plugins that support the following tags, but not some of their attributes. To ensure these attributes remain supported by this text format, the following were added to the Source Editing plugin's <em>Manually editable HTML tags</em>: @missing_attributes.", [ + '@missing_attributes' => $missing_attributes, + ]); + } + } + + // Finally: for all enabled plugins, find the ones that are configurable, + // and add their default settings. For enabled plugins with element subsets, + // compute the appropriate settings to achieve the subset that matches the + // original text format restrictions. + $this->addDefaultSettingsForEnabledConfigurablePlugins($editor); + $this->computeSubsetSettingForEnabledPluginsWithSubsets($editor, $text_format); + + return [$editor, $messages]; + } + + private function addTagsToSourceEditing(EditorInterface $editor, string $tags): array { + $messages = []; + $settings = $editor->getSettings(); + if (!isset($settings['toolbar']['items']) || !in_array('sourceEditing', $settings['toolbar']['items'])) { + $messages[] = $this->t('The <em>Source Editing</em> plugin was enabled to support tags and/or attributes that are not explicitly supported by any available CKEditor 5 plugins.'); + $settings['toolbar']['items'][] = 'sourceEditing'; + } + $source_editing_allowed_tags = $settings['plugins']['ckeditor5_sourceEditing']['allowed_tags'] ?? []; + $settings['plugins']['ckeditor5_sourceEditing']['allowed_tags'] = array_merge($source_editing_allowed_tags, HTMLRestrictionsUtilities::allowedElementsStringToPluginElementsArray($tags)); + $editor->setSettings($settings); + return $messages; + } + + /** + * Creates equivalent CKEditor 5 settings from CKEditor 4 settings. + * + * @param array $ckeditor4_settings + * The value for "settings" in a Text Editor config entity configured to use + * CKEditor 4. + * @param string[] $enabled_ckeditor4_plugins + * The list of enabled CKEditor 4 plugins: their settings will be mapped to + * the CKEditor 5 equivalents, if they have any. + * + * @return array + * An array with two values: + * 1. An equivalent value for CKEditor 5. + * 2. Messages explaining upgrade path issues. + * + * @throws \LogicException + * Thrown when an upgrade plugin is attempting to generate plugin settings + * for a CKEditor 4 plugin upgrade path that have already been generated. + */ + private function createSettingsFromCKEditor4(array $ckeditor4_settings, array $enabled_ckeditor4_plugins): array { + $settings = [ + 'toolbar' => [ + 'items' => [], + ], + 'plugins' => [], + ]; + $messages = []; + + // First: toolbar items. + // @see \Drupal\ckeditor\CKEditorPluginButtonsInterface + foreach ($ckeditor4_settings['toolbar']['rows'] as $row) { + foreach ($row as $group) { + $some_added = FALSE; + foreach ($group['items'] as $cke4_button) { + try { + $equivalent = $this->upgradePluginManager->mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem($cke4_button); + } + catch (\OutOfBoundsException $e) { + $messages[] = $this->t('The CKEditor 4 button %button does not have a known upgrade path. If it allowed editing markup, then you can do so now through the Source Editing functionality.', [ + '%button' => $cke4_button, + ]); + continue; + } + if ($equivalent) { + $settings['toolbar']['items'][] = $equivalent; + $some_added = TRUE; + } + } + // Add a CKEditor 5 toolbar group separator for every group. + if ($some_added) { + $settings['toolbar']['items'][] = '|'; + } + } + } + // Remove the trailing CKEditor 5 toolbar group separator. + array_pop($settings['toolbar']['items']); + // Strip the CKEditor 4 buttons without a CKEditor 5 equivalent. + $settings['toolbar']['items'] = array_filter($settings['toolbar']['items']); + + // Second: plugin settings. + // @see \Drupal\ckeditor\CKEditorPluginConfigurableInterface + $enabled_ckeditor4_plugins_with_settings = array_intersect_key($ckeditor4_settings['plugins'], array_flip($enabled_ckeditor4_plugins)); + foreach ($enabled_ckeditor4_plugins_with_settings as $cke4_plugin_id => $cke4_plugin_settings) { + try { + $cke5_plugin_settings = $this->upgradePluginManager->mapCKEditor4SettingsToCKEditor5Configuration($cke4_plugin_id, $cke4_plugin_settings); + if ($cke5_plugin_settings === NULL) { + continue; + } + assert(count($cke5_plugin_settings) === 1); + $cke5_plugin_id = array_keys($cke5_plugin_settings)[0]; + if (isset($settings['plugins'][$cke5_plugin_id])) { + throw new \LogicException(sprintf('The %s plugin settings have already been upgraded. Only a single @CKEditor4To5Upgrade is allowed to migrate the settings for a particular CKEditor 4 plugin.', $cke5_plugin_id)); + } + $settings['plugins'] += $cke5_plugin_settings; + } + catch (\OutOfBoundsException $e) { + $messages[] = $this->t('The %cke4_plugin_id plugin settings do not have a known upgrade path.', [ + '%cke4_plugin_id' => $cke4_plugin_id, + ]); + continue; + } + } + + return [$settings, $messages]; + } + + /** + * Gets all enabled CKEditor 4 plugins. + * + * @param \Drupal\editor\EditorInterface $editor + * A text editor config entity configured to use CKEditor 4. + * + * @return string[] + * The enabled CKEditor 4 plugin IDs. + */ + protected function getEnabledCkeditor4Plugins(EditorInterface $editor): array { + assert($editor->getEditor() === 'ckeditor'); + + // This is largely copied from the CKEditor 4 plugin manager, because it + // unfortunately does not provide the API this needs. + // @see \Drupal\ckeditor\CKEditorPluginManager::getEnabledPluginFiles() + $plugins = array_keys($this->cke4PluginManager->getDefinitions()); + $toolbar_buttons = $this->cke4PluginManager->getEnabledButtons($editor); + $enabled_plugins = []; + $additional_plugins = []; + foreach ($plugins as $plugin_id) { + $plugin = $this->cke4PluginManager->createInstance($plugin_id); + + $enabled = FALSE; + // Enable this plugin if it provides a button that has been enabled. + if ($plugin instanceof CKEditorPluginButtonsInterface) { + $plugin_buttons = array_keys($plugin->getButtons()); + $enabled = (count(array_intersect($toolbar_buttons, $plugin_buttons)) > 0); + } + // Otherwise enable this plugin if it declares itself as enabled. + if (!$enabled && $plugin instanceof CKEditorPluginContextualInterface) { + $enabled = $plugin->isEnabled($editor); + } + + if ($enabled) { + $enabled_plugins[] = $plugin_id; + // Check if this plugin has dependencies that also need to be enabled. + $additional_plugins = array_merge($additional_plugins, array_diff($plugin->getDependencies($editor), $additional_plugins)); + } + } + + // Add the list of dependent plugins. + foreach ($additional_plugins as $plugin_id) { + $enabled_plugins[$plugin_id] = $plugin_id; + } + + return $enabled_plugins; + } + + /** + * Adds CKEditor 5 toolbar items to match the format's HTML tags. + * + * @param \Drupal\filter\FilterFormatInterface $format + * The text format for which to compute smart default settings. + * @param \Drupal\editor\EditorInterface $editor + * The text editor config entity to update. + * + * @return array|null + * NULL when nothing happened, otherwise an array with two values: + * 1. a description (for use in a message) of which CKEditor 5 plugins were + * enabled to match the HTML tags allowed by the text format. + * 2. the unsupported tags + */ + private function addToolbarItemsToMatchHtmlTagsInFormat(FilterFormatInterface $format, EditorInterface $editor): ?array { + $html_restrictions_needed_elements = $format->getHtmlRestrictions(); + if ($html_restrictions_needed_elements === FALSE) { + return NULL; + } + + // Add all buttons until we match or exceed the current text format + // restrictions. + $enabled_plugins = array_keys($this->pluginManager->getEnabledDefinitions($editor)); + $provided_elements = $this->pluginManager->getProvidedElements($enabled_plugins); + + // Automatically add the plugins that add support for the tags we want this + // CKEditor 5 instance to support. + $missing_tags = array_diff(array_keys($html_restrictions_needed_elements['allowed']), array_keys($provided_elements)); + $to_add = []; + $unsupported = []; + foreach ($missing_tags as $tag) { + $id = $this->pluginManager->findPluginSupportingElement($tag); + if ($id) { + $to_add[$tag] = $id; + } + // Add any tag that isn't the "star protector" tag to the array of + // unsupported tags. + // @see the $star_protector variable in + // \Drupal\filter\Plugin\Filter\FilterHtml::getHTMLRestrictions + // @todo this can be an 'else' with no conditions after + // https://www.drupal.org/project/drupal/issues/3226368 + elseif ($tag !== '__zqh6vxfbk3cg__') { + $unsupported[$tag] = $html_restrictions_needed_elements['allowed'][$tag]; + } + } + + $enabling_message_content = ''; + $enabling_message_prep = []; + foreach ($to_add as $tag_name => $plugin_name) { + $enabling_message_prep[$plugin_name][] = $tag_name; + } + + $editor_settings_to_update = $editor->getSettings(); + $new_group_created = FALSE; + foreach ($enabling_message_prep as $plugin_id => $tag_names) { + $label = $this->pluginManager->getDefinition($plugin_id)->label(); + $tags = array_reduce($tag_names, function ($carry, $item) { + return $carry . "<$item>"; + }); + $enabling_message_content .= "$label (for tags: $tags) "; + $definition = $this->pluginManager->getDefinition($plugin_id); + if ($definition->hasToolbarItems()) { + if (!$new_group_created) { + $editor_settings_to_update['toolbar']['items'][] = '|'; + $new_group_created = TRUE; + } + $editor_settings_to_update['toolbar']['items'] = array_merge($editor_settings_to_update['toolbar']['items'], array_keys($definition->getToolbarItems())); + } + } + + if (!empty($enabling_message_content)) { + $editor->setSettings($editor_settings_to_update); + $enabling_message_content = substr($enabling_message_content, 0, -1); + return [$enabling_message_content, $unsupported]; + } + else { + return [NULL, $unsupported]; + } + } + + /** + * Adds CKEditor 5 toolbar items to match the format's HTML attributes. + * + * @param \Drupal\filter\FilterFormatInterface $format + * The text format for which to compute smart default settings. + * @param \Drupal\editor\EditorInterface $editor + * The text editor config entity to update. + * + * @return array|null + * NULL when nothing happened, otherwise an array with two values: + * 1. a description (for use in a message) of which CKEditor 5 plugins were + * enabled to match the HTML attributes allowed by the text format. + * 2. the unsupported attributes + */ + private function addToolbarItemsToMatchHtmlAttributesInFormat(FilterFormatInterface $format, EditorInterface $editor): ?array { + $html_restrictions_needed_elements = $format->getHtmlRestrictions(); + if ($html_restrictions_needed_elements === FALSE) { + return NULL; + } + + $enabled_plugins = array_keys($this->pluginManager->getEnabledDefinitions($editor)); + $provided_elements = $this->pluginManager->getProvidedElements($enabled_plugins); + $missing = HTMLRestrictionsUtilities::diffAllowedElements($editor->getFilterFormat()->getHtmlRestrictions()['allowed'], $provided_elements); + $supported_tags_with_unsupported_attributes = array_intersect_key($missing, $provided_elements); + $supported_tags_with_unsupported_attributes = array_filter($supported_tags_with_unsupported_attributes, function ($tag_config) { + return is_array($tag_config); + }); + + if (!empty($supported_tags_with_unsupported_attributes)) { + // This will be populated with plugins that aren't currently enabled, but + // provide element configuration that include attributes. I.e. they are + // the only plugins that can potentially address unsupported attributes + // in supported tags. + $disabled_plugins_with_attribute_config = []; + $all_plugins_definitions = $this->pluginManager->getDefinitions(); + foreach ($all_plugins_definitions as $plugin_id => $definition) { + // Only proceed if the plugin has configured elements and the plugin + // does not have conditions. In the future we could add support for + // automatically enabling filters, but for now we assume that the filter + // configuration cannot be modified. + if (!in_array($plugin_id, $enabled_plugins) && !$definition->hasConditions()) { + $plugins_provided_elements = $this->pluginManager->getProvidedElements([$plugin_id], NULL, TRUE); + if (!empty($plugins_provided_elements)) { + // Filter elements that do not have attribute configuration. + $elements_with_attribute_config = array_filter($plugins_provided_elements, function ($elements) { + return $elements !== FALSE; + }); + if (!empty($elements_with_attribute_config)) { + foreach ($elements_with_attribute_config as $tag_name => $attribute_config) { + // If the 'tag' is a wildcard, add the attribute config to + // all qualifying tags. + if (substr($tag_name, 0, 1) === '$') { + // An array of all the tags that match the wildcard value. + $wildcard_tags = HTMLRestrictionsUtilities::getWildcardTags($tag_name); + + // Matching wildcard tags that are also tags that have + // attribute config that is not yet supported. + $wildcard_tags_in_config_missing_attributes = array_intersect_key(array_flip($wildcard_tags), $supported_tags_with_unsupported_attributes); + foreach (array_keys($wildcard_tags_in_config_missing_attributes) as $wildcard_provided_tag) { + $elements_with_attribute_config[$wildcard_provided_tag] = $attribute_config; + } + + // Remove the wildcard 'tag', as the tags it represents are + // now accounted for. + unset($elements_with_attribute_config[$tag_name]); + } + } + $disabled_plugins_with_attribute_config[$plugin_id] = $elements_with_attribute_config; + } + } + } + } + + // This will contain plugins to be enabled if they provide support for the + // not-yet-supported attributes. + $plugins_to_enable_to_support_attribute_config = []; + foreach ($supported_tags_with_unsupported_attributes as $tag_name => $attributes_config) { + foreach ($attributes_config as $attribute_name => $attribute_config) { + // This means the existing config must allow all values of the + // attribute. + if ($attribute_config === TRUE) { + // See if there is a disabled plugin that will provide full use of + // the attribute for a given tag. + foreach ($disabled_plugins_with_attribute_config as $disabled_plugin_id => $disabled_plugin_elements_config) { + if (isset($disabled_plugin_elements_config[$tag_name][$attribute_name]) && $disabled_plugin_elements_config[$tag_name][$attribute_name] === TRUE) { + // Add this to the 'plugins to enable' array. Setting this value + // to TRUE instead of an array indicates to the message system + // that the attribute is allowed for the tag with any value. + $plugins_to_enable_to_support_attribute_config[$disabled_plugin_id][$attribute_name][$tag_name] = TRUE; + + // This attribute can be removed from the list of unsupported + // attributes for the tag. + unset($supported_tags_with_unsupported_attributes[$tag_name][$attribute_name]); + } + } + } + else { + // This condition is reached if the existing configuration has the + // attribute value restricted to specific values. + // @todo currently, this will enable plugins that allow ALL values + // for an attribute. This means the attribute+value is now allowed + // but additional attribute values are permitted as well. This may + // need to be more selective + // https://www.drupal.org/project/ckeditor5/issues/3231328. + foreach ($attribute_config as $allowed_attribute_value => $noop) { + foreach ($disabled_plugins_with_attribute_config as $disabled_plugin_id => $disabled_plugin_config) { + if (isset($disabled_plugin_config[$tag_name][$attribute_name])) { + if ($disabled_plugin_config[$tag_name][$attribute_name] === TRUE) { + unset($supported_tags_with_unsupported_attributes[$tag_name][$attribute_name]); + $plugins_to_enable_to_support_attribute_config[$disabled_plugin_id][$attribute_name][$tag_name] = TRUE; + } + elseif (is_array($disabled_plugin_config[$tag_name][$attribute_name])) { + foreach ($disabled_plugin_config[$tag_name][$attribute_name] as $disabled_plugin_attribute_name => $disabled_plugin_allowed_value) { + if ($disabled_plugin_attribute_name === $allowed_attribute_value) { + unset($supported_tags_with_unsupported_attributes[$tag_name][$attribute_name][$allowed_attribute_value]); + if (empty($supported_tags_with_unsupported_attributes[$tag_name][$attribute_name])) { + unset($supported_tags_with_unsupported_attributes[$tag_name][$attribute_name]); + } + $plugins_to_enable_to_support_attribute_config[$disabled_plugin_id][$attribute_name][$tag_name][] = $allowed_attribute_value; + } + } + } + } + } + } + } + } + } + + $supported_tags_with_unsupported_attributes = array_filter($supported_tags_with_unsupported_attributes); + $missing_attributes = implode(' ', HTMLRestrictionsUtilities::toReadableElements($supported_tags_with_unsupported_attributes)); + + // If additional plugins need to be enable to support attribute config, + // loop through the list to enable the plugins and build a UI message that + // will convey this plugin-enabling to the user. + if (!empty($plugins_to_enable_to_support_attribute_config)) { + $enabled_for_attributes_message_content = ''; + $editor_settings_to_update = $editor->getSettings(); + foreach ($plugins_to_enable_to_support_attribute_config as $plugin_id => $reason_why_enabled) { + $plugin_definition = $this->pluginManager->getDefinition($plugin_id); + $label = $plugin_definition->label(); + if ($plugin_definition->hasToolbarItems()) { + $editor_settings_to_update['toolbar']['items'] = array_merge($editor_settings_to_update['toolbar']['items'], array_keys($plugin_definition->getToolbarItems())); + foreach ($reason_why_enabled as $attribute_name => $attribute_config) { + $enabled_for_attributes_message_content .= "$label ("; + foreach ($attribute_config as $tag_name => $attribute_value_config) { + $enabled_for_attributes_message_content .= " for tag: <$tag_name> to support: $attribute_name"; + if (is_array($attribute_value_config)) { + $enabled_for_attributes_message_content .= " with value(s): "; + foreach ($attribute_value_config as $allowed_value) { + $enabled_for_attributes_message_content .= " $allowed_value,"; + } + $enabled_for_attributes_message_content = substr($enabled_for_attributes_message_content, 0, -1) . '), '; + } + } + } + } + } + $editor->setSettings($editor_settings_to_update); + // Some plugins enabled, maybe some missing attributes. + return [ + substr($enabled_for_attributes_message_content, 0, -2), + $missing_attributes, + ]; + } + else { + // No plugins enabled, maybe some missing attributes. + return [ + NULL, + $missing_attributes, + ]; + } + } + else { + return NULL; + } + } + + /** + * Adds default settings for all enabled CKEditor 5 plugins. + * + * @param \Drupal\editor\EditorInterface $editor + * The text editor config entity to update. + */ + private function addDefaultSettingsForEnabledConfigurablePlugins(EditorInterface $editor): void { + $settings = $editor->getSettings(); + $update_settings = FALSE; + $enabled_definitions = $this->pluginManager->getEnabledDefinitions($editor); + $configurable_definitions = array_filter($enabled_definitions, function (CKEditor5PluginDefinition $definition): bool { + return $definition->isConfigurable(); + }); + + foreach ($configurable_definitions as $plugin_name => $definition) { + // Skip image upload as its configuration is stored in a discrete + // property of the $editor object, not its settings. Also skip any plugin + // that already has configuration data as default values are not needed. + if ($plugin_name === 'ckeditor5_imageUpload' || isset($settings['plugins'][$plugin_name])) { + continue; + } + $update_settings = TRUE; + $settings['plugins'][$plugin_name] = $this->pluginManager->getPlugin($plugin_name, NULL)->defaultConfiguration(); + } + + if ($update_settings) { + $editor->setSettings($settings); + } + } + + /** + * Computes configuration for all enabled CKEditor 5 plugins with subsets. + * + * @param \Drupal\editor\EditorInterface $editor + * The text editor config entity to update. + * @param \Drupal\filter\FilterFormatInterface $text_format + * The text format for which to compute smart default settings. + */ + private function computeSubsetSettingForEnabledPluginsWithSubsets(EditorInterface $editor, FilterFormatInterface $text_format): void { + $settings = $editor->getSettings(); + $update_settings = FALSE; + $enabled_definitions = $this->pluginManager->getEnabledDefinitions($editor); + $configurable_subset_definitions = array_filter($enabled_definitions, function (CKEditor5PluginDefinition $definition): bool { + return is_a($definition->getClass(), CKEditor5PluginElementsSubsetInterface::class, TRUE); + }); + + foreach ($configurable_subset_definitions as $plugin_name => $definition) { + // Skip Source Editing as that has already been configured. + if ($plugin_name === 'ckeditor5_sourceEditing') { + continue; + } + + try { + $subset_configuration = $this->upgradePluginManager->computeCKEditor5PluginSubsetConfiguration($plugin_name, $text_format); + } + catch (\OutOfBoundsException $e) { + $messages[] = $this->t('The CKEditor 5 plugin %button has a configurable subset of elements, but does not have a known upgrade path to configure that subset to match your text format. Hence it is now using its default configuration.', [ + '%plugin' => $plugin_name, + ]); + continue; + } + if ($subset_configuration) { + $update_settings = TRUE; + assert(isset($settings['plugins'][$plugin_name])); + $default_configuration = $settings['plugins'][$plugin_name]; + // The subset configuration's key-value pairs must override those of the + // default configuration. + $settings['plugins'][$plugin_name] = $subset_configuration + $default_configuration; + } + } + + if ($update_settings) { + $editor->setSettings($settings); + } + } + +} diff --git a/core/modules/ckeditor5/templates/ckeditor5-settings-toolbar.html.twig b/core/modules/ckeditor5/templates/ckeditor5-settings-toolbar.html.twig new file mode 100644 index 000000000000..6ab2cf974e4d --- /dev/null +++ b/core/modules/ckeditor5/templates/ckeditor5-settings-toolbar.html.twig @@ -0,0 +1,26 @@ +{# +/** + * @file + * Default theme implementation to display CKEditor 5 toolbar settings. + * + * @internal + * This template is internal because it's used for rendering the CKEditor 5 + * toolbar settings UI in the Drupal admin UI. The toolbar settings UI is + * internal, and utilizing or overriding it outside of core usages is not + * supported because the UI can change at any point. + */ +#} +{% apply spaceless %} + <fieldset aria-labelledby="ckeditor5-toolbar-configuration" aria-describedby="ckeditor5-toolbar-description"> + <legend id="ckeditor5-toolbar-configuration">{{ 'Toolbar configuration'|t }}</legend> + <div class="fieldset-wrapper"> + <div id="ckeditor5-toolbar-description" class="fieldset-description"> + {%- trans -%} + Move a button into the <em>Active toolbar</em> to enable it, or into the list of <em>Available buttons</em> to disable it. Buttons may be moved with the mouse or keyboard arrow keys. + {%- endtrans -%} + </div> + <div id="ckeditor5-toolbar-app"></div> + {{ form }} + </div> + </fieldset> +{% endapply %} diff --git a/core/modules/ckeditor5/tests/modules/ckeditor4to5upgrade_plugin_test/ckeditor4to5upgrade_plugin_test.info.yml b/core/modules/ckeditor5/tests/modules/ckeditor4to5upgrade_plugin_test/ckeditor4to5upgrade_plugin_test.info.yml new file mode 100644 index 000000000000..d86e9bb5b904 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor4to5upgrade_plugin_test/ckeditor4to5upgrade_plugin_test.info.yml @@ -0,0 +1,7 @@ +name: CKEditor 4 to 5 Upgrade plugin Test +type: module +description: "Provides test plugins for testing CKEditor 4 to 5 upgrade infrastructure." +package: Testing +core_version_requirement: ^9 +dependencies: + - ckeditor5:ckeditor5 diff --git a/core/modules/ckeditor5/tests/modules/ckeditor4to5upgrade_plugin_test/ckeditor4to5upgrade_plugin_test.module b/core/modules/ckeditor5/tests/modules/ckeditor4to5upgrade_plugin_test/ckeditor4to5upgrade_plugin_test.module new file mode 100644 index 000000000000..cb99f7acc400 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor4to5upgrade_plugin_test/ckeditor4to5upgrade_plugin_test.module @@ -0,0 +1,51 @@ +<?php + +/** + * @file + * Implements hooks for the CKEditor 4 to 5 Upgrade plugin Test module. + */ + +declare(strict_types = 1); + +/** + * Implements hook_ckeditor4to5upgrade_plugin_info_alter(). + */ +function ckeditor4to5upgrade_plugin_test_ckeditor4to5upgrade_plugin_info_alter(array &$plugin_definitions): void { + switch (\Drupal::state()->get('ckeditor4to5upgrade_plugin_test')) { + case 'duplicate_button': + $plugin_definitions['foo'] = array_intersect_key($plugin_definitions['core'], ['cke4_buttons' => TRUE]); + break; + + case 'duplicate_plugin_settings': + $plugin_definitions['foo'] = array_intersect_key($plugin_definitions['core'], ['cke4_plugin_settings' => TRUE]); + break; + + case 'duplicate_subset': + $plugin_definitions['foo'] = array_intersect_key($plugin_definitions['core'], ['cke5_plugin_elements_subset_configuration' => TRUE]); + break; + + case 'lying_button': + $plugin_definitions['foo'] = [ + 'cke4_buttons' => ['foo'], + 'class' => $plugin_definitions['core']['class'], + ]; + break; + + case 'lying_plugin_settings': + $plugin_definitions['foo'] = [ + 'cke4_plugin_settings' => ['foo'], + 'class' => $plugin_definitions['core']['class'], + ]; + break; + + case 'lying_subset': + $plugin_definitions['foo'] = [ + 'cke5_plugin_elements_subset_configuration' => ['foo'], + 'class' => $plugin_definitions['core']['class'], + ]; + break; + + default: + throw new \LogicException(); + } +} diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_definition_supporting_element/ckeditor5_definition_supporting_element.ckeditor5.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_definition_supporting_element/ckeditor5_definition_supporting_element.ckeditor5.yml new file mode 100644 index 000000000000..0381bb616536 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_definition_supporting_element/ckeditor5_definition_supporting_element.ckeditor5.yml @@ -0,0 +1,111 @@ +ckeditor5_definition_supporting_element_just_nav: + ckeditor5: + plugins: [] + drupal: + label: TEST — <nav> + elements: + - <nav> + +ckeditor5_definition_supporting_element_just_article: + ckeditor5: + plugins: [] + drupal: + label: TEST — <article> + elements: + - <article> + +ckeditor5_definition_supporting_element_article_class: + ckeditor5: + plugins: [] + drupal: + label: TEST — <article class> + elements: + - <article class> + +ckeditor5_definition_supporting_element_article_class_with_values: + ckeditor5: + plugins: [] + drupal: + label: TEST — <article class="…"> + elements: + - <article class="this-value that-value"> + +ckeditor5_definition_supporting_element_just_footer: + ckeditor5: + plugins: [] + drupal: + label: TEST — <footer> + elements: + - <footer> + +ckeditor5_definition_supporting_element_footer_class: + ckeditor5: + plugins: [] + drupal: + label: TEST — <footer class> + elements: + - <footer class> + +ckeditor5_definition_supporting_element_just_aside: + ckeditor5: + plugins: [] + drupal: + label: TEST — <aside> + elements: + - <aside> + +ckeditor5_definition_supporting_element_aside_class_with_values: + ckeditor5: + plugins: [] + drupal: + label: TEST — <article class="…"> + elements: + - <aside class="this-value that-value"> + +ckeditor5_definition_supporting_element_main_class: + ckeditor5: + plugins: [] + drupal: + label: TEST — <main class> + elements: + - <main class> + +ckeditor5_definition_supporting_element_main_class_with_values: + ckeditor5: + plugins: [] + drupal: + label: TEST — <main class="…"> + elements: + - <main class="this-value that-value"> + +ckeditor5_definition_supporting_element_figure_one_attrib: + ckeditor5: + plugins: [] + drupal: + label: TEST — <figure data-one> + elements: + - <figure data-one> + +ckeditor5_definition_supporting_element_figure_two_attrib: + ckeditor5: + plugins: [] + drupal: + label: TEST — <figure data-one data-two> + elements: + - <figure data-one data-two> + +ckeditor5_definition_supporting_element_dialog_two_attrib: + ckeditor5: + plugins: [] + drupal: + label: TEST — <dialog data-one data-two> + elements: + - <dialog data-one data-two> + +ckeditor5_definition_supporting_element_dialog_one_attrib: + ckeditor5: + plugins: [] + drupal: + label: TEST — <dialog data-one> + elements: + - <dialog data-one> diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_definition_supporting_element/ckeditor5_definition_supporting_element.info.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_definition_supporting_element/ckeditor5_definition_supporting_element.info.yml new file mode 100644 index 000000000000..ed19a8b2df55 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_definition_supporting_element/ckeditor5_definition_supporting_element.info.yml @@ -0,0 +1,7 @@ +name: CKEditor 5 Definition Supporting Tags Test +type: module +description: "Provides test plugins for CKEditor 5 to test finding plugin definitions that support specific tags." +package: Testing +core_version_requirement: ^9 +dependencies: + - ckeditor5:ckeditor5 diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.ckeditor5.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.ckeditor5.yml new file mode 100644 index 000000000000..6319b3c588e0 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.ckeditor5.yml @@ -0,0 +1,14 @@ +ckeditor5_plugin_conditions_test_plugins_condition: + ckeditor5: + plugins: {} + drupal: + label: TEST — Plugins Condition + toolbar_items: + fooBarConditions: + label: Foo Bar (Test Plugins Condition) + conditions: + plugins: + - ckeditor5_heading + - ckeditor5_table + elements: + - <foo> diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.info.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.info.yml new file mode 100644 index 000000000000..3b83a0089ea1 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.info.yml @@ -0,0 +1,7 @@ +name: CKEditor 5 Plugin Conditions Test +type: module +description: "Provides test plugins for CKEditor 5 to test plugin conditions." +package: Testing +core_version_requirement: ^9 +dependencies: + - ckeditor5:ckeditor5 diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/ckeditor5_plugin_elements_subset.ckeditor5.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/ckeditor5_plugin_elements_subset.ckeditor5.yml new file mode 100644 index 000000000000..c5218e7e2f5e --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/ckeditor5_plugin_elements_subset.ckeditor5.yml @@ -0,0 +1,9 @@ +ckeditor5_plugin_elements_subset_sneakySuperset: + ckeditor5: + plugins: [] + drupal: + label: Sneaky Superset + class: Drupal\ckeditor5_plugin_elements_subset\Plugin\CKEditor5Plugin\SneakySuperset + elements: + - <foo> + - <bar> diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/ckeditor5_plugin_elements_subset.info.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/ckeditor5_plugin_elements_subset.info.yml new file mode 100644 index 000000000000..a47112763e43 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/ckeditor5_plugin_elements_subset.info.yml @@ -0,0 +1,7 @@ +name: CKEditor 5 Plugin Elements Subset Test +type: module +description: "Provides test plugin to test CKEditor5PluginElementsSubsetInterface" +package: Testing +core_version_requirement: ^9 +dependencies: + - ckeditor5:ckeditor5 diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/config/schema/ckeditor5_plugin_elements_subset.schema.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/config/schema/ckeditor5_plugin_elements_subset.schema.yml new file mode 100644 index 000000000000..3a861e26a5be --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/config/schema/ckeditor5_plugin_elements_subset.schema.yml @@ -0,0 +1,10 @@ +ckeditor5.plugin.ckeditor5_plugin_elements_subset_sneakySuperset: + type: mapping + label: Sneaky Superset + mapping: + configured_subset: + type: sequence + label: 'Allowed Tags' + sequence: + type: ckeditor5.element + label: 'Allowed Tag' diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/src/Plugin/CKEditor5Plugin/SneakySuperset.php b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/src/Plugin/CKEditor5Plugin/SneakySuperset.php new file mode 100644 index 000000000000..398758e298af --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/src/Plugin/CKEditor5Plugin/SneakySuperset.php @@ -0,0 +1,51 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\ckeditor5_plugin_elements_subset\Plugin\CKEditor5Plugin; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginElementsSubsetInterface; +use Drupal\Core\Form\FormStateInterface; + +class SneakySuperset extends CKEditor5PluginDefault implements CKEditor5PluginElementsSubsetInterface { + + use CKEditor5PluginConfigurableTrait; + + /** + * {@inheritdoc} + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + return []; + } + + /** + * {@inheritdoc} + */ + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) { + } + + /** + * {@inheritdoc} + */ + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { + } + + /** + * {@inheritdoc} + */ + public function defaultConfiguration() { + return [ + 'configured_subset' => [], + ]; + } + + /** + * {@inheritdoc} + */ + public function getElementsSubset(): array { + return $this->configuration['configured_subset']; + } + +} diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_test/ckeditor5_plugin_elements_test.ckeditor5.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_test/ckeditor5_plugin_elements_test.ckeditor5.yml new file mode 100644 index 000000000000..37a8c85c107c --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_test/ckeditor5_plugin_elements_test.ckeditor5.yml @@ -0,0 +1,33 @@ +# cspell:ignore everyblock justblockquote +ckeditor5_plugin_elements_test_blockquoteCombo: + ckeditor5: + plugins: [] + drupal: + label: TEST — block quote combo + elements: + - <blockquote data-justblockquote> + - <$block data-everyblock> + +ckeditor5_plugin_elements_test_headingsWithOtherAttributes: + ckeditor5: + plugins: [] + drupal: + label: TEST — headings with other attributes + elements: + - <h1 data-just-h1> + - <h2 class="additional-allowed-class"> + - <h3 data-just-h3 data-just-h3-limited="i-am-the-only-allowed-value"> + - <h5 data-just-h5-limited="first-allowed-value second-allowed-value"> + +ckeditor5_plugin_elements_test_headingsUseClassAnyValue: + ckeditor5: + plugins: [] + drupal: + label: TEST — headings with any class + elements: + - <h1 class> + - <h2 class> + - <h3 class> + - <h4 class> + - <h5 class> + - <h6 class> diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_test/ckeditor5_plugin_elements_test.info.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_test/ckeditor5_plugin_elements_test.info.yml new file mode 100644 index 000000000000..aba0fa1edca4 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_test/ckeditor5_plugin_elements_test.info.yml @@ -0,0 +1,7 @@ +name: CKEditor 5 Plugin Elements Test +type: module +description: "Provides test plugins for CKEditor 5 to test allowed elements parsing." +package: Testing +core_version_requirement: ^9 +dependencies: + - ckeditor5:ckeditor5 diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.ckeditor5.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.ckeditor5.yml new file mode 100644 index 000000000000..52217fc67447 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.ckeditor5.yml @@ -0,0 +1,16 @@ +# cspell:ignore layercake +ckeditor5_test_layercake: + ckeditor5: + plugins: [] + drupal: + label: TEST — Layercake + library: ckeditor5_test/layercake + toolbar_items: + simpleBox: + label: Simple Box + twoCol: + label: Two Col layout + elements: + - <h1 class> + - <div class> + - <section class> diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.info.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.info.yml new file mode 100644 index 000000000000..2e14f048d6d7 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.info.yml @@ -0,0 +1,8 @@ +name: CKEditor 5 Test +type: module +description: "Provides test layout and component plugins for CKEditor 5." +package: Testing +core_version_requirement: ^9 +dependencies: + - drupal:editor + - ckeditor5:ckeditor5 diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.libraries.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.libraries.yml new file mode 100644 index 000000000000..af9e5496788c --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.libraries.yml @@ -0,0 +1,10 @@ +# cspell:ignore layercake +layercake: + version: VERSION + # In real-world (non-test) scenarios, this would load the CKEditor 5 plugin's built JS. + js: {} + css: + theme: + css/layout.css: {} + dependencies: + - core/ckeditor5 diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.routing.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.routing.yml new file mode 100644 index 000000000000..50d7848984c2 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.routing.yml @@ -0,0 +1,6 @@ +ckeditor5_test.off_canvas: + path: '/ckeditor5_test/off_canvas' + defaults: + _controller: '\Drupal\ckeditor5_test\Controller\CKEditor5OffCanvasTestController::testOffCanvas' + requirements: + _access: 'TRUE' diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_test/css/layout.css b/core/modules/ckeditor5/tests/modules/ckeditor5_test/css/layout.css new file mode 100644 index 000000000000..91a76da70b0c --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_test/css/layout.css @@ -0,0 +1,14 @@ +.layout--two-col { + display: grid; + grid-template-columns: 1fr 1fr; +} + +.simple-box { + padding: 0.5rem; + background: #ccc; +} + +.simple-box-title, +.simple-box-description { + background: #fff; +} diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_test/src/Controller/CKEditor5OffCanvasTestController.php b/core/modules/ckeditor5/tests/modules/ckeditor5_test/src/Controller/CKEditor5OffCanvasTestController.php new file mode 100644 index 000000000000..49951f3b3618 --- /dev/null +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_test/src/Controller/CKEditor5OffCanvasTestController.php @@ -0,0 +1,35 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\ckeditor5_test\Controller; + +use Drupal\Core\Url; + +/** + * Provides controller for testing CKEditor in off-canvas dialogs. + */ +class CKEditor5OffCanvasTestController { + + /** + * Returns a link that can open a node add form in an off-canvas dialog. + * + * @return array + * A render array. + */ + public function testOffCanvas() { + $build['link'] = [ + '#type' => 'link', + '#title' => 'Add Node', + '#url' => Url::fromRoute('node.add', ['node_type' => 'page']), + '#attributes' => [ + 'class' => ['use-ajax'], + 'data-dialog-type' => 'dialog', + 'data-dialog-renderer' => 'off_canvas', + ], + ]; + $build['#attached']['library'][] = 'core/drupal.dialog.off_canvas'; + return $build; + } + +} diff --git a/core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php b/core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php new file mode 100644 index 000000000000..b6c99ebc1324 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Functional/ImageUploadAccessTest.php @@ -0,0 +1,52 @@ +<?php + +namespace Drupal\Tests\ckeditor5\Functional; + +/** + * Test image upload access. + * + * @group ckeditor5 + * @internal + */ +class ImageUploadAccessTest extends ImageUploadTest { + + /** + * Test access to the CKEditor 5 image upload controller. + */ + public function testCkeditor5ImageUploadRoute() { + $this->createBasicFormat(); + $url = $this->getUploadUrl(); + $test_image = file_get_contents(current($this->getTestFiles('image'))->uri); + + // With no text editor, expect a 404. + $response = $this->uploadRequest($url, $test_image, 'test.jpg'); + $this->assertSame(404, $response->getStatusCode()); + + $editor = $this->createEditorWithUpload([ + 'status' => FALSE, + 'scheme' => 'public', + 'directory' => 'inline-images', + 'max_size' => '', + 'max_dimensions' => [ + 'width' => 0, + 'height' => 0, + ], + ]); + + // Ensure that images cannot be uploaded when image upload is disabled. + $response = $this->uploadRequest($url, $test_image, 'test.jpg'); + $this->assertSame(403, $response->getStatusCode()); + + $editor->setImageUploadSettings(['status' => TRUE] + $editor->getImageUploadSettings()) + ->save(); + $response = $this->uploadRequest($url, $test_image, 'test.jpg'); + $this->assertSame(201, $response->getStatusCode()); + + // Ensure that users without permissions to the text format cannot upload + // images. + $this->drupalLogout(); + $response = $this->uploadRequest($url, $test_image, 'test.jpg'); + $this->assertSame(403, $response->getStatusCode()); + } + +} diff --git a/core/modules/ckeditor5/tests/src/Functional/ImageUploadTest.php b/core/modules/ckeditor5/tests/src/Functional/ImageUploadTest.php new file mode 100644 index 000000000000..bfd749851408 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Functional/ImageUploadTest.php @@ -0,0 +1,256 @@ +<?php + +namespace Drupal\Tests\ckeditor5\Functional; + +use Drupal\Core\Url; +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Drupal\Tests\BrowserTestBase; +use Drupal\Tests\ckeditor5\Traits\SynchronizeCsrfTokenSeedTrait; +use Drupal\Tests\jsonapi\Functional\JsonApiRequestTestTrait; +use Drupal\Tests\TestFileCreationTrait; +use Drupal\user\RoleInterface; +use GuzzleHttp\RequestOptions; + +/** + * Test image upload. + * + * @group ckeditor5 + * @internal + */ +class ImageUploadTest extends BrowserTestBase { + + use JsonApiRequestTestTrait; + use TestFileCreationTrait; + use SynchronizeCsrfTokenSeedTrait; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'editor', + 'filter', + 'ckeditor5', + ]; + + /** + * A user without any particular permissions to be used in testing. + * + * @var \Drupal\user\Entity\User + */ + protected $user; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + $this->user = $this->drupalCreateUser(); + $this->drupalLogin($this->user); + } + + /** + * Tests using the file upload route with a disallowed extension. + */ + public function testUploadFileExtension() { + $this->createBasicFormat(); + $this->createEditorWithUpload([ + 'status' => TRUE, + 'scheme' => 'public', + 'directory' => 'inline-images', + 'max_size' => '', + 'max_dimensions' => [ + 'width' => 0, + 'height' => 0, + ], + ]); + + $url = $this->getUploadUrl(); + $image_file = file_get_contents(current($this->getTestFiles('image'))->uri); + $non_image_file = file_get_contents(current($this->getTestFiles('php'))->uri); + $response = $this->uploadRequest($url, $non_image_file, 'test.php'); + $this->assertSame(422, $response->getStatusCode()); + + $response = $this->uploadRequest($url, $image_file, 'test.jpg'); + $this->assertSame(201, $response->getStatusCode()); + } + + /** + * Tests using the file upload route with a file size larger than allowed. + */ + public function testFileUploadLargerFileSize() { + $this->createBasicFormat(); + $this->createEditorWithUpload([ + 'status' => TRUE, + 'scheme' => 'public', + 'directory' => 'inline-images', + 'max_size' => 30000, + 'max_dimensions' => [ + 'width' => 0, + 'height' => 0, + ], + ]); + + $url = $this->getUploadUrl(); + $images = $this->getTestFiles('image'); + $large_image = $this->getTestImageByStat($images, 'size', function ($size) { + return $size > 30000; + }); + $small_image = $this->getTestImageByStat($images, 'size', function ($size) { + return $size < 30000; + }); + + $response = $this->uploadRequest($url, file_get_contents($large_image->uri), 'large.jpg'); + $this->assertSame(422, $response->getStatusCode()); + + $response = $this->uploadRequest($url, file_get_contents($small_image->uri), 'small.jpg'); + $this->assertSame(201, $response->getStatusCode()); + } + + /** + * Test that lock is removed after a failed validation. + * + * @see https://www.drupal.org/project/drupal/issues/3184974 + */ + public function testLockAfterFailedValidation() { + $this->createBasicFormat(); + $this->createEditorWithUpload([ + 'status' => TRUE, + 'scheme' => 'public', + 'directory' => 'inline-images', + 'max_size' => 30000, + 'max_dimensions' => [ + 'width' => 0, + 'height' => 0, + ], + ]); + + $url = $this->getUploadUrl(); + $images = $this->getTestFiles('image'); + $large_image = $this->getTestImageByStat($images, 'size', function ($size) { + return $size > 30000; + }); + $small_image = $this->getTestImageByStat($images, 'size', function ($size) { + return $size < 30000; + }); + $response = $this->uploadRequest($url, file_get_contents($large_image->uri), 'same.jpg'); + $this->assertSame(422, $response->getStatusCode()); + + $response = $this->uploadRequest($url, file_get_contents($small_image->uri), 'same.jpg'); + $this->assertSame(201, $response->getStatusCode()); + } + + /** + * Make upload request to a controller. + * + * @param \Drupal\Core\Url $url + * The URL for the request. + * @param string $file_contents + * File contents. + * @param string $file_name + * Name of the file. + * + * @return \Psr\Http\Message\ResponseInterface + * The response. + */ + protected function uploadRequest(Url $url, string $file_contents, string $file_name) { + $request_options[RequestOptions::HEADERS] = [ + 'Accept' => 'application/json', + ]; + $request_options[RequestOptions::MULTIPART] = [ + [ + 'name' => 'upload', + 'filename' => $file_name, + 'contents' => $file_contents, + ], + ]; + + return $this->request('POST', $url, $request_options); + } + + /** + * Provides the image upload url. + * + * @return \Drupal\Core\Url + * The upload image url for the basic_html format. + */ + protected function getUploadUrl() { + $token = $this->container->get('csrf_token')->get('ckeditor5/upload-image/basic_html'); + return Url::fromRoute('ckeditor5.upload_image', ['editor' => 'basic_html'], ['query' => ['token' => $token]]); + } + + /** + * Create a basic_html text format for the editor to reference. + * + * @throws \Drupal\Core\Entity\EntityStorageException + */ + protected function createBasicFormat() { + $basic_html_format = FilterFormat::create([ + 'format' => 'basic_html', + 'name' => 'Basic HTML', + 'weight' => 1, + 'filters' => [ + 'filter_html_escape' => ['status' => 1], + ], + 'roles' => [RoleInterface::AUTHENTICATED_ID], + ]); + $basic_html_format->save(); + } + + /** + * Create an editor entity with image_upload config. + * + * @param array $upload_config + * The editor image_upload config. + * + * @return \Drupal\Core\Entity\EntityBase|\Drupal\Core\Entity\EntityInterface + * The text editor entity. + * + * @throws \Drupal\Core\Entity\EntityStorageException + */ + protected function createEditorWithUpload(array $upload_config) { + $editor = Editor::create([ + 'editor' => 'ckeditor5', + 'format' => 'basic_html', + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'uploadImage', + ], + ], + 'plugins' => [], + ], + 'image_upload' => $upload_config, + ]); + $editor->save(); + + return $editor; + } + + /** + * Return the first image matching $condition. + * + * @param array $images + * Images created with getTestFiles(). + * @param string $stat + * A key in the array returned from stat(). + * @param callable $condition + * A function to compare a value of the image file. + * + * @return object|bool + * Objects with 'uri', 'filename', and 'name' properties. + */ + protected function getTestImageByStat(array $images, string $stat, callable $condition) { + return current(array_filter($images, function ($image) use ($condition, $stat) { + $stats = stat($image->uri); + return $condition($stats[$stat]); + })); + } + +} diff --git a/core/modules/ckeditor5/tests/src/Functional/MediaImageTest.php b/core/modules/ckeditor5/tests/src/Functional/MediaImageTest.php new file mode 100644 index 000000000000..d66937cfa0a5 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Functional/MediaImageTest.php @@ -0,0 +1,188 @@ +<?php + +namespace Drupal\Tests\ckeditor5\Functional; + +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\editor\Entity\Editor; +use Drupal\file\Entity\File; +use Drupal\filter\Entity\FilterFormat; +use Drupal\media\Entity\Media; +use Drupal\Tests\BrowserTestBase; +use Drupal\Tests\ckeditor5\Traits\SynchronizeCsrfTokenSeedTrait; +use Drupal\Tests\media\Traits\MediaTypeCreationTrait; +use Drupal\Tests\TestFileCreationTrait; +use Drupal\user\RoleInterface; +use Symfony\Component\Validator\ConstraintViolation; + +/** + * Tests that image media types are determined correctly. + * + * @group ckeditor5 + * @internal + */ +class MediaImageTest extends BrowserTestBase { + + use TestFileCreationTrait; + use MediaTypeCreationTrait; + use SynchronizeCsrfTokenSeedTrait; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'system', + 'user', + 'filter', + 'editor', + 'ckeditor5', + 'media', + ]; + + /** + * The sample image media entity to use for testing. + * + * @var \Drupal\media\MediaInterface + */ + protected $mediaImage; + + /** + * The sample file media entity to use for testing. + * + * @var \Drupal\media\MediaInterface + */ + protected $mediaFile; + + /** + * The editor instance to use for testing. + * + * @var \Drupal\editor\Entity\Editor + */ + protected $editor; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + $filtered_html_format = FilterFormat::create([ + 'format' => 'filtered_html', + 'name' => 'Filtered HTML', + 'weight' => 0, + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'status' => TRUE, + 'weight' => -10, + 'settings' => [ + 'allowed_html' => "<p> <br> <drupal-media data-entity-type data-entity-uuid alt>", + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + 'media_embed' => ['status' => TRUE], + ], + 'roles' => [RoleInterface::AUTHENTICATED_ID], + ]); + $filtered_html_format->save(); + $this->editor = Editor::create([ + 'format' => 'filtered_html', + 'editor' => 'ckeditor5', + 'settings' => [ + 'toolbar' => [ + 'items' => [], + ], + ], + ]); + $this->editor->save(); + $this->assertSame([], array_map( + function (ConstraintViolation $v) { + return (string) $v->getMessage(); + }, + iterator_to_array(CKEditor5::validatePair($this->editor, $filtered_html_format)) + )); + + // Create a sample media entity to be embedded. + $this->createMediaType('image', ['id' => 'image']); + File::create([ + 'uri' => $this->getTestFiles('image')[0]->uri, + ])->save(); + $this->mediaImage = Media::create([ + 'bundle' => 'image', + 'name' => 'Screaming hairy armadillo', + 'field_media_image' => [ + [ + 'target_id' => 1, + 'alt' => 'default alt', + 'title' => 'default title', + ], + ], + ]); + $this->mediaImage->save(); + + $this->createMediaType('file', ['id' => 'file']); + File::create([ + 'uri' => $this->getTestFiles('text')[0]->uri, + ])->save(); + $this->mediaFile = Media::create([ + 'bundle' => 'file', + 'name' => 'Information about screaming hairy armadillo', + 'field_media_file' => [ + [ + 'target_id' => 2, + ], + ], + ]); + $this->mediaFile->save(); + + $this->adminUser = $this->drupalCreateUser([ + 'use text format filtered_html', + ]); + $this->drupalLogin($this->adminUser); + } + + /** + * Tests that media entity with image field is recognized. + */ + public function testIsMediaImage() { + $path = '/ckeditor5/filtered_html/is-media-image'; + $token = $this->container->get('csrf_token')->get(ltrim($path, '/')); + $uuid = $this->mediaImage->uuid(); + + $this->drupalGet($path, ['query' => ['token' => $token]]); + $this->assertSession()->statusCodeEquals(400); + + $this->drupalGet($path, ['query' => ['uuid' => $uuid, 'token' => $token]]); + $this->assertSession()->statusCodeEquals(200); + $this->assertSame(json_encode(TRUE), $this->getSession()->getPage()->getContent()); + + $this->drupalGet($path, ['query' => ['uuid' => $this->mediaFile->uuid(), 'token' => $token]]); + $this->assertSession()->statusCodeEquals(200); + $this->assertSame(json_encode(FALSE), $this->getSession()->getPage()->getContent()); + + // Ensure that unpublished media returns 403. + $this->mediaImage->setUnpublished()->save(); + $this->drupalGet($path, ['query' => ['uuid' => $uuid, 'token' => $token]]); + $this->assertSession()->statusCodeEquals(403); + + // Ensure that users that don't have access to the filter format receive + // either 404 or 403. + $this->drupalLogout(); + $token = $this->container->get('csrf_token')->get(ltrim($path, '/')); + $this->drupalGet($path, ['token' => $token]); + $this->assertSession()->statusCodeEquals(400); + + $this->drupalGet($path, ['query' => ['uuid' => $uuid, 'token' => $token]]); + $this->assertSession()->statusCodeEquals(403); + + $this->mediaImage->setPublished()->save(); + $this->drupalGet($path, ['query' => ['uuid' => $uuid, 'token' => $token]]); + $this->assertSession()->statusCodeEquals(403); + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php new file mode 100644 index 000000000000..d2c01635e6b9 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php @@ -0,0 +1,173 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +/** + * Tests for CKEditor 5 in the admin UI. + * + * @group ckeditor5 + * @internal + */ +class AdminUiTest extends CKEditor5TestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'media_library', + 'ckeditor', + ]; + + /** + * Confirm settings only trigger AJAX when select value is CKEditor 5. + */ + public function testSettingsOnlyFireAjaxWithCkeditor5() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + $this->addNewTextFormat($page, $assert_session); + $this->addNewTextFormat($page, $assert_session, 'ckeditor'); + + $this->drupalGet('admin/config/content/formats/manage/ckeditor5'); + $number_ajax_instances_before = $this->getSession()->evaluateScript('Drupal.ajax.instances.length'); + + // Enable media embed to trigger an AJAX rebuild. + $this->assertTrue($page->hasUncheckedField('filters[media_embed][status]')); + $page->checkField('filters[media_embed][status]'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ajax-progress-throbber')); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->responseContains('Media types selectable in the Media Library'); + $assert_session->assertWaitOnAjaxRequest(); + $number_ajax_instances_after = $this->getSession()->evaluateScript('Drupal.ajax.instances.length'); + + // After the rebuild, there should be more AJAX instances. + $this->assertGreaterThan($number_ajax_instances_before, $number_ajax_instances_after); + + // Perform the same steps as above with CKEditor, and confirm AJAX callbacks + // are not triggered on settings changes. + $this->drupalGet('admin/config/content/formats/manage/ckeditor'); + $number_ajax_instances_before = $this->getSession()->evaluateScript('Drupal.ajax.instances.length'); + + // Enable media embed to confirm a format not using CKEditor 5 will not + // trigger an AJAX rebuild. + $this->assertTrue($page->hasUncheckedField('filters[media_embed][status]')); + $page->checkField('filters[media_embed][status]'); + $this->assertEmpty($assert_session->waitForElement('css', '.ajax-progress-throbber')); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->responseContains('Media types selectable in the Media Library'); + $assert_session->assertWaitOnAjaxRequest(); + + $number_ajax_instances_after = $this->getSession()->evaluateScript('Drupal.ajax.instances.length'); + $this->assertSame($number_ajax_instances_before, $number_ajax_instances_after); + + // Confirm that AJAX updates happen when attempting to switch to CKEditor 5, + // even if prevented from doing so by validation. + $this->drupalGet('admin/config/content/formats/add'); + $page->fillField('name', 'trigger validator'); + $assert_session->waitForText('Machine name'); + $page->checkField('roles[authenticated]'); + + // Enable a filter that is incompatible with CKEditor 5, so validation is + // triggered when attempting to switch. + $number_ajax_instances_before = $this->getSession()->evaluateScript('Drupal.ajax.instances.length'); + $this->assertTrue($page->hasUncheckedField('filters[filter_autop][status]')); + $page->checkField('filters[filter_autop][status]'); + $this->assertEmpty($assert_session->waitForElement('css', '.ajax-progress-throbber')); + $assert_session->assertWaitOnAjaxRequest(); + $number_ajax_instances_after = $this->getSession()->evaluateScript('Drupal.ajax.instances.length'); + $this->assertSame($number_ajax_instances_before, $number_ajax_instances_after); + + $page->selectFieldOption('editor[editor]', 'ckeditor5'); + $assert_session->assertWaitOnAjaxRequest(); + + // The presence of this validation error message confirms the AJAX callback + // was invoked. + $assert_session->pageTextContains('CKEditor 5 only works with HTML-based text formats'); + + // Disable the incompatible filter. This should trigger another AJAX rebuild + // which will include the removal of the validation error as the issue has + // been corrected. + $this->assertTrue($page->hasCheckedField('filters[filter_autop][status]')); + $page->uncheckField('filters[filter_autop][status]'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ajax-progress-throbber')); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->pageTextNotContains('CKEditor 5 only works with HTML-based text formats'); + } + + /** + * CKEditor5's filter UI modifications should not break it for other editors. + */ + public function testUnavailableFiltersHiddenWhenSwitching() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + $this->createNewTextFormat($page, $assert_session, 'ckeditor'); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->pageTextNotContains('Filter settings'); + + // Switching to CKEditor 5 should keep the filter settings hidden. + $page->selectFieldOption('editor[editor]', 'ckeditor5'); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->pageTextNotContains('Filter settings'); + } + + /** + * Test that filter settings are only visible when the filter is enabled. + */ + public function testFilterCheckboxesToggleSettings() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session); + + $assert_session->assertWaitOnAjaxRequest(); + + $media_tab = $page->find('css', '[href^="#edit-filters-media-embed-settings"]'); + $this->assertFalse($media_tab->isVisible(), 'Media filter settings should not be present because media filter is not enabled'); + + $this->assertTrue($page->hasUncheckedField('filters[media_embed][status]')); + $page->checkField('filters[media_embed][status]'); + $assert_session->assertWaitOnAjaxRequest(); + + $media_tab = $assert_session->waitForElementVisible('css', '[href^="#edit-filters-media-embed-settings"]'); + $this->assertTrue($media_tab->isVisible(), 'Media settings should appear when media filter enabled'); + + $page->uncheckField('filters[media_embed][status]'); + $assert_session->assertWaitOnAjaxRequest(); + + $media_tab = $page->find('css', '[href^="#edit-filters-media-embed-settings"]'); + $this->assertFalse($media_tab->isVisible(), 'Media settings should be removed when media filter disabled'); + } + + /** + * Ensure CKEditor 5 admin UI's real-time validation errors do not accumulate. + */ + public function testMessagesDoNotAccumulate(): void { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->addNewTextFormat($page, $assert_session); + $this->drupalGet('admin/config/content/formats/manage/ckeditor5'); + + $find_validation_error_messages = function () use ($page): array { + return $page->findAll('css', '[role=alert]:contains("CKEditor 5 only works with HTML-based text formats.")'); + }; + + // No validation errors when we start. + $this->assertCount(0, $find_validation_error_messages()); + + // Enable a filter which is not compatible with CKEditor 5, to trigger a + // validation error. + $page->checkField('Convert URLs into links'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertCount(1, $find_validation_error_messages()); + + // Disable it: validation messages should be gone. + $page->uncheckField('Convert URLs into links'); + $assert_session->assertWaitOnAjaxRequest(); + + // Re-enable it: validation messages should be back. + $page->checkField('Convert URLs into links'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertCount(1, $find_validation_error_messages()); + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php new file mode 100644 index 000000000000..5c06e07a853d --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php @@ -0,0 +1,521 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Symfony\Component\Yaml\Yaml; + +// cspell:ignore esque imageUpload nofilter noeditor sourceediting Editing's + +/** + * Tests for CKEditor5. + * + * @group ckeditor5 + * @internal + */ +class CKEditor5AllowedTagsTest extends CKEditor5TestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'node', + 'ckeditor', + 'ckeditor5', + 'media', + 'media_library', + ]; + + /** + * The default CKEditor 5 allowed elements. + * + * @var string + */ + protected $allowedElements = '<br> <p> <h2> <h3> <h4> <h5> <h6> <strong> <em>'; + + /** + * The element that must be allowed when media embed is enabled. + * + * @var string + */ + protected $mediaElement = '<drupal-media data-entity-type data-entity-uuid alt>'; + + /** + * The default allowed elements when updating a non-CKEditor 5 editor. + * + * @var string + */ + protected $defaultElementsWhenUpdatingNotCkeditor5 = '<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img src alt data-entity-type data-entity-uuid>'; + + /** + * Test enabling CKEditor 5 in a way that triggers validation. + */ + public function testEnablingToVersion5Validation() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session, 'ckeditor'); + $page->selectFieldOption('editor[editor]', 'ckeditor'); + $assert_session->assertWaitOnAjaxRequest(); + $page->checkField('filters[filter_html][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $page->selectFieldOption('editor[editor]', 'ckeditor5'); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->pageTextContains('CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are not allowed by the "Limit allowed HTML tags and correct faulty HTML" (filter_html) filter.'); + + // Add the tags that must be included in the html filter for CKEditor 5 + // defaults. + $allowed_html_field = $assert_session->fieldExists('filters[filter_html][settings][allowed_html]'); + $allowed_html_field->setValue('<p> <br>'); + + // Confirm there are no longer any warnings. + $assert_session->waitForElementRemoved('css', '[data-drupal-messages] [role="alert"]'); + + $page->pressButton('update-ckeditor5-allowed-tags'); + $assert_session->assertWaitOnAjaxRequest(); + $this->saveNewTextFormat($page, $assert_session); + } + + /** + * Tests that when image uploads are enabled in CKEditor 4, they remain in 5. + */ + public function testImageUploadsRemainEnabled(): void { + FilterFormat::create([ + 'format' => 'cke4_image_uploads', + 'name' => 'CKEditor 4, image uploads', + ])->save(); + Editor::create([ + 'format' => 'cke4_image_uploads', + 'editor' => 'ckeditor', + 'settings' => [ + 'toolbar' => [ + 'rows' => [ + 0 => [ + [ + 'name' => 'Media', + 'items' => [ + 'DrupalImage', + ], + ], + ], + ], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => TRUE, + 'scheme' => 'public', + 'directory' => 'inline-images', + 'max_size' => '', + 'max_dimensions' => [ + 'width' => 0, + 'height' => 0, + ], + ], + ])->save(); + + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + // Assert that image uploads are enabled initially. + $this->drupalGet('admin/config/content/formats/manage/cke4_image_uploads'); + $this->assertTrue($page->hasCheckedField('Enable image uploads')); + + // Switch the text format to CKEditor 5. + $page->selectFieldOption('editor[editor]', 'ckeditor5'); + $assert_session->assertWaitOnAjaxRequest(); + + // Assert that image uploads are still enabled. + $this->assertTrue($page->hasCheckedField('Enable image uploads')); + } + + /** + * Confirm that switching to CKEditor 5 from another editor updates tags. + */ + public function testSwitchToVersion5() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session, 'ckeditor'); + $assert_session->assertWaitOnAjaxRequest(); + + // Enable the HTML filter. + $this->assertTrue($page->hasUncheckedField('filters[filter_html][status]')); + $page->checkField('filters[filter_html][status]'); + $assert_session->assertWaitOnAjaxRequest(); + + // Confirm the allowed HTML tags are the defaults for non-Ckeditor5 editors. + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $this->defaultElementsWhenUpdatingNotCkeditor5); + + $this->saveNewTextFormat($page, $assert_session); + $assert_session->pageTextContains('Added text format ckeditor'); + + // Return to the config form to confirm that switching text editors on + // existing formats will properly switch allowed tags. + $this->drupalGet('admin/config/content/formats/manage/ckeditor'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $this->defaultElementsWhenUpdatingNotCkeditor5); + + $page->selectFieldOption('editor[editor]', 'ckeditor5'); + $assert_session->assertWaitOnAjaxRequest(); + + $this->assertTrue($page->find('css', '[name="editor[editor]"]')->hasClass('error')); + $this->assertNotEmpty($assert_session->waitForElement('css', '[data-ckeditor5-allowed-tags-info]')); + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $this->defaultElementsWhenUpdatingNotCkeditor5); + + $allowed_html_field = $assert_session->fieldExists('filters[filter_html][settings][allowed_html]'); + $allowed_html_field->setValue('<p> <br>'); + + $page->pressButton('update-ckeditor5-allowed-tags'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertFalse($page->find('css', '[name="editor[editor]"]')->hasClass('error')); + $page->pressButton('Save configuration'); + + $assert_session->pageTextContains('The Image upload toolbar item requires image uploads to be enabled.'); + $page->clickLink('Image Upload'); + $assert_session->waitForText('Enable image uploads'); + $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_imageUpload][status]')); + $page->checkField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $page->pressButton('Save configuration'); + + $assert_session->pageTextContains('The text format ckeditor has been updated'); + } + + /** + * Tests the language config form. + */ + public function testLanguageConfigForm() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session); + $assert_session->assertWaitOnAjaxRequest(); + + // The language plugin config form should not be present. + $assert_session->elementNotExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-language"]'); + + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-textPartLanguage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-textPartLanguage', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + + // The language plugin config form should now be present. + $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-language"]'); + } + + /** + * Tests that the img tag is added after enabling image uploads. + */ + public function testImgAddedViaUploadPlugin() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session); + $assert_session->assertWaitOnAjaxRequest(); + + $allowed_html_field = $assert_session->fieldExists('filters[filter_html][settings][allowed_html]'); + $this->assertTrue($allowed_html_field->hasAttribute('readonly')); + + // Allowed tags are currently the default, with no <img>. + $this->assertEquals($this->allowedElements, $allowed_html_field->getValue()); + + // The image upload settings form should not be present. + $assert_session->elementNotExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageupload"]'); + + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-uploadImage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-uploadImage', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + + // The image upload settings form should now be present. + $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageupload"]'); + + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-active .ckeditor5-toolbar-item-uploadImage')); + + // The image upload plugin is enabled, but <img> not yet allowed. + $this->assertEquals($this->allowedElements, $allowed_html_field->getValue()); + + $page->clickLink('Image Upload'); + $assert_session->waitForText('Enable image uploads'); + $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_imageUpload][status]')); + $page->checkField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $assert_session->assertWaitOnAjaxRequest(); + + // Enabling image uploads adds <img> with several attributes to allowed + // tags. + $this->assertEquals($this->allowedElements . ' <img src alt data-entity-uuid data-entity-type height width>', $allowed_html_field->getValue()); + + // Also enabling the caption filter will add the data-caption attribute to + // <img>. + $this->assertTrue($page->hasUncheckedField('filters[filter_caption][status]')); + $page->checkField('filters[filter_caption][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertEquals($this->allowedElements . ' <img src alt data-entity-uuid data-entity-type height width data-caption>', $allowed_html_field->getValue()); + + // Also enabling the alignment filter will add the data-align attribute to + // <img>. + $this->assertTrue($page->hasUncheckedField('filters[filter_align][status]')); + $page->checkField('filters[filter_align][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertEquals($this->allowedElements . ' <img src alt data-entity-uuid data-entity-type height width data-caption data-align>', $allowed_html_field->getValue()); + + // Disable image upload. + $page->clickLink('Image Upload'); + $assert_session->waitForText('Enable image uploads'); + $this->assertTrue($page->hasCheckedField('editor[settings][plugins][ckeditor5_imageUpload][status]')); + $page->uncheckField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $assert_session->assertWaitOnAjaxRequest(); + + // Confirm <img> is no longer an allowed tag, once image upload disabled. + $this->assertEquals($this->allowedElements, $allowed_html_field->getValue()); + } + + /** + * Test filter_html allowed tags. + */ + public function testAllowedTags() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session); + $assert_session->assertWaitOnAjaxRequest(); + + // Confirm the "allowed tags" field is read only, and the value + // matches the tags required by CKEditor. + // Allowed HTML field is readonly and its wrapper has a form-disabled class. + $this->assertNotEmpty($assert_session->waitForElement('css', '.js-form-item-filters-filter-html-settings-allowed-html.form-disabled')); + $allowed_html_field = $assert_session->fieldExists('filters[filter_html][settings][allowed_html]'); + $this->assertTrue($allowed_html_field->hasAttribute('readonly')); + $this->assertSame($this->allowedElements, $allowed_html_field->getValue()); + $this->saveNewTextFormat($page, $assert_session); + + $assert_session->pageTextContains('Added text format ckeditor5'); + $assert_session->pageTextContains('Text formats and editors'); + + // Confirm the filter config was updated with the correct allowed tags. + $this->assertSame($this->allowedElements, FilterFormat::load('ckeditor5')->filters('filter_html')->getConfiguration()['settings']['allowed_html']); + + $page->find('css', '[data-drupal-selector="edit-formats-ckeditor5"]')->clickLink('Configure'); + $assert_session->assertWaitOnAjaxRequest(); + + // Add the block quote plugin to the CKEditor 5 toolbar. + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-blockQuote')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-blockQuote', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + + $allowed_with_blockquote = $this->allowedElements . ' <blockquote>'; + $assert_session->fieldExists('filters[filter_html][settings][allowed_html]'); + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $allowed_with_blockquote); + + $page->pressButton('Save configuration'); + $assert_session->pageTextContains('The text format ckeditor5 has been updated.'); + + // Flush caches so the updated config can be checked. + drupal_flush_all_caches(); + + // Confirm that the tags required by the newly-added plugins were correctly + // saved. + $this->assertSame($allowed_with_blockquote, FilterFormat::load('ckeditor5')->filters('filter_html')->getConfiguration()['settings']['allowed_html']); + + $page->find('css', '[data-drupal-selector="edit-formats-ckeditor5"]')->clickLink('Configure'); + + // And for good measure, confirm the correct tags are in the form field when + // returning to the form. + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $allowed_with_blockquote); + + // Add the source editing plugin to the CKEditor 5 toolbar. + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-sourceEditing')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-sourceEditing', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + + // Updating Source Editing's editable tags should automatically update + // filter_html to include those additional tags. + $assert_session->waitForText('Source editing'); + $page->find('css', '[href^="#edit-editor-settings-plugins-ckeditor5-sourceediting"]')->click(); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->waitForText('Manually editable HTML tags'); + $source_edit_tags_field = $assert_session->fieldExists('editor[settings][plugins][ckeditor5_sourceEditing][allowed_tags]'); + $source_edit_tags_field->setValue('<aside>'); + $assert_session->assertWaitOnAjaxRequest(); + + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', '<br> <p> <h2> <h3> <h4> <h5> <h6> <aside> <strong> <em> <blockquote>'); + $allowed_html_field = $assert_session->fieldExists('filters[filter_html][settings][allowed_html]'); + $this->assertTrue($allowed_html_field->hasAttribute('readonly')); + + // Adding tags to Source Editing's editable tags that are already supported + // by enabled CKEditor 5 plugins must trigger a validation error, and that + // error must be associated with the correct form item. + $source_edit_tags_field->setValue('<aside><strong>'); + $assert_session->waitForText('The following tag(s) are already supported by enabled plugins and should not be added to the Source Editing "Manually editable HTML tags" field: Bold (<strong>)'); + $this->assertTrue($page->find('css', '[href^="#edit-editor-settings-plugins-ckeditor5-sourceediting"]')->getParent()->hasClass('is-selected')); + $this->assertSame('true', $page->findField('editor[settings][plugins][ckeditor5_sourceEditing][allowed_tags]')->getAttribute('aria-invalid')); + $this->assertTrue($allowed_html_field->hasAttribute('readonly')); + + // The same validation error appears when saving the form regardless of the + // immediate AJAX validation error above. + $page->pressButton('Save configuration'); + $assert_session->pageTextContains('The following tag(s) are already supported by enabled plugins and should not be added to the Source Editing "Manually editable HTML tags" field: Bold (<strong>)'); + $this->assertTrue($page->find('css', '[href^="#edit-editor-settings-plugins-ckeditor5-sourceediting"]')->getParent()->hasClass('is-selected')); + $this->assertSame('true', $page->findField('editor[settings][plugins][ckeditor5_sourceEditing][allowed_tags]')->getAttribute('aria-invalid')); + $assert_session->pageTextNotContains('The text format ckeditor5 has been updated'); + + // Wait for the "Source editing" vertical tab to appear, remove the already + // supported tags and re-save. Now the text format should save successfully. + $assert_session->waitForText('Source editing'); + $page->find('css', '[href^="#edit-editor-settings-plugins-ckeditor5-sourceediting"]')->click(); + $assert_session->pageTextContains('Manually editable HTML tags'); + $source_edit_tags_field = $assert_session->fieldExists('editor[settings][plugins][ckeditor5_sourceEditing][allowed_tags]'); + $source_edit_tags_field->setValue('<aside>'); + $assert_session->assertWaitOnAjaxRequest(); + $page->pressButton('Save configuration'); + $assert_session->pageTextContains('The text format ckeditor5 has been updated'); + $assert_session->pageTextNotContains('The following tag(s) are already supported by enabled plugins and should not be added to the Source Editing "Manually editable HTML tags" field: Bold (<strong>)'); + + // Ensure that CKEditor can be initialized with Source Editing. + // @see https://www.drupal.org/i/3231427 + $this->drupalGet('node/add'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + } + + /** + * Test that <drupal-media> is added to allowed tags when media embed enabled. + */ + public function testMediaElementAllowedTags() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session); + + // Allowed HTML field is readonly and its wrapper has a form-disabled class. + $this->assertNotEmpty($assert_session->waitForElement('css', '.js-form-item-filters-filter-html-settings-allowed-html.form-disabled')); + $allowed_html_field = $assert_session->fieldExists('filters[filter_html][settings][allowed_html]'); + $this->assertTrue($allowed_html_field->hasAttribute('readonly')); + + // Allowed tags are currently the default, with no <drupal-media>. + $this->assertEquals($this->allowedElements, $allowed_html_field->getValue()); + + // Enable media embed. + $this->assertTrue($page->hasUncheckedField('filters[media_embed][status]')); + $page->checkField('filters[media_embed][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->responseContains('Media types selectable in the Media Library'); + + $allowed_with_media = $this->allowedElements . ' ' . $this->mediaElement; + $assert_session->responseContains('Media types selectable in the Media Library'); + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $allowed_with_media); + $this->saveNewTextFormat($page, $assert_session); + $assert_session->pageTextContains('Added text format ckeditor5.'); + + // Confirm <drupal-media> was added to allowed tags on save, as a result of + // enabling the media embed filter. + $this->assertSame($allowed_with_media, FilterFormat::load('ckeditor5')->filters('filter_html')->getConfiguration()['settings']['allowed_html']); + + $page->find('css', '[data-drupal-selector="edit-formats-ckeditor5"]')->clickLink('Configure'); + + // Confirm that <drupal-media> is now included in the "Allowed tags" form + // field. + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $allowed_with_media); + + // Disable media embed. + $this->assertTrue($page->hasCheckedField('filters[media_embed][status]')); + $page->uncheckField('filters[media_embed][status]'); + $assert_session->assertWaitOnAjaxRequest(); + + // Confirm allowed tags no longer has <drupal-media>. + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $this->allowedElements); + } + + /** + * Tests the presence of the IE warning when CKEditor 5 is selected. + */ + public function testInternetExplorerWarning() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + $warning_text = 'CKEditor 5 is not compatible with Internet Explorer 11. Fields using CKEditor 5 will still be editable but without the benefits of CKEditor.'; + $this->createNewTextFormat($page, $assert_session); + $assert_session->waitForText($warning_text); + $page->selectFieldOption('editor[editor]', 'None'); + $this->getSession()->getDriver()->executeScript("document.querySelector('#drupal-live-announce').innerHTML = ''"); + $assert_session->assertNoElementAfterWait('css', '.messages--warning'); + $assert_session->pageTextNotContains($warning_text); + } + + /** + * Tests full HTML text format. + */ + public function testFullHtml() { + FilterFormat::create( + Yaml::parseFile('core/profiles/standard/config/install/filter.format.full_html.yml') + )->save(); + FilterFormat::create( + Yaml::parseFile('core/profiles/standard/config/install/filter.format.basic_html.yml') + )->save(); + + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + // Add a node with text rendered via the Plain Text format. + $this->drupalGet('node/add'); + $page->fillField('title[0][value]', 'My test content'); + $page->fillField('body[0][value]', '<p><a style="color:#ff0000;" foo="bar" hreflang="en" href="https://example.com"><abbr title="National Aeronautics and Space Administration">NASA</abbr> is an acronym.</a></p>'); + $page->pressButton('Save'); + + // Configure Full HTML text format to use CKEditor 5. + $this->drupalGet('admin/config/content/formats/manage/full_html'); + $page->checkField('roles[authenticated]'); + $page->selectFieldOption('editor[editor]', 'ckeditor5'); + $assert_session->assertWaitOnAjaxRequest(); + $page->pressButton('Save configuration'); + $this->assertTrue($assert_session->waitForText('The text format Full HTML has been updated.')); + + // Change the node's text format to Full HTML. + $this->drupalGet('node/1/edit'); + $page->selectFieldOption('body[0][format]', 'full_html'); + $this->assertNotEmpty($assert_session->waitForText('Change text format?')); + $page->pressButton('Continue'); + + // Ensure the editor is loaded and ensure that arbitrary markup is retained. + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + $page->pressButton('Save'); + + // But note that the `style` attribute was stripped by + // \Drupal\editor\EditorXssFilter\Standard. + $assert_session->responseContains('<p><a href="https://example.com" hreflang="en" foo="bar"><abbr title="National Aeronautics and Space Administration">NASA</abbr> is an acronym.</a></p>'); + + // Ensure attributes are retained after enabling link plugin. + $this->drupalGet('admin/config/content/formats/manage/full_html'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-link')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-link', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + $page->pressButton('Save configuration'); + + $this->drupalGet('node/1/edit'); + $page->pressButton('Save'); + + $assert_session->responseContains('<p><a href="https://example.com" hreflang="en" foo="bar"><abbr title="National Aeronautics and Space Administration">NASA</abbr> is an acronym.</a></p>'); + + // Configure Basic HTML text format to use CKE5 and enable the link plugin. + $this->drupalGet('admin/config/content/formats/manage/basic_html'); + $page->checkField('roles[authenticated]'); + $page->selectFieldOption('editor[editor]', 'ckeditor5'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-link')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-link', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + $page->pressButton('Save configuration'); + $this->assertTrue($assert_session->waitForText('The text format Basic HTML has been updated.')); + + // Change the node's text format to Basic HTML. + $this->drupalGet('node/1/edit'); + $page->selectFieldOption('body[0][format]', 'basic_html'); + $this->assertNotEmpty($assert_session->waitForText('Change text format?')); + $page->pressButton('Continue'); + $assert_session->assertWaitOnAjaxRequest(); + $page->pressButton('Save'); + + // The `style` and foo` attributes should have been removed, as should the + // `<abbr>` tag. + $assert_session->responseContains('<p><a href="https://example.com" hreflang="en">NASA is an acronym.</a></p>'); + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php new file mode 100644 index 000000000000..b6e4b42f6743 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php @@ -0,0 +1,123 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\Core\Entity\Entity\EntityFormDisplay; +use Drupal\editor\Entity\Editor; +use Drupal\field\Entity\FieldConfig; +use Drupal\field\Entity\FieldStorageConfig; +use Drupal\filter\Entity\FilterFormat; +use Symfony\Component\Validator\ConstraintViolation; + +/** + * Ensures that CKEditor 5 can be used on the same page with CKEditor 4. + * + * @group ckeditor5 + * @internal + */ +class CKEditor5CKEditor4Compatibility extends CKEditor5TestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'ckeditor', + 'ckeditor5_test', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + $current_user_roles = $this->loggedInUser->getRoles(TRUE); + + // Create text format, text editor and text fields for CKEditor 5 and 4. + foreach ([5 => 'ckeditor5', 4 => 'ckeditor'] as $version => $text_editor_plugin_id) { + $format_id = sprintf('test_format_for_ckeditor%d', $version); + $field_name = sprintf('field_text_ckeditor%d', $version); + + FilterFormat::create([ + 'format' => $format_id, + 'name' => sprintf('CKEditor %d editor', $version), + 'roles' => $current_user_roles, + 'filters' => [ + 'filter_html' => [ + 'status' => TRUE, + 'settings' => [ + 'allowed_html' => '<p> <br> <h2> <h3> <h4> <h5> <h6> <strong> <em>', + ], + ], + ], + ])->save(); + Editor::create([ + 'editor' => $text_editor_plugin_id, + 'format' => $format_id, + 'settings' => $version === 4 ? [] : [ + 'toolbar' => [ + 'items' => ['heading', 'bold', 'italic'], + ], + 'plugins' => [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ], + ], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + ])->save(); + if ($version === 5) { + $this->assertSame([], array_map( + function (ConstraintViolation $v) { + return (string) $v->getMessage(); + }, + iterator_to_array(CKEditor5::validatePair( + Editor::load($format_id), + FilterFormat::load($format_id) + )) + )); + } + $field_storage = FieldStorageConfig::create([ + 'field_name' => $field_name, + 'entity_type' => 'node', + 'type' => 'text_long', + ]); + $field_storage->save(); + FieldConfig::create([ + 'field_storage' => $field_storage, + 'entity_type' => 'node', + 'bundle' => 'page', + ])->save(); + + // Add the new field to the default form display. + EntityFormDisplay::load('node.page.default') + ->setComponent($field_name, ['type' => 'text_textarea']) + ->save(); + } + } + + /** + * Ensures that CKEditor 5 and CKEditor 4 can be used on the same page. + */ + public function testCkeCompatibility() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->drupalGet('node/add/page'); + $page->selectFieldOption('field_text_ckeditor4[0][format]', 'test_format_for_ckeditor4'); + $page->selectFieldOption('field_text_ckeditor5[0][format]', 'test_format_for_ckeditor5'); + + $this->assertNotEmpty($assert_session->waitForElement('css', '.cke_wysiwyg_frame')); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5OffCanvasTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5OffCanvasTest.php new file mode 100644 index 000000000000..b8e2f102ec45 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5OffCanvasTest.php @@ -0,0 +1,52 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +/** + * Tests for CKEditor5 to ensure correct styling in off-canvas. + * + * @group ckeditor5 + * @internal + */ +class CKEditor5OffCanvasTest extends CKEditor5TestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'node', + 'ckeditor5', + 'ckeditor5_test', + ]; + + /** + * Tests if CKEditor is properly styled inside an off-canvas dialog. + */ + public function testOffCanvasStyles() { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + $this->addNewTextFormat($page, $assert_session); + + $this->drupalGet('/ckeditor5_test/off_canvas'); + + // The "Add Node" link triggers an off-canvas dialog with an add node form + // that includes CKEditor. + $page->clickLink('Add Node'); + $assert_session->waitForElementVisible('css', '#drupal-off-canvas'); + $assert_session->assertWaitOnAjaxRequest(); + + $styles = $assert_session->elementExists('css', 'style#ckeditor5-off-canvas-reset'); + $this->stringContains('#drupal-off-canvas [data-drupal-ck-style-fence]', $styles->getText()); + + $assert_session->elementExists('css', '.ck'); + + $ckeditor_toolbar_bg_color = $this->getSession()->evaluateScript('window.getComputedStyle(document.querySelector(\'.ck.ck-toolbar\')).backgroundColor'); + $this->assertEquals('rgb(250, 250, 250)', $ckeditor_toolbar_bg_color, 'Toolbar background-color should be unaffected by off-canvas'); + // Editable area should be visible. + $assert_session->elementExists('css', '.ck .ck-content'); + $ckeditor_editable_bg_color = $this->getSession()->evaluateScript('window.getComputedStyle(document.querySelector(\'.ck.ck-content\')).backgroundColor'); + $this->assertEquals('rgb(255, 255, 255)', $ckeditor_editable_bg_color, 'Content background-color should be unaffected by off-canvas'); + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php new file mode 100644 index 000000000000..deb37c9455fb --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php @@ -0,0 +1,472 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\Core\Language\LanguageManager; +use Drupal\editor\Entity\Editor; +use Drupal\file\Entity\File; +use Drupal\filter\Entity\FilterFormat; +use Drupal\node\Entity\Node; +use Drupal\Tests\TestFileCreationTrait; +use Drupal\user\RoleInterface; +use Symfony\Component\Validator\ConstraintViolation; + +// cspell:ignore esque upcasted + +/** + * Tests for CKEditor5. + * + * @group ckeditor5 + * @internal + */ +class CKEditor5Test extends CKEditor5TestBase { + + use TestFileCreationTrait; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'media_library', + ]; + + /** + * Tests configuring CKEditor5 for existing content. + */ + public function testExistingContent() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + // Add a node with text rendered via the Plain Text format. + $this->drupalGet('node/add'); + $page->fillField('title[0][value]', 'My test content'); + $page->fillField('body[0][value]', '<p>This is test content</p>'); + $page->pressButton('Save'); + $assert_session->responseNotContains('<p>This is test content</p>'); + $assert_session->responseContains('<p>This is test content</p>'); + + $this->addNewTextFormat($page, $assert_session); + + // Change the node to use the new text format. + $this->drupalGet('node/1/edit'); + + // Confirm that the JavaScript that generates IE11 warnings loads. + $assert_session->elementExists('css', 'script[src*="ckeditor5/js/ie11.user.warnings.js"]'); + + $page->selectFieldOption('body[0][format]', 'ckeditor5'); + $this->assertNotEmpty($assert_session->waitForText('Change text format?')); + $page->pressButton('Continue'); + // Ensure the editor is loaded. + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + $page->pressButton('Save'); + + // Assert that the HTML is rendered correctly. + $assert_session->responseContains('<p>This is test content</p>'); + $assert_session->responseNotContains('<p>This is test content</p>'); + } + + /** + * Ensures that attribute values are encoded. + */ + public function testAttributeEncoding() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + FilterFormat::create([ + 'format' => 'ckeditor5', + 'name' => 'CKEditor 5 with image upload', + 'roles' => [RoleInterface::AUTHENTICATED_ID], + ])->save(); + Editor::create([ + 'format' => 'ckeditor5', + 'editor' => 'ckeditor5', + 'settings' => [ + 'toolbar' => [ + 'items' => ['uploadImage'], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => TRUE, + 'scheme' => 'public', + 'directory' => 'inline-images', + 'max_size' => '', + ], + ])->save(); + $this->assertSame([], array_map( + function (ConstraintViolation $v) { + return (string) $v->getMessage(); + }, + iterator_to_array(CKEditor5::validatePair( + Editor::load('ckeditor5'), + FilterFormat::load('ckeditor5') + )) + )); + + $this->drupalGet('node/add'); + $page->fillField('title[0][value]', 'My test content'); + $this->assertNotEmpty($image_upload_field = $page->find('css', '.ck-file-dialog-button input[type="file"]')); + $image = $this->getTestFiles('image')[0]; + $image_upload_field->attachFile($this->container->get('file_system')->realpath($image->uri)); + $assert_session->assertWaitOnAjaxRequest(); + + $this->click('.ck-widget.image'); + $balloon_panel = $page->find('css', '.ck-balloon-panel'); + $balloon_buttons = $balloon_panel->findAll('css', '[aria-label="Image toolbar"] button'); + $this->assertSame('Change image text alternative', $balloon_buttons[0]->find('css', '.ck-button__label')->getHtml()); + $balloon_buttons[0]->click(); + $assert_session->waitForElementVisible('css', '.ck-balloon-panel .ck-text-alternative-form'); + $alt_override_input = $page->find('css', '.ck-balloon-panel .ck-text-alternative-form input[type=text]'); + $this->assertSame('', $alt_override_input->getValue()); + $alt_override_input->setValue('</em> Kittens & llamas are cute'); + $balloon_panel->pressButton('Save'); + $page->pressButton('Save'); + + $uploaded_image = File::load(1); + $image_uuid = $uploaded_image->uuid(); + $image_url = $this->container->get('file_url_generator')->generateString($uploaded_image->getFileUri()); + $this->drupalGet('node/1'); + $assert_session->elementExists('xpath', sprintf('//img[@alt="</em> Kittens & llamas are cute" and @data-entity-uuid="%s" and @data-entity-type="file"]', $image_uuid)); + + // Drupal CKEditor 5 integrations overrides the CKEditor 5 HTML writer to + // escape ampersand characters (&) and the angle brackets (< and >). This is + // required because \Drupal\Component\Utility\Xss::filter fails to parse + // element attributes with unescaped entities in value. + // @see https://www.drupal.org/project/drupal/issues/3227831 + $this->assertEquals(sprintf('<img data-entity-uuid="%s" data-entity-type="file" src="%s" alt="</em> Kittens & llamas are cute">', $image_uuid, $image_url), Node::load(1)->get('body')->value); + } + + /** + * Test headings configuration. + */ + public function testHeadingsPlugin() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->addNewTextFormat($page, $assert_session); + $this->drupalGet('admin/config/content/formats/manage/ckeditor5'); + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', '<br> <p> <h2> <h3> <h4> <h5> <h6> <strong> <em>'); + + $this->drupalGet('node/add'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-heading-dropdown button')); + + $page->find('css', '.ck-heading-dropdown button')->click(); + + // Get all the headings available in dropdown. + $headings_dropdown = $page->findAll('css', '.ck-heading-dropdown li .ck-button__label'); + + // Create array of available headings. + $available_headings = []; + foreach ($headings_dropdown as $item) { + $available_headings[] = $item->getText(); + } + + $this->assertSame([ + 'Paragraph', + 'Heading 2', + 'Heading 3', + 'Heading 4', + 'Heading 5', + 'Heading 6', + ], $available_headings); + + $this->drupalGet('admin/config/content/formats/manage/ckeditor5'); + $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading1]')); + $page->checkField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading1]'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertTrue($page->hasCheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading1]')); + $this->assertTrue($page->hasCheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading2]')); + $page->uncheckField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading2]'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading2]')); + $this->assertTrue($page->hasCheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading4]')); + $page->uncheckField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading4]'); + $assert_session->assertWaitOnAjaxRequest(); + $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading4]')); + $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', '<br> <p> <h1> <h3> <h5> <h6> <strong> <em>'); + $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading4]')); + + $page->pressButton('Save configuration'); + + $this->drupalGet('node/add'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-heading-dropdown button')); + + $page->find('css', '.ck-heading-dropdown button')->click(); + + // Get all the headings available in dropdown. + $headings_dropdown = $page->findAll('css', '.ck-heading-dropdown li .ck-button__label'); + + // Create array of available headings. + $available_headings = []; + foreach ($headings_dropdown as $item) { + $available_headings[] = $item->getText(); + } + + $this->assertSame([ + 'Paragraph', + 'Heading 1', + 'Heading 3', + 'Heading 5', + 'Heading 6', + ], $available_headings); + } + + /** + * Test for plugin Language of parts. + */ + public function testLanguageOfPartsPlugin() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session); + // Press arrow down key to add the button to the active toolbar. + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-textPartLanguage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-textPartLanguage', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + + // Test for "United Nations' official languages" option. + $languages = LanguageManager::getUnitedNationsLanguageList(); + $this->languageOfPartsPluginTestHelper($page, $assert_session, $languages, "un"); + + // Test for "All 95 languages" option. + $this->drupalGet('admin/config/content/formats/manage/ckeditor5'); + $languages = LanguageManager::getStandardLanguageList(); + $this->languageOfPartsPluginTestHelper($page, $assert_session, $languages, "all"); + } + + /** + * Validate the available languages on the basis of selected language option. + */ + public function languageOfPartsPluginTestHelper($page, $assert_session, $predefined_languages, $option) { + $this->assertNotEmpty($assert_session->waitForElement('css', 'a[href^="#edit-editor-settings-plugins-ckeditor5-language"]')); + + // Set correct value. + $vertical_tab_link = $page->find('xpath', "//ul[contains(@class, 'vertical-tabs__menu')]/li/a[starts-with(@href, '#edit-editor-settings-plugins-ckeditor5-language')]"); + $vertical_tab_link->click(); + $page->selectFieldOption('editor[settings][plugins][ckeditor5_language][language_list]', $option); + $assert_session->assertWaitOnAjaxRequest(); + $page->pressButton('Save configuration'); + + // Validate plugin on node add page. + $this->drupalGet('node/add'); + $this->assertNotEmpty($assert_session->waitForText('Choose language')); + + // Click on the dropdown button. + $page->find('css', '.ck-text-fragment-language-dropdown button')->click(); + + // Get all the languages available in dropdown. + $current_languages = $page->findAll('css', '.ck-text-fragment-language-dropdown li .ck-button__label'); + + // Remove "Remove language" element from current languages. + array_shift($current_languages); + + // Create array of full language name. + $languages = []; + foreach ($current_languages as $item) { + $languages[] = $item->getText(); + } + // Return the values from a single column. + $predefined_languages = array_column($predefined_languages, 0); + + // Sort on full language name. + asort($predefined_languages); + + $this->assertSame(array_values($predefined_languages), $languages); + } + + /** + * Confirms active tab status is intact after AJAX refresh. + */ + public function testActiveTabsMaintained() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session); + $assert_session->assertWaitOnAjaxRequest(); + + // Ensure the HTML filter tab is visible. + $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'a[href^="#edit-filters-filter-html-settings"]')); + + // Enable media embed to make a second filter config tab visible. + $this->assertTrue($page->hasUncheckedField('filters[media_embed][status]')); + $page->checkField('filters[media_embed][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->responseContains('Media types selectable in the Media Library'); + $assert_session->assertWaitOnAjaxRequest(); + + // Enable upload image to add one plugin config form. + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-uploadImage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-uploadImage', 'ArrowDown'); + // cSpell:disable-next-line + $this->assertNotEmpty($assert_session->waitForElement('css', 'a[href^="#edit-editor-settings-plugins-ckeditor5-imageupload"]')); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-active .ckeditor5-toolbar-item-uploadImage')); + $assert_session->assertWaitOnAjaxRequest(); + + $page->clickLink('Image Upload'); + $assert_session->waitForText('Enable image uploads'); + $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_imageUpload][status]')); + $page->checkField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $assert_session->assertWaitOnAjaxRequest(); + + // Enable language to add a second plugin config form. + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-textPartLanguage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-textPartLanguage', 'ArrowDown'); + $this->assertNotEmpty($assert_session->waitForElement('css', 'a[href^="#edit-editor-settings-plugins-ckeditor5-language"]')); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-active .ckeditor5-toolbar-item-textPartLanguage')); + $assert_session->assertWaitOnAjaxRequest(); + + $page->pressButton('Save configuration'); + $assert_session->pageTextContains('Added text format ckeditor5'); + + // Leave and return to the config form, both sets of tabs should then have + // the first tab active by default. + $this->drupalGet('admin/config/content/formats/'); + $this->drupalGet('admin/config/content/formats/manage/ckeditor5'); + + $assert_session->waitForElement('css', '.vertical-tabs__menu-item.is-selected'); + + $plugin_settings_vertical_tabs = $page->findAll('css', '#plugin-settings-wrapper .vertical-tabs__menu-item'); + $filter_settings = $page->find('xpath', '//*[contains(@class, "js-form-type-vertical-tabs")]/label[contains(text(), "Filter settings")]/..'); + $filter_settings_vertical_tabs = $filter_settings->findAll('css', '.vertical-tabs__menu-item'); + + $this->assertTrue($plugin_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected plugin tab 1 selected on initial build"); + $this->assertFalse($plugin_settings_vertical_tabs[1]->hasClass('is-selected'), "Expected plugin tab 2 not selected on initial build"); + + $this->assertFalse($filter_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected filter tab 1 not selected on initial build"); + $this->assertTrue($filter_settings_vertical_tabs[2]->hasClass('is-selected'), "Expected (visible) filter tab 2 selected on initial build"); + + $plugin_settings_vertical_tabs[1]->click(); + $filter_settings_vertical_tabs[0]->click(); + $assert_session->assertWaitOnAjaxRequest(); + + $this->assertFalse($plugin_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected plugin tab 1 deselected after click"); + $this->assertTrue($plugin_settings_vertical_tabs[1]->hasClass('is-selected'), "Expected plugin tab 2 selected after click"); + + $this->assertTrue($filter_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected filter tab 1 selected after click"); + $this->assertFalse($filter_settings_vertical_tabs[2]->hasClass('is-selected'), "Expected (visible) filter tab 2 deselected after click"); + + // Add a plugin just to trigger AJAX refresh. + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-blockQuote')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-blockQuote', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + + $this->assertFalse($plugin_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected plugin tab 1 deselected after AJAX refresh"); + $this->assertTrue($plugin_settings_vertical_tabs[1]->hasClass('is-selected'), "Expected plugin tab 2 selected after AJAX refresh"); + + $this->assertTrue($filter_settings_vertical_tabs[0]->hasClass('is-selected'), "Expected filter tab 1 selected after AJAX refresh"); + $this->assertFalse($filter_settings_vertical_tabs[1]->hasClass('is-selected'), "Expected filter tab 2 deselected after AJAX refresh"); + } + + /** + * Ensures that CKEditor 5 integrates with file reference filter. + */ + public function testEditorFileReferenceIntegration() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-uploadImage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-uploadImage', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + $page->clickLink('Image Upload'); + $page->checkField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $page->checkField('filters[editor_file_reference][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $this->saveNewTextFormat($page, $assert_session); + + $this->drupalGet('node/add'); + $page->fillField('title[0][value]', 'My test content'); + $this->assertNotEmpty($image_upload_field = $page->find('css', '.ck-file-dialog-button input[type="file"]')); + $image = $this->getTestFiles('image')[0]; + $image_upload_field->attachFile($this->container->get('file_system')->realpath($image->uri)); + $assert_session->assertWaitOnAjaxRequest(); + $page->pressButton('Save'); + + $uploaded_image = File::load(1); + $image_url = $this->container->get('file_url_generator')->generateString($uploaded_image->getFileUri()); + $image_uuid = $uploaded_image->uuid(); + $assert_session->elementExists('xpath', sprintf('//img[@src="%s" and @loading="lazy" and @width and @height and @data-entity-uuid="%s" and @data-entity-type="file"]', $image_url, $image_uuid)); + + // Ensure that width, height, and length attributes are not stored in the + // database. + $this->assertEquals(sprintf('<img data-entity-uuid="%s" data-entity-type="file" src="%s">', $image_uuid, $image_url), Node::load(1)->get('body')->value); + + // Ensure that data-entity-uuid and data-entity-type attributes are upcasted + // correctly to CKEditor model. + $this->drupalGet('node/1/edit'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + $page->pressButton('Save'); + + $assert_session->elementExists('xpath', sprintf('//img[@src="%s" and @loading="lazy" and @width and @height and @data-entity-uuid="%s" and @data-entity-type="file"]', $image_url, $image_uuid)); + } + + /** + * Ensures that CKEditor italic model is converted to em. + */ + public function testEmphasis() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + // Add a node with text rendered via the Plain Text format. + $this->drupalGet('node/add'); + $page->fillField('title[0][value]', 'My test content'); + $page->fillField('body[0][value]', '<p>This is a <em>test!</em></p>'); + $page->pressButton('Save'); + + $this->createNewTextFormat($page, $assert_session); + $this->saveNewTextFormat($page, $assert_session); + + $this->drupalGet('node/1/edit'); + $page->selectFieldOption('body[0][format]', 'ckeditor5'); + $this->assertNotEmpty($assert_session->waitForText('Change text format?')); + $page->pressButton('Continue'); + + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + $page->pressButton('Save'); + + $assert_session->responseContains('<p>This is a <em>test!</em></p>'); + } + + /** + * Ensures that images can have caption set. + */ + public function testImageCaption() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + // Add a node with text rendered via the Plain Text format. + $this->drupalGet('node/add'); + $page->fillField('title[0][value]', 'My test content'); + // Add image with data-caption. The foo attribute is added to be removed + // later by CKEditor to make sure CKEditor was able to downcast data. + $page->fillField('body[0][value]', '<img src="/sites/default/files/alpaca.jpg" data-caption="Alpacas <em>are</em> cute" foo="bar">'); + $page->pressButton('Save'); + + $this->createNewTextFormat($page, $assert_session); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-uploadImage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-uploadImage', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + $page->clickLink('Image Upload'); + $assert_session->waitForText('Enable image uploads'); + $page->checkField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $page->checkField('filters[filter_caption][status]'); + $assert_session->assertWaitOnAjaxRequest(); + $this->saveNewTextFormat($page, $assert_session); + + $this->drupalGet('node/1/edit'); + $page->selectFieldOption('body[0][format]', 'ckeditor5'); + $this->assertNotEmpty($assert_session->waitForText('Change text format?')); + $page->pressButton('Continue'); + + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + $page->pressButton('Save'); + + $this->assertEquals('<img src="/sites/default/files/alpaca.jpg" data-caption="Alpacas <em>are</em> cute">', Node::load(1)->get('body')->value); + $assert_session->elementExists('xpath', '//figure/img[@src="/sites/default/files/alpaca.jpg" and not(@data-caption)]'); + $assert_session->responseContains('<figcaption>Alpacas <em>are</em> cute</figcaption>'); + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5TestBase.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5TestBase.php new file mode 100644 index 000000000000..052ba5e0d1d1 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5TestBase.php @@ -0,0 +1,140 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Behat\Mink\Element\TraversableElement; +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; + +// cspell:ignore esque + +/** + * Base class for testing CKEditor 5. + * + * @ingroup testing + * @internal + */ +abstract class CKEditor5TestBase extends WebDriverTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'node', + 'ckeditor5', + ]; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + $this->drupalCreateContentType(['type' => 'page']); + + $this->drupalLogin($this->drupalCreateUser([ + 'administer filters', + 'create page content', + 'edit own page content', + ])); + } + + /** + * Add and save a new text format using CKEditor 5. + */ + public function addNewTextFormat($page, $assert_session, $name = 'ckeditor5') { + $this->createNewTextFormat($page, $assert_session, $name); + $this->saveNewTextFormat($page, $assert_session); + } + + /** + * Create a new text format using CKEditor 5. + */ + public function createNewTextFormat($page, $assert_session, $name = 'ckeditor5') { + $this->drupalGet('admin/config/content/formats/add'); + $page->fillField('name', $name); + $assert_session->waitForText('Machine name'); + $this->assertNotEmpty($assert_session->waitForText($name)); + $page->checkField('roles[authenticated]'); + + if ($name === 'ckeditor5') { + // Enable the HTML filter, at least one HTML restricting filter is needed + // before CKEditor 5 can be enabled. + $this->assertTrue($page->hasUncheckedField('filters[filter_html][status]')); + $page->checkField('filters[filter_html][status]'); + $assert_session->assertWaitOnAjaxRequest(); + + // Add the tags that must be included in the html filter for CKEditor 5. + $allowed_html_field = $assert_session->fieldExists('filters[filter_html][settings][allowed_html]'); + $allowed_html_field->setValue('<p> <br>'); + } + $page->selectFieldOption('editor[editor]', $name); + } + + /** + * Save the new text format. + */ + public function saveNewTextFormat($page, $assert_session) { + $assert_session->assertWaitOnAjaxRequest(); + $page->pressButton('Save configuration'); + $this->assertTrue($assert_session->waitForText('Added text format'), "Confirm new text format saved"); + } + + /** + * Trigger a keyup event on the selected element. + * + * @param string $selector + * The css selector for the element. + * @param string $key + * The keyCode. + */ + protected function triggerKeyUp(string $selector, string $key) { + + $script = <<<JS +(function (selector, key) { + const btn = document.querySelector(selector); + btn.dispatchEvent(new KeyboardEvent('keydown', { key })); + btn.dispatchEvent(new KeyboardEvent('keyup', { key })); +})('{$selector}', '{$key}') + +JS; + + $options = [ + 'script' => $script, + 'args' => [], + ]; + + $this->getSession()->getDriver()->getWebDriverSession()->execute($options); + } + + /** + * Decorates ::fieldValueEquals() to force DrupalCI to provide useful errors. + * + * @param string $field + * Field id|name|label|value. + * @param string $value + * Field value. + * @param \Behat\Mink\Element\TraversableElement $container + * Document to check against. + * + * @throws \Behat\Mink\Exception\ExpectationException + * + * @see \Behat\Mink\WebAssert::fieldValueEquals() + */ + protected function assertHtmlEsqueFieldValueEquals($field, $value, TraversableElement $container = NULL) { + $assert_session = $this->assertSession(); + + $node = $assert_session->fieldExists($field, $container); + $actual = $node->getValue(); + $regex = '/^' . preg_quote($value, '/') . '$/ui'; + + $message = sprintf('The field "%s" value is "%s", but "%s" expected.', $field, htmlspecialchars($actual), htmlspecialchars($value)); + + $assert_session->assert((bool) preg_match($regex, $actual), $message); + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTest.php new file mode 100644 index 000000000000..97a3209250ff --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTest.php @@ -0,0 +1,313 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\editor\Entity\Editor; +use Drupal\file\Entity\File; +use Drupal\filter\Entity\FilterFormat; +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; +use Drupal\Tests\TestFileCreationTrait; +use Drupal\Tests\ckeditor5\Traits\CKEditor5TestTrait; +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Symfony\Component\Validator\ConstraintViolation; + +/** + * @coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload + * @group ckeditor5 + * @internal + */ +class ImageTest extends WebDriverTestBase { + + use CKEditor5TestTrait; + use TestFileCreationTrait; + + /** + * The user to use during testing. + * + * @var \Drupal\user\UserInterface + */ + protected $adminUser; + + /** + * The sample image File entity to embed. + * + * @var \Drupal\file\FileInterface + */ + protected $file; + + /** + * A host entity with a body field to embed images in. + * + * @var \Drupal\node\NodeInterface + */ + protected $host; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'ckeditor5', + 'node', + 'text', + ]; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'classy'; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + FilterFormat::create([ + 'format' => 'test_format', + 'name' => 'Test format', + 'filters' => [ + 'filter_html' => [ + 'status' => TRUE, + 'settings' => [ + 'allowed_html' => '<p> <br> <a href> <img src alt data-entity-uuid data-entity-type height width data-caption data-align>', + ], + ], + 'filter_align' => ['status' => TRUE], + 'filter_caption' => ['status' => TRUE], + ], + ])->save(); + Editor::create([ + 'editor' => 'ckeditor5', + 'format' => 'test_format', + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'uploadImage', + 'sourceEditing', + 'link', + ], + ], + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [], + ], + ], + ], + 'image_upload' => [ + 'status' => TRUE, + 'scheme' => 'public', + 'directory' => 'inline-images', + 'max_size' => '1M', + 'max_dimensions' => ['width' => 100, 'height' => 100], + ], + ])->save(); + $this->assertSame([], array_map( + function (ConstraintViolation $v) { + return (string) $v->getMessage(); + }, + iterator_to_array(CKEditor5::validatePair( + Editor::load('test_format'), + FilterFormat::load('test_format') + )) + )); + $this->adminUser = $this->drupalCreateUser([ + 'use text format test_format', + 'bypass node access', + ]); + + // Create a sample host entity to embed images in. + $this->file = File::create([ + 'uri' => $this->getTestFiles('image')[0]->uri, + ]); + $this->file->save(); + $this->drupalCreateContentType(['type' => 'blog']); + $this->host = $this->createNode([ + 'type' => 'blog', + 'title' => 'Animals with strange names', + 'body' => [ + 'value' => '<p>The pirate is irate.</p>', + 'format' => 'test_format', + ], + ]); + $this->host->save(); + + $this->drupalLogin($this->adminUser); + } + + /** + * Tests linkability of the image CKEditor widget. + * + * Due to the complex overrides that `drupalImage.DrupalImage` is making, this + * is explicitly testing the "editingDowncast" and "dataDowncast" results. + * These are CKEditor 5 concepts. + * + * @see https://ckeditor.com/docs/ckeditor5/latest/framework/guides/architecture/editing-engine.html#conversion + * + * @dataProvider providerLinkability + */ + public function testLinkability(string $image_type, bool $unrestricted) { + assert($image_type === 'inline' || $image_type === 'block'); + + // Disable filter_html. + if ($unrestricted) { + FilterFormat::load('test_format') + ->setFilterConfig('filter_html', ['status' => FALSE]) + ->save(); + } + + // Make the test content have either a block image or an inline image. + $img_tag = '<img alt="drupalimage test image" data-entity-type="file" data-entity-uuid="' . $this->file->uuid() . '" src="' . $this->file->createFileUrl() . '" />'; + $this->host->body->value .= $image_type === 'block' + ? $img_tag + : "<p>$img_tag</p>"; + $this->host->save(); + // Adjust the expectations accordingly. + $expected_widget_class = $image_type === 'block' ? 'image' : 'image-inline'; + + $page = $this->getSession()->getPage(); + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $assert_session = $this->assertSession(); + + // Initial state: the image CKEditor Widget is not selected. + $drupalimage = $assert_session->waitForElementVisible('css', ".ck-content .ck-widget.$expected_widget_class"); + $this->assertNotEmpty($drupalimage); + $this->assertFalse($drupalimage->hasClass('.ck-widget_selected')); + + // Assert the "editingDowncast" HTML before making changes. + $assert_session->elementExists('css', '.ck-content .ck-widget.' . $expected_widget_class . ' > img[src*="image-test.png"][alt="drupalimage test image"]'); + + // Assert the "dataDowncast" HTML before making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertNotEmpty($xpath->query('//img[@alt="drupalimage test image"]')); + $this->assertEmpty($xpath->query('//a')); + + // Assert the link button is present and not pressed. + $link_button = $this->getEditorButton('Link'); + $this->assertSame('false', $link_button->getAttribute('aria-pressed')); + + // Tests linking images. + $drupalimage->click(); + $this->assertTrue($drupalimage->hasClass('ck-widget_selected')); + $this->assertEditorButtonEnabled('Link'); + // Assert structure of image toolbar balloon. + $this->assertVisibleBalloon('.ck-toolbar[aria-label="Image toolbar"]'); + $link_image_button = $this->getBalloonButton('Link image'); + // Click the "Link image" button. + $this->assertSame('false', $link_image_button->getAttribute('aria-pressed')); + $link_image_button->press(); + // Assert structure of link form balloon. + $balloon = $this->assertVisibleBalloon('.ck-link-form'); + $url_input = $balloon->find('css', '.ck-labeled-field-view__input-wrapper .ck-input-text'); + // Fill in link form balloon's <input> and hit "Save". + $url_input->setValue('http://www.drupal.org/association'); + $balloon->pressButton('Save'); + + // Assert the "editingDowncast" HTML after making changes. First assert the + // link exists, then assert the expected DOM structure in detail. + $assert_session->elementExists('css', '.ck-content a[href*="//www.drupal.org/association"]'); + // For inline images, the link is wrapping the widget; for block images the + // link lives inside the widget. (This is how it is implemented upstream, it + // could be implemented differently, we just want to ensure we do not break + // it. Drupal only cares about having its own "dataDowncast", the + // "editingDowncast" is considered an implementation detail.) + $assert_session->elementExists('css', $image_type === 'inline' + ? '.ck-content a[href*="//www.drupal.org/association"] .ck-widget.' . $expected_widget_class . ' > img[src*="image-test.png"][alt="drupalimage test image"]' + : '.ck-content .ck-widget.' . $expected_widget_class . ' a[href*="//www.drupal.org/association"] > img[src*="image-test.png"][alt="drupalimage test image"]' + ); + + // Assert the "dataDowncast" HTML after making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertCount(1, $xpath->query('//a[@href="http://www.drupal.org/association"]/img[@alt="drupalimage test image"]')); + $this->assertEmpty($xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); + + // Add `class="trusted"` to the link. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertEmpty($xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); + $this->pressEditorButton('Source'); + $source_text_area = $assert_session->waitForElement('css', '.ck-source-editing-area textarea'); + $this->assertNotEmpty($source_text_area); + $new_value = str_replace('<a ', '<a class="trusted" ', $source_text_area->getValue()); + $source_text_area->setValue('<p>temp</p>'); + $source_text_area->setValue($new_value); + $this->pressEditorButton('Source'); + + // When unrestricted, additional attributes on links should be retained. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertCount($unrestricted ? 1 : 0, $xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); + + // Save the entity whose text field is being edited. + $page->pressButton('Save'); + + // Assert the HTML the end user sees. + $assert_session->elementExists('css', $unrestricted + ? 'a[href="http://www.drupal.org/association"].trusted img[src*="image-test.png"]' + : 'a[href="http://www.drupal.org/association"] img[src*="image-test.png"]'); + + // Go back to edit the now *linked* <drupal-media>. Everything from this + // point onwards is effectively testing "upcasting" and proving there is no + // data loss. + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + + // Assert the "dataDowncast" HTML before making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertNotEmpty($xpath->query('//img[@alt="drupalimage test image"]')); + $this->assertNotEmpty($xpath->query('//a[@href="http://www.drupal.org/association"]')); + $this->assertNotEmpty($xpath->query('//a[@href="http://www.drupal.org/association"]/img[@alt="drupalimage test image"]')); + $this->assertCount($unrestricted ? 1 : 0, $xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); + + // Tests unlinking images. + $drupalimage->click(); + $this->assertEditorButtonEnabled('Link'); + $this->assertSame('true', $this->getEditorButton('Link')->getAttribute('aria-pressed')); + // Assert structure of image toolbar balloon. + $this->assertVisibleBalloon('.ck-toolbar[aria-label="Image toolbar"]'); + $link_image_button = $this->getBalloonButton('Link image'); + $this->assertSame('true', $link_image_button->getAttribute('aria-pressed')); + $link_image_button->click(); + // Assert structure of link actions balloon. + $this->getBalloonButton('Edit link'); + $unlink_image_button = $this->getBalloonButton('Unlink'); + // Click the "Unlink" button. + $unlink_image_button->click(); + $this->assertSame('false', $this->getEditorButton('Link')->getAttribute('aria-pressed')); + + // Assert the "editingDowncast" HTML after making changes. Assert the + // widget exists but not the link, or *any* link for that matter. Then + // assert the expected DOM structure in detail. + $assert_session->elementExists('css', '.ck-content .ck-widget.' . $expected_widget_class); + // @todo Remove the different assertion for the "inline, unrestricted" case when https://www.drupal.org/project/ckeditor5/issues/3247634 is fixed. + if ($image_type === 'inline' && $unrestricted) { + $assert_session->elementNotExists('css', '.ck-content a[href]'); + $assert_session->elementExists('css', '.ck-content a.trusted'); + } + else { + $assert_session->elementNotExists('css', '.ck-content a'); + } + $assert_session->elementExists('css', '.ck-content .ck-widget.' . $expected_widget_class . ' > img[src*="image-test.png"][alt="drupalimage test image"]'); + + // Assert the "dataDowncast" HTML after making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertCount(0, $xpath->query('//a[@href="http://www.drupal.org/association"]/img[@alt="drupalimage test image"]')); + $this->assertCount(1, $xpath->query('//img[@alt="drupalimage test image"]')); + // @todo Remove the different assertion for the "inline, unrestricted" case when https://www.drupal.org/project/ckeditor5/issues/3247634 is fixed. + if ($image_type === 'inline' && $unrestricted) { + $this->assertCount(1, $xpath->query('//a')); + } + else { + $this->assertCount(0, $xpath->query('//a')); + } + } + + public function providerLinkability(): array { + return [ + 'BLOCK image, restricted' => ['block', FALSE], + 'BLOCK image, unrestricted' => ['block', TRUE], + 'INLINE image, restricted' => ['inline', FALSE], + 'INLINE image, unrestricted' => ['inline', TRUE], + ]; + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/LanguageTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/LanguageTest.php new file mode 100644 index 000000000000..88d3d0fee00b --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/LanguageTest.php @@ -0,0 +1,74 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\language\Entity\ConfigurableLanguage; + +// cspell:ignore คำพูดบล็à¸à¸ + +/** + * Tests for CKEditor 5 UI translations. + * + * @group ckeditor5 + * @internal + */ +class LanguageTest extends CKEditor5TestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'language', + 'locale', + ]; + + /** + * Integration test to ensure that CKEditor 5 UI translations are loaded. + * + * @param string $langcode + * The language code. + * @param string $blockquote_translation + * The expected translation for blockquote toolbar button. + * + * @dataProvider provider + */ + public function test(string $langcode, string $blockquote_translation): void { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + $this->createNewTextFormat($page, $assert_session); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-blockQuote')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-blockQuote', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + $this->saveNewTextFormat($page, $assert_session); + + ConfigurableLanguage::createFromLangcode($langcode)->save(); + $this->config('system.site')->set('default_langcode', $langcode)->save(); + + $this->drupalGet('node/add'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + // Ensure that blockquote button is translated. + $assert_session->elementExists('xpath', "//span[text()='$blockquote_translation']"); + } + + /** + * Data provider for ensuring CKEditor 5 UI translations are loaded. + * + * @return \string[][] + */ + public function provider(): array { + return [ + 'Language code both in Drupal and CKEditor' => [ + 'langcode' => 'th', + 'blockquote_translation' => 'คำพูดบล็à¸à¸', + ], + 'Language code transformed from browser mappings' => [ + 'langcode' => 'zh-hans', + 'blockquote_translation' => 'å—引用', + ], + ]; + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaLibraryTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaLibraryTest.php new file mode 100644 index 000000000000..70b97129f436 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaLibraryTest.php @@ -0,0 +1,253 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\Component\Utility\Html; +use Drupal\editor\Entity\Editor; +use Drupal\file\Entity\File; +use Drupal\filter\Entity\FilterFormat; +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; +use Drupal\media\Entity\Media; +use Drupal\Tests\media\Traits\MediaTypeCreationTrait; +use Drupal\Tests\TestFileCreationTrait; +use Drupal\Tests\ckeditor5\Traits\CKEditor5TestTrait; +use Symfony\Component\Validator\ConstraintViolation; + +/** + * @coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\MediaLibrary + * @group ckeditor5 + * @internal + */ +class MediaLibraryTest extends WebDriverTestBase { + + use MediaTypeCreationTrait; + use TestFileCreationTrait; + use CKEditor5TestTrait; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'classy'; + + /** + * The user to use during testing. + * + * @var \Drupal\user\UserInterface + */ + protected $user; + + /** + * The media item to embed. + * + * @var \Drupal\media\MediaInterface + */ + protected $media; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'ckeditor5', + 'media_library', + 'node', + 'media', + 'text', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + FilterFormat::create([ + 'format' => 'test_format', + 'name' => 'Test format', + 'filters' => [ + 'media_embed' => ['status' => TRUE], + ], + ])->save(); + Editor::create([ + 'editor' => 'ckeditor5', + 'format' => 'test_format', + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'drupalMedia', + 'sourceEditing', + 'undo', + 'redo', + ], + ], + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [], + ], + ], + ], + ])->save(); + $this->assertSame([], array_map( + function (ConstraintViolation $v) { + return (string) $v->getMessage(); + }, + iterator_to_array(CKEditor5::validatePair( + Editor::load('test_format'), + FilterFormat::load('test_format') + )) + )); + + $this->drupalCreateContentType(['type' => 'blog']); + + // Note that media_install() grants 'view media' to all users by default. + $this->user = $this->drupalCreateUser([ + 'use text format test_format', + 'access media overview', + 'create blog content', + ]); + + // Create a media type that starts with the letter a, to test tab order. + $this->createMediaType('image', ['id' => 'arrakis', 'label' => 'Arrakis']); + + // Create a sample media entity to be embedded. + $this->createMediaType('image', ['id' => 'image', 'label' => 'Image']); + File::create([ + 'uri' => $this->getTestFiles('image')[0]->uri, + ])->save(); + $this->media = Media::create([ + 'bundle' => 'image', + 'name' => 'Fear is the mind-killer', + 'field_media_image' => [ + [ + 'target_id' => 1, + 'alt' => 'default alt', + 'title' => 'default title', + ], + ], + ]); + $this->media->save(); + + $arrakis_media = Media::create([ + 'bundle' => 'arrakis', + 'name' => 'Le baron Vladimir Harkonnen', + 'field_media_image' => [ + [ + 'target_id' => 1, + 'alt' => 'Il complote pour détruire le duc Leto', + 'title' => 'Il complote pour détruire le duc Leto', + ], + ], + ]); + $arrakis_media->save(); + + $this->drupalLogin($this->user); + } + + /** + * Tests using drupalMedia button to embed media into CKEditor 5. + */ + public function testButton() { + $this->drupalGet('/node/add/blog'); + $this->waitForEditor(); + $this->pressEditorButton('Insert Drupal Media'); + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + $this->assertNotEmpty($assert_session->waitForId('drupal-modal')); + + // Ensure that the tab order is correct. + $tabs = $page->findAll('css', '.media-library-menu__link'); + $expected_tab_order = [ + 'Show Image media (selected)', + 'Show Arrakis media', + ]; + foreach ($tabs as $key => $tab) { + $this->assertSame($expected_tab_order[$key], $tab->getText()); + } + + $assert_session->pageTextContains('0 of 1 item selected'); + $assert_session->elementExists('css', '.js-media-library-item')->click(); + $assert_session->pageTextContains('1 of 1 item selected'); + $assert_session->elementExists('css', '.ui-dialog-buttonpane')->pressButton('Insert selected'); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-content .ck-widget.drupal-media .media', 1000)); + $this->pressEditorButton('Source'); + $value = $assert_session->elementExists('css', '.ck-source-editing-area textarea')->getValue(); + $dom = Html::load($value); + $xpath = new \DOMXPath($dom); + $drupal_media = $xpath->query('//drupal-media')[0]; + $expected_attributes = [ + 'data-entity-type' => 'media', + 'data-entity-uuid' => $this->media->uuid(), + 'data-align' => 'center', + ]; + foreach ($expected_attributes as $name => $expected) { + $this->assertSame($expected, $drupal_media->getAttribute($name)); + } + $this->pressEditorButton('Source'); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-content .ck-widget.drupal-media .media', 1000)); + $this->assertEditorButtonEnabled('Undo'); + $this->pressEditorButton('Undo'); + $this->assertEmpty($assert_session->waitForElementVisible('css', '.ck-content .ck-widget.drupal-media .media', 1000)); + $this->assertEditorButtonDisabled('Undo'); + $this->pressEditorButton('Redo'); + $this->assertEditorButtonEnabled('Undo'); + } + + /** + * Tests the allowed media types setting on the MediaEmbed filter. + */ + public function testAllowedMediaTypes() { + $test_cases = [ + 'all_media_types' => [], + 'only_image' => ['image' => 'image'], + 'only_arrakis' => ['arrakis' => 'arrakis'], + 'both_items_checked' => [ + 'image' => 'image', + 'arrakis' => 'arrakis', + ], + ]; + + foreach ($test_cases as $allowed_media_types) { + // Update the filter format to set the allowed media types. + FilterFormat::load('test_format') + ->setFilterConfig('media_embed', [ + 'status' => TRUE, + 'settings' => [ + 'default_view_mode' => 'view_mode_1', + 'allowed_media_types' => $allowed_media_types, + 'allowed_view_modes' => [ + 'view_mode_1' => 'view_mode_1', + 'view_mode_2' => 'view_mode_2', + ], + ], + ])->save(); + + // Now test opening the media library from the CKEditor plugin, and + // verify the expected behavior. + $this->drupalGet('/node/add/blog'); + $this->waitForEditor(); + $this->pressEditorButton('Insert Drupal Media'); + + $assert_session = $this->assertSession(); + $this->assertNotEmpty($assert_session->waitForId('media-library-wrapper')); + + if (empty($allowed_media_types) || count($allowed_media_types) === 2) { + $assert_session->elementExists('css', 'li.media-library-menu-image'); + $assert_session->elementExists('css', 'li.media-library-menu-arrakis'); + $assert_session->elementTextContains('css', '.media-library-item__name', 'Fear is the mind-killer'); + } + elseif (count($allowed_media_types) === 1 && !empty($allowed_media_types['image'])) { + // No tabs should appear if there's only one media type available. + $assert_session->elementNotExists('css', 'li.media-library-menu-image'); + $assert_session->elementNotExists('css', 'li.media-library-menu-arrakis'); + $assert_session->elementTextContains('css', '.media-library-item__name', 'Fear is the mind-killer'); + } + elseif (count($allowed_media_types) === 1 && !empty($allowed_media_types['arrakis'])) { + // No tabs should appear if there's only one media type available. + $assert_session->elementNotExists('css', 'li.media-library-menu-image'); + $assert_session->elementNotExists('css', 'li.media-library-menu-arrakis'); + $assert_session->elementTextContains('css', '.media-library-item__name', 'Le baron Vladimir Harkonnen'); + } + } + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php new file mode 100644 index 000000000000..0d3f6fe7542a --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php @@ -0,0 +1,704 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\editor\Entity\Editor; +use Drupal\file\Entity\File; +use Drupal\filter\Entity\FilterFormat; +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; +use Drupal\media\Entity\Media; +use Drupal\Tests\media\Traits\MediaTypeCreationTrait; +use Drupal\Tests\TestFileCreationTrait; +use Drupal\Tests\ckeditor5\Traits\CKEditor5TestTrait; +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Symfony\Component\Validator\ConstraintViolation; + +/** + * @coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Media + * @group ckeditor5 + * @internal + */ +class MediaTest extends WebDriverTestBase { + + use CKEditor5TestTrait; + use MediaTypeCreationTrait; + use TestFileCreationTrait; + + /** + * The user to use during testing. + * + * @var \Drupal\user\UserInterface + */ + protected $adminUser; + + /** + * The sample Media entity to embed. + * + * @var \Drupal\media\MediaInterface + */ + protected $media; + + /** + * A host entity with a body field to embed media in. + * + * @var \Drupal\node\NodeInterface + */ + protected $host; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'ckeditor5', + 'media', + 'node', + 'text', + 'media_test_embed', + ]; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'classy'; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + FilterFormat::create([ + 'format' => 'test_format', + 'name' => 'Test format', + 'filters' => [ + 'filter_html' => [ + 'status' => TRUE, + 'settings' => [ + 'allowed_html' => '<p> <br> <a href> <drupal-media data-entity-type data-entity-uuid alt>', + ], + ], + 'filter_align' => ['status' => TRUE], + 'filter_caption' => ['status' => TRUE], + 'media_embed' => ['status' => TRUE], + ], + ])->save(); + Editor::create([ + 'editor' => 'ckeditor5', + 'format' => 'test_format', + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'sourceEditing', + 'link', + ], + ], + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [], + ], + ], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + ])->save(); + $this->assertSame([], array_map( + function (ConstraintViolation $v) { + return (string) $v->getMessage(); + }, + iterator_to_array(CKEditor5::validatePair( + Editor::load('test_format'), + FilterFormat::load('test_format') + )) + )); + + // Note that media_install() grants 'view media' to all users by default. + $this->adminUser = $this->drupalCreateUser([ + 'use text format test_format', + 'bypass node access', + ]); + + // Create a sample media entity to be embedded. + $this->createMediaType('image', ['id' => 'image']); + File::create([ + 'uri' => $this->getTestFiles('image')[0]->uri, + ])->save(); + $this->media = Media::create([ + 'bundle' => 'image', + 'name' => 'Screaming hairy armadillo', + 'field_media_image' => [ + [ + 'target_id' => 1, + 'alt' => 'default alt', + 'title' => 'default title', + ], + ], + ]); + $this->media->save(); + + // Create a sample host entity to embed media in. + $this->drupalCreateContentType(['type' => 'blog']); + $this->host = $this->createNode([ + 'type' => 'blog', + 'title' => 'Animals with strange names', + 'body' => [ + 'value' => '<drupal-media data-caption="baz" data-entity-type="media" data-entity-uuid="' . $this->media->uuid() . '"></drupal-media>', + 'format' => 'test_format', + ], + ]); + $this->host->save(); + + $this->drupalLogin($this->adminUser); + } + + /** + * Tests that only <drupal-media> tags are processed. + * + * @see \Drupal\Tests\media\Kernel\MediaEmbedFilterTest::testOnlyDrupalMediaTagProcessed() + */ + public function testOnlyDrupalMediaTagProcessed() { + $original_value = $this->host->body->value; + $this->host->body->value = str_replace('drupal-media', 'p', $original_value); + $this->host->save(); + + // Assert that `<p data-* …>` is not upcast into a CKEditor Widget. + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $assert_session = $this->assertSession(); + $this->assertEmpty($assert_session->waitForElementVisible('css', 'img[src*="image-test.png"]', 1000)); + $assert_session->elementNotExists('css', '.ck-widget.drupal-media'); + + $this->host->body->value = $original_value; + $this->host->save(); + + // Assert that `<drupal-media data-* …>` is upcast into a CKEditor Widget. + $this->getSession()->reload(); + $this->waitForEditor(); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'img[src*="image-test.png"]')); + $assert_session->elementExists('css', '.ck-widget.drupal-media'); + } + + /** + * Tests that failed media embed preview requests inform the end user. + */ + public function testErrorMessages() { + // Assert that a request to the `media.filter.preview` route that does not + // result in a 200 response (due to server error or network error) is + // handled in the JavaScript by displaying the expected error message. + // @see core/modules/media/js/media_embed_ckeditor.theme.js + // @see js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js + $this->container->get('state')->set('test_media_filter_controller_throw_error', TRUE); + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $assert_session = $this->assertSession(); + $assert_session->waitForElementVisible('css', '.ck-widget.drupal-media'); + $this->assertEmpty($assert_session->waitForElementVisible('css', 'img[src*="image-test.png"]', 1000)); + $assert_session->elementNotExists('css', '.ck-widget.drupal-media .media'); + $this->assertNotEmpty($assert_session->waitForText('An error occurred while trying to preview the media. Please save your work and reload this page.')); + // Now assert that the error doesn't appear when the override to force an + // error is removed. + $this->container->get('state')->set('test_media_filter_controller_throw_error', FALSE); + $this->getSession()->reload(); + $this->waitForEditor(); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'img[src*="image-test.png"]')); + + // There's a second kind of error message that comes from the back end + // that happens when the media uuid can't be converted to a media preview. + // In this case, the error will appear in a the themeable + // media-embed-error.html template. We have a hook altering the css + // classes to test the twig template is working properly and picking up our + // extra class. + // @see \Drupal\media\Plugin\Filter\MediaEmbed::renderMissingMediaIndicator() + // @see core/modules/media/templates/media-embed-error.html.twig + // @see media_test_embed_preprocess_media_embed_error() + $original_value = $this->host->body->value; + $this->host->body->value = str_replace($this->media->uuid(), 'invalid_uuid', $original_value); + $this->host->save(); + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-widget.drupal-media .this-error-message-is-themeable')); + + // Test when using the classy theme, an additional class is added in + // classy/templates/content/media-embed-error.html.twig. + $this->assertTrue($this->container->get('theme_installer')->install(['classy'])); + $this->config('system.theme') + ->set('default', 'classy') + ->save(); + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-widget.drupal-media .this-error-message-is-themeable.media-embed-error--missing-source')); + // @todo Uncomment this in https://www.drupal.org/project/ckeditor5/issues/3194084. + // @codingStandardsIgnoreLine + //$assert_session->responseContains('classy/css/components/media-embed-error.css'); + + // Test that restoring a valid UUID results in the media embed preview + // displaying. + $this->host->body->value = $original_value; + $this->host->save(); + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'img[src*="image-test.png"]')); + $assert_session->elementNotExists('css', '.ck-widget.drupal-media .this-error-message-is-themeable'); + } + + /** + * The CKEditor Widget must load a preview generated using the default theme. + */ + public function testPreviewUsesDefaultThemeAndIsClientCacheable() { + // Make the node edit form use the admin theme, like on most Drupal sites. + $this->config('node.settings') + ->set('use_admin_theme', TRUE) + ->save(); + + // Allow the test user to view the admin theme. + $this->adminUser->addRole($this->drupalCreateRole(['view the administration theme'])); + $this->adminUser->save(); + + // Configure a different default and admin theme, like on most Drupal sites. + $this->config('system.theme') + ->set('default', 'stable') + ->set('admin', 'classy') + ->save(); + + // Assert that when looking at an embedded entity in the CKEditor Widget, + // the preview is generated using the default theme, not the admin theme. + // @see media_test_embed_entity_view_alter() + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $assert_session = $this->assertSession(); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'img[src*="image-test.png"]')); + $element = $assert_session->elementExists('css', '[data-media-embed-test-active-theme]'); + $this->assertSame('stable', $element->getAttribute('data-media-embed-test-active-theme')); + // Assert that the first preview request transferred >500 B over the wire. + // Then toggle source mode on and off. This causes the CKEditor widget to be + // destroyed and then reconstructed. Assert that during this reconstruction, + // a second request is sent. This second request should have transferred 0 + // bytes: the browser should have cached the response, thus resulting in a + // much better user experience. + $this->assertGreaterThan(500, $this->getLastPreviewRequestTransferSize()); + $this->pressEditorButton('Source'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-source-editing-area')); + // CKEditor 5 is very smart: if no changes were made in the Source Editing + // Area, it will not rerender the contents. In this test, we + // want to verify that Media preview responses are cached on the client side + // so it is essential that rerendering occurs. To achieve this, we append a + // single space. + $source_text_area = $this->getSession()->getPage()->find('css', '[name="body[0][value]"] + .ck-editor textarea'); + $source_text_area->setValue($source_text_area->getValue() . ' '); + $this->pressEditorButton('Source'); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'img[src*="image-test.png"]')); + $this->assertSame(0, $this->getLastPreviewRequestTransferSize()); + } + + /** + * Tests caption editing in the CKEditor widget. + */ + public function testEditableCaption() { + // @todo Port in https://www.drupal.org/project/ckeditor5/issues/3246385 + $this->markTestSkipped('Blocked on https://www.drupal.org/project/ckeditor5/issues/3246385.'); + } + + /** + * Tests the EditorMediaDialog's form elements' #access logic. + */ + public function testDialogAccess() { + // @todo Port in https://www.drupal.org/project/ckeditor5/issues/3245720 + $this->markTestSkipped('Blocked on https://www.drupal.org/project/ckeditor5/issues/3245720.'); + } + + /** + * Tests the CKEditor 5 media plugin can override image media's alt attribute. + */ + public function testAlt() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + // Wait for the media preview to load. + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-widget.drupal-media img')); + // Test that by default no alt attribute is present on the drupal-media + // element. + $this->assertSourceAttributeSame('alt', NULL); + // Test that the preview shows the alt value from the media field's + // alt text. + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-widget.drupal-media img[alt*="default alt"]')); + // Test that clicking the media widget triggers a CKEditor balloon panel + // with a single button to override the alt text. + $this->click('.ck-widget.drupal-media'); + $this->assertVisibleBalloon('[aria-label="Drupal Media toolbar"]'); + // Click the "Override media image text alternative" button. + $this->getBalloonButton('Override media image text alternative')->click(); + $this->assertVisibleBalloon('.ck-text-alternative-form'); + // Assert that the value is currently empty. + // @todo Consider changing this in https://www.drupal.org/project/ckeditor5/issues/3246365. + $alt_override_input = $page->find('css', '.ck-balloon-panel .ck-text-alternative-form input[type=text]'); + $this->assertSame('', $alt_override_input->getValue()); + + // Fill in the alt field and submit. + // cSpell:disable-next-line + $who_is_zartan = 'Zartan is the leader of the Dreadnoks.'; + $alt_override_input->setValue($who_is_zartan); + $this->getBalloonButton('Save')->click(); + + // Assert that the img within the media embed within the CKEditor contains + // the overridden alt text set in the dialog. + // @todo Uncomment this in https://www.drupal.org/project/ckeditor5/issues/3206522. + // @codingStandardsIgnoreLine +// $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-widget.drupal-media img[alt*="' . $who_is_zartan . '"]')); + // Test `aria-label` attribute appears on the widget wrapper. + $assert_session->elementExists('css', '.ck-widget.drupal-media [aria-label="Screaming hairy armadillo"]'); + + // Test that the downcast drupal-media element now has the alt attribute + // entered in the dialog. + $this->assertSourceAttributeSame('alt', $who_is_zartan); + + // The alt field should now display the override instead of the default. + $this->getBalloonButton('Override media image text alternative')->click(); + $this->assertVisibleBalloon('.ck-text-alternative-form'); + $alt_override_input = $page->find('css', '.ck-balloon-panel .ck-text-alternative-form input[type=text]'); + $this->assertSame($who_is_zartan, $alt_override_input->getValue()); + + // Test the process again with a different alt text to make sure it works + // the second time around. + $cobra_commander_bio = 'The supreme leader of the terrorist organization Cobra'; + // Set the alt field to the new alt text. + $alt_override_input->setValue($cobra_commander_bio); + $this->getBalloonButton('Save')->click(); + // Assert that the img within the media embed preview + // within the CKEditor contains the overridden alt text set in the dialog. + // @todo Uncomment this in https://www.drupal.org/project/ckeditor5/issues/3206522. + // @codingStandardsIgnoreLine +// $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'drupal-media img[alt*="' . $cobra_commander_bio . '"]')); + + // Test that the downcast drupal-media element now has the alt attribute + // entered in the dialog. + $this->assertSourceAttributeSame('alt', $cobra_commander_bio); + + // The default value of the alt field should now display the override + // instead of the value on the media image field. + $this->getBalloonButton('Override media image text alternative')->click(); + $this->assertVisibleBalloon('.ck-text-alternative-form'); + $alt_override_input = $page->find('css', '.ck-balloon-panel .ck-text-alternative-form input[type=text]'); + $this->assertSame($cobra_commander_bio, $alt_override_input->getValue()); + + // Test that setting alt value to two double quotes will signal to the + // MediaEmbed filter to unset the attribute on the media image field. + // We intentionally add a space space after the two double quotes to test + // the string is trimmed to two quotes. + $alt_override_input->setValue('"" '); + $this->getBalloonButton('Save')->click(); + // Verify that the two double quote empty alt indicator ('""') set in + // the dialog has successfully resulted in a media image field with the + // alt attribute present but without a value. + // @todo Uncomment this in https://www.drupal.org/project/ckeditor5/issues/3206522. + // @codingStandardsIgnoreLine +// $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'drupal-media img[alt=""]')); + + // Test that the downcast drupal-media element's alt attribute now has the + // empty string indicator. + $this->assertSourceAttributeSame('alt', '""'); + + // Test that setting alt to back to an empty string within the dialog will + // restore the default alt value saved in to the media image field of the + // media item. + $this->getBalloonButton('Override media image text alternative')->click(); + $this->assertVisibleBalloon('.ck-text-alternative-form'); + $alt_override_input = $page->find('css', '.ck-balloon-panel .ck-text-alternative-form input[type=text]'); + $alt_override_input->setValue(''); + $this->getBalloonButton('Save')->click(); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-widget.drupal-media img[alt*="default alt"]')); + + // Test that the downcast drupal-media element no longer has an alt + // attribute. + $this->assertSourceAttributeSame('alt', NULL); + } + + /** + * Tests the CKEditor 5 media plugin loads the translated alt attribute. + */ + public function testTranslationAlt() { + // @todo Port in https://www.drupal.org/project/ckeditor5/issues/3246365 + $this->markTestSkipped('Blocked on https://www.drupal.org/project/ckeditor5/issues/3246365.'); + } + + /** + * Tests linkability of the media CKEditor widget. + * + * Due to the very different HTML markup generated for the editing view and + * the data view, this is explicitly testing the "editingDowncast" and + * "dataDowncast" results. These are CKEditor 5 concepts. + * + * @see https://ckeditor.com/docs/ckeditor5/latest/framework/guides/architecture/editing-engine.html#conversion + * + * @dataProvider providerLinkability + */ + public function testLinkability(bool $unrestricted) { + // Disable filter_html. + if ($unrestricted) { + FilterFormat::load('test_format') + ->setFilterConfig('filter_html', ['status' => FALSE]) + ->save(); + } + + $page = $this->getSession()->getPage(); + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $assert_session = $this->assertSession(); + + // Initial state: the Drupal Media CKEditor Widget is not selected. + $drupalmedia = $assert_session->waitForElementVisible('css', '.ck-content .ck-widget.drupal-media'); + $this->assertNotEmpty($drupalmedia); + $this->assertFalse($drupalmedia->hasClass('.ck-widget_selected')); + + // Assert the "editingDowncast" HTML before making changes. + $assert_session->elementExists('css', '.ck-content .ck-widget.drupal-media > [data-drupal-media-preview]'); + + // Assert the "dataDowncast" HTML before making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertNotEmpty($xpath->query('//drupal-media')); + $this->assertEmpty($xpath->query('//a')); + + // Assert the link button is present and not pressed. + $link_button = $this->getEditorButton('Link'); + $this->assertSame('false', $link_button->getAttribute('aria-pressed')); + + // Wait for the preview to load. + $preview = $assert_session->waitForElement('css', '.ck-content .ck-widget.drupal-media [data-drupal-media-preview="ready"]'); + $this->assertNotEmpty($preview); + + // Tests linking Drupal media. + $drupalmedia->click(); + $this->assertTrue($drupalmedia->hasClass('ck-widget_selected')); + $this->assertEditorButtonEnabled('Link'); + // Assert structure of image toolbar balloon. + $this->assertVisibleBalloon('.ck-toolbar[aria-label="Drupal Media toolbar"]'); + $link_media_button = $this->getBalloonButton('Link media'); + // Click the "Link media" button. + $this->assertSame('false', $link_media_button->getAttribute('aria-pressed')); + $link_media_button->press(); + // Assert structure of link form balloon. + $balloon = $this->assertVisibleBalloon('.ck-link-form'); + $url_input = $balloon->find('css', '.ck-labeled-field-view__input-wrapper .ck-input-text'); + // Fill in link form balloon's <input> and hit "Save". + $url_input->setValue('http://linking-embedded-media.com'); + $balloon->pressButton('Save'); + + // Assert the "editingDowncast" HTML after making changes. Assert the link + // exists, then assert the link exists. Then assert the expected DOM + // structure in detail. + $assert_session->elementExists('css', '.ck-content a[href="http://linking-embedded-media.com"]'); + $assert_session->elementExists('css', '.ck-content .drupal-media.ck-widget > a[href="http://linking-embedded-media.com"] > div[aria-label] > article > div > img[src*="image-test.png"]'); + + // Assert the "dataDowncast" HTML after making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertNotEmpty($xpath->query('//drupal-media')); + $this->assertNotEmpty($xpath->query('//a[@href="http://linking-embedded-media.com"]')); + $this->assertNotEmpty($xpath->query('//a[@href="http://linking-embedded-media.com"]/drupal-media')); + + // Add `class="trusted"` to the link. + $this->assertEmpty($xpath->query('//a[@href="http://linking-embedded-media.com" and @class="trusted"]')); + $this->pressEditorButton('Source'); + $source_text_area = $assert_session->waitForElement('css', '.ck-source-editing-area textarea'); + $this->assertNotEmpty($source_text_area); + $new_value = str_replace('<a ', '<a class="trusted" ', $source_text_area->getValue()); + $source_text_area->setValue('<p>temp</p>'); + $source_text_area->setValue($new_value); + $this->pressEditorButton('Source'); + + // When unrestricted, additional attributes on links should be retained. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertCount($unrestricted ? 1 : 0, $xpath->query('//a[@href="http://linking-embedded-media.com" and @class="trusted"]')); + + // Save the entity whose text field is being edited. + $page->pressButton('Save'); + + // Assert the HTML the end user sees. + + $assert_session->elementExists('css', $unrestricted + ? 'a[href="http://linking-embedded-media.com"].trusted img[src*="image-test.png"]' + : 'a[href="http://linking-embedded-media.com"] img[src*="image-test.png"]'); + + // Go back to edit the now *linked* <drupal-media>. Everything from this + // point onwards is effectively testing "upcasting" and proving there is no + // data loss. + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + + // Assert the "dataDowncast" HTML before making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertNotEmpty($xpath->query('//drupal-media')); + $this->assertNotEmpty($xpath->query('//a[@href="http://linking-embedded-media.com"]')); + $this->assertNotEmpty($xpath->query('//a[@href="http://linking-embedded-media.com"]/drupal-media')); + + // Tests unlinking media. + $drupalmedia->click(); + $this->assertEditorButtonEnabled('Link'); + $this->assertSame('true', $this->getEditorButton('Link')->getAttribute('aria-pressed')); + // Assert structure of Drupal media toolbar balloon. + $this->assertVisibleBalloon('.ck-toolbar[aria-label="Drupal Media toolbar"]'); + $link_media_button = $this->getBalloonButton('Link media'); + $this->assertSame('true', $link_media_button->getAttribute('aria-pressed')); + $link_media_button->click(); + // Assert structure of link actions balloon. + $this->getBalloonButton('Edit link'); + $unlink_image_button = $this->getBalloonButton('Unlink'); + // Click the "Unlink" button. + $unlink_image_button->click(); + $this->assertSame('false', $this->getEditorButton('Link')->getAttribute('aria-pressed')); + + // Assert the "editingDowncast" HTML after making changes. Assert the link + // exists, then assert no link exists. Then assert the expected DOM + // structure in detail. + $assert_session->elementNotExists('css', '.ck-content a'); + $assert_session->elementExists('css', '.ck-content .drupal-media.ck-widget > div[aria-label] > article > div > img[src*="image-test.png"]'); + + // Assert the "dataDowncast" HTML after making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertNotEmpty($xpath->query('//drupal-media')); + $this->assertEmpty($xpath->query('//a')); + } + + public function providerLinkability(): array { + return [ + 'restricted' => [FALSE], + 'unrestricted' => [TRUE], + ]; + } + + /** + * Tests preview route access. + * + * @param bool $media_embed_enabled + * Whether to test with media_embed filter enabled on the text format. + * @param bool $can_use_format + * Whether the logged in user is allowed to use the text format. + * + * @dataProvider previewAccessProvider + */ + public function testEmbedPreviewAccess($media_embed_enabled, $can_use_format) { + // Reconfigure the host entity's text format to suit our needs. + /** @var \Drupal\filter\FilterFormatInterface $format */ + $format = FilterFormat::load($this->host->body->format); + $format->set('filters', [ + 'filter_align' => ['status' => TRUE], + 'filter_caption' => ['status' => TRUE], + 'media_embed' => ['status' => $media_embed_enabled], + ]); + $format->save(); + + $permissions = [ + 'bypass node access', + ]; + if ($can_use_format) { + $permissions[] = $format->getPermissionName(); + } + $this->drupalLogin($this->drupalCreateUser($permissions)); + $this->drupalGet($this->host->toUrl('edit-form')); + + $assert_session = $this->assertSession(); + if ($can_use_format) { + $this->waitForEditor(); + if ($media_embed_enabled) { + // The preview rendering, which in this test will use Classy's + // media.html.twig template, will fail without the CSRF token/header. + // @see ::testEmbeddedMediaPreviewWithCsrfToken() + $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'article.media')); + } + else { + // If the filter isn't enabled, there won't be an error, but the + // preview shouldn't be rendered. + $assert_session->assertWaitOnAjaxRequest(); + $assert_session->elementNotExists('css', 'article.media'); + } + } + else { + $assert_session->pageTextContains('This field has been disabled because you do not have sufficient permissions to edit it.'); + } + } + + /** + * Data provider for ::testEmbedPreviewAccess. + */ + public function previewAccessProvider() { + return [ + 'media_embed filter enabled' => [ + TRUE, + TRUE, + ], + 'media_embed filter disabled' => [ + FALSE, + TRUE, + ], + 'media_embed filter enabled, user not allowed to use text format' => [ + TRUE, + FALSE, + ], + ]; + } + + /** + * Tests alignment integration. + * + * Tests that alignment is reflected onto the CKEditor Widget wrapper, that + * the EditorMediaDialog allows altering the alignment and that the changes + * are reflected on the widget and downcast drupal-media tag. + */ + public function testAlignment() { + // @todo Port in https://www.drupal.org/project/ckeditor5/issues/3246385 + $this->markTestSkipped('Blocked on https://www.drupal.org/project/ckeditor5/issues/3246385.'); + } + + /** + * Tests the EditorMediaDialog can set the data-view-mode attribute. + */ + public function testViewMode() { + // @todo Port in https://www.drupal.org/project/ckeditor5/issues/3245720 + $this->markTestSkipped('Blocked on https://www.drupal.org/project/ckeditor5/issues/3245720.'); + } + + /** + * Verifies value of an attribute on the downcast <drupal-media> element. + * + * Assumes CKEditor is in source mode. + * + * @param string $attribute + * The attribute to check. + * @param mixed $value + * Either a string value or if NULL, asserts that <drupal-media> element + * doesn't have the attribute. + */ + protected function assertSourceAttributeSame($attribute, $value) { + $dom = $this->getEditorDataAsDom(); + $drupal_media = (new \DOMXPath($dom))->query('//drupal-media'); + $this->assertNotEmpty($drupal_media); + if ($value === NULL) { + $this->assertFalse($drupal_media[0]->hasAttribute($attribute)); + } + else { + $this->assertSame($value, $drupal_media[0]->getAttribute($attribute)); + } + } + + /** + * Gets the transfer size of the last preview request. + * + * @return int + * The size of the bytes transferred. + */ + protected function getLastPreviewRequestTransferSize() { + $javascript = <<<JS +(function(){ + return window.performance + .getEntries() + .filter(function (entry) { + return entry.initiatorType == 'fetch' && entry.name.indexOf('/media/test_format/preview') !== -1; + }) + .pop() + .transferSize; +})() +JS; + return $this->getSession()->evaluateScript($javascript); + } + +} diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/QuickEditIntegrationTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/QuickEditIntegrationTest.php new file mode 100644 index 000000000000..feeffc2051f6 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/QuickEditIntegrationTest.php @@ -0,0 +1,288 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Drupal\Tests\field\Traits\EntityReferenceTestTrait; +use Drupal\Tests\quickedit\FunctionalJavascript\QuickEditJavascriptTestBase; +use Symfony\Component\Validator\ConstraintViolation; + +/** + * Tests that Quick Edit can load CKEditor 5. + * + * @group ckeditor5 + * @internal + */ +class QuickEditIntegrationTest extends QuickEditJavascriptTestBase { + + use EntityReferenceTestTrait; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'node', + 'editor', + 'ckeditor5', + 'hold_test', + ]; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * A user with permissions to edit Articles and use Quick Edit. + * + * @var \Drupal\user\UserInterface + */ + protected $contentAuthorUser; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + // Create text format, associate CKEditor 5, validate. + FilterFormat::create([ + 'format' => 'some_format', + 'name' => 'Some format', + 'filters' => [ + 'filter_html' => [ + 'status' => TRUE, + 'settings' => [ + 'allowed_html' => '<p> <br> <h2> <h3> <h4> <h5> <h6> <strong> <em>', + ], + ], + ], + ])->save(); + Editor::create([ + 'format' => 'some_format', + 'editor' => 'ckeditor5', + 'settings' => [ + 'toolbar' => [ + 'items' => ['heading', 'bold', 'italic'], + ], + 'plugins' => [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ], + ], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + ])->save(); + $this->assertSame([], array_map( + function (ConstraintViolation $v) { + return (string) $v->getMessage(); + }, + iterator_to_array(CKEditor5::validatePair( + Editor::load('some_format'), + FilterFormat::load('some_format') + )) + )); + + // Create the Article node type. + $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']); + + // Log in as a content author who can use Quick Edit and edit Articles. + $this->contentAuthorUser = $this->drupalCreateUser([ + 'access contextual links', + 'access toolbar', + 'access in-place editing', + 'access content', + 'create article content', + 'edit any article content', + 'use text format some_format', + ]); + $this->drupalLogin($this->contentAuthorUser); + } + + /** + * Tests that changes can be discarded. + */ + public function testDiscard() { + $page = $this->getSession()->getPage(); + $node = $this->drupalCreateNode([ + 'type' => 'article', + 'title' => t('My Test Node'), + 'body' => [ + 'value' => '<p>Hello world!</p><p>I do not know what to say…</p><p>I wish I were eloquent.</p>', + 'format' => 'some_format', + ], + ]); + + $this->drupalGet('node/' . $node->id()); + + // Initial state. + $this->awaitQuickEditForEntity('node', 1); + $this->assertEntityInstanceStates([ + 'node/1[0]' => 'closed', + ]); + $this->assertEntityInstanceFieldStates('node', 1, 0, [ + 'node/1/title/en/full' => 'inactive', + 'node/1/body/en/full' => 'inactive', + ]); + + // Start in-place editing of the article node. + $this->startQuickEditViaToolbar('node', 1, 0); + $this->assertEntityInstanceStates([ + 'node/1[0]' => 'opened', + ]); + $this->assertQuickEditEntityToolbar((string) $node->label(), NULL); + $this->assertEntityInstanceFieldStates('node', 1, 0, [ + 'node/1/title/en/full' => 'candidate', + 'node/1/body/en/full' => 'candidate', + ]); + + $assert_session = $this->assertSession(); + + // Click the body field. + hold_test_response(TRUE); + $this->click('[data-quickedit-field-id="node/1/body/en/full"]'); + $assert_session->waitForElement('css', '.quickedit-toolbar-field div[id*="body"]'); + $this->assertQuickEditEntityToolbar((string) $node->label(), 'Body'); + $this->assertEntityInstanceFieldStates('node', 1, 0, [ + 'node/1/title/en/full' => 'candidate', + 'node/1/body/en/full' => 'active', + ]); + hold_test_response(FALSE); + + $this->assertEntityInstanceFieldMarkup([ + 'node/1/body/en/full' => '.ck-editor__editable_inline', + ]); + $this->assertSession() + ->elementExists('css', '#quickedit-entity-toolbar .quickedit-toolgroup.wysiwyg-main .ck-toolbar[role="toolbar"] .ck-toolbar__items > .ck-button[type="button"]'); + + // Click the body field. + $this->click('[data-quickedit-field-id="node/1/body/en/full"]'); + $assert_session->waitForElement('css', '.quickedit-toolbar-field div[id*="body"]'); + $this->typeInPlainTextEditor('[data-quickedit-field-id="node/1/body/en/full"]', ' I am not wanted here'); + $assert_session->waitForElement('css', '.quickedit-toolbar-field div[id*="body"].quickedit-changed'); + $this->assertEntityInstanceFieldStates('node', 1, 0, [ + 'node/1/title/en/full' => 'candidate', + 'node/1/body/en/full' => 'changed', + ]); + + $assert_session->pageTextContains('I am not wanted here'); + + // Click the 'Cancel' button. + $page->find('css', '.action-cancel.quickedit-button')->press(); + hold_test_response(TRUE); + + // Click the 'Discard Changes' button. + $discard_changes_button = $page->findAll('css', '.ui-dialog-buttonset .button')[1]; + $this->assertEquals('Discard changes', $discard_changes_button->getText()); + $discard_changes_button->press(); + + $assert_session->pageTextNotContains('I am not wanted here'); + hold_test_response(FALSE); + } + + /** + * Tests if an article node can be in-place edited with Quick Edit. + */ + public function testArticleNode() { + $assert_session = $this->assertSession(); + + $node = $this->drupalCreateNode([ + 'type' => 'article', + 'title' => t('My Test Node'), + 'body' => [ + 'value' => '<p>Hello world!</p><p>I do not know what to say…</p><p>I wish I were eloquent.</p>', + 'format' => 'some_format', + ], + ]); + + $this->drupalGet('node/' . $node->id()); + + // Confirm that the JavaScript that generates IE11 warnings loads. + $assert_session->elementExists('css', 'script[src*="ckeditor5/js/ie11.user.warnings.js"]'); + + // Initial state. + $this->awaitQuickEditForEntity('node', 1); + $this->assertEntityInstanceStates([ + 'node/1[0]' => 'closed', + ]); + $this->assertEntityInstanceFieldStates('node', 1, 0, [ + 'node/1/title/en/full' => 'inactive', + 'node/1/body/en/full' => 'inactive', + ]); + + // Start in-place editing of the article node. + $this->startQuickEditViaToolbar('node', 1, 0); + $this->assertEntityInstanceStates([ + 'node/1[0]' => 'opened', + ]); + $this->assertQuickEditEntityToolbar((string) $node->label(), NULL); + $this->assertEntityInstanceFieldStates('node', 1, 0, [ + 'node/1/title/en/full' => 'candidate', + 'node/1/body/en/full' => 'candidate', + ]); + + // Click the body field. + hold_test_response(TRUE); + $this->click('[data-quickedit-field-id="node/1/body/en/full"]'); + $assert_session->waitForElement('css', '.quickedit-toolbar-field div[id*="body"]'); + $this->assertQuickEditEntityToolbar((string) $node->label(), 'Body'); + $this->assertEntityInstanceFieldStates('node', 1, 0, [ + 'node/1/title/en/full' => 'candidate', + 'node/1/body/en/full' => 'active', + ]); + hold_test_response(FALSE); + + $this->assertEntityInstanceFieldMarkup([ + 'node/1/body/en/full' => '.ck-editor__editable_inline', + ]); + $this->assertSession() + ->elementExists('css', '#quickedit-entity-toolbar .quickedit-toolgroup.wysiwyg-main .ck-toolbar[role="toolbar"] .ck-toolbar__items > .ck-button[type="button"]'); + + // Click the body field. + $this->click('[data-quickedit-field-id="node/1/body/en/full"]'); + $assert_session->waitForElement('css', '.quickedit-toolbar-field div[id*="body"]'); + $this->typeInPlainTextEditor('[data-quickedit-field-id="node/1/body/en/full"]', ' Added text with CKEditor 5'); + $assert_session->waitForElement('css', '.quickedit-toolbar-field div[id*="body"].quickedit-changed'); + $this->assertEntityInstanceFieldStates('node', 1, 0, [ + 'node/1/title/en/full' => 'candidate', + 'node/1/body/en/full' => 'changed', + ]); + + // Click 'Save'. + hold_test_response(TRUE); + $this->saveQuickEdit(); + $this->assertEntityInstanceStates([ + 'node/1[0]' => 'committing', + ]); + + $this->assertEntityInstanceFieldStates('node', 1, 0, [ + 'node/1/title/en/full' => 'candidate', + 'node/1/body/en/full' => 'saving', + ]); + + $this->assertEntityInstanceFieldMarkup([ + 'node/1/body/en/full' => '.quickedit-changed', + ]); + hold_test_response(FALSE); + + $this->assertJsCondition("Drupal.quickedit.collections.entities.get('node/1[0]').get('state') === 'closed'"); + $this->assertEntityInstanceStates([ + 'node/1[0]' => 'closed', + ]); + + // Get the load again and ensure the values are the expected values. + $this->drupalGet('node/' . $node->id()); + $this->assertSession()->pageTextContains('I wish I were eloquent.'); + $this->assertSession()->pageTextContains('Added text with CKEditor 5'); + } + +} diff --git a/core/modules/ckeditor5/tests/src/Kernel/CKEditor4to5UpgradeCompletenessTest.php b/core/modules/ckeditor5/tests/src/Kernel/CKEditor4to5UpgradeCompletenessTest.php new file mode 100644 index 000000000000..ac1d91e16522 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Kernel/CKEditor4to5UpgradeCompletenessTest.php @@ -0,0 +1,257 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\Tests\ckeditor5\Kernel; + +use Drupal\ckeditor\CKEditorPluginConfigurableInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginElementsSubsetInterface; +use Drupal\Component\Utility\NestedArray; +use Drupal\filter\Entity\FilterFormat; +use Drupal\KernelTests\KernelTestBase; + +/** + * @covers \Drupal\ckeditor5\Plugin\CKEditor4To5Upgrade\Core + * @group ckeditor5 + * @internal + */ +class CKEditor4to5UpgradeCompletenessTest extends KernelTestBase { + + /** + * The "CKEditor 4 plugin" plugin manager. + * + * @var \Drupal\ckeditor\CKEditorPluginManager + */ + protected $cke4PluginManager; + + /** + * The "CKEditor 5 plugin" plugin manager. + * + * @var \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface + */ + protected $cke5PluginManager; + + /** + * The CKEditor 4 to 5 upgrade plugin manager. + * + * @var \Drupal\ckeditor5\Plugin\CKEditor4To5UpgradePluginManager + */ + protected $upgradePluginManager; + + /** + * Smart default settings utility. + * + * @var \Drupal\ckeditor5\SmartDefaultSettings + */ + protected $smartDefaultSettings; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'ckeditor', + 'ckeditor5', + // Enabled because of ::testCKEditor5ConfigurableSubsetPlugins(). + 'filter', + // Enabled because of \Drupal\media\Plugin\CKEditorPlugin\DrupalMedia. + 'media', + // Enabled because of \Drupal\media_library\Plugin\CKEditorPlugin\DrupalMediaLibrary. + 'media_library', + // Enabled for media_library. + 'views', + // These modules must be installed for ckeditor5_config_schema_info_alter() + // to work, which in turn is necessary for the plugin definition validation + // logic. + // @see \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition::validateDrupalAspects() + 'filter', + 'editor', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + // The tested service is private; expose it under a public test-only alias. + $this->container->setAlias('sut', 'plugin.manager.ckeditor4to5upgrade.plugin'); + + $this->cke4PluginManager = $this->container->get('plugin.manager.ckeditor.plugin'); + $this->cke5PluginManager = $this->container->get('plugin.manager.ckeditor5.plugin'); + $this->upgradePluginManager = $this->container->get('sut'); + $this->smartDefaultSettings = $this->container->get('ckeditor5.smart_default_settings'); + } + + /** + * Tests that all CKEditor 4 buttons in core have an upgrade path. + */ + public function testButtons(): void { + $cke4_buttons = array_keys(NestedArray::mergeDeepArray($this->cke4PluginManager->getButtons())); + + foreach ($cke4_buttons as $button) { + $equivalent = $this->upgradePluginManager->mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem($button); + $this->assertTrue($equivalent === NULL || is_string($equivalent)); + // The returned equivalent CKEditor 5 toolbar item must exist. + if (is_string($equivalent)) { + $this->assertArrayHasKey($equivalent, $this->cke5PluginManager->getToolbarItems()); + } + } + } + + /** + * Tests that the test-only CKEditor 4 module does not have an upgrade path. + */ + public function testButtonsWithTestOnlyModule(): void { + $this->enableModules(['ckeditor_test']); + $this->cke4PluginManager = $this->container->get('plugin.manager.ckeditor.plugin'); + + $this->expectException(\OutOfBoundsException::class); + $this->expectExceptionMessage('No upgrade path found for the "LlamaCSS" button.'); + + $this->testButtons(); + } + + /** + * Tests that all configurable CKEditor 4 plugins in core have an upgrade path. + */ + public function testSettings(): void { + $cke4_configurable_plugins = []; + foreach ($this->cke4PluginManager->getDefinitions() as $plugin_id => $definition) { + // Special case: DrupalImage. + // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\DrupalImage + // @see \Drupal\editor\Entity\Editor::getImageUploadSettings() + if ($plugin_id === 'drupalimage') { + continue; + } + + if (is_subclass_of($definition['class'], CKEditorPluginConfigurableInterface::class)) { + $cke4_configurable_plugins[] = $plugin_id; + } + } + + foreach ($cke4_configurable_plugins as $plugin_id) { + $cke5_plugin_settings = $this->upgradePluginManager->mapCKEditor4SettingsToCKEditor5Configuration($plugin_id, []); + $this->assertTrue($cke5_plugin_settings === NULL || is_array($cke5_plugin_settings)); + // The returned equivalent CKEditor 5 plugin must exist. + if (is_array($cke5_plugin_settings)) { + $cke5_plugin_id = array_keys($cke5_plugin_settings)[0]; + $this->assertArrayHasKey($cke5_plugin_id, $this->cke5PluginManager->getDefinitions()); + } + } + } + + /** + * Tests that the test-only CKEditor 4 module does not have an upgrade path. + */ + public function testSettingsWithTestOnlyModule(): void { + $this->enableModules(['ckeditor_test']); + $this->cke4PluginManager = $this->container->get('plugin.manager.ckeditor.plugin'); + + $this->expectException(\OutOfBoundsException::class); + $this->expectExceptionMessage('No upgrade path found for the "llama_contextual_and_button" plugin settings.'); + + $this->testSettings(); + } + + /** + * Tests that all elements subset plugins in core have an upgrade path. + */ + public function testCKEditor5ConfigurableSubsetPlugins(): void { + $cke5_elements_subset_plugins = []; + foreach ($this->cke5PluginManager->getDefinitions() as $plugin_id => $definition) { + // Special case: SourceEditing. + // @see \Drupal\ckeditor5\SmartDefaultSettings::computeSubsetSettingForEnabledPluginsWithSubsets() + if ($plugin_id === 'ckeditor5_sourceEditing') { + continue; + } + + if (is_a($definition->getClass(), CKEditor5PluginElementsSubsetInterface::class, TRUE)) { + $cke5_elements_subset_plugins[] = $plugin_id; + } + } + + foreach ($cke5_elements_subset_plugins as $plugin_id) { + $cke5_plugin_configuration = $this->upgradePluginManager->computeCKEditor5PluginSubsetConfiguration($plugin_id, FilterFormat::create()); + $this->assertTrue($cke5_plugin_configuration === NULL || is_array($cke5_plugin_configuration)); + } + } + + /** + * Tests that only one plugin can provide an upgrade path for a button. + */ + public function testOnlyOneUpgradePluginAllowedPerCKEditor4Button(): void { + $this->enableModules(['ckeditor4to5upgrade_plugin_test']); + \Drupal::state()->set('ckeditor4to5upgrade_plugin_test', 'duplicate_button'); + + $this->expectException(\OutOfBoundsException::class); + $this->expectExceptionMessage('The "DrupalImage" CKEditor 4 button is already being upgraded by the "core" CKEditor4To5Upgrade plugin, the "foo" plugin is as well. This conflict needs to be resolved.'); + + $this->upgradePluginManager->mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem('foo'); + } + + /** + * Tests detecting a lying upgrade plugin cke4_button annotation. + */ + public function testLyingUpgradePluginForCKEditor4Button(): void { + $this->enableModules(['ckeditor4to5upgrade_plugin_test']); + \Drupal::state()->set('ckeditor4to5upgrade_plugin_test', 'lying_button'); + + $this->expectException(\LogicException::class); + $this->expectExceptionMessage('The "foo" CKEditor4To5Upgrade plugin claims to provide an upgrade path for the "foo" CKEditor 4 button but does not.'); + + $this->upgradePluginManager->mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem('foo'); + } + + /** + * Tests that only one plugin can provide an upgrade path for plugin settings. + */ + public function testOnlyOneUpgradePluginAllowedPerCKEditor4PluginSettings(): void { + $this->enableModules(['ckeditor4to5upgrade_plugin_test']); + \Drupal::state()->set('ckeditor4to5upgrade_plugin_test', 'duplicate_plugin_settings'); + + $this->expectException(\OutOfBoundsException::class); + $this->expectExceptionMessage('The "stylescombo" CKEditor 4 plugin\'s settings are already being upgraded by the "core" CKEditor4To5Upgrade plugin, the "foo" plugin is as well. This conflict needs to be resolved.'); + + $this->upgradePluginManager->mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem('foo'); + } + + /** + * Tests detecting a lying upgrade plugin cke4_plugin_settings annotation. + */ + public function testLyingUpgradePluginForCKEditor4PluginSettings(): void { + $this->enableModules(['ckeditor4to5upgrade_plugin_test']); + \Drupal::state()->set('ckeditor4to5upgrade_plugin_test', 'lying_plugin_settings'); + + $this->expectException(\LogicException::class); + $this->expectExceptionMessage('The "foo" CKEditor4To5Upgrade plugin claims to provide an upgrade path for the "foo" CKEditor 4 plugin settings but does not.'); + + $this->upgradePluginManager->mapCKEditor4SettingsToCKEditor5Configuration('foo', []); + } + + /** + * Tests that only one plugin can provide an upgrade path for a subset plugin. + */ + public function testOnlyOneUpgradePluginAllowedPerCKEditor5ConfigurableSubsetPlugin(): void { + $this->enableModules(['ckeditor4to5upgrade_plugin_test']); + \Drupal::state()->set('ckeditor4to5upgrade_plugin_test', 'duplicate_subset'); + + $this->expectException(\OutOfBoundsException::class); + $this->expectExceptionMessage('The "ckeditor5_heading" CKEditor 5 plugin\'s elements subset configuration is already being computed by the "core" CKEditor4To5Upgrade plugin, the "foo" plugin is as well. This conflict needs to be resolved.'); + + $this->upgradePluginManager->computeCKEditor5PluginSubsetConfiguration('foo', FilterFormat::create()); + } + + /** + * Tests detecting lying cke5_plugin_elements_subset_configuration annotation. + */ + public function testLyingUpgradePluginForCKEditor5ConfigurableSubsetPlugin(): void { + $this->enableModules(['ckeditor4to5upgrade_plugin_test']); + \Drupal::state()->set('ckeditor4to5upgrade_plugin_test', 'lying_subset'); + + $this->expectException(\LogicException::class); + $this->expectExceptionMessage('The "foo" CKEditor4To5Upgrade plugin claims to provide an upgrade path for the "foo" CKEditor 4 plugin settings but does not.'); + + $this->upgradePluginManager->computeCKEditor5PluginSubsetConfiguration('foo', FilterFormat::create()); + } + +} diff --git a/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php b/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php new file mode 100644 index 000000000000..151cc4336aca --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php @@ -0,0 +1,1117 @@ +<?php + +namespace Drupal\Tests\ckeditor5\Kernel; + +use Composer\Autoload\ClassLoader; +use Drupal\ckeditor5\HTMLRestrictionsUtilities; +use Drupal\ckeditor5\Plugin\CKEditor5Plugin\Heading; +use Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException; +use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\editor\Entity\Editor; +use Drupal\KernelTests\KernelTestBase; +use Drupal\filter\Entity\FilterFormat; +use Drupal\Tests\SchemaCheckTestTrait; +use org\bovigo\vfs\vfsStream; +use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag; +use Symfony\Component\Yaml\Yaml; + +// cspell:ignore layercake everyblock justblockquote + +/** + * Tests different ways of enabling CKEditor 5 plugins. + * + * @group ckeditor5 + * @internal + */ +class CKEditor5PluginManagerTest extends KernelTestBase { + + use SchemaCheckTestTrait; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'system', + 'user', + 'filter', + 'editor', + 'ckeditor5', + 'media', + ]; + + /** + * The manager for "CKEditor 5 plugin" plugins. + * + * @var \Drupal\Component\Plugin\PluginManagerInterface + */ + protected $manager; + + /** + * The typed config manager. + * + * @var \Drupal\Core\Config\TypedConfigManagerInterface + */ + protected $typedConfig; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + FilterFormat::create( + Yaml::parseFile('core/profiles/standard/config/install/filter.format.basic_html.yml') + )->save(); + Editor::create([ + 'format' => 'basic_html', + 'editor' => 'ckeditor5', + ])->save(); + FilterFormat::create( + Yaml::parseFile('core/profiles/standard/config/install/filter.format.full_html.yml') + )->save(); + Editor::create([ + 'format' => 'full_html', + 'editor' => 'ckeditor5', + ])->save(); + $this->manager = $this->container->get('plugin.manager.ckeditor5.plugin'); + $this->typedConfig = $this->container->get('config.typed'); + } + + /** + * @covers \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition::__construct() + * @dataProvider providerTestInvalidPluginDefinitions + */ + public function testInvalidPluginDefinitions(string $yaml, ?string $expected_message, array $additional_files = []): void { + if ($expected_message) { + $this->expectException(InvalidPluginDefinitionException::class); + $this->expectExceptionMessage($expected_message); + } + + $site_directory = ltrim(parse_url($this->siteDirectory)['path'], '/'); + vfsStream::create([ + 'modules' => [ + 'ckeditor5_invalid_plugin' => [ + 'ckeditor5_invalid_plugin.info.yml' => <<<YAML +name: CKEditor 5 Invalid Plugin Definition Test +type: module +core_version_requirement: ^9 +YAML, + 'ckeditor5_invalid_plugin.ckeditor5.yml' => $yaml, + ] + $additional_files, + ], + ], $this->vfsRoot->getChild($site_directory)); + + if (!empty($additional_files)) { + $additional_class_loader = new ClassLoader(); + $additional_class_loader->addPsr4("Drupal\\ckeditor5_invalid_plugin\\Plugin\\CKEditor5Plugin\\", vfsStream::url("root/$site_directory/modules/ckeditor5_invalid_plugin/src/Plugin/CKEditor5Plugin")); + $additional_class_loader->register(TRUE); + } + + $config_sync = \Drupal::service('config.storage'); + $config_data = $this->config('core.extension')->get(); + $config_data['module']['ckeditor5_invalid_plugin'] = 1; + $config_sync->write('core.extension', $config_data); + + // Construct a new container for testing a plugin definition in isolation, + // without needing a separate module directory structure for it, and instead + // allowing it to be provided entirely by a PHPUnit data provider. Inherit + // all definitions from the successfully installed Drupal site for this + // kernel test, but do not use $this->container. This is a hybrid of kernel + // and unit test, to get the best of both worlds: test a unit, but ensure + // the service definitions are in sync. + $root = vfsStream::url("root/$site_directory"); + $container = new ContainerBuilder(new FrozenParameterBag([ + 'app.root' => $root, + 'container.modules' => [ + 'ckeditor5_invalid_plugin' => [ + 'type' => 'module', + 'pathname' => 'modules/ckeditor5_invalid_plugin/ckeditor5_invalid_plugin.info.yml', + 'filename' => NULL, + ] + $this->container->getParameter('container.modules'), + ], + ] + $this->container->getParameterBag()->all())); + $container->setDefinitions($this->container->getDefinitions()); + + // The exception to the above elegance: re-resolve the '%app_root%' param. + // @see \Symfony\Component\DependencyInjection\Compiler\ResolveParameterPlaceHoldersPass + // @see \Drupal\Core\DrupalKernel::guessApplicationRoot() + $container->getDefinition('module_handler')->setArgument(0, '%app.root%'); + + // To discover per-test case config schema YAML files, work around the + // static file cache in \Drupal\Core\Extension\ExtensionDiscovery. There is + // no work-around that allows using both the files on disk and some in vfs. + // To make matters worse, decorating a service within the test only is not + // an option either, because \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition + // is a pure value object, so it uses the global container. Therefore the + // only work-around possible is to manipulate the config schema definition + // cache. + // @todo Remove this in https://www.drupal.org/project/drupal/issues/2961541. + if (isset($additional_files['config']['schema']['ckeditor5_invalid_plugin.schema.yml'])) { + $cache = \Drupal::service('cache.discovery')->get('typed_config_definitions'); + $typed_config_definitions = $cache->data; + $typed_config_definitions += Yaml::parse($additional_files['config']['schema']['ckeditor5_invalid_plugin.schema.yml']); + \Drupal::service('config.typed')->clearCachedDefinitions(); + \Drupal::service('cache.discovery')->set('typed_config_definitions', $typed_config_definitions, $cache->expire, $cache->tags); + } + + $container->get('plugin.manager.ckeditor5.plugin')->getDefinitions(); + } + + /** + * Data provider. + * + * @return \Generator + * Test scenarios. + */ + public function providerTestInvalidPluginDefinitions(): \Generator { + yield 'invalid plugin ID with everything else okay' => [ + <<<YAML +foo_bar: + ckeditor5: + plugins: [] + drupal: + label: TEST + elements: false +YAML, + 'The "foo_bar" CKEditor 5 plugin definition must have a plugin ID that starts with "ckeditor5_invalid_plugin_".', + ]; + + // Now let's show the progressive exceptions that should steer the plugin + // developer in the right direction. + + yield 'only plugin ID, nothing else' => [ + <<<YAML +foo_bar: {} +YAML, + 'The "foo_bar" CKEditor 5 plugin definition must have a plugin ID that starts with "ckeditor5_invalid_plugin_".', + ]; + + yield 'fixed plugin ID' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: {} +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition must contain a "ckeditor5" key.', + ]; + + yield 'added ckeditor5' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: {} +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition must contain a "ckeditor5.plugins" key.', + ]; + + yield 'added ckeditor5.plugins' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition must contain a "drupal" key.', + ]; + + yield 'added drupal' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: {} +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition must contain a "drupal.label" key.', + ]; + + yield 'added drupal.label' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + label: {} +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition has a "drupal.label" value that is not a string nor a TranslatableMarkup instance.', + ]; + + yield 'fixed drupal.label' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + label: "Foo bar" +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition must contain a "drupal.elements" key.', + ]; + + yield 'added drupal.elements' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + label: "Foo bar" + elements: {} +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition has a "drupal.elements" value that is neither a list of HTML tags/attributes nor false.', + ]; + + yield 'wrongly fixed drupal.elements: no valid tags' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + label: "Foo bar" + elements: + - foo + - bar +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition has a value at "drupal.elements.0" that is not an HTML tag with optional attributes: "foo". Expected structure: "<tag allowedAttribute="allowedValue1 allowedValue2">".', + ]; + + yield 'wrongly fixed drupal.elements: multiple tags per entry' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + label: "Foo bar" + elements: + - <foo> <bar> +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition has a value at "drupal.elements.0": multiple tags listed, should be one: "<foo> <bar>".', + ]; + + yield 'fixed drupal.elements' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + label: "Foo bar" + elements: + - <foo> + - <bar> +YAML, + NULL, + ]; + + yield 'alternative fix for drupal.elements' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + label: "Foo bar" + elements: false +YAML, + NULL, + ]; + + yield 'added invalid optional metadata: drupal.admin_library' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/foo_bar +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition has a "drupal.admin_library" key whose asset library "ckeditor5/foo_bar" does not exist.', + ]; + + yield 'fixed drupal.admin_library' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/admin.basic +YAML, + NULL, + ]; + + // Add a plugin class; observe what additional requirements need to be met. + yield 'added plugin class' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + class: Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin\FooBar + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/admin.basic +YAML, + 'The CKEditor 5 "ckeditor5_invalid_plugin_foo_bar" provides a plugin class: "Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin\FooBar", but it does not exist.', + ]; + + yield 'defined minimal (but not yet valid) plugin class' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + class: Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin\FooBar + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/admin.basic +YAML, + 'CKEditor 5 plugins must implement \Drupal\ckeditor5\Plugin\CKEditor5PluginInterface. "ckeditor5_invalid_plugin_foo_bar" does not.', + [ + 'src' => [ + 'Plugin' => [ + 'CKEditor5Plugin' => [ + 'FooBar.php' => <<<'PHP' +<?php +namespace Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin; +class FooBar {} +PHP, + ], + ], + ], + ], + ]; + + yield 'defined minimal and valid plugin class' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + class: Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin\FooBar + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/admin.basic +YAML, + NULL, + [ + 'src' => [ + 'Plugin' => [ + 'CKEditor5Plugin' => [ + 'FooBar.php' => <<<'PHP' +<?php +namespace Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +class FooBar extends CKEditor5PluginDefault {} +PHP, + ], + ], + ], + ], + ]; + + // Make the plugin configurable; observe what additional requirements need + // to be met. + yield 'defined minimal and valid plugin class made configurable but not really anything configurable' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + class: Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin\FooBar + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/admin.basic +YAML, + NULL, + [ + 'src' => [ + 'Plugin' => [ + 'CKEditor5Plugin' => [ + 'FooBar.php' => <<<'PHP' +<?php +namespace Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\Core\Form\FormStateInterface; +class FooBar extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface { + use CKEditor5PluginConfigurableTrait; + public function defaultConfiguration() { return []; } + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { return []; } + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {} + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {} +} +PHP, + ], + ], + ], + ], + ]; + + yield 'defined minimal and valid plugin class made configurable: invalid if config schema is missing' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + class: Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin\FooBar + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/admin.basic +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition is configurable, has non-empty default configuration but has no config schema. Config schema is required for validation.', + [ + 'src' => [ + 'Plugin' => [ + 'CKEditor5Plugin' => [ + 'FooBar.php' => <<<'PHP' +<?php +namespace Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\Core\Form\FormStateInterface; +class FooBar extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface { + use CKEditor5PluginConfigurableTrait; + public function defaultConfiguration() { return ['foo' => FALSE]; } + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { return []; } + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {} + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {} +} +PHP, + ], + ], + ], + ], + ]; + + yield 'defined minimal and valid plugin class made configurable: valid if config schema is present' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + class: Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin\FooBar + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/admin.basic +YAML, + NULL, + [ + 'config' => [ + 'schema' => [ + 'ckeditor5_invalid_plugin.schema.yml' => <<<YAML +ckeditor5.plugin.ckeditor5_invalid_plugin_foo_bar: + type: mapping + label: 'Foo Bar' + mapping: + foo: + type: boolean + label: 'Foo' +YAML, + ], + ], + 'src' => [ + 'Plugin' => [ + 'CKEditor5Plugin' => [ + 'FooBar.php' => <<<'PHP' +<?php +namespace Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\Core\Form\FormStateInterface; +class FooBar extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface { + use CKEditor5PluginConfigurableTrait; + public function defaultConfiguration() { return ['foo' => FALSE]; } + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { return []; } + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {} + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {} +} +PHP, + ], + ], + ], + ], + ]; + + yield 'defined minimal and valid plugin class made configurable: invalid if config schema is present but incomplete' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + class: Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin\FooBar + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/admin.basic +YAML, + 'The "ckeditor5_invalid_plugin_foo_bar" CKEditor 5 plugin definition is configurable, but its default configuration does not match its config schema. The following errors were found: [foo] The configuration property foo.bar doesn\'t exist, [baz] missing schema.', + [ + 'config' => [ + 'schema' => [ + 'ckeditor5_invalid_plugin.schema.yml' => <<<YAML +ckeditor5.plugin.ckeditor5_invalid_plugin_foo_bar: + type: mapping + label: 'Foo Bar' + mapping: + foo: + type: boolean + label: 'Foo' +YAML, + ], + ], + 'src' => [ + 'Plugin' => [ + 'CKEditor5Plugin' => [ + 'FooBar.php' => <<<'PHP' +<?php +namespace Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\Core\Form\FormStateInterface; +class FooBar extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface { + use CKEditor5PluginConfigurableTrait; + public function defaultConfiguration() { return ['foo' => ['bar' => TRUE], 'baz' => FALSE]; } + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { return []; } + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {} + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {} +} +PHP, + ], + ], + ], + ], + ]; + + yield 'defined minimal and valid plugin class made configurable: valid if config schema is present and complete' => [ + <<<YAML +ckeditor5_invalid_plugin_foo_bar: + ckeditor5: + plugins: {} + drupal: + class: Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin\FooBar + label: "Foo bar" + elements: + - <foo> + - <bar> + admin_library: ckeditor5/admin.basic +YAML, + NULL, + [ + 'config' => [ + 'schema' => [ + 'ckeditor5_invalid_plugin.schema.yml' => <<<YAML +ckeditor5.plugin.ckeditor5_invalid_plugin_foo_bar: + type: mapping + label: 'Foo Bar' + mapping: + foo: + type: boolean + label: 'Foo' + bar: + type: boolean + label: 'Bar' +YAML, + ], + ], + 'src' => [ + 'Plugin' => [ + 'CKEditor5Plugin' => [ + 'FooBar.php' => <<<'PHP' +<?php +namespace Drupal\ckeditor5_invalid_plugin\Plugin\CKEditor5Plugin; +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface; +use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait; +use Drupal\Core\Form\FormStateInterface; +class FooBar extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface { + use CKEditor5PluginConfigurableTrait; + public function defaultConfiguration() { return ['foo' => FALSE, 'bar' => FALSE]; } + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { return []; } + public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {} + public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {} +} +PHP, + ], + ], + ], + ], + ]; + } + + /** + * Tests detection of invalid CKEditor5PluginElementsSubsetInterface class. + */ + public function testProvidedElementsInvalidElementSubset(): void { + $this->enableModules(['ckeditor5_plugin_elements_subset']); + + // Configure the sneaky superset plugin to have a random tag as the subset. + $sneaky_plugin_id = 'ckeditor5_plugin_elements_subset_sneakySuperset'; + $random_tag = "<{$this->randomMachineName()}>"; + $text_editor = Editor::create([ + 'format' => 'dummy', + 'editor' => 'ckeditor5', + 'settings' => [ + 'plugins' => [ + $sneaky_plugin_id => ['configured_subset' => [$random_tag]], + ], + ], + 'image_upload' => [], + ]); + + // No exception when getting all provided elements. + $this->assertGreaterThan(0, count($this->manager->getProvidedElements())); + + // No exception when getting the sneaky plugin's provided elements. + $this->assertGreaterThan(0, count($this->manager->getProvidedElements([$sneaky_plugin_id]))); + + // Exception when getting the sneaky plugin's provided elements *and* a text + // editor config entity is passed: only then can a subset be generated based + // on configuration. + $this->expectException(\LogicException::class); + $this->expectExceptionMessage("The \"ckeditor5_plugin_elements_subset_sneakySuperset\" CKEditor 5 plugin implements ::getElementsSubset() and did not return a subset, the following tags are absent from the plugin definition: \"$random_tag\"."); + $this->manager->getProvidedElements([$sneaky_plugin_id], $text_editor); + } + + /** + * Tests the enabling of plugins. + */ + public function testEnabledPlugins() { + $editor = Editor::load('basic_html'); + + // Case 1: no extra CKEditor 5 plugins. + $definitions = array_keys($this->manager->getEnabledDefinitions($editor)); + $default_plugins = [ + 'ckeditor5_bold', + 'ckeditor5_emphasis', + 'ckeditor5_essentials', + 'ckeditor5_heading', + 'ckeditor5_paragraph', + 'ckeditor5_pasteFromOffice', + ]; + $this->assertSame($default_plugins, $definitions, 'No CKEditor 5 plugins found besides the built-in ones.'); + $default_libraries = [ + 'ckeditor5/drupal.ckeditor5', + 'ckeditor5/drupal.ckeditor5.emphasis', + 'ckeditor5/drupal.ckeditor5.internal', + 'core/ckeditor5.basic', + 'core/ckeditor5.internal', + 'core/ckeditor5.pasteFromOffice', + ]; + $this->assertSame($default_libraries, $this->manager->getEnabledLibraries($editor)); + + // Enable the CKEditor 5 Test module, which has the layercake plugin and + // clear the editor manager's static cache so that it is picked up. + $this->enableModules(['ckeditor5_test']); + $this->manager = $this->container->get('plugin.manager.ckeditor5.plugin'); + $this->manager->clearCachedDefinitions(); + + // Case 2: The CKEditor 5 layercake plugin is available and library should + // NOT be loaded if its toolbar items are not enabled. + $this->assertSame($default_plugins, array_keys($this->manager->getEnabledDefinitions($editor))); + $this->assertSame($default_libraries, $this->manager->getEnabledLibraries($editor)); + + // Case 3: The CKEditor 5 layercake plugin is available and library should + // be loaded without having to enable plugins. + $settings = $editor->getSettings(); + $settings['toolbar']['items'][] = 'simpleBox'; + $editor->setSettings($settings); + $plugin_ids = array_keys($this->manager->getEnabledDefinitions($editor)); + $default_plugins_with_layercake = array_merge($default_plugins, ['ckeditor5_test_layercake']); + + // Sort on plugin id. + asort($default_plugins_with_layercake); + $this->assertSame(array_values($default_plugins_with_layercake), $plugin_ids); + $default_libraries_with_layercake = array_merge($default_libraries, ['ckeditor5_test/layercake']); + sort($default_libraries_with_layercake); + $this->assertSame($default_libraries_with_layercake, $this->manager->getEnabledLibraries($editor)); + + // Enable media embed filter which the CKEditor 5 media plugin requires. + $editor->getFilterFormat()->setFilterConfig('media_embed', ['status' => TRUE])->save(); + + // Case 4: The CKEditor 5 media plugin should be enabled and the library + // should be available now that the media_embed is enabled. + $plugin_ids = array_keys($this->manager->getEnabledDefinitions($editor)); + $expected_plugins = array_merge($default_plugins, [ + 'ckeditor5_test_layercake', + 'media_media', + ]); + sort($expected_plugins); + $this->assertSame($expected_plugins, $plugin_ids); + $expected_libraries = array_merge($default_libraries, [ + 'ckeditor5/drupal.ckeditor5.media', + 'ckeditor5_test/layercake', + ]); + sort($expected_libraries); + $this->assertSame($expected_libraries, $this->manager->getEnabledLibraries($editor)); + + // Enable the CKEditor 5 Plugin Conditions Test module, which has the + // ckeditor5_plugin_conditions_test_plugins_condition plugin which is + // conditionally enabled. Clear the editor manager's static cache so that it + // is picked up. + $this->enableModules(['ckeditor5_plugin_conditions_test']); + $this->manager = $this->container->get('plugin.manager.ckeditor5.plugin'); + $this->manager->clearCachedDefinitions(); + + // Case 5: just installing the ckeditor5_plugin_conditions_test module does + // not enable its conditionally enabled plugin. + $this->assertSame($expected_plugins, $plugin_ids); + $this->assertSame($expected_libraries, $this->manager->getEnabledLibraries($editor)); + + // Case 6: placing the table plugin's button enables the table plugin, but + // also implicitly enables the conditionally enabled plugin. + $settings['toolbar']['items'][] = 'insertTable'; + $editor->setSettings($settings); + $plugin_ids = array_keys($this->manager->getEnabledDefinitions($editor)); + $expected_plugins = array_merge($expected_plugins, ['ckeditor5_table', 'ckeditor5_plugin_conditions_test_plugins_condition']); + sort($expected_plugins); + $this->assertSame(array_values($expected_plugins), $plugin_ids); + $expected_libraries = array_merge($default_libraries, [ + 'ckeditor5/drupal.ckeditor5.media', + 'ckeditor5_test/layercake', + 'core/ckeditor5.table', + ]); + sort($expected_libraries); + $this->assertSame($expected_libraries, $this->manager->getEnabledLibraries($editor)); + + // Case 7: GHS is only enabled for Full HTML (or any other text format that + // has no TYPE_HTML_RESTRICTOR filters). + $editor = Editor::load('full_html'); + $definitions = array_keys($this->manager->getEnabledDefinitions($editor)); + $default_plugins = [ + 'ckeditor5_bold', + 'ckeditor5_emphasis', + 'ckeditor5_essentials', + 'ckeditor5_heading', + 'ckeditor5_htmlSupport', + 'ckeditor5_paragraph', + 'ckeditor5_pasteFromOffice', + ]; + $this->assertSame($default_plugins, $definitions, 'No CKEditor 5 plugins found besides the built-in ones.'); + $default_libraries = [ + 'ckeditor5/drupal.ckeditor5', + 'ckeditor5/drupal.ckeditor5.emphasis', + 'ckeditor5/drupal.ckeditor5.internal', + 'core/ckeditor5.basic', + 'core/ckeditor5.htmlSupport', + 'core/ckeditor5.internal', + 'core/ckeditor5.pasteFromOffice', + ]; + $this->assertSame($default_libraries, $this->manager->getEnabledLibraries($editor)); + } + + /** + * Tests the parsing of CKEditor 5 plugin element config. + * + * @param string[] $plugins + * The plugins to parse the elements list from. + * @param array $text_editor_settings + * The text editor settings. + * @param array $expected_elements + * An array of expected allowed elements an attributes in the structure + * used by filter_html. + * @param string $expected_readable_string + * The expected allowed tags and attributes as a string, typically used + * in the filter_html "Allowed tags" field. + * + * @covers \Drupal\ckeditor5\Plugin\CKEditor5PluginManager::getProvidedElements + * @covers \Drupal\ckeditor5\HTMLRestrictionsUtilities::toReadableElements + * @dataProvider providerTestProvidedElements + */ + public function testProvidedElements(array $plugins, array $text_editor_settings, array $expected_elements, string $expected_readable_string) { + $this->enableModules(['ckeditor5_plugin_elements_test']); + + $text_editor = Editor::create([ + 'format' => 'dummy', + 'editor' => 'ckeditor5', + 'settings' => $text_editor_settings, + 'image_upload' => [], + ]); + $this->assertConfigSchema( + $this->typedConfig, + $text_editor->getConfigDependencyName(), + $text_editor->toArray() + ); + + $provided_elements = $this->manager->getProvidedElements($plugins, $text_editor); + $this->assertSame($expected_elements, $provided_elements); + $readable_string = implode(' ', HTMLRestrictionsUtilities::toReadableElements($provided_elements)); + $this->assertSame($expected_readable_string, $readable_string); + } + + /** + * Provides uses cases enabling different elements and the expected results. + */ + public function providerTestProvidedElements(): array { + $text_align_classes = [ + 'text-align-left' => TRUE, + 'text-align-center' => TRUE, + 'text-align-right' => TRUE, + 'text-align-justify' => TRUE, + ]; + + return [ + 'sourceEditing' => [ + 'plugins' => ['ckeditor5_sourceEditing'], + 'text_editor_settings' => [], + 'expected_elements' => [], + 'expected_readable_string' => '', + ], + 'language' => [ + 'plugins' => ['ckeditor5_language'], + 'text_editor_settings' => [], + 'expected_elements' => [ + 'span' => [ + 'lang' => TRUE, + 'dir' => TRUE, + ], + ], + 'expected_readable_string' => '<span lang dir>', + ], + 'alignment and heading' => [ + 'plugins' => [ + 'ckeditor5_alignment', + 'ckeditor5_heading', + 'ckeditor5_paragraph', + ], + 'text_editor_settings' => [ + 'plugins' => [ + 'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION, + ], + ], + 'expected_elements' => [ + 'p' => [ + 'class' => $text_align_classes, + ], + 'h2' => [ + 'class' => $text_align_classes, + ], + 'h3' => [ + 'class' => $text_align_classes, + ], + 'h4' => [ + 'class' => $text_align_classes, + ], + 'h5' => [ + 'class' => $text_align_classes, + ], + 'h6' => [ + 'class' => $text_align_classes, + ], + ], + 'expected_readable_string' => '<p class="text-align-left text-align-center text-align-right text-align-justify"> <h2 class="text-align-left text-align-center text-align-right text-align-justify"> <h3 class="text-align-left text-align-center text-align-right text-align-justify"> <h4 class="text-align-left text-align-center text-align-right text-align-justify"> <h5 class="text-align-left text-align-center text-align-right text-align-justify"> <h6 class="text-align-left text-align-center text-align-right text-align-justify">', + ], + 'alignment and heading, but all class values allowed for headings' => [ + 'plugins' => [ + 'ckeditor5_alignment', + 'ckeditor5_heading', + 'ckeditor5_paragraph', + 'ckeditor5_plugin_elements_test_headingsUseClassAnyValue', + ], + 'text_editor_settings' => [ + 'plugins' => [ + 'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION, + ], + ], + 'expected_elements' => [ + 'p' => [ + 'class' => $text_align_classes, + ], + 'h2' => [ + 'class' => TRUE, + ], + 'h3' => [ + 'class' => TRUE, + ], + 'h4' => [ + 'class' => TRUE, + ], + 'h5' => [ + 'class' => TRUE, + ], + 'h6' => [ + 'class' => TRUE, + ], + 'h1' => [ + 'class' => TRUE, + ], + ], + 'expected_readable_string' => '<p class="text-align-left text-align-center text-align-right text-align-justify"> <h2 class> <h3 class> <h4 class> <h5 class> <h6 class> <h1 class>', + ], + 'blockquote combo' => [ + 'plugins' => [ + 'ckeditor5_plugin_elements_test_blockquoteCombo', + 'ckeditor5_paragraph', + ], + 'text_editor_settings' => [ + 'plugins' => [ + 'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION, + ], + ], + 'expected_elements' => [ + 'p' => [ + 'data-everyblock' => TRUE, + ], + 'blockquote' => [ + 'data-justblockquote' => TRUE, + 'data-everyblock' => TRUE, + ], + ], + 'expected_readable_string' => '<p data-everyblock> <blockquote data-justblockquote data-everyblock>', + ], + 'headings plus headings with attributes' => [ + 'plugins' => [ + 'ckeditor5_plugin_elements_test_headingsWithOtherAttributes', + 'ckeditor5_heading', + ], + 'text_editor_settings' => [ + 'plugins' => [ + 'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION, + ], + ], + 'expected_elements' => [ + 'h2' => [ + 'class' => [ + 'additional-allowed-class' => TRUE, + ], + ], + 'h3' => [ + 'data-just-h3' => TRUE, + 'data-just-h3-limited' => [ + 'i-am-the-only-allowed-value' => TRUE, + ], + ], + 'h4' => FALSE, + 'h5' => [ + 'data-just-h5-limited' => [ + 'first-allowed-value' => TRUE, + 'second-allowed-value' => TRUE, + ], + ], + 'h6' => FALSE, + 'h1' => [ + 'data-just-h1' => TRUE, + ], + ], + 'expected_readable_string' => '<h2 class="additional-allowed-class"> <h3 data-just-h3 data-just-h3-limited="i-am-the-only-allowed-value"> <h4> <h5 data-just-h5-limited="first-allowed-value second-allowed-value"> <h6> <h1 data-just-h1>', + ], + 'headings plus headings with attributes and alignment' => [ + 'plugins' => [ + 'ckeditor5_plugin_elements_test_headingsWithOtherAttributes', + 'ckeditor5_heading', + 'ckeditor5_alignment', + ], + 'text_editor_settings' => [ + 'plugins' => [ + 'ckeditor5_heading' => Heading::DEFAULT_CONFIGURATION, + ], + ], + 'expected_elements' => [ + 'h2' => [ + 'class' => ['additional-allowed-class' => TRUE] + $text_align_classes, + ], + 'h3' => [ + 'data-just-h3' => TRUE, + 'data-just-h3-limited' => [ + 'i-am-the-only-allowed-value' => TRUE, + ], + 'class' => $text_align_classes, + ], + 'h4' => [ + 'class' => $text_align_classes, + ], + 'h5' => [ + 'data-just-h5-limited' => [ + 'first-allowed-value' => TRUE, + 'second-allowed-value' => TRUE, + ], + 'class' => $text_align_classes, + ], + 'h6' => [ + 'class' => $text_align_classes, + ], + 'h1' => [ + 'data-just-h1' => TRUE, + 'class' => $text_align_classes, + ], + ], + 'expected_readable_string' => '<h2 class="additional-allowed-class text-align-left text-align-center text-align-right text-align-justify"> <h3 data-just-h3 data-just-h3-limited="i-am-the-only-allowed-value" class="text-align-left text-align-center text-align-right text-align-justify"> <h4 class="text-align-left text-align-center text-align-right text-align-justify"> <h5 data-just-h5-limited="first-allowed-value second-allowed-value" class="text-align-left text-align-center text-align-right text-align-justify"> <h6 class="text-align-left text-align-center text-align-right text-align-justify"> <h1 data-just-h1 class="text-align-left text-align-center text-align-right text-align-justify">', + ], + ]; + } + + /** + * Tests the logic of findPluginSupportingElement. + * + * When multiple plugins support a given tag, this method decides which plugin + * to return based on which provides the broadest attribute support. + * + * @covers \Drupal\ckeditor5\Plugin\CKEditor5PluginManager::findPluginSupportingElement + * + * @dataProvider providerTestPluginSupportingElement + */ + public function testPluginSupportingElement(string $tag, ?string $expected_plugin_id) { + $this->enableModules(['ckeditor5_definition_supporting_element']); + $plugin_id = $this->manager->findPluginSupportingElement($tag); + $this->assertSame($expected_plugin_id, $plugin_id); + } + + /** + * Provides use cases for findPluginSupportingElement(). + */ + public function providerTestPluginSupportingElement() { + return [ + 'tag that belongs to a superset' => [ + 'tag' => 'h2', + 'expected_plugin' => 'ckeditor5_heading', + ], + 'tag only available as tag' => [ + 'tag' => 'nav', + 'expected_plugin' => 'ckeditor5_definition_supporting_element_just_nav', + ], + 'between just tag, full use of class, and constrained use of class, return full use of class' => [ + 'tag' => 'article', + 'expected_plugin' => 'ckeditor5_definition_supporting_element_article_class', + ], + 'between just tag and full use of class, return full use of class' => [ + 'tag' => 'footer', + 'expected_plugin' => 'ckeditor5_definition_supporting_element_footer_class', + ], + 'between just tag and constrained use of class, return constrained use of class' => [ + 'tag' => 'aside', + 'expected_plugin' => 'ckeditor5_definition_supporting_element_aside_class_with_values', + ], + 'between full use of class and constrained use of class, return full use of class' => [ + 'tag' => 'main', + 'expected_plugin' => 'ckeditor5_definition_supporting_element_main_class', + ], + 'between one plugin allows one attribute, second allows two, return the one that allows two' => [ + 'tag' => 'figure', + 'expected_plugin' => 'ckeditor5_definition_supporting_element_figure_two_attrib', + ], + 'between one plugin allows one attribute, second allows two (but appearing in opposite order), still return the one that allows two' => [ + 'tag' => 'dialog', + 'expected_plugin' => 'ckeditor5_definition_supporting_element_dialog_two_attrib', + ], + 'tag that belongs to a plugin with conditions' => [ + 'tag' => 'drupal-media', + 'expected_plugin' => NULL, + ], + ]; + } + +} diff --git a/core/modules/ckeditor5/tests/src/Kernel/CKEditor5ValidationTestTrait.php b/core/modules/ckeditor5/tests/src/Kernel/CKEditor5ValidationTestTrait.php new file mode 100644 index 000000000000..16c43e5ba0ec --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Kernel/CKEditor5ValidationTestTrait.php @@ -0,0 +1,50 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\Tests\ckeditor5\Kernel; + +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\editor\EditorInterface; +use Drupal\filter\FilterFormatInterface; + +/** + * Defines a trait for testing CKEditor 5 validity. + */ +trait CKEditor5ValidationTestTrait { + + /** + * Decorator for CKEditor5::validatePair() that returns an assertable array. + * + * @param \Drupal\editor\EditorInterface $text_editor + * The paired text editor to validate. + * @param \Drupal\filter\FilterFormatInterface $text_format + * The paired text format to validate. + * @param bool $all_compatibility_problems + * Only fundamental compatibility violations are returned unless TRUE. + * + * @return array + * An array with property paths as keys and violation messages as values. + * + * @see \Drupal\ckeditor5\Plugin\Editor\CKEditor5::validatePair + */ + private function validatePairToViolationsArray(EditorInterface $text_editor, FilterFormatInterface $text_format, bool $all_compatibility_problems): array { + $violations = CKEditor5::validatePair($text_editor, $text_format, $all_compatibility_problems); + $actual_violations = []; + foreach ($violations as $violation) { + if (!isset($actual_violations[$violation->getPropertyPath()])) { + $actual_violations[$violation->getPropertyPath()] = (string) $violation->getMessage(); + } + else { + // Transform value from string to array. + if (is_string($actual_violations[$violation->getPropertyPath()])) { + $actual_violations[$violation->getPropertyPath()] = (array) $actual_violations[$violation->getPropertyPath()]; + } + // And append. + $actual_violations[$violation->getPropertyPath()][] = (string) $violation->getMessage(); + } + } + return $actual_violations; + } + +} diff --git a/core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php b/core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php new file mode 100644 index 000000000000..9a598b165804 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php @@ -0,0 +1,78 @@ +<?php + +namespace Drupal\Tests\ckeditor5\Kernel; + +use Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition; +use Drupal\KernelTests\KernelTestBase; + +/** + * Tests configurable plugins. + * + * @group ckeditor5 + * @internal + */ +class ConfigurablePluginTest extends KernelTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'ckeditor5', + // These modules must be installed for ckeditor5_config_schema_info_alter() + // to work, which in turn is necessary for the plugin definition validation + // logic. + // @see \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition::validateDrupalAspects() + 'filter', + 'editor', + ]; + + /** + * The manager for "CKEditor 5 plugin" plugins. + * + * @var \Drupal\Component\Plugin\PluginManagerInterface + */ + protected $manager; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + $this->manager = $this->container->get('plugin.manager.ckeditor5.plugin'); + } + + /** + * Tests default settings for configurable CKEditor 5 plugins. + */ + public function testDefaults() { + $all_definitions = $this->manager->getDefinitions(); + $configurable_definitions = array_filter($all_definitions, function (CKEditor5PluginDefinition $definition): bool { + return $definition->isConfigurable(); + }); + $default_plugin_settings = []; + foreach (array_keys($configurable_definitions) as $plugin_name) { + $default_plugin_settings[$plugin_name] = $this->manager->getPlugin($plugin_name, NULL)->defaultConfiguration(); + } + + $expected_default_plugin_settings = [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ], + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [], + ], + 'ckeditor5_language' => [ + 'language_list' => 'un', + ], + 'ckeditor5_imageUpload' => [], + ]; + $this->assertSame($expected_default_plugin_settings, $default_plugin_settings); + } + +} diff --git a/core/modules/ckeditor5/tests/src/Kernel/LanguageTest.php b/core/modules/ckeditor5/tests/src/Kernel/LanguageTest.php new file mode 100644 index 000000000000..c5bfa506ac07 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Kernel/LanguageTest.php @@ -0,0 +1,122 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\Tests\ckeditor5\Kernel; + +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Drupal\KernelTests\KernelTestBase; +use Drupal\language\Entity\ConfigurableLanguage; +use Symfony\Component\Yaml\Yaml; + +/** + * Tests language resolving for CKEditor 5. + * + * @group ckeditor5 + * @internal + */ +class LanguageTest extends KernelTestBase { + + /** + * The CKEditor 5 plugin. + * + * @var \Drupal\ckeditor5\Plugin\Editor\CKEditor5 + */ + protected $ckeditor5; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'system', + 'user', + 'ckeditor5', + 'editor', + 'filter', + 'language', + 'locale', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + $this->ckeditor5 = $this->container->get('plugin.manager.editor')->createInstance('ckeditor5'); + + FilterFormat::create( + Yaml::parseFile('core/profiles/standard/config/install/filter.format.basic_html.yml') + )->save(); + Editor::create([ + 'format' => 'basic_html', + 'editor' => 'ckeditor5', + ])->save(); + + $this->installConfig(['language']); + } + + /** + * Ensure that languages are resolved correctly. + * + * @param string $drupal_langcode + * The language code in Drupal. + * @param string $cke5_langcode + * The language code in CKEditor 5. + * @param bool $is_missing_mapping + * Whether this mapping is expected to be missing from language.mappings. + * + * @dataProvider provider + */ + public function test(string $drupal_langcode, string $cke5_langcode, bool $is_missing_mapping = FALSE): void { + $editor = Editor::load('basic_html'); + + ConfigurableLanguage::createFromLangcode($drupal_langcode)->save(); + $this->config('system.site')->set('default_langcode', $drupal_langcode)->save(); + + if ($is_missing_mapping) { + // CKEditor 5's UI language falls back to English, until the language + // mapping is expanded. + $settings = $this->ckeditor5->getJSSettings($editor); + $this->assertSame('en', $settings['language']['ui']); + + // Expand the language mapping. + $config = $this->config('language.mappings'); + $mapping = $config->get('map'); + $mapping += [$cke5_langcode => $drupal_langcode]; + $config->set('map', $mapping)->save(); + } + + $settings = $this->ckeditor5->getJSSettings($editor); + $this->assertSame($cke5_langcode, $settings['language']['ui']); + } + + /** + * Provides a list of language code pairs. + * + * @return \string[][] + */ + public function provider(): array { + $random_langcode = $this->randomMachineName(); + return [ + 'Language code transformed from browser mappings' => [ + 'drupal_langcode' => 'pt-pt', + 'cke_langcode' => 'pt', + ], + 'Language code transformed from browser mappings 2' => [ + 'drupal_langcode' => 'zh-hans', + 'cke_langcode' => 'zh-cn', + ], + 'Language code both in Drupal and CKEditor' => [ + 'drupal_langcode' => 'fi', + 'cke_langcode' => 'fi', + ], + 'Language code not in Drupal but in CKEditor 5 requires new language.mappings entry' => [ + 'drupal_langcode' => $random_langcode, + 'cke_langcode' => 'de-ch', + 'is_missing_mapping' => TRUE, + ], + ]; + } + +} diff --git a/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php b/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php new file mode 100644 index 000000000000..d03e2c98f968 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php @@ -0,0 +1,682 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\Tests\ckeditor5\Kernel; + +use Drupal\ckeditor5\HTMLRestrictionsUtilities; +use Drupal\Component\Utility\NestedArray; +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Drupal\KernelTests\KernelTestBase; +use Drupal\Tests\SchemaCheckTestTrait; +use Symfony\Component\Yaml\Yaml; + +/** + * @covers \Drupal\ckeditor5\SmartDefaultSettings::computeSmartDefaultSettings() + * @group ckeditor5 + * @internal + */ +class SmartDefaultSettingsTest extends KernelTestBase { + + use SchemaCheckTestTrait; + use CKEditor5ValidationTestTrait; + + /** + * The manager for "CKEditor 5 plugin" plugins. + * + * @var \Drupal\Component\Plugin\PluginManagerInterface + */ + protected $manager; + + /** + * The typed config manager. + * + * @var \Drupal\Core\Config\TypedConfigManagerInterface + */ + protected $typedConfig; + + /** + * Smart default settings utility. + * + * @var \Drupal\ckeditor5\SmartDefaultSettings + */ + protected $smartDefaultSettings; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'ckeditor', + 'ckeditor_test', + 'ckeditor5', + 'editor', + 'filter', + 'user', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + $this->manager = $this->container->get('plugin.manager.ckeditor5.plugin'); + $this->typedConfig = $this->container->get('config.typed'); + $this->smartDefaultSettings = $this->container->get('ckeditor5.smart_default_settings'); + + FilterFormat::create( + Yaml::parseFile('core/profiles/standard/config/install/filter.format.full_html.yml') + ) + ->setSyncing(TRUE) + ->save(); + Editor::create( + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.full_html.yml') + )->save(); + + $basic_html_format = Yaml::parseFile('core/profiles/standard/config/install/filter.format.basic_html.yml'); + FilterFormat::create($basic_html_format)->save(); + Editor::create( + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') + )->save(); + + FilterFormat::create( + Yaml::parseFile('core/profiles/standard/config/install/filter.format.restricted_html.yml') + )->save(); + + $allowed_html_parents = ['filters', 'filter_html', 'settings', 'allowed_html']; + $current_value = NestedArray::getValue($basic_html_format, $allowed_html_parents); + $new_value = str_replace(['<h4 id> ', '<h6 id> '], '', $current_value); + $basic_html_format_without_h4_h6 = $basic_html_format; + $basic_html_format_without_h4_h6['name'] .= ' (without H4 and H6)'; + $basic_html_format_without_h4_h6['format'] = 'basic_html_without_h4_h6'; + NestedArray::setValue($basic_html_format_without_h4_h6, $allowed_html_parents, $new_value); + FilterFormat::create($basic_html_format_without_h4_h6)->save(); + Editor::create( + ['format' => 'basic_html_without_h4_h6'] + + + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') + )->save(); + + $filter_plugin_manager = $this->container->get('plugin.manager.filter'); + FilterFormat::create([ + 'format' => 'filter_only__filter_html', + 'name' => 'Only the "filter_html" filter and its default settings', + 'filters' => [ + 'filter_html' => [ + 'status' => 1, + 'settings' => $filter_plugin_manager->getDefinition('filter_html')['settings'], + ], + ], + ])->save(); + + FilterFormat::create([ + 'format' => 'cke4_plugins_with_settings', + 'name' => 'All CKEditor 4 core plugins with settings', + ])->save(); + Editor::create([ + 'format' => 'cke4_plugins_with_settings', + 'editor' => 'ckeditor', + 'settings' => [ + 'toolbar' => [ + 'rows' => [ + 0 => [ + [ + 'name' => 'Buttons with settings', + 'items' => [ + 'Language', + 'Styles', + ], + ], + [ + 'name' => 'Button without upgrade path', + 'items' => [ + 'Llama', + ], + ], + ], + ], + ], + 'plugins' => [ + 'language' => [ + 'language_list' => 'all', + ], + 'stylescombo' => [ + 'styles' => "p.callout|Callout\r\nblockquote.interesting|Interesting quote", + ], + // Plugin setting without upgrade path. + 'llama_contextual_and_button' => [ + 'ultra_llama_mode' => TRUE, + ], + ], + ], + ])->save(); + + FilterFormat::create([ + 'format' => 'cke4_plugins_with_settings_for_disabled_plugins', + 'name' => 'All CKEditor 4 core plugins with settings for disabled plugins', + ])->save(); + Editor::create([ + 'format' => 'cke4_plugins_with_settings_for_disabled_plugins', + 'editor' => 'ckeditor', + 'settings' => [ + // Empty toolbar. + 'toolbar' => [ + 'rows' => [ + 0 => [ + [ + 'name' => 'Only buttons without settings', + 'items' => [ + 'Bold', + ], + ], + ], + ], + ], + // Same plugin settings as `cke4_plugins_with_settings`. + 'plugins' => Editor::load('cke4_plugins_with_settings')->getSettings()['plugins'], + ], + ])->save(); + + } + + /** + * Tests the CKEditor 5 default settings conversion. + * + * @param string $format_id + * The existing text format/editor pair to switch to CKEditor 5. + * @param array $filters_to_drop + * An array of filter IDs to drop as the keys and either TRUE (fundamental + * compatibility error from CKEditor 5 expected) or FALSE (if optional to + * drop). + * @param array $expected_ckeditor5_settings + * The CKEditor 5 settings to test. + * @param string $expected_superset + * The default settings conversion may generate a superset of the original + * HTML restrictions. This lists the additional elements and attributes. + * @param array $expected_fundamental_compatibility_violations + * All expected fundamental compatibility violations for the given text + * format. + * @param string[] $expected_messages + * The expected messages associated with the computed settings. + * @param array|null $expected_post_filter_drop_fundamental_compatibility_violations + * All expected fundamental compatibility violations for the given text + * format, after dropping filters specified in $filters_to_drop. + * + * @dataProvider provider + */ + public function test(string $format_id, array $filters_to_drop, array $expected_ckeditor5_settings, string $expected_superset, array $expected_fundamental_compatibility_violations, array $expected_messages, ?array $expected_post_filter_drop_fundamental_compatibility_violations = NULL): void { + $text_format = FilterFormat::load($format_id); + $text_editor = Editor::load($format_id); + + // Check the pre-CKE5 switch validation errors in case of a minimal (empty) + // CKEditor 5 text editor config entity, to allow us to detect fundamental + // compatibility problems, such as incompatible filters. + $minimal_valid_cke5_text_editor = Editor::create([ + 'format' => $format_id, + 'editor' => 'ckeditor5', + 'settings' => ['toolbar' => ['items' => []]], + ]); + $pre_ck5_validation_errors = $this->validatePairToViolationsArray($minimal_valid_cke5_text_editor, $text_format, FALSE); + $this->assertSame($expected_fundamental_compatibility_violations, $pre_ck5_validation_errors); + + if (!empty($filters_to_drop)) { + foreach ($filters_to_drop as $filter_name => $is_fundamentally_incompatible) { + // Assert if it should appear in the pre-CKE5 switch validation errors. + $this->assertSame($is_fundamentally_incompatible, mb_strpos(implode("\n\n", $pre_ck5_validation_errors[''] ?? []), $filter_name) !== FALSE); + $text_format->setFilterConfig($filter_name, [ + 'status' => FALSE, + ]); + } + + // If filters were dropped because of a fundamental compatibility problem, + // validate the text format + minimal CKEditor 5 text editor config again + // after dropping those filters from the text format. This allows us to be + // confident that we have caught all fundamental compatibility problems. + if (!empty(array_filter($filters_to_drop))) { + $post_filter_drop_validation_errors = $this->validatePairToViolationsArray($minimal_valid_cke5_text_editor, $text_format, FALSE); + $this->assertSame($expected_post_filter_drop_fundamental_compatibility_violations, $post_filter_drop_validation_errors); + } + } + + [$updated_text_editor, $messages] = $this->smartDefaultSettings->computeSmartDefaultSettings($text_editor, $text_format); + + // Ensure that the result of ::computeSmartDefaultSettings() always complies + // with the config schema. + $this->assertConfigSchema( + $this->typedConfig, + $updated_text_editor->getConfigDependencyName(), + $updated_text_editor->toArray() + ); + + // We should now have the expected data in the Editor config entity. + $this->assertSame('ckeditor5', $updated_text_editor->getEditor()); + $this->assertSame($expected_ckeditor5_settings, $updated_text_editor->getSettings()); + + // If this text format already had a text editor, ensure that the settings + // do not match the original settings, but the image upload settings should + // not have been changed. + if ($text_editor !== NULL) { + $this->assertNotSame($text_editor->getSettings(), $updated_text_editor->getSettings()); + $this->assertSame($text_editor->getImageUploadSettings(), $updated_text_editor->getImageUploadSettings()); + } + + // The resulting Editor config entity should be valid. + $typed_config = $this->typedConfig->createFromNameAndData( + $updated_text_editor->getConfigDependencyName(), + $updated_text_editor->toArray(), + ); + $this->assertCount(0, $typed_config->validate()); + + // If the text format has HTML restrictions, ensure that a strict superset + // is allowed after switching to CKEditor 5. + $html_restrictions = $text_format->getHtmlRestrictions(); + $allowed_tags = $html_restrictions['allowed'] ?? []; + if ($allowed_tags) { + unset($allowed_tags['*']); + $enabled_plugins = array_keys($this->manager->getEnabledDefinitions($updated_text_editor)); + $updated_allowed_tags = $this->manager->getProvidedElements($enabled_plugins, $updated_text_editor); + $unsupported_tags_attributes = HTMLRestrictionsUtilities::diffAllowedElements($allowed_tags, $updated_allowed_tags); + $superset_tags_attributes = HTMLRestrictionsUtilities::diffAllowedElements($updated_allowed_tags, $allowed_tags); + $this->assertSame($expected_superset, implode(' ', HTMLRestrictionsUtilities::toReadableElements($superset_tags_attributes))); + $this->assertEmpty($unsupported_tags_attributes, "The following tags/attributes are not allowed in the updated text format:" . print_r($unsupported_tags_attributes, TRUE)); + + // Update the text format like ckeditor5_form_filter_format_form_alter() + // would. + $updated_text_format = clone $text_format; + $filter_html_config = $text_format->filters('filter_html')->getConfiguration(); + $filter_html_config['settings']['allowed_html'] = implode(' ', HTMLRestrictionsUtilities::toReadableElements($updated_allowed_tags)); + $updated_text_format->setFilterConfig('filter_html', $filter_html_config); + } + else { + // No update. + $updated_text_format = $text_format; + } + + // The resulting pair should be valid. + $this->assertSame([], $this->validatePairToViolationsArray($updated_text_editor, $updated_text_format, TRUE)); + + foreach ($messages as $key => $message) { + $messages[$key] = (string) $message; + } + $this->assertSame($expected_messages, $messages); + } + + /** + * Data provider. + * + * @return \Generator + * Test scenarios. + */ + public function provider() { + $basic_html_test_case = [ + 'format_id' => 'basic_html', + 'filters_to_drop' => [], + 'expected_ckeditor5_settings' => [ + 'toolbar' => [ + 'items' => [ + // Items based on toolbar items from prior config. + 'bold', + 'italic', + '|', + 'link', + '|', + 'bulletedList', + 'numberedList', + '|', + 'blockQuote', + 'uploadImage', + '|', + 'heading', + '|', + 'sourceEditing', + // Items added based on "allowed tags" config. + '|', + // The 'code' button added because <code> is allowed. + 'code', + // The 'textPartLanguage' button added because <span> is allowed. + 'textPartLanguage', + ], + ], + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [ + '<cite>', + '<dl>', + '<dt>', + '<dd>', + '<a hreflang>', + '<blockquote cite>', + '<ul type>', + '<ol start type>', + '<h2 id>', + '<h3 id>', + '<h4 id>', + '<h5 id>', + '<h6 id>', + ], + ], + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ], + 'ckeditor5_language' => [ + 'language_list' => 'un', + ], + ], + ], + 'expected_superset' => '<span lang dir>', + 'expected_fundamental_compatibility_violations' => [], + 'expected_messages' => [ + 'The following plugins were enabled to support tags that are allowed by this text format: <em class="placeholder">Code (for tags: <code>) Language (for tags: <span>)</em>.', + 'The following tags were permitted by this format\'s filter configuration, but no plugin was available that supports them. To ensure the tags remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <cite> <dl> <dt> <dd>.', + ], + ]; + + yield "basic_html can be switched to CKEditor 5 without problems (3 upgrade messages)" => NestedArray::mergeDeep( + $basic_html_test_case, + [ + 'expected_messages' => [ + 'This format\'s HTML filters includes plugins that support the following tags, but not some of their attributes. To ensure these attributes remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <a hreflang> <blockquote cite> <ul type> <ol start type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>.', + ], + ] + ); + + yield "basic_html with filter_caption removed => disallows <img data-caption> => supported through sourceEditing (3 upgrade messages)" => NestedArray::mergeDeep( + $basic_html_test_case, + [ + 'filters_to_drop' => [ + 'filter_caption' => FALSE, + ], + 'expected_ckeditor5_settings' => [ + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [ + '<img data-caption>', + ], + ], + ], + ], + 'expected_messages' => [ + 'This format\'s HTML filters includes plugins that support the following tags, but not some of their attributes. To ensure these attributes remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <a hreflang> <blockquote cite> <ul type> <ol start type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img data-caption>.', + ], + ]); + + yield "basic_html with filter_align removed => disallows <img data-align> => supported through sourceEditing (3 upgrade messages) " => NestedArray::mergeDeep( + $basic_html_test_case, + [ + 'filters_to_drop' => [ + 'filter_align' => FALSE, + ], + 'expected_ckeditor5_settings' => [ + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [ + '<img data-align>', + ], + ], + ], + ], + 'expected_messages' => [ + 'This format\'s HTML filters includes plugins that support the following tags, but not some of their attributes. To ensure these attributes remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <a hreflang> <blockquote cite> <ul type> <ol start type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img data-align>.', + ], + ]); + + yield "basic_html_without_h4_h6 can be switched to CKEditor 5 without problems, heading configuration computed automatically" => [ + 'format_id' => 'basic_html_without_h4_h6', + 'filters_to_drop' => $basic_html_test_case['filters_to_drop'], + 'expected_ckeditor5_settings' => [ + 'toolbar' => $basic_html_test_case['expected_ckeditor5_settings']['toolbar'], + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => array_values(array_diff( + $basic_html_test_case['expected_ckeditor5_settings']['plugins']['ckeditor5_sourceEditing']['allowed_tags'], + ['<h4 id>', '<h6 id>'], + )), + ], + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading5', + ], + ], + 'ckeditor5_language' => $basic_html_test_case['expected_ckeditor5_settings']['plugins']['ckeditor5_language'], + ], + ], + 'expected_superset' => $basic_html_test_case['expected_superset'], + 'expected_fundamental_compatibility_violations' => $basic_html_test_case['expected_fundamental_compatibility_violations'], + 'expected_messages' => array_merge( + $basic_html_test_case['expected_messages'], + ['This format\'s HTML filters includes plugins that support the following tags, but not some of their attributes. To ensure these attributes remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <a hreflang> <blockquote cite> <ul type> <ol start type> <h2 id> <h3 id> <h5 id>.'], + ), + ]; + + yield "restricted_html can be switched to CKEditor 5 after dropping the two markup-creating filters (3 upgrade messages)" => [ + 'format_id' => 'restricted_html', + 'filters_to_drop' => [ + 'filter_autop' => TRUE, + 'filter_url' => TRUE, + ], + 'expected_ckeditor5_settings' => [ + 'toolbar' => [ + 'items' => [ + // Items originating from CKEditor5::getDefaultSettings(). + 'heading', + 'bold', + 'italic', + // Items added based on "allowed tags" config. + '|', + // Because '<a>' is in allowed_html. + 'link', + // Because '<blockquote cite>' is in allowed_html. + 'blockQuote', + // Because '<code>' is in allowed_html. + 'code', + // Because '<ul>' is in allowed_html. + 'bulletedList', + // Because '<ol>' is in allowed_html. + 'numberedList', + // Because additional tags need to be allowed to achieve a superset. + 'sourceEditing', + ], + ], + 'plugins' => [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ], + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [ + '<cite>', + '<dl>', + '<dt>', + '<dd>', + '<a hreflang>', + '<blockquote cite>', + '<ul type>', + '<ol start type>', + '<h2 id>', + '<h3 id>', + '<h4 id>', + '<h5 id>', + '<h6 id>', + ], + ], + ], + ], + 'expected_superset' => '<br> <p>', + 'expected_fundamental_compatibility_violations' => [ + '' => [ + 0 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.', + 1 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. <code>&lt;br&gt;</code> and <code>&lt;p&gt;</code>)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.', + ], + ], + 'expected_messages' => [ + 'The following plugins were enabled to support tags that are allowed by this text format: <em class="placeholder">Link (for tags: <a>) Block quote (for tags: <blockquote>) Code (for tags: <code>) List (for tags: <ul><ol><li>)</em>.', + 'The following tags were permitted by this format\'s filter configuration, but no plugin was available that supports them. To ensure the tags remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <cite> <dl> <dt> <dd>.', + 'This format\'s HTML filters includes plugins that support the following tags, but not some of their attributes. To ensure these attributes remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <a hreflang> <blockquote cite> <ul type> <ol start type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>.', + ], + 'expected_post_filter_drop_fundamental_compatibility_violations' => [ + '' => 'CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are not allowed by the "<em class="placeholder">Limit allowed HTML tags and correct faulty HTML</em>" (<em class="placeholder">filter_html</em>) filter.', + ], + ]; + + yield "full_html can be switched to CKEditor 5 (no upgrade messages)" => [ + 'format_id' => 'full_html', + 'filters_to_drop' => [], + 'expected_ckeditor5_settings' => [ + 'toolbar' => [ + 'items' => [ + 'bold', + 'italic', + 'strikethrough', + 'superscript', + 'subscript', + 'removeFormat', + '|', + 'link', + '|', + 'bulletedList', + 'numberedList', + '|', + 'blockQuote', + 'uploadImage', + 'insertTable', + 'horizontalLine', + '|', + 'heading', + '|', + 'sourceEditing', + ], + ], + 'plugins' => [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ], + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [], + ], + ], + ], + 'expected_superset' => '', + 'expected_fundamental_compatibility_violations' => [], + 'expected_messages' => [], + ]; + + yield "filter_only__filter_html can be switched to CKEditor 5 without problems (3 upgrade messages)" => [ + 'format_id' => 'filter_only__filter_html', + 'filters_to_drop' => [], + 'expected_ckeditor5_settings' => [ + 'toolbar' => [ + 'items' => [ + // Default toolbar items. + 'heading', + 'bold', + 'italic', + '|', + // Items added based on filter_html's "allowed tags" config. + 'link', + 'blockQuote', + 'code', + 'bulletedList', + 'numberedList', + 'sourceEditing', + ], + ], + 'plugins' => [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ], + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [ + '<cite>', + '<dl>', + '<dt>', + '<dd>', + '<a hreflang>', + '<blockquote cite>', + '<ul type>', + '<ol start type="1 A I">', + '<h2 id="jump-*">', + '<h3 id>', + '<h4 id>', + '<h5 id>', + '<h6 id>', + ], + ], + ], + ], + 'expected_superset' => '<br> <p>', + 'expected_fundamental_compatibility_violations' => [ + '' => 'CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are not allowed by the "<em class="placeholder">Limit allowed HTML tags and correct faulty HTML</em>" (<em class="placeholder">filter_html</em>) filter.', + ], + 'expected_messages' => [ + 'The following plugins were enabled to support tags that are allowed by this text format: <em class="placeholder">Link (for tags: <a>) Block quote (for tags: <blockquote>) Code (for tags: <code>) List (for tags: <ul><ol><li>)</em>.', + 'The following tags were permitted by this format\'s filter configuration, but no plugin was available that supports them. To ensure the tags remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <cite> <dl> <dt> <dd>.', + 'This format\'s HTML filters includes plugins that support the following tags, but not some of their attributes. To ensure these attributes remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <a hreflang> <blockquote cite> <ul type> <ol start type="1 A I"> <h2 id="jump-*"> <h3 id> <h4 id> <h5 id> <h6 id>.', + ], + ]; + + yield "cke4_plugins_with_settings can be switched to CKEditor 5 without problems, settings are upgraded too" => [ + 'format_id' => 'cke4_plugins_with_settings', + 'filters_to_drop' => [], + 'expected_ckeditor5_settings' => [ + 'toolbar' => [ + 'items' => [ + 'textPartLanguage', + ], + ], + 'plugins' => [ + 'ckeditor5_language' => [ + 'language_list' => 'all', + ], + ], + ], + 'expected_superset' => '', + 'expected_fundamental_compatibility_violations' => [], + 'expected_messages' => [ + 'The CKEditor 4 button <em class="placeholder">Llama</em> does not have a known upgrade path. If it allowed editing markup, then you can do so now through the Source Editing functionality.', + 'The <em class="placeholder">llama_contextual_and_button</em> plugin settings do not have a known upgrade path.', + ], + ]; + + yield "cke4_plugins_with_settings_for_disabled_plugins can be switched to CKEditor 5 without problems; irrelevant settings are dropped" => [ + 'format_id' => 'cke4_plugins_with_settings_for_disabled_plugins', + 'filters_to_drop' => [], + 'expected_ckeditor5_settings' => [ + 'toolbar' => [ + 'items' => [ + 'bold', + ], + ], + 'plugins' => [], + ], + 'expected_superset' => '', + 'expected_fundamental_compatibility_violations' => [], + 'expected_messages' => [], + ]; + } + +} diff --git a/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php new file mode 100644 index 000000000000..151cfbd9d8c5 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php @@ -0,0 +1,775 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\Tests\ckeditor5\Kernel; + +use Drupal\Component\Utility\Html; +use Drupal\editor\EditorInterface; +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Drupal\filter\FilterFormatInterface; +use Drupal\KernelTests\KernelTestBase; +use Drupal\Tests\SchemaCheckTestTrait; +use Symfony\Component\Yaml\Yaml; + +/** + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemConstraintValidator + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemDependencyConstraintValidator + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\EnabledConfigurablePluginsConstraintValidator + * @covers \Drupal\ckeditor5\Plugin\Editor\CKEditor5::validatePair() + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\FundamentalCompatibilityConstraintValidator + * @group ckeditor5 + */ +class ValidatorsTest extends KernelTestBase { + + use SchemaCheckTestTrait; + use CKEditor5ValidationTestTrait; + + /** + * The typed config manager. + * + * @var \Drupal\Core\Config\TypedConfigManagerInterface + */ + protected $typedConfig; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'ckeditor5', + 'ckeditor5_plugin_conditions_test', + 'editor', + 'filter', + 'filter_test', + 'media', + 'media_library', + 'views', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + $this->typedConfig = $this->container->get('config.typed'); + } + + /** + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemConstraintValidator + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemDependencyConstraintValidator + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\EnabledConfigurablePluginsConstraintValidator + * @dataProvider provider + * + * @param array $ckeditor5_settings + * The CKEditor 5 settings to test. + * @param array $expected_violations + * All expected violations for the given CKEditor 5 settings, with property + * path as keys and message as values. + */ + public function test(array $ckeditor5_settings, array $expected_violations) { + // The data provider is unable to access services, so the test scenario of + // testing with CKEditor 5's default settings is partially provided here. + if ($ckeditor5_settings === ['__DEFAULT__']) { + $ckeditor5_settings = \Drupal::service('plugin.manager.editor')->createInstance('ckeditor5')->getDefaultSettings(); + } + + FilterFormat::create([ + 'format' => 'dummy', + 'name' => 'Dummy', + ])->save(); + $editor = Editor::create([ + 'format' => 'dummy', + 'editor' => 'ckeditor5', + 'settings' => $ckeditor5_settings, + 'image_upload' => [], + ]); + + $typed_config = $this->typedConfig->createFromNameAndData( + $editor->getConfigDependencyName(), + $editor->toArray(), + ); + $violations = $typed_config->validate(); + + $actual_violations = []; + foreach ($violations as $violation) { + $actual_violations[$violation->getPropertyPath()] = (string) $violation->getMessage(); + } + $this->assertSame($expected_violations, $actual_violations); + + if (empty($expected_violations)) { + $this->assertConfigSchema( + $this->typedConfig, + $editor->getConfigDependencyName(), + $typed_config->getValue() + ); + } + } + + /** + * Provides a list of Text Editor config entities using CKEditor 5 to test. + */ + public function provider(): array { + $data = []; + $data['CKEditor5::getDefaultSettings()'] = [ + // @see ::test() + 'settings' => ['__DEFAULT__'], + 'violations' => [], + ]; + $data['non-existent toolbar button'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'underline', + 'bold', + 'italic', + '-', + 'bulletedList', + 'foobar', + ], + ], + 'plugins' => [], + ], + 'violations' => [ + 'settings.toolbar.items.5' => 'The provided toolbar item <em class="placeholder">foobar</em> is not valid.', + ], + ]; + + $data['missing heading plugin configuration'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'heading', + ], + ], + 'plugins' => [], + ], + 'violations' => [ + 'settings.plugins.ckeditor5_heading' => 'Configuration for the enabled plugin "<em class="placeholder">Headings</em>" (<em class="placeholder">ckeditor5_heading</em>) is missing.', + ], + ]; + $data['missing language plugin configuration'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'textPartLanguage', + ], + ], + 'plugins' => [], + ], + 'violations' => [ + 'settings.plugins.ckeditor5_language' => 'Configuration for the enabled plugin "<em class="placeholder">Language</em>" (<em class="placeholder">ckeditor5_language</em>) is missing.', + ], + ]; + $data['empty language plugin configuration'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'textPartLanguage', + ], + ], + 'plugins' => [ + 'ckeditor5_language' => [], + ], + ], + 'violations' => [ + 'settings.plugins.ckeditor5_language' => 'Configuration for the enabled plugin "<em class="placeholder">Language</em>" (<em class="placeholder">ckeditor5_language</em>) is missing.', + ], + ]; + $data['valid language plugin configuration: un'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'textPartLanguage', + ], + ], + 'plugins' => [ + 'ckeditor5_language' => [ + 'language_list' => 'un', + ], + ], + ], + 'violations' => [], + ]; + $data['valid language plugin configuration: all'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'textPartLanguage', + ], + ], + 'plugins' => [ + 'ckeditor5_language' => [ + 'language_list' => 'all', + ], + ], + ], + 'violations' => [], + ]; + $data['invalid language plugin configuration: textPartLanguage button not enabled'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'bold', + ], + ], + 'plugins' => [ + 'ckeditor5_language' => [ + 'language_list' => 'all', + ], + ], + ], + 'violations' => [ + 'settings.plugins.ckeditor5_language.language_list' => 'Depends on <em class="placeholder">textPartLanguage</em>, which is not enabled.', + ], + ]; + $data['invalid language plugin configuration: invalid language_list setting'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'textPartLanguage', + ], + ], + 'plugins' => [ + 'ckeditor5_language' => [ + 'language_list' => 'foo', + ], + ], + ], + 'violations' => [ + 'settings.plugins.ckeditor5_language.language_list' => 'The value you selected is not a valid choice.', + ], + ]; + + $data['uploadImage toolbar item condition not met: image uploads must be enabled'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'uploadImage', + ], + ], + 'plugins' => [], + ], + 'violations' => [ + 'settings.toolbar.items.0' => 'The <em class="placeholder">Image upload</em> toolbar item requires image uploads to be enabled.', + ], + ]; + $data['drupalMedia toolbar item condition not met: media filter enabled'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'drupalMedia', + ], + ], + 'plugins' => [], + ], + 'violations' => [ + 'settings.toolbar.items.0' => 'The <em class="placeholder">Drupal media</em> toolbar item requires the <em class="placeholder">Embed media</em> filter to be enabled.', + ], + ]; + $data['fooBarConditions toolbar item condition not met: Heading and Table plugins enabled, neither are'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'fooBarConditions', + ], + ], + 'plugins' => [], + ], + 'violations' => [ + 'settings.toolbar.items.0' => 'The <em class="placeholder">Foo Bar (Test Plugins Condition)</em> toolbar item requires the <em class="placeholder">Headings, Table</em> plugins to be enabled.', + ], + ]; + $data['fooBarConditions toolbar item condition not met: Heading and Table plugins enabled, only one is'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'fooBarConditions', + 'heading', + ], + ], + 'plugins' => [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + ], + ], + ], + ], + 'violations' => [ + 'settings.toolbar.items.0' => 'The <em class="placeholder">Foo Bar (Test Plugins Condition)</em> toolbar item requires the <em class="placeholder">Table</em> plugin to be enabled.', + ], + ]; + $data['fooBarConditions toolbar item condition met: Heading and Table plugins enabled, both are'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'fooBarConditions', + 'heading', + 'insertTable', + ], + ], + 'plugins' => [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + ], + ], + ], + ], + 'violations' => [], + ]; + + return $data; + } + + /** + * @covers \Drupal\ckeditor5\Plugin\Editor\CKEditor5::validatePair() + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\FundamentalCompatibilityConstraintValidator + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemConstraintValidator + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemDependencyConstraintValidator + * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\EnabledConfigurablePluginsConstraintValidator + * @dataProvider providerPair + * + * @param array $ckeditor5_settings + * The paired text editor's CKEditor 5 settings to test. + * @param array $editor_image_upload_settings + * The paired text editor's image upload settings to test. + * @param array $filters + * The paired text format's filters and filter settings. + * @param array $expected_violations + * All expected violations for the pair. + */ + public function testPair(array $ckeditor5_settings, array $editor_image_upload_settings, array $filters, array $expected_violations) { + $text_editor = Editor::create([ + 'format' => 'dummy', + 'editor' => 'ckeditor5', + 'settings' => $ckeditor5_settings, + 'image_upload' => $editor_image_upload_settings, + ]); + assert($text_editor instanceof EditorInterface); + $this->assertConfigSchema( + $this->typedConfig, + $text_editor->getConfigDependencyName(), + $text_editor->toArray() + ); + $text_format = FilterFormat::create([ + 'filters' => $filters, + ]); + assert($text_format instanceof FilterFormatInterface); + + $this->assertSame($expected_violations, $this->validatePairToViolationsArray($text_editor, $text_format, TRUE)); + } + + /** + * Provides a list of Text Editor + Text Format pairs to test. + */ + public function providerPair(): array { + // cspell:ignore donk + $data = []; + $data['INVALID: non-HTML format: filter_autop'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'bold', + ], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_autop' => [ + 'id' => 'filter_autop', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [], + ], + ], + 'violations' => [ + '' => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. <code>&lt;br&gt;</code> and <code>&lt;p&gt;</code>)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.', + ], + ]; + $data['INVALID: non-HTML format: filter_autop + filter_url'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'bold', + ], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_autop' => [ + 'id' => 'filter_autop', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [], + ], + 'filter_url' => [ + 'id' => 'filter_url', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'filter_url_length' => 72, + ], + ], + ], + 'violations' => [ + '' => [ + 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.', + 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. <code>&lt;br&gt;</code> and <code>&lt;p&gt;</code>)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.', + ], + ], + ]; + $data['INVALID: forbidden tags'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_test_restrict_tags_and_attributes' => [ + 'id' => 'filter_test_restrict_tags_and_attributes', + 'provider' => 'filter_test', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'restrictions' => [ + 'forbidden_tags' => ['p' => FALSE], + ], + ], + ], + ], + 'violations' => [ + '' => 'CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are forbidden by the "<em class="placeholder">Tag and attribute restricting filter</em>" (<em class="placeholder">filter_test_restrict_tags_and_attributes</em>) filter.', + ], + ]; + $restricted_html_format_filters = Yaml::parseFile('profiles/standard/config/install/filter.format.restricted_html.yml')['filters']; + $data['INVALID: the default restricted_html text format'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => $restricted_html_format_filters, + 'violations' => [ + '' => [ + 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.', + 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. <code>&lt;br&gt;</code> and <code>&lt;p&gt;</code>)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.', + ], + ], + ]; + $data['INVALID: the modified restricted_html text format (with filter_autop and filter_url removed)'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => array_diff_key( + $restricted_html_format_filters, + ['filter_autop' => TRUE, 'filter_url' => TRUE] + ), + 'violations' => [ + '' => 'CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are not allowed by the "<em class="placeholder">Limit allowed HTML tags and correct faulty HTML</em>" (<em class="placeholder">filter_html</em>) filter.', + ], + ]; + $data['VALID: HTML format: empty toolbar + minimal allowed HTML'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'allowed_html' => "<p> <br>", + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + ], + 'violations' => [], + ]; + $data['VALID: HTML format: very minimal toolbar + minimal allowed HTML'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'bold', + ], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'allowed_html' => "<p> <br> <strong>", + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + ], + 'violations' => [], + ]; + $data['INVALID: HTML format: empty toolbar + default allowed HTML tags + <p> + <br>'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'allowed_html' => "<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type='1 A I'> <li> <dl> <dt> <dd> <h2 id='jump-*'> <h3 id> <h4 id> <h5 id> <h6 id>" . "<p> <br>", + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + ], + 'violations' => [ + 'filters.filter_html' => sprintf( + 'The current CKEditor 5 build requires the following elements and attributes: <br><code>%s</code><br>The following elements are not supported: <br><code>%s</code>', + Html::escape('<br> <p>'), + Html::escape('<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type="1 A I"> <li> <dl> <dt> <dd> <h2 id="jump-*"> <h3 id> <h4 id> <h5 id> <h6 id>'), + ), + ], + ]; + $data['INVALID: HTML format: empty toolbar + default allowed HTML tags'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'allowed_html' => "<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type='1 A I'> <li> <dl> <dt> <dd> <h2 id='jump-*'> <h3 id> <h4 id> <h5 id> <h6 id>", + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + ], + 'violations' => [ + '' => 'CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are not allowed by the "<em class="placeholder">Limit allowed HTML tags and correct faulty HTML</em>" (<em class="placeholder">filter_html</em>) filter.', + ], + ]; + $data['INVALID Source Editable tag already provided by plugin and another available in a not enabled plugin'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'heading', + 'bold', + 'italic', + 'sourceEditing', + 'textPartLanguage', + ], + ], + 'plugins' => [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ], + 'ckeditor5_language' => [ + 'language_list' => 'un', + ], + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [ + '<strong>', + '<table>', + ], + ], + ], + ], + 'image_upload' => [ + 'status' => TRUE, + ], + 'filters' => [], + 'violations' => [ + 'settings.plugins.ckeditor5_sourceEditing.allowed_tags.0' => 'The following tag(s) are already supported by enabled plugins and should not be added to the Source Editing "Manually editable HTML tags" field: <em class="placeholder">Bold (<strong>)</em>.', + 'settings.plugins.ckeditor5_sourceEditing.allowed_tags.1' => 'The following tag(s) are already supported by available plugins and should not be added to the Source Editing "Manually editable HTML tags" field. Instead, enable the following plugins to support these tags: <em class="placeholder">Table (<table>)</em>.', + ], + ]; + $data['INVALID some invalid Source Editable tags provided by plugin and another available in a not enabled plugin'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'heading', + 'bold', + 'italic', + 'sourceEditing', + 'textPartLanguage', + ], + ], + 'plugins' => [ + 'ckeditor5_heading' => [ + 'enabled_headings' => [ + 'heading2', + 'heading3', + 'heading4', + 'heading5', + 'heading6', + ], + ], + 'ckeditor5_language' => [ + 'language_list' => 'un', + ], + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [ + '<aside>', + '<footer>', + 'roy', + '<#donk>', + '<junior>cruft', + ], + ], + ], + ], + 'image_upload' => [ + 'status' => TRUE, + ], + 'filters' => [], + 'violations' => [ + 'settings.plugins.ckeditor5_sourceEditing.allowed_tags.2' => 'The following tag is not valid HTML: <em class="placeholder">roy</em>.', + 'settings.plugins.ckeditor5_sourceEditing.allowed_tags.3' => 'The following tag is not valid HTML: <em class="placeholder"><#donk></em>.', + 'settings.plugins.ckeditor5_sourceEditing.allowed_tags.4' => 'The following tag is not valid HTML: <em class="placeholder"><junior>cruft</em>.', + ], + ]; + + $data['INVALID: uploadImage toolbar item condition NOT met: image uploads must be enabled'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'uploadImage', + ], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [], + 'violations' => [ + 'settings.toolbar.items.0' => 'The <em class="placeholder">Image upload</em> toolbar item requires image uploads to be enabled.', + ], + ]; + $data['VALID: uploadImage toolbar item condition met: image uploads must be enabled'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'uploadImage', + ], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => TRUE, + ], + 'filters' => [], + 'violations' => [], + ]; + $data['INVALID: drupalMedia toolbar item condition NOT met: media filter enabled'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'drupalMedia', + ], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [], + 'violations' => [ + 'settings.toolbar.items.0' => 'The <em class="placeholder">Drupal media</em> toolbar item requires the <em class="placeholder">Embed media</em> filter to be enabled.', + ], + ]; + $data['VALID: drupalMedia toolbar item condition met: media filter enabled'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'drupalMedia', + ], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'media_embed', + 'provider' => 'media', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'default_view_mode' => 'default', + 'allowed_view_modes' => [], + 'allowed_media_types' => [], + ], + ], + ], + 'violations' => [ + 'settings.toolbar.items.0' => 'The <em class="placeholder">Drupal media</em> toolbar item requires the <em class="placeholder">Embed media</em> filter to be enabled.', + ], + ]; + + return $data; + } + +} diff --git a/core/modules/ckeditor5/tests/src/Nightwatch/Tests/drupalHtmlBuilderTest.es6.js b/core/modules/ckeditor5/tests/src/Nightwatch/Tests/drupalHtmlBuilderTest.es6.js new file mode 100644 index 000000000000..906097a3f7be --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Nightwatch/Tests/drupalHtmlBuilderTest.es6.js @@ -0,0 +1,131 @@ +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); +// eslint-disable-next-line import/no-extraneous-dependencies +const { JSDOM } = require('jsdom'); + +// Nightwatch doesn't support ES modules. This workaround loads the class +// directly here. +// @todo remove this after https://www.drupal.org/project/drupal/issues/3247647 +// has been resolved. +// eslint-disable-next-line no-eval +const DrupalHtmlBuilder = eval( + `(${fs + .readFileSync( + path.resolve( + __dirname, + '../../../../js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlbuilder.js', + ), + ) + .toString()})`.replace('export default', ''), +); +const { document, Node } = new JSDOM(`<!DOCTYPE html>`).window; + +module.exports = { + '@tags': ['ckeditor5'], + '@unitTest': true, + 'should return empty string when empty DocumentFragment is passed': + function () { + const drupalHtmlBuilder = new DrupalHtmlBuilder(); + drupalHtmlBuilder.appendNode(document.createDocumentFragment()); + assert.equal(drupalHtmlBuilder.build(), ''); + }, + 'should create text from single text node': function () { + const drupalHtmlBuilder = new DrupalHtmlBuilder(); + const text = 'foo bar'; + const fragment = document.createDocumentFragment(); + const textNode = document.createTextNode(text); + fragment.appendChild(textNode); + + drupalHtmlBuilder.appendNode(fragment); + assert.equal(drupalHtmlBuilder.build(), text); + }, + 'should return correct HTML from fragment with paragraph': function () { + const drupalHtmlBuilder = new DrupalHtmlBuilder(); + const fragment = document.createDocumentFragment(); + const paragraph = document.createElement('p'); + paragraph.textContent = 'foo bar'; + fragment.appendChild(paragraph); + + drupalHtmlBuilder.appendNode(fragment); + assert.equal(drupalHtmlBuilder.build(), '<p>foo bar</p>'); + }, + 'should return correct HTML from fragment with multiple child nodes': + function () { + const drupalHtmlBuilder = new DrupalHtmlBuilder(); + const fragment = document.createDocumentFragment(); + const text = document.createTextNode('foo bar'); + const paragraph = document.createElement('p'); + const div = document.createElement('div'); + + paragraph.textContent = 'foo'; + div.textContent = 'bar'; + + fragment.appendChild(text); + fragment.appendChild(paragraph); + fragment.appendChild(div); + + drupalHtmlBuilder.appendNode(fragment); + + assert.equal( + drupalHtmlBuilder.build(), + 'foo bar<p>foo</p><div>bar</div>', + ); + }, + 'should return correct HTML from fragment with comment': function () { + const drupalHtmlBuilder = new DrupalHtmlBuilder(); + const fragment = document.createDocumentFragment(); + const div = document.createElement('div'); + const comment = document.createComment('bar'); + div.textContent = 'bar'; + + fragment.appendChild(div); + fragment.appendChild(comment); + + drupalHtmlBuilder.appendNode(fragment); + + assert.equal(drupalHtmlBuilder.build(), '<div>bar</div>'); + }, + 'should return correct HTML from fragment with attributes': function () { + const drupalHtmlBuilder = new DrupalHtmlBuilder(); + const fragment = document.createDocumentFragment(); + const div = document.createElement('div'); + div.setAttribute('id', 'foo'); + div.classList.add('bar'); + div.textContent = 'baz'; + + fragment.appendChild(div); + drupalHtmlBuilder.appendNode(fragment); + + assert.equal( + drupalHtmlBuilder.build(), + '<div id="foo" class="bar">baz</div>', + ); + }, + 'should return correct HTML from fragment with self closing tag': + function () { + const drupalHtmlBuilder = new DrupalHtmlBuilder(); + const fragment = document.createDocumentFragment(); + const hr = document.createElement('hr'); + + fragment.appendChild(hr); + drupalHtmlBuilder.appendNode(fragment); + + assert.equal(drupalHtmlBuilder.build(), '<hr>'); + }, + 'attribute values should be escaped': function () { + const drupalHtmlBuilder = new DrupalHtmlBuilder(); + const fragment = document.createDocumentFragment(); + const div = document.createElement('div'); + div.setAttribute('data-caption', 'Kittens & llamas are <em>cute</em>'); + div.textContent = 'foo'; + + fragment.appendChild(div); + drupalHtmlBuilder.appendNode(fragment); + + assert.equal( + drupalHtmlBuilder.build(), + '<div data-caption="Kittens & llamas are <em>cute</em>">foo</div>', + ); + }, +}; diff --git a/core/modules/ckeditor5/tests/src/Nightwatch/Tests/drupalHtmlBuilderTest.js b/core/modules/ckeditor5/tests/src/Nightwatch/Tests/drupalHtmlBuilderTest.js new file mode 100644 index 000000000000..8d416758b517 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Nightwatch/Tests/drupalHtmlBuilderTest.js @@ -0,0 +1,101 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +var assert = require('assert'); + +var fs = require('fs'); + +var path = require('path'); + +var _require = require('jsdom'), + JSDOM = _require.JSDOM; + +var DrupalHtmlBuilder = eval("(".concat(fs.readFileSync(path.resolve(__dirname, '../../../../js/ckeditor5_plugins/drupalHtmlEngine/src/drupalhtmlbuilder.js')).toString(), ")").replace('export default', '')); +var _JSDOM$window = new JSDOM("<!DOCTYPE html>").window, + document = _JSDOM$window.document, + Node = _JSDOM$window.Node; +module.exports = { + '@tags': ['ckeditor5'], + '@unitTest': true, + 'should return empty string when empty DocumentFragment is passed': function shouldReturnEmptyStringWhenEmptyDocumentFragmentIsPassed() { + var drupalHtmlBuilder = new DrupalHtmlBuilder(); + drupalHtmlBuilder.appendNode(document.createDocumentFragment()); + assert.equal(drupalHtmlBuilder.build(), ''); + }, + 'should create text from single text node': function shouldCreateTextFromSingleTextNode() { + var drupalHtmlBuilder = new DrupalHtmlBuilder(); + var text = 'foo bar'; + var fragment = document.createDocumentFragment(); + var textNode = document.createTextNode(text); + fragment.appendChild(textNode); + drupalHtmlBuilder.appendNode(fragment); + assert.equal(drupalHtmlBuilder.build(), text); + }, + 'should return correct HTML from fragment with paragraph': function shouldReturnCorrectHTMLFromFragmentWithParagraph() { + var drupalHtmlBuilder = new DrupalHtmlBuilder(); + var fragment = document.createDocumentFragment(); + var paragraph = document.createElement('p'); + paragraph.textContent = 'foo bar'; + fragment.appendChild(paragraph); + drupalHtmlBuilder.appendNode(fragment); + assert.equal(drupalHtmlBuilder.build(), '<p>foo bar</p>'); + }, + 'should return correct HTML from fragment with multiple child nodes': function shouldReturnCorrectHTMLFromFragmentWithMultipleChildNodes() { + var drupalHtmlBuilder = new DrupalHtmlBuilder(); + var fragment = document.createDocumentFragment(); + var text = document.createTextNode('foo bar'); + var paragraph = document.createElement('p'); + var div = document.createElement('div'); + paragraph.textContent = 'foo'; + div.textContent = 'bar'; + fragment.appendChild(text); + fragment.appendChild(paragraph); + fragment.appendChild(div); + drupalHtmlBuilder.appendNode(fragment); + assert.equal(drupalHtmlBuilder.build(), 'foo bar<p>foo</p><div>bar</div>'); + }, + 'should return correct HTML from fragment with comment': function shouldReturnCorrectHTMLFromFragmentWithComment() { + var drupalHtmlBuilder = new DrupalHtmlBuilder(); + var fragment = document.createDocumentFragment(); + var div = document.createElement('div'); + var comment = document.createComment('bar'); + div.textContent = 'bar'; + fragment.appendChild(div); + fragment.appendChild(comment); + drupalHtmlBuilder.appendNode(fragment); + assert.equal(drupalHtmlBuilder.build(), '<div>bar</div>'); + }, + 'should return correct HTML from fragment with attributes': function shouldReturnCorrectHTMLFromFragmentWithAttributes() { + var drupalHtmlBuilder = new DrupalHtmlBuilder(); + var fragment = document.createDocumentFragment(); + var div = document.createElement('div'); + div.setAttribute('id', 'foo'); + div.classList.add('bar'); + div.textContent = 'baz'; + fragment.appendChild(div); + drupalHtmlBuilder.appendNode(fragment); + assert.equal(drupalHtmlBuilder.build(), '<div id="foo" class="bar">baz</div>'); + }, + 'should return correct HTML from fragment with self closing tag': function shouldReturnCorrectHTMLFromFragmentWithSelfClosingTag() { + var drupalHtmlBuilder = new DrupalHtmlBuilder(); + var fragment = document.createDocumentFragment(); + var hr = document.createElement('hr'); + fragment.appendChild(hr); + drupalHtmlBuilder.appendNode(fragment); + assert.equal(drupalHtmlBuilder.build(), '<hr>'); + }, + 'attribute values should be escaped': function attributeValuesShouldBeEscaped() { + var drupalHtmlBuilder = new DrupalHtmlBuilder(); + var fragment = document.createDocumentFragment(); + var div = document.createElement('div'); + div.setAttribute('data-caption', 'Kittens & llamas are <em>cute</em>'); + div.textContent = 'foo'; + fragment.appendChild(div); + drupalHtmlBuilder.appendNode(fragment); + assert.equal(drupalHtmlBuilder.build(), '<div data-caption="Kittens & llamas are <em>cute</em>">foo</div>'); + } +}; \ No newline at end of file diff --git a/core/modules/ckeditor5/tests/src/Traits/CKEditor5TestTrait.php b/core/modules/ckeditor5/tests/src/Traits/CKEditor5TestTrait.php new file mode 100644 index 000000000000..2510d3a58fcc --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Traits/CKEditor5TestTrait.php @@ -0,0 +1,127 @@ +<?php + +namespace Drupal\Tests\ckeditor5\Traits; + +use Behat\Mink\Element\NodeElement; +use Drupal\Component\Utility\Html; + +// cspell:ignore downcasted + +/** + * Provides methods to test CKEditor 5. + * + * This trait is meant to be used only by functional JavaScript test classes. + */ +trait CKEditor5TestTrait { + + /** + * Gets CKEditor 5 instance data as a PHP DOMDocument. + * + * @return \DOMDocument + * The result of parsing CKEditor 5's data into a PHP DOMDocument. + * + * @see https://ckeditor.com/docs/ckeditor5/latest/api/module_editor-classic_classiceditor-ClassicEditor.html#function-getData + */ + protected function getEditorDataAsDom(): \DOMDocument { + // We cannot trust on CKEditor updating the textarea every time model + // changes. Therefore, the most reliable way to get downcasted data is to + // use the CKEditor API. + $javascript = <<<JS +(function(){ + return Drupal.CKEditor5Instances.get(Drupal.CKEditor5Instances.keys().next().value).getData(); +})(); +JS; + return Html::load($this->getSession()->evaluateScript($javascript)); + } + + /** + * Waits for CKEditor to initialize. + */ + protected function waitForEditor() { + $assert_session = $this->assertSession(); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + } + + /** + * Clicks a CKEditor button. + * + * @param string $name + * The name of the button, such as `drupallink`, `source`, etc. + */ + protected function pressEditorButton($name) { + $this->getEditorButton($name)->click(); + } + + /** + * Waits for a CKEditor button and returns it when available and visible. + * + * @param string $name + * The name of the button, such as `drupallink`, `source`, etc. + * + * @return \Behat\Mink\Element\NodeElement|null + * The page element node if found, NULL if not. + */ + protected function getEditorButton($name) { + $button = $this->assertSession()->waitForElementVisible('xpath', "//button[span[text()='$name']]"); + $this->assertNotEmpty($button); + return $button; + } + + /** + * Asserts a CKEditor button is disabled. + * + * @param string $name + * The name of the button, such as `drupallink`, `source`, etc. + */ + protected function assertEditorButtonDisabled($name) { + $button = $this->getEditorButton($name); + $this->assertTrue($button->hasAttribute('aria-disabled')); + $this->assertTrue($button->hasClass('ck-disabled')); + } + + /** + * Asserts a CKEditor button is enabled. + * + * @param string $name + * The name of the button, such as `drupallink`, `source`, etc. + */ + protected function assertEditorButtonEnabled($name) { + $button = $this->getEditorButton($name); + $this->assertFalse($button->hasAttribute('aria-disabled')); + $this->assertFalse($button->hasClass('ck-disabled')); + } + + /** + * Asserts a particular balloon is visible. + * + * @param string $balloon_content_selector + * A CSS selector. + * + * @return \Behat\Mink\Element\NodeElement + * The asserted balloon. + */ + protected function assertVisibleBalloon(string $balloon_content_selector): NodeElement { + $this->assertSession()->elementExists('css', '.ck-balloon-panel_visible'); + $selector = ".ck-balloon-panel_visible .ck-balloon-rotator__content > .ck$balloon_content_selector"; + $this->assertSession()->elementExists('css', $selector); + return $this->getSession()->getPage()->find('css', $selector); + } + + /** + * Gets a button from the currently visible balloon. + * + * @param string $name + * The label of the button to find. + * + * @return \Behat\Mink\Element\NodeElement + * The requested button. + */ + protected function getBalloonButton(string $name): NodeElement { + $button = $this->getSession()->getPage() + ->find('css', '.ck-balloon-panel_visible .ck-balloon-rotator__content') + ->find('xpath', "//button[span[text()='$name']]"); + $this->assertNotEmpty($button); + return $button; + } + +} diff --git a/core/modules/ckeditor5/tests/src/Traits/SynchronizeCsrfTokenSeedTrait.php b/core/modules/ckeditor5/tests/src/Traits/SynchronizeCsrfTokenSeedTrait.php new file mode 100644 index 000000000000..e106d28c43ee --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Traits/SynchronizeCsrfTokenSeedTrait.php @@ -0,0 +1,42 @@ +<?php + +namespace Drupal\Tests\ckeditor5\Traits; + +use Drupal\Core\Session\AccountInterface; + +/** + * Synchronizes the child site's CSRF token seed back to the test runner. + * + * For the test to be able to generate valid CSRF tokens, it needs access to the + * CSRF token seed in the child site (i.e. tested site). This requires reading + * the CSRF token seed from the session that gets created in the child site + * after logging in, and then setting it in the test runner's container. + * Otherwise, the test runner would generate its own CSRF token seed and would + * hence generate CSRF tokens that are not valid for the session in the child + * site. + * + * @see \Drupal\Core\Access\CsrfTokenGenerator::get() + * + * @internal + */ +trait SynchronizeCsrfTokenSeedTrait { + + /** + * {@inheritdoc} + */ + protected function drupalLogin(AccountInterface $account) { + parent::drupalLogin($account); + $session_data = $this->container->get('session_handler.write_safe')->read($this->getSession()->getCookie($this->getSessionName())); + $csrf_token_seed = unserialize(explode('_sf2_meta|', $session_data)[1])['s']; + $this->container->get('session_manager.metadata_bag')->setCsrfTokenSeed($csrf_token_seed); + } + + /** + * {@inheritdoc} + */ + protected function drupalLogout() { + parent::drupalLogout(); + $this->container->get('session_manager.metadata_bag')->stampNew(); + } + +} diff --git a/core/modules/ckeditor5/tests/src/Unit/CKEditor5Test.php b/core/modules/ckeditor5/tests/src/Unit/CKEditor5Test.php new file mode 100644 index 000000000000..66b339439a02 --- /dev/null +++ b/core/modules/ckeditor5/tests/src/Unit/CKEditor5Test.php @@ -0,0 +1,117 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\Tests\ckeditor5\Unit; + +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\Tests\UnitTestCase; + +/** + * @coversDefaultClass \Drupal\ckeditor5\Plugin\Editor\CKEditor5 + * @group ckeditor5 + * @internal + */ +class CKEditor5Test extends UnitTestCase { + + /** + * Simulated CKEditor5::buildConfigurationForm() form structure. + * + * @var array + */ + protected const SIMULATED_FORM_STRUCTURE = [ + 'toolbar' => [ + 'available' => [], + 'items' => [], + ], + 'available_items_description' => [], + 'active_items_description' => [], + 'plugin_settings' => [], + 'plugins' => [ + 'providerA_plugin1' => [], + 'providerB_plugin2' => [ + 'foo' => [], + 'bar' => [], + ], + ], + ]; + + /** + * Gets a protected/private method to test. + * + * @param string $name + * The method name. + * + * @return \ReflectionMethod + * The accessible method. + */ + protected static function getMethod(string $name): \ReflectionMethod { + $class = new \ReflectionClass(CKEditor5::class); + $method = $class->getMethod($name); + $method->setAccessible(TRUE); + return $method; + } + + /** + * @covers \Drupal\ckeditor5\Plugin\Editor\CKEditor5::mapViolationPropertyPathsToFormNames + * @dataProvider providerPathsToFormNames + */ + public function testPathsToFormNames(string $property_path, string $expected_form_item_name, bool $expect_exception = FALSE): void { + $mapMethod = self::getMethod('mapViolationPropertyPathsToFormNames'); + if ($expect_exception) { + $this->expectExceptionMessage('assert($shifted === \'settings\')'); + } + + $form_item_name = $mapMethod->invokeArgs(NULL, [$property_path, static::SIMULATED_FORM_STRUCTURE]); + + if (!$expect_exception) { + $this->assertSame($expected_form_item_name, $form_item_name); + } + } + + /** + * Data provider for testing mapViolationPropertyPathsToFormNames. + * + * @return array[] + * An array with the property path and expected form item name. + */ + public function providerPathsToFormNames(): array { + return [ + 'validation error targeting toolbar items' => [ + 'settings.toolbar.items', + 'settings][toolbar][items', + ], + 'validation error targeting a specific toolbar item' => [ + 'settings.toolbar.items.6', + 'settings][toolbar][items', + ], + 'validation error targeting a simple plugin form' => [ + 'settings.plugins.providerA_plugin1', + 'settings][plugins][providerA_plugin1', + ], + 'validation error targeting a simple plugin form, with deep config schema detail' => [ + 'settings.plugins.providerA_plugin1.foo.bar.baz', + 'settings][plugins][providerA_plugin1', + ], + 'validation error targeting a complex plugin form' => [ + 'settings.plugins.providerB_plugin2', + 'settings][plugins][providerB_plugin2', + ], + 'validation error targeting a complex plugin form, with deep config schema detail' => [ + 'settings.plugins.providerB_plugin2.foo.bar.baz', + 'settings][plugins][providerB_plugin2][foo', + ], + 'unrealistic example one — should trigger exception' => [ + 'bad.bad.worst', + 'I DO NOT EXIST', + TRUE, + ], + 'unrealistic example two — should trigger exception' => [ + 'one.two.three.four', + 'one][two][three][four', + TRUE, + ], + ]; + } + +} diff --git a/core/modules/ckeditor5/webpack.config.js b/core/modules/ckeditor5/webpack.config.js new file mode 100644 index 000000000000..71152e4b1e59 --- /dev/null +++ b/core/modules/ckeditor5/webpack.config.js @@ -0,0 +1,63 @@ +const path = require('path'); +const fs = require('fs'); +const webpack = require('webpack'); +const { styles, builds } = require('@ckeditor/ckeditor5-dev-utils'); +const TerserPlugin = require('terser-webpack-plugin'); + +function getDirectories(srcpath) { + return fs + .readdirSync(srcpath) + .filter((item) => fs.statSync(path.join(srcpath, item)).isDirectory()); +} + +module.exports = []; +// Loop through every subdirectory in ckeditor5_plugins, which should be a different +// plugin, and build them all in ./build. +getDirectories(path.resolve(__dirname, './js/ckeditor5_plugins')).forEach((dir) => { + const bc = { + mode: 'production', + optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + terserOptions: { + format: { + comments: false, + }, + }, + test: /\.js(\?.*)?$/i, + extractComments: false, + }), + ], + moduleIds: 'named', + }, + entry: { + path: path.resolve( + __dirname, + 'js/ckeditor5_plugins', + dir, + 'src/index.js', + ), + }, + output: { + path: path.resolve(__dirname, './js/build'), + filename: `${dir}.js`, + library: ['CKEditor5', dir], + libraryTarget: 'umd', + libraryExport: 'default', + }, + plugins: [ + new webpack.BannerPlugin('cspell:disable'), + new webpack.DllReferencePlugin({ + manifest: require(path.resolve(__dirname, '../../node_modules/ckeditor5/build/ckeditor5-dll.manifest.json')), // eslint-disable-line global-require, import/no-unresolved + scope: 'ckeditor5/src', + name: 'CKEditor5.dll', + }), + ], + module: { + rules: [{ test: /\.svg$/, use: 'raw-loader' }], + }, + }; + + module.exports.push(bc); +}); diff --git a/core/package.json b/core/package.json index 9c0807696182..1d132c75e27e 100644 --- a/core/package.json +++ b/core/package.json @@ -24,16 +24,38 @@ "lint:css-checkstyle": "stylelint \"**/*.css\" --custom-formatter ./node_modules/stylelint-checkstyle-formatter/index.js", "lint:yaml": "node ./node_modules/eslint/bin/eslint.js --ext .yml .", "test:nightwatch": "cross-env BABEL_ENV=development node -r dotenv-safe/config -r @babel/register ./node_modules/.bin/nightwatch --config ./tests/Drupal/Nightwatch/nightwatch.conf.js", - "prettier": "prettier --write \"./**/*.es6.js\" \"./tests/Drupal/Nightwatch/**/*.js\"", + "prettier": "prettier --write \"./**/*.es6.js\" \"./tests/Drupal/Nightwatch/**/*.js\" \"./modules/ckeditor5/js/ckeditor5_plugins/**/*.js\"", "spellcheck": "cspell", "spellcheck:make-drupal-dict": "rm -f misc/cspell/dictionary.txt && touch misc/cspell/dictionary.txt && yarn -s spellcheck:core --unique --wordsOnly | tr '[:upper:]' '[:lower:]' | tr -d \\\\\\\\ | LC_ALL=C sort -u -o misc/cspell/dictionary.txt", "spellcheck:core": "cspell \"**/*\" \".*\" \"../composer/**/*\" \"../composer.json\"", - "vendor-update": "node ./scripts/js/assets.js" + "vendor-update": "node ./scripts/js/assets.js", + "ckeditor5:watch": "webpack --mode development --config ./modules/ckeditor5/webpack.config.js --watch", + "ckeditor5:build": "webpack --config ./modules/ckeditor5/webpack.config.js" }, "devDependencies": { "@babel/core": "^7.0.0", "@babel/preset-env": "^7.0.0", "@babel/register": "^7.7.7", + "@ckeditor/ckeditor5-alignment": "~31.0.0", + "@ckeditor/ckeditor5-basic-styles": "~31.0.0", + "@ckeditor/ckeditor5-block-quote": "~31.0.0", + "@ckeditor/ckeditor5-dev-utils": "^25.4.5", + "@ckeditor/ckeditor5-editor-classic": "~31.0.0", + "@ckeditor/ckeditor5-editor-decoupled": "~31.0.0", + "@ckeditor/ckeditor5-essentials": "~31.0.0", + "@ckeditor/ckeditor5-heading": "~31.0.0", + "@ckeditor/ckeditor5-horizontal-line": "~31.0.0", + "@ckeditor/ckeditor5-html-support": "~31.0.0", + "@ckeditor/ckeditor5-image": "~31.0.0", + "@ckeditor/ckeditor5-indent": "~31.0.0", + "@ckeditor/ckeditor5-language": "~31.0.0", + "@ckeditor/ckeditor5-link": "~31.0.0", + "@ckeditor/ckeditor5-list": "~31.0.0", + "@ckeditor/ckeditor5-paste-from-office": "~31.0.0", + "@ckeditor/ckeditor5-remove-format": "~31.0.0", + "@ckeditor/ckeditor5-source-editing": "~31.0.0", + "@ckeditor/ckeditor5-special-characters": "~31.0.0", + "@ckeditor/ckeditor5-table": "~31.0.0", "@drupal/once": "^1.0.1", "@popperjs/core": "^2.9.2", "babel-plugin-add-header-comment": "^1.0.3", @@ -41,6 +63,7 @@ "chalk": "^4.1.0", "chokidar": "^3.3.1", "chromedriver": "^87.0.0", + "ckeditor5": "~31.0.0", "cross-env": "^7.0.2", "cspell": "^5.0.0", "css.escape": "^1.5.1", @@ -63,6 +86,7 @@ "jquery-form": "^4.3.0", "jquery-once": "^2.2.3", "js-cookie": "^3.0.1", + "jsdom": "^18.0.1", "loadjs": "^4.2.0", "minimist": "^1.2.2", "mkdirp": "^1.0.4", @@ -77,6 +101,7 @@ "postcss-pxtorem": "^5.1.1", "postcss-url": "^8.0.0", "prettier": "^2.1.2", + "raw-loader": "^4.0.2", "shepherd.js": "^8.3.1", "sortablejs": "^1.13.0", "stylelint": "^13.0.0", @@ -85,7 +110,10 @@ "stylelint-order": "^4.0.0", "tabbable": "^5.2.0", "terser": "^5.3.4", - "underscore": "^1.13.1" + "terser-webpack-plugin": "^5.2.0", + "underscore": "^1.13.1", + "webpack": "^5.51.1", + "webpack-cli": "^4.4.0" }, "//": "'development is the default environment, and legacy is for transpiling the old jQuery codebase", "babel": { diff --git a/core/scripts/dev/commit-code-check.sh b/core/scripts/dev/commit-code-check.sh index db3eabda9192..e5cba556954c 100755 --- a/core/scripts/dev/commit-code-check.sh +++ b/core/scripts/dev/commit-code-check.sh @@ -286,7 +286,7 @@ ############################################################################ ### JAVASCRIPT FILES ############################################################################ - if [[ -f "$TOP_LEVEL/$FILE" ]] && [[ $FILE =~ \.js$ ]] && [[ ! $FILE =~ ^core/tests/Drupal/Nightwatch ]] && [[ ! $FILE =~ ^core/assets/vendor/jquery.ui/ui ]]; then + if [[ -f "$TOP_LEVEL/$FILE" ]] && [[ $FILE =~ \.js$ ]] && [[ ! $FILE =~ ^core/tests/Drupal/Nightwatch ]] && [[ ! $FILE =~ ^core/assets/vendor/jquery.ui/ui ]] && [[ ! $FILE =~ ^core/modules/ckeditor5/js/ckeditor5_plugins ]]; then # Work out the root name of the JavaScript so we can ensure that the ES6 # version has been compiled correctly. if [[ $FILE =~ \.es6\.js$ ]]; then @@ -327,7 +327,7 @@ else # If there is no .es6.js file then there should be unless the .js is # not really Drupal's. - if ! [[ "$FILE" =~ ^core/assets/vendor ]] && ! [[ "$FILE" =~ ^core/scripts/js ]] && ! [[ "$FILE" =~ ^core/scripts/css ]] && ! [[ "$FILE" =~ core/postcss.config.js ]] && ! [[ -f "$TOP_LEVEL/$BASENAME.es6.js" ]]; then + if ! [[ "$FILE" =~ ^core/assets/vendor ]] && ! [[ "$FILE" =~ ^core/modules/ckeditor5/js/build ]] && ! [[ "$FILE" =~ ^core/scripts/js ]] && ! [[ "$FILE" =~ ^core/scripts/css ]] && ! [[ "$FILE" =~ core/postcss.config.js ]] && ! [[ "$FILE" =~ webpack.config.js$ ]] && ! [[ -f "$TOP_LEVEL/$BASENAME.es6.js" ]] && ! [[ "$FILE" =~ core/modules/ckeditor5/tests/modules/ckeditor5_test/js/build/layercake.js ]]; then printf "${red}FAILURE${reset} $FILE does not have a corresponding $BASENAME.es6.js\n" STATUS=1 fi diff --git a/core/scripts/js/assets.js b/core/scripts/js/assets.js index 5e7186775faf..d6b3cf2586ea 100644 --- a/core/scripts/js/assets.js +++ b/core/scripts/js/assets.js @@ -8,7 +8,7 @@ */ const path = require('path'); -const { copyFile, writeFile, readFile, chmod } = require('fs').promises; +const { copyFile, writeFile, readFile, chmod, rmdir, mkdir, readdir, appendFile } = require('fs').promises; const coreFolder = path.resolve(__dirname, '../../'); const packageFolder = `${coreFolder}/node_modules`; @@ -28,7 +28,7 @@ const assetsFolder = `${coreFolder}/assets/vendor`; const libraryDeclaration = libraries[libraryIndex]; // Get the previous package version. const currentVersion = libraryDeclaration.match(/version: "(.*)"\n/)[1]; - // Replace the version value and the version in the licence URL. + // Replace the version value and the version in the license URL. libraries[libraryIndex] = libraryDeclaration.replace( new RegExp(currentVersion, 'g'), version, @@ -36,6 +36,16 @@ const assetsFolder = `${coreFolder}/assets/vendor`; } } + // CKEditor 5 translation files need some special handling. Start by ensuring + // that an empty /translations directory exists in the + // /core/assets/vendor/ckeditor5 directory. + const ckeditor5Path = `${assetsFolder}/ckeditor5`; + await rmdir(`${ckeditor5Path}/translations`, { recursive: true }) + .catch(() => { + // Nothing to do if the directory doesn't exist. + }); + await mkdir(`${ckeditor5Path}/translations`); + /** * Declare the array that defines what needs to be copied over. * @@ -171,66 +181,249 @@ const assetsFolder = `${coreFolder}/assets/vendor`; pack: 'loadjs', files: [{ from: 'dist/loadjs.min.js', to: 'loadjs.min.js' }], }, - ].map(async ({ pack, files = [], folder = false, library = false }) => { - const sourceFolder = pack; - const libraryName = library || folder || pack; - const destFolder = folder || pack; - - let packageInfo; - // Take the version info from the package.json file. - if (!['joyride', 'farbtastic'].includes(pack)) { - packageInfo = JSON.parse( - await readFile(`${packageFolder}/${sourceFolder}/package.json`), - ); - } - if (packageInfo) { - updateLibraryVersion(libraryName, packageInfo); + { + pack: '@ckeditor/ckeditor5-alignment', + folder: 'ckeditor5', + files: [ + { from: 'build/alignment.js', to: 'alignment.js' } + ], + library: 'ckeditor5.alignment', + }, + { + pack: '@ckeditor/ckeditor5-basic-styles', + folder: 'ckeditor5', + files: [ + { from: 'build/basic-styles.js', to: 'basic-styles.js' } + ], + library: 'ckeditor5.basic', + }, + { + pack: '@ckeditor/ckeditor5-block-quote', + folder: 'ckeditor5', + files: [ + { from: 'build/block-quote.js', to: 'block-quote.js' } + ], + library: 'ckeditor5.blockquote', + }, + { + pack: '@ckeditor/ckeditor5-editor-classic', + folder: 'ckeditor5', + files: [ + { from: 'build/editor-classic.js', to: 'editor-classic.js' } + ], + library: 'ckeditor5.editorClassic', + }, + { + pack: '@ckeditor/ckeditor5-editor-decoupled', + folder: 'ckeditor5', + files: [ + { from: 'build/editor-decoupled.js', to: 'editor-decoupled.js' } + ], + library: 'ckeditor5.editorDecoupled', + }, + { + pack: '@ckeditor/ckeditor5-essentials', + folder: 'ckeditor5', + files: [ + { from: 'build/essentials.js', to: 'essentials.js' } + ], + library: 'ckeditor5.internal', + }, + { + pack: '@ckeditor/ckeditor5-heading', + folder: 'ckeditor5', + files: [ + { from: 'build/heading.js', to: 'heading.js' } + ], + library: 'ckeditor5.internal', + }, + { + pack: '@ckeditor/ckeditor5-horizontal-line', + folder: 'ckeditor5', + files: [ + { from: 'build/horizontal-line.js', to: 'horizontal-line.js' } + ], + library: 'ckeditor5.horizontalLine', + }, + { + pack: '@ckeditor/ckeditor5-image', + folder: 'ckeditor5', + files: [ + { from: 'build/image.js', to: 'image.js' } + ], + library: 'ckeditor5.image', + }, + { + pack: '@ckeditor/ckeditor5-indent', + folder: 'ckeditor5', + files: [ + { from: 'build/indent.js', to: 'indent.js' } + ], + library: 'ckeditor5.indent', + }, + { + pack: '@ckeditor/ckeditor5-language', + folder: 'ckeditor5', + files: [ + { from: 'build/language.js', to: 'language.js' }, + ], + library: 'ckeditor5.language', + }, + { + pack: '@ckeditor/ckeditor5-link', + folder: 'ckeditor5', + files: [ + { from: 'build/link.js', to: 'link.js' } + ], + library: 'ckeditor5.link', + }, + { + pack: '@ckeditor/ckeditor5-list', + folder: 'ckeditor5', + files: [ + { from: 'build/list.js', to: 'list.js' } + ], + library: 'ckeditor5.list', + }, + { + pack: '@ckeditor/ckeditor5-paste-from-office', + folder: 'ckeditor5', + files: [ + { from: 'build/paste-from-office.js', to: 'paste-from-office.js' } + ], + library: 'ckeditor5.pasteFromOffice', + }, + { + pack: '@ckeditor/ckeditor5-remove-format', + folder: 'ckeditor5', + files: [ + { from: 'build/remove-format.js', to: 'remove-format.js' } + ], + library: 'ckeditor5.removeFormat', + }, + { + pack: '@ckeditor/ckeditor5-source-editing', + folder: 'ckeditor5', + files: [ + { from: 'build/source-editing.js', to: 'source-editing.js' } + ], + library: 'ckeditor5.sourceEditing', + }, + { + pack: '@ckeditor/ckeditor5-table', + folder: 'ckeditor5', + files: [ + { from: 'build/table.js', to: 'table.js' } + ], + library: 'ckeditor5.table', + }, + { + pack: '@ckeditor/ckeditor5-html-support', + folder: 'ckeditor5', + files: [ + { from: 'build/html-support.js', to: 'html-support.js' } + ], + library: 'ckeditor5.htmlSupport', + }, + { + pack: '@ckeditor/ckeditor5-special-characters', + folder: 'ckeditor5', + files: [ + { from: 'build/special-characters.js', to: 'special-characters.js' } + ], + library: 'ckeditor5.specialCharacters', + }, + { + pack: 'ckeditor5', + files: [ + { from: 'build/ckeditor5-dll.js', to: 'ckeditor5-dll.js' } + ], } + ]; - files.forEach(async (file) => { - let source = file; - let dest = file; - if (typeof file === 'object') { - source = file.from; - dest = file.to; - } - // For map files, make sure the sources files don't leak outside the - // library folder. In the `sources` member, remove all "../" values at - // the start of the files names to avoid having the virtual files outside - // of the library vendor folder in dev tools. - if (path.extname(source) === '.map') { - console.log('Process map file', source); - const map = await readFile( - `${packageFolder}/${sourceFolder}/${source}`, - ); - const json = JSON.parse(map); - json.sources = json.sources.map((source) => - source.replace(/^(\.\.\/)+/, ''), - ); - await writeFile( - `${assetsFolder}/${destFolder}/${dest}`, - JSON.stringify(json), - ); - } else { - console.log( - 'Copy', - `${sourceFolder}/${source}`, - 'to', - `${destFolder}/${dest}`, - ); - await copyFile( - `${packageFolder}/${sourceFolder}/${source}`, - `${assetsFolder}/${destFolder}/${dest}`, + // Use Array.reduce for sequential processing to avoid corrupting the + // contents of the concatenated CKEditor 5 translation files. + process.reduce(async (previous, { pack, files = [], folder = false, library = false }) => { + return previous.then(async () => { + const sourceFolder = pack; + const libraryName = library || folder || pack; + const destFolder = folder || pack; + + let packageInfo; + // Take the version info from the package.json file. + if (!['joyride', 'farbtastic'].includes(pack)) { + packageInfo = JSON.parse( + await readFile(`${packageFolder}/${sourceFolder}/package.json`), ); - // These 2 files come from a zip file that hasn't been updated in years - // hardcode the permission fix to pass the commit checks. - if (['jquery.joyride-2.1.js', 'marker.png'].includes(dest)) { - await chmod(`${assetsFolder}/${destFolder}/${dest}`, 0o644); - } } + if (packageInfo) { + updateLibraryVersion(libraryName, packageInfo); + } + + // CKEditor 5 packages ship with translation files. + if (pack.startsWith('@ckeditor') || pack === 'ckeditor5') { + const packageTranslationPath = `${packageFolder}/${sourceFolder}/build/translations`; + await readdir(packageTranslationPath, { withFileTypes: true }).then(async (translationFiles) => { + return translationFiles.map(async (translationFile) => { + if (!translationFile.isDirectory()) { + // Translation files are concatenated to a single translation + // file to avoid having to make multiple network requests to + // various translation files. As a trade off, this leads into + // some redundant translations depending on configuration. + await readFile(`${packageTranslationPath}/${translationFile.name}`).then(async (contents) => { + return appendFile(`${assetsFolder}/${destFolder}/translations/${translationFile.name}`, contents); + }); + } + }, Promise.resolve()); + }).catch(() => { + // Do nothing as it's expected that not all packages ship translations. + }); + } + + return files.forEach(async (file) => { + let source = file; + let dest = file; + if (typeof file === 'object') { + source = file.from; + dest = file.to; + } + // For map files, make sure the sources files don't leak outside the + // library folder. In the `sources` member, remove all "../" values at + // the start of the files names to avoid having the virtual files outside + // of the library vendor folder in dev tools. + if (path.extname(source) === '.map') { + console.log('Process map file', source); + const map = await readFile( + `${packageFolder}/${sourceFolder}/${source}`, + ); + const json = JSON.parse(map); + json.sources = json.sources.map((source) => + source.replace(/^(\.\.\/)+/, ''), + ); + await writeFile( + `${assetsFolder}/${destFolder}/${dest}`, + JSON.stringify(json), + ); + } else { + console.log( + 'Copy', + `${sourceFolder}/${source}`, + 'to', + `${destFolder}/${dest}`, + ); + await copyFile( + `${packageFolder}/${sourceFolder}/${source}`, + `${assetsFolder}/${destFolder}/${dest}`, + ); + // These 2 files come from a zip file that hasn't been updated in years + // hardcode the permission fix to pass the commit checks. + if (['jquery.joyride-2.1.js', 'marker.png'].includes(dest)) { + await chmod(`${assetsFolder}/${destFolder}/${dest}`, 0o644); + } + } + }); }); - }); + }, Promise.resolve()); - await Promise.all(process); await writeFile(librariesPath, libraries.join('\n\n')); })(); diff --git a/core/yarn.lock b/core/yarn.lock index ff0c29bfeaac..2670ffc02422 100644 --- a/core/yarn.lock +++ b/core/yarn.lock @@ -894,6 +894,305 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@ckeditor/ckeditor5-alignment@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-31.0.0.tgz#b91e935a9fef8731cea13a83cc6bc3d9391a45cf" + integrity sha512-nbu6O657MyUj+OaUrVTE7VZaHO7KFqCmsYeQJq+endcLiwKqBWEBtBKNRgakJCsgbIvh/7E6QQCr75kmLKa9+Q== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-basic-styles@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-31.0.0.tgz#e65e3b3fd6133b8fa27cca7d30ae61f66f194619" + integrity sha512-1QXryQRj3uQ0Qmef6yMk5V0xjfk3T8fXESi1pHIsy/A3zgSUCUg+/xXJmIOBLp6LLRiL+bju/grbjerbHXEIHg== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-block-quote@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-31.0.0.tgz#8c59783f5168599ff621071a0efeaf60f48007a8" + integrity sha512-T9NPuCWVtNF4EGXn4q8YSyJI1Ry9jJ0PZUv2exKsQAh5DloVXA3ufdAqqi7W/h7S4e5ffF+VAhrgNa0js3BcnA== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-clipboard@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-31.0.0.tgz#158b4089ca2c38d6d29e1399915a82146b0ce6fc" + integrity sha512-wmdYd/bNp3zYA9ERo2ednl+ivf2xYq91iTnUDybxgexRHrMc8mjYTTzevrF4aXY56kpQR8c7dhU+Mzy68F7dTg== + dependencies: + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-engine" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + "@ckeditor/ckeditor5-widget" "^31.0.0" + lodash-es "^4.17.11" + +"@ckeditor/ckeditor5-core@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-31.0.0.tgz#3559042497791a026be56bef5c0bbd18dacc8d74" + integrity sha512-8AvolCaFC/iTDJViNAQk2uJr2LLRieCEc0Kda5OUT0xgeoUF+/B5DYSU3ie8cJOghBSjZmEoZFUApqGaDm0QIA== + dependencies: + "@ckeditor/ckeditor5-engine" "^31.0.0" + "@ckeditor/ckeditor5-ui" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-dev-utils@^25.4.5": + version "25.4.5" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-25.4.5.tgz#723d5a2bbf128f492279e5f9b9c8899fd9a923e5" + integrity sha512-ssW6QPNVG/yz0JxFfivNP8LLFgzAnQvuW2qA90RT9E0+jVpB1E5ayrhuZv2KOKvGeVMc5l7PIoNrR6NShvfOpQ== + dependencies: + "@ckeditor/ckeditor5-dev-webpack-plugin" "^25.4.5" + acorn "^6.2.1" + acorn-walk "^6.2.0" + chalk "^3.0.0" + cssnano "^4.0.0" + del "^5.0.0" + escodegen "^1.9.0" + fs-extra "^8.1.0" + javascript-stringify "^1.6.0" + pofile "^1.0.9" + postcss "^7.0.36" + postcss-import "^12.0.0" + postcss-loader "^3.0.0" + postcss-mixins "^6.2.0" + postcss-nesting "^7.0.0" + raw-loader "^4.0.1" + shelljs "^0.8.1" + style-loader "^1.2.1" + terser-webpack-plugin "^3.0.2" + through2 "^3.0.1" + +"@ckeditor/ckeditor5-dev-webpack-plugin@^25.4.5": + version "25.4.5" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-webpack-plugin/-/ckeditor5-dev-webpack-plugin-25.4.5.tgz#6513dd9d3cf001e3e6be887aa2565b8f69c7897d" + integrity sha512-pR8eUDcq1ssEj2fRIJMKwFQzJj/KARLo78SS+MzmE27b+p4PR+sJERZle6ihzrJO8Y4jgHPbG6G/jsv8BlBzeA== + dependencies: + "@ckeditor/ckeditor5-dev-utils" "^25.4.5" + chalk "^4.0.0" + rimraf "^3.0.2" + semver "^7.3.4" + webpack-sources "^2.0.1" + +"@ckeditor/ckeditor5-editor-classic@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-31.0.0.tgz#6038007a5b4fdbb2a64c48fd5752f2b68201b2ba" + integrity sha512-73uctgAl8cX6//KlW1CUMQFXEK3USw6DfpUJrKXucMrdRksNXllu1WcZbADwcXgQk006byr8DKA51wNI00+daQ== + dependencies: + ckeditor5 "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-editor-decoupled@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-31.0.0.tgz#4730f285919d9428ac4c958375700b91c0a6609c" + integrity sha512-FRjfzldQEk3i0hBSxRdgQWcwRpVeNF7Hvkf50vRFHoZItww/NQWURi+tUwf/Ohkshr4Pv9Rx5Pu/7HOvnJA3sw== + dependencies: + ckeditor5 "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-engine@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-31.0.0.tgz#629cdd6e8824a0679cd1842ce4f511234fba5a89" + integrity sha512-RVsGWx2R9T0cgDZtEo6O5GihvKB3PHoM7SJ/qbmDDWKuhJ/89KZDrWuFrgdNyfZsZwdgNplwnvX8gDvSHpRqkw== + dependencies: + "@ckeditor/ckeditor5-utils" "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-enter@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-31.0.0.tgz#803badc2be7a38ca27a25e3e2de2e44c8905169c" + integrity sha512-FCv890nP1CoBLpZ8gOWmgWhmtNhSzIYODmbogI42pVhtQXbu/wMdlA5PsJF81cdrDL1MlL7Tnmor7+Yk1Ej1QQ== + dependencies: + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-engine" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + +"@ckeditor/ckeditor5-essentials@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-31.0.0.tgz#48928686e44ebf2658af6223ce18fd6e318a9f23" + integrity sha512-S14B/cyushn4n4ANz8H4TjjbxaeH94OG+EDwKL4bXAYn/B1S/I5Cm+MRi7Q8Z3A8A6fjzGhNPUyDx0GnpmKZHQ== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-heading@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-31.0.0.tgz#a0eae16d9d5b0288b250596502a7e9b8f89815d4" + integrity sha512-bAcNG2K7sZWxvTJTriof/lsR81o4QGbpaFcwj62QfTjYP+To5jlD4YhUIcCbg1YpiwlbJr8tv6PuWH6MkNh/5g== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-horizontal-line@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-31.0.0.tgz#4a01738e435474f4213b7430b235912711c39724" + integrity sha512-QBw34CAMZ3KDr69qJ+qlPoMx7nxkv0Z9NrN/ZkguFmFFI+Wa6SvQKw5qhu9f8T6cgGlkruDtXOGBWSoiEIPfUg== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-html-support@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-31.0.0.tgz#02abcfc62102828e752768c7c8e139faec48e7d4" + integrity sha512-ayNDdGqmhQLqUvbNGv4c+4qtzfOFrQsO8OqIsn1TLbCLjyIzHKrVHpAVUWIQCxJBZDUPJKQ/McGLIS2R37LIrQ== + dependencies: + ckeditor5 "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-image@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-31.0.0.tgz#75ea102cac5909c1b2d09a1c4e7f030fc59941bc" + integrity sha512-t7eYiRx4fLbSrBuSV7DoRC8zmTyzUQyind5gWQNWWDq/nF+bEaMkijOmbvak/gKQIl/C15Eo3jV6dPbzDdwgbg== + dependencies: + "@ckeditor/ckeditor5-ui" "^31.0.0" + ckeditor5 "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-indent@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-31.0.0.tgz#397043a4f830a1cef6bded40547c2b2a84c6acb4" + integrity sha512-3WuQFMvbxTzGJkAlNhmXaCqwyrSb0k/8HpTw3M9ef7nu0J0eutwT09bJQrfdyeyZ9I7thOXKjh00wTOAni8y2Q== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-language@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-31.0.0.tgz#807ac9f6bd2c5dd59b07ae8cb169e86c26081b0f" + integrity sha512-3r5pv/xpErMb5QstCEpABFCifdubIw/nKSeVIPza/gIMOYExJOjVJGRsSuqsPu9QxdkxxTY62JTbjlWq/33elw== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-link@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-31.0.0.tgz#4cf4fe0e318c64b038b636f732b87dde8ba6143c" + integrity sha512-CeX05fQIR1p3/aD512vuLedq2OVHJE/toEg3ewZOlWfKan71L3/6wiuuSHO7KkCbp1d/1I/pGOz9G9pBfLUtvg== + dependencies: + "@ckeditor/ckeditor5-ui" "^31.0.0" + ckeditor5 "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-list@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-31.0.0.tgz#a2ef7bc30939774ccdf1b97b132ffcf04f24a5a7" + integrity sha512-lSGobEoHdS94ueyhJ+N7XJmZ6CafCobVy+5cNCOymSVoHAY3GI5xOdkWO9slOxV+i8+/yiHT5NDWuCxTzj3WxQ== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-paragraph@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-31.0.0.tgz#8e5d5b94c362965625b6478dab6ab467144f3d9f" + integrity sha512-v6zSihnX6/C2eQ1P0Q2V1po/u/vkiPqUKYBSagCvW6jexUhUWiAUiBfyc1mS2VUFdyr9Anw6eHaMjbauwnTmFw== + dependencies: + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-ui" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + +"@ckeditor/ckeditor5-paste-from-office@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-31.0.0.tgz#ff001fa47e48feeec18cc3ebba61e1fedded2272" + integrity sha512-ACdbjBOm9SjQGYkA43bX6e+SfCMcyIxnHX7yl2iEXLSZO5kk70xqpKv0tWlg8N5jlcsYPEXR9dHJheWRPehNsg== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-remove-format@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-31.0.0.tgz#e62f7a277a55c0a650582e5f914dd0cb254d865f" + integrity sha512-zAcQjsvqPMro3PqBE3QrladNvKlT6cxRtYN4tWBn+kqg3DPlnZcH9HqeVxf6e2GVwDLkp8xRY9BD2CgyLtGt3Q== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-select-all@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-31.0.0.tgz#59877462ff73cfd490464d9a9eed76288cd592d6" + integrity sha512-+n3LvYx9Kdr+A0AUr012FT8O+5/A7GdkSRMI/L0gAuy1IHXYmPYzbymO+qFLY8lyrAfJvZX6rqFLcnaqtLUL6A== + dependencies: + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-ui" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + +"@ckeditor/ckeditor5-source-editing@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-31.0.0.tgz#eec813af3fb6178631fbeb0a80960722b0f94150" + integrity sha512-PPy6Q0/+APKECexoDgzwj52obpow+PnEuoRFTaEspjgt11Dfw/YB7XjAnvuc2msehSkzDhEnDfsB0rPgVvvnzw== + dependencies: + "@ckeditor/ckeditor5-theme-lark" "^31.0.0" + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-special-characters@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-31.0.0.tgz#d6534ee116e03f4b11ebd3e37db68a833ad594eb" + integrity sha512-ja7WjK+GHpfql+CmVV1R6m5ukiQwwenFaiwyf0e8JYrvG0h7brt32ala8Faum/HvwpaTjoLJZRLlxgtt1sTdQg== + dependencies: + ckeditor5 "^31.0.0" + +"@ckeditor/ckeditor5-table@~31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-31.0.0.tgz#40e19b8dca19f8d7163416bfce3196a122c28323" + integrity sha512-KdotVXhRlJBuYUPkTo/VDvCSoPm4dZSeZDwV0PWTMiAutmxkpdHHG0FGnAJphCPA1BLO0eLj84DkSyMdw3WlsQ== + dependencies: + ckeditor5 "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-theme-lark@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-31.0.0.tgz#713197a129ef346297c4c218d9968f14e9283f74" + integrity sha512-e66pDi5uc6pF7R2LQas64zp1dmi55VfuXabTopsLaaS0TIN1KO6vtKQse7rd9wHGlZPwgonY/YbweeXWIN/EhA== + dependencies: + "@ckeditor/ckeditor5-ui" "^31.0.0" + +"@ckeditor/ckeditor5-typing@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-31.0.0.tgz#cd7ef4fc34985d56d00ae3da2ac85588be43959c" + integrity sha512-7lILwGNhynpUcXKqzzAmPsL57myxqFcv0K1OPb+2jkzEruaYkAINJ3fMYNBwwAxtg2wZDP598ufwonplcSNsJA== + dependencies: + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-engine" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-ui@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-31.0.0.tgz#1c3e7703a99bb3a0e80cab7356d0dc593dc0ef14" + integrity sha512-WDEwToA8FOPi/AeYqdF6isdTM7hJp26WzxDhDNGWC8aYu/zA146Z07qTbYuBOebG9TWqjsZOQYDXbH/4phmyDg== + dependencies: + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-undo@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-31.0.0.tgz#f5b84a9c8cb8183ea0b3ba84a16c4e46b1a12484" + integrity sha512-mTSjiMJ/sSTP485djBiMQ4yD7M0qDIcqDlTV6op34M1eXLY63ZwQUnd9NiOqOLrBiwaBBmnRYlSeZCQjoCuk0A== + dependencies: + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-engine" "^31.0.0" + "@ckeditor/ckeditor5-ui" "^31.0.0" + +"@ckeditor/ckeditor5-upload@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-31.0.0.tgz#caea779bf563077ff96b74491233e0176d317d95" + integrity sha512-ChtGU66fdqwTaOazXtRXcOi6tOzAiTPC5UUv+LycxwSB6MKbqJANg8ny9RoTGWDpHUabb6UHyX8bwlfkXKIqbQ== + dependencies: + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-ui" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + +"@ckeditor/ckeditor5-utils@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-31.0.0.tgz#aeff820668e46dd4ab709da8d5f5089da3cd1b71" + integrity sha512-T9S2x0AUBnhN8BJ7Pg4E8okEUccYBKyu5hp4nH2kMUSmfqeJ0JWC9CD5dA1nDOXvU10J6Rw8VoqkbRx/4MuYEw== + dependencies: + lodash-es "^4.17.15" + +"@ckeditor/ckeditor5-widget@^31.0.0": + version "31.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-31.0.0.tgz#b6bfe9643b36498f11dc44c3dec7bd721eab7081" + integrity sha512-MCpBdT2sD/nRgC825aIaI1Tu7T6OQYvNxc6Q4D+gNkdRbLLZrGoWKHNZdgmQg9Di1WgVO1cPo+h45HO2KYHAMA== + dependencies: + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-engine" "^31.0.0" + "@ckeditor/ckeditor5-enter" "^31.0.0" + "@ckeditor/ckeditor5-typing" "^31.0.0" + "@ckeditor/ckeditor5-ui" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + lodash-es "^4.17.15" + "@cspell/cspell-bundled-dicts@^5.12.3": version "5.12.3" resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.12.3.tgz#d4ae61d03c6f991f4b03b03ee718830522bf74d5" @@ -1120,6 +1419,11 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@discoveryjs/json-ext@^0.5.0": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3" + integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA== + "@drupal/once@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@drupal/once/-/once-1.0.1.tgz#7c1ef480aec6d5fa4b5ae986afa5a607afc38482" @@ -1140,6 +1444,11 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@gar/promisify@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" + integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -1154,6 +1463,14 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1167,6 +1484,11 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + "@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" @@ -1175,6 +1497,22 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@npmcli/fs@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" + integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@popperjs/core@^2.9.2": version "2.10.2" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.10.2.tgz#0798c03351f0dea1a5a4cabddf26a55a7cbee590" @@ -1205,6 +1543,45 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@types/eslint-scope@^3.7.0": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" + integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "7.28.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.2.tgz#0ff2947cdd305897c52d5372294e8c76f351db68" + integrity sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -1217,6 +1594,11 @@ dependencies: "@types/unist" "*" +"@types/minimatch@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + "@types/minimist@^1.2.0": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" @@ -1237,6 +1619,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/q@^1.5.1": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" @@ -1249,16 +1636,202 @@ dependencies: "@types/node" "*" +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.0.tgz#8342bef0badfb7dfd3b576f2574ab80c725be043" + integrity sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg== + +"@webpack-cli/info@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.0.tgz#b9179c3227ab09cbbb149aa733475fcf99430223" + integrity sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.0.tgz#2c275aa05c895eccebbfc34cfb223c6e8bd591a2" + integrity sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + acorn-jsx@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^7.4.0: +acorn-walk@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^6.2.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.4.1, acorn@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" + integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== + agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -1274,7 +1847,17 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1294,6 +1877,11 @@ ajv@^8.0.1: require-from-string "^2.0.2" uri-js "^4.2.2" +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + ansi-colors@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" @@ -1356,6 +1944,21 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + array-includes@^3.1.1, array-includes@^3.1.3, array-includes@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" @@ -1372,11 +1975,28 @@ array-timsort@^1.0.3: resolved "https://registry.yarnpkg.com/array-timsort/-/array-timsort-1.0.3.tgz#3c9e4199e54fb2b9c3fe5976396a21614ef0d926" integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + array.prototype.flat@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" @@ -1422,6 +2042,11 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" @@ -1449,6 +2074,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + autoprefixer@^9.6.1, autoprefixer@^9.8.6: version "9.8.8" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" @@ -1547,6 +2177,19 @@ balanced-match@^2.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9" integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -1554,6 +2197,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -1564,6 +2212,11 @@ bluebird@^3.5.0: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1572,6 +2225,22 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -1579,11 +2248,27 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browserslist@^4.0.0, browserslist@^4.14.5: + version "4.17.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.6.tgz#c76be33e7786b497f66cad25a73756c8b938985d" + integrity sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw== + dependencies: + caniuse-lite "^1.0.30001274" + electron-to-chromium "^1.3.886" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.6.4: version "4.17.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.5.tgz#c827bbe172a4c22b123f5e337533ceebadfdd559" @@ -1610,6 +2295,45 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +cacache@^15.0.5: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -1618,11 +2342,40 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -1637,6 +2390,21 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001274: + version "1.0.30001279" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001279.tgz#eb06818da481ef5096a3b3760f43e5382ed6b0ce" + integrity sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ== + caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001271: version "1.0.30001271" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001271.tgz#0dda0c9bcae2cf5407cd34cac304186616cc83e8" @@ -1655,7 +2423,7 @@ chai-nightwatch@^0.4.0: assertion-error "1.0.0" deep-eql "0.1.3" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1710,6 +2478,16 @@ chokidar@^3.3.1: optionalDependencies: fsevents "~2.3.2" +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + chromedriver@^87.0.0: version "87.0.7" resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-87.0.7.tgz#74041e02ff7f633e91b98eb707e2476f713dc4ca" @@ -1729,6 +2507,34 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ckeditor5@^31.0.0, ckeditor5@~31.0.0: + version "31.0.0" + resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-31.0.0.tgz#304208c1796138c8d063895e8b962f321a627846" + integrity sha512-6e6RJWn4mk3xKASy4DiwF0wz165wxagYfWsun7nB0oM4/s7Ri8T6Ihr433RVdepwaVLwrEp70yjk5pbY02cU9A== + dependencies: + "@ckeditor/ckeditor5-clipboard" "^31.0.0" + "@ckeditor/ckeditor5-core" "^31.0.0" + "@ckeditor/ckeditor5-engine" "^31.0.0" + "@ckeditor/ckeditor5-enter" "^31.0.0" + "@ckeditor/ckeditor5-paragraph" "^31.0.0" + "@ckeditor/ckeditor5-select-all" "^31.0.0" + "@ckeditor/ckeditor5-typing" "^31.0.0" + "@ckeditor/ckeditor5-ui" "^31.0.0" + "@ckeditor/ckeditor5-undo" "^31.0.0" + "@ckeditor/ckeditor5-upload" "^31.0.0" + "@ckeditor/ckeditor5-utils" "^31.0.0" + "@ckeditor/ckeditor5-widget" "^31.0.0" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -1784,7 +2590,24 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -color-convert@^1.9.0: +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -1803,12 +2626,33 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -combined-stream@^1.0.6, combined-stream@~1.0.6: +color-string@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" + integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorette@^2.0.14: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -1820,6 +2664,11 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@^8.2.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" @@ -1841,6 +2690,11 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1870,6 +2724,11 @@ convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + core-js-compat@^3.16.0, core-js-compat@^3.16.2: version "3.19.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.0.tgz#b3b93f93c8721b3ed52b91f12f964cc410967f8b" @@ -1893,6 +2752,16 @@ core-util-is@^1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" @@ -1911,7 +2780,7 @@ cross-env@^7.0.2: dependencies: cross-spawn "^7.0.1" -cross-spawn@^7.0.1, cross-spawn@^7.0.2: +cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2002,6 +2871,19 @@ css-blank-pseudo@^0.1.4: dependencies: postcss "^7.0.5" +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + css-has-pseudo@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" @@ -2017,6 +2899,42 @@ css-prefers-color-scheme@^3.1.1: dependencies: postcss "^7.0.5" +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + css.escape@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" @@ -2037,6 +2955,98 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.0.0: + version "4.1.11" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + cuint@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" @@ -2059,6 +3069,15 @@ data-uri-to-buffer@3: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-urls@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.1.tgz#597fc2ae30f8bc4dbcf731fcd1b1954353afc6f8" + integrity sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^3.0.0" + whatwg-url "^10.0.0" + debug@3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -2080,7 +3099,7 @@ debug@4.3.1: dependencies: ms "2.1.2" -debug@^2.6.9: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2107,6 +3126,16 @@ decamelize@^1.1.0, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.3.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + deep-eql@0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" @@ -2138,6 +3167,28 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + degenerator@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.1.tgz#7ef78ec0c8577a544477308ddf1d2d6e88d51f5b" @@ -2148,6 +3199,20 @@ degenerator@^3.0.1: esprima "^4.0.0" vm2 "^3.9.3" +del@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + dependencies: + globby "^10.0.1" + graceful-fs "^4.2.2" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.1" + p-map "^3.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + del@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" @@ -2182,6 +3247,14 @@ diff@3.5.0: resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2221,6 +3294,13 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -2228,7 +3308,7 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domutils@^1.5.1: +domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -2280,6 +3360,11 @@ electron-to-chromium@^1.3.878: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.880.tgz#58d1a298c5267f2faf440683d038c50ab39a6401" integrity sha512-iwIP/6WoeSimzUKJIQtjtpVDsK8Ir8qQCMXsUBwg+rxJR2Uh3wTNSbxoYRfs+3UWx/9MAnPIxVZCyWkm8MT0uw== +electron-to-chromium@^1.3.886: + version "1.3.893" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.893.tgz#9d804c68953b05ede35409dba0d73dd54c077b4d" + integrity sha512-ChtwF7qB03INq1SyMpue08wc6cve+ktj2UC/Y7se9vB+JryfzziJeYwsgb8jLaCA5GMkHCdn5M62PfSMWhifZg== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2295,6 +3380,11 @@ emoji-regex@^9.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -2302,6 +3392,14 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enhanced-resolve@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" + integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -2319,7 +3417,7 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -envinfo@^7.5.1: +envinfo@^7.5.1, envinfo@^7.7.3: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== @@ -2331,7 +3429,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1: +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== @@ -2357,6 +3455,11 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2386,7 +3489,7 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.8.1: +escodegen@^1.8.1, escodegen@^1.9.0: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -2398,6 +3501,18 @@ escodegen@^1.8.1: optionalDependencies: source-map "~0.6.1" +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-config-airbnb-base@^14.2.1: version "14.2.1" resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" @@ -2523,7 +3638,7 @@ eslint-plugin-yml@^0.10.0: natural-compare "^1.4.0" yaml-eslint-parser "^0.4.0" -eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -2637,6 +3752,26 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + execall@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" @@ -2644,11 +3779,53 @@ execall@^2.0.0: dependencies: clone-regexp "^2.1.0" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + extract-zip@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -2684,7 +3861,19 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.1.1, fast-glob@^3.2.5: +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.5: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== @@ -2743,6 +3932,16 @@ filelist@^1.0.1: dependencies: minimatch "^3.0.4" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2759,6 +3958,15 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + find-up@3.0.0, find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -2773,7 +3981,7 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -2819,11 +4027,25 @@ follow-redirects@^1.14.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -2833,6 +4055,13 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + fs-extra@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" @@ -2851,6 +4080,13 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2920,6 +4156,11 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -2940,6 +4181,11 @@ get-uri@3: fs-extra "^8.1.0" ftp "^0.3.10" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -2947,6 +4193,14 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -2954,6 +4208,16 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -2966,7 +4230,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.2, glob@^7.1.3, glob@^7.2.0: +glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -3013,6 +4277,20 @@ globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + globby@^11.0.1, globby@^11.0.3: version "11.0.4" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" @@ -3025,6 +4303,19 @@ globby@^11.0.1, globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" +globby@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + globjoin@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" @@ -3037,7 +4328,7 @@ gonzales-pe@^4.3.0: dependencies: minimist "^1.2.5" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== @@ -3097,7 +4388,38 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -3109,6 +4431,11 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -3121,6 +4448,23 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + html-tags@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" @@ -3158,6 +4502,15 @@ http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -3175,6 +4528,11 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0: agent-base "6" debug "4" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -3182,16 +4540,48 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.1.1: + version "5.1.9" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" + integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== + ignore@^5.1.4, ignore@^5.1.8: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -3200,11 +4590,26 @@ import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + import-lazy@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== +import-local@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" + integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3220,6 +4625,11 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3228,7 +4638,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3247,6 +4657,16 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + ip-regex@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" @@ -3257,6 +4677,25 @@ ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" @@ -3275,6 +4714,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -3297,6 +4741,11 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + is-buffer@^2.0.0, is-buffer@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -3307,6 +4756,18 @@ is-callable@^1.1.4, is-callable@^1.2.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.7.0: version "2.8.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" @@ -3314,6 +4775,20 @@ is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.7.0: dependencies: has "^1.0.3" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -3326,7 +4801,42 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-extglob@^2.1.1: +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -3341,6 +4851,13 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -3370,6 +4887,13 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -3385,7 +4909,7 @@ is-path-cwd@^2.2.0: resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-inside@^3.0.2: +is-path-inside@^3.0.1, is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== @@ -3400,13 +4924,18 @@ is-plain-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -3420,11 +4949,21 @@ is-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + is-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -3461,6 +5000,11 @@ is-weakref@^1.0.1: dependencies: call-bind "^1.0.0" +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + is2@^2.0.6: version "2.0.7" resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.7.tgz#d084e10cab3bd45d6c9dfde7a48599fcbb93fcac" @@ -3475,12 +5019,24 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= +isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^3.0.1: +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= @@ -3500,6 +5056,29 @@ jake@^10.6.1: filelist "^1.0.1" minimatch "^3.0.4" +javascript-stringify@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" + integrity sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM= + +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^27.0.6: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2" + integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + "joyride@https://github.com/zurb/joyride/archive/refs/heads/v2.1.tar.gz": version "0.0.0" resolved "https://github.com/zurb/joyride/archive/refs/heads/v2.1.tar.gz#a2149b220318565de072ed0c956310cd7c30c7d7" @@ -3554,6 +5133,39 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdom@^18.0.1: + version "18.0.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-18.0.1.tgz#7317c91be425f31ff25814ad427eed8a2a310b61" + integrity sha512-mgVzrYP4IJiJKVqXkAdBn+jg+nQgPusBxTJulz3m1Y/1RIrkk8aDoNaQE5BNbHwe72WwiwE7k3Av2THXDpvzPQ== + dependencies: + abab "^2.0.5" + acorn "^8.5.0" + acorn-globals "^6.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.1" + decimal.js "^10.3.1" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^10.0.0" + ws "^8.2.3" + xml-name-validator "^4.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -3564,6 +5176,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -3642,7 +5259,26 @@ jsprim@^1.2.2: array-includes "^3.1.3" object.assign "^4.1.2" -kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -3685,6 +5321,29 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + +loader-utils@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + loadjs@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/loadjs/-/loadjs-4.2.0.tgz#2a0336376397a6a43edf98c9ec3229ddd5abb6f6" @@ -3720,6 +5379,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash-es@^4.17.11, lodash-es@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash._arraycopy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" @@ -3818,6 +5482,11 @@ lodash.keys@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -3828,6 +5497,11 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -3889,13 +5563,18 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -3906,6 +5585,13 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + mathml-tag-names@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" @@ -3939,6 +5625,16 @@ mdast-util-to-string@^2.0.0: resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + meow@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" @@ -3957,7 +5653,12 @@ meow@^9.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" -merge2@^1.3.0: +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -3970,6 +5671,25 @@ micromark@~2.11.0: debug "^4.0.0" parse-entities "^2.0.0" +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + micromatch@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" @@ -3983,6 +5703,11 @@ mime-db@1.50.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.33" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" @@ -3990,6 +5715,13 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.50.0" +mime-types@^2.1.27: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + mime@^2.3.1: version "2.5.2" resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" @@ -4026,6 +5758,50 @@ minimist@^1.2.0, minimist@^1.2.2, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" + integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + mkdirp@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" @@ -4033,14 +5809,14 @@ mkdirp@0.5.4: dependencies: minimist "^1.2.5" -mkdirp@^0.5.0: +mkdirp@^0.5.0, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -mkdirp@^1.0.4: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -4104,11 +5880,33 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + netmask@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" @@ -4193,16 +5991,40 @@ normalize-selector@^0.2.0: resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + normalize.css@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -4213,6 +6035,15 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + object-inspect@^1.11.0, object-inspect@^1.9.0: version "1.11.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" @@ -4223,6 +6054,13 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + object.assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" @@ -4261,7 +6099,7 @@ object.fromentries@^2.0.4: define-properties "^1.1.3" es-abstract "^1.19.1" -object.getownpropertydescriptors@^2.0.3: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: version "2.1.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== @@ -4278,7 +6116,14 @@ object.hasown@^1.0.0: define-properties "^1.1.3" es-abstract "^1.19.1" -object.values@^1.1.4, object.values@^1.1.5: +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.4, object.values@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== @@ -4294,7 +6139,7 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -4388,6 +6233,13 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -4455,6 +6307,14 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -4465,6 +6325,21 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -4480,7 +6355,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -4490,6 +6365,13 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -4530,6 +6412,11 @@ pify@^2.3.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -4556,6 +6443,23 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pofile@^1.0.9: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pofile/-/pofile-1.1.1.tgz#a581df04a6fae4941eebd7c1211dbd43700c5541" + integrity sha512-RVAzFGo1Mx9+YukVKSgTLut6r4ZVBW8IVrqGHAPfEsVJN93WSp5HRD6+qNa7av1q/joPKDNJd55m5AJl9GBQGA== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + postcss-attribute-case-insensitive@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" @@ -4615,6 +6519,25 @@ postcss-color-rebeccapurple@^4.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + postcss-custom-media@^7.0.8: version "7.0.8" resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" @@ -4646,6 +6569,34 @@ postcss-dir-pseudo-class@^5.0.0: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + postcss-double-position-gradients@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" @@ -4713,7 +6664,7 @@ postcss-image-set-function@^3.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-import@^12.0.1: +postcss-import@^12.0.0, postcss-import@^12.0.1: version "12.0.1" resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-12.0.1.tgz#cf8c7ab0b5ccab5649024536e565f841928b7153" integrity sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw== @@ -4730,6 +6681,14 @@ postcss-initial@^3.0.0: dependencies: postcss "^7.0.2" +postcss-js@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.3.tgz#a96f0f23ff3d08cec7dc5b11bf11c5f8077cdab9" + integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w== + dependencies: + camelcase-css "^2.0.1" + postcss "^7.0.18" + postcss-lab-function@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" @@ -4744,33 +6703,214 @@ postcss-less@^3.1.4: resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== dependencies: - postcss "^7.0.14" + postcss "^7.0.14" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-media-query-parser@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-mixins@^6.2.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-6.2.3.tgz#021893ba455d04b5baa052bf196297ddd70e4af1" + integrity sha512-gfH5d09YilzDn/CLGFA9Lwv7GTezuyHgnAyXC8AfvhUMpl67ZTewhcpNuOgawClCOD+76XePE2IHO1xMgsOlvA== + dependencies: + globby "^8.0.1" + postcss "^7.0.21" + postcss-js "^2.0.3" + postcss-simple-vars "^5.0.2" + sugarss "^2.0.0" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== dependencies: - postcss "^7.0.2" + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== dependencies: - postcss "^7.0.2" + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-media-query-parser@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" - integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== dependencies: - postcss "^7.0.2" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" postcss-overflow-shorthand@^2.0.0: version "2.0.0" @@ -4852,6 +6992,26 @@ postcss-pxtorem@^5.1.1: dependencies: postcss "^7.0.27" +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + postcss-replace-overflow-wrap@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" @@ -4902,6 +7062,15 @@ postcss-selector-not@^4.0.0: balanced-match "^1.0.0" postcss "^7.0.2" +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" @@ -4919,6 +7088,13 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.5: cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-simple-vars@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-5.0.2.tgz#e2f81b3d0847ddd4169816b6d141b91d51e6e22e" + integrity sha512-xWIufxBoINJv6JiLb7jl5oElgp+6puJwvT5zZHliUSydoLz4DADRB3NDDsYgfKVwojn4TDLiseoC65MuS8oGGg== + dependencies: + postcss "^7.0.14" + postcss-sorting@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-5.0.1.tgz#10d5d0059eea8334dacc820c0121864035bc3f11" @@ -4927,11 +7103,29 @@ postcss-sorting@^5.0.1: lodash "^4.17.14" postcss "^7.0.17" +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + postcss-syntax@^0.36.2: version "0.36.2" resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + postcss-url@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-8.0.0.tgz#7b10059bd12929cdbb1971c60f61a0e5af86b4ca" @@ -4943,7 +7137,7 @@ postcss-url@^8.0.0: postcss "^7.0.2" xxhashjs "^0.2.1" -postcss-value-parser@^3.2.3: +postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== @@ -4962,7 +7156,7 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: version "7.0.39" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== @@ -4997,6 +7191,11 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -5025,7 +7224,7 @@ proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -psl@^1.1.28: +psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== @@ -5043,6 +7242,11 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -5058,6 +7262,13 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + raw-body@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" @@ -5068,6 +7279,14 @@ raw-body@^2.2.0: iconv-lite "0.4.24" unpipe "1.0.0" +raw-loader@^4.0.1, raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -5109,7 +7328,7 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^3.1.1: +"readable-stream@2 || 3", readable-stream@^3.1.1: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -5125,6 +7344,20 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -5157,6 +7390,14 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + regexp.prototype.flags@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" @@ -5217,6 +7458,11 @@ remark@^13.0.0: remark-stringify "^9.0.0" unified "^9.1.0" +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + repeat-string@^1.0.0, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -5280,6 +7526,18 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -5297,7 +7555,12 @@ resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0: +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -5321,12 +7584,27 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -5340,7 +7618,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -5350,11 +7628,57 @@ safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + "semver@2 || 3 || 4 || 5", semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -5370,18 +7694,42 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.4: +semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" @@ -5406,6 +7754,15 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shelljs@^0.8.1: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + shepherd.js@^8.3.1: version "8.3.1" resolved "https://registry.yarnpkg.com/shepherd.js/-/shepherd.js-8.3.1.tgz#131eeefc5eb2bc44c9e23d0da139db46b2b55339" @@ -5424,11 +7781,23 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2: +signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.5" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -5453,6 +7822,36 @@ smoothscroll-polyfill@^0.4.4: resolved "https://registry.yarnpkg.com/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz#3a259131dc6930e6ca80003e1cb03b603b69abf8" integrity sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg== +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + socks-proxy-agent@5, socks-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" @@ -5475,7 +7874,23 @@ sortablejs@^1.13.0: resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.14.0.tgz#6d2e17ccbdb25f464734df621d4f35d4ab35b3d8" integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w== -source-map-support@^0.5.16, source-map-support@~0.5.20: +source-list-map@^2.0.0, source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.16, source-map-support@~0.5.12, source-map-support@~0.5.20: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== @@ -5483,7 +7898,12 @@ source-map-support@^0.5.16, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.5.0: +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -5529,6 +7949,13 @@ specificity@^0.4.1: resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -5549,6 +7976,26 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + "statuses@>= 1.5.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" @@ -5653,6 +8100,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -5670,11 +8122,28 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +style-loader@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.7.0" + style-search@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + stylelint-checkstyle-formatter@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/stylelint-checkstyle-formatter/-/stylelint-checkstyle-formatter-0.1.2.tgz#a127d97d352ec0e98229945db9768a65e1a89ca5" @@ -5778,18 +8247,49 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + tabbable@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-5.2.1.tgz#e3fda7367ddbb172dcda9f871c0fdb36d1c4cd9c" @@ -5807,6 +8307,23 @@ table@^6.0.9, table@^6.6.0: string-width "^4.2.3" strip-ansi "^6.0.1" +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar@^6.0.2: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + tcp-port-used@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.2.tgz#9652b7436eb1f4cfae111c79b558a25769f6faea" @@ -5815,7 +8332,42 @@ tcp-port-used@^1.0.1: debug "4.3.1" is2 "^2.0.6" -terser@^5.3.4: +terser-webpack-plugin@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz#91e6d39571460ed240c0cf69d295bcf30ebf98cb" + integrity sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.2.1" + p-limit "^3.0.2" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.8.0" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.0: + version "5.2.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz#ce65b9880a0c36872555c4874f45bbdb02ee32c9" + integrity sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g== + dependencies: + jest-worker "^27.0.6" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.3.4, terser@^5.7.2: version "5.9.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== @@ -5829,11 +8381,39 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +through2@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== + dependencies: + inherits "^2.0.4" + readable-stream "2 || 3" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -5841,6 +8421,16 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -5854,6 +8444,22 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" @@ -5987,11 +8593,40 @@ unified@^9.1.0: trough "^1.0.0" vfile "^4.0.0" +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -6018,7 +8653,7 @@ unist-util-stringify-position@^2.0.0: dependencies: "@types/unist" "^2.0.2" -universalify@^0.1.0: +universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -6033,6 +8668,19 @@ unpipe@1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -6040,11 +8688,31 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -6063,6 +8731,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -6100,6 +8773,28 @@ vscode-uri@^3.0.2: resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.2.tgz#ecfd1d066cb8ef4c3a208decdbab9a8c23d055d0" integrity sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA== +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" + integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== + dependencies: + xml-name-validator "^4.0.0" + +watchpack@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" + integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -6107,6 +8802,108 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +webpack-cli@^4.4.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.1.tgz#b64be825e2d1b130f285c314caa3b1ba9a4632b3" + integrity sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.1.0" + "@webpack-cli/info" "^1.4.0" + "@webpack-cli/serve" "^1.6.0" + colorette "^2.0.14" + commander "^7.0.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^2.0.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-sources@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d" + integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== + +webpack@^5.51.1: + version "5.63.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.63.0.tgz#4b074115800e0526d85112985e46c64b95e04aaf" + integrity sha512-HYrw6bkj/MDmphAXvqLEvn2fVoDZsYu6O638WjK6lSNgIpjb5jl/KtOrqJyU9EC/ZV9mLUmZW5h4mASB+CVA4A== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.50" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.8.3" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.2.0" + webpack-sources "^3.2.0" + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" + integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -6144,6 +8941,11 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -6173,11 +8975,26 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +ws@^8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" + integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== + xdg-basedir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xregexp@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" -- GitLab From 56fa4e202ceb7d531e33be2f1514956559870d4f Mon Sep 17 00:00:00 2001 From: xjm <xjm@65776.no-reply.drupal.org> Date: Fri, 12 Nov 2021 13:20:31 -0600 Subject: [PATCH 27/69] Drupal 9.3.0-beta1 --- composer.lock | 12 ++++-------- composer/Metapackage/CoreRecommended/composer.json | 2 +- .../Metapackage/PinnedDevDependencies/composer.json | 2 +- composer/Template/LegacyProject/composer.json | 2 +- composer/Template/RecommendedProject/composer.json | 2 +- core/lib/Drupal.php | 2 +- 6 files changed, 9 insertions(+), 13 deletions(-) diff --git a/composer.lock b/composer.lock index 74c5c365ef38..5e9208be5742 100644 --- a/composer.lock +++ b/composer.lock @@ -531,7 +531,7 @@ }, { "name": "drupal/core", - "version": "9.3.x-dev", + "version": "9.3.0-beta1", "dist": { "type": "path", "url": "core", @@ -788,7 +788,7 @@ }, { "name": "drupal/core-project-message", - "version": "9.3.x-dev", + "version": "9.3.0-beta1", "dist": { "type": "path", "url": "composer/Plugin/ProjectMessage", @@ -821,7 +821,7 @@ }, { "name": "drupal/core-vendor-hardening", - "version": "9.3.x-dev", + "version": "9.3.0-beta1", "dist": { "type": "path", "url": "composer/Plugin/VendorHardening", @@ -7901,11 +7901,7 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "drupal/core": 20, - "drupal/core-project-message": 20, - "drupal/core-vendor-hardening": 20 - }, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": [], diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 0dc75a816089..b557a3707392 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-strict": "*" }, "require": { - "drupal/core": "9.3.x-dev", + "drupal/core": "9.3.0-beta1", "asm89/stack-cors": "1.3.0", "composer/semver": "3.2.6", "doctrine/annotations": "1.13.2", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index 26eb7a5f52c7..e4a0271271ba 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-require-dev": "*" }, "require": { - "drupal/core": "9.3.x-dev", + "drupal/core": "9.3.0-beta1", "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.3.1", diff --git a/composer/Template/LegacyProject/composer.json b/composer/Template/LegacyProject/composer.json index 1b1a2af337ab..afc7c7f0dcf1 100644 --- a/composer/Template/LegacyProject/composer.json +++ b/composer/Template/LegacyProject/composer.json @@ -27,7 +27,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "beta", "prefer-stable": true, "config": { "sort-packages": true diff --git a/composer/Template/RecommendedProject/composer.json b/composer/Template/RecommendedProject/composer.json index 99e9f55f2394..8b2984364d5f 100644 --- a/composer/Template/RecommendedProject/composer.json +++ b/composer/Template/RecommendedProject/composer.json @@ -26,7 +26,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "beta", "prefer-stable": true, "config": { "sort-packages": true diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php index 4ffa6c6f0b0b..470e5e33840e 100644 --- a/core/lib/Drupal.php +++ b/core/lib/Drupal.php @@ -75,7 +75,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '9.3.0-dev'; + const VERSION = '9.3.0-beta1'; /** * Core API compatibility. -- GitLab From 460665f72c96781bf686de6ef8d237d026dd96c1 Mon Sep 17 00:00:00 2001 From: xjm <xjm@65776.no-reply.drupal.org> Date: Fri, 12 Nov 2021 13:20:32 -0600 Subject: [PATCH 28/69] Back to dev. --- composer.lock | 12 ++++++++---- composer/Metapackage/CoreRecommended/composer.json | 2 +- .../Metapackage/PinnedDevDependencies/composer.json | 2 +- composer/Template/LegacyProject/composer.json | 2 +- composer/Template/RecommendedProject/composer.json | 2 +- core/lib/Drupal.php | 2 +- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/composer.lock b/composer.lock index 5e9208be5742..74c5c365ef38 100644 --- a/composer.lock +++ b/composer.lock @@ -531,7 +531,7 @@ }, { "name": "drupal/core", - "version": "9.3.0-beta1", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "core", @@ -788,7 +788,7 @@ }, { "name": "drupal/core-project-message", - "version": "9.3.0-beta1", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "composer/Plugin/ProjectMessage", @@ -821,7 +821,7 @@ }, { "name": "drupal/core-vendor-hardening", - "version": "9.3.0-beta1", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "composer/Plugin/VendorHardening", @@ -7901,7 +7901,11 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": { + "drupal/core": 20, + "drupal/core-project-message": 20, + "drupal/core-vendor-hardening": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": [], diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index b557a3707392..0dc75a816089 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-strict": "*" }, "require": { - "drupal/core": "9.3.0-beta1", + "drupal/core": "9.3.x-dev", "asm89/stack-cors": "1.3.0", "composer/semver": "3.2.6", "doctrine/annotations": "1.13.2", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index e4a0271271ba..26eb7a5f52c7 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-require-dev": "*" }, "require": { - "drupal/core": "9.3.0-beta1", + "drupal/core": "9.3.x-dev", "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.3.1", diff --git a/composer/Template/LegacyProject/composer.json b/composer/Template/LegacyProject/composer.json index afc7c7f0dcf1..1b1a2af337ab 100644 --- a/composer/Template/LegacyProject/composer.json +++ b/composer/Template/LegacyProject/composer.json @@ -27,7 +27,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "beta", + "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true diff --git a/composer/Template/RecommendedProject/composer.json b/composer/Template/RecommendedProject/composer.json index 8b2984364d5f..99e9f55f2394 100644 --- a/composer/Template/RecommendedProject/composer.json +++ b/composer/Template/RecommendedProject/composer.json @@ -26,7 +26,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "beta", + "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php index 470e5e33840e..4ffa6c6f0b0b 100644 --- a/core/lib/Drupal.php +++ b/core/lib/Drupal.php @@ -75,7 +75,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '9.3.0-beta1'; + const VERSION = '9.3.0-dev'; /** * Core API compatibility. -- GitLab From f436f7c014bac61e0779a72d1dc84a2b6a5902bd Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Mon, 15 Nov 2021 12:19:43 +1000 Subject: [PATCH 29/69] Issue #3222251 by bbrala, longwave: [November 8, 2021] Replace all isset constructs with the null coalescing operator (cherry picked from commit 330473e759cbe9fd0e9a404b48ad18aebd0293a7) --- composer/Generator/Util/DrupalCoreComposer.php | 2 +- composer/Plugin/VendorHardening/Config.php | 4 ++-- core/includes/batch.inc | 2 +- core/includes/bootstrap.inc | 4 ++-- core/includes/common.inc | 4 ++-- core/includes/errors.inc | 2 +- core/includes/form.inc | 14 +++++++------- core/includes/install.core.inc | 2 +- core/includes/install.inc | 4 ++-- core/includes/theme.inc | 12 ++++++------ .../lib/Drupal/Component/Annotation/Plugin.php | 2 +- .../DependencyInjection/Container.php | 10 +++++----- .../DependencyInjection/PhpArrayContainer.php | 8 ++++---- .../ContainerAwareEventDispatcher.php | 4 ++-- .../Drupal/Component/FileCache/FileCache.php | 2 +- .../Component/Gettext/PoStreamReader.php | 2 +- .../Plugin/ContextAwarePluginBase.php | 2 +- .../Transliteration/PhpTransliteration.php | 2 +- .../lib/Drupal/Component/Utility/UserAgent.php | 4 ++-- .../Ajax/AjaxResponseAttachmentsProcessor.php | 4 ++-- .../lib/Drupal/Core/Annotation/Translation.php | 2 +- .../Core/Asset/LibraryDiscoveryParser.php | 2 +- .../Authentication/AuthenticationCollector.php | 2 +- core/lib/Drupal/Core/Cache/ApcuBackend.php | 2 +- .../Core/Cache/ChainedFastBackendFactory.php | 2 +- core/lib/Drupal/Core/Cache/MemoryBackend.php | 2 +- .../Drupal/Core/Cache/MemoryCounterBackend.php | 4 ++-- core/lib/Drupal/Core/Cache/PhpBackend.php | 2 +- core/lib/Drupal/Core/Command/DbDumpCommand.php | 2 +- .../lib/Drupal/Core/Command/InstallCommand.php | 4 ++-- core/lib/Drupal/Core/Config/CachedStorage.php | 2 +- core/lib/Drupal/Core/Config/Config.php | 4 ++-- core/lib/Drupal/Core/Config/ConfigBase.php | 2 +- .../Core/Config/ConfigCollectionInfo.php | 2 +- .../Core/Config/Entity/ConfigEntityBase.php | 8 ++++---- .../Core/Config/Entity/ConfigEntityStorage.php | 2 +- .../Drupal/Core/Config/Entity/Query/Query.php | 4 ++-- .../Drupal/Core/Config/Schema/ArrayElement.php | 4 ++-- core/lib/Drupal/Core/Config/Schema/Mapping.php | 4 ++-- .../lib/Drupal/Core/Config/Schema/Sequence.php | 2 +- .../Config/Schema/SequenceDataDefinition.php | 2 +- core/lib/Drupal/Core/Cron.php | 2 +- core/lib/Drupal/Core/Database/Connection.php | 2 +- .../Core/Database/Driver/mysql/Schema.php | 2 +- .../Core/Database/Driver/pgsql/Connection.php | 2 +- .../Core/Database/Driver/sqlite/Connection.php | 2 +- .../Drupal/Core/Database/Query/Condition.php | 2 +- core/lib/Drupal/Core/Database/Query/Merge.php | 2 +- core/lib/Drupal/Core/Database/Query/Select.php | 4 ++-- .../Drupal/Core/Database/StatementPrefetch.php | 6 +++--- .../Drupal/Core/Datetime/Element/Datetime.php | 2 +- .../Compiler/MimeTypePass.php | 2 +- .../Compiler/RegisterEventSubscribersPass.php | 4 ++-- .../Compiler/StackedKernelPass.php | 2 +- .../Compiler/StackedSessionHandlerPass.php | 2 +- .../Compiler/TaggedHandlersPass.php | 16 ++++++++-------- .../DependencyInjection/YamlFileLoader.php | 4 ++-- core/lib/Drupal/Core/DrupalKernel.php | 4 ++-- .../Drupal/Core/Entity/ContentEntityBase.php | 2 +- .../Core/Entity/ContentEntityStorageBase.php | 2 +- .../Drupal/Core/Entity/ContentEntityType.php | 2 +- .../Entity/Controller/EntityController.php | 2 +- .../Core/Entity/Element/EntityAutocomplete.php | 6 +++--- .../Core/Entity/Entity/EntityFormDisplay.php | 2 +- core/lib/Drupal/Core/Entity/EntityBase.php | 4 ++-- .../Drupal/Core/Entity/EntityDisplayBase.php | 6 +++--- .../Drupal/Core/Entity/EntityFieldManager.php | 2 +- .../Drupal/Core/Entity/EntityStorageBase.php | 2 +- core/lib/Drupal/Core/Entity/EntityType.php | 8 ++++---- .../Core/Entity/EntityTypeBundleInfo.php | 2 +- .../Drupal/Core/Entity/EntityTypeManager.php | 2 +- .../Drupal/Core/Entity/EntityViewBuilder.php | 2 +- .../lib/Drupal/Core/Entity/Query/QueryBase.php | 4 ++-- .../lib/Drupal/Core/Entity/Query/Sql/Query.php | 2 +- .../Entity/Sql/SqlContentEntityStorage.php | 2 +- .../Entity/TypedData/EntityDataDefinition.php | 9 +++------ .../EventSubscriber/ConfigImportSubscriber.php | 2 +- .../Core/Extension/InfoParserDynamic.php | 2 +- .../Core/Extension/ModuleExtensionList.php | 2 +- .../Drupal/Core/Extension/ModuleHandler.php | 4 ++-- .../Drupal/Core/Extension/ModuleInstaller.php | 4 ++-- .../Drupal/Core/Field/BaseFieldDefinition.php | 18 +++++++++--------- core/lib/Drupal/Core/Field/FieldConfigBase.php | 2 +- core/lib/Drupal/Core/Field/FieldDefinition.php | 8 ++++---- .../EntityReferenceEntityFormatter.php | 2 +- .../Field/FieldWidget/EmailDefaultWidget.php | 2 +- .../EntityReferenceAutocompleteWidget.php | 4 ++-- .../Plugin/Field/FieldWidget/NumberWidget.php | 2 +- .../FieldWidget/StringTextfieldWidget.php | 2 +- .../Plugin/Field/FieldWidget/UriWidget.php | 2 +- .../Drupal/Core/Field/PluginSettingsBase.php | 6 +++--- core/lib/Drupal/Core/Field/WidgetBase.php | 8 ++++---- .../Drupal/Core/Field/WidgetPluginManager.php | 2 +- core/lib/Drupal/Core/Form/FormBuilder.php | 2 +- core/lib/Drupal/Core/Http/LinkRelationType.php | 6 +++--- .../Core/Installer/Form/SelectProfileForm.php | 2 +- .../Drupal/Core/KeyValueStore/StorageBase.php | 2 +- .../Drupal/Core/Language/LanguageManager.php | 2 +- .../Drupal/Core/Layout/LayoutDefinition.php | 4 ++-- .../Drupal/Core/Layout/LayoutPluginManager.php | 4 ++-- .../Drupal/Core/Menu/LocalActionDefault.php | 2 +- core/lib/Drupal/Core/Menu/LocalTaskDefault.php | 2 +- core/lib/Drupal/Core/Menu/MenuLinkBase.php | 4 ++-- core/lib/Drupal/Core/Menu/MenuTreeStorage.php | 4 ++-- core/lib/Drupal/Core/Pager/PagerManager.php | 2 +- .../Core/PhpStorage/PhpStorageFactory.php | 2 +- .../Plugin/CategorizingPluginManagerTrait.php | 4 ++-- .../Core/Plugin/Context/ContextDefinition.php | 2 +- .../Core/Plugin/Context/ContextHandler.php | 2 +- .../Core/Plugin/ContextAwarePluginTrait.php | 2 +- .../Plugin/DefaultLazyPluginCollection.php | 2 +- .../Drupal/Core/Render/Element/Checkbox.php | 2 +- .../Drupal/Core/Render/Element/Checkboxes.php | 2 +- .../Drupal/Core/Render/Element/FormElement.php | 2 +- .../lib/Drupal/Core/Render/Element/HtmlTag.php | 6 +++--- core/lib/Drupal/Core/Render/Element/Number.php | 2 +- core/lib/Drupal/Core/Render/Element/Radios.php | 6 +++--- .../Drupal/Core/Render/Element/Tableselect.php | 4 ++-- .../Drupal/Core/Render/ElementInfoManager.php | 4 ++-- .../HtmlResponseAttachmentsProcessor.php | 2 +- .../Core/Render/MainContent/DialogRenderer.php | 2 +- .../Core/Render/MainContent/HtmlRenderer.php | 4 ++-- .../Core/Render/MainContent/ModalRenderer.php | 2 +- .../Render/MainContent/OffCanvasRenderer.php | 2 +- core/lib/Drupal/Core/Render/RenderCache.php | 4 ++-- core/lib/Drupal/Core/Render/Renderer.php | 10 +++++----- core/lib/Drupal/Core/Site/Settings.php | 2 +- core/lib/Drupal/Core/State/State.php | 2 +- .../StringTranslation/TranslatableMarkup.php | 2 +- .../Core/Test/FunctionalTestSetupTrait.php | 6 +++--- core/lib/Drupal/Core/Test/TestSetupTrait.php | 2 +- core/lib/Drupal/Core/Theme/Registry.php | 2 +- .../Drupal/Core/Theme/ThemeInitialization.php | 4 ++-- .../Core/TypedData/ComputedItemListTrait.php | 2 +- .../Drupal/Core/TypedData/DataDefinition.php | 12 ++++++------ .../TypedData/Plugin/DataType/ItemList.php | 4 ++-- .../Core/TypedData/Plugin/DataType/Map.php | 2 +- .../Core/Validation/DrupalTranslator.php | 2 +- core/modules/big_pipe/src/Render/BigPipe.php | 4 ++-- core/modules/block/src/BlockForm.php | 2 +- core/modules/book/src/BookManager.php | 8 ++++---- core/modules/ckeditor/ckeditor.admin.inc | 2 +- core/modules/comment/src/CommentManager.php | 2 +- .../FieldFormatter/CommentDefaultFormatter.php | 2 +- .../src/FormElement/ListElement.php | 2 +- .../src/FormElement/PluralVariants.php | 4 ++-- .../tests/src/Unit/ConfigNamesMapperTest.php | 2 +- core/modules/contact/contact.module | 2 +- .../Form/ContentModerationConfigureForm.php | 2 +- .../Plugin/WorkflowType/ContentModeration.php | 2 +- .../src/FieldTranslationSynchronizer.php | 4 ++-- .../source/d7/EntityTranslationSettings.php | 16 ++++++++-------- .../contextual/src/Element/ContextualLinks.php | 2 +- .../Field/FieldType/DateTimeFieldItemList.php | 2 +- .../Field/FieldType/DateRangeFieldItemList.php | 2 +- core/modules/editor/editor.module | 5 ++--- .../editor/src/Form/EditorImageDialog.php | 4 ++-- .../editor/src/Form/EditorLinkDialog.php | 4 ++-- core/modules/field/src/FieldConfigStorage.php | 2 +- .../field/src/FieldStorageConfigStorage.php | 2 +- .../d6/FieldFormatterSettingsDefaults.php | 2 +- .../d6/FieldInstanceOptionTranslation.php | 2 +- .../process/d6/FieldInstanceWidgetSettings.php | 8 ++++---- .../migrate/process/d6/FieldSettings.php | 6 +++--- .../Field/FieldWidget/TestFieldWidget.php | 2 +- .../field_ui/src/Element/FieldUiTable.php | 2 +- .../src/Form/EntityDisplayFormBase.php | 8 ++++---- .../src/Form/EntityFormDisplayEditForm.php | 2 +- .../src/Form/EntityViewDisplayEditForm.php | 2 +- .../field_ui/src/Form/FieldStorageAddForm.php | 8 ++++---- .../src/Form/FieldStorageConfigEditForm.php | 2 +- core/modules/file/file.module | 10 +++++----- core/modules/file/src/Element/ManagedFile.php | 8 ++++---- .../src/Plugin/Field/FieldType/FileItem.php | 2 +- .../Plugin/Field/FieldWidget/FileWidget.php | 2 +- .../Plugin/migrate/process/d6/FieldFile.php | 6 +++--- .../file/src/Plugin/migrate/source/d6/File.php | 2 +- .../tests/src/Functional/FileFieldTestBase.php | 6 +++--- .../process/d6/FilterFormatPermission.php | 2 +- core/modules/forum/forum.module | 2 +- core/modules/forum/src/ForumManager.php | 2 +- .../EntityReferenceItemNormalizer.php | 2 +- .../image/src/Form/ImageStyleEditForm.php | 2 +- core/modules/image/src/ImageStyleStorage.php | 2 +- .../Plugin/Field/FieldWidget/ImageWidget.php | 4 ++-- .../src/Functional/ImageFieldTestBase.php | 2 +- .../jsonapi/src/Access/TemporaryQueryGuard.php | 2 +- .../jsonapi/src/Controller/EntityResource.php | 4 ++-- ...egisterSerializationClassesCompilerPass.php | 4 ++-- core/modules/jsonapi/src/IncludeResolver.php | 2 +- ...tityAccessDeniedHttpExceptionNormalizer.php | 5 ++--- .../ResourceIdentifierNormalizer.php | 2 +- .../Normalizer/ResourceObjectNormalizer.php | 6 +----- .../ResourceType/ResourceTypeRepository.php | 2 +- core/modules/jsonapi/src/Routing/Routes.php | 2 +- .../tests/src/Functional/ResourceTestBase.php | 2 +- core/modules/language/language.admin.inc | 2 +- .../src/Element/LanguageConfiguration.php | 2 +- .../src/Entity/ConfigurableLanguage.php | 2 +- .../language/src/Form/LanguageAddForm.php | 2 +- .../src/Form/NegotiationConfigureForm.php | 4 ++-- .../language/src/Form/NegotiationUrlForm.php | 4 ++-- .../language/src/LanguageNegotiator.php | 2 +- .../LanguageNegotiationContentEntity.php | 4 ++-- .../LanguageNegotiationSession.php | 2 +- .../Functional/LanguageUrlRewritingTest.php | 2 +- .../layout_builder/layout_builder.module | 2 +- .../src/Element/LayoutBuilder.php | 2 +- .../Entity/LayoutBuilderEntityViewDisplay.php | 2 +- core/modules/layout_builder/src/Section.php | 4 ++-- .../layout_builder/src/SectionComponent.php | 4 ++-- .../SectionStorageDefinition.php | 4 ++-- .../layout_discovery/layout_discovery.module | 4 ++-- .../Plugin/Field/FieldWidget/LinkWidget.php | 2 +- core/modules/locale/locale.batch.inc | 2 +- core/modules/locale/locale.bulk.inc | 4 ++-- core/modules/locale/locale.compare.inc | 2 +- core/modules/locale/locale.module | 2 +- core/modules/locale/locale.translation.inc | 4 ++-- .../locale/src/Form/TranslateEditForm.php | 4 ++-- .../locale/src/Form/TranslateFilterForm.php | 2 +- .../locale/src/Form/TranslationStatusForm.php | 8 ++++---- .../locale/src/LocaleConfigSubscriber.php | 2 +- .../locale/src/LocaleProjectStorage.php | 2 +- core/modules/locale/src/PluralFormula.php | 2 +- core/modules/locale/src/SourceString.php | 2 +- core/modules/locale/src/StringBase.php | 8 ++++---- core/modules/locale/src/TranslationString.php | 2 +- core/modules/media/media.module | 4 ++-- .../media/src/Form/EditorMediaDialog.php | 2 +- core/modules/media/src/MediaSourceBase.php | 4 ++-- core/modules/media/src/MediaTypeForm.php | 2 +- .../media_library/src/Form/AddFormBase.php | 2 +- .../Field/FieldWidget/MediaLibraryWidget.php | 12 ++++++------ .../src/Plugin/Menu/MenuLinkContent.php | 2 +- .../tests/src/Kernel/MenuLinksTest.php | 2 +- core/modules/menu_ui/menu_ui.module | 2 +- core/modules/migrate/src/MigrateMessage.php | 2 +- core/modules/migrate/src/Plugin/Migration.php | 4 ++-- .../src/Plugin/MigrationPluginManager.php | 6 +++--- .../src/Plugin/migrate/destination/Entity.php | 2 +- .../src/Plugin/migrate/process/Concat.php | 2 +- .../Plugin/migrate/process/DefaultValue.php | 2 +- .../src/Plugin/migrate/process/Explode.php | 2 +- .../src/Plugin/migrate/process/FormatDate.php | 6 +++--- .../Plugin/migrate/process/MakeUniqueBase.php | 6 +++--- .../src/Plugin/migrate/process/Substr.php | 4 ++-- .../migrate_drupal/src/FieldDiscovery.php | 2 +- .../Plugin/migrate/source/DrupalSqlBase.php | 2 +- .../migrate/source/d7/FieldableEntity.php | 2 +- .../node/src/Plugin/Search/NodeSearch.php | 14 +++++++------- .../node/src/Plugin/migrate/source/d6/Node.php | 2 +- .../src/Plugin/migrate/source/d6/NodeType.php | 2 +- .../node/src/Plugin/views/field/Node.php | 2 +- .../FieldFormatter/OptionsDefaultFormatter.php | 2 +- .../migrate/process/PathSetTranslated.php | 2 +- core/modules/rdf/rdf.module | 4 ++-- .../src/ResponsiveImageStyleForm.php | 6 +++--- core/modules/rest/src/Plugin/ResourceBase.php | 4 ++-- .../rest/src/Plugin/views/row/DataFieldRow.php | 6 +++--- core/modules/search/search.pages.inc | 2 +- .../Normalizer/DateTimeIso8601Normalizer.php | 11 +++++++---- .../src/Normalizer/DateTimeNormalizer.php | 4 +--- .../FieldableEntityNormalizerTrait.php | 2 +- .../RegisterEntityResolversCompilerPass.php | 2 +- ...egisterSerializationClassesCompilerPass.php | 4 ++-- .../tests/src/Functional/ShortcutTestBase.php | 2 +- .../system/src/Controller/BatchController.php | 2 +- .../src/Controller/DbUpdateController.php | 2 +- .../system/src/Form/ModulesListForm.php | 4 ++-- .../src/Form/ThemeExperimentalConfirmForm.php | 4 ++-- .../system/src/Form/ThemeSettingsForm.php | 2 +- .../system/src/PhpStorage/MockPhpStorage.php | 2 +- core/modules/system/system.admin.inc | 2 +- core/modules/system/system.module | 2 +- .../Render/MainContent/WideModalRenderer.php | 2 +- .../ShapeOnlyColorEditableWidget.php | 2 +- .../mock_block/MockUserLoginBlock.php | 2 +- .../Traits/EntityDefinitionTestTrait.php | 4 ++-- .../tests/src/Functional/Form/FormTest.php | 6 +++--- .../src/Kernel/Block/SystemMenuBlockTest.php | 6 +++--- .../taxonomy/src/Form/OverviewTerms.php | 2 +- .../views/argument/IndexTidDepthModifier.php | 2 +- .../Plugin/views/field/TaxonomyIndexTid.php | 2 +- .../FieldWidget/TelephoneDefaultWidget.php | 2 +- .../Field/FieldWidget/TextfieldWidget.php | 2 +- .../src/Plugin/migrate/field/d6/TextField.php | 2 +- core/modules/tour/src/Entity/Tour.php | 2 +- .../src/Plugin/HelpSection/TourHelpSection.php | 2 +- .../user/src/Controller/UserController.php | 2 +- .../Plugin/migrate/process/UserUpdate8002.php | 2 +- .../migrate/source/d6/UserPictureFile.php | 2 +- core/modules/user/user.module | 4 ++-- .../Render/TranslationLanguageRenderer.php | 5 ++--- .../views/src/Plugin/views/PluginBase.php | 2 +- .../src/Plugin/views/area/AreaPluginBase.php | 2 +- .../views/src/Plugin/views/area/Result.php | 2 +- .../views/src/Plugin/views/area/Text.php | 4 ++-- .../views/argument/ArgumentPluginBase.php | 10 +++++----- .../Plugin/views/argument/LanguageArgument.php | 2 +- .../src/Plugin/views/cache/CachePluginBase.php | 2 +- .../Plugin/views/display/DisplayPluginBase.php | 10 +++++----- .../views/src/Plugin/views/display/Page.php | 2 +- .../Plugin/views/display/PathPluginBase.php | 2 +- .../exposed_form/ExposedFormPluginBase.php | 4 ++-- .../views/exposed_form/InputRequired.php | 2 +- .../views/src/Plugin/views/field/Boolean.php | 2 +- .../views/src/Plugin/views/field/Date.php | 4 ++-- .../src/Plugin/views/field/EntityField.php | 6 +++--- .../src/Plugin/views/field/FieldPluginBase.php | 2 +- .../src/Plugin/views/field/NumericField.php | 2 +- .../src/Plugin/views/field/TimeInterval.php | 2 +- .../Plugin/views/filter/FilterPluginBase.php | 4 ++-- .../src/Plugin/views/filter/StringFilter.php | 2 +- .../src/Plugin/views/pager/PagerPluginBase.php | 6 +++--- .../views/src/Plugin/views/query/Sql.php | 2 +- .../views/src/Plugin/views/row/Fields.php | 2 +- .../views/src/Plugin/views/row/OpmlFields.php | 2 +- .../src/Plugin/views/row/RowPluginBase.php | 2 +- .../views/src/Plugin/views/row/RssFields.php | 2 +- .../views/src/Plugin/views/style/Mapping.php | 2 +- .../src/Plugin/views/style/StylePluginBase.php | 8 ++++---- .../views/src/Plugin/views/style/Table.php | 6 +++--- .../Plugin/views/wizard/WizardPluginBase.php | 14 +++++++------- core/modules/views/src/ViewExecutable.php | 6 +++--- .../Unit/Controller/ViewAjaxControllerTest.php | 2 +- .../Unit/Plugin/field/FieldPluginBaseTest.php | 4 ++-- core/modules/views_ui/src/ViewUI.php | 2 +- core/modules/views_ui/views_ui.theme.inc | 4 ++-- .../tests/src/Kernel/WorkspaceTestTrait.php | 2 +- core/scripts/run-tests.sh | 2 +- .../Drupal/KernelTests/AssertContentTrait.php | 2 +- .../FileCache/StaticFileCacheBackend.php | 2 +- .../Tests/Component/Gettext/PoHeaderTest.php | 2 +- .../Drupal/Tests/Component/Graph/GraphTest.php | 4 ++-- .../Core/Asset/LibraryDiscoveryParserTest.php | 2 +- .../Entity/Sql/DefaultTableMappingTest.php | 6 +++--- .../Tests/Core/Menu/LocalActionManagerTest.php | 2 +- .../Tests/Core/Menu/LocalTaskManagerTest.php | 8 ++++---- .../Drupal/Tests/Core/Render/RendererTest.php | 2 +- core/themes/claro/claro.theme | 4 +--- core/themes/claro/src/ClaroPreRender.php | 2 +- 342 files changed, 585 insertions(+), 596 deletions(-) diff --git a/composer/Generator/Util/DrupalCoreComposer.php b/composer/Generator/Util/DrupalCoreComposer.php index f33e759e20ce..cf4aea0ce8df 100644 --- a/composer/Generator/Util/DrupalCoreComposer.php +++ b/composer/Generator/Util/DrupalCoreComposer.php @@ -83,7 +83,7 @@ public function composerLock() { */ public function getRequireDev() { $composerJsonData = $this->rootComposerJson(); - return isset($composerJsonData['require-dev']) ? $composerJsonData['require-dev'] : []; + return $composerJsonData['require-dev'] ?? []; } /** diff --git a/composer/Plugin/VendorHardening/Config.php b/composer/Plugin/VendorHardening/Config.php index b63238756874..6baf99aedc38 100644 --- a/composer/Plugin/VendorHardening/Config.php +++ b/composer/Plugin/VendorHardening/Config.php @@ -139,7 +139,7 @@ public function getAllCleanupPaths() { // Merge root config with defaults. foreach (array_change_key_case(static::$defaultConfig, CASE_LOWER) as $package => $paths) { $this->configData[$package] = array_merge( - isset($this->configData[$package]) ? $this->configData[$package] : [], + $this->configData[$package] ?? [], $paths); } return $this->configData; @@ -157,7 +157,7 @@ public function getAllCleanupPaths() { public function getPathsForPackage($package) { $package = strtolower($package); $paths = $this->getAllCleanupPaths(); - return isset($paths[$package]) ? $paths[$package] : []; + return $paths[$package] ?? []; } } diff --git a/core/includes/batch.inc b/core/includes/batch.inc index ebee3eb35cd7..ce812f155b09 100644 --- a/core/includes/batch.inc +++ b/core/includes/batch.inc @@ -354,7 +354,7 @@ function _batch_process() { // completion level of the current operation. $current = $total - $remaining + $finished; $percentage = _batch_api_percentage($total, $current); - $elapsed = isset($current_set['elapsed']) ? $current_set['elapsed'] : 0; + $elapsed = $current_set['elapsed'] ?? 0; $values = [ '@remaining' => $remaining, '@total' => $total, diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 74dfb3f4d5af..12464555f759 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -415,8 +415,8 @@ function drupal_valid_test_ua($new_prefix = NULL) { // A valid Simpletest request will contain a hashed and salted authentication // code. Check if this code is present in a cookie or custom user agent // string. - $http_user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : NULL; - $user_agent = isset($_COOKIE['SIMPLETEST_USER_AGENT']) ? $_COOKIE['SIMPLETEST_USER_AGENT'] : $http_user_agent; + $http_user_agent = $_SERVER['HTTP_USER_AGENT'] ?? NULL; + $user_agent = $_COOKIE['SIMPLETEST_USER_AGENT'] ?? $http_user_agent; if (isset($user_agent) && preg_match("/^simple(\w+\d+):(.+):(.+):(.+)$/", $user_agent, $matches)) { list(, $prefix, $time, $salt, $hmac) = $matches; $check_string = $prefix . ':' . $time . ':' . $salt; diff --git a/core/includes/common.inc b/core/includes/common.inc index 5350acba31ec..f6a42a17109a 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -355,8 +355,8 @@ function drupal_attach_tabledrag(&$element, array $options) { $tabledrag_id = (!isset($tabledrag_id)) ? 0 : $tabledrag_id + 1; // If a subgroup or source isn't set, assume it is the same as the group. - $target = isset($options['subgroup']) ? $options['subgroup'] : $group; - $source = isset($options['source']) ? $options['source'] : $target; + $target = $options['subgroup'] ?? $group; + $source = $options['source'] ?? $target; $element['#attached']['drupalSettings']['tableDrag'][$options['table_id']][$group][$tabledrag_id] = [ 'target' => $target, 'source' => $source, diff --git a/core/includes/errors.inc b/core/includes/errors.inc index 045b2dd417c8..69543cf0af89 100644 --- a/core/includes/errors.inc +++ b/core/includes/errors.inc @@ -323,7 +323,7 @@ function _drupal_get_error_level() { $error_level = \Drupal::config('system.logging')->get('error_level'); } catch (\Exception $e) { - $error_level = isset($GLOBALS['config']['system.logging']['error_level']) ? $GLOBALS['config']['system.logging']['error_level'] : ERROR_REPORTING_HIDE; + $error_level = $GLOBALS['config']['system.logging']['error_level'] ?? ERROR_REPORTING_HIDE; } // If there is no container or if it has no config.factory service, we are diff --git a/core/includes/form.inc b/core/includes/form.inc index 4eb5f48bace6..d85ae6313d2d 100644 --- a/core/includes/form.inc +++ b/core/includes/form.inc @@ -193,10 +193,10 @@ function template_preprocess_fieldset(&$variables) { $element = $variables['element']; Element::setAttributes($element, ['id']); RenderElement::setAttributes($element); - $variables['attributes'] = isset($element['#attributes']) ? $element['#attributes'] : []; - $variables['prefix'] = isset($element['#field_prefix']) ? $element['#field_prefix'] : NULL; - $variables['suffix'] = isset($element['#field_suffix']) ? $element['#field_suffix'] : NULL; - $variables['title_display'] = isset($element['#title_display']) ? $element['#title_display'] : NULL; + $variables['attributes'] = $element['#attributes'] ?? []; + $variables['prefix'] = $element['#field_prefix'] ?? NULL; + $variables['suffix'] = $element['#field_suffix'] ?? NULL; + $variables['title_display'] = $element['#title_display'] ?? NULL; $variables['children'] = $element['#children']; $variables['required'] = !empty($element['#required']) ? $element['#required'] : NULL; @@ -477,8 +477,8 @@ function template_preprocess_form_element(&$variables) { $variables['title_display'] = $element['#title_display']; - $variables['prefix'] = isset($element['#field_prefix']) ? $element['#field_prefix'] : NULL; - $variables['suffix'] = isset($element['#field_suffix']) ? $element['#field_suffix'] : NULL; + $variables['prefix'] = $element['#field_prefix'] ?? NULL; + $variables['suffix'] = $element['#field_suffix'] ?? NULL; $variables['description'] = NULL; if (!empty($element['#description'])) { @@ -883,7 +883,7 @@ function batch_process($redirect = NULL, Url $url = NULL, $redirect_callback = N $process_info = [ 'current_set' => 0, 'progressive' => TRUE, - 'url' => isset($url) ? $url : Url::fromRoute('system.batch_page.html'), + 'url' => $url ?? Url::fromRoute('system.batch_page.html'), 'source_url' => Url::fromRouteMatch(\Drupal::routeMatch())->mergeOptions(['query' => \Drupal::request()->query->all()]), 'batch_redirect' => $redirect, 'theme' => \Drupal::theme()->getActiveTheme()->getName(), diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index e488cd7f3641..5a5f92339baa 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -1523,7 +1523,7 @@ function _install_get_version_info($version) { function install_load_profile(&$install_state) { $profile = $install_state['parameters']['profile']; $install_state['profiles'][$profile]->load(); - $install_state['profile_info'] = install_profile_info($profile, isset($install_state['parameters']['langcode']) ? $install_state['parameters']['langcode'] : 'en'); + $install_state['profile_info'] = install_profile_info($profile, $install_state['parameters']['langcode'] ?? 'en'); $sync_directory = Settings::get('config_sync_directory'); if (!empty($install_state['parameters']['existing_config']) && !empty($sync_directory)) { diff --git a/core/includes/install.inc b/core/includes/install.inc index 44dc75c15255..c24c16533342 100644 --- a/core/includes/install.inc +++ b/core/includes/install.inc @@ -114,7 +114,7 @@ function drupal_install_profile_distribution_name() { $profile = \Drupal::installProfile(); $info = \Drupal::service('extension.list.profile')->getExtensionInfo($profile); } - return isset($info['distribution']['name']) ? $info['distribution']['name'] : 'Drupal'; + return $info['distribution']['name'] ?? 'Drupal'; } /** @@ -132,7 +132,7 @@ function drupal_install_profile_distribution_version() { // installation state (it might not be saved anywhere yet). if (InstallerKernel::installationAttempted()) { global $install_state; - return isset($install_state['profile_info']['version']) ? $install_state['profile_info']['version'] : \Drupal::VERSION; + return $install_state['profile_info']['version'] ?? \Drupal::VERSION; } // At all other times, we load the profile via standard methods. else { diff --git a/core/includes/theme.inc b/core/includes/theme.inc index d2f65b2bfcc6..7476d323c3b2 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -151,7 +151,7 @@ function drupal_find_theme_functions($cache, $prefixes) { // refers to a base hook, not to another suggestion, and all suggestions // are found using the base hook's pattern, not a pattern from an // intermediary suggestion. - $pattern = isset($info['pattern']) ? $info['pattern'] : ($hook . '__'); + $pattern = $info['pattern'] ?? ($hook . '__'); // Grep only the functions which are within the prefix group. list($first_prefix,) = explode('_', $prefix, 2); if (!isset($info['base hook']) && !empty($pattern) && isset($grouped_functions[$first_prefix])) { @@ -212,7 +212,7 @@ function drupal_find_theme_templates($cache, $extension, $path) { } } $theme = \Drupal::theme()->getActiveTheme()->getName(); - $subtheme_paths = isset($theme_paths[$theme]) ? $theme_paths[$theme] : []; + $subtheme_paths = $theme_paths[$theme] ?? []; // Escape the periods in the extension. $regex = '/' . str_replace('.', '\.', $extension) . '$/'; @@ -261,7 +261,7 @@ function drupal_find_theme_templates($cache, $extension, $path) { // the use of 'pattern' and 'base hook'. $patterns = array_keys($files); foreach ($cache as $hook => $info) { - $pattern = isset($info['pattern']) ? $info['pattern'] : ($hook . '__'); + $pattern = $info['pattern'] ?? ($hook . '__'); if (!isset($info['base hook']) && !empty($pattern)) { // Transform _ in pattern to - to match file naming scheme // for the purposes of searching. @@ -1020,7 +1020,7 @@ function template_preprocess_table(&$variables) { unset($cell['data']); } // Flag the cell as a header or not and remove the flag. - $is_header = isset($cell['header']) ? $cell['header'] : TRUE; + $is_header = $cell['header'] ?? TRUE; unset($cell['header']); // Track responsive classes for each column as needed. Only the header @@ -1061,7 +1061,7 @@ function template_preprocess_table(&$variables) { // Check if we're dealing with a simple or complex row if (isset($row['data'])) { $cells = $row['data']; - $variables['no_striping'] = isset($row['no_striping']) ? $row['no_striping'] : FALSE; + $variables['no_striping'] = $row['no_striping'] ?? FALSE; // Set the attributes array and exclude 'data' and 'no_striping'. $row_attributes = $row; @@ -1788,7 +1788,7 @@ function template_preprocess_pager(&$variables) { $parameters = $variables['pager']['#parameters']; $quantity = empty($variables['pager']['#quantity']) ? 0 : $variables['pager']['#quantity']; $route_name = $variables['pager']['#route_name']; - $route_parameters = isset($variables['pager']['#route_parameters']) ? $variables['pager']['#route_parameters'] : []; + $route_parameters = $variables['pager']['#route_parameters'] ?? []; /** @var \Drupal\Core\Pager\PagerManagerInterface $pager_manager */ $pager_manager = \Drupal::service('pager.manager'); diff --git a/core/lib/Drupal/Component/Annotation/Plugin.php b/core/lib/Drupal/Component/Annotation/Plugin.php index 504ff401d1aa..6bae9c4f6eb3 100644 --- a/core/lib/Drupal/Component/Annotation/Plugin.php +++ b/core/lib/Drupal/Component/Annotation/Plugin.php @@ -78,7 +78,7 @@ public function get() { * {@inheritdoc} */ public function getProvider() { - return isset($this->definition['provider']) ? $this->definition['provider'] : FALSE; + return $this->definition['provider'] ?? FALSE; } /** diff --git a/core/lib/Drupal/Component/DependencyInjection/Container.php b/core/lib/Drupal/Component/DependencyInjection/Container.php index 41684d3e709c..127656539ad5 100644 --- a/core/lib/Drupal/Component/DependencyInjection/Container.php +++ b/core/lib/Drupal/Component/DependencyInjection/Container.php @@ -115,10 +115,10 @@ public function __construct(array $container_definition = []) { throw new InvalidArgumentException('The non-optimized format is not supported by this class. Use an optimized machine-readable format instead, e.g. as produced by \Drupal\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumper.'); } - $this->aliases = isset($container_definition['aliases']) ? $container_definition['aliases'] : []; - $this->parameters = isset($container_definition['parameters']) ? $container_definition['parameters'] : []; - $this->serviceDefinitions = isset($container_definition['services']) ? $container_definition['services'] : []; - $this->frozen = isset($container_definition['frozen']) ? $container_definition['frozen'] : FALSE; + $this->aliases = $container_definition['aliases'] ?? []; + $this->parameters = $container_definition['parameters'] ?? []; + $this->serviceDefinitions = $container_definition['services'] ?? []; + $this->frozen = $container_definition['frozen'] ?? FALSE; // Register the service_container with itself. $this->services['service_container'] = $this; @@ -146,7 +146,7 @@ public function get($id, $invalid_behavior = ContainerInterface::EXCEPTION_ON_IN throw new ServiceCircularReferenceException($id, array_keys($this->loading)); } - $definition = isset($this->serviceDefinitions[$id]) ? $this->serviceDefinitions[$id] : NULL; + $definition = $this->serviceDefinitions[$id] ?? NULL; if (!$definition && $invalid_behavior === ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE) { if (!$id) { diff --git a/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php b/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php index be690488defa..95c4e34d0c7a 100644 --- a/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php +++ b/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php @@ -34,10 +34,10 @@ public function __construct(array $container_definition = []) { // Do not call the parent's constructor as it would bail on the // machine-optimized format. - $this->aliases = isset($container_definition['aliases']) ? $container_definition['aliases'] : []; - $this->parameters = isset($container_definition['parameters']) ? $container_definition['parameters'] : []; - $this->serviceDefinitions = isset($container_definition['services']) ? $container_definition['services'] : []; - $this->frozen = isset($container_definition['frozen']) ? $container_definition['frozen'] : FALSE; + $this->aliases = $container_definition['aliases'] ?? []; + $this->parameters = $container_definition['parameters'] ?? []; + $this->serviceDefinitions = $container_definition['services'] ?? []; + $this->frozen = $container_definition['frozen'] ?? FALSE; // Register the service_container with itself. $this->services['service_container'] = $this; diff --git a/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php b/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php index 8aa35299beea..eda980cfd8ae 100644 --- a/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php +++ b/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php @@ -293,11 +293,11 @@ public function addSubscriber(EventSubscriberInterface $subscriber) { $this->addListener($event_name, [$subscriber, $params]); } elseif (is_string($params[0])) { - $this->addListener($event_name, [$subscriber, $params[0]], isset($params[1]) ? $params[1] : 0); + $this->addListener($event_name, [$subscriber, $params[0]], $params[1] ?? 0); } else { foreach ($params as $listener) { - $this->addListener($event_name, [$subscriber, $listener[0]], isset($listener[1]) ? $listener[1] : 0); + $this->addListener($event_name, [$subscriber, $listener[0]], $listener[1] ?? 0); } } } diff --git a/core/lib/Drupal/Component/FileCache/FileCache.php b/core/lib/Drupal/Component/FileCache/FileCache.php index eea92ac1947e..256d5dd79fe3 100644 --- a/core/lib/Drupal/Component/FileCache/FileCache.php +++ b/core/lib/Drupal/Component/FileCache/FileCache.php @@ -68,7 +68,7 @@ public function __construct($prefix, $collection, $cache_backend_class = NULL, a public function get($filepath) { $filepaths = [$filepath]; $cached = $this->getMultiple($filepaths); - return isset($cached[$filepath]) ? $cached[$filepath] : NULL; + return $cached[$filepath] ?? NULL; } /** diff --git a/core/lib/Drupal/Component/Gettext/PoStreamReader.php b/core/lib/Drupal/Component/Gettext/PoStreamReader.php index a92bccb1271a..bbdd8e8ae6a2 100644 --- a/core/lib/Drupal/Component/Gettext/PoStreamReader.php +++ b/core/lib/Drupal/Component/Gettext/PoStreamReader.php @@ -526,7 +526,7 @@ public function setItemFromArray($value) { } $item = new PoItem(); - $item->setContext(isset($value['msgctxt']) ? $value['msgctxt'] : ''); + $item->setContext($value['msgctxt'] ?? ''); $item->setSource($value['msgid']); $item->setTranslation($value['msgstr']); $item->setPlural($plural); diff --git a/core/lib/Drupal/Component/Plugin/ContextAwarePluginBase.php b/core/lib/Drupal/Component/Plugin/ContextAwarePluginBase.php index 533b026236ab..f664a06fa30a 100644 --- a/core/lib/Drupal/Component/Plugin/ContextAwarePluginBase.php +++ b/core/lib/Drupal/Component/Plugin/ContextAwarePluginBase.php @@ -37,7 +37,7 @@ abstract class ContextAwarePluginBase extends PluginBase implements ContextAware * The plugin implementation definition. */ public function __construct(array $configuration, $plugin_id, $plugin_definition) { - $context_configuration = isset($configuration['context']) ? $configuration['context'] : []; + $context_configuration = $configuration['context'] ?? []; unset($configuration['context']); parent::__construct($configuration, $plugin_id, $plugin_definition); diff --git a/core/lib/Drupal/Component/Transliteration/PhpTransliteration.php b/core/lib/Drupal/Component/Transliteration/PhpTransliteration.php index 8d62175e604d..977892ddabf4 100644 --- a/core/lib/Drupal/Component/Transliteration/PhpTransliteration.php +++ b/core/lib/Drupal/Component/Transliteration/PhpTransliteration.php @@ -260,7 +260,7 @@ protected function lookupReplacement($code, $unknown_character = '?') { $this->readGenericData($bank); } $code = $code & 0xff; - return isset($this->genericMap[$bank][$code]) ? $this->genericMap[$bank][$code] : $unknown_character; + return $this->genericMap[$bank][$code] ?? $unknown_character; } /** diff --git a/core/lib/Drupal/Component/Utility/UserAgent.php b/core/lib/Drupal/Component/Utility/UserAgent.php index 934049033c1a..f7403e2fdd57 100644 --- a/core/lib/Drupal/Component/Utility/UserAgent.php +++ b/core/lib/Drupal/Component/Utility/UserAgent.php @@ -68,7 +68,7 @@ public static function getBestMatchingLangcode($http_accept_language, $langcodes // to the same langcode for different qvalues. Keep the highest. $ua_langcodes[$langcode] = max( (int) ($qvalue * 1000), - (isset($ua_langcodes[$langcode]) ? $ua_langcodes[$langcode] : 0) + ($ua_langcodes[$langcode] ?? 0) ); } } @@ -113,7 +113,7 @@ public static function getBestMatchingLangcode($http_accept_language, $langcodes // If nothing matches below, the default qvalue is the one of the wildcard // language, if set, or is 0 (which will never match). - $qvalue = isset($ua_langcodes['*']) ? $ua_langcodes['*'] : 0; + $qvalue = $ua_langcodes['*'] ?? 0; // Find the longest possible prefix of the user agent supplied language // ('the language-range') that matches this site language ('the language diff --git a/core/lib/Drupal/Core/Ajax/AjaxResponseAttachmentsProcessor.php b/core/lib/Drupal/Core/Ajax/AjaxResponseAttachmentsProcessor.php index 875c9d3ef961..55a3b4374c0a 100644 --- a/core/lib/Drupal/Core/Ajax/AjaxResponseAttachmentsProcessor.php +++ b/core/lib/Drupal/Core/Ajax/AjaxResponseAttachmentsProcessor.php @@ -138,9 +138,9 @@ protected function buildAttachmentsCommands(AjaxResponse $response, Request $req // Resolve the attached libraries into asset collections. $assets = new AttachedAssets(); - $assets->setLibraries(isset($attachments['library']) ? $attachments['library'] : []) + $assets->setLibraries($attachments['library'] ?? []) ->setAlreadyLoadedLibraries(isset($ajax_page_state['libraries']) ? explode(',', $ajax_page_state['libraries']) : []) - ->setSettings(isset($attachments['drupalSettings']) ? $attachments['drupalSettings'] : []); + ->setSettings($attachments['drupalSettings'] ?? []); $css_assets = $this->assetResolver->getCssAssets($assets, $optimize_css); list($js_assets_header, $js_assets_footer) = $this->assetResolver->getJsAssets($assets, $optimize_js); diff --git a/core/lib/Drupal/Core/Annotation/Translation.php b/core/lib/Drupal/Core/Annotation/Translation.php index 14fdda986e59..f63a9a0ab875 100644 --- a/core/lib/Drupal/Core/Annotation/Translation.php +++ b/core/lib/Drupal/Core/Annotation/Translation.php @@ -74,7 +74,7 @@ class Translation extends AnnotationBase { */ public function __construct(array $values) { $string = $values['value']; - $arguments = isset($values['arguments']) ? $values['arguments'] : []; + $arguments = $values['arguments'] ?? []; $options = []; if (!empty($values['context'])) { $options = [ diff --git a/core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php b/core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php index 5631483d45bd..9392d565109c 100644 --- a/core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php +++ b/core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php @@ -257,7 +257,7 @@ public function buildByExtension($extension) { // Set the 'minified' flag on JS file assets, default to FALSE. if ($type == 'js' && $options['type'] == 'file') { - $options['minified'] = isset($options['minified']) ? $options['minified'] : FALSE; + $options['minified'] = $options['minified'] ?? FALSE; } $library[$type][] = $options; diff --git a/core/lib/Drupal/Core/Authentication/AuthenticationCollector.php b/core/lib/Drupal/Core/Authentication/AuthenticationCollector.php index 616e936b557e..de6edae00619 100644 --- a/core/lib/Drupal/Core/Authentication/AuthenticationCollector.php +++ b/core/lib/Drupal/Core/Authentication/AuthenticationCollector.php @@ -60,7 +60,7 @@ public function isGlobal($provider_id) { * {@inheritdoc} */ public function getProvider($provider_id) { - return isset($this->providers[$provider_id]) ? $this->providers[$provider_id] : NULL; + return $this->providers[$provider_id] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Cache/ApcuBackend.php b/core/lib/Drupal/Core/Cache/ApcuBackend.php index 6014fb8bff61..fc6fab38bfa9 100644 --- a/core/lib/Drupal/Core/Cache/ApcuBackend.php +++ b/core/lib/Drupal/Core/Cache/ApcuBackend.php @@ -184,7 +184,7 @@ public function set($cid, $data, $expire = CacheBackendInterface::CACHE_PERMANEN */ public function setMultiple(array $items = []) { foreach ($items as $cid => $item) { - $this->set($cid, $item['data'], isset($item['expire']) ? $item['expire'] : CacheBackendInterface::CACHE_PERMANENT, isset($item['tags']) ? $item['tags'] : []); + $this->set($cid, $item['data'], $item['expire'] ?? CacheBackendInterface::CACHE_PERMANENT, $item['tags'] ?? []); } } diff --git a/core/lib/Drupal/Core/Cache/ChainedFastBackendFactory.php b/core/lib/Drupal/Core/Cache/ChainedFastBackendFactory.php index b04ee5c55cfd..789b7274aafc 100644 --- a/core/lib/Drupal/Core/Cache/ChainedFastBackendFactory.php +++ b/core/lib/Drupal/Core/Cache/ChainedFastBackendFactory.php @@ -48,7 +48,7 @@ public function __construct(Settings $settings = NULL, $consistent_service_name // Default the consistent backend to the site's default backend. if (!isset($consistent_service_name)) { $cache_settings = isset($settings) ? $settings->get('cache') : []; - $consistent_service_name = isset($cache_settings['default']) ? $cache_settings['default'] : 'cache.backend.database'; + $consistent_service_name = $cache_settings['default'] ?? 'cache.backend.database'; } // Default the fast backend to APCu if it's available. diff --git a/core/lib/Drupal/Core/Cache/MemoryBackend.php b/core/lib/Drupal/Core/Cache/MemoryBackend.php index d402d70b543a..18e3658d3237 100644 --- a/core/lib/Drupal/Core/Cache/MemoryBackend.php +++ b/core/lib/Drupal/Core/Cache/MemoryBackend.php @@ -118,7 +118,7 @@ public function set($cid, $data, $expire = Cache::PERMANENT, array $tags = []) { */ public function setMultiple(array $items = []) { foreach ($items as $cid => $item) { - $this->set($cid, $item['data'], isset($item['expire']) ? $item['expire'] : CacheBackendInterface::CACHE_PERMANENT, isset($item['tags']) ? $item['tags'] : []); + $this->set($cid, $item['data'], $item['expire'] ?? CacheBackendInterface::CACHE_PERMANENT, $item['tags'] ?? []); } } diff --git a/core/lib/Drupal/Core/Cache/MemoryCounterBackend.php b/core/lib/Drupal/Core/Cache/MemoryCounterBackend.php index 63d20076c6fb..634120133dd2 100644 --- a/core/lib/Drupal/Core/Cache/MemoryCounterBackend.php +++ b/core/lib/Drupal/Core/Cache/MemoryCounterBackend.php @@ -73,10 +73,10 @@ protected function increaseCounter($function, $cid) { */ public function getCounter($method = NULL, $cid = NULL) { if ($method && $cid) { - return isset($this->counter[$method][$cid]) ? $this->counter[$method][$cid] : 0; + return $this->counter[$method][$cid] ?? 0; } elseif ($method) { - return isset($this->counter[$method]) ? $this->counter[$method] : []; + return $this->counter[$method] ?? []; } else { return $this->counter; diff --git a/core/lib/Drupal/Core/Cache/PhpBackend.php b/core/lib/Drupal/Core/Cache/PhpBackend.php index 96a2b834bdaf..85935b0b618a 100644 --- a/core/lib/Drupal/Core/Cache/PhpBackend.php +++ b/core/lib/Drupal/Core/Cache/PhpBackend.php @@ -84,7 +84,7 @@ protected function getByHash($cidhash, $allow_invalid = FALSE) { */ public function setMultiple(array $items) { foreach ($items as $cid => $item) { - $this->set($cid, $item['data'], isset($item['expire']) ? $item['expire'] : CacheBackendInterface::CACHE_PERMANENT, isset($item['tags']) ? $item['tags'] : []); + $this->set($cid, $item['data'], $item['expire'] ?? CacheBackendInterface::CACHE_PERMANENT, $item['tags'] ?? []); } } diff --git a/core/lib/Drupal/Core/Command/DbDumpCommand.php b/core/lib/Drupal/Core/Command/DbDumpCommand.php index 404a38820a02..bb345e4d2659 100644 --- a/core/lib/Drupal/Core/Command/DbDumpCommand.php +++ b/core/lib/Drupal/Core/Command/DbDumpCommand.php @@ -186,7 +186,7 @@ protected function getTableSchema(Connection $connection, $table) { elseif (!isset($definition['fields'][$name]['size'])) { // Try use the provided length, if it doesn't exist default to 100. It's // not great but good enough for our dumps at this point. - $definition['fields'][$name]['length'] = isset($matches[2]) ? $matches[2] : 100; + $definition['fields'][$name]['length'] = $matches[2] ?? 100; } if (isset($row['Default'])) { diff --git a/core/lib/Drupal/Core/Command/InstallCommand.php b/core/lib/Drupal/Core/Command/InstallCommand.php index 5736bd1f5a1c..4b76025c11d1 100644 --- a/core/lib/Drupal/Core/Command/InstallCommand.php +++ b/core/lib/Drupal/Core/Command/InstallCommand.php @@ -328,8 +328,8 @@ protected function getProfiles($include_hidden = FALSE, $auto_select_distributio } // Determine the name of the profile; default to the internal name if none // is specified. - $name = isset($details['name']) ? $details['name'] : $profile->getName(); - $description = isset($details['description']) ? $details['description'] : $name; + $name = $details['name'] ?? $profile->getName(); + $description = $details['description'] ?? $name; $profiles[$profile->getName()] = $description; if ($auto_select_distributions && !empty($details['distribution'])) { diff --git a/core/lib/Drupal/Core/Config/CachedStorage.php b/core/lib/Drupal/Core/Config/CachedStorage.php index f43ede2a6375..c1633dbcb538 100644 --- a/core/lib/Drupal/Core/Config/CachedStorage.php +++ b/core/lib/Drupal/Core/Config/CachedStorage.php @@ -97,7 +97,7 @@ public function readMultiple(array $names) { // missing configuration objects as an explicit FALSE. $items = []; foreach ($names_to_get as $name) { - $data = isset($list[$name]) ? $list[$name] : FALSE; + $data = $list[$name] ?? FALSE; $data_to_return[$name] = $data; $items[$cache_keys_map[$name]] = ['data' => $data]; } diff --git a/core/lib/Drupal/Core/Config/Config.php b/core/lib/Drupal/Core/Config/Config.php index 3a3ccbad3d57..abcb41fe7e78 100644 --- a/core/lib/Drupal/Core/Config/Config.php +++ b/core/lib/Drupal/Core/Config/Config.php @@ -91,7 +91,7 @@ public function get($key = '') { else { $parts = explode('.', $key); if (count($parts) == 1) { - return isset($this->overriddenData[$key]) ? $this->overriddenData[$key] : NULL; + return $this->overriddenData[$key] ?? NULL; } else { $value = NestedArray::getValue($this->overriddenData, $parts, $key_exists); @@ -293,7 +293,7 @@ public function getOriginal($key = '', $apply_overrides = TRUE) { else { $parts = explode('.', $key); if (count($parts) == 1) { - return isset($original_data[$key]) ? $original_data[$key] : NULL; + return $original_data[$key] ?? NULL; } else { $value = NestedArray::getValue($original_data, $parts, $key_exists); diff --git a/core/lib/Drupal/Core/Config/ConfigBase.php b/core/lib/Drupal/Core/Config/ConfigBase.php index 4f445ea21c77..0bf960e93e4d 100644 --- a/core/lib/Drupal/Core/Config/ConfigBase.php +++ b/core/lib/Drupal/Core/Config/ConfigBase.php @@ -135,7 +135,7 @@ public function get($key = '') { else { $parts = explode('.', $key); if (count($parts) == 1) { - return isset($this->data[$key]) ? $this->data[$key] : NULL; + return $this->data[$key] ?? NULL; } else { $value = NestedArray::getValue($this->data, $parts, $key_exists); diff --git a/core/lib/Drupal/Core/Config/ConfigCollectionInfo.php b/core/lib/Drupal/Core/Config/ConfigCollectionInfo.php index 35fe0284e3ee..c68ac7255e68 100644 --- a/core/lib/Drupal/Core/Config/ConfigCollectionInfo.php +++ b/core/lib/Drupal/Core/Config/ConfigCollectionInfo.php @@ -68,7 +68,7 @@ public function getCollectionNames($include_default = TRUE) { * if not. */ public function getOverrideService($collection) { - return isset($this->collections[$collection]) ? $this->collections[$collection] : NULL; + return $this->collections[$collection] ?? NULL; } } diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php index fad13076ec03..08731ab9d7a5 100644 --- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php +++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php @@ -150,7 +150,7 @@ public function isNew() { * {@inheritdoc} */ public function get($property_name) { - return isset($this->{$property_name}) ? $this->{$property_name} : NULL; + return $this->{$property_name} ?? NULL; } /** @@ -228,8 +228,8 @@ public function createDuplicate() { * Helper callback for uasort() to sort configuration entities by weight and label. */ public static function sort(ConfigEntityInterface $a, ConfigEntityInterface $b) { - $a_weight = isset($a->weight) ? $a->weight : 0; - $b_weight = isset($b->weight) ? $b->weight : 0; + $a_weight = $a->weight ?? 0; + $b_weight = $b->weight ?? 0; if ($a_weight == $b_weight) { $a_label = $a->label() ?? ''; $b_label = $b->label() ?? ''; @@ -521,7 +521,7 @@ public function getThirdPartySetting($module, $key, $default = NULL) { * {@inheritdoc} */ public function getThirdPartySettings($module) { - return isset($this->third_party_settings[$module]) ? $this->third_party_settings[$module] : []; + return $this->third_party_settings[$module] ?? []; } /** diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php index 1f91da8c69c5..d631a66f97dd 100644 --- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php +++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php @@ -471,7 +471,7 @@ public function updateFromStorageRecord(ConfigEntityInterface $entity, array $va */ public function loadOverrideFree($id) { $entities = $this->loadMultipleOverrideFree([$id]); - return isset($entities[$id]) ? $entities[$id] : NULL; + return $entities[$id] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Config/Entity/Query/Query.php b/core/lib/Drupal/Core/Config/Entity/Query/Query.php index 757ce8ba6f1d..a18968873c83 100644 --- a/core/lib/Drupal/Core/Config/Entity/Query/Query.php +++ b/core/lib/Drupal/Core/Config/Entity/Query/Query.php @@ -92,8 +92,8 @@ public function execute() { $properties = explode('.', $field); foreach ($properties as $property) { if (isset($a[$property]) || isset($b[$property])) { - $a = isset($a[$property]) ? $a[$property] : NULL; - $b = isset($b[$property]) ? $b[$property] : NULL; + $a = $a[$property] ?? NULL; + $b = $b[$property] ?? NULL; } } return ($a <= $b) ? $direction : -$direction; diff --git a/core/lib/Drupal/Core/Config/Schema/ArrayElement.php b/core/lib/Drupal/Core/Config/Schema/ArrayElement.php index fed16db7d0ac..14e45059efce 100644 --- a/core/lib/Drupal/Core/Config/Schema/ArrayElement.php +++ b/core/lib/Drupal/Core/Config/Schema/ArrayElement.php @@ -33,7 +33,7 @@ protected function getAllKeys() { protected function parse() { $elements = []; foreach ($this->getAllKeys() as $key) { - $value = isset($this->value[$key]) ? $this->value[$key] : NULL; + $value = $this->value[$key] ?? NULL; $definition = $this->getElementDefinition($key); $elements[$key] = $this->createElement($definition, $value, $key); } @@ -98,7 +98,7 @@ public function isEmpty() { * {@inheritdoc} */ public function toArray() { - return isset($this->value) ? $this->value : []; + return $this->value ?? []; } /** diff --git a/core/lib/Drupal/Core/Config/Schema/Mapping.php b/core/lib/Drupal/Core/Config/Schema/Mapping.php index 220a350490e2..3fa470be170e 100644 --- a/core/lib/Drupal/Core/Config/Schema/Mapping.php +++ b/core/lib/Drupal/Core/Config/Schema/Mapping.php @@ -21,8 +21,8 @@ class Mapping extends ArrayElement { * {@inheritdoc} */ protected function getElementDefinition($key) { - $value = isset($this->value[$key]) ? $this->value[$key] : NULL; - $definition = isset($this->definition['mapping'][$key]) ? $this->definition['mapping'][$key] : []; + $value = $this->value[$key] ?? NULL; + $definition = $this->definition['mapping'][$key] ?? []; return $this->buildDataDefinition($definition, $value, $key); } diff --git a/core/lib/Drupal/Core/Config/Schema/Sequence.php b/core/lib/Drupal/Core/Config/Schema/Sequence.php index 547969bbccec..8e715baf6704 100644 --- a/core/lib/Drupal/Core/Config/Schema/Sequence.php +++ b/core/lib/Drupal/Core/Config/Schema/Sequence.php @@ -23,7 +23,7 @@ class Sequence extends ArrayElement { * {@inheritdoc} */ protected function getElementDefinition($key) { - $value = isset($this->value[$key]) ? $this->value[$key] : NULL; + $value = $this->value[$key] ?? NULL; // @todo: Remove BC layer for sequence with hyphen in front. https://www.drupal.org/node/2444979 $definition = []; if (isset($this->definition['sequence'][0])) { diff --git a/core/lib/Drupal/Core/Config/Schema/SequenceDataDefinition.php b/core/lib/Drupal/Core/Config/Schema/SequenceDataDefinition.php index c317e29e02cf..c616741a5cc8 100644 --- a/core/lib/Drupal/Core/Config/Schema/SequenceDataDefinition.php +++ b/core/lib/Drupal/Core/Config/Schema/SequenceDataDefinition.php @@ -22,7 +22,7 @@ class SequenceDataDefinition extends ListDataDefinition { * be sorted). */ public function getOrderBy() { - return isset($this->definition['orderby']) ? $this->definition['orderby'] : NULL; + return $this->definition['orderby'] ?? NULL; } } diff --git a/core/lib/Drupal/Core/Cron.php b/core/lib/Drupal/Core/Cron.php index 59e0a67ae623..c45dfbd28761 100644 --- a/core/lib/Drupal/Core/Cron.php +++ b/core/lib/Drupal/Core/Cron.php @@ -174,7 +174,7 @@ protected function processQueues() { $this->queueFactory->get($queue_name)->createQueue(); $queue_worker = $this->queueManager->createInstance($queue_name); - $end = time() + (isset($info['cron']['time']) ? $info['cron']['time'] : 15); + $end = time() + ($info['cron']['time'] ?? 15); $queue = $this->queueFactory->get($queue_name); $lease_time = isset($info['cron']['time']) ?: NULL; while (time() < $end && ($item = $queue->claimItem($lease_time))) { diff --git a/core/lib/Drupal/Core/Database/Connection.php b/core/lib/Drupal/Core/Database/Connection.php index 9337ff1b384f..4f28e5b669a7 100644 --- a/core/lib/Drupal/Core/Database/Connection.php +++ b/core/lib/Drupal/Core/Database/Connection.php @@ -958,7 +958,7 @@ public function query($query, array $args = [], $options = []) { return $stmt->rowCount(); case Database::RETURN_INSERT_ID: - $sequence_name = isset($options['sequence_name']) ? $options['sequence_name'] : NULL; + $sequence_name = $options['sequence_name'] ?? NULL; return $this->connection->lastInsertId($sequence_name); case Database::RETURN_NULL: diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php index e05f10c86eb0..283035b835b7 100644 --- a/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php +++ b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php @@ -313,7 +313,7 @@ protected function createKeysSql($spec) { * Thrown if field specification is missing. */ protected function getNormalizedIndexes(array $spec) { - $indexes = isset($spec['indexes']) ? $spec['indexes'] : []; + $indexes = $spec['indexes'] ?? []; foreach ($indexes as $index_name => $index_fields) { foreach ($index_fields as $index_key => $index_field) { // Get the name of the field from the index specification. diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Connection.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Connection.php index a5b6ae3296ca..9154a0188a9d 100644 --- a/core/lib/Drupal/Core/Database/Driver/pgsql/Connection.php +++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Connection.php @@ -263,7 +263,7 @@ public function createDatabase($database) { } public function mapConditionOperator($operator) { - return isset(static::$postgresqlConditionOperatorMap[$operator]) ? static::$postgresqlConditionOperatorMap[$operator] : NULL; + return static::$postgresqlConditionOperatorMap[$operator] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php index 4f4663d5cb5e..210b2a64088d 100644 --- a/core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php +++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php @@ -428,7 +428,7 @@ public function createDatabase($database) { } public function mapConditionOperator($operator) { - return isset(static::$sqliteConditionOperatorMap[$operator]) ? static::$sqliteConditionOperatorMap[$operator] : NULL; + return static::$sqliteConditionOperatorMap[$operator] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Database/Query/Condition.php b/core/lib/Drupal/Core/Database/Query/Condition.php index 16793b803403..80198371bb28 100644 --- a/core/lib/Drupal/Core/Database/Query/Condition.php +++ b/core/lib/Drupal/Core/Database/Query/Condition.php @@ -399,7 +399,7 @@ protected function mapConditionOperator($operator) { // do not need the more expensive mb_strtoupper() because SQL statements // are ASCII. $operator = strtoupper($operator); - $return = isset(static::$conditionOperatorMap[$operator]) ? static::$conditionOperatorMap[$operator] : []; + $return = static::$conditionOperatorMap[$operator] ?? []; } $return += ['operator' => $operator]; diff --git a/core/lib/Drupal/Core/Database/Query/Merge.php b/core/lib/Drupal/Core/Database/Query/Merge.php index b758f2214e15..90a9abab1e11 100644 --- a/core/lib/Drupal/Core/Database/Query/Merge.php +++ b/core/lib/Drupal/Core/Database/Query/Merge.php @@ -331,7 +331,7 @@ public function keys(array $fields, array $values = []) { public function key($field, $value = NULL) { // @todo D9: Remove this backwards-compatibility shim. if (is_array($field)) { - $this->keys($field, isset($value) ? $value : []); + $this->keys($field, $value ?? []); } else { $this->keys([$field => $value]); diff --git a/core/lib/Drupal/Core/Database/Query/Select.php b/core/lib/Drupal/Core/Database/Query/Select.php index 8a8672367532..5da38481662c 100644 --- a/core/lib/Drupal/Core/Database/Query/Select.php +++ b/core/lib/Drupal/Core/Database/Query/Select.php @@ -133,7 +133,7 @@ class Select extends Query implements SelectInterface { public function __construct(Connection $connection, $table, $alias = NULL, $options = []) { $options['return'] = Database::RETURN_STATEMENT; parent::__construct($connection, $options); - $conjunction = isset($options['conjunction']) ? $options['conjunction'] : 'AND'; + $conjunction = $options['conjunction'] ?? 'AND'; $this->condition = $this->connection->condition($conjunction); $this->having = $this->connection->condition($conjunction); $this->addJoin(NULL, $table, $alias); @@ -180,7 +180,7 @@ public function addMetaData($key, $object) { * {@inheritdoc} */ public function getMetaData($key) { - return isset($this->alterMetaData[$key]) ? $this->alterMetaData[$key] : NULL; + return $this->alterMetaData[$key] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Database/StatementPrefetch.php b/core/lib/Drupal/Core/Database/StatementPrefetch.php index 8c083e37babf..ab68dec877b4 100644 --- a/core/lib/Drupal/Core/Database/StatementPrefetch.php +++ b/core/lib/Drupal/Core/Database/StatementPrefetch.php @@ -435,7 +435,7 @@ public function rowCount() { public function fetch($fetch_style = NULL, $cursor_orientation = \PDO::FETCH_ORI_NEXT, $cursor_offset = NULL) { if (isset($this->currentRow)) { // Set the fetch parameter. - $this->fetchStyle = isset($fetch_style) ? $fetch_style : $this->defaultFetchStyle; + $this->fetchStyle = $fetch_style ?? $this->defaultFetchStyle; $this->fetchOptions = $this->defaultFetchOptions; // Grab the row in the format specified above. @@ -521,7 +521,7 @@ public function fetchAssoc() { * {@inheritdoc} */ public function fetchAll($mode = NULL, $column_index = NULL, $constructor_arguments = NULL) { - $this->fetchStyle = isset($mode) ? $mode : $this->defaultFetchStyle; + $this->fetchStyle = $mode ?? $this->defaultFetchStyle; $this->fetchOptions = $this->defaultFetchOptions; if (isset($column_index)) { $this->fetchOptions['column'] = $column_index; @@ -586,7 +586,7 @@ public function fetchAllKeyed($key_index = 0, $value_index = 1) { * {@inheritdoc} */ public function fetchAllAssoc($key, $fetch_style = NULL) { - $this->fetchStyle = isset($fetch_style) ? $fetch_style : $this->defaultFetchStyle; + $this->fetchStyle = $fetch_style ?? $this->defaultFetchStyle; $this->fetchOptions = $this->defaultFetchOptions; $result = []; diff --git a/core/lib/Drupal/Core/Datetime/Element/Datetime.php b/core/lib/Drupal/Core/Datetime/Element/Datetime.php index e3bfa9c59a3c..e1d0aea4720a 100644 --- a/core/lib/Drupal/Core/Datetime/Element/Datetime.php +++ b/core/lib/Drupal/Core/Datetime/Element/Datetime.php @@ -105,7 +105,7 @@ public static function valueCallback(&$element, $input, FormStateInterface $form ]; } else { - $date = isset($element['#default_value']) ? $element['#default_value'] : NULL; + $date = $element['#default_value'] ?? NULL; if ($date instanceof DrupalDateTime && !$date->hasErrors()) { $date->setTimezone(new \DateTimeZone($element['#date_timezone'])); $input = [ diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php index 87294d933a7c..5daa81a65587 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php @@ -42,7 +42,7 @@ public function process(ContainerBuilder $container) { throw new LogicException("Service '$id' does not implement $interface."); } } - $handlers[$id] = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $handlers[$id] = $attributes[0]['priority'] ?? 0; $interfaces[$id] = $handler->getClass(); } if (empty($handlers)) { diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterEventSubscribersPass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterEventSubscribersPass.php index aa943c724650..c2c28b38e774 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterEventSubscribersPass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterEventSubscribersPass.php @@ -40,12 +40,12 @@ public function process(ContainerBuilder $container) { $event_subscriber_info[$event_name][$priority][] = ['service' => [$id, $params]]; } elseif (is_string($params[0])) { - $priority = isset($params[1]) ? $params[1] : 0; + $priority = $params[1] ?? 0; $event_subscriber_info[$event_name][$priority][] = ['service' => [$id, $params[0]]]; } else { foreach ($params as $listener) { - $priority = isset($listener[1]) ? $listener[1] : 0; + $priority = $listener[1] ?? 0; $event_subscriber_info[$event_name][$priority][] = ['service' => [$id, $listener[0]]]; } } diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/StackedKernelPass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/StackedKernelPass.php index a6f79c6820e2..21f77dd55dad 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/StackedKernelPass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/StackedKernelPass.php @@ -68,7 +68,7 @@ public function process(ContainerBuilder $container) { $responders = []; foreach ($container->findTaggedServiceIds('http_middleware') as $id => $attributes) { - $priorities[$id] = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $priorities[$id] = $attributes[0]['priority'] ?? 0; $middlewares[$id] = $container->getDefinition($id); $responders[$id] = !empty($attributes[0]['responder']); } diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/StackedSessionHandlerPass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/StackedSessionHandlerPass.php index cf535dfc8b1f..6862cc465f34 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/StackedSessionHandlerPass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/StackedSessionHandlerPass.php @@ -24,7 +24,7 @@ public function process(ContainerBuilder $container) { $priorities = []; foreach ($container->findTaggedServiceIds('session_handler_proxy') as $id => $attributes) { - $priorities[$id] = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $priorities[$id] = $attributes[0]['priority'] ?? 0; $session_handler_proxies[$id] = $container->getDefinition($id); } diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/TaggedHandlersPass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/TaggedHandlersPass.php index 8a79378919ee..8022440efafb 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/TaggedHandlersPass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/TaggedHandlersPass.php @@ -134,9 +134,9 @@ public function process(ContainerBuilder $container) { * The service container. */ protected function processServiceCollectorPass(array $pass, $consumer_id, ContainerBuilder $container) { - $tag = isset($pass['tag']) ? $pass['tag'] : $consumer_id; - $method_name = isset($pass['call']) ? $pass['call'] : 'addHandler'; - $required = isset($pass['required']) ? $pass['required'] : FALSE; + $tag = $pass['tag'] ?? $consumer_id; + $method_name = $pass['call'] ?? 'addHandler'; + $required = $pass['required'] ?? FALSE; // Determine parameters. $consumer = $container->getDefinition($consumer_id); @@ -181,10 +181,10 @@ protected function processServiceCollectorPass(array $pass, $consumer_id, Contai if (!is_subclass_of($handler->getClass(), $interface)) { throw new LogicException("Service '$id' for consumer '$consumer_id' does not implement $interface."); } - $handlers[$id] = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $handlers[$id] = $attributes[0]['priority'] ?? 0; // Keep track of other tagged handlers arguments. foreach ($extra_params as $name => $pos) { - $extra_arguments[$id][$pos] = isset($attributes[0][$name]) ? $attributes[0][$name] : $params[$pos]->getDefaultValue(); + $extra_arguments[$id][$pos] = $attributes[0][$name] ?? $params[$pos]->getDefaultValue(); } } @@ -228,15 +228,15 @@ protected function processServiceCollectorPass(array $pass, $consumer_id, Contai * The service container. */ protected function processServiceIdCollectorPass(array $pass, $consumer_id, ContainerBuilder $container) { - $tag = isset($pass['tag']) ? $pass['tag'] : $consumer_id; - $required = isset($pass['required']) ? $pass['required'] : FALSE; + $tag = $pass['tag'] ?? $consumer_id; + $required = $pass['required'] ?? FALSE; $consumer = $container->getDefinition($consumer_id); // Find all tagged handlers. $handlers = []; foreach ($this->tagCache[$tag] ?? [] as $id => $attributes) { - $handlers[$id] = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $handlers[$id] = $attributes[0]['priority'] ?? 0; } if ($required && empty($handlers)) { diff --git a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php index 55cd154e0502..cab99558f0aa 100644 --- a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php +++ b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php @@ -311,8 +311,8 @@ private function parseDefinition($id, $service, $file) } if (isset($service['decorates'])) { - $renameId = isset($service['decoration_inner_name']) ? $service['decoration_inner_name'] : null; - $priority = isset($service['decoration_priority']) ? $service['decoration_priority'] : 0; + $renameId = $service['decoration_inner_name'] ?? null; + $priority = $service['decoration_priority'] ?? 0; $definition->setDecoratedService($service['decorates'], $renameId, $priority); } diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php index 04ce6ca97b03..d9c18029994a 100644 --- a/core/lib/Drupal/Core/DrupalKernel.php +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -635,7 +635,7 @@ public function discoverServiceProviders() { $this->containerNeedsDumping = FALSE; $GLOBALS['conf']['container_service_providers']['InstallerServiceProvider'] = 'Drupal\Core\Installer\InstallerServiceProvider'; } - $this->moduleList = isset($extensions['module']) ? $extensions['module'] : []; + $this->moduleList = $extensions['module'] ?? []; } $module_filenames = $this->getModuleFileNames(); $this->classLoaderAddMultiplePsr4($this->getModuleNamespacesPsr4($module_filenames)); @@ -778,7 +778,7 @@ protected function moduleData($module) { // Now find modules. $this->moduleData = $profiles + $listing->scan('module'); } - return isset($this->moduleData[$module]) ? $this->moduleData[$module] : FALSE; + return $this->moduleData[$module] ?? FALSE; } /** diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php index 3913143156ff..ee965898bc6a 100644 --- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php +++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php @@ -606,7 +606,7 @@ protected function getTranslatedField($name, $langcode) { // $this->defaultLangcode might not be set if we are initializing the // default language code cache, in which case there is no valid // langcode to assign. - $field_langcode = isset($this->defaultLangcode) ? $this->defaultLangcode : LanguageInterface::LANGCODE_NOT_SPECIFIED; + $field_langcode = $this->defaultLangcode ?? LanguageInterface::LANGCODE_NOT_SPECIFIED; } else { $field_langcode = $langcode; diff --git a/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php b/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php index a395e3bc4157..d1044043a577 100644 --- a/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php +++ b/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php @@ -632,7 +632,7 @@ protected function preLoad(array &$ids = NULL) { public function loadRevision($revision_id) { $revisions = $this->loadMultipleRevisions([$revision_id]); - return isset($revisions[$revision_id]) ? $revisions[$revision_id] : NULL; + return $revisions[$revision_id] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Entity/ContentEntityType.php b/core/lib/Drupal/Core/Entity/ContentEntityType.php index 5904851dabfc..73f07bf0916e 100644 --- a/core/lib/Drupal/Core/Entity/ContentEntityType.php +++ b/core/lib/Drupal/Core/Entity/ContentEntityType.php @@ -65,7 +65,7 @@ public function getRevisionMetadataKeys() { */ public function getRevisionMetadataKey($key) { $keys = $this->getRevisionMetadataKeys(); - return isset($keys[$key]) ? $keys[$key] : FALSE; + return $keys[$key] ?? FALSE; } /** diff --git a/core/lib/Drupal/Core/Entity/Controller/EntityController.php b/core/lib/Drupal/Core/Entity/Controller/EntityController.php index 5d8f25698b4a..4dd93475fb72 100644 --- a/core/lib/Drupal/Core/Entity/Controller/EntityController.php +++ b/core/lib/Drupal/Core/Entity/Controller/EntityController.php @@ -183,7 +183,7 @@ public function addPage($entity_type_id) { foreach ($bundles as $bundle_name => $bundle_info) { $build['#bundles'][$bundle_name] = [ 'label' => $bundle_info['label'], - 'description' => isset($bundle_info['description']) ? $bundle_info['description'] : '', + 'description' => $bundle_info['description'] ?? '', 'add_link' => Link::createFromRoute($bundle_info['label'], $form_route_name, [$bundle_argument => $bundle_name]), ]; } diff --git a/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php b/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php index 1083f1127ae1..083de1d63975 100644 --- a/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php +++ b/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php @@ -167,12 +167,12 @@ public static function processEntityAutocomplete(array &$element, FormStateInter throw new \InvalidArgumentException("Missing required #autocreate['bundle'] parameter."); } // Default the autocreate user ID to the current user. - $element['#autocreate']['uid'] = isset($element['#autocreate']['uid']) ? $element['#autocreate']['uid'] : \Drupal::currentUser()->id(); + $element['#autocreate']['uid'] = $element['#autocreate']['uid'] ?? \Drupal::currentUser()->id(); } // Store the selection settings in the key/value store and pass a hashed key // in the route parameters. - $selection_settings = isset($element['#selection_settings']) ? $element['#selection_settings'] : []; + $selection_settings = $element['#selection_settings'] ?? []; $data = serialize($selection_settings) . $element['#target_type'] . $element['#selection_handler']; $selection_settings_key = Crypt::hmacBase64($data, Settings::getHashSalt()); @@ -287,7 +287,7 @@ public static function validateEntityAutocomplete(array &$element, FormStateInte // matches (tags). if (!$element['#tags'] && !empty($value)) { $last_value = $value[count($value) - 1]; - $value = isset($last_value['target_id']) ? $last_value['target_id'] : $last_value; + $value = $last_value['target_id'] ?? $last_value; } } diff --git a/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php b/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php index dfa011ed55f7..3dcffd2cfa4b 100644 --- a/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php +++ b/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php @@ -216,7 +216,7 @@ public function processForm($element, FormStateInterface $form_state, $form) { // Hide extra fields. $extra_fields = \Drupal::service('entity_field.manager')->getExtraFields($this->targetEntityType, $this->bundle); - $extra_fields = isset($extra_fields['form']) ? $extra_fields['form'] : []; + $extra_fields = $extra_fields['form'] ?? []; foreach ($extra_fields as $extra_field => $info) { if (!$this->getComponent($extra_field)) { $element[$extra_field]['#access'] = FALSE; diff --git a/core/lib/Drupal/Core/Entity/EntityBase.php b/core/lib/Drupal/Core/Entity/EntityBase.php index 68dbe437c0d3..44a673489679 100644 --- a/core/lib/Drupal/Core/Entity/EntityBase.php +++ b/core/lib/Drupal/Core/Entity/EntityBase.php @@ -104,14 +104,14 @@ protected function uuidGenerator() { * {@inheritdoc} */ public function id() { - return isset($this->id) ? $this->id : NULL; + return $this->id ?? NULL; } /** * {@inheritdoc} */ public function uuid() { - return isset($this->uuid) ? $this->uuid : NULL; + return $this->uuid ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Entity/EntityDisplayBase.php b/core/lib/Drupal/Core/Entity/EntityDisplayBase.php index c2b67869305c..7dce1ff3c307 100644 --- a/core/lib/Drupal/Core/Entity/EntityDisplayBase.php +++ b/core/lib/Drupal/Core/Entity/EntityDisplayBase.php @@ -158,7 +158,7 @@ protected function init() { // Fill in defaults for extra fields. $context = $this->displayContext == 'view' ? 'display' : $this->displayContext; $extra_fields = \Drupal::service('entity_field.manager')->getExtraFields($this->targetEntityType, $this->bundle); - $extra_fields = isset($extra_fields[$context]) ? $extra_fields[$context] : []; + $extra_fields = $extra_fields[$context] ?? []; foreach ($extra_fields as $name => $definition) { if (!isset($this->content[$name]) && !isset($this->hidden[$name])) { // Extra fields are visible by default unless they explicitly say so. @@ -328,7 +328,7 @@ public function getComponents() { * {@inheritdoc} */ public function getComponent($name) { - return isset($this->content[$name]) ? $this->content[$name] : NULL; + return $this->content[$name] ?? NULL; } /** @@ -391,7 +391,7 @@ public function getHighestWeight() { */ protected function getFieldDefinition($field_name) { $definitions = $this->getFieldDefinitions(); - return isset($definitions[$field_name]) ? $definitions[$field_name] : NULL; + return $definitions[$field_name] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Entity/EntityFieldManager.php b/core/lib/Drupal/Core/Entity/EntityFieldManager.php index c8459426125d..4b1b9b1d7fe4 100644 --- a/core/lib/Drupal/Core/Entity/EntityFieldManager.php +++ b/core/lib/Drupal/Core/Entity/EntityFieldManager.php @@ -656,7 +656,7 @@ public function getExtraFields($entity_type_id, $bundle) { $extra = $this->moduleHandler->invokeAll('entity_extra_field_info'); $this->moduleHandler->alter('entity_extra_field_info', $extra); - $info = isset($extra[$entity_type_id][$bundle]) ? $extra[$entity_type_id][$bundle] : []; + $info = $extra[$entity_type_id][$bundle] ?? []; $info += [ 'form' => [], 'display' => [], diff --git a/core/lib/Drupal/Core/Entity/EntityStorageBase.php b/core/lib/Drupal/Core/Entity/EntityStorageBase.php index ca3e1e04d378..6f970268090c 100644 --- a/core/lib/Drupal/Core/Entity/EntityStorageBase.php +++ b/core/lib/Drupal/Core/Entity/EntityStorageBase.php @@ -294,7 +294,7 @@ protected function doCreate(array $values) { public function load($id) { assert(!is_null($id), sprintf('Cannot load the "%s" entity with NULL ID.', $this->entityTypeId)); $entities = $this->loadMultiple([$id]); - return isset($entities[$id]) ? $entities[$id] : NULL; + return $entities[$id] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Entity/EntityType.php b/core/lib/Drupal/Core/Entity/EntityType.php index 4b8abf1e1d3d..527930c0670b 100644 --- a/core/lib/Drupal/Core/Entity/EntityType.php +++ b/core/lib/Drupal/Core/Entity/EntityType.php @@ -332,10 +332,10 @@ public function __construct($definition) { */ public function get($property) { if (property_exists($this, $property)) { - $value = isset($this->{$property}) ? $this->{$property} : NULL; + $value = $this->{$property} ?? NULL; } else { - $value = isset($this->additional[$property]) ? $this->additional[$property] : NULL; + $value = $this->additional[$property] ?? NULL; } return $value; } @@ -393,7 +393,7 @@ public function getKeys() { */ public function getKey($key) { $keys = $this->getKeys(); - return isset($keys[$key]) ? $keys[$key] : FALSE; + return $keys[$key] ?? FALSE; } /** @@ -627,7 +627,7 @@ public function getLinkTemplates() { */ public function getLinkTemplate($key) { $links = $this->getLinkTemplates(); - return isset($links[$key]) ? $links[$key] : FALSE; + return $links[$key] ?? FALSE; } /** diff --git a/core/lib/Drupal/Core/Entity/EntityTypeBundleInfo.php b/core/lib/Drupal/Core/Entity/EntityTypeBundleInfo.php index aa917c845cb5..8aef5ee039e1 100644 --- a/core/lib/Drupal/Core/Entity/EntityTypeBundleInfo.php +++ b/core/lib/Drupal/Core/Entity/EntityTypeBundleInfo.php @@ -78,7 +78,7 @@ public function __construct(EntityTypeManagerInterface $entity_type_manager, Lan */ public function getBundleInfo($entity_type_id) { $bundle_info = $this->getAllBundleInfo(); - return isset($bundle_info[$entity_type_id]) ? $bundle_info[$entity_type_id] : []; + return $bundle_info[$entity_type_id] ?? []; } /** diff --git a/core/lib/Drupal/Core/Entity/EntityTypeManager.php b/core/lib/Drupal/Core/Entity/EntityTypeManager.php index fae13959578d..8b7daa354fed 100644 --- a/core/lib/Drupal/Core/Entity/EntityTypeManager.php +++ b/core/lib/Drupal/Core/Entity/EntityTypeManager.php @@ -232,7 +232,7 @@ public function getRouteProviders($entity_type_id) { } } - return isset($this->handlers['route_provider'][$entity_type_id]) ? $this->handlers['route_provider'][$entity_type_id] : []; + return $this->handlers['route_provider'][$entity_type_id] ?? []; } /** diff --git a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php index 90e56472cf8c..2ff43fcb1622 100644 --- a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php +++ b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php @@ -482,7 +482,7 @@ public function viewFieldItem(FieldItemInterface $item, $display = []) { $elements = $this->viewField($clone->{$field_name}, $display); // Extract the part of the render array we need. - $output = isset($elements[0]) ? $elements[0] : []; + $output = $elements[0] ?? []; if (isset($elements['#access'])) { $output['#access'] = $elements['#access']; } diff --git a/core/lib/Drupal/Core/Entity/Query/QueryBase.php b/core/lib/Drupal/Core/Entity/Query/QueryBase.php index da5c76031b55..85878aa75cbc 100644 --- a/core/lib/Drupal/Core/Entity/Query/QueryBase.php +++ b/core/lib/Drupal/Core/Entity/Query/QueryBase.php @@ -330,7 +330,7 @@ public function tableSort(&$headers) { $direction = TableSort::getSort($headers, \Drupal::request()); foreach ($headers as $header) { if (is_array($header) && ($header['data'] == $order['name'])) { - $this->sort($header['specifier'], $direction, isset($header['langcode']) ? $header['langcode'] : NULL); + $this->sort($header['specifier'], $direction, $header['langcode'] ?? NULL); } } @@ -385,7 +385,7 @@ public function addMetaData($key, $object) { * {@inheritdoc} */ public function getMetaData($key) { - return isset($this->alterMetaData[$key]) ? $this->alterMetaData[$key] : NULL; + return $this->alterMetaData[$key] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Query.php b/core/lib/Drupal/Core/Entity/Query/Sql/Query.php index c2699dd4c906..ad66a4297210 100644 --- a/core/lib/Drupal/Core/Entity/Query/Sql/Query.php +++ b/core/lib/Drupal/Core/Entity/Query/Sql/Query.php @@ -250,7 +250,7 @@ protected function finish() { $this->sqlQuery->groupBy($field); } foreach ($this->sqlFields as $field) { - $this->sqlQuery->addField($field[0], $field[1], isset($field[2]) ? $field[2] : NULL); + $this->sqlQuery->addField($field[0], $field[1], $field[2] ?? NULL); } return $this; } diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php index 7f307debaf74..a21f2646987d 100644 --- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php +++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php @@ -1048,7 +1048,7 @@ protected function mapToStorageRecord(ContentEntityInterface $entity, $table_nam $value = ($item = $entity->$field_name->first()) ? $item->getValue() : []; } else { - $value = isset($entity->$field_name->$column_name) ? $entity->$field_name->$column_name : NULL; + $value = $entity->$field_name->$column_name ?? NULL; } if (!empty($definition->getSchema()['columns'][$column_name]['serialize'])) { $value = serialize($value); diff --git a/core/lib/Drupal/Core/Entity/TypedData/EntityDataDefinition.php b/core/lib/Drupal/Core/Entity/TypedData/EntityDataDefinition.php index 3e362317b574..e3910fd6f01e 100644 --- a/core/lib/Drupal/Core/Entity/TypedData/EntityDataDefinition.php +++ b/core/lib/Drupal/Core/Entity/TypedData/EntityDataDefinition.php @@ -60,10 +60,7 @@ public static function createFromDataType($data_type) { if ($parts[0] != 'entity') { throw new \InvalidArgumentException('Data type must be in the form of "entity:ENTITY_TYPE:BUNDLE."'); } - return static::create( - isset($parts[1]) ? $parts[1] : NULL, - isset($parts[2]) ? $parts[2] : NULL - ); + return static::create($parts[1] ?? NULL, $parts[2] ?? NULL); } /** @@ -120,7 +117,7 @@ public function getDataType() { * {@inheritdoc} */ public function getEntityTypeId() { - return isset($this->definition['constraints']['EntityType']) ? $this->definition['constraints']['EntityType'] : NULL; + return $this->definition['constraints']['EntityType'] ?? NULL; } /** @@ -134,7 +131,7 @@ public function setEntityTypeId($entity_type_id) { * {@inheritdoc} */ public function getBundles() { - $bundle = isset($this->definition['constraints']['Bundle']) ? $this->definition['constraints']['Bundle'] : NULL; + $bundle = $this->definition['constraints']['Bundle'] ?? NULL; return is_string($bundle) ? [$bundle] : $bundle; } diff --git a/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php index dd0b355c79f1..906dab45deb9 100644 --- a/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php @@ -92,7 +92,7 @@ protected function validateModules(ConfigImporter $config_importer) { // Get the install profile from the site's configuration. $current_core_extension = $config_importer->getStorageComparer()->getTargetStorage()->read('core.extension'); - $install_profile = isset($current_core_extension['profile']) ? $current_core_extension['profile'] : NULL; + $install_profile = $current_core_extension['profile'] ?? NULL; // Ensure the profile is not changing. if ($install_profile !== $core_extension['profile']) { diff --git a/core/lib/Drupal/Core/Extension/InfoParserDynamic.php b/core/lib/Drupal/Core/Extension/InfoParserDynamic.php index 718be0aa53b1..7189560d1720 100644 --- a/core/lib/Drupal/Core/Extension/InfoParserDynamic.php +++ b/core/lib/Drupal/Core/Extension/InfoParserDynamic.php @@ -102,7 +102,7 @@ public function parse($filename) { // Determine if the extension is compatible with the current version of // Drupal core. - $core_version_constraint = isset($parsed_info['core_version_requirement']) ? $parsed_info['core_version_requirement'] : $parsed_info['core']; + $core_version_constraint = $parsed_info['core_version_requirement'] ?? $parsed_info['core']; $parsed_info['core_incompatible'] = !Semver::satisfies(\Drupal::VERSION, $core_version_constraint); if (isset($parsed_info['version']) && $parsed_info['version'] === 'VERSION') { $parsed_info['version'] = \Drupal::VERSION; diff --git a/core/lib/Drupal/Core/Extension/ModuleExtensionList.php b/core/lib/Drupal/Core/Extension/ModuleExtensionList.php index ab4be3869846..5aed60c0b04c 100644 --- a/core/lib/Drupal/Core/Extension/ModuleExtensionList.php +++ b/core/lib/Drupal/Core/Extension/ModuleExtensionList.php @@ -162,7 +162,7 @@ protected function doList() { // Add status, weight, and schema version. $installed_modules = $this->configFactory->get('core.extension')->get('module') ?: []; foreach ($extensions as $name => $module) { - $module->weight = isset($installed_modules[$name]) ? $installed_modules[$name] : 0; + $module->weight = $installed_modules[$name] ?? 0; $module->status = (int) isset($installed_modules[$name]); $module->schema_version = UpdateHookRegistry::SCHEMA_UNINSTALLED; } diff --git a/core/lib/Drupal/Core/Extension/ModuleHandler.php b/core/lib/Drupal/Core/Extension/ModuleHandler.php index 74b0834ab3c8..1b22117ae227 100644 --- a/core/lib/Drupal/Core/Extension/ModuleHandler.php +++ b/core/lib/Drupal/Core/Extension/ModuleHandler.php @@ -233,8 +233,8 @@ public function buildModuleDependencies(array $modules) { $graph_object = new Graph($graph); $graph = $graph_object->searchAndSort(); foreach ($graph as $module_name => $data) { - $modules[$module_name]->required_by = isset($data['reverse_paths']) ? $data['reverse_paths'] : []; - $modules[$module_name]->requires = isset($data['paths']) ? $data['paths'] : []; + $modules[$module_name]->required_by = $data['reverse_paths'] ?? []; + $modules[$module_name]->requires = $data['paths'] ?? []; $modules[$module_name]->sort = $data['weight']; } return $modules; diff --git a/core/lib/Drupal/Core/Extension/ModuleInstaller.php b/core/lib/Drupal/Core/Extension/ModuleInstaller.php index bb55a1d85299..21970253e91b 100644 --- a/core/lib/Drupal/Core/Extension/ModuleInstaller.php +++ b/core/lib/Drupal/Core/Extension/ModuleInstaller.php @@ -583,9 +583,9 @@ protected function removeCacheBins($module) { $definitions = Yaml::decode(file_get_contents($service_yaml_file)); $cache_bin_services = array_filter( - isset($definitions['services']) ? $definitions['services'] : [], + $definitions['services'] ?? [], function ($definition) { - $tags = isset($definition['tags']) ? $definition['tags'] : []; + $tags = $definition['tags'] ?? []; foreach ($tags as $tag) { if (isset($tag['name']) && ($tag['name'] == 'cache.bin')) { return TRUE; diff --git a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php index 7cd56e25788e..4a0b53d2f052 100644 --- a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php +++ b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php @@ -192,7 +192,7 @@ public function setSetting($setting_name, $value) { * {@inheritdoc} */ public function getProvider() { - return isset($this->definition['provider']) ? $this->definition['provider'] : NULL; + return $this->definition['provider'] ?? NULL; } /** @@ -257,7 +257,7 @@ public function setRevisionable($revisionable) { */ public function getCardinality() { // @todo: Allow to control this. - return isset($this->definition['cardinality']) ? $this->definition['cardinality'] : 1; + return $this->definition['cardinality'] ?? 1; } /** @@ -408,28 +408,28 @@ public function setDisplayConfigurable($display_context, $configurable) { * {@inheritdoc} */ public function getDisplayOptions($display_context) { - return isset($this->definition['display'][$display_context]['options']) ? $this->definition['display'][$display_context]['options'] : NULL; + return $this->definition['display'][$display_context]['options'] ?? NULL; } /** * {@inheritdoc} */ public function isDisplayConfigurable($display_context) { - return isset($this->definition['display'][$display_context]['configurable']) ? $this->definition['display'][$display_context]['configurable'] : FALSE; + return $this->definition['display'][$display_context]['configurable'] ?? FALSE; } /** * {@inheritdoc} */ public function getDefaultValueLiteral() { - return isset($this->definition['default_value']) ? $this->definition['default_value'] : []; + return $this->definition['default_value'] ?? []; } /** * {@inheritdoc} */ public function getDefaultValueCallback() { - return isset($this->definition['default_value_callback']) ? $this->definition['default_value_callback'] : NULL; + return $this->definition['default_value_callback'] ?? NULL; } /** @@ -524,7 +524,7 @@ public function setInitialValue($value) { * The field name. */ public function getInitialValueFromField() { - return isset($this->definition['initial_value_from_field']) ? $this->definition['initial_value_from_field'] : NULL; + return $this->definition['initial_value_from_field'] ?? NULL; } /** @@ -620,7 +620,7 @@ public function __sleep() { * {@inheritdoc} */ public function getTargetEntityTypeId() { - return isset($this->definition['entity_type']) ? $this->definition['entity_type'] : NULL; + return $this->definition['entity_type'] ?? NULL; } /** @@ -640,7 +640,7 @@ public function setTargetEntityTypeId($entity_type_id) { * {@inheritdoc} */ public function getTargetBundle() { - return isset($this->definition['bundle']) ? $this->definition['bundle'] : NULL; + return $this->definition['bundle'] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Field/FieldConfigBase.php b/core/lib/Drupal/Core/Field/FieldConfigBase.php index 4f3bdf99b748..3f4fc4ea5d8a 100644 --- a/core/lib/Drupal/Core/Field/FieldConfigBase.php +++ b/core/lib/Drupal/Core/Field/FieldConfigBase.php @@ -505,7 +505,7 @@ public function getConstraints() { */ public function getConstraint($constraint_name) { $constraints = $this->getConstraints(); - return isset($constraints[$constraint_name]) ? $constraints[$constraint_name] : NULL; + return $constraints[$constraint_name] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Field/FieldDefinition.php b/core/lib/Drupal/Core/Field/FieldDefinition.php index 80bb222d9dc2..9fbc65937a80 100644 --- a/core/lib/Drupal/Core/Field/FieldDefinition.php +++ b/core/lib/Drupal/Core/Field/FieldDefinition.php @@ -124,7 +124,7 @@ public function setDisplayConfigurable($display_context, $configurable) { * {@inheritdoc} */ public function isDisplayConfigurable($display_context) { - return isset($this->definition['display'][$display_context]['configurable']) ? $this->definition['display'][$display_context]['configurable'] : FALSE; + return $this->definition['display'][$display_context]['configurable'] ?? FALSE; } /** @@ -157,14 +157,14 @@ public function setDisplayOptions($display_context, array $options) { * {@inheritdoc} */ public function getDisplayOptions($display_context) { - return isset($this->definition['display'][$display_context]['options']) ? $this->definition['display'][$display_context]['options'] : NULL; + return $this->definition['display'][$display_context]['options'] ?? NULL; } /** * {@inheritdoc} */ public function getDefaultValueLiteral() { - return isset($this->definition['default_value']) ? $this->definition['default_value'] : []; + return $this->definition['default_value'] ?? []; } /** @@ -187,7 +187,7 @@ public function setDefaultValueCallback($callback) { * {@inheritdoc} */ public function getDefaultValueCallback() { - return isset($this->definition['default_value_callback']) ? $this->definition['default_value_callback'] : NULL; + return $this->definition['default_value_callback'] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php index efdc92eddf85..d337350983ef 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php @@ -146,7 +146,7 @@ public function settingsSummary() { $view_modes = $this->entityDisplayRepository->getViewModeOptions($this->getFieldSetting('target_type')); $view_mode = $this->getSetting('view_mode'); - $summary[] = t('Rendered as @mode', ['@mode' => isset($view_modes[$view_mode]) ? $view_modes[$view_mode] : $view_mode]); + $summary[] = t('Rendered as @mode', ['@mode' => $view_modes[$view_mode] ?? $view_mode]); return $summary; } diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php index 07f66cf269a8..76d0bdd24e68 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EmailDefaultWidget.php @@ -74,7 +74,7 @@ public function settingsSummary() { public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element['value'] = $element + [ '#type' => 'email', - '#default_value' => isset($items[$delta]->value) ? $items[$delta]->value : NULL, + '#default_value' => $items[$delta]->value ?? NULL, '#placeholder' => $this->getSetting('placeholder'), '#size' => $this->getSetting('size'), '#maxlength' => Email::EMAIL_MAX_LENGTH, diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php index d9f5b581f389..2ce3912d8bda 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php @@ -112,7 +112,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen // the 'ValidReference' constraint. '#validate_reference' => FALSE, '#maxlength' => 1024, - '#default_value' => isset($referenced_entities[$delta]) ? $referenced_entities[$delta] : NULL, + '#default_value' => $referenced_entities[$delta] ?? NULL, '#size' => $this->getSetting('size'), '#placeholder' => $this->getSetting('placeholder'), ]; @@ -196,7 +196,7 @@ protected function getAutocreateBundle() { */ protected function getSelectionHandlerSetting($setting_name) { $settings = $this->getFieldSetting('handler_settings'); - return isset($settings[$setting_name]) ? $settings[$setting_name] : NULL; + return $settings[$setting_name] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php index b4fac537b476..976b52832e71 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/NumberWidget.php @@ -66,7 +66,7 @@ public function settingsSummary() { * {@inheritdoc} */ public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { - $value = isset($items[$delta]->value) ? $items[$delta]->value : NULL; + $value = $items[$delta]->value ?? NULL; $field_settings = $this->getFieldSettings(); $element += [ diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextfieldWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextfieldWidget.php index 3be168176143..a0bb425f0cb8 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextfieldWidget.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/StringTextfieldWidget.php @@ -70,7 +70,7 @@ public function settingsSummary() { public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element['value'] = $element + [ '#type' => 'textfield', - '#default_value' => isset($items[$delta]->value) ? $items[$delta]->value : NULL, + '#default_value' => $items[$delta]->value ?? NULL, '#size' => $this->getSetting('size'), '#placeholder' => $this->getSetting('placeholder'), '#maxlength' => $this->getFieldSetting('max_length'), diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/UriWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/UriWidget.php index f89b4442e45a..4d8dc0e14389 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/UriWidget.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/UriWidget.php @@ -70,7 +70,7 @@ public function settingsSummary() { public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element['value'] = $element + [ '#type' => 'url', - '#default_value' => isset($items[$delta]->value) ? $items[$delta]->value : NULL, + '#default_value' => $items[$delta]->value ?? NULL, '#size' => $this->getSetting('size'), '#placeholder' => $this->getSetting('placeholder'), '#maxlength' => $this->getFieldSetting('max_length'), diff --git a/core/lib/Drupal/Core/Field/PluginSettingsBase.php b/core/lib/Drupal/Core/Field/PluginSettingsBase.php index 4e38e755f142..528d7d507c14 100644 --- a/core/lib/Drupal/Core/Field/PluginSettingsBase.php +++ b/core/lib/Drupal/Core/Field/PluginSettingsBase.php @@ -61,7 +61,7 @@ public function getSetting($key) { if (!$this->defaultSettingsMerged && !array_key_exists($key, $this->settings)) { $this->mergeDefaults(); } - return isset($this->settings[$key]) ? $this->settings[$key] : NULL; + return $this->settings[$key] ?? NULL; } /** @@ -94,7 +94,7 @@ public function setSetting($key, $value) { */ public function getThirdPartySettings($module = NULL) { if ($module) { - return isset($this->thirdPartySettings[$module]) ? $this->thirdPartySettings[$module] : []; + return $this->thirdPartySettings[$module] ?? []; } return $this->thirdPartySettings; } @@ -103,7 +103,7 @@ public function getThirdPartySettings($module = NULL) { * {@inheritdoc} */ public function getThirdPartySetting($module, $key, $default = NULL) { - return isset($this->thirdPartySettings[$module][$key]) ? $this->thirdPartySettings[$module][$key] : $default; + return $this->thirdPartySettings[$module][$key] ?? $default; } /** diff --git a/core/lib/Drupal/Core/Field/WidgetBase.php b/core/lib/Drupal/Core/Field/WidgetBase.php index ce896fb5f45c..a5549e670132 100644 --- a/core/lib/Drupal/Core/Field/WidgetBase.php +++ b/core/lib/Drupal/Core/Field/WidgetBase.php @@ -84,7 +84,7 @@ public function form(FieldItemListInterface $items, array &$form, FormStateInter // displaying an individual element, just get a single form element and make // it the $delta value. if ($this->handlesMultipleValues() || isset($get_delta)) { - $delta = isset($get_delta) ? $get_delta : 0; + $delta = $get_delta ?? 0; $element = [ '#title' => $this->fieldDefinition->getLabel(), '#description' => $this->getFilteredDescription(), @@ -332,8 +332,8 @@ public static function addMoreAjax(array $form, FormStateInterface $form_state) // Add a DIV around the delta receiving the Ajax effect. $delta = $element['#max_delta']; - $element[$delta]['#prefix'] = '<div class="ajax-new-content">' . (isset($element[$delta]['#prefix']) ? $element[$delta]['#prefix'] : ''); - $element[$delta]['#suffix'] = (isset($element[$delta]['#suffix']) ? $element[$delta]['#suffix'] : '') . '</div>'; + $element[$delta]['#prefix'] = '<div class="ajax-new-content">' . ($element[$delta]['#prefix'] ?? ''); + $element[$delta]['#suffix'] = ($element[$delta]['#suffix'] ?? '') . '</div>'; return $element; } @@ -406,7 +406,7 @@ public function extractFormValues(FieldItemListInterface $items, array $form, Fo // Put delta mapping in $form_state, so that flagErrors() can use it. $field_state = static::getWidgetState($form['#parents'], $field_name, $form_state); foreach ($items as $delta => $item) { - $field_state['original_deltas'][$delta] = isset($item->_original_delta) ? $item->_original_delta : $delta; + $field_state['original_deltas'][$delta] = $item->_original_delta ?? $delta; unset($item->_original_delta, $item->_weight); } static::setWidgetState($form['#parents'], $field_name, $form_state, $field_state); diff --git a/core/lib/Drupal/Core/Field/WidgetPluginManager.php b/core/lib/Drupal/Core/Field/WidgetPluginManager.php index 80e9718769c6..e5afb21e5fcd 100644 --- a/core/lib/Drupal/Core/Field/WidgetPluginManager.php +++ b/core/lib/Drupal/Core/Field/WidgetPluginManager.php @@ -145,7 +145,7 @@ public function prepareConfiguration($field_type, array $configuration) { // If no widget is specified, use the default widget. if (!isset($configuration['type'])) { $field_type = $this->fieldTypeManager->getDefinition($field_type); - $configuration['type'] = isset($field_type['default_widget']) ? $field_type['default_widget'] : NULL; + $configuration['type'] = $field_type['default_widget'] ?? NULL; } // Filter out unknown settings, and fill in defaults for missing settings. $default_settings = $this->getDefaultSettings($configuration['type']); diff --git a/core/lib/Drupal/Core/Form/FormBuilder.php b/core/lib/Drupal/Core/Form/FormBuilder.php index 8acb6321b9d5..6388b857c767 100644 --- a/core/lib/Drupal/Core/Form/FormBuilder.php +++ b/core/lib/Drupal/Core/Form/FormBuilder.php @@ -1280,7 +1280,7 @@ protected function handleInputElement($form_id, &$element, FormStateInterface &$ // value. Avoid image buttons (which come with garbage value), so we // only get value for the button actually clicked. if (!isset($element['#value']) && empty($element['#has_garbage_value'])) { - $element['#value'] = isset($element['#default_value']) ? $element['#default_value'] : ''; + $element['#value'] = $element['#default_value'] ?? ''; } } } diff --git a/core/lib/Drupal/Core/Http/LinkRelationType.php b/core/lib/Drupal/Core/Http/LinkRelationType.php index b0366e5ef64d..8c2af13bb0ca 100644 --- a/core/lib/Drupal/Core/Http/LinkRelationType.php +++ b/core/lib/Drupal/Core/Http/LinkRelationType.php @@ -41,21 +41,21 @@ public function getExtensionUri() { * {@inheritdoc} */ public function getDescription() { - return isset($this->pluginDefinition['description']) ? $this->pluginDefinition['description'] : ''; + return $this->pluginDefinition['description'] ?? ''; } /** * {@inheritdoc} */ public function getReference() { - return isset($this->pluginDefinition['reference']) ? $this->pluginDefinition['reference'] : ''; + return $this->pluginDefinition['reference'] ?? ''; } /** * {@inheritdoc} */ public function getNotes() { - return isset($this->pluginDefinition['notes']) ? $this->pluginDefinition['notes'] : ''; + return $this->pluginDefinition['notes'] ?? ''; } } diff --git a/core/lib/Drupal/Core/Installer/Form/SelectProfileForm.php b/core/lib/Drupal/Core/Installer/Form/SelectProfileForm.php index c37150c7796c..82b7d3c9e251 100644 --- a/core/lib/Drupal/Core/Installer/Form/SelectProfileForm.php +++ b/core/lib/Drupal/Core/Installer/Form/SelectProfileForm.php @@ -48,7 +48,7 @@ public function buildForm(array $form, FormStateInterface $form_state, $install_ // Determine the name of the profile; default to file name if defined name // is unspecified. - $name = isset($details['name']) ? $details['name'] : $profile->getName(); + $name = $details['name'] ?? $profile->getName(); $names[$profile->getName()] = $name; } diff --git a/core/lib/Drupal/Core/KeyValueStore/StorageBase.php b/core/lib/Drupal/Core/KeyValueStore/StorageBase.php index ad5e3b4a56f7..ead499c70ce0 100644 --- a/core/lib/Drupal/Core/KeyValueStore/StorageBase.php +++ b/core/lib/Drupal/Core/KeyValueStore/StorageBase.php @@ -33,7 +33,7 @@ public function getCollectionName() { */ public function get($key, $default = NULL) { $values = $this->getMultiple([$key]); - return isset($values[$key]) ? $values[$key] : $default; + return $values[$key] ?? $default; } /** diff --git a/core/lib/Drupal/Core/Language/LanguageManager.php b/core/lib/Drupal/Core/Language/LanguageManager.php index eb5295cdbe57..dd1687d56bac 100644 --- a/core/lib/Drupal/Core/Language/LanguageManager.php +++ b/core/lib/Drupal/Core/Language/LanguageManager.php @@ -149,7 +149,7 @@ public function getNativeLanguages() { */ public function getLanguage($langcode) { $languages = $this->getLanguages(LanguageInterface::STATE_ALL); - return isset($languages[$langcode]) ? $languages[$langcode] : NULL; + return $languages[$langcode] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Layout/LayoutDefinition.php b/core/lib/Drupal/Core/Layout/LayoutDefinition.php index 033175188a69..d80a8720cabd 100644 --- a/core/lib/Drupal/Core/Layout/LayoutDefinition.php +++ b/core/lib/Drupal/Core/Layout/LayoutDefinition.php @@ -158,10 +158,10 @@ public function __construct(array $definition) { */ public function get($property) { if (property_exists($this, $property)) { - $value = isset($this->{$property}) ? $this->{$property} : NULL; + $value = $this->{$property} ?? NULL; } else { - $value = isset($this->additional[$property]) ? $this->additional[$property] : NULL; + $value = $this->additional[$property] ?? NULL; } return $value; } diff --git a/core/lib/Drupal/Core/Layout/LayoutPluginManager.php b/core/lib/Drupal/Core/Layout/LayoutPluginManager.php index 2cd0c6895735..12d740350918 100644 --- a/core/lib/Drupal/Core/Layout/LayoutPluginManager.php +++ b/core/lib/Drupal/Core/Layout/LayoutPluginManager.php @@ -198,7 +198,7 @@ public function getCategories() { */ public function getSortedDefinitions(array $definitions = NULL, $label_key = 'label') { // Sort the plugins first by category, then by label. - $definitions = isset($definitions) ? $definitions : $this->getDefinitions(); + $definitions = $definitions ?? $this->getDefinitions(); // Suppress errors because PHPUnit will indirectly modify the contents, // triggering https://bugs.php.net/bug.php?id=50688. @uasort($definitions, function (LayoutDefinition $a, LayoutDefinition $b) { @@ -216,7 +216,7 @@ public function getSortedDefinitions(array $definitions = NULL, $label_key = 'la * @return \Drupal\Core\Layout\LayoutDefinition[][] */ public function getGroupedDefinitions(array $definitions = NULL, $label_key = 'label') { - $definitions = $this->getSortedDefinitions(isset($definitions) ? $definitions : $this->getDefinitions(), $label_key); + $definitions = $this->getSortedDefinitions($definitions ?? $this->getDefinitions(), $label_key); $grouped_definitions = []; foreach ($definitions as $id => $definition) { $grouped_definitions[(string) $definition->getCategory()][$id] = $definition; diff --git a/core/lib/Drupal/Core/Menu/LocalActionDefault.php b/core/lib/Drupal/Core/Menu/LocalActionDefault.php index 5e161ec1de31..f3c0962306ae 100644 --- a/core/lib/Drupal/Core/Menu/LocalActionDefault.php +++ b/core/lib/Drupal/Core/Menu/LocalActionDefault.php @@ -83,7 +83,7 @@ public function getWeight() { * {@inheritdoc} */ public function getRouteParameters(RouteMatchInterface $route_match) { - $route_parameters = isset($this->pluginDefinition['route_parameters']) ? $this->pluginDefinition['route_parameters'] : []; + $route_parameters = $this->pluginDefinition['route_parameters'] ?? []; $route = $this->routeProvider->getRouteByName($this->getRouteName()); $variables = $route->compile()->getVariables(); diff --git a/core/lib/Drupal/Core/Menu/LocalTaskDefault.php b/core/lib/Drupal/Core/Menu/LocalTaskDefault.php index 49a7a2cc6862..edc09131db2e 100644 --- a/core/lib/Drupal/Core/Menu/LocalTaskDefault.php +++ b/core/lib/Drupal/Core/Menu/LocalTaskDefault.php @@ -41,7 +41,7 @@ public function getRouteName() { * {@inheritdoc} */ public function getRouteParameters(RouteMatchInterface $route_match) { - $route_parameters = isset($this->pluginDefinition['route_parameters']) ? $this->pluginDefinition['route_parameters'] : []; + $route_parameters = $this->pluginDefinition['route_parameters'] ?? []; $route = $this->routeProvider()->getRouteByName($this->getRouteName()); $variables = $route->compile()->getVariables(); diff --git a/core/lib/Drupal/Core/Menu/MenuLinkBase.php b/core/lib/Drupal/Core/Menu/MenuLinkBase.php index c61b5db0aa0b..22d5bbaf02c7 100644 --- a/core/lib/Drupal/Core/Menu/MenuLinkBase.php +++ b/core/lib/Drupal/Core/Menu/MenuLinkBase.php @@ -106,14 +106,14 @@ public function getMetaData() { * {@inheritdoc} */ public function getRouteName() { - return isset($this->pluginDefinition['route_name']) ? $this->pluginDefinition['route_name'] : ''; + return $this->pluginDefinition['route_name'] ?? ''; } /** * {@inheritdoc} */ public function getRouteParameters() { - return isset($this->pluginDefinition['route_parameters']) ? $this->pluginDefinition['route_parameters'] : []; + return $this->pluginDefinition['route_parameters'] ?? []; } /** diff --git a/core/lib/Drupal/Core/Menu/MenuTreeStorage.php b/core/lib/Drupal/Core/Menu/MenuTreeStorage.php index 62a7fc7007d4..b343a2f36fed 100644 --- a/core/lib/Drupal/Core/Menu/MenuTreeStorage.php +++ b/core/lib/Drupal/Core/Menu/MenuTreeStorage.php @@ -729,7 +729,7 @@ public function load($id) { return $this->definitions[$id]; } $loaded = $this->loadMultiple([$id]); - return isset($loaded[$id]) ? $loaded[$id] : FALSE; + return $loaded[$id] ?? FALSE; } /** @@ -743,7 +743,7 @@ public function load($id) { */ protected function loadFull($id) { $loaded = $this->loadFullMultiple([$id]); - return isset($loaded[$id]) ? $loaded[$id] : []; + return $loaded[$id] ?? []; } /** diff --git a/core/lib/Drupal/Core/Pager/PagerManager.php b/core/lib/Drupal/Core/Pager/PagerManager.php index 6a9cb7c9b82a..1fad49ce79c3 100644 --- a/core/lib/Drupal/Core/Pager/PagerManager.php +++ b/core/lib/Drupal/Core/Pager/PagerManager.php @@ -63,7 +63,7 @@ public function createPager($total, $limit, $element = 0) { * {@inheritdoc} */ public function getPager($element = 0) { - return isset($this->pagers[$element]) ? $this->pagers[$element] : NULL; + return $this->pagers[$element] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/PhpStorage/PhpStorageFactory.php b/core/lib/Drupal/Core/PhpStorage/PhpStorageFactory.php index 87e78d868ce5..85ca11bb63f9 100644 --- a/core/lib/Drupal/Core/PhpStorage/PhpStorageFactory.php +++ b/core/lib/Drupal/Core/PhpStorage/PhpStorageFactory.php @@ -38,7 +38,7 @@ public static function get($name) { $configuration = $overrides['default']; } // Make sure all the necessary configuration values are set. - $class = isset($configuration['class']) ? $configuration['class'] : 'Drupal\Component\PhpStorage\MTimeProtectedFileStorage'; + $class = $configuration['class'] ?? 'Drupal\Component\PhpStorage\MTimeProtectedFileStorage'; if (!isset($configuration['secret'])) { $configuration['secret'] = Settings::getHashSalt(); } diff --git a/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php b/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php index 52d153c3edc1..7f8ae617a400 100644 --- a/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php +++ b/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php @@ -89,7 +89,7 @@ public function getCategories() { public function getSortedDefinitions(array $definitions = NULL, $label_key = 'label') { // Sort the plugins first by category, then by label. /** @var \Drupal\Core\Plugin\CategorizingPluginManagerTrait|\Drupal\Component\Plugin\PluginManagerInterface $this */ - $definitions = isset($definitions) ? $definitions : $this->getDefinitions(); + $definitions = $definitions ?? $this->getDefinitions(); uasort($definitions, function ($a, $b) use ($label_key) { if ($a['category'] != $b['category']) { return strnatcasecmp($a['category'], $b['category']); @@ -104,7 +104,7 @@ public function getSortedDefinitions(array $definitions = NULL, $label_key = 'la */ public function getGroupedDefinitions(array $definitions = NULL, $label_key = 'label') { /** @var \Drupal\Core\Plugin\CategorizingPluginManagerTrait|\Drupal\Component\Plugin\PluginManagerInterface $this */ - $definitions = $this->getSortedDefinitions(isset($definitions) ? $definitions : $this->getDefinitions(), $label_key); + $definitions = $this->getSortedDefinitions($definitions ?? $this->getDefinitions(), $label_key); $grouped_definitions = []; foreach ($definitions as $id => $definition) { $grouped_definitions[(string) $definition['category']][$id] = $definition; diff --git a/core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php b/core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php index 05887d3da1f0..895650c89ca1 100644 --- a/core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php +++ b/core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php @@ -218,7 +218,7 @@ public function getConstraints() { */ public function getConstraint($constraint_name) { $constraints = $this->getConstraints(); - return isset($constraints[$constraint_name]) ? $constraints[$constraint_name] : NULL; + return $constraints[$constraint_name] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/Plugin/Context/ContextHandler.php b/core/lib/Drupal/Core/Plugin/Context/ContextHandler.php index d07556bc1815..248cf7adbf25 100644 --- a/core/lib/Drupal/Core/Plugin/Context/ContextHandler.php +++ b/core/lib/Drupal/Core/Plugin/Context/ContextHandler.php @@ -89,7 +89,7 @@ public function applyContextMapping(ContextAwarePluginInterface $plugin, $contex foreach ($plugin->getContextDefinitions() as $plugin_context_id => $plugin_context_definition) { // If this context was given a specific name, use that. - $context_id = isset($mappings[$plugin_context_id]) ? $mappings[$plugin_context_id] : $plugin_context_id; + $context_id = $mappings[$plugin_context_id] ?? $plugin_context_id; if (!empty($contexts[$context_id])) { // This assignment has been used, remove it. unset($mappings[$plugin_context_id]); diff --git a/core/lib/Drupal/Core/Plugin/ContextAwarePluginTrait.php b/core/lib/Drupal/Core/Plugin/ContextAwarePluginTrait.php index a6060b710f23..444f8654d7de 100644 --- a/core/lib/Drupal/Core/Plugin/ContextAwarePluginTrait.php +++ b/core/lib/Drupal/Core/Plugin/ContextAwarePluginTrait.php @@ -129,7 +129,7 @@ public function setContextValue($name, $value) { */ public function getContextMapping() { $configuration = $this instanceof ConfigurableInterface ? $this->getConfiguration() : $this->configuration; - return isset($configuration['context_mapping']) ? $configuration['context_mapping'] : []; + return $configuration['context_mapping'] ?? []; } /** diff --git a/core/lib/Drupal/Core/Plugin/DefaultLazyPluginCollection.php b/core/lib/Drupal/Core/Plugin/DefaultLazyPluginCollection.php index 071a5648b01a..c3fa2ee5bb2c 100644 --- a/core/lib/Drupal/Core/Plugin/DefaultLazyPluginCollection.php +++ b/core/lib/Drupal/Core/Plugin/DefaultLazyPluginCollection.php @@ -74,7 +74,7 @@ public function __construct(PluginManagerInterface $manager, array $configuratio * {@inheritdoc} */ protected function initializePlugin($instance_id) { - $configuration = isset($this->configurations[$instance_id]) ? $this->configurations[$instance_id] : []; + $configuration = $this->configurations[$instance_id] ?? []; if (!isset($configuration[$this->pluginKey])) { throw new PluginNotFoundException($instance_id); } diff --git a/core/lib/Drupal/Core/Render/Element/Checkbox.php b/core/lib/Drupal/Core/Render/Element/Checkbox.php index c1e657b1675d..f2e1501253cb 100644 --- a/core/lib/Drupal/Core/Render/Element/Checkbox.php +++ b/core/lib/Drupal/Core/Render/Element/Checkbox.php @@ -57,7 +57,7 @@ public static function valueCallback(&$element, $input, FormStateInterface $form // NULL to 0, because FormBuilder::handleInputElement() would otherwise // replace NULL with empty string, but an empty string is a potentially // valid value for a checked checkbox. - return isset($element['#default_value']) ? $element['#default_value'] : 0; + return $element['#default_value'] ?? 0; } else { // Checked checkboxes are submitted with a value (possibly '0' or ''): diff --git a/core/lib/Drupal/Core/Render/Element/Checkboxes.php b/core/lib/Drupal/Core/Render/Element/Checkboxes.php index 0d25f75c6951..cdf055487325 100644 --- a/core/lib/Drupal/Core/Render/Element/Checkboxes.php +++ b/core/lib/Drupal/Core/Render/Element/Checkboxes.php @@ -80,7 +80,7 @@ public static function processCheckboxes(&$element, FormStateInterface $form_sta '#return_value' => $key, '#default_value' => isset($value[$key]) ? $key : NULL, '#attributes' => $element['#attributes'], - '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL, + '#ajax' => $element['#ajax'] ?? NULL, // Errors should only be shown on the parent checkboxes element. '#error_no_message' => TRUE, '#weight' => $weight, diff --git a/core/lib/Drupal/Core/Render/Element/FormElement.php b/core/lib/Drupal/Core/Render/Element/FormElement.php index 62fe3c1112cf..f911d72e8594 100644 --- a/core/lib/Drupal/Core/Render/Element/FormElement.php +++ b/core/lib/Drupal/Core/Render/Element/FormElement.php @@ -184,7 +184,7 @@ public static function processAutocomplete(&$element, FormStateInterface $form_s $access = FALSE; if (!empty($element['#autocomplete_route_name'])) { - $parameters = isset($element['#autocomplete_route_parameters']) ? $element['#autocomplete_route_parameters'] : []; + $parameters = $element['#autocomplete_route_parameters'] ?? []; $url = Url::fromRoute($element['#autocomplete_route_name'], $parameters)->toString(TRUE); /** @var \Drupal\Core\Access\AccessManagerInterface $access_manager */ $access_manager = \Drupal::service('access_manager'); diff --git a/core/lib/Drupal/Core/Render/Element/HtmlTag.php b/core/lib/Drupal/Core/Render/Element/HtmlTag.php index 78c477e65f87..eedc008382e4 100644 --- a/core/lib/Drupal/Core/Render/Element/HtmlTag.php +++ b/core/lib/Drupal/Core/Render/Element/HtmlTag.php @@ -146,7 +146,7 @@ public static function preRenderHtmlTag($element) { * added to '#prefix' and '#suffix'. */ public static function preRenderConditionalComments($element) { - $browsers = isset($element['#browsers']) ? $element['#browsers'] : []; + $browsers = $element['#browsers'] ?? []; $browsers += [ 'IE' => TRUE, '!IE' => TRUE, @@ -181,11 +181,11 @@ public static function preRenderConditionalComments($element) { // Ensure what we are dealing with is safe. This would be done later anyway // in \Drupal::service('renderer')->render(). - $prefix = isset($element['#prefix']) ? $element['#prefix'] : ''; + $prefix = $element['#prefix'] ?? ''; if ($prefix && !($prefix instanceof MarkupInterface)) { $prefix = Xss::filterAdmin($prefix); } - $suffix = isset($element['#suffix']) ? $element['#suffix'] : ''; + $suffix = $element['#suffix'] ?? ''; if ($suffix && !($suffix instanceof MarkupInterface)) { $suffix = Xss::filterAdmin($suffix); } diff --git a/core/lib/Drupal/Core/Render/Element/Number.php b/core/lib/Drupal/Core/Render/Element/Number.php index 36abb32b1844..8f7efca552d8 100644 --- a/core/lib/Drupal/Core/Render/Element/Number.php +++ b/core/lib/Drupal/Core/Render/Element/Number.php @@ -86,7 +86,7 @@ public static function validateNumber(&$element, FormStateInterface $form_state, if (isset($element['#step']) && strtolower($element['#step']) != 'any') { // Check that the input is an allowed multiple of #step (offset by #min if // #min is set). - $offset = isset($element['#min']) ? $element['#min'] : 0.0; + $offset = $element['#min'] ?? 0.0; if (!NumberUtility::validStep($value, $element['#step'], $offset)) { $form_state->setError($element, t('%name is not a valid number.', ['%name' => $name])); diff --git a/core/lib/Drupal/Core/Render/Element/Radios.php b/core/lib/Drupal/Core/Render/Element/Radios.php index a64312ff630c..38a043e5f917 100644 --- a/core/lib/Drupal/Core/Render/Element/Radios.php +++ b/core/lib/Drupal/Core/Render/Element/Radios.php @@ -73,11 +73,11 @@ public static function processRadios(&$element, FormStateInterface $form_state, '#return_value' => $key, // Use default or FALSE. A value of FALSE means that the radio button is // not 'checked'. - '#default_value' => isset($element['#default_value']) ? $element['#default_value'] : FALSE, + '#default_value' => $element['#default_value'] ?? FALSE, '#attributes' => $element['#attributes'], '#parents' => $element['#parents'], '#id' => HtmlUtility::getUniqueId('edit-' . implode('-', $parents_for_id)), - '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL, + '#ajax' => $element['#ajax'] ?? NULL, // Errors should only be shown on the parent radios element. '#error_no_message' => TRUE, '#weight' => $weight, @@ -108,7 +108,7 @@ public static function valueCallback(&$element, $input, FormStateInterface $form // FormBuilder::handleInputElement() converting the NULL to an empty // string, so that code can distinguish between nothing selected and the // selection of a radio button whose value is an empty string. - $value = isset($element['#default_value']) ? $element['#default_value'] : NULL; + $value = $element['#default_value'] ?? NULL; if (!isset($value)) { $element['#has_garbage_value'] = TRUE; } diff --git a/core/lib/Drupal/Core/Render/Element/Tableselect.php b/core/lib/Drupal/Core/Render/Element/Tableselect.php index a8a7a36d91cb..908e66044a74 100644 --- a/core/lib/Drupal/Core/Render/Element/Tableselect.php +++ b/core/lib/Drupal/Core/Render/Element/Tableselect.php @@ -254,7 +254,7 @@ public static function processTableselect(&$element, FormStateInterface $form_st '#return_value' => $key, '#default_value' => isset($value[$key]) ? $key : NULL, '#attributes' => $element['#attributes'], - '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL, + '#ajax' => $element['#ajax'] ?? NULL, ]; } else { @@ -269,7 +269,7 @@ public static function processTableselect(&$element, FormStateInterface $form_st '#attributes' => $element['#attributes'], '#parents' => $element['#parents'], '#id' => HtmlUtility::getUniqueId('edit-' . implode('-', $parents_for_id)), - '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL, + '#ajax' => $element['#ajax'] ?? NULL, ]; } if (isset($element['#options'][$key]['#weight'])) { diff --git a/core/lib/Drupal/Core/Render/ElementInfoManager.php b/core/lib/Drupal/Core/Render/ElementInfoManager.php index 1de1f4c61c38..ed927652634d 100644 --- a/core/lib/Drupal/Core/Render/ElementInfoManager.php +++ b/core/lib/Drupal/Core/Render/ElementInfoManager.php @@ -76,7 +76,7 @@ public function getInfo($type) { if (!isset($this->elementInfo[$theme_name])) { $this->elementInfo[$theme_name] = $this->buildInfo($theme_name); } - $info = isset($this->elementInfo[$theme_name][$type]) ? $this->elementInfo[$theme_name][$type] : []; + $info = $this->elementInfo[$theme_name][$type] ?? []; $info['#defaults_loaded'] = TRUE; return $info; } @@ -87,7 +87,7 @@ public function getInfo($type) { public function getInfoProperty($type, $property_name, $default = NULL) { $info = $this->getInfo($type); - return isset($info[$property_name]) ? $info[$property_name] : $default; + return $info[$property_name] ?? $default; } /** diff --git a/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php b/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php index 2dc416f4bd7b..950eb68ae685 100644 --- a/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php +++ b/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php @@ -429,7 +429,7 @@ protected function processHtmlHeadLink(array $html_head_link) { foreach ($html_head_link as $item) { $attributes = $item[0]; - $should_add_header = isset($item[1]) ? $item[1] : FALSE; + $should_add_header = $item[1] ?? FALSE; $element = [ '#tag' => 'link', diff --git a/core/lib/Drupal/Core/Render/MainContent/DialogRenderer.php b/core/lib/Drupal/Core/Render/MainContent/DialogRenderer.php index c445d8507c6b..e9dd1ed17539 100644 --- a/core/lib/Drupal/Core/Render/MainContent/DialogRenderer.php +++ b/core/lib/Drupal/Core/Render/MainContent/DialogRenderer.php @@ -58,7 +58,7 @@ public function renderResponse(array $main_content, Request $request, RouteMatch // Determine the title: use the title provided by the main content if any, // otherwise get it from the routing information. - $title = isset($main_content['#title']) ? $main_content['#title'] : $this->titleResolver->getTitle($request, $route_match->getRouteObject()); + $title = $main_content['#title'] ?? $this->titleResolver->getTitle($request, $route_match->getRouteObject()); // Determine the dialog options and the target for the OpenDialogCommand. $options = $request->request->get('dialogOptions', []); diff --git a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php index 46992d8f68c2..fe1890f57ddd 100644 --- a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php +++ b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php @@ -205,7 +205,7 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte // Determine the title: use the title provided by the main content if any, // otherwise get it from the routing information. $get_title = function (array $main_content) use ($request, $route_match) { - return isset($main_content['#title']) ? $main_content['#title'] : $this->titleResolver->getTitle($request, $route_match->getRouteObject()); + return $main_content['#title'] ?? $this->titleResolver->getTitle($request, $route_match->getRouteObject()); }; // If the _controller result already is #type => page, @@ -241,7 +241,7 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte return $this->renderer->render($main_content, FALSE); }); $main_content = $this->renderCache->getCacheableRenderArray($main_content) + [ - '#title' => isset($main_content['#title']) ? $main_content['#title'] : NULL, + '#title' => $main_content['#title'] ?? NULL, ]; } diff --git a/core/lib/Drupal/Core/Render/MainContent/ModalRenderer.php b/core/lib/Drupal/Core/Render/MainContent/ModalRenderer.php index d250d57329b0..d903acf88d15 100644 --- a/core/lib/Drupal/Core/Render/MainContent/ModalRenderer.php +++ b/core/lib/Drupal/Core/Render/MainContent/ModalRenderer.php @@ -27,7 +27,7 @@ public function renderResponse(array $main_content, Request $request, RouteMatch $response->setAttachments($main_content['#attached']); // If the main content doesn't provide a title, use the title resolver. - $title = isset($main_content['#title']) ? $main_content['#title'] : $this->titleResolver->getTitle($request, $route_match->getRouteObject()); + $title = $main_content['#title'] ?? $this->titleResolver->getTitle($request, $route_match->getRouteObject()); // Determine the title: use the title provided by the main content if any, // otherwise get it from the routing information. diff --git a/core/lib/Drupal/Core/Render/MainContent/OffCanvasRenderer.php b/core/lib/Drupal/Core/Render/MainContent/OffCanvasRenderer.php index 086e84f929de..6c598ccb0a91 100644 --- a/core/lib/Drupal/Core/Render/MainContent/OffCanvasRenderer.php +++ b/core/lib/Drupal/Core/Render/MainContent/OffCanvasRenderer.php @@ -60,7 +60,7 @@ public function renderResponse(array $main_content, Request $request, RouteMatch $response->setAttachments($main_content['#attached']); // If the main content doesn't provide a title, use the title resolver. - $title = isset($main_content['#title']) ? $main_content['#title'] : $this->titleResolver->getTitle($request, $route_match->getRouteObject()); + $title = $main_content['#title'] ?? $this->titleResolver->getTitle($request, $route_match->getRouteObject()); // Determine the title: use the title provided by the main content if any, // otherwise get it from the routing information. diff --git a/core/lib/Drupal/Core/Render/RenderCache.php b/core/lib/Drupal/Core/Render/RenderCache.php index 385d317f4ae9..674c00e28f2a 100644 --- a/core/lib/Drupal/Core/Render/RenderCache.php +++ b/core/lib/Drupal/Core/Render/RenderCache.php @@ -66,7 +66,7 @@ public function get(array $elements) { if (!$this->requestStack->getCurrentRequest()->isMethodCacheable() || !$cid = $this->createCacheID($elements)) { return FALSE; } - $bin = isset($elements['#cache']['bin']) ? $elements['#cache']['bin'] : 'render'; + $bin = $elements['#cache']['bin'] ?? 'render'; if (!empty($cid) && ($cache_bin = $this->cacheFactory->get($bin)) && $cache = $cache_bin->get($cid)) { $cached_element = $cache->data; @@ -96,7 +96,7 @@ public function set(array &$elements, array $pre_bubbling_elements) { $data = $this->getCacheableRenderArray($elements); - $bin = isset($elements['#cache']['bin']) ? $elements['#cache']['bin'] : 'render'; + $bin = $elements['#cache']['bin'] ?? 'render'; $cache = $this->cacheFactory->get($bin); // Calculate the pre-bubbling CID. diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php index 9deb15d9f419..f95116e5f77e 100644 --- a/core/lib/Drupal/Core/Render/Renderer.php +++ b/core/lib/Drupal/Core/Render/Renderer.php @@ -370,9 +370,9 @@ protected function doRender(&$elements, $is_root_call = FALSE) { } // Defaults for bubbleable rendering metadata. - $elements['#cache']['tags'] = isset($elements['#cache']['tags']) ? $elements['#cache']['tags'] : []; - $elements['#cache']['max-age'] = isset($elements['#cache']['max-age']) ? $elements['#cache']['max-age'] : Cache::PERMANENT; - $elements['#attached'] = isset($elements['#attached']) ? $elements['#attached'] : []; + $elements['#cache']['tags'] = $elements['#cache']['tags'] ?? []; + $elements['#cache']['max-age'] = $elements['#cache']['max-age'] ?? Cache::PERMANENT; + $elements['#attached'] = $elements['#attached'] ?? []; // Allow #pre_render to abort rendering. if (!empty($elements['#printed'])) { @@ -581,7 +581,7 @@ public function executeInRenderContext(RenderContext $context, callable $callabl */ protected function getCurrentRenderContext() { $request = $this->requestStack->getCurrentRequest(); - return isset(static::$contextCollection[$request]) ? static::$contextCollection[$request] : NULL; + return static::$contextCollection[$request] ?? NULL; } /** @@ -731,7 +731,7 @@ protected function ensureMarkupIsSafe(array $elements) { } elseif (!($elements['#markup'] instanceof MarkupInterface)) { // The default behavior is to XSS filter using the admin tag list. - $tags = isset($elements['#allowed_tags']) ? $elements['#allowed_tags'] : Xss::getAdminTagList(); + $tags = $elements['#allowed_tags'] ?? Xss::getAdminTagList(); $elements['#markup'] = Markup::create(Xss::filter($elements['#markup'], $tags)); } diff --git a/core/lib/Drupal/Core/Site/Settings.php b/core/lib/Drupal/Core/Site/Settings.php index dac9714d1f92..31b2b8f0afa5 100644 --- a/core/lib/Drupal/Core/Site/Settings.php +++ b/core/lib/Drupal/Core/Site/Settings.php @@ -119,7 +119,7 @@ public static function get($name, $default = NULL) { if (isset(self::$deprecatedSettings[$name])) { @trigger_error(self::$deprecatedSettings[$name]['message'], E_USER_DEPRECATED); } - return isset(self::$instance->storage[$name]) ? self::$instance->storage[$name] : $default; + return self::$instance->storage[$name] ?? $default; } /** diff --git a/core/lib/Drupal/Core/State/State.php b/core/lib/Drupal/Core/State/State.php index f35c954596fc..a71e5b2752fa 100644 --- a/core/lib/Drupal/Core/State/State.php +++ b/core/lib/Drupal/Core/State/State.php @@ -38,7 +38,7 @@ public function __construct(KeyValueFactoryInterface $key_value_factory) { */ public function get($key, $default = NULL) { $values = $this->getMultiple([$key]); - return isset($values[$key]) ? $values[$key] : $default; + return $values[$key] ?? $default; } /** diff --git a/core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php b/core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php index 517bfb208356..8f24cf3cb09c 100644 --- a/core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php +++ b/core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php @@ -156,7 +156,7 @@ public function getUntranslatedString() { * The value of this option or empty string of option is not set. */ public function getOption($name) { - return isset($this->options[$name]) ? $this->options[$name] : ''; + return $this->options[$name] ?? ''; } /** diff --git a/core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php b/core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php index 03631793c29e..e1a234c92973 100644 --- a/core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php +++ b/core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php @@ -543,8 +543,8 @@ protected function installParameters() { 'name' => $this->rootUser->name, 'mail' => $this->rootUser->getEmail(), 'pass' => [ - 'pass1' => isset($this->rootUser->pass_raw) ? $this->rootUser->pass_raw : $this->rootUser->passRaw, - 'pass2' => isset($this->rootUser->pass_raw) ? $this->rootUser->pass_raw : $this->rootUser->passRaw, + 'pass1' => $this->rootUser->pass_raw ?? $this->rootUser->passRaw, + 'pass2' => $this->rootUser->pass_raw ?? $this->rootUser->passRaw, ], ], // form_type_checkboxes_value() requires NULL instead of FALSE values @@ -585,7 +585,7 @@ protected function setupBaseUrl() { $parsed_url = parse_url($base_url); $host = $parsed_url['host'] . (isset($parsed_url['port']) ? ':' . $parsed_url['port'] : ''); $path = isset($parsed_url['path']) ? rtrim(rtrim($parsed_url['path']), '/') : ''; - $port = isset($parsed_url['port']) ? $parsed_url['port'] : 80; + $port = $parsed_url['port'] ?? 80; $valid_url_schemes = ['http', 'https']; if (!in_array(strtolower($parsed_url['scheme']), $valid_url_schemes, TRUE)) { diff --git a/core/lib/Drupal/Core/Test/TestSetupTrait.php b/core/lib/Drupal/Core/Test/TestSetupTrait.php index de780437b889..24795a466ea0 100644 --- a/core/lib/Drupal/Core/Test/TestSetupTrait.php +++ b/core/lib/Drupal/Core/Test/TestSetupTrait.php @@ -153,7 +153,7 @@ protected function changeDatabasePrefix() { // Ensure no existing database gets in the way. If a default database // exists already it must be removed. Database::removeConnection('default'); - $database = Database::convertDbUrlToConnectionInfo($db_url, isset($this->root) ? $this->root : DRUPAL_ROOT); + $database = Database::convertDbUrlToConnectionInfo($db_url, $this->root ?? DRUPAL_ROOT); Database::addConnectionInfo('default', 'default', $database); } diff --git a/core/lib/Drupal/Core/Theme/Registry.php b/core/lib/Drupal/Core/Theme/Registry.php index 08f1b7cea338..2a4e8d95f131 100644 --- a/core/lib/Drupal/Core/Theme/Registry.php +++ b/core/lib/Drupal/Core/Theme/Registry.php @@ -500,7 +500,7 @@ protected function processExtension(array &$cache, $name, $type, $theme, $path) // system.module to declare theme functions on behalf of core .include // files. if (isset($info['file'])) { - $include_file = isset($info['path']) ? $info['path'] : $path; + $include_file = $info['path'] ?? $path; $include_file .= '/' . $info['file']; include_once $this->root . '/' . $include_file; $result[$hook]['includes'][] = $include_file; diff --git a/core/lib/Drupal/Core/Theme/ThemeInitialization.php b/core/lib/Drupal/Core/Theme/ThemeInitialization.php index c81be077f54c..d9c3830143a2 100644 --- a/core/lib/Drupal/Core/Theme/ThemeInitialization.php +++ b/core/lib/Drupal/Core/Theme/ThemeInitialization.php @@ -261,8 +261,8 @@ public function getActiveTheme(Extension $theme, array $base_themes = []) { } } - $values['engine'] = isset($theme->engine) ? $theme->engine : NULL; - $values['owner'] = isset($theme->owner) ? $theme->owner : NULL; + $values['engine'] = $theme->engine ?? NULL; + $values['owner'] = $theme->owner ?? NULL; $values['extension'] = $theme; $base_active_themes = []; diff --git a/core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php b/core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php index 18f05b9ea007..09a2dc267959 100644 --- a/core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php +++ b/core/lib/Drupal/Core/TypedData/ComputedItemListTrait.php @@ -80,7 +80,7 @@ public function get($index) { // @see \Drupal\Core\TypedData\Plugin\DataType\ItemList::get(). $this->ensureComputedValue(); - return isset($this->list[$index]) ? $this->list[$index] : NULL; + return $this->list[$index] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/TypedData/DataDefinition.php b/core/lib/Drupal/Core/TypedData/DataDefinition.php index 44a8301ef062..8ac57a164100 100644 --- a/core/lib/Drupal/Core/TypedData/DataDefinition.php +++ b/core/lib/Drupal/Core/TypedData/DataDefinition.php @@ -72,7 +72,7 @@ public function setDataType($type) { * {@inheritdoc} */ public function getLabel() { - return isset($this->definition['label']) ? $this->definition['label'] : NULL; + return $this->definition['label'] ?? NULL; } /** @@ -93,7 +93,7 @@ public function setLabel($label) { * {@inheritdoc} */ public function getDescription() { - return isset($this->definition['description']) ? $this->definition['description'] : NULL; + return $this->definition['description'] ?? NULL; } /** @@ -215,7 +215,7 @@ public function setClass($class) { * {@inheritdoc} */ public function getSettings() { - return isset($this->definition['settings']) ? $this->definition['settings'] : []; + return $this->definition['settings'] ?? []; } /** @@ -236,7 +236,7 @@ public function setSettings(array $settings) { * {@inheritdoc} */ public function getSetting($setting_name) { - return isset($this->definition['settings'][$setting_name]) ? $this->definition['settings'][$setting_name] : NULL; + return $this->definition['settings'][$setting_name] ?? NULL; } /** @@ -259,7 +259,7 @@ public function setSetting($setting_name, $value) { * {@inheritdoc} */ public function getConstraints() { - $constraints = isset($this->definition['constraints']) ? $this->definition['constraints'] : []; + $constraints = $this->definition['constraints'] ?? []; $constraints += $this->getTypedDataManager()->getDefaultConstraints($this); return $constraints; } @@ -269,7 +269,7 @@ public function getConstraints() { */ public function getConstraint($constraint_name) { $constraints = $this->getConstraints(); - return isset($constraints[$constraint_name]) ? $constraints[$constraint_name] : NULL; + return $constraints[$constraint_name] ?? NULL; } /** diff --git a/core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php b/core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php index 71fa357778d0..18d68267a456 100644 --- a/core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php +++ b/core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php @@ -100,7 +100,7 @@ public function get($index) { if (!is_numeric($index)) { throw new \InvalidArgumentException('Unable to get a value with a non-numeric delta in a list.'); } - return isset($this->list[$index]) ? $this->list[$index] : NULL; + return $this->list[$index] ?? NULL; } /** @@ -120,7 +120,7 @@ public function set($index, $value) { $value = $value->getValue(); } // If needed, create the item at the next position. - $item = isset($this->list[$index]) ? $this->list[$index] : $this->appendItem(); + $item = $this->list[$index] ?? $this->appendItem(); $item->setValue($value); return $this; } diff --git a/core/lib/Drupal/Core/TypedData/Plugin/DataType/Map.php b/core/lib/Drupal/Core/TypedData/Plugin/DataType/Map.php index 72768aa39bdf..800bcb37a532 100644 --- a/core/lib/Drupal/Core/TypedData/Plugin/DataType/Map.php +++ b/core/lib/Drupal/Core/TypedData/Plugin/DataType/Map.php @@ -83,7 +83,7 @@ public function setValue($values, $notify = TRUE) { // Update any existing property objects. foreach ($this->properties as $name => $property) { - $value = isset($values[$name]) ? $values[$name] : NULL; + $value = $values[$name] ?? NULL; $property->setValue($value, FALSE); // Remove the value from $this->values to ensure it does not contain any // value for computed properties. diff --git a/core/lib/Drupal/Core/Validation/DrupalTranslator.php b/core/lib/Drupal/Core/Validation/DrupalTranslator.php index 3003c1737c5b..6ac4169877e4 100644 --- a/core/lib/Drupal/Core/Validation/DrupalTranslator.php +++ b/core/lib/Drupal/Core/Validation/DrupalTranslator.php @@ -115,7 +115,7 @@ protected function getOptions($domain = NULL, $locale = NULL) { // We do not support domains, so we ignore this parameter. // If locale is left NULL, TranslatableMarkup will default to the interface // language. - $locale = isset($locale) ? $locale : $this->locale; + $locale = $locale ?? $this->locale; return ['langcode' => $locale]; } diff --git a/core/modules/big_pipe/src/Render/BigPipe.php b/core/modules/big_pipe/src/Render/BigPipe.php index 40174b349b24..53e4424984c0 100644 --- a/core/modules/big_pipe/src/Render/BigPipe.php +++ b/core/modules/big_pipe/src/Render/BigPipe.php @@ -282,8 +282,8 @@ public function sendContent(BigPipeResponse $response) { $attachments = $response->getAttachments(); // First, gather the BigPipe placeholders that must be replaced. - $placeholders = isset($attachments['big_pipe_placeholders']) ? $attachments['big_pipe_placeholders'] : []; - $nojs_placeholders = isset($attachments['big_pipe_nojs_placeholders']) ? $attachments['big_pipe_nojs_placeholders'] : []; + $placeholders = $attachments['big_pipe_placeholders'] ?? []; + $nojs_placeholders = $attachments['big_pipe_nojs_placeholders'] ?? []; // BigPipe sends responses using "Transfer-Encoding: chunked". To avoid // sending already-sent assets, it is necessary to track cumulative assets diff --git a/core/modules/block/src/BlockForm.php b/core/modules/block/src/BlockForm.php index 22c35644e669..297149dda8aa 100644 --- a/core/modules/block/src/BlockForm.php +++ b/core/modules/block/src/BlockForm.php @@ -248,7 +248,7 @@ protected function buildVisibilityInterface(array $form, FormStateInterface $for } /** @var \Drupal\Core\Condition\ConditionInterface $condition */ - $condition = $this->manager->createInstance($condition_id, isset($visibility[$condition_id]) ? $visibility[$condition_id] : []); + $condition = $this->manager->createInstance($condition_id, $visibility[$condition_id] ?? []); $form_state->set(['conditions', $condition_id], $condition); $condition_form = $condition->buildConfigurationForm([], $form_state); $condition_form['#type'] = 'details'; diff --git a/core/modules/book/src/BookManager.php b/core/modules/book/src/BookManager.php index 12d023cd3912..58a44e66373b 100644 --- a/core/modules/book/src/BookManager.php +++ b/core/modules/book/src/BookManager.php @@ -540,7 +540,7 @@ public function deleteFromBook($nid) { */ public function bookTreeAllData($bid, $link = NULL, $max_depth = NULL) { // Use $nid as flag for whether the data being loaded is for the whole tree. - $nid = isset($link['nid']) ? $link['nid'] : 0; + $nid = $link['nid'] ?? 0; $langcode = $this->languageManager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId(); // Create a cache ID for the given $nid, $link, $langcode and $max_depth. @@ -747,7 +747,7 @@ protected function doBookTreeBuild($bid, array $parameters = []) { return $cache->data; } - $min_depth = (isset($parameters['min_depth']) ? $parameters['min_depth'] : 1); + $min_depth = $parameters['min_depth'] ?? 1; $result = $this->bookOutlineStorage->getBookMenuTree($bid, $parameters, $min_depth, static::BOOK_MAX_DEPTH); // Build an ordered array of links using the query result object. @@ -756,7 +756,7 @@ protected function doBookTreeBuild($bid, array $parameters = []) { $link = (array) $link; $links[$link['nid']] = $link; } - $active_trail = (isset($parameters['active_trail']) ? $parameters['active_trail'] : []); + $active_trail = $parameters['active_trail'] ?? []; $data['tree'] = $this->buildBookOutlineData($links, $active_trail, $min_depth); $data['node_links'] = []; $this->bookTreeCollectNodeLinks($data['tree'], $data['node_links']); @@ -821,7 +821,7 @@ protected function flatBookTree(array $tree, array &$flat) { */ public function loadBookLink($nid, $translate = TRUE) { $links = $this->loadBookLinks([$nid], $translate); - return isset($links[$nid]) ? $links[$nid] : FALSE; + return $links[$nid] ?? FALSE; } /** diff --git a/core/modules/ckeditor/ckeditor.admin.inc b/core/modules/ckeditor/ckeditor.admin.inc index f9316c6a586d..b344edff9d4d 100644 --- a/core/modules/ckeditor/ckeditor.admin.inc +++ b/core/modules/ckeditor/ckeditor.admin.inc @@ -77,7 +77,7 @@ function template_preprocess_ckeditor_settings_toolbar(&$variables) { elseif (isset($button['image']) || isset($button['image' . $rtl])) { $value = [ '#theme' => 'image', - '#uri' => isset($button['image' . $rtl]) ? $button['image' . $rtl] : $button['image'], + '#uri' => $button['image' . $rtl] ?? $button['image'], '#title' => $button['label'], '#prefix' => '<a href="#" role="button" title="' . $button['label'] . '" aria-label="' . $button['label'] . '"><span class="cke_button_icon">', '#suffix' => '</span></a>', diff --git a/core/modules/comment/src/CommentManager.php b/core/modules/comment/src/CommentManager.php index 815a391b180f..565df434b851 100644 --- a/core/modules/comment/src/CommentManager.php +++ b/core/modules/comment/src/CommentManager.php @@ -112,7 +112,7 @@ public function getFields($entity_type_id) { } $map = $this->entityFieldManager->getFieldMapByFieldType('comment'); - return isset($map[$entity_type_id]) ? $map[$entity_type_id] : []; + return $map[$entity_type_id] ?? []; } /** diff --git a/core/modules/comment/src/Plugin/Field/FieldFormatter/CommentDefaultFormatter.php b/core/modules/comment/src/Plugin/Field/FieldFormatter/CommentDefaultFormatter.php index 35ce99b7ebe4..4e918ed5a8bc 100644 --- a/core/modules/comment/src/Plugin/Field/FieldFormatter/CommentDefaultFormatter.php +++ b/core/modules/comment/src/Plugin/Field/FieldFormatter/CommentDefaultFormatter.php @@ -251,7 +251,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) { public function settingsSummary() { $view_mode = $this->getSetting('view_mode'); $view_modes = $this->getViewModes(); - $view_mode_label = isset($view_modes[$view_mode]) ? $view_modes[$view_mode] : 'default'; + $view_mode_label = $view_modes[$view_mode] ?? 'default'; $summary = [$this->t('Comment view mode: @mode', ['@mode' => $view_mode_label])]; if ($pager_id = $this->getSetting('pager_id')) { $summary[] = $this->t('Pager ID: @id', ['@id' => $pager_id]); diff --git a/core/modules/config_translation/src/FormElement/ListElement.php b/core/modules/config_translation/src/FormElement/ListElement.php index 1ea452362b8b..612b0f1bc32f 100644 --- a/core/modules/config_translation/src/FormElement/ListElement.php +++ b/core/modules/config_translation/src/FormElement/ListElement.php @@ -85,7 +85,7 @@ public function setConfig(Config $base_config, LanguageConfigOverride $config_tr $element_key = isset($base_key) ? "$base_key.$key" : $key; if ($form_element = ConfigTranslationFormBase::createFormElement($element)) { // Traverse into the next level of the configuration. - $value = isset($config_values[$key]) ? $config_values[$key] : NULL; + $value = $config_values[$key] ?? NULL; $form_element->setConfig($base_config, $config_translation, $value, $element_key); } } diff --git a/core/modules/config_translation/src/FormElement/PluralVariants.php b/core/modules/config_translation/src/FormElement/PluralVariants.php index 42754e2c9b23..c659531b1331 100644 --- a/core/modules/config_translation/src/FormElement/PluralVariants.php +++ b/core/modules/config_translation/src/FormElement/PluralVariants.php @@ -35,7 +35,7 @@ protected function getSourceElement(LanguageInterface $source_language, $source_ '#title' => $i == 0 ? $this->t('Singular form') : $this->formatPlural($i, 'First plural form', '@count. plural form'), '#markup' => new FormattableMarkup('<span lang="@langcode">@value</span>', [ '@langcode' => $source_language->getId(), - '@value' => isset($values[$i]) ? $values[$i] : $this->t('(Empty)'), + '@value' => $values[$i] ?? $this->t('(Empty)'), ]), ]; } @@ -62,7 +62,7 @@ protected function getTranslationElement(LanguageInterface $translation_language '#type' => 'textfield', // @todo Should use better labels https://www.drupal.org/node/2499639 '#title' => $i == 0 ? $this->t('Singular form') : $this->formatPlural($i, 'First plural form', '@count. plural form'), - '#default_value' => isset($values[$i]) ? $values[$i] : '', + '#default_value' => $values[$i] ?? '', '#attributes' => ['lang' => $translation_language->getId()], ]; } diff --git a/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php b/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php index 1a66307611c0..728063ad5756 100644 --- a/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php +++ b/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php @@ -668,7 +668,7 @@ class TestConfigNamesMapper extends ConfigNamesMapper { * The language code of this mapper if it is set; NULL otherwise. */ public function getInternalLangcode() { - return isset($this->langcode) ? $this->langcode : NULL; + return $this->langcode ?? NULL; } /** diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module index 6a81f5401dee..da2541b1c1f2 100644 --- a/core/modules/contact/contact.module +++ b/core/modules/contact/contact.module @@ -191,7 +191,7 @@ function contact_form_user_form_alter(&$form, FormStateInterface $form_state) { $form['contact']['contact'] = [ '#type' => 'checkbox', '#title' => t('Personal contact form'), - '#default_value' => isset($account_data) ? $account_data : \Drupal::config('contact.settings')->get('user_default_enabled'), + '#default_value' => $account_data ?? \Drupal::config('contact.settings')->get('user_default_enabled'), '#description' => t('Allow other users to contact you via a personal contact form which keeps your email address hidden. Note that some privileged users such as site administrators are still able to contact you even if you choose to disable this feature.'), ]; $form['actions']['submit']['#submit'][] = 'contact_user_profile_form_submit'; diff --git a/core/modules/content_moderation/src/Form/ContentModerationConfigureForm.php b/core/modules/content_moderation/src/Form/ContentModerationConfigureForm.php index 12259d8dba27..301932f46c39 100644 --- a/core/modules/content_moderation/src/Form/ContentModerationConfigureForm.php +++ b/core/modules/content_moderation/src/Form/ContentModerationConfigureForm.php @@ -142,7 +142,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta '#required' => TRUE, '#options' => array_map([State::class, 'labelCallback'], $this->workflowType->getStates()), '#description' => $this->t('Select the state that new content will be assigned. This state will appear as the default in content forms and the available target states will be based on the transitions available from this state.'), - '#default_value' => isset($workflow_type_configuration['default_moderation_state']) ? $workflow_type_configuration['default_moderation_state'] : 'draft', + '#default_value' => $workflow_type_configuration['default_moderation_state'] ?? 'draft', ]; return $form; } diff --git a/core/modules/content_moderation/src/Plugin/WorkflowType/ContentModeration.php b/core/modules/content_moderation/src/Plugin/WorkflowType/ContentModeration.php index b585961d2dfd..d967f717e4a2 100644 --- a/core/modules/content_moderation/src/Plugin/WorkflowType/ContentModeration.php +++ b/core/modules/content_moderation/src/Plugin/WorkflowType/ContentModeration.php @@ -147,7 +147,7 @@ public function getEntityTypes() { * {@inheritdoc} */ public function getBundlesForEntityType($entity_type_id) { - return isset($this->configuration['entity_types'][$entity_type_id]) ? $this->configuration['entity_types'][$entity_type_id] : []; + return $this->configuration['entity_types'][$entity_type_id] ?? []; } /** diff --git a/core/modules/content_translation/src/FieldTranslationSynchronizer.php b/core/modules/content_translation/src/FieldTranslationSynchronizer.php index 4c4aaaf93bf2..336909d2a7e8 100644 --- a/core/modules/content_translation/src/FieldTranslationSynchronizer.php +++ b/core/modules/content_translation/src/FieldTranslationSynchronizer.php @@ -155,7 +155,7 @@ public function synchronizeFields(ContentEntityInterface $entity, $sync_langcode foreach ($groups as $group) { $info = $column_groups[$group]; // A missing 'columns' key indicates we have a single-column group. - $columns = array_merge($columns, isset($info['columns']) ? $info['columns'] : [$group]); + $columns = array_merge($columns, $info['columns'] ?? [$group]); } if (!empty($columns)) { $values = []; @@ -285,7 +285,7 @@ public function synchronizeItems(array &$values, array $unchanged_items, $sync_l // the new values are at least propagated to all the translations. // If the value has only been reordered we just move the old one in // the new position. - $item = isset($original_field_values[$langcode][$old_delta]) ? $original_field_values[$langcode][$old_delta] : $source_items[$new_delta]; + $item = $original_field_values[$langcode][$old_delta] ?? $source_items[$new_delta]; // When saving a default revision starting from a pending revision, // we may have desynchronized field values, so we make sure that // untranslatable properties are synchronized, even if in any other diff --git a/core/modules/content_translation/src/Plugin/migrate/source/d7/EntityTranslationSettings.php b/core/modules/content_translation/src/Plugin/migrate/source/d7/EntityTranslationSettings.php index 1723e09708b3..c5f3bb2aa06a 100644 --- a/core/modules/content_translation/src/Plugin/migrate/source/d7/EntityTranslationSettings.php +++ b/core/modules/content_translation/src/Plugin/migrate/source/d7/EntityTranslationSettings.php @@ -80,12 +80,12 @@ protected function initializeIterator() { // settings variable exists for that node type, otherwise use default // values. foreach ($node_types as $node_type) { - $settings = isset($results['entity_translation_settings_node__' . $node_type]) ? $results['entity_translation_settings_node__' . $node_type] : []; + $settings = $results['entity_translation_settings_node__' . $node_type] ?? []; $rows[] = [ 'id' => 'node.' . $node_type, 'target_entity_type_id' => 'node', 'target_bundle' => $node_type, - 'default_langcode' => isset($settings['default_language']) ? $settings['default_language'] : 'und', + 'default_langcode' => $settings['default_language'] ?? 'und', // The Drupal 7 'hide_language_selector' configuration has become // 'language_alterable' in Drupal 8 so we need to negate the value we // receive from the source. The Drupal 7 'hide_language_selector' @@ -104,7 +104,7 @@ protected function initializeIterator() { // if a settings variable exists for that comment type, otherwise use // default values. foreach ($node_types as $node_type) { - $settings = isset($results['entity_translation_settings_comment__comment_node_' . $node_type]) ? $results['entity_translation_settings_comment__comment_node_' . $node_type] : []; + $settings = $results['entity_translation_settings_comment__comment_node_' . $node_type] ?? []; // Forum uses a hardcoded comment type name, so make sure we use it // when we're dealing with forum comment type. $bundle = $node_type == 'forum' ? 'comment_forum' : 'comment_node_' . $node_type; @@ -112,7 +112,7 @@ protected function initializeIterator() { 'id' => 'comment.' . $bundle, 'target_entity_type_id' => 'comment', 'target_bundle' => $bundle, - 'default_langcode' => isset($settings['default_language']) ? $settings['default_language'] : 'xx-et-current', + 'default_langcode' => $settings['default_language'] ?? 'xx-et-current', // The Drupal 7 'hide_language_selector' configuration has become // 'language_alterable' in Drupal 8 so we need to negate the value we // receive from the source. The Drupal 7 'hide_language_selector' @@ -129,12 +129,12 @@ protected function initializeIterator() { // settings variable exists for that vocabulary, otherwise use default // values. foreach ($vocabularies as $vocabulary) { - $settings = isset($results['entity_translation_settings_taxonomy_term__' . $vocabulary]) ? $results['entity_translation_settings_taxonomy_term__' . $vocabulary] : []; + $settings = $results['entity_translation_settings_taxonomy_term__' . $vocabulary] ?? []; $rows[] = [ 'id' => 'taxonomy_term.' . $vocabulary, 'target_entity_type_id' => 'taxonomy_term', 'target_bundle' => $vocabulary, - 'default_langcode' => isset($settings['default_language']) ? $settings['default_language'] : 'xx-et-default', + 'default_langcode' => $settings['default_language'] ?? 'xx-et-default', // The Drupal 7 'hide_language_selector' configuration has become // 'language_alterable' in Drupal 8 so we need to negate the value we // receive from the source. The Drupal 7 'hide_language_selector' @@ -149,12 +149,12 @@ protected function initializeIterator() { if (in_array('user', $entity_types, TRUE)) { // User entity type is not bundleable. Check if a settings variable // exists, otherwise use default values. - $settings = isset($results['entity_translation_settings_user__user']) ? $results['entity_translation_settings_user__user'] : []; + $settings = $results['entity_translation_settings_user__user'] ?? []; $rows[] = [ 'id' => 'user.user', 'target_entity_type_id' => 'user', 'target_bundle' => 'user', - 'default_langcode' => isset($settings['default_language']) ? $settings['default_language'] : 'xx-et-default', + 'default_langcode' => $settings['default_language'] ?? 'xx-et-default', // The Drupal 7 'hide_language_selector' configuration has become // 'language_alterable' in Drupal 8 so we need to negate the value we // receive from the source. The Drupal 7 'hide_language_selector' diff --git a/core/modules/contextual/src/Element/ContextualLinks.php b/core/modules/contextual/src/Element/ContextualLinks.php index c4bd3b21f714..27c71dcbcb87 100644 --- a/core/modules/contextual/src/Element/ContextualLinks.php +++ b/core/modules/contextual/src/Element/ContextualLinks.php @@ -78,7 +78,7 @@ public static function preRenderLinks(array $element) { $class = Html::getClass($class); $links[$class] = [ 'title' => $item['title'], - 'url' => Url::fromRoute(isset($item['route_name']) ? $item['route_name'] : '', isset($item['route_parameters']) ? $item['route_parameters'] : [], $item['localized_options']), + 'url' => Url::fromRoute($item['route_name'] ?? '', $item['route_parameters'] ?? [], $item['localized_options']), ]; } $element['#links'] = $links; diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php index 203f15d0bd0a..5f77efcd6cd6 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php +++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeFieldItemList.php @@ -36,7 +36,7 @@ public function defaultValuesForm(array &$form, FormStateInterface $form_state) '#type' => 'select', '#title' => t('Default date'), '#description' => t('Set a default value for this date.'), - '#default_value' => isset($default_value[0]['default_date_type']) ? $default_value[0]['default_date_type'] : '', + '#default_value' => $default_value[0]['default_date_type'] ?? '', '#options' => [ static::DEFAULT_VALUE_NOW => t('Current date'), static::DEFAULT_VALUE_CUSTOM => t('Relative date'), diff --git a/core/modules/datetime_range/src/Plugin/Field/FieldType/DateRangeFieldItemList.php b/core/modules/datetime_range/src/Plugin/Field/FieldType/DateRangeFieldItemList.php index f4ca8b8febf5..bf2e578feff9 100644 --- a/core/modules/datetime_range/src/Plugin/Field/FieldType/DateRangeFieldItemList.php +++ b/core/modules/datetime_range/src/Plugin/Field/FieldType/DateRangeFieldItemList.php @@ -31,7 +31,7 @@ public function defaultValuesForm(array &$form, FormStateInterface $form_state) '#type' => 'select', '#title' => $this->t('Default end date'), '#description' => $this->t('Set a default value for the end date.'), - '#default_value' => isset($default_value[0]['default_end_date_type']) ? $default_value[0]['default_end_date_type'] : '', + '#default_value' => $default_value[0]['default_end_date_type'] ?? '', '#options' => [ static::DEFAULT_VALUE_NOW => $this->t('Current date'), static::DEFAULT_VALUE_CUSTOM => $this->t('Relative date'), diff --git a/core/modules/editor/editor.module b/core/modules/editor/editor.module index 4a76f7c86557..da32ff01cba0 100644 --- a/core/modules/editor/editor.module +++ b/core/modules/editor/editor.module @@ -282,7 +282,7 @@ function editor_load($format_id) { // formats for administrators). Loading a small number of editors all at once // is more efficient than loading multiple editors individually. $editors = Editor::loadMultiple(); - return isset($editors[$format_id]) ? $editors[$format_id] : NULL; + return $editors[$format_id] ?? NULL; } /** @@ -403,8 +403,7 @@ function editor_entity_update(EntityInterface $entity) { // Detect file usages that should be incremented. foreach ($uuids_by_field as $field => $uuids) { - $original_uuids = isset($original_uuids_by_field[$field]) ? - $original_uuids_by_field[$field] : []; + $original_uuids = $original_uuids_by_field[$field] ?? []; if ($added_files = array_diff($uuids_by_field[$field], $original_uuids)) { _editor_record_file_usage($added_files, $entity); diff --git a/core/modules/editor/src/Form/EditorImageDialog.php b/core/modules/editor/src/Form/EditorImageDialog.php index 6308aea77313..a1ced5747b31 100644 --- a/core/modules/editor/src/Form/EditorImageDialog.php +++ b/core/modules/editor/src/Form/EditorImageDialog.php @@ -116,7 +116,7 @@ public function buildForm(array $form, FormStateInterface $form_state, Editor $e $form['attributes']['src'] = [ '#title' => $this->t('URL'), '#type' => 'textfield', - '#default_value' => isset($image_element['src']) ? $image_element['src'] : '', + '#default_value' => $image_element['src'] ?? '', '#maxlength' => 2048, '#required' => TRUE, ]; @@ -139,7 +139,7 @@ public function buildForm(array $form, FormStateInterface $form_state, Editor $e // an existing image (which means the src attribute is set) and its alt // attribute is empty, then we show that as two double quotes in the dialog. // @see https://www.drupal.org/node/2307647 - $alt = isset($image_element['alt']) ? $image_element['alt'] : ''; + $alt = $image_element['alt'] ?? ''; if ($alt === '' && !empty($image_element['src'])) { $alt = '""'; } diff --git a/core/modules/editor/src/Form/EditorLinkDialog.php b/core/modules/editor/src/Form/EditorLinkDialog.php index 1b1735a2e781..df0bcfef69d8 100644 --- a/core/modules/editor/src/Form/EditorLinkDialog.php +++ b/core/modules/editor/src/Form/EditorLinkDialog.php @@ -40,7 +40,7 @@ public function buildForm(array $form, FormStateInterface $form_state, Editor $e // The default values are set directly from \Drupal::request()->request, // provided by the editor plugin opening the dialog. $user_input = $form_state->getUserInput(); - $input = isset($user_input['editor_object']) ? $user_input['editor_object'] : []; + $input = $user_input['editor_object'] ?? []; $form['#tree'] = TRUE; $form['#attached']['library'][] = 'editor/drupal.editor.dialog'; @@ -52,7 +52,7 @@ public function buildForm(array $form, FormStateInterface $form_state, Editor $e $form['attributes']['href'] = [ '#title' => $this->t('URL'), '#type' => 'textfield', - '#default_value' => isset($input['href']) ? $input['href'] : '', + '#default_value' => $input['href'] ?? '', '#maxlength' => 2048, ]; diff --git a/core/modules/field/src/FieldConfigStorage.php b/core/modules/field/src/FieldConfigStorage.php index 7d5389778c4f..3f18a0fed7a6 100644 --- a/core/modules/field/src/FieldConfigStorage.php +++ b/core/modules/field/src/FieldConfigStorage.php @@ -101,7 +101,7 @@ public function importDelete($name, Config $new_config, Config $old_config) { */ public function loadByProperties(array $conditions = []) { // Include deleted fields if specified in the $conditions parameters. - $include_deleted = isset($conditions['include_deleted']) ? $conditions['include_deleted'] : FALSE; + $include_deleted = $conditions['include_deleted'] ?? FALSE; unset($conditions['include_deleted']); $fields = []; diff --git a/core/modules/field/src/FieldStorageConfigStorage.php b/core/modules/field/src/FieldStorageConfigStorage.php index 1125ab97ec3f..dee08eb58d34 100644 --- a/core/modules/field/src/FieldStorageConfigStorage.php +++ b/core/modules/field/src/FieldStorageConfigStorage.php @@ -101,7 +101,7 @@ public static function createInstance(ContainerInterface $container, EntityTypeI */ public function loadByProperties(array $conditions = []) { // Include deleted fields if specified in the $conditions parameters. - $include_deleted = isset($conditions['include_deleted']) ? $conditions['include_deleted'] : FALSE; + $include_deleted = $conditions['include_deleted'] ?? FALSE; unset($conditions['include_deleted']); /** @var \Drupal\field\FieldStorageConfigInterface[] $storages */ diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldFormatterSettingsDefaults.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldFormatterSettingsDefaults.php index 9a8e86abb735..1e9c82cd3a94 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldFormatterSettingsDefaults.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldFormatterSettingsDefaults.php @@ -126,7 +126,7 @@ protected function numberSettings($type, $format) { ], ]; - return isset($map[$type][$format]) ? $map[$type][$format] : []; + return $map[$type][$format] ?? []; } } diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php index 72e954bf0cb4..4b612bffaa78 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php @@ -34,7 +34,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable for ($i = 0; $i < 2; $i++) { $value = $list[$i]; $tmp = explode("|", $value); - $original_option_key = isset($tmp[0]) ? $tmp[0] : NULL; + $original_option_key = $tmp[0] ?? NULL; $option_key = ($i === 0) ? 'off_label' : 'on_label'; // Find property with name matching the original option. if ($option == $original_option_key) { diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php index 758e803eb5d4..a64a14968903 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php @@ -39,9 +39,9 @@ public function transform($value, MigrateExecutableInterface $migrate_executable * A valid array of settings. */ public function getSettings($widget_type, $widget_settings) { - $progress = isset($widget_settings['progress_indicator']) ? $widget_settings['progress_indicator'] : 'throbber'; - $size = isset($widget_settings['size']) ? $widget_settings['size'] : 60; - $rows = isset($widget_settings['rows']) ? $widget_settings['rows'] : 5; + $progress = $widget_settings['progress_indicator'] ?? 'throbber'; + $size = $widget_settings['size'] ?? 60; + $rows = $widget_settings['rows'] ?? 5; $settings = [ 'text_textfield' => [ @@ -77,7 +77,7 @@ public function getSettings($widget_type, $widget_settings) { ], ]; - return isset($settings[$widget_type]) ? $settings[$widget_type] : []; + return $settings[$widget_type] ?? []; } } diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php index e8cf7f5fa687..967b4cbd796c 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php @@ -44,7 +44,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable * A valid array of settings. */ public function getSettings($field_type, $global_settings, $original_field_type = NULL) { - $max_length = isset($global_settings['max_length']) ? $global_settings['max_length'] : ''; + $max_length = $global_settings['max_length'] ?? ''; $max_length = empty($max_length) ? 255 : $max_length; $allowed_values = []; if (isset($global_settings['allowed_values'])) { @@ -57,7 +57,7 @@ public function getSettings($field_type, $global_settings, $original_field_type case 'list_float': foreach ($list as $value) { $value = explode("|", $value); - $allowed_values[$value[0]] = isset($value[1]) ? $value[1] : $value[0]; + $allowed_values[$value[0]] = $value[1] ?? $value[0]; } break; @@ -89,7 +89,7 @@ public function getSettings($field_type, $global_settings, $original_field_type return ['target_type' => 'user']; } else { - return isset($settings[$field_type]) ? $settings[$field_type] : []; + return $settings[$field_type] ?? []; } } diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidget.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidget.php index 9dd3387e5aae..b2f9738f24c8 100644 --- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidget.php +++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldWidget/TestFieldWidget.php @@ -63,7 +63,7 @@ public function settingsSummary() { public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element += [ '#type' => 'textfield', - '#default_value' => isset($items[$delta]->value) ? $items[$delta]->value : '', + '#default_value' => $items[$delta]->value ?? '', ]; return ['value' => $element]; } diff --git a/core/modules/field_ui/src/Element/FieldUiTable.php b/core/modules/field_ui/src/Element/FieldUiTable.php index 839a0ed5f44a..8dee40d7333a 100644 --- a/core/modules/field_ui/src/Element/FieldUiTable.php +++ b/core/modules/field_ui/src/Element/FieldUiTable.php @@ -83,7 +83,7 @@ public static function tablePreRender($elements) { $indentation = [ '#theme' => 'indentation', '#size' => $depth, - '#suffix' => isset($row[$cell]['#prefix']) ? $row[$cell]['#prefix'] : '', + '#suffix' => $row[$cell]['#prefix'] ?? '', ]; $row[$cell]['#prefix'] = \Drupal::service('renderer')->render($indentation); } diff --git a/core/modules/field_ui/src/Form/EntityDisplayFormBase.php b/core/modules/field_ui/src/Form/EntityDisplayFormBase.php index 97d234aad4f2..8f399144099f 100644 --- a/core/modules/field_ui/src/Form/EntityDisplayFormBase.php +++ b/core/modules/field_ui/src/Form/EntityDisplayFormBase.php @@ -604,7 +604,7 @@ protected function copyFormValuesToEntity(EntityInterface $entity, array $form, // Only store settings actually used by the selected plugin. $default_settings = $this->pluginManager->getDefaultSettings($options['type']); $options['settings'] = isset($values['settings_edit_form']['settings']) ? array_intersect_key($values['settings_edit_form']['settings'], $default_settings) : []; - $options['third_party_settings'] = isset($values['settings_edit_form']['third_party_settings']) ? $values['settings_edit_form']['third_party_settings'] : []; + $options['third_party_settings'] = $values['settings_edit_form']['third_party_settings'] ?? []; $form_state->set('plugin_settings_update', NULL); } @@ -704,8 +704,8 @@ public function multistepAjax($form, FormStateInterface $form_state) { foreach ($updated_rows as $name) { foreach ($updated_columns as $key) { $element = &$form['fields'][$name][$key]; - $element['#prefix'] = '<div class="ajax-new-content">' . (isset($element['#prefix']) ? $element['#prefix'] : ''); - $element['#suffix'] = (isset($element['#suffix']) ? $element['#suffix'] : '') . '</div>'; + $element['#prefix'] = '<div class="ajax-new-content">' . ($element['#prefix'] ?? ''); + $element['#suffix'] = ($element['#suffix'] ?? '') . '</div>'; } } @@ -724,7 +724,7 @@ public function multistepAjax($form, FormStateInterface $form_state) { protected function getExtraFields() { $context = $this->displayContext == 'view' ? 'display' : $this->displayContext; $extra_fields = $this->entityFieldManager->getExtraFields($this->entity->getTargetEntityTypeId(), $this->entity->getTargetBundle()); - return isset($extra_fields[$context]) ? $extra_fields[$context] : []; + return $extra_fields[$context] ?? []; } /** diff --git a/core/modules/field_ui/src/Form/EntityFormDisplayEditForm.php b/core/modules/field_ui/src/Form/EntityFormDisplayEditForm.php index 5442d7fa7ee6..6ee46132f2d4 100644 --- a/core/modules/field_ui/src/Form/EntityFormDisplayEditForm.php +++ b/core/modules/field_ui/src/Form/EntityFormDisplayEditForm.php @@ -62,7 +62,7 @@ protected function getEntityDisplay($entity_type_id, $bundle, $mode) { * {@inheritdoc} */ protected function getDefaultPlugin($field_type) { - return isset($this->fieldTypes[$field_type]['default_widget']) ? $this->fieldTypes[$field_type]['default_widget'] : NULL; + return $this->fieldTypes[$field_type]['default_widget'] ?? NULL; } /** diff --git a/core/modules/field_ui/src/Form/EntityViewDisplayEditForm.php b/core/modules/field_ui/src/Form/EntityViewDisplayEditForm.php index eeb54fcb4415..73ed8b439599 100644 --- a/core/modules/field_ui/src/Form/EntityViewDisplayEditForm.php +++ b/core/modules/field_ui/src/Form/EntityViewDisplayEditForm.php @@ -95,7 +95,7 @@ protected function getEntityDisplay($entity_type_id, $bundle, $mode) { * {@inheritdoc} */ protected function getDefaultPlugin($field_type) { - return isset($this->fieldTypes[$field_type]['default_formatter']) ? $this->fieldTypes[$field_type]['default_formatter'] : NULL; + return $this->fieldTypes[$field_type]['default_formatter'] ?? NULL; } /** diff --git a/core/modules/field_ui/src/Form/FieldStorageAddForm.php b/core/modules/field_ui/src/Form/FieldStorageAddForm.php index c4af96099c9b..8a1139b0df0e 100644 --- a/core/modules/field_ui/src/Form/FieldStorageAddForm.php +++ b/core/modules/field_ui/src/Form/FieldStorageAddForm.php @@ -363,10 +363,10 @@ public function submitForm(array &$form, FormStateInterface $form_state) { } } - $widget_id = isset($field_options['entity_form_display']['type']) ? $field_options['entity_form_display']['type'] : NULL; - $widget_settings = isset($field_options['entity_form_display']['settings']) ? $field_options['entity_form_display']['settings'] : []; - $formatter_id = isset($field_options['entity_view_display']['type']) ? $field_options['entity_view_display']['type'] : NULL; - $formatter_settings = isset($field_options['entity_view_display']['settings']) ? $field_options['entity_view_display']['settings'] : []; + $widget_id = $field_options['entity_form_display']['type'] ?? NULL; + $widget_settings = $field_options['entity_form_display']['settings'] ?? []; + $formatter_id = $field_options['entity_view_display']['type'] ?? NULL; + $formatter_settings = $field_options['entity_view_display']['settings'] ?? []; } // Create the field storage and field. diff --git a/core/modules/field_ui/src/Form/FieldStorageConfigEditForm.php b/core/modules/field_ui/src/Form/FieldStorageConfigEditForm.php index bf1994c1f93c..d70c0aadd4cb 100644 --- a/core/modules/field_ui/src/Form/FieldStorageConfigEditForm.php +++ b/core/modules/field_ui/src/Form/FieldStorageConfigEditForm.php @@ -254,7 +254,7 @@ protected function getEnforcedCardinality() { /** @var \Drupal\Core\Field\FieldTypePluginManager $field_type_manager */ $field_type_manager = \Drupal::service('plugin.manager.field.field_type'); $definition = $field_type_manager->getDefinition($this->entity->getType()); - return isset($definition['cardinality']) ? $definition['cardinality'] : NULL; + return $definition['cardinality'] ?? NULL; } } diff --git a/core/modules/file/file.module b/core/modules/file/file.module index 62e44a390724..d222f3560c9d 100644 --- a/core/modules/file/file.module +++ b/core/modules/file/file.module @@ -713,9 +713,9 @@ function _file_save_upload_from_form(array $element, FormStateInterface $form_st // from the messenger service. $errors_before = \Drupal::messenger()->deleteByType(MessengerInterface::TYPE_ERROR); - $upload_location = isset($element['#upload_location']) ? $element['#upload_location'] : FALSE; + $upload_location = $element['#upload_location'] ?? FALSE; $upload_name = implode('_', $element['#parents']); - $upload_validators = isset($element['#upload_validators']) ? $element['#upload_validators'] : []; + $upload_validators = $element['#upload_validators'] ?? []; $result = file_save_upload($upload_name, $upload_validators, $upload_location, $delta, $replace); @@ -1431,7 +1431,7 @@ function file_managed_file_save_upload($element, FormStateInterface $form_state) } $file_upload = $all_files[$upload_name]; - $destination = isset($element['#upload_location']) ? $element['#upload_location'] : NULL; + $destination = $element['#upload_location'] ?? NULL; if (isset($destination) && !\Drupal::service('file_system')->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY)) { \Drupal::logger('file')->notice('The upload directory %directory for the file field %name could not be created or is not accessible. A newly uploaded file could not be saved in this directory as a consequence, and the upload was canceled.', ['%directory' => $destination, '%name' => $element['#field_name']]); $form_state->setError($element, t('The file could not be uploaded.')); @@ -1725,7 +1725,7 @@ function file_get_file_references(FileInterface $file, FieldDefinitionInterface if (!isset($references[$file->id()][$age])) { $references[$file->id()][$age] = []; $usage_list = \Drupal::service('file.usage')->listUsage($file); - $file_usage_list = isset($usage_list['file']) ? $usage_list['file'] : []; + $file_usage_list = $usage_list['file'] ?? []; foreach ($file_usage_list as $entity_type_id => $entity_ids) { $entities = \Drupal::entityTypeManager() ->getStorage($entity_type_id)->loadMultiple(array_keys($entity_ids)); @@ -1807,7 +1807,7 @@ function _views_file_status($choice = NULL) { ]; if (isset($choice)) { - return isset($status[$choice]) ? $status[$choice] : t('Unknown'); + return $status[$choice] ?? t('Unknown'); } return $status; diff --git a/core/modules/file/src/Element/ManagedFile.php b/core/modules/file/src/Element/ManagedFile.php index cd5006a62801..e198f353dc8f 100644 --- a/core/modules/file/src/Element/ManagedFile.php +++ b/core/modules/file/src/Element/ManagedFile.php @@ -136,11 +136,11 @@ public static function valueCallback(&$element, $input, FormStateInterface $form // default value. if ($input === FALSE || $force_default) { if ($element['#extended']) { - $default_fids = isset($element['#default_value']['fids']) ? $element['#default_value']['fids'] : []; - $return = isset($element['#default_value']) ? $element['#default_value'] : ['fids' => []]; + $default_fids = $element['#default_value']['fids'] ?? []; + $return = $element['#default_value'] ?? ['fids' => []]; } else { - $default_fids = isset($element['#default_value']) ? $element['#default_value'] : []; + $default_fids = $element['#default_value'] ?? []; $return = ['fids' => []]; } @@ -220,7 +220,7 @@ public static function processManagedFile(&$element, FormStateInterface $form_st // This is used sometimes so let's implode it just once. $parents_prefix = implode('_', $element['#parents']); - $fids = isset($element['#value']['fids']) ? $element['#value']['fids'] : []; + $fids = $element['#value']['fids'] ?? []; // Set some default element properties. $element['#progress_indicator'] = empty($element['#progress_indicator']) ? 'none' : $element['#progress_indicator']; diff --git a/core/modules/file/src/Plugin/Field/FieldType/FileItem.php b/core/modules/file/src/Plugin/Field/FieldType/FileItem.php index 9f8bc687fb7a..758d483e0139 100644 --- a/core/modules/file/src/Plugin/Field/FieldType/FileItem.php +++ b/core/modules/file/src/Plugin/Field/FieldType/FileItem.php @@ -188,7 +188,7 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) { $element['description_field'] = [ '#type' => 'checkbox', '#title' => t('Enable <em>Description</em> field'), - '#default_value' => isset($settings['description_field']) ? $settings['description_field'] : '', + '#default_value' => $settings['description_field'] ?? '', '#description' => t('The description field allows users to enter a description about the uploaded file.'), '#weight' => 11, ]; diff --git a/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php b/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php index da7c22e8d750..889279788871 100644 --- a/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php +++ b/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php @@ -409,7 +409,7 @@ public static function process($element, FormStateInterface $form_state, $form) $element['description'] = [ '#type' => $config->get('description.type'), '#title' => t('Description'), - '#value' => isset($item['description']) ? $item['description'] : '', + '#value' => $item['description'] ?? '', '#maxlength' => $config->get('description.length'), '#description' => t('The description may be used as the label of the link to the file.'), ]; diff --git a/core/modules/file/src/Plugin/migrate/process/d6/FieldFile.php b/core/modules/file/src/Plugin/migrate/process/d6/FieldFile.php index 9a0c93f610d6..86987453de7e 100644 --- a/core/modules/file/src/Plugin/migrate/process/d6/FieldFile.php +++ b/core/modules/file/src/Plugin/migrate/process/d6/FieldFile.php @@ -74,9 +74,9 @@ public function transform($value, MigrateExecutableInterface $migrate_executable return [ 'target_id' => $lookup_result[0]['fid'], 'display' => $value['list'], - 'description' => isset($options['description']) ? $options['description'] : '', - 'alt' => isset($options['alt']) ? $options['alt'] : '', - 'title' => isset($options['title']) ? $options['title'] : '', + 'description' => $options['description'] ?? '', + 'alt' => $options['alt'] ?? '', + 'title' => $options['title'] ?? '', ]; } else { diff --git a/core/modules/file/src/Plugin/migrate/source/d6/File.php b/core/modules/file/src/Plugin/migrate/source/d6/File.php index 7b7b2df31164..1332a0c9cfda 100644 --- a/core/modules/file/src/Plugin/migrate/source/d6/File.php +++ b/core/modules/file/src/Plugin/migrate/source/d6/File.php @@ -54,7 +54,7 @@ public function query() { * {@inheritdoc} */ protected function initializeIterator() { - $site_path = isset($this->configuration['site_path']) ? $this->configuration['site_path'] : 'sites/default'; + $site_path = $this->configuration['site_path'] ?? 'sites/default'; $this->filePath = $this->variableGet('file_directory_path', $site_path . '/files') . '/'; $this->tempFilePath = $this->variableGet('file_directory_temp', '/tmp') . '/'; diff --git a/core/modules/file/tests/src/Functional/FileFieldTestBase.php b/core/modules/file/tests/src/Functional/FileFieldTestBase.php index cdb0e3da3194..cbfe67fa3c18 100644 --- a/core/modules/file/tests/src/Functional/FileFieldTestBase.php +++ b/core/modules/file/tests/src/Functional/FileFieldTestBase.php @@ -222,7 +222,7 @@ public function replaceNodeFile($file, $field_name, $nid, $new_revision = TRUE) public function assertFileEntryExists($file, $message = NULL) { $this->container->get('entity_type.manager')->getStorage('file')->resetCache(); $db_file = File::load($file->id()); - $message = isset($message) ? $message : new FormattableMarkup('File %file exists in database at the correct path.', ['%file' => $file->getFileUri()]); + $message = $message ?? new FormattableMarkup('File %file exists in database at the correct path.', ['%file' => $file->getFileUri()]); $this->assertEquals($file->getFileUri(), $db_file->getFileUri(), $message); } @@ -231,7 +231,7 @@ public function assertFileEntryExists($file, $message = NULL) { */ public function assertFileEntryNotExists($file, $message) { $this->container->get('entity_type.manager')->getStorage('file')->resetCache(); - $message = isset($message) ? $message : new FormattableMarkup('File %file exists in database at the correct path.', ['%file' => $file->getFileUri()]); + $message = $message ?? new FormattableMarkup('File %file exists in database at the correct path.', ['%file' => $file->getFileUri()]); $this->assertNull(File::load($file->id()), $message); } @@ -239,7 +239,7 @@ public function assertFileEntryNotExists($file, $message) { * Asserts that a file's status is set to permanent in the database. */ public function assertFileIsPermanent(FileInterface $file, $message = NULL) { - $message = isset($message) ? $message : new FormattableMarkup('File %file is permanent.', ['%file' => $file->getFileUri()]); + $message = $message ?? new FormattableMarkup('File %file is permanent.', ['%file' => $file->getFileUri()]); $this->assertTrue($file->isPermanent(), $message); } diff --git a/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php b/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php index db17056c178d..2e688aa71f3b 100644 --- a/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php +++ b/core/modules/filter/src/Plugin/migrate/process/d6/FilterFormatPermission.php @@ -67,7 +67,7 @@ public static function create(ContainerInterface $container, array $configuratio */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { $rid = $row->getSourceProperty('rid'); - $migration = isset($this->configuration['migration']) ? $this->configuration['migration'] : 'd6_filter_format'; + $migration = $this->configuration['migration'] ?? 'd6_filter_format'; if ($formats = $row->getSourceProperty("filter_permissions:$rid")) { foreach ($formats as $format) { $lookup_result = $this->migrateLookup->lookup($migration, [$format]); diff --git a/core/modules/forum/forum.module b/core/modules/forum/forum.module index 8bf800e11a86..c11ec858f803 100644 --- a/core/modules/forum/forum.module +++ b/core/modules/forum/forum.module @@ -465,7 +465,7 @@ function template_preprocess_forums(&$variables) { $variables['topics'][$id]->submitted = \Drupal::service('renderer')->render($forum_submitted); $forum_submitted = [ '#theme' => 'forum_submitted', - '#topic' => isset($topic->last_reply) ? $topic->last_reply : NULL, + '#topic' => $topic->last_reply ?? NULL, ]; $variables['topics'][$id]->last_reply = \Drupal::service('renderer')->render($forum_submitted); diff --git a/core/modules/forum/src/ForumManager.php b/core/modules/forum/src/ForumManager.php index 3a5ec47c74d8..3e9a16e9a6cc 100644 --- a/core/modules/forum/src/ForumManager.php +++ b/core/modules/forum/src/ForumManager.php @@ -329,7 +329,7 @@ protected function lastVisit($nid, AccountInterface $account) { $this->history[$t->nid] = $t->timestamp > HISTORY_READ_LIMIT ? $t->timestamp : HISTORY_READ_LIMIT; } } - return isset($this->history[$nid]) ? $this->history[$nid] : HISTORY_READ_LIMIT; + return $this->history[$nid] ?? HISTORY_READ_LIMIT; } /** diff --git a/core/modules/hal/src/Normalizer/EntityReferenceItemNormalizer.php b/core/modules/hal/src/Normalizer/EntityReferenceItemNormalizer.php index 50315dc30ad6..d078cf154a72 100644 --- a/core/modules/hal/src/Normalizer/EntityReferenceItemNormalizer.php +++ b/core/modules/hal/src/Normalizer/EntityReferenceItemNormalizer.php @@ -76,7 +76,7 @@ public function normalize($field_item, $format = NULL, array $context = []) { // If the parent entity passed in a langcode, unset it before normalizing // the target entity. Otherwise, untranslatable fields of the target entity // will include the langcode. - $langcode = isset($context['langcode']) ? $context['langcode'] : NULL; + $langcode = $context['langcode'] ?? NULL; unset($context['langcode']); $context['included_fields'] = ['uuid']; diff --git a/core/modules/image/src/Form/ImageStyleEditForm.php b/core/modules/image/src/Form/ImageStyleEditForm.php index 5f075b3bbf8e..5a7ad036f8ff 100644 --- a/core/modules/image/src/Form/ImageStyleEditForm.php +++ b/core/modules/image/src/Form/ImageStyleEditForm.php @@ -153,7 +153,7 @@ public function form(array $form, FormStateInterface $form_state) { } $form['effects']['new'] = [ '#tree' => FALSE, - '#weight' => isset($user_input['weight']) ? $user_input['weight'] : NULL, + '#weight' => $user_input['weight'] ?? NULL, '#attributes' => ['class' => ['draggable']], ]; $form['effects']['new']['effect'] = [ diff --git a/core/modules/image/src/ImageStyleStorage.php b/core/modules/image/src/ImageStyleStorage.php index 69b7a513e400..1a629dd0a488 100644 --- a/core/modules/image/src/ImageStyleStorage.php +++ b/core/modules/image/src/ImageStyleStorage.php @@ -33,7 +33,7 @@ public function setReplacementId($name, $replacement) { * {@inheritdoc} */ public function getReplacementId($name) { - return isset($this->replacement[$name]) ? $this->replacement[$name] : NULL; + return $this->replacement[$name] ?? NULL; } /** diff --git a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php index 17360160a35e..5a602339a226 100644 --- a/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php +++ b/core/modules/image/src/Plugin/Field/FieldWidget/ImageWidget.php @@ -258,7 +258,7 @@ public static function process($element, FormStateInterface $form_state, $form) $element['alt'] = [ '#title' => t('Alternative text'), '#type' => 'textfield', - '#default_value' => isset($item['alt']) ? $item['alt'] : '', + '#default_value' => $item['alt'] ?? '', '#description' => t('Short description of the image used by screen readers and displayed when the image is not loaded. This is important for accessibility.'), // @see https://www.drupal.org/node/465106#alt-text '#maxlength' => 512, @@ -270,7 +270,7 @@ public static function process($element, FormStateInterface $form_state, $form) $element['title'] = [ '#type' => 'textfield', '#title' => t('Title'), - '#default_value' => isset($item['title']) ? $item['title'] : '', + '#default_value' => $item['title'] ?? '', '#description' => t('The title is used as a tool tip when the user hovers the mouse over the image.'), '#maxlength' => 1024, '#weight' => -11, diff --git a/core/modules/image/tests/src/Functional/ImageFieldTestBase.php b/core/modules/image/tests/src/Functional/ImageFieldTestBase.php index d4a03267bb53..82cef6e7757c 100644 --- a/core/modules/image/tests/src/Functional/ImageFieldTestBase.php +++ b/core/modules/image/tests/src/Functional/ImageFieldTestBase.php @@ -116,7 +116,7 @@ public function uploadNodeImage($image, $field_name, $type, $alt = '') { // Retrieve ID of the newly created node from the current URL. $matches = []; preg_match('/node\/([0-9]+)/', $this->getUrl(), $matches); - return isset($matches[1]) ? $matches[1] : FALSE; + return $matches[1] ?? FALSE; } /** diff --git a/core/modules/jsonapi/src/Access/TemporaryQueryGuard.php b/core/modules/jsonapi/src/Access/TemporaryQueryGuard.php index 7a7991f158dc..1c5c34db1612 100644 --- a/core/modules/jsonapi/src/Access/TemporaryQueryGuard.php +++ b/core/modules/jsonapi/src/Access/TemporaryQueryGuard.php @@ -588,7 +588,7 @@ protected static function buildTree(array $paths) { // This complex expression is needed to handle the string, "0", which // would be evaluated as FALSE. if (!is_null(($field_name = array_shift($parts)))) { - $previous = isset($merged[$field_name]) ? $merged[$field_name] : []; + $previous = $merged[$field_name] ?? []; $merged[$field_name] = array_merge($previous, [$parts]); } } diff --git a/core/modules/jsonapi/src/Controller/EntityResource.php b/core/modules/jsonapi/src/Controller/EntityResource.php index ca588d12f7a2..9ce8a725ce2d 100644 --- a/core/modules/jsonapi/src/Controller/EntityResource.php +++ b/core/modules/jsonapi/src/Controller/EntityResource.php @@ -901,8 +901,8 @@ protected function getCollectionQuery(ResourceType $resource_type, array $params if (isset($params[Sort::KEY_NAME]) && $sort = $params[Sort::KEY_NAME]) { foreach ($sort->fields() as $field) { $path = $this->fieldResolver->resolveInternalEntityQueryPath($resource_type, $field[Sort::PATH_KEY]); - $direction = isset($field[Sort::DIRECTION_KEY]) ? $field[Sort::DIRECTION_KEY] : 'ASC'; - $langcode = isset($field[Sort::LANGUAGE_KEY]) ? $field[Sort::LANGUAGE_KEY] : NULL; + $direction = $field[Sort::DIRECTION_KEY] ?? 'ASC'; + $langcode = $field[Sort::LANGUAGE_KEY] ?? NULL; $query->sort($path, $direction, $langcode); } } diff --git a/core/modules/jsonapi/src/DependencyInjection/Compiler/RegisterSerializationClassesCompilerPass.php b/core/modules/jsonapi/src/DependencyInjection/Compiler/RegisterSerializationClassesCompilerPass.php index 7587cb324290..a0a33b69bfd6 100644 --- a/core/modules/jsonapi/src/DependencyInjection/Compiler/RegisterSerializationClassesCompilerPass.php +++ b/core/modules/jsonapi/src/DependencyInjection/Compiler/RegisterSerializationClassesCompilerPass.php @@ -70,14 +70,14 @@ public function process(ContainerBuilder $container) { // Normalizers are not an API: mark private. $container->getDefinition($id)->setPublic(FALSE); - $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $priority = $attributes[0]['priority'] ?? 0; $normalizers[$priority][] = new Reference($id); } foreach ($container->findTaggedServiceIds(static::OVERRIDDEN_SERVICE_ENCODER_TAG) as $id => $attributes) { // Encoders are not an API: mark private. $container->getDefinition($id)->setPublic(FALSE); - $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $priority = $attributes[0]['priority'] ?? 0; $encoders[$priority][] = new Reference($id); } diff --git a/core/modules/jsonapi/src/IncludeResolver.php b/core/modules/jsonapi/src/IncludeResolver.php index af055b1c16ee..2aad83386f94 100644 --- a/core/modules/jsonapi/src/IncludeResolver.php +++ b/core/modules/jsonapi/src/IncludeResolver.php @@ -249,7 +249,7 @@ protected static function buildTree(array $paths) { if (!$field_name = array_shift($parts)) { continue; } - $previous = isset($merged[$field_name]) ? $merged[$field_name] : []; + $previous = $merged[$field_name] ?? []; $merged[$field_name] = array_merge($previous, [$parts]); } return !empty($merged) ? array_map([static::class, __FUNCTION__], $merged) : $merged; diff --git a/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php b/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php index 1e0930eea994..ff9c1c7b532b 100644 --- a/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php @@ -40,9 +40,8 @@ protected function buildErrorObjects(HttpException $exception) { $entity = $error['entity']; $pointer = $error['pointer']; $reason = $error['reason']; - $relationship_field = isset($error['relationship_field']) - ? $error['relationship_field'] - : NULL; + $relationship_field = $error['relationship_field'] + ?? NULL; if (isset($entity)) { $entity_type_id = $entity->getEntityTypeId(); diff --git a/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php b/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php index c428b3c788f4..8e65b7789c72 100644 --- a/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php @@ -97,7 +97,7 @@ public function denormalize($data, $class, $format = NULL, array $context = []) implode(', ', $target_resource_type_names) )); } - return new ResourceIdentifier($value['type'], $value['id'], isset($value['meta']) ? $value['meta'] : []); + return new ResourceIdentifier($value['type'], $value['id'], $value['meta'] ?? []); }, $data['data']); if (!ResourceIdentifier::areResourceIdentifiersUnique($resource_identifiers)) { throw new BadRequestHttpException('Duplicate relationships are not permitted. Use `meta.arity` to distinguish resource identifiers with matching `type` and `id` values.'); diff --git a/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php b/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php index 8a21f420202b..a79eb95b5411 100644 --- a/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php @@ -122,11 +122,7 @@ protected function getNormalization(array $field_names, ResourceObject $object, } // Add links if missing. $base = &$normalizer_values[ResourceObjectNormalizationCacher::RESOURCE_CACHE_SUBSET_BASE]; - $base['links'] = isset($base['links']) - ? $base['links'] - : $this->serializer - ->normalize($object->getLinks(), $format, $context) - ->omitIfEmpty(); + $base['links'] = $base['links'] ?? $this->serializer->normalize($object->getLinks(), $format, $context)->omitIfEmpty(); if (!empty($non_cached_requested_fields)) { $this->cacher->saveOnTerminate($object, $normalizer_values); diff --git a/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php b/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php index faa7017455c5..7963ca2ac2e1 100644 --- a/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php +++ b/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php @@ -204,7 +204,7 @@ public function get($entity_type_id, $bundle) { */ public function getByTypeName($type_name) { $resource_types = $this->all(); - return isset($resource_types[$type_name]) ? $resource_types[$type_name] : NULL; + return $resource_types[$type_name] ?? NULL; } /** diff --git a/core/modules/jsonapi/src/Routing/Routes.php b/core/modules/jsonapi/src/Routing/Routes.php index 8a7586a26207..609ed91312a0 100644 --- a/core/modules/jsonapi/src/Routing/Routes.php +++ b/core/modules/jsonapi/src/Routing/Routes.php @@ -465,7 +465,7 @@ protected static function hasNonInternalFileTargetResourceTypes(array $resource_ */ public static function getResourceTypeNameFromParameters(array $parameters) { if (isset($parameters[static::JSON_API_ROUTE_FLAG_KEY]) && $parameters[static::JSON_API_ROUTE_FLAG_KEY]) { - return isset($parameters[static::RESOURCE_TYPE_KEY]) ? $parameters[static::RESOURCE_TYPE_KEY] : NULL; + return $parameters[static::RESOURCE_TYPE_KEY] ?? NULL; } return NULL; } diff --git a/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php b/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php index ba22bb7db7e4..58838f000275 100644 --- a/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php +++ b/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php @@ -1705,7 +1705,7 @@ protected function getExpectedGetRelationshipResponse($relationship_field_name, ]) ->addCacheableDependency($entity) ->addCacheableDependency($access); - $status_code = isset($expected_document['errors'][0]['status']) ? $expected_document['errors'][0]['status'] : 200; + $status_code = $expected_document['errors'][0]['status'] ?? 200; $resource_response = new CacheableResourceResponse($expected_document, $status_code); $resource_response->addCacheableDependency($expected_cacheability); return $resource_response; diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc index a55e65a23cb6..7a5c4fa1d1c5 100644 --- a/core/modules/language/language.admin.inc +++ b/core/modules/language/language.admin.inc @@ -74,7 +74,7 @@ function template_preprocess_language_negotiation_configure_form(&$variables) { } // Unset configurable to prevent rendering twice with children. - $configurable = isset($form[$type]['configurable']) ? $form[$type]['configurable'] : NULL; + $configurable = $form[$type]['configurable'] ?? NULL; unset($form[$type]['configurable']); $variables['language_types'][] = [ diff --git a/core/modules/language/src/Element/LanguageConfiguration.php b/core/modules/language/src/Element/LanguageConfiguration.php index 543e9a0e754d..b6790da2b5a1 100644 --- a/core/modules/language/src/Element/LanguageConfiguration.php +++ b/core/modules/language/src/Element/LanguageConfiguration.php @@ -32,7 +32,7 @@ public function getInfo() { * Process handler for the language_configuration form element. */ public static function processLanguageConfiguration(&$element, FormStateInterface $form_state, &$form) { - $options = isset($element['#options']) ? $element['#options'] : []; + $options = $element['#options'] ?? []; // Avoid validation failure since we are moving the '#options' key in the // nested 'language' select element. unset($element['#options']); diff --git a/core/modules/language/src/Entity/ConfigurableLanguage.php b/core/modules/language/src/Entity/ConfigurableLanguage.php index f268cb65a3fd..5dbdeda0eff1 100644 --- a/core/modules/language/src/Entity/ConfigurableLanguage.php +++ b/core/modules/language/src/Entity/ConfigurableLanguage.php @@ -284,7 +284,7 @@ public static function createFromLangcode($langcode) { return static::create([ 'id' => $langcode, 'label' => $standard_languages[$langcode][0], - 'direction' => isset($standard_languages[$langcode][2]) ? $standard_languages[$langcode][2] : static::DIRECTION_LTR, + 'direction' => $standard_languages[$langcode][2] ?? static::DIRECTION_LTR, ]); } } diff --git a/core/modules/language/src/Form/LanguageAddForm.php b/core/modules/language/src/Form/LanguageAddForm.php index 22d569f64ee8..44900447060b 100644 --- a/core/modules/language/src/Form/LanguageAddForm.php +++ b/core/modules/language/src/Form/LanguageAddForm.php @@ -153,7 +153,7 @@ protected function copyFormValuesToEntity(EntityInterface $entity, array $form, else { $standard_languages = LanguageManager::getStandardLanguageList(); $label = $standard_languages[$langcode][0]; - $direction = isset($standard_languages[$langcode][2]) ? $standard_languages[$langcode][2] : ConfigurableLanguage::DIRECTION_LTR; + $direction = $standard_languages[$langcode][2] ?? ConfigurableLanguage::DIRECTION_LTR; } $entity->set('id', $langcode); $entity->set('label', $label); diff --git a/core/modules/language/src/Form/NegotiationConfigureForm.php b/core/modules/language/src/Form/NegotiationConfigureForm.php index 0679a563d21e..6af8c1458569 100644 --- a/core/modules/language/src/Form/NegotiationConfigureForm.php +++ b/core/modules/language/src/Form/NegotiationConfigureForm.php @@ -248,7 +248,7 @@ protected function configureFormTable(array &$form, $type) { // Add missing data to the methods lists. foreach ($negotiation_info as $method_id => $method) { if (!isset($methods_weight[$method_id])) { - $methods_weight[$method_id] = isset($method['weight']) ? $method['weight'] : 0; + $methods_weight[$method_id] = $method['weight'] ?? 0; } } @@ -267,7 +267,7 @@ protected function configureFormTable(array &$form, $type) { // List the method only if the current type is defined in its 'types' key. // If it is not defined default to all the configurable language types. - $types = array_flip(isset($method['types']) ? $method['types'] : $form['#language_types']); + $types = array_flip($method['types'] ?? $form['#language_types']); if (isset($types[$type])) { $table_form['#language_negotiation_info'][$method_id] = $method; diff --git a/core/modules/language/src/Form/NegotiationUrlForm.php b/core/modules/language/src/Form/NegotiationUrlForm.php index 707b5ebe9edf..8f43315452e9 100644 --- a/core/modules/language/src/Form/NegotiationUrlForm.php +++ b/core/modules/language/src/Form/NegotiationUrlForm.php @@ -117,14 +117,14 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#type' => 'textfield', '#title' => $language->isDefault() ? $this->t('%language (%langcode) path prefix (Default language)', $t_args) : $this->t('%language (%langcode) path prefix', $t_args), '#maxlength' => 64, - '#default_value' => isset($prefixes[$langcode]) ? $prefixes[$langcode] : '', + '#default_value' => $prefixes[$langcode] ?? '', '#field_prefix' => $base_url . '/', ]; $form['domain'][$langcode] = [ '#type' => 'textfield', '#title' => $this->t('%language (%langcode) domain', ['%language' => $language->getName(), '%langcode' => $language->getId()]), '#maxlength' => 128, - '#default_value' => isset($domains[$langcode]) ? $domains[$langcode] : '', + '#default_value' => $domains[$langcode] ?? '', ]; } diff --git a/core/modules/language/src/LanguageNegotiator.php b/core/modules/language/src/LanguageNegotiator.php index 40a0d0296d74..c4e083ab1a30 100644 --- a/core/modules/language/src/LanguageNegotiator.php +++ b/core/modules/language/src/LanguageNegotiator.php @@ -189,7 +189,7 @@ protected function negotiateLanguage($type, $method_id) { } $languages = $this->languageManager->getLanguages(); - return isset($languages[$langcode]) ? $languages[$langcode] : NULL; + return $languages[$langcode] ?? NULL; } /** diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationContentEntity.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationContentEntity.php index b78dbb9e4008..34474f35e553 100644 --- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationContentEntity.php +++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationContentEntity.php @@ -188,7 +188,7 @@ protected function hasLowerLanguageNegotiationWeight() { $max_weight = isset($content_method_weights[LanguageNegotiationUrl::METHOD_ID]) ? max($max_weight, $content_method_weights[LanguageNegotiationUrl::METHOD_ID]) : $max_weight; } else { - $max_weight = isset($content_method_weights[LanguageNegotiationUrl::METHOD_ID]) ? $content_method_weights[LanguageNegotiationUrl::METHOD_ID] : PHP_INT_MAX; + $max_weight = $content_method_weights[LanguageNegotiationUrl::METHOD_ID] ?? PHP_INT_MAX; } $this->hasLowerLanguageNegotiationWeightResult = $content_method_weights[static::METHOD_ID] < $max_weight; @@ -214,7 +214,7 @@ protected function hasLowerLanguageNegotiationWeight() { */ protected function meetsContentEntityRoutesCondition(Route $outbound_route, Request $request) { $outbound_path_pattern = $outbound_route->getPath(); - $storage = isset($this->paths[$request]) ? $this->paths[$request] : []; + $storage = $this->paths[$request] ?? []; if (!isset($storage[$outbound_path_pattern])) { $storage[$outbound_path_pattern] = FALSE; diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php index a9dce393aeb7..f36d43e94652 100644 --- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php +++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php @@ -127,7 +127,7 @@ public function getLanguageSwitchLinks(Request $request, $type, Url $url) { $links = []; $config = $this->config->get('language.negotiation')->get('session'); $param = $config['parameter']; - $language_query = isset($_SESSION[$param]) ? $_SESSION[$param] : $this->languageManager->getCurrentLanguage($type)->getId(); + $language_query = $_SESSION[$param] ?? $this->languageManager->getCurrentLanguage($type)->getId(); $query = $request->query->all(); foreach ($this->languageManager->getNativeLanguages() as $language) { diff --git a/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php b/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php index 018ed621f7a3..93827d3e135e 100644 --- a/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php +++ b/core/modules/language/tests/src/Functional/LanguageUrlRewritingTest.php @@ -92,7 +92,7 @@ private function checkUrl(LanguageInterface $language, $message) { $rewritten_path = trim(str_replace($base_path, '', Url::fromRoute('<front>', [], $options)->toString()), '/'); $segments = explode('/', $rewritten_path, 2); $prefix = $segments[0]; - $path = isset($segments[1]) ? $segments[1] : $prefix; + $path = $segments[1] ?? $prefix; // If the rewritten URL has not a language prefix we pick a random prefix so // we can always check the prefixed URL. diff --git a/core/modules/layout_builder/layout_builder.module b/core/modules/layout_builder/layout_builder.module index cc849733e362..6e8d0a25f93a 100644 --- a/core/modules/layout_builder/layout_builder.module +++ b/core/modules/layout_builder/layout_builder.module @@ -144,7 +144,7 @@ function layout_builder_entity_view_alter(array &$build, EntityInterface $entity foreach ($extra_fields['display'] as $field_name => $extra_field) { // If the extra field is not set replace with an empty array to avoid // the placeholder text from being rendered. - $replacement = isset($build[$field_name]) ? $build[$field_name] : []; + $replacement = $build[$field_name] ?? []; ExtraFieldBlock::replaceFieldPlaceholder($build, $replacement, $field_name); // After the rendered field in $build has been copied over to the // ExtraFieldBlock block we must remove it from its original location or diff --git a/core/modules/layout_builder/src/Element/LayoutBuilder.php b/core/modules/layout_builder/src/Element/LayoutBuilder.php index 8bf656475bd5..5c91b1e39208 100644 --- a/core/modules/layout_builder/src/Element/LayoutBuilder.php +++ b/core/modules/layout_builder/src/Element/LayoutBuilder.php @@ -310,7 +310,7 @@ protected function buildAdministrativeSection(SectionStorageInterface $section_s // Get weights of all children for use by the region label. $weights = array_map(function ($a) { - return isset($a['#weight']) ? $a['#weight'] : 0; + return $a['#weight'] ?? 0; }, $build[$region]); // The region label is made visible when the move block dialog is open. diff --git a/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php b/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php index 60948896647a..c0794f9e2707 100644 --- a/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php +++ b/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php @@ -436,7 +436,7 @@ public function setComponent($name, array $options = []) { } $section = $this->getDefaultSection(); - $region = isset($options['region']) ? $options['region'] : $section->getDefaultRegion(); + $region = $options['region'] ?? $section->getDefaultRegion(); $new_component = (new SectionComponent(\Drupal::service('uuid')->generate(), $region, $configuration)); $section->appendComponent($new_component); } diff --git a/core/modules/layout_builder/src/Section.php b/core/modules/layout_builder/src/Section.php index e87bb7c30551..b06f66f5a9b8 100644 --- a/core/modules/layout_builder/src/Section.php +++ b/core/modules/layout_builder/src/Section.php @@ -391,14 +391,14 @@ public function __clone() { * {@inheritdoc} */ public function getThirdPartySetting($provider, $key, $default = NULL) { - return isset($this->thirdPartySettings[$provider][$key]) ? $this->thirdPartySettings[$provider][$key] : $default; + return $this->thirdPartySettings[$provider][$key] ?? $default; } /** * {@inheritdoc} */ public function getThirdPartySettings($provider) { - return isset($this->thirdPartySettings[$provider]) ? $this->thirdPartySettings[$provider] : []; + return $this->thirdPartySettings[$provider] ?? []; } /** diff --git a/core/modules/layout_builder/src/SectionComponent.php b/core/modules/layout_builder/src/SectionComponent.php index 2627ccf1d862..b0f8ff13e4f3 100644 --- a/core/modules/layout_builder/src/SectionComponent.php +++ b/core/modules/layout_builder/src/SectionComponent.php @@ -104,10 +104,10 @@ public function toRenderArray(array $contexts = [], $in_preview = FALSE) { */ public function get($property) { if (property_exists($this, $property)) { - $value = isset($this->{$property}) ? $this->{$property} : NULL; + $value = $this->{$property} ?? NULL; } else { - $value = isset($this->additional[$property]) ? $this->additional[$property] : NULL; + $value = $this->additional[$property] ?? NULL; } return $value; } diff --git a/core/modules/layout_builder/src/SectionStorage/SectionStorageDefinition.php b/core/modules/layout_builder/src/SectionStorage/SectionStorageDefinition.php index eb9e5afc4f06..c97584b39cff 100644 --- a/core/modules/layout_builder/src/SectionStorage/SectionStorageDefinition.php +++ b/core/modules/layout_builder/src/SectionStorage/SectionStorageDefinition.php @@ -60,10 +60,10 @@ public function __construct(array $definition = []) { */ public function get($property) { if (property_exists($this, $property)) { - $value = isset($this->{$property}) ? $this->{$property} : NULL; + $value = $this->{$property} ?? NULL; } else { - $value = isset($this->additional[$property]) ? $this->additional[$property] : NULL; + $value = $this->additional[$property] ?? NULL; } return $value; } diff --git a/core/modules/layout_discovery/layout_discovery.module b/core/modules/layout_discovery/layout_discovery.module index 3eed9fe2f994..ce08617e025d 100644 --- a/core/modules/layout_discovery/layout_discovery.module +++ b/core/modules/layout_discovery/layout_discovery.module @@ -37,8 +37,8 @@ function layout_discovery_theme() { * Properties used: #settings, #layout. */ function template_preprocess_layout(&$variables) { - $variables['settings'] = isset($variables['content']['#settings']) ? $variables['content']['#settings'] : []; - $variables['layout'] = isset($variables['content']['#layout']) ? $variables['content']['#layout'] : []; + $variables['settings'] = $variables['content']['#settings'] ?? []; + $variables['layout'] = $variables['content']['#layout'] ?? []; // Create an attributes variable for each region. foreach (Element::children($variables['content']) as $name) { diff --git a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php index 9bb9f8de5eea..721841f1ae4a 100644 --- a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php +++ b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php @@ -233,7 +233,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen '#type' => 'textfield', '#title' => $this->t('Link text'), '#placeholder' => $this->getSetting('placeholder_title'), - '#default_value' => isset($items[$delta]->title) ? $items[$delta]->title : NULL, + '#default_value' => $items[$delta]->title ?? NULL, '#maxlength' => 255, '#access' => $this->getFieldSetting('title') != DRUPAL_DISABLED, '#required' => $this->getFieldSetting('title') === DRUPAL_REQUIRED && $element['#required'], diff --git a/core/modules/locale/locale.batch.inc b/core/modules/locale/locale.batch.inc index fcc284618fcc..8b3fe6ac434a 100644 --- a/core/modules/locale/locale.batch.inc +++ b/core/modules/locale/locale.batch.inc @@ -63,7 +63,7 @@ function locale_translation_batch_status_check($project, $langcode, array $optio // Update the file object with the result data. In case of a redirect we // store the resulting uri. if (isset($result['last_modified'])) { - $remote_file->uri = isset($result['location']) ? $result['location'] : $remote_file->uri; + $remote_file->uri = $result['location'] ?? $remote_file->uri; $remote_file->timestamp = $result['last_modified']; locale_translation_status_save($source->name, $source->langcode, LOCALE_TRANSLATION_REMOTE, $remote_file); } diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc index dd67e8f2b4ea..b4f70a4be6d6 100644 --- a/core/modules/locale/locale.bulk.inc +++ b/core/modules/locale/locale.bulk.inc @@ -484,7 +484,7 @@ function locale_translate_file_attach_properties($file, array $options = []) { if (isset($matches[5])) { $file->project = $matches[2] . $matches[3]; $file->version = $matches[4]; - $file->langcode = isset($options['langcode']) ? $options['langcode'] : $matches[5]; + $file->langcode = $options['langcode'] ?? $matches[5]; } else { $file->langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED; @@ -634,7 +634,7 @@ function locale_config_batch_refresh_name(array $names, array $langcodes, &$cont */ function locale_config_batch_finished($success, array $results) { if ($success) { - $configuration = isset($results['stats']['config']) ? $results['stats']['config'] : 0; + $configuration = $results['stats']['config'] ?? 0; if ($configuration) { \Drupal::messenger()->addStatus(t('The configuration was successfully updated. There are %number configuration objects updated.', ['%number' => $configuration])); \Drupal::logger('locale')->notice('The configuration was successfully updated. %number configuration objects updated.', ['%number' => $configuration]); diff --git a/core/modules/locale/locale.compare.inc b/core/modules/locale/locale.compare.inc index 1c81cc87f9a4..9b0209fd57ac 100644 --- a/core/modules/locale/locale.compare.inc +++ b/core/modules/locale/locale.compare.inc @@ -69,7 +69,7 @@ function locale_translation_build_projects() { // For every project store information. $data += [ 'name' => $name, - 'version' => isset($data['info']['version']) ? $data['info']['version'] : '', + 'version' => $data['info']['version'] ?? '', 'core' => 'all', // A project can provide the path and filename pattern to download the // gettext file. Use the default if not. diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module index e1ac093d629e..c781ec0f46ec 100644 --- a/core/modules/locale/locale.module +++ b/core/modules/locale/locale.module @@ -298,7 +298,7 @@ function locale_get_plural($count, $langcode = NULL) { // modulo used but storing 0-99 is not enough because below 100 we often // find exceptions (1, 2, etc). $index = $count > 199 ? 100 + ($count % 100) : $count; - $plural_indexes[$langcode][$count] = isset($plural_formulas[$index]) ? $plural_formulas[$index] : $plural_formulas['default']; + $plural_indexes[$langcode][$count] = $plural_formulas[$index] ?? $plural_formulas['default']; } // In case there is no plural formula for English (no imported translation // for English), use a default formula. diff --git a/core/modules/locale/locale.translation.inc b/core/modules/locale/locale.translation.inc index 2672d5c38a56..74667cf1fe3a 100644 --- a/core/modules/locale/locale.translation.inc +++ b/core/modules/locale/locale.translation.inc @@ -112,7 +112,7 @@ function locale_translation_load_sources(array $projects = NULL, array $langcode // Use only the selected projects and languages for update. foreach ($projects as $project) { foreach ($langcodes as $langcode) { - $sources[$project][$langcode] = isset($status[$project][$langcode]) ? $status[$project][$langcode] : NULL; + $sources[$project][$langcode] = $status[$project][$langcode] ?? NULL; } } return $sources; @@ -318,7 +318,7 @@ function locale_translation_build_server_pattern($project, $template) { '%project' => $project->name, '%version' => $project->version, '%core' => $project->core, - '%language' => isset($project->langcode) ? $project->langcode : '%language', + '%language' => $project->langcode ?? '%language', ]; return strtr($template, $variables); } diff --git a/core/modules/locale/src/Form/TranslateEditForm.php b/core/modules/locale/src/Form/TranslateEditForm.php index aa2f74bc4a6e..18b8f834b357 100644 --- a/core/modules/locale/src/Form/TranslateEditForm.php +++ b/core/modules/locale/src/Form/TranslateEditForm.php @@ -128,7 +128,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { // @todo Should use better labels https://www.drupal.org/node/2499639 '#title' => ($i == 0 ? $this->t('Singular form') : $this->formatPlural($i, 'First plural form', '@count. plural form')), '#rows' => $rows, - '#default_value' => isset($translation_array[$i]) ? $translation_array[$i] : '', + '#default_value' => $translation_array[$i] ?? '', '#attributes' => ['lang' => $langcode], '#prefix' => $i == 0 ? ('<span class="visually-hidden">' . $this->t('Translated string (@language)', ['@language' => $langname]) . '</span>') : '', ]; @@ -207,7 +207,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { if ($is_changed) { // Only update or insert if we have a value to use. - $target = isset($existing_translation_objects[$lid]) ? $existing_translation_objects[$lid] : $this->localeStorage->createTranslation(['lid' => $lid, 'language' => $langcode]); + $target = $existing_translation_objects[$lid] ?? $this->localeStorage->createTranslation(['lid' => $lid, 'language' => $langcode]); $target->setPlurals($new_translation['translations']) ->setCustomized() ->save(); diff --git a/core/modules/locale/src/Form/TranslateFilterForm.php b/core/modules/locale/src/Form/TranslateFilterForm.php index 2186187ad61a..649499377796 100644 --- a/core/modules/locale/src/Form/TranslateFilterForm.php +++ b/core/modules/locale/src/Form/TranslateFilterForm.php @@ -43,7 +43,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { ]; } else { - $empty_option = isset($filter['options'][$filter['default']]) ? $filter['options'][$filter['default']] : '- None -'; + $empty_option = $filter['options'][$filter['default']] ?? '- None -'; $form['filters']['status'][$key] = [ '#title' => $filter['title'], '#type' => 'select', diff --git a/core/modules/locale/src/Form/TranslationStatusForm.php b/core/modules/locale/src/Form/TranslationStatusForm.php index 4ac817c784dc..e354153dfd75 100644 --- a/core/modules/locale/src/Form/TranslationStatusForm.php +++ b/core/modules/locale/src/Form/TranslationStatusForm.php @@ -207,8 +207,8 @@ protected function prepareUpdateData(array $status) { } // Translation update found for this project-language combination. elseif ($project_info->type == LOCALE_TRANSLATION_LOCAL || $project_info->type == LOCALE_TRANSLATION_REMOTE) { - $local = isset($project_info->files[LOCALE_TRANSLATION_LOCAL]) ? $project_info->files[LOCALE_TRANSLATION_LOCAL] : NULL; - $remote = isset($project_info->files[LOCALE_TRANSLATION_REMOTE]) ? $project_info->files[LOCALE_TRANSLATION_REMOTE] : NULL; + $local = $project_info->files[LOCALE_TRANSLATION_LOCAL] ?? NULL; + $remote = $project_info->files[LOCALE_TRANSLATION_REMOTE] ?? NULL; $recent = _locale_translation_source_compare($local, $remote) == LOCALE_TRANSLATION_SOURCE_COMPARE_LT ? $remote : $local; $updates[$langcode]['updates'][] = [ 'name' => $project_info->name == 'drupal' ? $this->t('Drupal core') : $project_data[$project_info->name]->info['name'], @@ -237,8 +237,8 @@ protected function prepareUpdateData(array $status) { * The string which contains debug information. */ protected function createInfoString($project_info) { - $remote_path = isset($project_info->files['remote']->uri) ? $project_info->files['remote']->uri : FALSE; - $local_path = isset($project_info->files['local']->uri) ? $project_info->files['local']->uri : FALSE; + $remote_path = $project_info->files['remote']->uri ?? FALSE; + $local_path = $project_info->files['local']->uri ?? FALSE; if (locale_translation_use_remote_source() && $remote_path && $local_path) { return $this->t('File not found at %remote_path nor at %local_path', [ diff --git a/core/modules/locale/src/LocaleConfigSubscriber.php b/core/modules/locale/src/LocaleConfigSubscriber.php index 289e838e0545..2817251a829c 100644 --- a/core/modules/locale/src/LocaleConfigSubscriber.php +++ b/core/modules/locale/src/LocaleConfigSubscriber.php @@ -149,7 +149,7 @@ protected function processTranslatableData($name, array $config, array $translat continue; } if (is_array($item)) { - $reference_config_item = isset($reference_config[$key]) ? $reference_config[$key] : []; + $reference_config_item = $reference_config[$key] ?? []; $this->processTranslatableData($name, $config[$key], $item, $langcode, $reference_config_item); } else { diff --git a/core/modules/locale/src/LocaleProjectStorage.php b/core/modules/locale/src/LocaleProjectStorage.php index 05faa17db31e..8147b4c0eb4c 100644 --- a/core/modules/locale/src/LocaleProjectStorage.php +++ b/core/modules/locale/src/LocaleProjectStorage.php @@ -45,7 +45,7 @@ public function __construct(KeyValueFactoryInterface $key_value_factory) { */ public function get($key, $default = NULL) { $values = $this->getMultiple([$key]); - return isset($values[$key]) ? $values[$key] : $default; + return $values[$key] ?? $default; } /** diff --git a/core/modules/locale/src/PluralFormula.php b/core/modules/locale/src/PluralFormula.php index 8f1920e64930..0913a69cdaf7 100644 --- a/core/modules/locale/src/PluralFormula.php +++ b/core/modules/locale/src/PluralFormula.php @@ -86,7 +86,7 @@ public function getNumberOfPlurals($langcode = NULL) { */ public function getFormula($langcode) { $this->loadFormulae(); - return isset($this->formulae[$langcode]['formula']) ? $this->formulae[$langcode]['formula'] : FALSE; + return $this->formulae[$langcode]['formula'] ?? FALSE; } /** diff --git a/core/modules/locale/src/SourceString.php b/core/modules/locale/src/SourceString.php index dd59954bf7c1..94cd6413a2df 100644 --- a/core/modules/locale/src/SourceString.php +++ b/core/modules/locale/src/SourceString.php @@ -29,7 +29,7 @@ public function isTranslation() { * {@inheritdoc} */ public function getString() { - return isset($this->source) ? $this->source : ''; + return $this->source ?? ''; } /** diff --git a/core/modules/locale/src/StringBase.php b/core/modules/locale/src/StringBase.php index 55572d07d51a..832d1965b0fa 100644 --- a/core/modules/locale/src/StringBase.php +++ b/core/modules/locale/src/StringBase.php @@ -67,7 +67,7 @@ public function __construct($values = []) { * {@inheritdoc} */ public function getId() { - return isset($this->lid) ? $this->lid : NULL; + return $this->lid ?? NULL; } /** @@ -82,7 +82,7 @@ public function setId($lid) { * {@inheritdoc} */ public function getVersion() { - return isset($this->version) ? $this->version : NULL; + return $this->version ?? NULL; } /** @@ -112,7 +112,7 @@ public function setPlurals($plurals) { * {@inheritdoc} */ public function getStorage() { - return isset($this->storage) ? $this->storage : NULL; + return $this->storage ?? NULL; } /** @@ -158,7 +158,7 @@ public function getLocations($check_only = FALSE) { $this->locations[$location->type][$location->name] = $location->lid; } } - return isset($this->locations) ? $this->locations : []; + return $this->locations ?? []; } /** diff --git a/core/modules/locale/src/TranslationString.php b/core/modules/locale/src/TranslationString.php index c32d23f2d25f..ac8ef1440b52 100644 --- a/core/modules/locale/src/TranslationString.php +++ b/core/modules/locale/src/TranslationString.php @@ -84,7 +84,7 @@ public function isTranslation() { * {@inheritdoc} */ public function getString() { - return isset($this->translation) ? $this->translation : ''; + return $this->translation ?? ''; } /** diff --git a/core/modules/media/media.module b/core/modules/media/media.module index 0dc9bd20a771..b4d3112e9c6d 100644 --- a/core/modules/media/media.module +++ b/core/modules/media/media.module @@ -271,7 +271,7 @@ function media_field_widget_complete_form_alter(array &$field_widget_complete_fo // Use the title set on the element if it exists, otherwise fall back to the // field label. - $elements['#media_help']['#original_label'] = isset($elements['#title']) ? $elements['#title'] : $context['items']->getFieldDefinition()->getLabel(); + $elements['#media_help']['#original_label'] = $elements['#title'] ?? $context['items']->getFieldDefinition()->getLabel(); // Customize the label for the field widget. // @todo Research a better approach https://www.drupal.org/node/2943024. @@ -316,7 +316,7 @@ function media_preprocess_media_reference_help(&$variables) { $element = $variables['element']; Element::setAttributes($element, ['id']); RenderElement::setAttributes($element); - $variables['attributes'] = isset($element['#attributes']) ? $element['#attributes'] : []; + $variables['attributes'] = $element['#attributes'] ?? []; $variables['legend_attributes'] = new Attribute(); $variables['header_attributes'] = new Attribute(); $variables['description']['attributes'] = new Attribute(); diff --git a/core/modules/media/src/Form/EditorMediaDialog.php b/core/modules/media/src/Form/EditorMediaDialog.php index ca8b7671a0f6..65f2d5986505 100644 --- a/core/modules/media/src/Form/EditorMediaDialog.php +++ b/core/modules/media/src/Form/EditorMediaDialog.php @@ -135,7 +135,7 @@ public function buildForm(array $form, FormStateInterface $form_state, EditorInt $media = $media->getTranslation($editor_object['hostEntityLangcode']); } $settings = $media->{$image_field_name}->getItemDefinition()->getSettings(); - $alt = isset($media_embed_element['alt']) ? $media_embed_element['alt'] : NULL; + $alt = $media_embed_element['alt'] ?? NULL; $form['alt'] = [ '#type' => 'textfield', '#title' => $this->t('Alternate text'), diff --git a/core/modules/media/src/MediaSourceBase.php b/core/modules/media/src/MediaSourceBase.php index 5cc284835e60..df21b94c3834 100644 --- a/core/modules/media/src/MediaSourceBase.php +++ b/core/modules/media/src/MediaSourceBase.php @@ -258,7 +258,7 @@ protected function getSourceFieldStorage() { // Even if we do know the name of the source field, there's no // guarantee that it exists. $fields = $this->entityFieldManager->getFieldStorageDefinitions('media'); - return isset($fields[$field]) ? $fields[$field] : NULL; + return $fields[$field] ?? NULL; } return NULL; } @@ -273,7 +273,7 @@ public function getSourceFieldDefinition(MediaTypeInterface $type) { // Even if we do know the name of the source field, there is no // guarantee that it already exists. $fields = $this->entityFieldManager->getFieldDefinitions('media', $type->id()); - return isset($fields[$field]) ? $fields[$field] : NULL; + return $fields[$field] ?? NULL; } return NULL; } diff --git a/core/modules/media/src/MediaTypeForm.php b/core/modules/media/src/MediaTypeForm.php index 289fc8aad080..ded58b036c86 100644 --- a/core/modules/media/src/MediaTypeForm.php +++ b/core/modules/media/src/MediaTypeForm.php @@ -188,7 +188,7 @@ public function form(array $form, FormStateInterface $form_state) { '#type' => 'select', '#title' => $metadata_attribute_label, '#options' => $options, - '#default_value' => isset($field_map[$metadata_attribute_name]) ? $field_map[$metadata_attribute_name] : MediaSourceInterface::METADATA_FIELD_EMPTY, + '#default_value' => $field_map[$metadata_attribute_name] ?? MediaSourceInterface::METADATA_FIELD_EMPTY, ]; } } diff --git a/core/modules/media_library/src/Form/AddFormBase.php b/core/modules/media_library/src/Form/AddFormBase.php index a63bc7dc875f..83742a3a172d 100644 --- a/core/modules/media_library/src/Form/AddFormBase.php +++ b/core/modules/media_library/src/Form/AddFormBase.php @@ -255,7 +255,7 @@ protected function buildEntityFormElement(MediaInterface $media, array $form, Fo // triggering element is not set correctly and the wrong media item is // removed. // @see ::removeButtonSubmit() - $parents = isset($form['#parents']) ? $form['#parents'] : []; + $parents = $form['#parents'] ?? []; $id_suffix = $parents ? '-' . implode('-', $parents) : ''; $element = [ diff --git a/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php index 1d890c974d3a..017c99e65be0 100644 --- a/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php +++ b/core/modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php @@ -138,7 +138,7 @@ protected function getAllowedMediaTypeIdsSorted() { $handler_settings = $this->getFieldSetting('handler_settings'); // The target bundles will be blank when saving field storage settings, // when first adding a media reference field. - $allowed_media_type_ids = isset($handler_settings['target_bundles']) ? $handler_settings['target_bundles'] : NULL; + $allowed_media_type_ids = $handler_settings['target_bundles'] ?? NULL; // When there are no allowed media types, return the empty array. if ($allowed_media_type_ids === []) { @@ -238,7 +238,7 @@ public function settingsForm(array $form, FormStateInterface $form_state) { */ public static function setMediaTypesValue(array &$element, $input, FormStateInterface $form_state) { if ($input === FALSE) { - return isset($element['#default_value']) ? $element['#default_value'] : []; + return $element['#default_value'] ?? []; } // Sort the media types by weight value and set the value in the form state. @@ -305,7 +305,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen $element += [ '#type' => 'fieldset', '#cardinality' => $this->fieldDefinition->getFieldStorageDefinition()->getCardinality(), - '#target_bundles' => isset($settings['target_bundles']) ? $settings['target_bundles'] : FALSE, + '#target_bundles' => $settings['target_bundles'] ?? FALSE, '#attributes' => [ 'id' => $wrapper_id, 'class' => ['js-media-library-widget'], @@ -636,7 +636,7 @@ protected function getNoMediaTypesAvailableMessage() { * {@inheritdoc} */ public function errorElement(array $element, ConstraintViolationInterface $error, array $form, FormStateInterface $form_state) { - return isset($element['target_id']) ? $element['target_id'] : FALSE; + return $element['target_id'] ?? FALSE; } /** @@ -920,10 +920,10 @@ protected static function getFieldState(array $element, FormStateInterface $form // is used, the unvalidated user input is not added to the form state. // @see FormValidator::handleErrorsWithLimitedValidation() $values = NestedArray::getValue($form_state->getUserInput(), $path); - $selection = isset($values['selection']) ? $values['selection'] : []; + $selection = $values['selection'] ?? []; $widget_state = static::getWidgetState($element['#field_parents'], $element['#field_name'], $form_state); - $widget_state['items'] = isset($widget_state['items']) ? $widget_state['items'] : $selection; + $widget_state['items'] = $widget_state['items'] ?? $selection; return $widget_state; } diff --git a/core/modules/menu_link_content/src/Plugin/Menu/MenuLinkContent.php b/core/modules/menu_link_content/src/Plugin/Menu/MenuLinkContent.php index 0aec98069ce2..83a2a086f2a0 100644 --- a/core/modules/menu_link_content/src/Plugin/Menu/MenuLinkContent.php +++ b/core/modules/menu_link_content/src/Plugin/Menu/MenuLinkContent.php @@ -134,7 +134,7 @@ protected function getEntity() { // multiple IDs added earlier in each plugin's constructor. static::$entityIdsToLoad[$entity_id] = $entity_id; $entities = $storage->loadMultiple(array_values(static::$entityIdsToLoad)); - $entity = isset($entities[$entity_id]) ? $entities[$entity_id] : NULL; + $entity = $entities[$entity_id] ?? NULL; static::$entityIdsToLoad = []; } if (!$entity) { diff --git a/core/modules/menu_link_content/tests/src/Kernel/MenuLinksTest.php b/core/modules/menu_link_content/tests/src/Kernel/MenuLinksTest.php index afe0aee563e3..61279cb7a76c 100644 --- a/core/modules/menu_link_content/tests/src/Kernel/MenuLinksTest.php +++ b/core/modules/menu_link_content/tests/src/Kernel/MenuLinksTest.php @@ -125,7 +125,7 @@ public function assertMenuLinkParents($links, $expected_hierarchy) { foreach ($expected_hierarchy as $id => $parent) { /** @var \Drupal\Core\Menu\MenuLinkInterface $menu_link_plugin */ $menu_link_plugin = $this->menuLinkManager->createInstance($links[$id]); - $expected_parent = isset($links[$parent]) ? $links[$parent] : ''; + $expected_parent = $links[$parent] ?? ''; $this->assertEquals($expected_parent, $menu_link_plugin->getParent(), new FormattableMarkup('Menu link %id has parent of %parent, expected %expected_parent.', ['%id' => $id, '%parent' => $menu_link_plugin->getParent(), '%expected_parent' => $expected_parent])); } diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module index 090567541ee2..aaa740624153 100644 --- a/core/modules/menu_ui/menu_ui.module +++ b/core/modules/menu_ui/menu_ui.module @@ -114,7 +114,7 @@ function _menu_ui_node_save(NodeInterface $node, array $values) { $entity->description->value = trim($values['description']); $entity->menu_name->value = $values['menu_name']; $entity->parent->value = $values['parent']; - $entity->weight->value = isset($values['weight']) ? $values['weight'] : 0; + $entity->weight->value = $values['weight'] ?? 0; $entity->isDefaultRevision($node->isDefaultRevision()); $entity->save(); } diff --git a/core/modules/migrate/src/MigrateMessage.php b/core/modules/migrate/src/MigrateMessage.php index 4cc166c81c55..bcf73ad537f8 100644 --- a/core/modules/migrate/src/MigrateMessage.php +++ b/core/modules/migrate/src/MigrateMessage.php @@ -23,7 +23,7 @@ class MigrateMessage implements MigrateMessageInterface { * {@inheritdoc} */ public function display($message, $type = 'status') { - $type = isset($this->map[$type]) ? $this->map[$type] : RfcLogLevel::NOTICE; + $type = $this->map[$type] ?? RfcLogLevel::NOTICE; \Drupal::logger('migrate')->log($type, $message); } diff --git a/core/modules/migrate/src/Plugin/Migration.php b/core/modules/migrate/src/Plugin/Migration.php index 021edfd6ba72..0891311cfa46 100644 --- a/core/modules/migrate/src/Plugin/Migration.php +++ b/core/modules/migrate/src/Plugin/Migration.php @@ -412,7 +412,7 @@ public function getDestinationPlugin($stub_being_requested = FALSE) { public function getIdMap() { if (!isset($this->idMapPlugin)) { $configuration = $this->idMap; - $plugin = isset($configuration['plugin']) ? $configuration['plugin'] : 'sql'; + $plugin = $configuration['plugin'] ?? 'sql'; $this->idMapPlugin = $this->idMapPluginManager->createInstance($plugin, $configuration, $this); } return $this->idMapPlugin; @@ -657,7 +657,7 @@ public function getPluginDefinition() { // While normal plugins do not change their definitions on the fly, this // one does so accommodate for that. foreach (parent::getPluginDefinition() as $key => $value) { - $definition[$key] = isset($this->$key) ? $this->$key : $value; + $definition[$key] = $this->$key ?? $value; } return $definition; } diff --git a/core/modules/migrate/src/Plugin/MigrationPluginManager.php b/core/modules/migrate/src/Plugin/MigrationPluginManager.php index bb4f6c0be8ba..6f53b87f5043 100644 --- a/core/modules/migrate/src/Plugin/MigrationPluginManager.php +++ b/core/modules/migrate/src/Plugin/MigrationPluginManager.php @@ -108,7 +108,7 @@ public function createInstances($migration_id, array $configuration = []) { $instances = []; foreach ($plugin_ids as $plugin_id) { - $instances[$plugin_id] = $factory->createInstance($plugin_id, isset($configuration[$plugin_id]) ? $configuration[$plugin_id] : []); + $instances[$plugin_id] = $factory->createInstance($plugin_id, $configuration[$plugin_id] ?? []); } foreach ($instances as $migration) { @@ -226,7 +226,7 @@ public function buildDependencyMigration(array $migrations, array $dynamic_ids) * The dynamic ID mapping. */ protected function addDependency(array &$graph, $id, $dependency, $dynamic_ids) { - $dependencies = isset($dynamic_ids[$dependency]) ? $dynamic_ids[$dependency] : [$dependency]; + $dependencies = $dynamic_ids[$dependency] ?? [$dependency]; if (!isset($graph[$id]['edges'])) { $graph[$id]['edges'] = []; } @@ -237,7 +237,7 @@ protected function addDependency(array &$graph, $id, $dependency, $dynamic_ids) * {@inheritdoc} */ public function createStubMigration(array $definition) { - $id = isset($definition['id']) ? $definition['id'] : uniqid(); + $id = $definition['id'] ?? uniqid(); return Migration::create(\Drupal::getContainer(), [], $id, $definition); } diff --git a/core/modules/migrate/src/Plugin/migrate/destination/Entity.php b/core/modules/migrate/src/Plugin/migrate/destination/Entity.php index d96bfab70dcb..0e9668b54f27 100644 --- a/core/modules/migrate/src/Plugin/migrate/destination/Entity.php +++ b/core/modules/migrate/src/Plugin/migrate/destination/Entity.php @@ -129,7 +129,7 @@ public static function create(ContainerInterface $container, array $configuratio * The bundle for this row. */ public function getBundle(Row $row) { - $default_bundle = isset($this->configuration['default_bundle']) ? $this->configuration['default_bundle'] : ''; + $default_bundle = $this->configuration['default_bundle'] ?? ''; $bundle_key = $this->getKey('bundle'); return $row->getDestinationProperty($bundle_key) ?: $default_bundle; } diff --git a/core/modules/migrate/src/Plugin/migrate/process/Concat.php b/core/modules/migrate/src/Plugin/migrate/process/Concat.php index 3490ae81e318..801d65d6c469 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/Concat.php +++ b/core/modules/migrate/src/Plugin/migrate/process/Concat.php @@ -63,7 +63,7 @@ class Concat extends ProcessPluginBase { */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { if (is_array($value)) { - $delimiter = isset($this->configuration['delimiter']) ? $this->configuration['delimiter'] : ''; + $delimiter = $this->configuration['delimiter'] ?? ''; return implode($delimiter, $value); } else { diff --git a/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php b/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php index b6f3839df8cf..05229f03d1b7 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php +++ b/core/modules/migrate/src/Plugin/migrate/process/DefaultValue.php @@ -53,7 +53,7 @@ class DefaultValue extends ProcessPluginBase { */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { if (!empty($this->configuration['strict'])) { - return isset($value) ? $value : $this->configuration['default_value']; + return $value ?? $this->configuration['default_value']; } return $value ?: $this->configuration['default_value']; } diff --git a/core/modules/migrate/src/Plugin/migrate/process/Explode.php b/core/modules/migrate/src/Plugin/migrate/process/Explode.php index 536a9e1b0ab8..b2051c2a5b51 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/Explode.php +++ b/core/modules/migrate/src/Plugin/migrate/process/Explode.php @@ -117,7 +117,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable } } - $limit = isset($this->configuration['limit']) ? $this->configuration['limit'] : PHP_INT_MAX; + $limit = $this->configuration['limit'] ?? PHP_INT_MAX; return explode($this->configuration['delimiter'], $value, $limit); } diff --git a/core/modules/migrate/src/Plugin/migrate/process/FormatDate.php b/core/modules/migrate/src/Plugin/migrate/process/FormatDate.php index e5d14efe7a64..4cb76c801e43 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/FormatDate.php +++ b/core/modules/migrate/src/Plugin/migrate/process/FormatDate.php @@ -112,9 +112,9 @@ public function transform($value, MigrateExecutableInterface $migrate_executable $toFormat = $this->configuration['to_format']; $system_timezone = date_default_timezone_get(); $default_timezone = !empty($system_timezone) ? $system_timezone : 'UTC'; - $from_timezone = isset($this->configuration['from_timezone']) ? $this->configuration['from_timezone'] : $default_timezone; - $to_timezone = isset($this->configuration['to_timezone']) ? $this->configuration['to_timezone'] : $default_timezone; - $settings = isset($this->configuration['settings']) ? $this->configuration['settings'] : []; + $from_timezone = $this->configuration['from_timezone'] ?? $default_timezone; + $to_timezone = $this->configuration['to_timezone'] ?? $default_timezone; + $settings = $this->configuration['settings'] ?? []; // Older versions of Drupal where omitting certain granularity values (also // known as "collected date attributes") resulted in invalid timestamps diff --git a/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueBase.php b/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueBase.php index 861a6b6f8890..ee421b08466c 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueBase.php +++ b/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueBase.php @@ -45,12 +45,12 @@ abstract class MakeUniqueBase extends ProcessPluginBase { */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { $i = 1; - $postfix = isset($this->configuration['postfix']) ? $this->configuration['postfix'] : ''; - $start = isset($this->configuration['start']) ? $this->configuration['start'] : 0; + $postfix = $this->configuration['postfix'] ?? ''; + $start = $this->configuration['start'] ?? 0; if (!is_int($start)) { throw new MigrateException('The start position configuration key should be an integer. Omit this key to capture from the beginning of the string.'); } - $length = isset($this->configuration['length']) ? $this->configuration['length'] : NULL; + $length = $this->configuration['length'] ?? NULL; if (!is_null($length) && !is_int($length)) { throw new MigrateException('The character length configuration key should be an integer. Omit this key to capture the entire string.'); } diff --git a/core/modules/migrate/src/Plugin/migrate/process/Substr.php b/core/modules/migrate/src/Plugin/migrate/process/Substr.php index d97c3ba51a78..45835f153cde 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/Substr.php +++ b/core/modules/migrate/src/Plugin/migrate/process/Substr.php @@ -71,11 +71,11 @@ class Substr extends ProcessPluginBase { * {@inheritdoc} */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - $start = isset($this->configuration['start']) ? $this->configuration['start'] : 0; + $start = $this->configuration['start'] ?? 0; if (!is_int($start)) { throw new MigrateException('The start position configuration value should be an integer. Omit this key to capture from the beginning of the string.'); } - $length = isset($this->configuration['length']) ? $this->configuration['length'] : NULL; + $length = $this->configuration['length'] ?? NULL; if ($length !== NULL && !is_int($length)) { throw new MigrateException('The character length configuration value should be an integer. Omit this key to capture from the start position to the end of the string.'); } diff --git a/core/modules/migrate_drupal/src/FieldDiscovery.php b/core/modules/migrate_drupal/src/FieldDiscovery.php index 176988532440..f1c4745ece90 100644 --- a/core/modules/migrate_drupal/src/FieldDiscovery.php +++ b/core/modules/migrate_drupal/src/FieldDiscovery.php @@ -143,7 +143,7 @@ public function addBundleFieldProcesses(MigrationInterface $migration, $entity_t foreach ($bundle_fields as $field_name => $field_info) { $plugin = $this->getFieldPlugin($field_info['type'], $migration); if ($plugin) { - $method = isset($plugin_definition['field_plugin_method']) ? $plugin_definition['field_plugin_method'] : 'defineValueProcessPipeline'; + $method = $plugin_definition['field_plugin_method'] ?? 'defineValueProcessPipeline'; call_user_func_array([ $plugin, diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php index 428bfd2b42cd..0df37ea25641 100644 --- a/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php +++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/DrupalSqlBase.php @@ -133,7 +133,7 @@ public function checkRequirements() { */ protected function getModuleSchemaVersion($module) { $system_data = $this->getSystemData(); - return isset($system_data['module'][$module]['schema_version']) ? $system_data['module'][$module]['schema_version'] : FALSE; + return $system_data['module'][$module]['schema_version'] ?? FALSE; } /** diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/FieldableEntity.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/FieldableEntity.php index 176749480b54..4ddc36e84715 100644 --- a/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/FieldableEntity.php +++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/FieldableEntity.php @@ -40,7 +40,7 @@ protected function getFields($entity_type, $bundle = NULL) { $query = $this->select('field_config_instance', 'fci') ->fields('fci') ->condition('fci.entity_type', $entity_type) - ->condition('fci.bundle', isset($bundle) ? $bundle : $entity_type) + ->condition('fci.bundle', $bundle ?? $entity_type) ->condition('fci.deleted', 0); // Join the 'field_config' table and add the 'translatable' setting to the diff --git a/core/modules/node/src/Plugin/Search/NodeSearch.php b/core/modules/node/src/Plugin/Search/NodeSearch.php index b23112ae31f3..5412541a49b7 100644 --- a/core/modules/node/src/Plugin/Search/NodeSearch.php +++ b/core/modules/node/src/Plugin/Search/NodeSearch.php @@ -446,7 +446,7 @@ protected function addNodeRankings(SelectExtender $query) { if (isset($values['join']) && !isset($tables[$values['join']['alias']])) { $query->addJoin($values['join']['type'], $values['join']['table'], $values['join']['alias'], $values['join']['on']); } - $arguments = isset($values['arguments']) ? $values['arguments'] : []; + $arguments = $values['arguments'] ?? []; $query->addScore($values['score'], $arguments, $node_rank); } } @@ -604,7 +604,7 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) { '#title' => t('Containing any of the words'), '#size' => 30, '#maxlength' => 255, - '#default_value' => isset($defaults['or']) ? $defaults['or'] : '', + '#default_value' => $defaults['or'] ?? '', ]; $form['advanced']['keywords-fieldset']['keywords']['phrase'] = [ @@ -612,7 +612,7 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) { '#title' => t('Containing the phrase'), '#size' => 30, '#maxlength' => 255, - '#default_value' => isset($defaults['phrase']) ? $defaults['phrase'] : '', + '#default_value' => $defaults['phrase'] ?? '', ]; $form['advanced']['keywords-fieldset']['keywords']['negative'] = [ @@ -620,7 +620,7 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) { '#title' => t('Containing none of the words'), '#size' => 30, '#maxlength' => 255, - '#default_value' => isset($defaults['negative']) ? $defaults['negative'] : '', + '#default_value' => $defaults['negative'] ?? '', ]; // Add node types. @@ -635,7 +635,7 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) { '#prefix' => '<div class="criterion">', '#suffix' => '</div>', '#options' => $types, - '#default_value' => isset($defaults['type']) ? $defaults['type'] : [], + '#default_value' => $defaults['type'] ?? [], ]; $form['advanced']['submit'] = [ @@ -664,7 +664,7 @@ public function searchFormAlter(array &$form, FormStateInterface $form_state) { '#prefix' => '<div class="criterion">', '#suffix' => '</div>', '#options' => $language_options, - '#default_value' => isset($defaults['language']) ? $defaults['language'] : [], + '#default_value' => $defaults['language'] ?? [], ]; } } @@ -847,7 +847,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta '#type' => 'select', '#options' => $options, '#attributes' => ['aria-label' => $this->t("Influence of '@title'", ['@title' => $values['title']])], - '#default_value' => isset($this->configuration['rankings'][$var]) ? $this->configuration['rankings'][$var] : 0, + '#default_value' => $this->configuration['rankings'][$var] ?? 0, ]; } return $form; diff --git a/core/modules/node/src/Plugin/migrate/source/d6/Node.php b/core/modules/node/src/Plugin/migrate/source/d6/Node.php index e120ef9cc671..a1a3166420e6 100644 --- a/core/modules/node/src/Plugin/migrate/source/d6/Node.php +++ b/core/modules/node/src/Plugin/migrate/source/d6/Node.php @@ -255,7 +255,7 @@ protected function getFieldInfo($node_type) { } } - return isset($this->fieldInfo[$node_type]) ? $this->fieldInfo[$node_type] : []; + return $this->fieldInfo[$node_type] ?? []; } /** diff --git a/core/modules/node/src/Plugin/migrate/source/d6/NodeType.php b/core/modules/node/src/Plugin/migrate/source/d6/NodeType.php index 1238e0ee981d..c741e2742fa0 100644 --- a/core/modules/node/src/Plugin/migrate/source/d6/NodeType.php +++ b/core/modules/node/src/Plugin/migrate/source/d6/NodeType.php @@ -132,7 +132,7 @@ public function prepareRow(Row $row) { $options[$item] = in_array($item, $source_options); } $row->setSourceProperty('options', $options); - $submitted = isset($this->themeSettings['toggle_node_info_' . $type]) ? $this->themeSettings['toggle_node_info_' . $type] : FALSE; + $submitted = $this->themeSettings['toggle_node_info_' . $type] ?? FALSE; $row->setSourceProperty('display_submitted', $submitted); if ($default_node_menu = $this->variableGet('menu_default_node_menu', NULL)) { diff --git a/core/modules/node/src/Plugin/views/field/Node.php b/core/modules/node/src/Plugin/views/field/Node.php index ae35363e270e..f81777e42199 100644 --- a/core/modules/node/src/Plugin/views/field/Node.php +++ b/core/modules/node/src/Plugin/views/field/Node.php @@ -37,7 +37,7 @@ public function init(ViewExecutable $view, DisplayPluginBase $display, array &$o */ protected function defineOptions() { $options = parent::defineOptions(); - $options['link_to_node'] = ['default' => isset($this->definition['link_to_node default']) ? $this->definition['link_to_node default'] : FALSE]; + $options['link_to_node'] = ['default' => $this->definition['link_to_node default'] ?? FALSE]; return $options; } diff --git a/core/modules/options/src/Plugin/Field/FieldFormatter/OptionsDefaultFormatter.php b/core/modules/options/src/Plugin/Field/FieldFormatter/OptionsDefaultFormatter.php index 5ad9539d3ea4..228352045465 100644 --- a/core/modules/options/src/Plugin/Field/FieldFormatter/OptionsDefaultFormatter.php +++ b/core/modules/options/src/Plugin/Field/FieldFormatter/OptionsDefaultFormatter.php @@ -40,7 +40,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) { $value = $item->value; // If the stored value is in the current set of allowed values, display // the associated label, otherwise just display the raw value. - $output = isset($options[$value]) ? $options[$value] : $value; + $output = $options[$value] ?? $value; $elements[$delta] = [ '#markup' => $output, '#allowed_tags' => FieldFilteredMarkup::allowedTags(), diff --git a/core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php b/core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php index 74ed9652d962..b982d2b34820 100644 --- a/core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php +++ b/core/modules/path/src/Plugin/migrate/process/PathSetTranslated.php @@ -64,7 +64,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable throw new MigrateException("The input value should be an array."); } - $path = isset($value[0]) ? $value[0] : ''; + $path = $value[0] ?? ''; $nid = (is_array($value[1]) && isset($value[1][0])) ? $value[1][0] : FALSE; if (preg_match('/^\/node\/\d+$/', $path) && $nid) { return '/node/' . $nid; diff --git a/core/modules/rdf/rdf.module b/core/modules/rdf/rdf.module index 1c003a51639b..69b5f724ebdd 100644 --- a/core/modules/rdf/rdf.module +++ b/core/modules/rdf/rdf.module @@ -170,7 +170,7 @@ function rdf_rdfa_attributes($mapping, $data = NULL) { $attributes = []; // The type of mapping defaults to 'property'. - $type = isset($mapping['mapping_type']) ? $mapping['mapping_type'] : 'property'; + $type = $mapping['mapping_type'] ?? 'property'; switch ($type) { // The mapping expresses the relationship between two resources. @@ -187,7 +187,7 @@ function rdf_rdfa_attributes($mapping, $data = NULL) { // Convert $data to a specific format as per the callback function. if (isset($data) && !empty($mapping['datatype_callback'])) { $callback = $mapping['datatype_callback']['callable']; - $arguments = isset($mapping['datatype_callback']['arguments']) ? $mapping['datatype_callback']['arguments'] : NULL; + $arguments = $mapping['datatype_callback']['arguments'] ?? NULL; $attributes['content'] = call_user_func($callback, $data, $arguments); } if (isset($mapping['datatype'])) { diff --git a/core/modules/responsive_image/src/ResponsiveImageStyleForm.php b/core/modules/responsive_image/src/ResponsiveImageStyleForm.php index 17e00500c9de..7bceff174ec4 100644 --- a/core/modules/responsive_image/src/ResponsiveImageStyleForm.php +++ b/core/modules/responsive_image/src/ResponsiveImageStyleForm.php @@ -141,7 +141,7 @@ public function form(array $form, FormStateInterface $form_state) { 'image_style' => $this->t('Select a single image style.'), '_none' => $this->t('Do not use this breakpoint.'), ], - '#default_value' => isset($image_style_mapping['image_mapping_type']) ? $image_style_mapping['image_mapping_type'] : '_none', + '#default_value' => $image_style_mapping['image_mapping_type'] ?? '_none', '#description' => $description, ]; $form['keyed_styles'][$breakpoint_id][$multiplier]['image_style'] = [ @@ -159,7 +159,7 @@ public function form(array $form, FormStateInterface $form_state) { $form['keyed_styles'][$breakpoint_id][$multiplier]['sizes'] = [ '#type' => 'textarea', '#title' => $this->t('Sizes'), - '#default_value' => isset($image_style_mapping['image_mapping']['sizes']) ? $image_style_mapping['image_mapping']['sizes'] : '100vw', + '#default_value' => $image_style_mapping['image_mapping']['sizes'] ?? '100vw', '#description' => $this->t('Enter the value for the sizes attribute, for example: %example_sizes.', ['%example_sizes' => '(min-width:700px) 700px, 100vw']), '#states' => [ 'visible' => [ @@ -175,7 +175,7 @@ public function form(array $form, FormStateInterface $form_state) { '#type' => 'checkboxes', '#options' => array_diff_key($image_styles, ['' => '']), '#description' => $this->t('Select image styles with widths that range from the smallest amount of space this image will take up in the layout to the largest, bearing in mind that high resolution screens will need images 1.5x to 2x larger.'), - '#default_value' => isset($image_style_mapping['image_mapping']['sizes_image_styles']) ? $image_style_mapping['image_mapping']['sizes_image_styles'] : [], + '#default_value' => $image_style_mapping['image_mapping']['sizes_image_styles'] ?? [], '#states' => [ 'visible' => [ ':input[name="keyed_styles[' . $breakpoint_id . '][' . $multiplier . '][image_mapping_type]"]' => ['value' => 'sizes'], diff --git a/core/modules/rest/src/Plugin/ResourceBase.php b/core/modules/rest/src/Plugin/ResourceBase.php index b7c4ab41c025..0c64978df8b5 100644 --- a/core/modules/rest/src/Plugin/ResourceBase.php +++ b/core/modules/rest/src/Plugin/ResourceBase.php @@ -99,8 +99,8 @@ public function routes() { $collection = new RouteCollection(); $definition = $this->getPluginDefinition(); - $canonical_path = isset($definition['uri_paths']['canonical']) ? $definition['uri_paths']['canonical'] : '/' . strtr($this->pluginId, ':', '/') . '/{id}'; - $create_path = isset($definition['uri_paths']['create']) ? $definition['uri_paths']['create'] : '/' . strtr($this->pluginId, ':', '/'); + $canonical_path = $definition['uri_paths']['canonical'] ?? '/' . strtr($this->pluginId, ':', '/') . '/{id}'; + $create_path = $definition['uri_paths']['create'] ?? '/' . strtr($this->pluginId, ':', '/'); $route_name = strtr($this->pluginId, ':', '.'); diff --git a/core/modules/rest/src/Plugin/views/row/DataFieldRow.php b/core/modules/rest/src/Plugin/views/row/DataFieldRow.php index 9b9e28573ea5..b328e452e03e 100644 --- a/core/modules/rest/src/Plugin/views/row/DataFieldRow.php +++ b/core/modules/rest/src/Plugin/views/row/DataFieldRow.php @@ -94,14 +94,14 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { '#title' => $this->t('Alias for @id', ['@id' => $id]), '#title_display' => 'invisible', '#type' => 'textfield', - '#default_value' => isset($options[$id]['alias']) ? $options[$id]['alias'] : '', + '#default_value' => $options[$id]['alias'] ?? '', '#element_validate' => [[$this, 'validateAliasName']], ]; $form['field_options'][$id]['raw_output'] = [ '#title' => $this->t('Raw output for @id', ['@id' => $id]), '#title_display' => 'invisible', '#type' => 'checkbox', - '#default_value' => isset($options[$id]['raw_output']) ? $options[$id]['raw_output'] : '', + '#default_value' => $options[$id]['raw_output'] ?? '', ]; } } @@ -189,7 +189,7 @@ public function getFieldKeyAlias($id) { */ protected static function extractFromOptionsArray($key, $options) { return array_map(function ($item) use ($key) { - return isset($item[$key]) ? $item[$key] : NULL; + return $item[$key] ?? NULL; }, $options); } diff --git a/core/modules/search/search.pages.inc b/core/modules/search/search.pages.inc index 8db7d159f2a8..a9e49ffc21a6 100644 --- a/core/modules/search/search.pages.inc +++ b/core/modules/search/search.pages.inc @@ -49,7 +49,7 @@ function template_preprocess_search_result(&$variables) { $info = array_merge($info, $result['extra']); } // Check for existence. User search does not include snippets. - $variables['snippet'] = isset($result['snippet']) ? $result['snippet'] : ''; + $variables['snippet'] = $result['snippet'] ?? ''; // Provide separated and grouped meta information.. $variables['info_split'] = $info; $variables['info'] = [ diff --git a/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php b/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php index c70c43d8bbb2..10d0037bf39e 100644 --- a/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php +++ b/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php @@ -56,10 +56,13 @@ public function normalize($datetime, $format = NULL, array $context = []) { */ public function denormalize($data, $class, $format = NULL, array $context = []) { // @todo Move the date-only handling out of here in https://www.drupal.org/project/drupal/issues/2958416. - $field_definition = isset($context['target_instance']) - ? $context['target_instance']->getFieldDefinition() - : (isset($context['field_definition']) ? $context['field_definition'] : NULL); - if ($field_definition === NULL) { + if (isset($context['target_instance'])) { + $field_definition = $context['target_instance']->getFieldDefinition(); + } + elseif (isset($context['field_definition'])) { + $field_definition = $context['field_definition']; + } + else { throw new InvalidArgumentException('$context[\'target_instance\'] or $context[\'field_definition\'] must be set to denormalize with the DateTimeIso8601Normalizer'); } diff --git a/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php b/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php index b84e170d6b75..42a715092b75 100644 --- a/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php +++ b/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php @@ -96,9 +96,7 @@ public function denormalize($data, $class, $format = NULL, array $context = []) // input data if it matches the defined pattern. Since the formats are // unambiguous (i.e., they reference an absolute time with a defined time // zone), only one will ever match. - $allowed_formats = isset($context['datetime_allowed_formats']) - ? $context['datetime_allowed_formats'] - : $this->allowedFormats; + $allowed_formats = $context['datetime_allowed_formats'] ?? $this->allowedFormats; foreach ($allowed_formats as $format) { $date = \DateTime::createFromFormat($format, $data); $errors = \DateTime::getLastErrors(); diff --git a/core/modules/serialization/src/Normalizer/FieldableEntityNormalizerTrait.php b/core/modules/serialization/src/Normalizer/FieldableEntityNormalizerTrait.php index c35ed41add84..379d0f9d8a79 100644 --- a/core/modules/serialization/src/Normalizer/FieldableEntityNormalizerTrait.php +++ b/core/modules/serialization/src/Normalizer/FieldableEntityNormalizerTrait.php @@ -101,7 +101,7 @@ protected function extractBundleData(array &$data, EntityTypeInterface $entity_t $key_id = isset($base_field_definitions[$bundle_key]) ? $base_field_definitions[$bundle_key]->getFieldStorageDefinition()->getMainPropertyName() : 'value'; // Normalize the bundle if it is not explicitly set. - $bundle_value = isset($data[$bundle_key][0][$key_id]) ? $data[$bundle_key][0][$key_id] : (isset($data[$bundle_key]) ? $data[$bundle_key] : NULL); + $bundle_value = $data[$bundle_key][0][$key_id] ?? ($data[$bundle_key] ?? NULL); // Unset the bundle from the data. unset($data[$bundle_key]); diff --git a/core/modules/serialization/src/RegisterEntityResolversCompilerPass.php b/core/modules/serialization/src/RegisterEntityResolversCompilerPass.php index 483ad43efe5e..2e61158dda35 100644 --- a/core/modules/serialization/src/RegisterEntityResolversCompilerPass.php +++ b/core/modules/serialization/src/RegisterEntityResolversCompilerPass.php @@ -23,7 +23,7 @@ public function process(ContainerBuilder $container) { // Retrieve registered Normalizers and Encoders from the container. foreach ($container->findTaggedServiceIds('entity_resolver') as $id => $attributes) { - $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $priority = $attributes[0]['priority'] ?? 0; $resolvers[$priority][] = new Reference($id); } diff --git a/core/modules/serialization/src/RegisterSerializationClassesCompilerPass.php b/core/modules/serialization/src/RegisterSerializationClassesCompilerPass.php index eba01ba91856..3071c59d606f 100644 --- a/core/modules/serialization/src/RegisterSerializationClassesCompilerPass.php +++ b/core/modules/serialization/src/RegisterSerializationClassesCompilerPass.php @@ -25,14 +25,14 @@ public function process(ContainerBuilder $container) { // The 'serializer' service is the public API: mark normalizers private. $container->getDefinition($id)->setPublic(FALSE); - $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $priority = $attributes[0]['priority'] ?? 0; $normalizers[$priority][] = new Reference($id); } foreach ($container->findTaggedServiceIds('encoder') as $id => $attributes) { // The 'serializer' service is the public API: mark encoders private. $container->getDefinition($id)->setPublic(FALSE); - $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; + $priority = $attributes[0]['priority'] ?? 0; $encoders[$priority][] = new Reference($id); } diff --git a/core/modules/shortcut/tests/src/Functional/ShortcutTestBase.php b/core/modules/shortcut/tests/src/Functional/ShortcutTestBase.php index 636db2008cf8..bdec9903dffc 100644 --- a/core/modules/shortcut/tests/src/Functional/ShortcutTestBase.php +++ b/core/modules/shortcut/tests/src/Functional/ShortcutTestBase.php @@ -110,7 +110,7 @@ protected function setUp() { */ public function generateShortcutSet($label = '', $id = NULL) { $set = ShortcutSet::create([ - 'id' => isset($id) ? $id : strtolower($this->randomMachineName()), + 'id' => $id ?? strtolower($this->randomMachineName()), 'label' => empty($label) ? $this->randomString() : $label, ]); $set->save(); diff --git a/core/modules/system/src/Controller/BatchController.php b/core/modules/system/src/Controller/BatchController.php index 038b1333019e..761c32a08ddd 100644 --- a/core/modules/system/src/Controller/BatchController.php +++ b/core/modules/system/src/Controller/BatchController.php @@ -61,7 +61,7 @@ public function batchPage(Request $request) { return $output; } elseif (isset($output)) { - $title = isset($output['#title']) ? $output['#title'] : NULL; + $title = $output['#title'] ?? NULL; $page = [ '#type' => 'page', '#title' => $title, diff --git a/core/modules/system/src/Controller/DbUpdateController.php b/core/modules/system/src/Controller/DbUpdateController.php index be3adb210fad..417fa6a5f560 100644 --- a/core/modules/system/src/Controller/DbUpdateController.php +++ b/core/modules/system/src/Controller/DbUpdateController.php @@ -191,7 +191,7 @@ public function handle($op, Request $request) { if ($output instanceof Response) { return $output; } - $title = isset($output['#title']) ? $output['#title'] : $this->t('Drupal database update'); + $title = $output['#title'] ?? $this->t('Drupal database update'); return $this->bareHtmlPageRenderer->renderBarePage($output, $title, 'maintenance_page', $regions); } diff --git a/core/modules/system/src/Form/ModulesListForm.php b/core/modules/system/src/Form/ModulesListForm.php index b7e0450320ba..ec50babddce8 100644 --- a/core/modules/system/src/Form/ModulesListForm.php +++ b/core/modules/system/src/Form/ModulesListForm.php @@ -276,7 +276,7 @@ protected function buildRow(array $modules, Extension $module, $distribution) { // Generate link for module's configuration page, if it has one. if ($module->status && isset($module->info['configure'])) { - $route_parameters = isset($module->info['configure_parameters']) ? $module->info['configure_parameters'] : []; + $route_parameters = $module->info['configure_parameters'] ?? []; if ($this->accessManager->checkNamedRoute($module->info['configure'], $route_parameters, $this->currentUser)) { $row['links']['configure'] = [ '#type' => 'link', @@ -320,7 +320,7 @@ protected function buildRow(array $modules, Extension $module, $distribution) { '@core_version' => \Drupal::VERSION, ]); $row['#requires']['core'] = $this->t('Drupal Core (@core_requirement) (<span class="admin-missing">incompatible with</span> version @core_version)', [ - '@core_requirement' => isset($module->info['core_version_requirement']) ? $module->info['core_version_requirement'] : $module->info['core'], + '@core_requirement' => $module->info['core_version_requirement'] ?? $module->info['core'], '@core_version' => \Drupal::VERSION, ]); } diff --git a/core/modules/system/src/Form/ThemeExperimentalConfirmForm.php b/core/modules/system/src/Form/ThemeExperimentalConfirmForm.php index d83cd422ef9b..c9c993775161 100644 --- a/core/modules/system/src/Form/ThemeExperimentalConfirmForm.php +++ b/core/modules/system/src/Form/ThemeExperimentalConfirmForm.php @@ -134,8 +134,8 @@ public function buildForm(array $form, FormStateInterface $form_state) { */ public function submitForm(array &$form, FormStateInterface $form_state) { $args = $form_state->getBuildInfo()['args']; - $theme = isset($args[0]) ? $args[0] : NULL; - $set_default = isset($args[1]) ? $args[1] : FALSE; + $theme = $args[0] ?? NULL; + $set_default = $args[1] ?? FALSE; $themes = $this->themeList->getList(); $config = $this->configFactory()->getEditable('system.theme'); try { diff --git a/core/modules/system/src/Form/ThemeSettingsForm.php b/core/modules/system/src/Form/ThemeSettingsForm.php index 8fa152625f2a..51b57e6be1e0 100644 --- a/core/modules/system/src/Form/ThemeSettingsForm.php +++ b/core/modules/system/src/Form/ThemeSettingsForm.php @@ -314,7 +314,7 @@ public function buildForm(array $form, FormStateInterface $form_state, $theme = } $element['#description'] = $this->t('Examples: <code>@implicit-public-file</code> (for a file in the public filesystem), <code>@explicit-file</code>, or <code>@local-file</code>.', [ - '@implicit-public-file' => isset($friendly_path) ? $friendly_path : $default, + '@implicit-public-file' => $friendly_path ?? $default, '@explicit-file' => StreamWrapperManager::getScheme($original_path) !== FALSE ? $original_path : 'public://' . $default, '@local-file' => $local_file, ]); diff --git a/core/modules/system/src/PhpStorage/MockPhpStorage.php b/core/modules/system/src/PhpStorage/MockPhpStorage.php index faac373b9eab..cb3c42f8a42a 100644 --- a/core/modules/system/src/PhpStorage/MockPhpStorage.php +++ b/core/modules/system/src/PhpStorage/MockPhpStorage.php @@ -34,7 +34,7 @@ public function getConfiguration() { * Gets a single configuration key. */ public function getConfigurationValue($key) { - return isset($this->configuration[$key]) ? $this->configuration[$key] : NULL; + return $this->configuration[$key] ?? NULL; } } diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index 40fa1037ec75..65fb20a62b06 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -300,7 +300,7 @@ function template_preprocess_system_themes_page(&$variables) { $current_theme['attributes'] = new Attribute(); $current_theme['name'] = $theme->info['name']; - $current_theme['version'] = isset($theme->info['version']) ? $theme->info['version'] : ''; + $current_theme['version'] = $theme->info['version'] ?? ''; $current_theme['notes'] = $theme->notes; $current_theme['is_default'] = $theme->is_default; $current_theme['is_admin'] = $theme->is_admin; diff --git a/core/modules/system/system.module b/core/modules/system/system.module index 2d3606bfeded..1295b6d18b3f 100644 --- a/core/modules/system/system.module +++ b/core/modules/system/system.module @@ -944,7 +944,7 @@ function system_system_info_alter(&$info, Extension $file, $type) { */ function system_default_region($theme) { $regions = array_keys(system_region_list($theme, REGIONS_VISIBLE)); - return isset($regions[0]) ? $regions[0] : ''; + return $regions[0] ?? ''; } /** diff --git a/core/modules/system/tests/modules/dialog_renderer_test/src/Render/MainContent/WideModalRenderer.php b/core/modules/system/tests/modules/dialog_renderer_test/src/Render/MainContent/WideModalRenderer.php index aecb4dd0de93..88f304e2bdde 100644 --- a/core/modules/system/tests/modules/dialog_renderer_test/src/Render/MainContent/WideModalRenderer.php +++ b/core/modules/system/tests/modules/dialog_renderer_test/src/Render/MainContent/WideModalRenderer.php @@ -56,7 +56,7 @@ public function renderResponse(array $main_content, Request $request, RouteMatch $response->setAttachments($main_content['#attached']); // If the main content doesn't provide a title, use the title resolver. - $title = isset($main_content['#title']) ? $main_content['#title'] : $this->titleResolver->getTitle($request, $route_match->getRouteObject()); + $title = $main_content['#title'] ?? $this->titleResolver->getTitle($request, $route_match->getRouteObject()); // Determine the title: use the title provided by the main content if any, // otherwise get it from the routing information. diff --git a/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldWidget/ShapeOnlyColorEditableWidget.php b/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldWidget/ShapeOnlyColorEditableWidget.php index 6283bc3cea9c..e12c6bff62ca 100644 --- a/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldWidget/ShapeOnlyColorEditableWidget.php +++ b/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldWidget/ShapeOnlyColorEditableWidget.php @@ -30,7 +30,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen $element['color'] = [ '#type' => 'textfield', - '#default_value' => isset($items[$delta]->color) ? $items[$delta]->color : NULL, + '#default_value' => $items[$delta]->color ?? NULL, '#size' => 255, ]; diff --git a/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockUserLoginBlock.php b/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockUserLoginBlock.php index 6741eac9646d..f9354820a430 100644 --- a/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockUserLoginBlock.php +++ b/core/modules/system/tests/modules/plugin_test/src/Plugin/plugin_test/mock_block/MockUserLoginBlock.php @@ -20,7 +20,7 @@ class MockUserLoginBlock extends PluginBase { public function __construct(array $configuration, $plugin_id, $plugin_definition) { parent::__construct($configuration, $plugin_id, $plugin_definition); - $this->title = isset($configuration['title']) ? $configuration['title'] : ''; + $this->title = $configuration['title'] ?? ''; } public function getTitle() { diff --git a/core/modules/system/tests/src/Functional/Entity/Traits/EntityDefinitionTestTrait.php b/core/modules/system/tests/src/Functional/Entity/Traits/EntityDefinitionTestTrait.php index 350d14530223..206bf394b492 100644 --- a/core/modules/system/tests/src/Functional/Entity/Traits/EntityDefinitionTestTrait.php +++ b/core/modules/system/tests/src/Functional/Entity/Traits/EntityDefinitionTestTrait.php @@ -49,8 +49,8 @@ protected function applyEntityUpdates($entity_type_id = NULL) { $original_storage_definitions = \Drupal::service('entity.last_installed_schema.repository')->getLastInstalledFieldStorageDefinitions($entity_type_id); foreach ($change_list['field_storage_definitions'] as $field_name => $change) { - $storage_definition = isset($storage_definitions[$field_name]) ? $storage_definitions[$field_name] : NULL; - $original_storage_definition = isset($original_storage_definitions[$field_name]) ? $original_storage_definitions[$field_name] : NULL; + $storage_definition = $storage_definitions[$field_name] ?? NULL; + $original_storage_definition = $original_storage_definitions[$field_name] ?? NULL; $this->doFieldUpdate($change, $storage_definition, $original_storage_definition); } } diff --git a/core/modules/system/tests/src/Functional/Form/FormTest.php b/core/modules/system/tests/src/Functional/Form/FormTest.php index 75097b3954b4..47416c0dba35 100644 --- a/core/modules/system/tests/src/Functional/Form/FormTest.php +++ b/core/modules/system/tests/src/Functional/Form/FormTest.php @@ -651,8 +651,8 @@ public function testNumber() { // Create placeholder array. $placeholders = [ '%name' => $form[$element]['#title'], - '%min' => isset($form[$element]['#min']) ? $form[$element]['#min'] : '0', - '%max' => isset($form[$element]['#max']) ? $form[$element]['#max'] : '0', + '%min' => $form[$element]['#min'] ?? '0', + '%max' => $form[$element]['#max'] ?? '0', ]; foreach ($error_messages as $id => $message) { @@ -860,7 +860,7 @@ public function testDisabledMarkup() { $element = $this->xpath($path, [ ':name' => Html::escape($name), ':div-class' => $class, - ':value' => isset($item['#value']) ? $item['#value'] : '', + ':value' => $item['#value'] ?? '', ]); $this->assertTrue(isset($element[0]), new FormattableMarkup('Disabled form element class found for #type %type.', ['%type' => $item['#type']])); } diff --git a/core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php b/core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php index 720ff0850b5a..30575f2abe62 100644 --- a/core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php +++ b/core/modules/system/tests/src/Kernel/Block/SystemMenuBlockTest.php @@ -226,7 +226,7 @@ public function testConfigLevelDepth() { $no_active_trail_expectations['level_3_and_beyond'] = []; foreach ($blocks as $id => $block) { $block_build = $block->build(); - $items = isset($block_build['#items']) ? $block_build['#items'] : []; + $items = $block_build['#items'] ?? []; $this->assertSame($no_active_trail_expectations[$id], $this->convertBuiltMenuToIdTree($items), new FormattableMarkup('Menu block %id with no active trail renders the expected tree.', ['%id' => $id])); } @@ -278,7 +278,7 @@ public function testConfigLevelDepth() { $active_trail_expectations['level_3_and_beyond'] = $active_trail_expectations['level_3_only']; foreach ($blocks as $id => $block) { $block_build = $block->build(); - $items = isset($block_build['#items']) ? $block_build['#items'] : []; + $items = $block_build['#items'] ?? []; $this->assertSame($active_trail_expectations[$id], $this->convertBuiltMenuToIdTree($items), new FormattableMarkup('Menu block %id with an active trail renders the expected tree.', ['%id' => $id])); } } @@ -305,7 +305,7 @@ public function testConfigExpanded($active_route, $menu_block_level, $expected_i $this->container->get('request_stack')->push($request); $block_build = $block->build(); - $items = isset($block_build['#items']) ? $block_build['#items'] : []; + $items = $block_build['#items'] ?? []; $this->assertEquals($expected_items, $this->convertBuiltMenuToIdTree($items)); } diff --git a/core/modules/taxonomy/src/Form/OverviewTerms.php b/core/modules/taxonomy/src/Form/OverviewTerms.php index a7a38cbbcfdc..0b918bf7314e 100644 --- a/core/modules/taxonomy/src/Form/OverviewTerms.php +++ b/core/modules/taxonomy/src/Form/OverviewTerms.php @@ -192,7 +192,7 @@ public function buildForm(array $form, FormStateInterface $form_state, Vocabular } } } - $back_step = isset($back_step) ? $back_step : 0; + $back_step = $back_step ?? 0; // Continue rendering the tree until we reach the a new root item. if ($page_entries >= $page_increment + $back_step + 1 && $term->depth == 0 && $root_entries > 1) { diff --git a/core/modules/taxonomy/src/Plugin/views/argument/IndexTidDepthModifier.php b/core/modules/taxonomy/src/Plugin/views/argument/IndexTidDepthModifier.php index b1822dedda45..65af6623be71 100644 --- a/core/modules/taxonomy/src/Plugin/views/argument/IndexTidDepthModifier.php +++ b/core/modules/taxonomy/src/Plugin/views/argument/IndexTidDepthModifier.php @@ -23,7 +23,7 @@ public function query($group_by = FALSE) {} public function preQuery() { // We don't know our argument yet, but it's based upon our position: - $argument = isset($this->view->args[$this->position]) ? $this->view->args[$this->position] : NULL; + $argument = $this->view->args[$this->position] ?? NULL; if (!is_numeric($argument)) { return; } diff --git a/core/modules/taxonomy/src/Plugin/views/field/TaxonomyIndexTid.php b/core/modules/taxonomy/src/Plugin/views/field/TaxonomyIndexTid.php index 93d0ab397881..805f56b8c28f 100644 --- a/core/modules/taxonomy/src/Plugin/views/field/TaxonomyIndexTid.php +++ b/core/modules/taxonomy/src/Plugin/views/field/TaxonomyIndexTid.php @@ -170,7 +170,7 @@ protected function documentSelfTokens(&$tokens) { protected function addSelfTokens(&$tokens, $item) { foreach (['tid', 'name', 'vocabulary_vid', 'vocabulary'] as $token) { - $tokens['{{ ' . $this->options['id'] . '__' . $token . ' }}'] = isset($item[$token]) ? $item[$token] : ''; + $tokens['{{ ' . $this->options['id'] . '__' . $token . ' }}'] = $item[$token] ?? ''; } } diff --git a/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php b/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php index 1ea1837dea1d..99db3c13fe94 100644 --- a/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php +++ b/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php @@ -64,7 +64,7 @@ public function settingsSummary() { public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element['value'] = $element + [ '#type' => 'tel', - '#default_value' => isset($items[$delta]->value) ? $items[$delta]->value : NULL, + '#default_value' => $items[$delta]->value ?? NULL, '#placeholder' => $this->getSetting('placeholder'), ]; return $element; diff --git a/core/modules/text/src/Plugin/Field/FieldWidget/TextfieldWidget.php b/core/modules/text/src/Plugin/Field/FieldWidget/TextfieldWidget.php index 8f4c73ba695c..e6954cc1df05 100644 --- a/core/modules/text/src/Plugin/Field/FieldWidget/TextfieldWidget.php +++ b/core/modules/text/src/Plugin/Field/FieldWidget/TextfieldWidget.php @@ -28,7 +28,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen $element = $main_widget['value']; $element['#type'] = 'text_format'; - $element['#format'] = isset($items[$delta]->format) ? $items[$delta]->format : NULL; + $element['#format'] = $items[$delta]->format ?? NULL; $element['#base_type'] = $main_widget['value']['#type']; return $element; } diff --git a/core/modules/text/src/Plugin/migrate/field/d6/TextField.php b/core/modules/text/src/Plugin/migrate/field/d6/TextField.php index e279332a5717..59c5ab57ed24 100644 --- a/core/modules/text/src/Plugin/migrate/field/d6/TextField.php +++ b/core/modules/text/src/Plugin/migrate/field/d6/TextField.php @@ -47,7 +47,7 @@ public function getFieldFormatterMap() { * {@inheritdoc} */ public function defineValueProcessPipeline(MigrationInterface $migration, $field_name, $field_info) { - $widget_type = isset($field_info['widget_type']) ? $field_info['widget_type'] : $field_info['widget']['type']; + $widget_type = $field_info['widget_type'] ?? $field_info['widget']['type']; if ($widget_type == 'optionwidgets_onoff') { $process = [ diff --git a/core/modules/tour/src/Entity/Tour.php b/core/modules/tour/src/Entity/Tour.php index 032817a91293..8e168fe0a816 100644 --- a/core/modules/tour/src/Entity/Tour.php +++ b/core/modules/tour/src/Entity/Tour.php @@ -144,7 +144,7 @@ public function hasMatchingRoute($route_name, $route_params) { if (!isset($this->keyedRoutes)) { $this->keyedRoutes = []; foreach ($this->getRoutes() as $route) { - $this->keyedRoutes[$route['route_name']] = isset($route['route_params']) ? $route['route_params'] : []; + $this->keyedRoutes[$route['route_name']] = $route['route_params'] ?? []; } } if (!isset($this->keyedRoutes[$route_name])) { diff --git a/core/modules/tour/src/Plugin/HelpSection/TourHelpSection.php b/core/modules/tour/src/Plugin/HelpSection/TourHelpSection.php index ab9fc8e39f6b..4716af427131 100644 --- a/core/modules/tour/src/Plugin/HelpSection/TourHelpSection.php +++ b/core/modules/tour/src/Plugin/HelpSection/TourHelpSection.php @@ -99,7 +99,7 @@ public function listTopics() { // out with a missing parameter exception if the route leads to a set // of pages instead of a single page. try { - $params = isset($route['route_params']) ? $route['route_params'] : []; + $params = $route['route_params'] ?? []; $url = Url::fromRoute($route['route_name'], $params); // Skip this route if the current user cannot access it. if (!$url->access()) { diff --git a/core/modules/user/src/Controller/UserController.php b/core/modules/user/src/Controller/UserController.php index ac3540cb1a43..d6c298d3008b 100644 --- a/core/modules/user/src/Controller/UserController.php +++ b/core/modules/user/src/Controller/UserController.php @@ -345,7 +345,7 @@ public function confirmCancel(UserInterface $user, $timestamp = 0, $hashed_pass // Validate expiration and hashed password/login. if ($timestamp <= $current && $current - $timestamp < $timeout && $user->id() && $timestamp >= $user->getLastLoginTime() && hash_equals($hashed_pass, user_pass_rehash($user, $timestamp))) { $edit = [ - 'user_cancel_notify' => isset($account_data['cancel_notify']) ? $account_data['cancel_notify'] : $this->config('user.settings')->get('notify.status_canceled'), + 'user_cancel_notify' => $account_data['cancel_notify'] ?? $this->config('user.settings')->get('notify.status_canceled'), ]; user_cancel($edit, $user->id(), $account_data['cancel_method']); // Since user_cancel() is not invoked via Form API, batch processing diff --git a/core/modules/user/src/Plugin/migrate/process/UserUpdate8002.php b/core/modules/user/src/Plugin/migrate/process/UserUpdate8002.php index 7a67c466e3fe..9ba582d46b4b 100644 --- a/core/modules/user/src/Plugin/migrate/process/UserUpdate8002.php +++ b/core/modules/user/src/Plugin/migrate/process/UserUpdate8002.php @@ -26,7 +26,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable 1 => 'anonymous', 2 => 'authenticated', ]; - return isset($map[$rid]) ? $map[$rid] : $value; + return $map[$rid] ?? $value; } } diff --git a/core/modules/user/src/Plugin/migrate/source/d6/UserPictureFile.php b/core/modules/user/src/Plugin/migrate/source/d6/UserPictureFile.php index 02ba6163f6bc..26f8d64e5e54 100644 --- a/core/modules/user/src/Plugin/migrate/source/d6/UserPictureFile.php +++ b/core/modules/user/src/Plugin/migrate/source/d6/UserPictureFile.php @@ -52,7 +52,7 @@ public function query() { * {@inheritdoc} */ public function initializeIterator() { - $site_path = isset($this->configuration['site_path']) ? $this->configuration['site_path'] : 'sites/default'; + $site_path = $this->configuration['site_path'] ?? 'sites/default'; $this->filePath = $this->variableGet('file_directory_path', $site_path . '/files') . '/'; $this->tempFilePath = $this->variableGet('file_directory_temp', '/tmp') . '/'; return parent::initializeIterator(); diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 08143dca37be..833cdc5be64a 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -522,7 +522,7 @@ function user_user_logout(AccountInterface $account) { */ function user_pass_reset_url($account, $options = []) { $timestamp = REQUEST_TIME; - $langcode = isset($options['langcode']) ? $options['langcode'] : $account->getPreferredLangcode(); + $langcode = $options['langcode'] ?? $account->getPreferredLangcode(); return Url::fromRoute('user.reset', [ 'uid' => $account->id(), @@ -555,7 +555,7 @@ function user_pass_reset_url($account, $options = []) { */ function user_cancel_url(UserInterface $account, $options = []) { $timestamp = REQUEST_TIME; - $langcode = isset($options['langcode']) ? $options['langcode'] : $account->getPreferredLangcode(); + $langcode = $options['langcode'] ?? $account->getPreferredLangcode(); $url_options = ['absolute' => TRUE, 'language' => \Drupal::languageManager()->getLanguage($langcode)]; return Url::fromRoute('user.cancel_confirm', [ 'user' => $account->id(), diff --git a/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php b/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php index f769f7339520..89f465988be1 100644 --- a/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php +++ b/core/modules/views/src/Entity/Render/TranslationLanguageRenderer.php @@ -60,8 +60,7 @@ protected function getLangcodeTable(QueryPluginBase $query, $relationship) { // use the revision table or the revision data table, depending on which one // is being used as query base table. if ($this->entityType->isRevisionable()) { - $query_base_table = isset($query->relationships[$relationship]['base']) ? - $query->relationships[$relationship]['base'] : + $query_base_table = $query->relationships[$relationship]['base'] ?? $this->view->storage->get('base_table'); $revision_table = $storage->getRevisionTable(); $revision_data_table = $storage->getRevisionDataTable(); @@ -104,7 +103,7 @@ public function render(ResultRow $row) { * {@inheritdoc} */ public function getLangcode(ResultRow $row) { - return isset($row->{$this->langcodeAlias}) ? $row->{$this->langcodeAlias} : $this->languageManager->getDefaultLanguage()->getId(); + return $row->{$this->langcodeAlias} ?? $this->languageManager->getDefaultLanguage()->getId(); } /** diff --git a/core/modules/views/src/Plugin/views/PluginBase.php b/core/modules/views/src/Plugin/views/PluginBase.php index 1a194699516c..0069beee7e19 100644 --- a/core/modules/views/src/Plugin/views/PluginBase.php +++ b/core/modules/views/src/Plugin/views/PluginBase.php @@ -245,7 +245,7 @@ public function unpackOptions(&$storage, $options, $definition = NULL, $all = TR continue; } - $this->unpackOptions($storage[$key], $value, isset($definition[$key]['contains']) ? $definition[$key]['contains'] : [], $all, FALSE); + $this->unpackOptions($storage[$key], $value, $definition[$key]['contains'] ?? [], $all, FALSE); } elseif ($all || !empty($definition[$key])) { $storage[$key] = $value; diff --git a/core/modules/views/src/Plugin/views/area/AreaPluginBase.php b/core/modules/views/src/Plugin/views/area/AreaPluginBase.php index 476a808cd133..a1a9ccf87a31 100644 --- a/core/modules/views/src/Plugin/views/area/AreaPluginBase.php +++ b/core/modules/views/src/Plugin/views/area/AreaPluginBase.php @@ -84,7 +84,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { $form['empty'] = [ '#type' => 'checkbox', '#title' => $this->t('Display even if view has no result'), - '#default_value' => isset($this->options['empty']) ? $this->options['empty'] : 0, + '#default_value' => $this->options['empty'] ?? 0, ]; } } diff --git a/core/modules/views/src/Plugin/views/area/Result.php b/core/modules/views/src/Plugin/views/area/Result.php index 6fc6805dbc93..efe78d077068 100644 --- a/core/modules/views/src/Plugin/views/area/Result.php +++ b/core/modules/views/src/Plugin/views/area/Result.php @@ -80,7 +80,7 @@ public function render($empty = FALSE) { $per_page = (int) $this->view->getItemsPerPage(); // @TODO: Maybe use a possible is views empty functionality. // Not every view has total_rows set, use view->result instead. - $total = isset($this->view->total_rows) ? $this->view->total_rows : count($this->view->result); + $total = $this->view->total_rows ?? count($this->view->result); $label = Html::escape($this->view->storage->label()); // If there is no result the "start" and "current_record_count" should be // equal to 0. To have the same calculation logic, we use a "start offset" diff --git a/core/modules/views/src/Plugin/views/area/Text.php b/core/modules/views/src/Plugin/views/area/Text.php index aafcbf2095d6..c62d4646effb 100644 --- a/core/modules/views/src/Plugin/views/area/Text.php +++ b/core/modules/views/src/Plugin/views/area/Text.php @@ -38,7 +38,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { '#type' => 'text_format', '#default_value' => $this->options['content']['value'], '#rows' => 6, - '#format' => isset($this->options['content']['format']) ? $this->options['content']['format'] : filter_default_format(), + '#format' => $this->options['content']['format'] ?? filter_default_format(), '#editor' => FALSE, ]; } @@ -58,7 +58,7 @@ public function preQuery() { * {@inheritdoc} */ public function render($empty = FALSE) { - $format = isset($this->options['content']['format']) ? $this->options['content']['format'] : filter_default_format(); + $format = $this->options['content']['format'] ?? filter_default_format(); if (!$empty || !empty($this->options['empty'])) { return [ '#type' => 'processed_text', diff --git a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php index 628b6f7a58e1..3da81eb1a2ee 100644 --- a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php +++ b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php @@ -89,7 +89,7 @@ public function init(ViewExecutable $view, DisplayPluginBase $display, array &$o public function isException($arg = NULL) { if (!isset($arg)) { - $arg = isset($this->argument) ? $this->argument : NULL; + $arg = $this->argument ?? NULL; } return !empty($this->options['exception']['value']) && $this->options['exception']['value'] === $arg; } @@ -1066,7 +1066,7 @@ public function getValue() { $position++; } - $arg = isset($this->view->args[$position]) ? $this->view->args[$position] : NULL; + $arg = $this->view->args[$position] ?? NULL; $this->position = $position; // Clone ourselves so that we don't break things when we're really @@ -1123,7 +1123,7 @@ public function getPlugin($type = 'argument_default', $name = NULL) { // we only fetch the options if we're fetching the plugin actually // in use. if ($name == $plugin_name) { - $options = isset($this->options[$options_name]) ? $this->options[$options_name] : []; + $options = $this->options[$options_name] ?? []; } $plugin = Views::pluginManager($type)->createInstance($name); @@ -1171,11 +1171,11 @@ public static function processContainerRadios($element) { // The key is sanitized in drupal_attributes() during output from the // theme function. '#return_value' => $key, - '#default_value' => isset($element['#default_value']) ? $element['#default_value'] : NULL, + '#default_value' => $element['#default_value'] ?? NULL, '#attributes' => $element['#attributes'], '#parents' => $element['#parents'], '#id' => Html::getUniqueId('edit-' . implode('-', $parents_for_id)), - '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL, + '#ajax' => $element['#ajax'] ?? NULL, ]; $element[$key . '_options'] = [ '#type' => 'container', diff --git a/core/modules/views/src/Plugin/views/argument/LanguageArgument.php b/core/modules/views/src/Plugin/views/argument/LanguageArgument.php index 2eb1870ed140..24dfcd967bec 100644 --- a/core/modules/views/src/Plugin/views/argument/LanguageArgument.php +++ b/core/modules/views/src/Plugin/views/argument/LanguageArgument.php @@ -42,7 +42,7 @@ public function title() { */ public function language($langcode) { $languages = $this->listLanguages(); - return isset($languages[$langcode]) ? $languages[$langcode] : $this->t('Unknown language'); + return $languages[$langcode] ?? $this->t('Unknown language'); } } diff --git a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php index 66df4a6e465a..8cbb2fd3439f 100644 --- a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php +++ b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php @@ -110,7 +110,7 @@ public function cacheSet($type) { case 'results': $data = [ 'result' => $this->prepareViewResult($this->view->result), - 'total_rows' => isset($this->view->total_rows) ? $this->view->total_rows : 0, + 'total_rows' => $this->view->total_rows ?? 0, 'current_page' => $this->view->getCurrentPage(), ]; $expire = ($this->cacheSetMaxAge($type) === Cache::PERMANENT) ? Cache::PERMANENT : (int) $this->view->getRequest()->server->get('REQUEST_TIME') + $this->cacheSetMaxAge($type); diff --git a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php index 0d89fb724be7..4a9f2fbbdd85 100644 --- a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php +++ b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php @@ -806,7 +806,7 @@ public function getPlugin($type) { // Query plugins allow specifying a specific query class per base table. if ($type == 'query') { $views_data = Views::viewsData()->get($this->view->storage->get('base_table')); - $name = isset($views_data['table']['base']['query_id']) ? $views_data['table']['base']['query_id'] : 'views_query'; + $name = $views_data['table']['base']['query_id'] ?? 'views_query'; } else { $name = $options['type']; @@ -2205,9 +2205,9 @@ protected function applyDisplayCacheabilityMetadata(array &$element) { $cache = $this->getPlugin('cache'); (new CacheableMetadata()) - ->setCacheTags(Cache::mergeTags($this->view->getCacheTags(), isset($this->display['cache_metadata']['tags']) ? $this->display['cache_metadata']['tags'] : [])) - ->setCacheContexts(isset($this->display['cache_metadata']['contexts']) ? $this->display['cache_metadata']['contexts'] : []) - ->setCacheMaxAge(Cache::mergeMaxAges($cache->getCacheMaxAge(), isset($this->display['cache_metadata']['max-age']) ? $this->display['cache_metadata']['max-age'] : Cache::PERMANENT)) + ->setCacheTags(Cache::mergeTags($this->view->getCacheTags(), $this->display['cache_metadata']['tags'] ?? [])) + ->setCacheContexts($this->display['cache_metadata']['contexts'] ?? []) + ->setCacheMaxAge(Cache::mergeMaxAges($cache->getCacheMaxAge(), $this->display['cache_metadata']['max-age'] ?? Cache::PERMANENT)) ->merge(CacheableMetadata::createFromRenderArray($element)) ->applyTo($element); } @@ -2232,7 +2232,7 @@ public function elementPreRender(array $element) { $element['#feed_icons'] = !empty($view->feedIcons) ? $view->feedIcons : []; if ($view->display_handler->renderPager()) { - $exposed_input = isset($view->exposed_raw_input) ? $view->exposed_raw_input : NULL; + $exposed_input = $view->exposed_raw_input ?? NULL; $element['#pager'] = $view->renderPager($exposed_input); } diff --git a/core/modules/views/src/Plugin/views/display/Page.php b/core/modules/views/src/Plugin/views/display/Page.php index c0c874d9b9cc..e2104da8a751 100644 --- a/core/modules/views/src/Plugin/views/display/Page.php +++ b/core/modules/views/src/Plugin/views/display/Page.php @@ -348,7 +348,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { $form['menu']['weight'] = [ '#title' => $this->t('Weight'), '#type' => 'textfield', - '#default_value' => isset($menu['weight']) ? $menu['weight'] : 0, + '#default_value' => $menu['weight'] ?? 0, '#description' => $this->t('In the menu, the heavier links will sink and the lighter links will be positioned nearer the top.'), '#states' => [ 'visible' => [ diff --git a/core/modules/views/src/Plugin/views/display/PathPluginBase.php b/core/modules/views/src/Plugin/views/display/PathPluginBase.php index b733524033cb..ca3e6b7dfd67 100644 --- a/core/modules/views/src/Plugin/views/display/PathPluginBase.php +++ b/core/modules/views/src/Plugin/views/display/PathPluginBase.php @@ -554,7 +554,7 @@ public function getRouteName() { // Check for overridden route names. $view_route_names = $this->getAlteredRouteNames(); - return (isset($view_route_names[$view_route_key]) ? $view_route_names[$view_route_key] : "view.$view_route_key"); + return $view_route_names[$view_route_key] ?? "view.$view_route_key"; } /** diff --git a/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php b/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php index ff6a2dce2e6e..ff5261cadb79 100644 --- a/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php +++ b/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php @@ -152,8 +152,8 @@ public function renderExposedForm($block = FALSE) { */ public function query() { $view = $this->view; - $exposed_data = isset($view->exposed_data) ? $view->exposed_data : []; - $sort_by = isset($exposed_data['sort_by']) ? $exposed_data['sort_by'] : NULL; + $exposed_data = $view->exposed_data ?? []; + $sort_by = $exposed_data['sort_by'] ?? NULL; if (!empty($sort_by)) { // Make sure the original order of sorts is preserved // (e.g. a sticky sort is often first) diff --git a/core/modules/views/src/Plugin/views/exposed_form/InputRequired.php b/core/modules/views/src/Plugin/views/exposed_form/InputRequired.php index 38a5283606c9..821fffaaedfd 100644 --- a/core/modules/views/src/Plugin/views/exposed_form/InputRequired.php +++ b/core/modules/views/src/Plugin/views/exposed_form/InputRequired.php @@ -34,7 +34,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { '#title' => $this->t('Text on demand'), '#description' => $this->t('Text to display instead of results until the user selects and applies an exposed filter.'), '#default_value' => $this->options['text_input_required'], - '#format' => isset($this->options['text_input_required_format']) ? $this->options['text_input_required_format'] : filter_default_format(), + '#format' => $this->options['text_input_required_format'] ?? filter_default_format(), '#editor' => FALSE, ]; } diff --git a/core/modules/views/src/Plugin/views/field/Boolean.php b/core/modules/views/src/Plugin/views/field/Boolean.php index 75f097e1348b..ec542fc52d3d 100644 --- a/core/modules/views/src/Plugin/views/field/Boolean.php +++ b/core/modules/views/src/Plugin/views/field/Boolean.php @@ -56,7 +56,7 @@ public function init(ViewExecutable $view, DisplayPluginBase $display, array &$o 'boolean' => [1, 0], 'unicode-yes-no' => ['✔', '✖'], ]; - $output_formats = isset($this->definition['output formats']) ? $this->definition['output formats'] : []; + $output_formats = $this->definition['output formats'] ?? []; $custom_format = ['custom' => [t('Custom')]]; $this->formats = array_merge($default_formats, $output_formats, $custom_format); } diff --git a/core/modules/views/src/Plugin/views/field/Date.php b/core/modules/views/src/Plugin/views/field/Date.php index 9d72ddae892a..e33994b2ebde 100644 --- a/core/modules/views/src/Plugin/views/field/Date.php +++ b/core/modules/views/src/Plugin/views/field/Date.php @@ -101,13 +101,13 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { 'inverse time span' => $this->t('Time span (past dates have "-" prepended)'), 'time span' => $this->t('Time span (with "ago/hence" appended)'), ], - '#default_value' => isset($this->options['date_format']) ? $this->options['date_format'] : 'small', + '#default_value' => $this->options['date_format'] ?? 'small', ]; $form['custom_date_format'] = [ '#type' => 'textfield', '#title' => $this->t('Custom date format'), '#description' => $this->t('If "Custom", see <a href="https://www.php.net/manual/datetime.format.php#refsect1-datetime.format-parameters" target="_blank">the PHP docs</a> for date formats. Otherwise, enter the number of different time units to display, which defaults to 2.'), - '#default_value' => isset($this->options['custom_date_format']) ? $this->options['custom_date_format'] : '', + '#default_value' => $this->options['custom_date_format'] ?? '', ]; // Setup #states for all possible date_formats on the custom_date_format form element. foreach (['custom', 'raw time ago', 'time ago', 'raw time hence', 'time hence', 'raw time span', 'time span', 'raw time span', 'inverse time span', 'time span'] as $custom_date_possible) { diff --git a/core/modules/views/src/Plugin/views/field/EntityField.php b/core/modules/views/src/Plugin/views/field/EntityField.php index d3525f4e1042..61db27cd1033 100644 --- a/core/modules/views/src/Plugin/views/field/EntityField.php +++ b/core/modules/views/src/Plugin/views/field/EntityField.php @@ -394,7 +394,7 @@ protected function defineOptions() { } $options['settings'] = [ - 'default' => isset($this->definition['default_formatter_settings']) ? $this->definition['default_formatter_settings'] : [], + 'default' => $this->definition['default_formatter_settings'] ?? [], ]; $options['group_column'] = [ 'default' => $default_column, @@ -455,7 +455,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { if (count($field->getColumns()) == 1) { $form['click_sort_column'] = [ '#type' => 'value', - '#value' => isset($column_names[0]) ? $column_names[0] : '', + '#value' => $column_names[0] ?? '', ]; } else { @@ -1078,7 +1078,7 @@ public function getValue(ResultRow $values, $field = NULL) { // Some bundles might not have a specific field, in which case the entity // (potentially a fake one) doesn't have it either. /** @var \Drupal\Core\Field\FieldItemListInterface $field_item_list */ - $field_item_list = isset($translated_entity->{$this->definition['field_name']}) ? $translated_entity->{$this->definition['field_name']} : NULL; + $field_item_list = $translated_entity->{$this->definition['field_name']} ?? NULL; if (!isset($field_item_list)) { // There isn't anything we can do without a valid field. diff --git a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php index 8207fce70cb2..0fe56cbc65e8 100644 --- a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php +++ b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php @@ -228,7 +228,7 @@ public function clickSort($order) { * {@inheritdoc} */ public function clickSortable() { - return isset($this->definition['click sortable']) ? $this->definition['click sortable'] : TRUE; + return $this->definition['click sortable'] ?? TRUE; } /** diff --git a/core/modules/views/src/Plugin/views/field/NumericField.php b/core/modules/views/src/Plugin/views/field/NumericField.php index 83d6dee7f653..8ee361729c12 100644 --- a/core/modules/views/src/Plugin/views/field/NumericField.php +++ b/core/modules/views/src/Plugin/views/field/NumericField.php @@ -101,7 +101,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { '#type' => 'textfield', // @todo Should use better labels https://www.drupal.org/node/2499639 '#title' => ($i == 0 ? $this->t('Singular form') : $this->formatPlural($i, 'First plural form', '@count. plural form')), - '#default_value' => isset($plural_array[$i]) ? $plural_array[$i] : '', + '#default_value' => $plural_array[$i] ?? '', '#description' => $this->t('Text to use for this variant, @count will be replaced with the value.'), '#states' => [ 'visible' => [ diff --git a/core/modules/views/src/Plugin/views/field/TimeInterval.php b/core/modules/views/src/Plugin/views/field/TimeInterval.php index 77924234d1ce..3c288fe61e4d 100644 --- a/core/modules/views/src/Plugin/views/field/TimeInterval.php +++ b/core/modules/views/src/Plugin/views/field/TimeInterval.php @@ -82,7 +82,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { */ public function render(ResultRow $values) { $value = $values->{$this->field_alias}; - return $this->dateFormatter->formatInterval((int) $value, isset($this->options['granularity']) ? $this->options['granularity'] : 2); + return $this->dateFormatter->formatInterval((int) $value, $this->options['granularity'] ?? 2); } } diff --git a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php index 4d4cdb8be06f..4207ef9ea68a 100644 --- a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php +++ b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php @@ -332,8 +332,8 @@ public function operatorSubmit($form, FormStateInterface $form_state) {} protected function showValueForm(&$form, FormStateInterface $form_state) { $this->valueForm($form, $form_state); if (empty($this->no_operator)) { - $form['value']['#prefix'] = '<div class="views-group-box views-right-70">' . (isset($form['value']['#prefix']) ? $form['value']['#prefix'] : ''); - $form['value']['#suffix'] = (isset($form['value']['#suffix']) ? $form['value']['#suffix'] : '') . '</div>'; + $form['value']['#prefix'] = '<div class="views-group-box views-right-70">' . ($form['value']['#prefix'] ?? ''); + $form['value']['#suffix'] = ($form['value']['#suffix'] ?? '') . '</div>'; } } diff --git a/core/modules/views/src/Plugin/views/filter/StringFilter.php b/core/modules/views/src/Plugin/views/filter/StringFilter.php index 403401c2147e..5d027309a4a6 100644 --- a/core/modules/views/src/Plugin/views/filter/StringFilter.php +++ b/core/modules/views/src/Plugin/views/filter/StringFilter.php @@ -325,7 +325,7 @@ public function operator() { */ protected function getConditionOperator($operator) { $mapping = $this->connection->mapConditionOperator($operator); - return isset($mapping['operator']) ? $mapping['operator'] : $operator; + return $mapping['operator'] ?? $operator; } /** diff --git a/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php b/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php index f9168089747f..5227a6ac4306 100644 --- a/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php +++ b/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php @@ -43,7 +43,7 @@ abstract class PagerPluginBase extends PluginBase { * most pagers will not need to override this method. */ public function getItemsPerPage() { - return isset($this->options['items_per_page']) ? $this->options['items_per_page'] : 0; + return $this->options['items_per_page'] ?? 0; } /** @@ -62,7 +62,7 @@ public function setItemsPerPage($items) { * so few pagers will need to override this method. */ public function getOffset() { - return isset($this->options['offset']) ? $this->options['offset'] : 0; + return $this->options['offset'] ?? 0; } /** @@ -108,7 +108,7 @@ public function getTotalItems() { * Get the pager id, if it exists. */ public function getPagerId() { - return isset($this->options['id']) ? $this->options['id'] : 0; + return $this->options['id'] ?? 0; } /** diff --git a/core/modules/views/src/Plugin/views/query/Sql.php b/core/modules/views/src/Plugin/views/query/Sql.php index 53a9ac037c68..1f090ac81bd2 100644 --- a/core/modules/views/src/Plugin/views/query/Sql.php +++ b/core/modules/views/src/Plugin/views/query/Sql.php @@ -1074,7 +1074,7 @@ public function addGroupBy($clause) { * @see \Drupal\views\Plugin\views\query\Sql::addField */ protected function getFieldAlias($table_alias, $field) { - return isset($this->fieldAliases[$table_alias][$field]) ? $this->fieldAliases[$table_alias][$field] : FALSE; + return $this->fieldAliases[$table_alias][$field] ?? FALSE; } /** diff --git a/core/modules/views/src/Plugin/views/row/Fields.php b/core/modules/views/src/Plugin/views/row/Fields.php index 9041bef185b0..20b4229506e0 100644 --- a/core/modules/views/src/Plugin/views/row/Fields.php +++ b/core/modules/views/src/Plugin/views/row/Fields.php @@ -74,7 +74,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { '#title' => $this->t('Separator'), '#type' => 'textfield', '#size' => 10, - '#default_value' => isset($this->options['separator']) ? $this->options['separator'] : '', + '#default_value' => $this->options['separator'] ?? '', '#description' => $this->t('The separator may be placed between inline fields to keep them from squishing up next to each other. You can use HTML in this field.'), '#states' => [ 'visible' => [ diff --git a/core/modules/views/src/Plugin/views/row/OpmlFields.php b/core/modules/views/src/Plugin/views/row/OpmlFields.php index 61359978e58a..c5116f3fbd49 100644 --- a/core/modules/views/src/Plugin/views/row/OpmlFields.php +++ b/core/modules/views/src/Plugin/views/row/OpmlFields.php @@ -195,7 +195,7 @@ public function render($row) { '#view' => $this->view, '#options' => $this->options, '#row' => $item, - '#field_alias' => isset($this->field_alias) ? $this->field_alias : '', + '#field_alias' => $this->field_alias ?? '', ]; return $build; } diff --git a/core/modules/views/src/Plugin/views/row/RowPluginBase.php b/core/modules/views/src/Plugin/views/row/RowPluginBase.php index 33351185041c..e3d2c5893389 100644 --- a/core/modules/views/src/Plugin/views/row/RowPluginBase.php +++ b/core/modules/views/src/Plugin/views/row/RowPluginBase.php @@ -169,7 +169,7 @@ public function render($row) { '#view' => $this->view, '#options' => $this->options, '#row' => $row, - '#field_alias' => isset($this->field_alias) ? $this->field_alias : '', + '#field_alias' => $this->field_alias ?? '', ]; } diff --git a/core/modules/views/src/Plugin/views/row/RssFields.php b/core/modules/views/src/Plugin/views/row/RssFields.php index dc80f7e028fe..aaa009c4426e 100644 --- a/core/modules/views/src/Plugin/views/row/RssFields.php +++ b/core/modules/views/src/Plugin/views/row/RssFields.php @@ -177,7 +177,7 @@ public function render($row) { '#view' => $this->view, '#options' => $this->options, '#row' => $item, - '#field_alias' => isset($this->field_alias) ? $this->field_alias : '', + '#field_alias' => $this->field_alias ?? '', ]; return $build; diff --git a/core/modules/views/src/Plugin/views/style/Mapping.php b/core/modules/views/src/Plugin/views/style/Mapping.php index 7db524788665..09b26fad5138 100644 --- a/core/modules/views/src/Plugin/views/style/Mapping.php +++ b/core/modules/views/src/Plugin/views/style/Mapping.php @@ -51,7 +51,7 @@ protected function defineOptions() { foreach ($this->defineMapping() as $key => $value) { $default = !empty($value['#multiple']) ? [] : ''; $options['mapping']['contains'][$key] = [ - 'default' => isset($value['#default_value']) ? $value['#default_value'] : $default, + 'default' => $value['#default_value'] ?? $default, ]; if (!empty($value['#toggle'])) { $options['mapping']['contains']["toggle_$key"] = [ diff --git a/core/modules/views/src/Plugin/views/style/StylePluginBase.php b/core/modules/views/src/Plugin/views/style/StylePluginBase.php index b91ce83f1bb4..faacdf8e51a2 100644 --- a/core/modules/views/src/Plugin/views/style/StylePluginBase.php +++ b/core/modules/views/src/Plugin/views/style/StylePluginBase.php @@ -230,7 +230,7 @@ public function getRowClass($row_index) { public function tokenizeValue($value, $row_index) { if (strpos($value, '{{') !== FALSE) { // Row tokens might be empty, for example for node row style. - $tokens = isset($this->rowTokens[$row_index]) ? $this->rowTokens[$row_index] : []; + $tokens = $this->rowTokens[$row_index] ?? []; if (!empty($this->view->build_info['substitutions'])) { $tokens += $this->view->build_info['substitutions']; } @@ -498,7 +498,7 @@ public function renderGroupingSets($sets) { $output = []; $theme_functions = $this->view->buildThemeFunctions($this->groupingTheme); foreach ($sets as $set) { - $level = isset($set['level']) ? $set['level'] : 0; + $level = $set['level'] ?? 0; $row = reset($set['rows']); // Render as a grouping set. @@ -591,8 +591,8 @@ public function renderGrouping($records, $groupings = [], $group_rendered = NULL $set = &$sets; foreach ($groupings as $level => $info) { $field = $info['field']; - $rendered = isset($info['rendered']) ? $info['rendered'] : $group_rendered; - $rendered_strip = isset($info['rendered_strip']) ? $info['rendered_strip'] : FALSE; + $rendered = $info['rendered'] ?? $group_rendered; + $rendered_strip = $info['rendered_strip'] ?? FALSE; $grouping = ''; $group_content = ''; // Group on the rendered version of the field, not the raw. That way, diff --git a/core/modules/views/src/Plugin/views/style/Table.php b/core/modules/views/src/Plugin/views/style/Table.php index f6e88034e76d..5a508b779902 100644 --- a/core/modules/views/src/Plugin/views/style/Table.php +++ b/core/modules/views/src/Plugin/views/style/Table.php @@ -348,7 +348,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { '#title_display' => 'invisible', '#type' => 'textfield', '#size' => 10, - '#default_value' => isset($this->options['info'][$field]['separator']) ? $this->options['info'][$field]['separator'] : '', + '#default_value' => $this->options['info'][$field]['separator'] ?? '', '#states' => [ 'visible' => [ $column_selector => ['value' => $field], @@ -359,7 +359,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { '#title' => $this->t('Hide empty column for @field', ['@field' => $field]), '#title_display' => 'invisible', '#type' => 'checkbox', - '#default_value' => isset($this->options['info'][$field]['empty_column']) ? $this->options['info'][$field]['empty_column'] : FALSE, + '#default_value' => $this->options['info'][$field]['empty_column'] ?? FALSE, '#states' => [ 'visible' => [ $column_selector => ['value' => $field], @@ -370,7 +370,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { '#title' => $this->t('Responsive setting for @field', ['@field' => $field]), '#title_display' => 'invisible', '#type' => 'select', - '#default_value' => isset($this->options['info'][$field]['responsive']) ? $this->options['info'][$field]['responsive'] : '', + '#default_value' => $this->options['info'][$field]['responsive'] ?? '', '#options' => ['' => $this->t('High'), RESPONSIVE_PRIORITY_MEDIUM => $this->t('Medium'), RESPONSIVE_PRIORITY_LOW => $this->t('Low')], '#states' => [ 'visible' => [ diff --git a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php index d1188ce411e6..335ac065e005 100644 --- a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php +++ b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php @@ -871,8 +871,8 @@ protected function defaultDisplayOptions() { 'table' => $default_table, 'field' => $default_field, 'id' => $default_field, - 'entity_type' => isset($data[$default_field]['entity type']) ? $data[$default_field]['entity type'] : NULL, - 'entity_field' => isset($data[$default_field]['entity field']) ? $data[$default_field]['entity field'] : NULL, + 'entity_type' => $data[$default_field]['entity type'] ?? NULL, + 'entity_field' => $data[$default_field]['entity field'] ?? NULL, 'plugin_id' => $data[$default_field]['field']['id'], ]; @@ -965,8 +965,8 @@ protected function defaultDisplayFiltersUser(array $form, FormStateInterface $fo 'table' => $table, 'field' => $bundle_key, 'value' => $value, - 'entity_type' => isset($table_data['table']['entity type']) ? $table_data['table']['entity type'] : NULL, - 'entity_field' => isset($table_data[$bundle_key]['entity field']) ? $table_data[$bundle_key]['entity field'] : NULL, + 'entity_type' => $table_data['table']['entity type'] ?? NULL, + 'entity_field' => $table_data[$bundle_key]['entity field'] ?? NULL, 'plugin_id' => $handler, ]; } @@ -1045,8 +1045,8 @@ protected function defaultDisplaySortsUser($form, FormStateInterface $form_state 'table' => $table, 'field' => $column, 'order' => $sort, - 'entity_type' => isset($data['table']['entity type']) ? $data['table']['entity type'] : NULL, - 'entity_field' => isset($data[$column]['entity field']) ? $data[$column]['entity field'] : NULL, + 'entity_type' => $data['table']['entity type'] ?? NULL, + 'entity_field' => $data[$column]['entity field'] ?? NULL, 'plugin_id' => $data[$column]['sort']['id'], ]; } @@ -1254,7 +1254,7 @@ protected function retrieveValidatedView(array $form, FormStateInterface $form_s // @todo Figure out why all this hashing is done. Wouldn't it be easier to // store a single entry and that's it? $key = hash('sha256', serialize($form_state->getValues())); - $view = (isset($this->validated_views[$key]) ? $this->validated_views[$key] : NULL); + $view = ($this->validated_views[$key] ?? NULL); if ($unset) { unset($this->validated_views[$key]); } diff --git a/core/modules/views/src/ViewExecutable.php b/core/modules/views/src/ViewExecutable.php index 5cd0938bad89..adf8ade188cc 100644 --- a/core/modules/views/src/ViewExecutable.php +++ b/core/modules/views/src/ViewExecutable.php @@ -1082,7 +1082,7 @@ protected function _buildArguments() { $argument->setRelationship(); - $arg = isset($this->args[$position]) ? $this->args[$position] : NULL; + $arg = $this->args[$position] ?? NULL; $argument->position = $position; if (isset($arg) || $argument->hasDefaultArgument()) { @@ -1703,7 +1703,7 @@ public function postExecute() { $old_view = array_pop($this->old_view); } - views_set_current_view(isset($old_view) ? $old_view : FALSE); + views_set_current_view($old_view ?? FALSE); } /** @@ -2291,7 +2291,7 @@ public function getHandler($display_id, $type, $id) { // Get the existing configuration $fields = $this->displayHandlers->get($display_id)->getOption($types[$type]['plural']); - return isset($fields[$id]) ? $fields[$id] : NULL; + return $fields[$id] ?? NULL; } /** diff --git a/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php b/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php index 859243f6873b..8964cecc0c97 100644 --- a/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php +++ b/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php @@ -77,7 +77,7 @@ protected function setUp(): void { ->willReturnCallback(function (array &$elements) { $elements['#attached'] = []; - return isset($elements['#markup']) ? $elements['#markup'] : ''; + return $elements['#markup'] ?? ''; }); $this->renderer->expects($this->any()) ->method('executeInRenderContext') diff --git a/core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php b/core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php index 15c4e5b4d98b..8517215b572f 100644 --- a/core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php +++ b/core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php @@ -324,7 +324,7 @@ public function testRenderAsLinkWithPathAndOptions($path, $alter, $link_html, $f 'path' => $path, ]; - $final_html = isset($final_html) ? $final_html : $link_html; + $final_html = $final_html ?? $link_html; $this->setUpUrlIntegrationServices(); $this->setupDisplayWithEmptyArgumentsAndFields(); @@ -398,7 +398,7 @@ public function testRenderAsLinkWithUrlAndOptions(Url $url, $alter, Url $expecte 'url' => $url, ]; - $final_html = isset($final_html) ? $final_html : $link_html; + $final_html = $final_html ?? $link_html; $this->setUpUrlIntegrationServices(); $this->setupDisplayWithEmptyArgumentsAndFields(); diff --git a/core/modules/views_ui/src/ViewUI.php b/core/modules/views_ui/src/ViewUI.php index 01c26ac2d6e9..3dbe2b33fe90 100644 --- a/core/modules/views_ui/src/ViewUI.php +++ b/core/modules/views_ui/src/ViewUI.php @@ -154,7 +154,7 @@ public function get($property_name, $langcode = NULL) { return $this->storage->get($property_name, $langcode); } - return isset($this->{$property_name}) ? $this->{$property_name} : NULL; + return $this->{$property_name} ?? NULL; } /** diff --git a/core/modules/views_ui/views_ui.theme.inc b/core/modules/views_ui/views_ui.theme.inc index 153d3d3544e2..88ab2d0c2b1e 100644 --- a/core/modules/views_ui/views_ui.theme.inc +++ b/core/modules/views_ui/views_ui.theme.inc @@ -85,8 +85,8 @@ function template_preprocess_views_ui_display_tab_bucket(&$variables) { $variables['attributes']['title'][] = t('Overridden'); } - $variables['name'] = isset($element['#name']) ? $element['#name'] : NULL; - $variables['overridden'] = isset($element['#overridden']) ? $element['#overridden'] : NULL; + $variables['name'] = $element['#name'] ?? NULL; + $variables['overridden'] = $element['#overridden'] ?? NULL; $variables['content'] = $element['#children']; $variables['title'] = $element['#title']; $variables['actions'] = !empty($element['#actions']) ? $element['#actions'] : []; diff --git a/core/modules/workspaces/tests/src/Kernel/WorkspaceTestTrait.php b/core/modules/workspaces/tests/src/Kernel/WorkspaceTestTrait.php index 09061d4c91f9..6f6d723cd653 100644 --- a/core/modules/workspaces/tests/src/Kernel/WorkspaceTestTrait.php +++ b/core/modules/workspaces/tests/src/Kernel/WorkspaceTestTrait.php @@ -100,7 +100,7 @@ protected function assertWorkspaceAssociation(array $expected, $entity_type_id) $workspace_association = \Drupal::service('workspaces.association'); foreach ($expected as $workspace_id => $expected_tracked_revision_ids) { $tracked_entities = $workspace_association->getTrackedEntities($workspace_id, $entity_type_id); - $tracked_revision_ids = isset($tracked_entities[$entity_type_id]) ? $tracked_entities[$entity_type_id] : []; + $tracked_revision_ids = $tracked_entities[$entity_type_id] ?? []; $this->assertEquals($expected_tracked_revision_ids, array_keys($tracked_revision_ids)); } } diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh index 542006552675..edb6cab39de0 100755 --- a/core/scripts/run-tests.sh +++ b/core/scripts/run-tests.sh @@ -500,7 +500,7 @@ function simpletest_script_init() { $parsed_url = parse_url($args['url']); $host = $parsed_url['host'] . (isset($parsed_url['port']) ? ':' . $parsed_url['port'] : ''); $path = isset($parsed_url['path']) ? rtrim(rtrim($parsed_url['path']), '/') : ''; - $port = (isset($parsed_url['port']) ? $parsed_url['port'] : $port); + $port = $parsed_url['port'] ?? $port; if ($path == '/') { $path = ''; } diff --git a/core/tests/Drupal/KernelTests/AssertContentTrait.php b/core/tests/Drupal/KernelTests/AssertContentTrait.php index 58eabfc38890..a76d357ea4a3 100644 --- a/core/tests/Drupal/KernelTests/AssertContentTrait.php +++ b/core/tests/Drupal/KernelTests/AssertContentTrait.php @@ -143,7 +143,7 @@ protected function parse() { * The current URL. */ protected function getUrl() { - return isset($this->url) ? $this->url : 'no-url'; + return $this->url ?? 'no-url'; } /** diff --git a/core/tests/Drupal/Tests/Component/FileCache/StaticFileCacheBackend.php b/core/tests/Drupal/Tests/Component/FileCache/StaticFileCacheBackend.php index 328fd5288366..32fa21526114 100644 --- a/core/tests/Drupal/Tests/Component/FileCache/StaticFileCacheBackend.php +++ b/core/tests/Drupal/Tests/Component/FileCache/StaticFileCacheBackend.php @@ -30,7 +30,7 @@ class StaticFileCacheBackend implements FileCacheBackendInterface { * (optional) Configuration used to configure this object. */ public function __construct($configuration) { - $this->bin = isset($configuration['bin']) ? $configuration['bin'] : 'file_cache'; + $this->bin = $configuration['bin'] ?? 'file_cache'; } /** diff --git a/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php b/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php index caae2d827938..84c909e1a3b5 100644 --- a/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php +++ b/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php @@ -32,7 +32,7 @@ public function testPluralsFormula($plural, $expected) { $parsed = $p->parsePluralForms($plural); list($nplurals, $new_plural) = $parsed; foreach ($expected as $number => $plural_form) { - $result = isset($new_plural[$number]) ? $new_plural[$number] : $new_plural['default']; + $result = $new_plural[$number] ?? $new_plural['default']; $this->assertEquals($result, $plural_form, 'Difference found at ' . $number . ': ' . $plural_form . ' versus ' . $result); } } diff --git a/core/tests/Drupal/Tests/Component/Graph/GraphTest.php b/core/tests/Drupal/Tests/Component/Graph/GraphTest.php index 9448e6cdc1bf..aacd9b59203a 100644 --- a/core/tests/Drupal/Tests/Component/Graph/GraphTest.php +++ b/core/tests/Drupal/Tests/Component/Graph/GraphTest.php @@ -112,7 +112,7 @@ protected function assertPaths($graph, $expected_paths) { foreach ($expected_paths as $vertex => $paths) { // Build an array with keys = $paths and values = TRUE. $expected = array_fill_keys($paths, TRUE); - $result = isset($graph[$vertex]['paths']) ? $graph[$vertex]['paths'] : []; + $result = $graph[$vertex]['paths'] ?? []; $this->assertEquals($expected, $result, sprintf('Expected paths for vertex %s: %s, got %s', $vertex, $this->displayArray($expected, TRUE), $this->displayArray($result, TRUE))); } } @@ -130,7 +130,7 @@ protected function assertReversePaths($graph, $expected_reverse_paths) { foreach ($expected_reverse_paths as $vertex => $paths) { // Build an array with keys = $paths and values = TRUE. $expected = array_fill_keys($paths, TRUE); - $result = isset($graph[$vertex]['reverse_paths']) ? $graph[$vertex]['reverse_paths'] : []; + $result = $graph[$vertex]['reverse_paths'] ?? []; $this->assertEquals($expected, $result, sprintf('Expected reverse paths for vertex %s: %s, got %s', $vertex, $this->displayArray($expected, TRUE), $this->displayArray($result, TRUE))); } } diff --git a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php index da914e766615..e355bc053d23 100644 --- a/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php +++ b/core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryParserTest.php @@ -851,7 +851,7 @@ class TestLibraryDiscoveryParser extends LibraryDiscoveryParser { protected $validUris; protected function fileValidUri($source) { - return isset($this->validUris[$source]) ? $this->validUris[$source] : FALSE; + return $this->validUris[$source] ?? FALSE; } public function setFileValidUri($source, $valid) { diff --git a/core/tests/Drupal/Tests/Core/Entity/Sql/DefaultTableMappingTest.php b/core/tests/Drupal/Tests/Core/Entity/Sql/DefaultTableMappingTest.php index 5753f1a7d702..cd1be3f9fcae 100644 --- a/core/tests/Drupal/Tests/Core/Entity/Sql/DefaultTableMappingTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/Sql/DefaultTableMappingTest.php @@ -369,17 +369,17 @@ public function testGetFieldTableName($table_names, $expected) { $this->entityType ->expects($this->any()) ->method('getBaseTable') - ->willReturn(isset($table_names['base']) ? $table_names['base'] : 'entity_test'); + ->willReturn($table_names['base'] ?? 'entity_test'); $this->entityType ->expects($this->any()) ->method('getDataTable') - ->willReturn(isset($table_names['data']) ? $table_names['data'] : FALSE); + ->willReturn($table_names['data'] ?? FALSE); $this->entityType ->expects($this->any()) ->method('getRevisionTable') - ->willReturn(isset($table_names['revision']) ? $table_names['revision'] : FALSE); + ->willReturn($table_names['revision'] ?? FALSE); $this->entityType ->expects($this->any()) diff --git a/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php b/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php index 545c0e12105d..4bba2d2326f2 100644 --- a/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php +++ b/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php @@ -168,7 +168,7 @@ public function testGetActionsForRoute($route_appears, array $plugin_definitions ->will($this->returnValue($plugin_definition['route_name'])); $plugin->expects($this->any()) ->method('getRouteParameters') - ->will($this->returnValue(isset($plugin_definition['route_parameters']) ? $plugin_definition['route_parameters'] : [])); + ->will($this->returnValue($plugin_definition['route_parameters'] ?? [])); $plugin->expects($this->any()) ->method('getTitle') ->will($this->returnValue($plugin_definition['title'])); diff --git a/core/tests/Drupal/Tests/Core/Menu/LocalTaskManagerTest.php b/core/tests/Drupal/Tests/Core/Menu/LocalTaskManagerTest.php index cfba3cb61a72..ae72ea1c8de9 100644 --- a/core/tests/Drupal/Tests/Core/Menu/LocalTaskManagerTest.php +++ b/core/tests/Drupal/Tests/Core/Menu/LocalTaskManagerTest.php @@ -452,10 +452,10 @@ protected function setupFactoryAndLocalTaskPlugins(array $definitions, $active_p $mock->getRouteParameters(Argument::cetera())->willReturn([]); $mock->getOptions(Argument::cetera())->willReturn([]); $mock->getActive()->willReturn($plugin_id === $active_plugin_id); - $mock->getWeight()->willReturn(isset($info['weight']) ? $info['weight'] : 0); - $mock->getCacheContexts()->willReturn(isset($info['cache_contexts']) ? $info['cache_contexts'] : []); - $mock->getCacheTags()->willReturn(isset($info['cache_tags']) ? $info['cache_tags'] : []); - $mock->getCacheMaxAge()->willReturn(isset($info['cache_max_age']) ? $info['cache_max_age'] : Cache::PERMANENT); + $mock->getWeight()->willReturn($info['weight'] ?? 0); + $mock->getCacheContexts()->willReturn($info['cache_contexts'] ?? []); + $mock->getCacheTags()->willReturn($info['cache_tags'] ?? []); + $mock->getCacheMaxAge()->willReturn($info['cache_max_age'] ?? Cache::PERMANENT); $access_manager_map[] = [$info['route_name'], [], $this->account, TRUE, $info['access']]; diff --git a/core/tests/Drupal/Tests/Core/Render/RendererTest.php b/core/tests/Drupal/Tests/Core/Render/RendererTest.php index 44ccb5b73c21..8938dd44e641 100644 --- a/core/tests/Drupal/Tests/Core/Render/RendererTest.php +++ b/core/tests/Drupal/Tests/Core/Render/RendererTest.php @@ -298,7 +298,7 @@ public function providerTestRenderBasic() { if ($theme == 'container') { return '<div' . (string) (new Attribute($vars['#attributes'])) . '>' . $vars['#children'] . "</div>\n"; } - $attributes = new Attribute(['href' => $vars['#url']] + (isset($vars['#attributes']) ? $vars['#attributes'] : [])); + $attributes = new Attribute(['href' => $vars['#url']] + ($vars['#attributes'] ?? [])); return '<a' . (string) $attributes . '>' . $vars['#title'] . '</a>'; }); }; diff --git a/core/themes/claro/claro.theme b/core/themes/claro/claro.theme index ba41e6d7c86c..4004b7623cb3 100644 --- a/core/themes/claro/claro.theme +++ b/core/themes/claro/claro.theme @@ -348,9 +348,7 @@ function claro_preprocess_details(&$variables) { // Mark the details required if needed. If the file widget allows uploading // multiple files, the required state is checked by checking the state of // the first child. - $variables['required'] = isset($element[0]['#required']) ? - $element[0]['#required'] : - !empty($element['#required']); + $variables['required'] = $element[0]['#required'] ?? !empty($element['#required']); // If the error is the same as the one in the multiple field widget element, // we have to avoid displaying it twice. Seven and Stark have this issue diff --git a/core/themes/claro/src/ClaroPreRender.php b/core/themes/claro/src/ClaroPreRender.php index 40885064e95b..82f73ac9fa3b 100644 --- a/core/themes/claro/src/ClaroPreRender.php +++ b/core/themes/claro/src/ClaroPreRender.php @@ -85,7 +85,7 @@ public static function verticalTabs($element) { foreach ($children_keys as $child_key) { $last_group_with_child_key = $group_key; - $type = isset($element['group']['#groups'][$group_key][$child_key]['#type']) ? $element['group']['#groups'][$group_key][$child_key]['#type'] : NULL; + $type = $element['group']['#groups'][$group_key][$child_key]['#type'] ?? NULL; if ($type === 'details') { // Add BEM class to specify the details element is in a vertical // tabs group. -- GitLab From e125ce28f59bc3c801e85cddce797b415053b8f7 Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Mon, 15 Nov 2021 12:35:55 +1000 Subject: [PATCH 30/69] Issue #3222769 by bbrala, alexpott, longwave, Matroskeen: [November 8, 2021] Replace all list (array destructuring) assignment to the array syntax (cherry picked from commit 6d39cdeeb47c2179a8fcabcb2b41e71f89f2996e) --- composer/Plugin/Scaffold/Interpolator.php | 2 +- core/includes/batch.inc | 8 ++--- core/includes/bootstrap.inc | 2 +- core/includes/errors.inc | 2 +- core/includes/install.inc | 2 +- core/includes/theme.inc | 2 +- core/includes/update.inc | 2 +- .../Annotation/Doctrine/DocParser.php | 4 +-- .../Component/Diff/Engine/DiffEngine.php | 4 +-- .../Drupal/Component/Diff/WordLevelDiff.php | 4 +-- .../lib/Drupal/Component/Gettext/PoHeader.php | 2 +- .../DerivativeDiscoveryDecorator.php | 2 +- .../Drupal/Component/Plugin/PluginBase.php | 4 +-- .../Drupal/Component/Utility/UrlHelper.php | 4 +-- .../Ajax/AjaxResponseAttachmentsProcessor.php | 2 +- core/lib/Drupal/Core/Asset/AssetResolver.php | 10 +++---- .../Core/Asset/LibraryDependencyResolver.php | 2 +- .../Core/Asset/LibraryDiscoveryCollector.php | 4 +-- .../Cache/Context/CacheContextsManager.php | 8 ++--- .../lib/Drupal/Core/Command/DbDumpCommand.php | 2 +- .../Drupal/Core/Config/ConfigInstaller.php | 6 ++-- core/lib/Drupal/Core/Config/ConfigManager.php | 4 +-- .../Core/Controller/ControllerResolver.php | 4 +-- .../Core/Database/Driver/pgsql/Schema.php | 2 +- .../Core/Database/Driver/pgsql/Select.php | 2 +- .../Core/Database/Driver/sqlite/Schema.php | 2 +- .../Core/Datetime/Element/DateElementBase.php | 2 +- .../DependencyInjection/YamlFileLoader.php | 2 +- .../Entity/Enhancer/EntityRouteEnhancer.php | 2 +- .../Drupal/Core/Entity/EntityAccessCheck.php | 2 +- .../Core/Entity/EntityBundleAccessCheck.php | 2 +- .../Entity/EntityConstraintViolationList.php | 2 +- .../Core/Entity/EntityCreateAccessCheck.php | 2 +- .../Core/Entity/EntityDisplayRepository.php | 2 +- .../Core/Entity/EntityResolverManager.php | 10 +++---- .../Core/Entity/HtmlEntityFormController.php | 2 +- .../Core/Entity/Query/Sql/QueryAggregate.php | 2 +- .../Drupal/Core/Entity/Query/Sql/Tables.php | 2 +- .../Sql/SqlContentEntityStorageSchema.php | 2 +- .../ConfigImportSubscriber.php | 2 +- .../ResponseGeneratorSubscriber.php | 2 +- core/lib/Drupal/Core/Extension/Dependency.php | 2 +- .../Core/Layout/LayoutPluginManager.php | 2 +- .../lib/Drupal/Core/Mail/MailFormatHelper.php | 4 +-- .../Core/Menu/Form/MenuLinkDefaultForm.php | 2 +- .../Core/Menu/MenuParentFormSelector.php | 2 +- .../Plugin/Context/LazyContextRepository.php | 2 +- .../HtmlResponseAttachmentsProcessor.php | 4 +-- .../Core/Render/MainContent/HtmlRenderer.php | 2 +- .../Core/Security/DoTrustedCallbackTrait.php | 4 +-- .../Drupal/Core/StreamWrapper/LocalStream.php | 4 +-- .../Drupal/Core/Template/TwigNodeTrans.php | 4 +-- core/lib/Drupal/Core/Test/TestDiscovery.php | 2 +- core/lib/Drupal/Core/Theme/Registry.php | 4 +-- .../lib/Drupal/Core/Update/UpdateRegistry.php | 4 +-- core/lib/Drupal/Core/Url.php | 2 +- core/modules/big_pipe/src/Render/BigPipe.php | 2 +- .../Plugin/migrate/process/BlockPluginId.php | 4 +-- .../Plugin/migrate/process/BlockRegion.php | 2 +- .../Plugin/migrate/process/BlockSettings.php | 4 +-- .../src/Plugin/migrate/process/BlockTheme.php | 2 +- .../migrate/process/BlockVisibility.php | 2 +- .../block/src/Plugin/migrate/source/Block.php | 2 +- .../block/tests/src/Functional/BlockTest.php | 2 +- .../src/Plugin/CKEditorPlugin/Internal.php | 2 +- .../src/Plugin/CKEditorPlugin/StylesCombo.php | 2 +- .../src/Functional/CKEditorLoadingTest.php | 6 ++-- core/modules/color/color.module | 6 ++-- .../views/filter/ModerationStateFilter.php | 4 +-- .../ContentModerationRouteSubscriber.php | 2 +- ...ontentTranslationFieldSyncRevisionTest.php | 2 +- core/modules/contextual/contextual.module | 2 +- .../src/Functional/DateTimeFieldTest.php | 2 +- .../src/Functional/DateRangeFieldTest.php | 2 +- .../src/Functional/EditorLoadingTest.php | 12 ++++---- .../Functional/EditorUploadImageScaleTest.php | 24 +++++++-------- core/modules/field/field.module | 2 +- .../process/d6/FieldInstanceDefaults.php | 2 +- .../d6/FieldInstanceOptionTranslation.php | 2 +- .../process/d6/FieldInstanceSettings.php | 2 +- .../d6/FieldInstanceWidgetSettings.php | 2 +- .../process/d6/FieldOptionTranslation.php | 2 +- .../migrate/process/d6/FieldSettings.php | 2 +- .../process/d7/FieldInstanceDefaults.php | 2 +- .../d7/FieldInstanceOptionTranslation.php | 2 +- .../process/d7/FieldInstanceSettings.php | 2 +- .../process/d7/FieldOptionTranslation.php | 2 +- .../Kernel/Boolean/BooleanFormatterTest.php | 2 +- .../Migrate/d7/MigrateFieldInstanceTest.php | 2 +- .../Timestamp/TimestampFormatterTest.php | 2 +- .../src/Form/EntityDisplayFormBase.php | 2 +- .../field_ui/src/Form/FieldStorageAddForm.php | 2 +- core/modules/file/file.module | 4 +-- core/modules/file/file.views.inc | 2 +- .../FieldFormatter/FileMediaFormatterBase.php | 2 +- .../src/Plugin/migrate/process/d6/FileUri.php | 2 +- .../src/Functional/FileFieldValidateTest.php | 2 +- .../src/Functional/SaveUploadFormTest.php | 2 +- .../tests/src/Functional/SaveUploadTest.php | 2 +- .../file/tests/src/Kernel/UsageTest.php | 6 ++-- core/modules/filter/filter.module | 2 +- .../Functional/FilterDefaultFormatTest.php | 2 +- .../src/Functional/FilterFormatAccessTest.php | 2 +- .../help_topics/src/HelpTopicDiscovery.php | 2 +- core/modules/image/image.views.inc | 2 +- .../PathProcessorImageStyles.php | 2 +- .../src/Plugin/Field/FieldType/ImageItem.php | 2 +- .../Plugin/ImageEffect/CropImageEffect.php | 2 +- .../ImageEffect/ScaleAndCropImageEffect.php | 2 +- .../src/Functional/ImageFieldDisplayTest.php | 2 +- .../src/Access/TemporaryQueryGuard.php | 2 +- .../ResourceObjectNormalizationCacher.php | 2 +- .../src/Revisions/VersionNegotiator.php | 2 +- .../tests/src/Functional/ResourceTestBase.php | 2 +- .../JsonApiDocumentTopLevelNormalizerTest.php | 30 +++++++++---------- .../ResourceResponseValidatorTest.php | 2 +- .../LanguageNegotiationUrl.php | 2 +- .../ContentTranslationEnabledSetting.php | 2 +- .../src/Functional/LanguageSwitchingTest.php | 4 +-- .../Unit/ContentLanguageSettingsUnitTest.php | 2 +- .../Entity/LayoutBuilderEntityViewDisplay.php | 4 +-- .../src/Plugin/Block/ExtraFieldBlock.php | 2 +- .../src/Plugin/Block/FieldBlock.php | 2 +- .../SectionStorage/DefaultsSectionStorage.php | 2 +- .../OverridesSectionStorage.php | 2 +- .../src/QuickEditIntegration.php | 4 +-- .../Plugin/Field/FieldWidget/LinkWidget.php | 2 +- .../tests/src/Functional/LinkFieldUITest.php | 2 +- .../Plugin/QueueWorker/LocaleTranslation.php | 2 +- core/modules/locale/src/PoDatabaseWriter.php | 2 +- .../media/src/OEmbed/ResourceFetcher.php | 2 +- .../src/Form/MenuLinkContentForm.php | 2 +- core/modules/menu_ui/menu_ui.module | 2 +- .../MenuSettingsConstraintValidator.php | 2 +- .../menu_ui/tests/src/Traits/MenuUiTrait.php | 2 +- .../src/EntityFieldDefinitionTrait.php | 2 +- .../src/Plugin/migrate/process/Download.php | 2 +- .../src/Plugin/migrate/process/FileCopy.php | 2 +- .../src/Plugin/migrate/process/Route.php | 2 +- .../tests/src/Kernel/QueryBatchTest.php | 2 +- .../tests/src/Kernel/process/FileCopyTest.php | 4 +-- .../src/Unit/MigrationPluginManagerTest.php | 2 +- .../src/Form/MigrateUpgradeFormBase.php | 2 +- .../MigrateUpgradeFormStepsTest.php | 2 +- .../NodeTranslationExceptionSubscriber.php | 2 +- .../node/src/Plugin/Search/NodeSearch.php | 2 +- .../tests/src/Functional/PageCacheTest.php | 4 +-- .../quickedit/src/QuickEditController.php | 2 +- .../migrate/process/ImageStyleMappings.php | 2 +- .../EntityResource/EntityResourceTestBase.php | 2 +- core/modules/search/src/SearchIndex.php | 2 +- core/modules/search/src/SearchQuery.php | 4 +-- core/modules/system/system.admin.inc | 2 +- core/modules/system/system.module | 2 +- .../Form/FormTestTableSelectColspanForm.php | 2 +- .../src/Form/FormTestTableSelectFormBase.php | 2 +- .../src/Functional/Ajax/FrameworkTest.php | 2 +- .../Entity/EntityCacheTagsTestBase.php | 4 +-- .../Form/ElementsTableSelectTest.php | 12 ++++---- .../src/Functional/Menu/LocalActionTest.php | 2 +- .../src/Functional/Menu/LocalTasksTest.php | 2 +- .../Module/InstallUninstallTest.php | 2 +- .../Functional/System/AdminMetaTagTest.php | 2 +- .../System/ResponseGeneratorTest.php | 2 +- .../tests/src/Kernel/Common/UrlTest.php | 2 +- .../system/tests/src/Kernel/Mail/MailTest.php | 4 +-- .../tests/src/Unit/Menu/MenuLinkTreeTest.php | 2 +- .../tests/src/Functional/TermTest.php | 2 +- .../src/Controller/ToolbarController.php | 2 +- core/modules/toolbar/toolbar.module | 4 +-- .../update/src/ProjectSecurityRequirement.php | 2 +- core/modules/user/src/AccountForm.php | 2 +- .../modules/user/src/Event/UserFloodEvent.php | 2 +- .../d6/ProfileFieldOptionTranslation.php | 2 +- .../tests/src/Kernel/UserValidationTest.php | 2 +- .../src/EventSubscriber/RouteSubscriber.php | 6 ++-- .../views/src/Plugin/Block/ViewsBlockBase.php | 2 +- .../src/Plugin/Derivative/ViewsLocalTask.php | 4 +-- .../src/Plugin/Derivative/ViewsMenuLink.php | 2 +- .../ViewsSelection.php | 4 +-- .../views/src/Plugin/views/area/View.php | 4 +-- .../views/src/Plugin/views/display/Page.php | 2 +- .../src/Plugin/views/field/EntityField.php | 4 +-- .../views/relationship/GroupwiseMax.php | 6 ++-- .../Plugin/views/wizard/WizardPluginBase.php | 4 +-- core/modules/views/src/Views.php | 2 +- .../Plugin/NumericFormatPluralTest.php | 2 +- ...sEntitySchemaSubscriberIntegrationTest.php | 30 +++++++++---------- .../views/tests/src/Kernel/ModuleTest.php | 2 +- .../Controller/ViewAjaxControllerTest.php | 12 ++++---- .../EventSubscriber/RouteSubscriberTest.php | 4 +-- .../Plugin/display/PathPluginBaseTest.php | 28 ++++++++--------- .../tests/src/Unit/ViewExecutableTest.php | 24 +++++++-------- core/modules/views/views.api.php | 4 +-- core/modules/views/views.views.inc | 2 +- .../views_ui/src/Form/Ajax/ConfigHandler.php | 2 +- core/modules/views_ui/src/ViewUI.php | 6 ++-- .../src/WorkflowAccessControlHandler.php | 2 +- .../workspaces/src/EntityQuery/Tables.php | 2 +- .../workspaces/src/Form/WorkspaceForm.php | 2 +- .../demo_umami_content/src/InstallHelper.php | 2 +- core/scripts/run-tests.sh | 10 +++---- .../Core/Asset/AttachedAssetsTest.php | 4 +-- .../KernelTests/Core/Database/SelectTest.php | 2 +- .../Core/Entity/EntityQueryTest.php | 2 +- .../Core/Entity/EntitySchemaTest.php | 4 +-- core/tests/Drupal/Tests/BrowserTestBase.php | 2 +- .../Tests/Component/Gettext/PoHeaderTest.php | 2 +- .../Core/Cache/CacheableMetadataTest.php | 2 +- .../Core/Extension/ExtensionListTest.php | 6 ++-- .../Core/Extension/InfoParserUnitTest.php | 2 +- .../Field/BaseFieldDefinitionTestBase.php | 2 +- .../Tests/Core/Mail/MailFormatHelperTest.php | 2 +- .../Core/Render/RendererRecursionTest.php | 6 ++-- .../DrupalStandardsListenerTrait.php | 2 +- .../tests/Drupal/Tests/XdebugRequestTrait.php | 2 +- 216 files changed, 367 insertions(+), 367 deletions(-) diff --git a/composer/Plugin/Scaffold/Interpolator.php b/composer/Plugin/Scaffold/Interpolator.php index c9f6a4fedb57..251415ee5e36 100644 --- a/composer/Plugin/Scaffold/Interpolator.php +++ b/composer/Plugin/Scaffold/Interpolator.php @@ -148,7 +148,7 @@ protected function findTokens($message) { } $tokens = []; foreach ($matches as $matchSet) { - list($sourceText, $key) = $matchSet; + [$sourceText, $key] = $matchSet; $tokens[$sourceText] = $key; } return $tokens; diff --git a/core/includes/batch.inc b/core/includes/batch.inc index ce812f155b09..2dc34b33d4fe 100644 --- a/core/includes/batch.inc +++ b/core/includes/batch.inc @@ -134,7 +134,7 @@ function _batch_needs_update($new_value = NULL) { */ function _batch_do() { // Perform actual processing. - list($percentage, $message, $label) = _batch_process(); + [$percentage, $message, $label] = _batch_process(); return new JsonResponse(['status' => TRUE, 'percentage' => $percentage, 'message' => $message, 'label' => $label]); } @@ -179,11 +179,11 @@ function _batch_progress_page() { // Just use the content of the response. $fallback = $response->getContent(); - list($fallback) = explode('<!--partial-->', $fallback); + [$fallback] = explode('<!--partial-->', $fallback); print $fallback; // Perform actual processing. - list($percentage, $message, $label) = _batch_process($batch); + [$percentage, $message, $label] = _batch_process($batch); if ($percentage == 100) { $new_op = 'finished'; } @@ -283,7 +283,7 @@ function _batch_process() { $finished = 1; if ($item = $queue->claimItem()) { - list($callback, $args) = $item->data; + [$callback, $args] = $item->data; // Build the 'context' array and execute the function call. $batch_context = [ diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 12464555f759..2a28d04e0873 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -418,7 +418,7 @@ function drupal_valid_test_ua($new_prefix = NULL) { $http_user_agent = $_SERVER['HTTP_USER_AGENT'] ?? NULL; $user_agent = $_COOKIE['SIMPLETEST_USER_AGENT'] ?? $http_user_agent; if (isset($user_agent) && preg_match("/^simple(\w+\d+):(.+):(.+):(.+)$/", $user_agent, $matches)) { - list(, $prefix, $time, $salt, $hmac) = $matches; + [, $prefix, $time, $salt, $hmac] = $matches; $check_string = $prefix . ':' . $time . ':' . $salt; // Read the hash salt prepared by drupal_generate_test_ua(). // This function is called before settings.php is read and Drupal's error diff --git a/core/includes/errors.inc b/core/includes/errors.inc index 69543cf0af89..79328b3e5c58 100644 --- a/core/includes/errors.inc +++ b/core/includes/errors.inc @@ -58,7 +58,7 @@ function drupal_error_levels() { function _drupal_error_handler_real($error_level, $message, $filename, $line) { if ($error_level & error_reporting()) { $types = drupal_error_levels(); - list($severity_msg, $severity_level) = $types[$error_level]; + [$severity_msg, $severity_level] = $types[$error_level]; $backtrace = debug_backtrace(); $caller = Error::getLastCaller($backtrace); diff --git a/core/includes/install.inc b/core/includes/install.inc index c24c16533342..dcb7ffa6911f 100644 --- a/core/includes/install.inc +++ b/core/includes/install.inc @@ -282,7 +282,7 @@ function drupal_rewrite_settings($settings = [], $settings_file = NULL) { $state = 'default'; foreach (token_get_all($contents) as $token) { if (is_array($token)) { - list($type, $value) = $token; + [$type, $value] = $token; } else { $type = -1; diff --git a/core/includes/theme.inc b/core/includes/theme.inc index 7476d323c3b2..ff7052d4a8d8 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -153,7 +153,7 @@ function drupal_find_theme_functions($cache, $prefixes) { // intermediary suggestion. $pattern = $info['pattern'] ?? ($hook . '__'); // Grep only the functions which are within the prefix group. - list($first_prefix,) = explode('_', $prefix, 2); + [$first_prefix] = explode('_', $prefix, 2); if (!isset($info['base hook']) && !empty($pattern) && isset($grouped_functions[$first_prefix])) { $matches = preg_grep('/^' . $prefix . '_' . $pattern . '/', $grouped_functions[$first_prefix]); if ($matches) { diff --git a/core/includes/update.inc b/core/includes/update.inc index e3644d86744c..7aed4b1a492d 100644 --- a/core/includes/update.inc +++ b/core/includes/update.inc @@ -286,7 +286,7 @@ function update_invoke_post_update($function, &$context) { return; } - list($module, $name) = explode('_post_update_', $function, 2); + [$module, $name] = explode('_post_update_', $function, 2); module_load_include('php', $module, $module . '.post_update'); if (function_exists($function)) { try { diff --git a/core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php b/core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php index 04b81a0c1642..ccc44feca843 100644 --- a/core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php +++ b/core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php @@ -897,7 +897,7 @@ private function Constant() $identifier = $this->Identifier(); if ( ! defined($identifier) && false !== strpos($identifier, '::') && '\\' !== $identifier[0]) { - list($className, $const) = explode('::', $identifier); + [$className, $const] = explode('::', $identifier); $alias = (false === $pos = strpos($className, '\\')) ? $className : substr($className, 0, $pos); $found = false; @@ -1099,7 +1099,7 @@ private function Arrayx() $this->match(DocLexer::T_CLOSE_CURLY_BRACES); foreach ($values as $value) { - list ($key, $val) = $value; + [$key, $val] = $value; if ($key !== null) { $array[$key] = $val; diff --git a/core/lib/Drupal/Component/Diff/Engine/DiffEngine.php b/core/lib/Drupal/Component/Diff/Engine/DiffEngine.php index bd3cc10a6216..f8ec05fbbbcb 100644 --- a/core/lib/Drupal/Component/Diff/Engine/DiffEngine.php +++ b/core/lib/Drupal/Component/Diff/Engine/DiffEngine.php @@ -165,7 +165,7 @@ protected function _diag($xoff, $xlim, $yoff, $ylim, $nchunks) { // Things seems faster (I'm not sure I understand why) // when the shortest sequence in X. $flip = TRUE; - list($xoff, $xlim, $yoff, $ylim) = [$yoff, $ylim, $xoff, $xlim]; + [$xoff, $xlim, $yoff, $ylim] = [$yoff, $ylim, $xoff, $xlim]; } if ($flip) { @@ -302,7 +302,7 @@ protected function _compareseq($xoff, $xlim, $yoff, $ylim) { //$nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5); //$nchunks = max(2, min(8, (int)$nchunks)); $nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1; - list($lcs, $seps) = $this->_diag($xoff, $xlim, $yoff, $ylim, $nchunks); + [$lcs, $seps] = $this->_diag($xoff, $xlim, $yoff, $ylim, $nchunks); } if ($lcs == 0) { diff --git a/core/lib/Drupal/Component/Diff/WordLevelDiff.php b/core/lib/Drupal/Component/Diff/WordLevelDiff.php index 66c6e1a90f2c..da6c9b6d5b57 100644 --- a/core/lib/Drupal/Component/Diff/WordLevelDiff.php +++ b/core/lib/Drupal/Component/Diff/WordLevelDiff.php @@ -14,8 +14,8 @@ class WordLevelDiff extends MappedDiff { const MAX_LINE_LENGTH = 10000; public function __construct($orig_lines, $closing_lines) { - list($orig_words, $orig_stripped) = $this->_split($orig_lines); - list($closing_words, $closing_stripped) = $this->_split($closing_lines); + [$orig_words, $orig_stripped] = $this->_split($orig_lines); + [$closing_words, $closing_stripped] = $this->_split($closing_lines); parent::__construct($orig_words, $closing_words, $orig_stripped, $closing_stripped); } diff --git a/core/lib/Drupal/Component/Gettext/PoHeader.php b/core/lib/Drupal/Component/Gettext/PoHeader.php index bdd0d20a5156..8bc912d3bd99 100644 --- a/core/lib/Drupal/Component/Gettext/PoHeader.php +++ b/core/lib/Drupal/Component/Gettext/PoHeader.php @@ -254,7 +254,7 @@ private function parseHeader($header) { $lines = array_map('trim', explode("\n", $header)); foreach ($lines as $line) { if ($line) { - list($tag, $contents) = explode(":", $line, 2); + [$tag, $contents] = explode(":", $line, 2); $header_parsed[trim($tag)] = trim($contents); } } diff --git a/core/lib/Drupal/Component/Plugin/Discovery/DerivativeDiscoveryDecorator.php b/core/lib/Drupal/Component/Plugin/Discovery/DerivativeDiscoveryDecorator.php index 6b47af01717b..7f629199b224 100644 --- a/core/lib/Drupal/Component/Plugin/Discovery/DerivativeDiscoveryDecorator.php +++ b/core/lib/Drupal/Component/Plugin/Discovery/DerivativeDiscoveryDecorator.php @@ -55,7 +55,7 @@ public function getDefinition($plugin_id, $exception_on_invalid = TRUE) { // $base_plugin_id. $plugin_definition = $this->decorated->getDefinition($plugin_id, FALSE); - list($base_plugin_id, $derivative_id) = $this->decodePluginId($plugin_id); + [$base_plugin_id, $derivative_id] = $this->decodePluginId($plugin_id); $base_plugin_definition = $this->decorated->getDefinition($base_plugin_id, $exception_on_invalid); if ($base_plugin_definition) { $deriver = $this->getDeriver($base_plugin_id, $base_plugin_definition); diff --git a/core/lib/Drupal/Component/Plugin/PluginBase.php b/core/lib/Drupal/Component/Plugin/PluginBase.php index 7bdc4a5fde35..67691784b3ca 100644 --- a/core/lib/Drupal/Component/Plugin/PluginBase.php +++ b/core/lib/Drupal/Component/Plugin/PluginBase.php @@ -69,7 +69,7 @@ public function getPluginId() { public function getBaseId() { $plugin_id = $this->getPluginId(); if (strpos($plugin_id, static::DERIVATIVE_SEPARATOR)) { - list($plugin_id) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2); + [$plugin_id] = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2); } return $plugin_id; } @@ -81,7 +81,7 @@ public function getDerivativeId() { $plugin_id = $this->getPluginId(); $derivative_id = NULL; if (strpos($plugin_id, static::DERIVATIVE_SEPARATOR)) { - list(, $derivative_id) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2); + [, $derivative_id] = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2); } return $derivative_id; } diff --git a/core/lib/Drupal/Component/Utility/UrlHelper.php b/core/lib/Drupal/Component/Utility/UrlHelper.php index 137b4118ce03..b23a21351847 100644 --- a/core/lib/Drupal/Component/Utility/UrlHelper.php +++ b/core/lib/Drupal/Component/Utility/UrlHelper.php @@ -147,14 +147,14 @@ public static function parse($url) { if ($scheme_delimiter_position !== FALSE && ($query_delimiter_position === FALSE || $scheme_delimiter_position < $query_delimiter_position)) { // Split off the fragment, if any. if (strpos($url, '#') !== FALSE) { - list($url, $options['fragment']) = explode('#', $url, 2); + [$url, $options['fragment']] = explode('#', $url, 2); } // Split off everything before the query string into 'path'. $parts = explode('?', $url, 2); // Don't support URLs without a path, like 'http://'. - list(, $path) = explode('://', $parts[0], 2); + [, $path] = explode('://', $parts[0], 2); if ($path != '') { $options['path'] = $parts[0]; } diff --git a/core/lib/Drupal/Core/Ajax/AjaxResponseAttachmentsProcessor.php b/core/lib/Drupal/Core/Ajax/AjaxResponseAttachmentsProcessor.php index 55a3b4374c0a..600a6dbd7163 100644 --- a/core/lib/Drupal/Core/Ajax/AjaxResponseAttachmentsProcessor.php +++ b/core/lib/Drupal/Core/Ajax/AjaxResponseAttachmentsProcessor.php @@ -142,7 +142,7 @@ protected function buildAttachmentsCommands(AjaxResponse $response, Request $req ->setAlreadyLoadedLibraries(isset($ajax_page_state['libraries']) ? explode(',', $ajax_page_state['libraries']) : []) ->setSettings($attachments['drupalSettings'] ?? []); $css_assets = $this->assetResolver->getCssAssets($assets, $optimize_css); - list($js_assets_header, $js_assets_footer) = $this->assetResolver->getJsAssets($assets, $optimize_js); + [$js_assets_header, $js_assets_footer] = $this->assetResolver->getJsAssets($assets, $optimize_js); // First, AttachedAssets::setLibraries() ensures duplicate libraries are // removed: it converts it to a set of libraries if necessary. Second, diff --git a/core/lib/Drupal/Core/Asset/AssetResolver.php b/core/lib/Drupal/Core/Asset/AssetResolver.php index c52ee7ffad55..35d28bbe8ce9 100644 --- a/core/lib/Drupal/Core/Asset/AssetResolver.php +++ b/core/lib/Drupal/Core/Asset/AssetResolver.php @@ -130,7 +130,7 @@ public function getCssAssets(AttachedAssetsInterface $assets, $optimize) { ]; foreach ($libraries_to_load as $library) { - list($extension, $name) = explode('/', $library, 2); + [$extension, $name] = explode('/', $library, 2); $definition = $this->libraryDiscovery->getLibraryByName($extension, $name); if (isset($definition['css'])) { foreach ($definition['css'] as $options) { @@ -196,7 +196,7 @@ protected function getJsSettingsAssets(AttachedAssetsInterface $assets) { $settings = []; foreach ($this->getLibrariesToLoad($assets) as $library) { - list($extension, $name) = explode('/', $library, 2); + [$extension, $name] = explode('/', $library, 2); $definition = $this->libraryDiscovery->getLibraryByName($extension, $name); if (isset($definition['drupalSettings'])) { $settings = NestedArray::mergeDeepArray([$settings, $definition['drupalSettings']], TRUE); @@ -218,7 +218,7 @@ public function getJsAssets(AttachedAssetsInterface $assets, $optimize) { $cid = 'js:' . $theme_info->getName() . ':' . $this->languageManager->getCurrentLanguage()->getId() . ':' . Crypt::hashBase64(serialize($libraries_to_load)) . (int) (count($assets->getSettings()) > 0) . (int) $optimize; if ($cached = $this->cache->get($cid)) { - list($js_assets_header, $js_assets_footer, $settings, $settings_in_header) = $cached->data; + [$js_assets_header, $js_assets_footer, $settings, $settings_in_header] = $cached->data; } else { $javascript = []; @@ -236,7 +236,7 @@ public function getJsAssets(AttachedAssetsInterface $assets, $optimize) { // Collect all libraries that contain JS assets and are in the header. $header_js_libraries = []; foreach ($libraries_to_load as $library) { - list($extension, $name) = explode('/', $library, 2); + [$extension, $name] = explode('/', $library, 2); $definition = $this->libraryDiscovery->getLibraryByName($extension, $name); if (isset($definition['js']) && !empty($definition['header'])) { $header_js_libraries[] = $library; @@ -248,7 +248,7 @@ public function getJsAssets(AttachedAssetsInterface $assets, $optimize) { $header_js_libraries = $this->libraryDependencyResolver->getLibrariesWithDependencies($header_js_libraries); foreach ($libraries_to_load as $library) { - list($extension, $name) = explode('/', $library, 2); + [$extension, $name] = explode('/', $library, 2); $definition = $this->libraryDiscovery->getLibraryByName($extension, $name); if (isset($definition['js'])) { foreach ($definition['js'] as $options) { diff --git a/core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php b/core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php index 6b94e3178e9a..4c31c1b124ba 100644 --- a/core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php +++ b/core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php @@ -64,7 +64,7 @@ public function getLibrariesWithDependencies(array $libraries) { protected function doGetDependencies(array $libraries_with_unresolved_dependencies, array $final_libraries = []) { foreach ($libraries_with_unresolved_dependencies as $library) { if (!isset($final_libraries[$library])) { - list($extension, $name) = explode('/', $library, 2); + [$extension, $name] = explode('/', $library, 2); $definition = $this->libraryDiscovery->getLibraryByName($extension, $name); if (!empty($definition['dependencies'])) { $final_libraries = $this->doGetDependencies($definition['dependencies'], $final_libraries); diff --git a/core/lib/Drupal/Core/Asset/LibraryDiscoveryCollector.php b/core/lib/Drupal/Core/Asset/LibraryDiscoveryCollector.php index d72c58477390..3634892de9ed 100644 --- a/core/lib/Drupal/Core/Asset/LibraryDiscoveryCollector.php +++ b/core/lib/Drupal/Core/Asset/LibraryDiscoveryCollector.php @@ -96,7 +96,7 @@ protected function getLibraryDefinitions($extension) { else { // Otherwise replace with existing library definition if it exists. // Throw an exception if it doesn't. - list($replacement_extension, $replacement_name) = explode('/', $definition['override']); + [$replacement_extension, $replacement_name] = explode('/', $definition['override']); $replacement_definition = $this->get($replacement_extension); if (isset($replacement_definition[$replacement_name])) { $libraries[$name] = $replacement_definition[$replacement_name]; @@ -145,7 +145,7 @@ protected function applyLibrariesExtend($extension, $library_name, $library_defi // Only string library names are allowed. throw new InvalidLibrariesExtendSpecificationException('The libraries-extend specification for each library must be a list of strings.'); } - list($new_extension, $new_library_name) = explode('/', $library_extend_name, 2); + [$new_extension, $new_library_name] = explode('/', $library_extend_name, 2); $new_libraries = $this->get($new_extension); if (isset($new_libraries[$new_library_name])) { $library_definition = NestedArray::mergeDeep($library_definition, $new_libraries[$new_library_name]); diff --git a/core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php b/core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php index 377ba7bd5a68..cd88b24bf729 100644 --- a/core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php +++ b/core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php @@ -106,7 +106,7 @@ public function convertTokensToKeys(array $context_tokens) { // Iterate over cache contexts that have been optimized away and get their // cacheability metadata. foreach (static::parseTokens(array_diff($context_tokens, $optimized_tokens)) as $context_token) { - list($context_id, $parameter) = $context_token; + [$context_id, $parameter] = $context_token; $context = $this->getService($context_id); $cacheable_metadata = $cacheable_metadata->merge($context->getCacheableMetadata($parameter)); } @@ -114,7 +114,7 @@ public function convertTokensToKeys(array $context_tokens) { sort($optimized_tokens); $keys = []; foreach (array_combine($optimized_tokens, static::parseTokens($optimized_tokens)) as $context_token => $context) { - list($context_id, $parameter) = $context; + [$context_id, $parameter] = $context; $keys[] = '[' . $context_token . ']=' . $this->getService($context_id)->getContext($parameter); } @@ -164,7 +164,7 @@ public function optimizeTokens(array $context_tokens) { $parameter = NULL; $context_id = $context_token; if (strpos($context_token, ':') !== FALSE) { - list($context_id, $parameter) = explode(':', $context_token); + [$context_id, $parameter] = explode(':', $context_token); } // Context tokens without: @@ -236,7 +236,7 @@ public static function parseTokens(array $context_tokens) { $context_id = $context; $parameter = NULL; if (strpos($context, ':') !== FALSE) { - list($context_id, $parameter) = explode(':', $context, 2); + [$context_id, $parameter] = explode(':', $context, 2); } $contexts_with_parameters[] = [$context_id, $parameter]; } diff --git a/core/lib/Drupal/Core/Command/DbDumpCommand.php b/core/lib/Drupal/Core/Command/DbDumpCommand.php index bb345e4d2659..a36366cc2eb9 100644 --- a/core/lib/Drupal/Core/Command/DbDumpCommand.php +++ b/core/lib/Drupal/Core/Command/DbDumpCommand.php @@ -279,7 +279,7 @@ protected function getTableCollation(Connection $connection, $table, &$definitio // Map the collation to a character set. For example, 'utf8mb4_general_ci' // (MySQL 5) or 'utf8mb4_0900_ai_ci' (MySQL 8) will be mapped to 'utf8mb4'. - list($charset,) = explode('_', $data['Collation'], 2); + [$charset] = explode('_', $data['Collation'], 2); // Set `mysql_character_set`. This will be ignored by other backends. $definition['mysql_character_set'] = $charset; diff --git a/core/lib/Drupal/Core/Config/ConfigInstaller.php b/core/lib/Drupal/Core/Config/ConfigInstaller.php index 16472b65ed10..107ca8a0716e 100644 --- a/core/lib/Drupal/Core/Config/ConfigInstaller.php +++ b/core/lib/Drupal/Core/Config/ConfigInstaller.php @@ -525,7 +525,7 @@ public function checkConfigurationToInstall($type, $name) { $profile_storages = $this->getProfileStorages($name); // Check the dependencies of configuration provided by the module. - list($invalid_default_config, $missing_dependencies) = $this->findDefaultConfigWithUnmetDependencies($storage, $enabled_extensions, $profile_storages); + [$invalid_default_config, $missing_dependencies] = $this->findDefaultConfigWithUnmetDependencies($storage, $enabled_extensions, $profile_storages); if (!empty($invalid_default_config)) { throw UnmetDependenciesException::create($name, array_unique($missing_dependencies, SORT_REGULAR)); } @@ -593,7 +593,7 @@ protected function findDefaultConfigWithUnmetDependencies(StorageInterface $stor protected function validateDependencies($config_name, array $data, array $enabled_extensions, array $all_config) { if (!isset($data['dependencies'])) { // Simple config or a config entity without dependencies. - list($provider) = explode('.', $config_name, 2); + [$provider] = explode('.', $config_name, 2); return in_array($provider, $enabled_extensions, TRUE); } @@ -619,7 +619,7 @@ protected function validateDependencies($config_name, array $data, array $enable protected function getMissingDependencies($config_name, array $data, array $enabled_extensions, array $all_config) { $missing = []; if (isset($data['dependencies'])) { - list($provider) = explode('.', $config_name, 2); + [$provider] = explode('.', $config_name, 2); $all_dependencies = $data['dependencies']; // Ensure enforced dependencies are included. diff --git a/core/lib/Drupal/Core/Config/ConfigManager.php b/core/lib/Drupal/Core/Config/ConfigManager.php index 1aca27fa55f0..db67c29959ba 100644 --- a/core/lib/Drupal/Core/Config/ConfigManager.php +++ b/core/lib/Drupal/Core/Config/ConfigManager.php @@ -466,7 +466,7 @@ protected function callOnDependencyRemoval(ConfigEntityInterface $entity, array } else { // Ignore the bundle. - list($entity_type_id,, $uuid) = explode(':', $name); + [$entity_type_id,, $uuid] = explode(':', $name); return $this->entityRepository->loadEntityByConfigTarget($entity_type_id, $uuid); } }, $affected_dependencies[$type]); @@ -513,7 +513,7 @@ public function findMissingContentDependencies() { } foreach (array_unique($content_dependencies) as $content_dependency) { // Format of the dependency is entity_type:bundle:uuid. - list($entity_type, $bundle, $uuid) = explode(':', $content_dependency, 3); + [$entity_type, $bundle, $uuid] = explode(':', $content_dependency, 3); if (!$this->entityRepository->loadEntityByUuid($entity_type, $uuid)) { $missing_dependencies[$uuid] = [ 'entity_type' => $entity_type, diff --git a/core/lib/Drupal/Core/Controller/ControllerResolver.php b/core/lib/Drupal/Core/Controller/ControllerResolver.php index 36312c1a1211..ec64c1d89b03 100644 --- a/core/lib/Drupal/Core/Controller/ControllerResolver.php +++ b/core/lib/Drupal/Core/Controller/ControllerResolver.php @@ -104,11 +104,11 @@ protected function createController($controller) { // Controller in the service:method notation. $count = substr_count($controller, ':'); if ($count == 1) { - list($class_or_service, $method) = explode(':', $controller, 2); + [$class_or_service, $method] = explode(':', $controller, 2); } // Controller in the class::method notation. elseif (strpos($controller, '::') !== FALSE) { - list($class_or_service, $method) = explode('::', $controller, 2); + [$class_or_service, $method] = explode('::', $controller, 2); } else { throw new \LogicException(sprintf('Unable to parse the controller name "%s".', $controller)); diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php index afb7f604fbde..59795d39210c 100644 --- a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php +++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php @@ -566,7 +566,7 @@ public function renameTable($table, $new_name) { // Get the schema and tablename for the old table. $old_full_name = str_replace('"', '', $this->connection->prefixTables('{' . $table . '}')); - list($old_schema, $old_table_name) = strpos($old_full_name, '.') ? explode('.', $old_full_name) : ['public', $old_full_name]; + [$old_schema, $old_table_name] = strpos($old_full_name, '.') ? explode('.', $old_full_name) : ['public', $old_full_name]; // Index names and constraint names are global in PostgreSQL, so we need to // rename them when renaming the table. diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php index b5d22d42c9ea..2a9bc4a58726 100644 --- a/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php +++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php @@ -63,7 +63,7 @@ public function orderBy($field, $direction = 'ASC') { // If there is a table alias specified, split it up. if (strpos($field, '.') !== FALSE) { - list($table, $table_field) = explode('.', $field); + [$table, $table_field] = explode('.', $field); } // Figure out if the field has already been added. foreach ($this->fields as $existing_field) { diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php index 2949e0619d5a..1895522e810a 100644 --- a/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php +++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php @@ -500,7 +500,7 @@ protected function introspectSchema($table) { $length = NULL; } if (isset($mapped_fields[$type])) { - list($type, $size) = explode(':', $mapped_fields[$type]); + [$type, $size] = explode(':', $mapped_fields[$type]); $schema['fields'][$row->name] = [ 'type' => $type, 'size' => $size, diff --git a/core/lib/Drupal/Core/Datetime/Element/DateElementBase.php b/core/lib/Drupal/Core/Datetime/Element/DateElementBase.php index 433cdf8b1810..24f553a41fe3 100644 --- a/core/lib/Drupal/Core/Datetime/Element/DateElementBase.php +++ b/core/lib/Drupal/Core/Datetime/Element/DateElementBase.php @@ -33,7 +33,7 @@ abstract class DateElementBase extends FormElement { protected static function datetimeRangeYears($string, $date = NULL) { $datetime = new DrupalDateTime(); $this_year = $datetime->format('Y'); - list($min_year, $max_year) = explode(':', $string); + [$min_year, $max_year] = explode(':', $string); // Valid patterns would be -5:+5, 0:+1, 2008:2010. $plus_pattern = '@[\+|\-][0-9]{1,4}@'; diff --git a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php index cab99558f0aa..215babce46ff 100644 --- a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php +++ b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php @@ -119,7 +119,7 @@ private function parseDefinitions($content, $file) } else { $basename = basename($file); - list($provider, ) = explode('.', $basename, 2); + [$provider, ] = explode('.', $basename, 2); } foreach ($content['services'] as $id => $service) { if (is_array($service)) { diff --git a/core/lib/Drupal/Core/Entity/Enhancer/EntityRouteEnhancer.php b/core/lib/Drupal/Core/Entity/Enhancer/EntityRouteEnhancer.php index aa0b41a2fa9e..e895273d8893 100644 --- a/core/lib/Drupal/Core/Entity/Enhancer/EntityRouteEnhancer.php +++ b/core/lib/Drupal/Core/Entity/Enhancer/EntityRouteEnhancer.php @@ -105,7 +105,7 @@ protected function enhanceEntityView(array $defaults, Request $request) { $defaults['_controller'] = '\Drupal\Core\Entity\Controller\EntityViewController::view'; if (strpos($defaults['_entity_view'], '.') !== FALSE) { // The _entity_view entry is of the form entity_type.view_mode. - list($entity_type, $view_mode) = explode('.', $defaults['_entity_view']); + [$entity_type, $view_mode] = explode('.', $defaults['_entity_view']); $defaults['view_mode'] = $view_mode; } else { diff --git a/core/lib/Drupal/Core/Entity/EntityAccessCheck.php b/core/lib/Drupal/Core/Entity/EntityAccessCheck.php index 8ca8cf66cded..9d44998f2f47 100644 --- a/core/lib/Drupal/Core/Entity/EntityAccessCheck.php +++ b/core/lib/Drupal/Core/Entity/EntityAccessCheck.php @@ -56,7 +56,7 @@ class EntityAccessCheck implements AccessInterface { public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account) { // Split the entity type and the operation. $requirement = $route->getRequirement('_entity_access'); - list($entity_type, $operation) = explode('.', $requirement); + [$entity_type, $operation] = explode('.', $requirement); // If $entity_type parameter is a valid entity, call its own access check. $parameters = $route_match->getParameters(); if ($parameters->has($entity_type)) { diff --git a/core/lib/Drupal/Core/Entity/EntityBundleAccessCheck.php b/core/lib/Drupal/Core/Entity/EntityBundleAccessCheck.php index 8f1928567798..f43f7bb80620 100644 --- a/core/lib/Drupal/Core/Entity/EntityBundleAccessCheck.php +++ b/core/lib/Drupal/Core/Entity/EntityBundleAccessCheck.php @@ -42,7 +42,7 @@ class EntityBundleAccessCheck implements AccessInterface { public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account) { @trigger_error('The ' . __NAMESPACE__ . '\EntityBundleAccessCheck is deprecated in drupal:9.2.0 and is removed from drupal:10.0.0. Specify the list of bundles in the entity parameter, under "bundle" key, as a sequence, instead. See https://www.drupal.org/node/3155569', E_USER_DEPRECATED); if ($route->hasRequirement('_entity_bundles')) { - list($entity_type, $bundle_definition) = explode(':', $route->getRequirement('_entity_bundles')); + [$entity_type, $bundle_definition] = explode(':', $route->getRequirement('_entity_bundles')); $bundles = explode('|', $bundle_definition); $parameters = $route_match->getParameters(); if ($parameters->has($entity_type)) { diff --git a/core/lib/Drupal/Core/Entity/EntityConstraintViolationList.php b/core/lib/Drupal/Core/Entity/EntityConstraintViolationList.php index 6081a8de1683..aaa26ecfc708 100644 --- a/core/lib/Drupal/Core/Entity/EntityConstraintViolationList.php +++ b/core/lib/Drupal/Core/Entity/EntityConstraintViolationList.php @@ -64,7 +64,7 @@ protected function groupViolationOffsets() { foreach ($this as $offset => $violation) { if ($path = $violation->getPropertyPath()) { // An example of $path might be 'title.0.value'. - list($field_name) = explode('.', $path, 2); + [$field_name] = explode('.', $path, 2); if ($this->entity->hasField($field_name)) { $this->violationOffsetsByField[$field_name][$offset] = $offset; } diff --git a/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php b/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php index 233285e09042..25566ba4bf64 100644 --- a/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php +++ b/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php @@ -51,7 +51,7 @@ public function __construct(EntityTypeManagerInterface $entity_type_manager) { * The access result. */ public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account) { - list($entity_type, $bundle) = explode(':', $route->getRequirement($this->requirementsKey) . ':'); + [$entity_type, $bundle] = explode(':', $route->getRequirement($this->requirementsKey) . ':'); // The bundle argument can contain request argument placeholders like // {name}, loop over the raw variables and attempt to replace them in the diff --git a/core/lib/Drupal/Core/Entity/EntityDisplayRepository.php b/core/lib/Drupal/Core/Entity/EntityDisplayRepository.php index 972a883840a9..571c978753ae 100644 --- a/core/lib/Drupal/Core/Entity/EntityDisplayRepository.php +++ b/core/lib/Drupal/Core/Entity/EntityDisplayRepository.php @@ -112,7 +112,7 @@ protected function getAllDisplayModesByEntityType($display_type) { else { $this->displayModeInfo[$display_type] = []; foreach ($this->entityTypeManager->getStorage($entity_type_id)->loadMultiple() as $display_mode) { - list($display_mode_entity_type, $display_mode_name) = explode('.', $display_mode->id(), 2); + [$display_mode_entity_type, $display_mode_name] = explode('.', $display_mode->id(), 2); $this->displayModeInfo[$display_type][$display_mode_entity_type][$display_mode_name] = $display_mode->toArray(); } $this->moduleHandler->alter($key, $this->displayModeInfo[$display_type]); diff --git a/core/lib/Drupal/Core/Entity/EntityResolverManager.php b/core/lib/Drupal/Core/Entity/EntityResolverManager.php index 25cb70c33505..23fcebdf80e0 100644 --- a/core/lib/Drupal/Core/Entity/EntityResolverManager.php +++ b/core/lib/Drupal/Core/Entity/EntityResolverManager.php @@ -95,7 +95,7 @@ protected function getControllerClass(array $defaults) { // service. This is dangerous as the controller could depend on services // that could not exist at this point. There is however no other way to // do it, as the container does not allow static introspection. - list($class_or_service, $method) = explode(':', $controller, 2); + [$class_or_service, $method] = explode(':', $controller, 2); return [$this->classResolver->getInstanceFromDefinition($class_or_service), $method]; } elseif (strpos($controller, '::') !== FALSE) { @@ -124,7 +124,7 @@ protected function setParametersFromReflection($controller, Route $route) { $result = FALSE; if (is_array($controller)) { - list($instance, $method) = $controller; + [$instance, $method] = $controller; $reflection = new \ReflectionMethod($instance, $method); } else { @@ -166,10 +166,10 @@ protected function setParametersFromReflection($controller, Route $route) { */ protected function setParametersFromEntityInformation(Route $route) { if ($entity_view = $route->getDefault('_entity_view')) { - list($entity_type) = explode('.', $entity_view, 2); + [$entity_type] = explode('.', $entity_view, 2); } elseif ($entity_form = $route->getDefault('_entity_form')) { - list($entity_type) = explode('.', $entity_form, 2); + [$entity_type] = explode('.', $entity_form, 2); } // Do not add parameter information if the route does not declare a @@ -183,7 +183,7 @@ protected function setParametersFromEntityInformation(Route $route) { foreach ($parameter_definitions as $info) { if (isset($info['type']) && (strpos($info['type'], 'entity:') === 0)) { // The parameter types are in the form 'entity:$entity_type'. - list(, $parameter_entity_type) = explode(':', $info['type'], 2); + [, $parameter_entity_type] = explode(':', $info['type'], 2); if ($parameter_entity_type == $entity_type) { return; } diff --git a/core/lib/Drupal/Core/Entity/HtmlEntityFormController.php b/core/lib/Drupal/Core/Entity/HtmlEntityFormController.php index f431bc17c0a5..fd4db8439e60 100644 --- a/core/lib/Drupal/Core/Entity/HtmlEntityFormController.php +++ b/core/lib/Drupal/Core/Entity/HtmlEntityFormController.php @@ -64,7 +64,7 @@ protected function getFormArgument(RouteMatchInterface $route_match) { protected function getFormObject(RouteMatchInterface $route_match, $form_arg) { // If no operation is provided, use 'default'. $form_arg .= '.default'; - list ($entity_type_id, $operation) = explode('.', $form_arg); + [$entity_type_id, $operation] = explode('.', $form_arg); $form_object = $this->entityTypeManager->getFormObject($entity_type_id, $operation); diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/QueryAggregate.php b/core/lib/Drupal/Core/Entity/Query/Sql/QueryAggregate.php index 2e2d7a01c1a2..03e00ef45102 100644 --- a/core/lib/Drupal/Core/Entity/Query/Sql/QueryAggregate.php +++ b/core/lib/Drupal/Core/Entity/Query/Sql/QueryAggregate.php @@ -104,7 +104,7 @@ protected function addGroupBy() { $field = $group_by['field']; $sql_field = $this->getSqlField($field, $group_by['langcode']); $this->sqlGroupBy[$sql_field] = $sql_field; - list($table, $real_sql_field) = explode('.', $sql_field); + [$table, $real_sql_field] = explode('.', $sql_field); $this->sqlFields[$sql_field] = [$table, $real_sql_field, $this->createSqlAlias($field, $real_sql_field)]; } diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php b/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php index 5eb10f86a2bb..43b7be38a3ad 100644 --- a/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php +++ b/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php @@ -284,7 +284,7 @@ public function addField($field, $type, $langcode) { // Relationship specifier can also contain the entity type ID, i.e. // entity:node, entity:user or entity:taxonomy. if (strpos($relationship_specifier, ':') !== FALSE) { - list($relationship_specifier, $entity_type_id) = explode(':', $relationship_specifier, 2); + [$relationship_specifier, $entity_type_id] = explode(':', $relationship_specifier, 2); } // Check for a valid relationship. if (isset($propertyDefinitions[$relationship_specifier]) && $propertyDefinitions[$relationship_specifier] instanceof DataReferenceDefinitionInterface) { diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php index 9f53bd7c6726..1390593498af 100644 --- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php +++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php @@ -1144,7 +1144,7 @@ protected function getFieldSchemaData($field_name, array $field_schema, array $c // Allow for indexes and unique keys to specified as an array of column // name and length. if (is_array($column)) { - list($column_name, $length) = $column; + [$column_name, $length] = $column; $data[$real_key][] = [$column_mapping[$column_name], $length]; } else { diff --git a/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php index 906dab45deb9..99b933754d0f 100644 --- a/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php @@ -227,7 +227,7 @@ protected function validateDependencies(ConfigImporter $config_importer) { foreach ($config_importer->getStorageComparer()->getSourceStorage()->listAll() as $name) { // Ensure that the config owner is installed. This checks all // configuration including configuration entities. - list($owner,) = explode('.', $name, 2); + [$owner] = explode('.', $name, 2); if ($owner !== 'core') { $message = FALSE; if (!isset($core_extension['module'][$owner]) && isset($module_data[$owner])) { diff --git a/core/lib/Drupal/Core/EventSubscriber/ResponseGeneratorSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ResponseGeneratorSubscriber.php index bf45269588ab..2b5c1461a99b 100644 --- a/core/lib/Drupal/Core/EventSubscriber/ResponseGeneratorSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/ResponseGeneratorSubscriber.php @@ -25,7 +25,7 @@ public function onRespond(ResponseEvent $event) { $response = $event->getResponse(); // Set the generator in the HTTP header. - list($version) = explode('.', \Drupal::VERSION, 2); + [$version] = explode('.', \Drupal::VERSION, 2); $response->headers->set('X-Generator', 'Drupal ' . $version . ' (https://www.drupal.org)'); } diff --git a/core/lib/Drupal/Core/Extension/Dependency.php b/core/lib/Drupal/Core/Extension/Dependency.php index da36f612a8e9..42caa67df35d 100644 --- a/core/lib/Drupal/Core/Extension/Dependency.php +++ b/core/lib/Drupal/Core/Extension/Dependency.php @@ -124,7 +124,7 @@ public function isCompatible($version) { */ public static function createFromString($dependency) { if (strpos($dependency, ':') !== FALSE) { - list($project, $dependency) = explode(':', $dependency); + [$project, $dependency] = explode(':', $dependency); } else { $project = ''; diff --git a/core/lib/Drupal/Core/Layout/LayoutPluginManager.php b/core/lib/Drupal/Core/Layout/LayoutPluginManager.php index 12d740350918..4d211aaefdba 100644 --- a/core/lib/Drupal/Core/Layout/LayoutPluginManager.php +++ b/core/lib/Drupal/Core/Layout/LayoutPluginManager.php @@ -117,7 +117,7 @@ public function processDefinition(&$definition, $plugin_id) { // Add a dependency on the provider of the library. if ($library = $definition->getLibrary()) { $config_dependencies = $definition->getConfigDependencies(); - list($library_provider) = explode('/', $library, 2); + [$library_provider] = explode('/', $library, 2); if ($this->moduleHandler->moduleExists($library_provider)) { $config_dependencies['module'][] = $library_provider; } diff --git a/core/lib/Drupal/Core/Mail/MailFormatHelper.php b/core/lib/Drupal/Core/Mail/MailFormatHelper.php index 12b956ceac2f..42468cbbf8b3 100644 --- a/core/lib/Drupal/Core/Mail/MailFormatHelper.php +++ b/core/lib/Drupal/Core/Mail/MailFormatHelper.php @@ -153,7 +153,7 @@ public static function htmlToText($string, $allowed_tags = NULL) { // Process HTML tags (but don't output any literally). if ($tag) { - list($tagname) = explode(' ', strtolower($value), 2); + [$tagname] = explode(' ', strtolower($value), 2); switch ($tagname) { // List counters. case 'ul': @@ -334,7 +334,7 @@ protected static function htmlToMailUrls($match = NULL, $reset = FALSE) { static::$regexp = '@^' . preg_quote($base_path, '@') . '@'; } if ($match) { - list(, , $url, $label) = $match; + [, , $url, $label] = $match; // Ensure all URLs are absolute. static::$urls[] = strpos($url, '://') ? $url : preg_replace(static::$regexp, $base_url . '/', $url); return $label . ' [' . count(static::$urls) . ']'; diff --git a/core/lib/Drupal/Core/Menu/Form/MenuLinkDefaultForm.php b/core/lib/Drupal/Core/Menu/Form/MenuLinkDefaultForm.php index 98969910bd7d..36b91f6b3c20 100644 --- a/core/lib/Drupal/Core/Menu/Form/MenuLinkDefaultForm.php +++ b/core/lib/Drupal/Core/Menu/Form/MenuLinkDefaultForm.php @@ -158,7 +158,7 @@ public function extractFormValues(array &$form, FormStateInterface $form_state) $new_definition['enabled'] = $form_state->getValue('enabled') ? 1 : 0; $new_definition['weight'] = (int) $form_state->getValue('weight'); $new_definition['expanded'] = $form_state->getValue('expanded') ? 1 : 0; - list($menu_name, $parent) = explode(':', $form_state->getValue('menu_parent'), 2); + [$menu_name, $parent] = explode(':', $form_state->getValue('menu_parent'), 2); if (!empty($menu_name)) { $new_definition['menu_name'] = $menu_name; } diff --git a/core/lib/Drupal/Core/Menu/MenuParentFormSelector.php b/core/lib/Drupal/Core/Menu/MenuParentFormSelector.php index dce990323615..ecae57c7cd36 100644 --- a/core/lib/Drupal/Core/Menu/MenuParentFormSelector.php +++ b/core/lib/Drupal/Core/Menu/MenuParentFormSelector.php @@ -88,7 +88,7 @@ public function parentSelectElement($menu_parent, $id = '', array $menus = NULL) if (!isset($options[$menu_parent])) { // The requested menu parent cannot be found in the menu anymore. Try // setting it to the top level in the current menu. - list($menu_name, $parent) = explode(':', $menu_parent, 2); + [$menu_name, $parent] = explode(':', $menu_parent, 2); $menu_parent = $menu_name . ':'; } if (isset($options[$menu_parent])) { diff --git a/core/lib/Drupal/Core/Plugin/Context/LazyContextRepository.php b/core/lib/Drupal/Core/Plugin/Context/LazyContextRepository.php index d805354af624..68c7d6ffaa9e 100644 --- a/core/lib/Drupal/Core/Plugin/Context/LazyContextRepository.php +++ b/core/lib/Drupal/Core/Plugin/Context/LazyContextRepository.php @@ -63,7 +63,7 @@ public function getRuntimeContexts(array $context_ids) { // @todo Convert to an assert once https://www.drupal.org/node/2408013 is // in. if ($id[0] === '@' && strpos($id, ':') !== FALSE) { - list($service_id, $unqualified_context_id) = explode(':', $id, 2); + [$service_id, $unqualified_context_id] = explode(':', $id, 2); // Remove the leading '@'. $service_id = substr($service_id, 1); } diff --git a/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php b/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php index 950eb68ae685..7df92bdb6db6 100644 --- a/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php +++ b/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php @@ -316,7 +316,7 @@ protected function processAssetLibraries(AttachedAssetsInterface $assets, array if (isset($placeholders['scripts']) || isset($placeholders['scripts_bottom'])) { // Optimize JS if necessary, but only during normal site operation. $optimize_js = !defined('MAINTENANCE_MODE') && !\Drupal::state()->get('system.maintenance_mode') && $this->config->get('js.preprocess'); - list($js_assets_header, $js_assets_footer) = $this->assetResolver->getJsAssets($assets, $optimize_js); + [$js_assets_header, $js_assets_footer] = $this->assetResolver->getJsAssets($assets, $optimize_js); $variables['scripts'] = $this->jsCollectionRenderer->render($js_assets_header); $variables['scripts_bottom'] = $this->jsCollectionRenderer->render($js_assets_footer); } @@ -393,7 +393,7 @@ protected function setHeaders(HtmlResponse $response, array $headers) { protected function processHtmlHead(array $html_head) { $head = []; foreach ($html_head as $item) { - list($data, $key) = $item; + [$data, $key] = $item; if (!isset($data['#type'])) { $data['#type'] = 'html_tag'; } diff --git a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php index fe1890f57ddd..09d946d22f6d 100644 --- a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php +++ b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php @@ -129,7 +129,7 @@ public function __construct(TitleResolverInterface $title_resolver, PluginManage * The entire HTML: takes a #type 'page' and wraps it in a #type 'html'. */ public function renderResponse(array $main_content, Request $request, RouteMatchInterface $route_match) { - list($page, $title) = $this->prepare($main_content, $request, $route_match); + [$page, $title] = $this->prepare($main_content, $request, $route_match); if (!isset($page['#type']) || $page['#type'] !== 'page') { throw new \LogicException('Must be #type page'); diff --git a/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php b/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php index 5b37ea9bd44e..31900041ca44 100644 --- a/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php +++ b/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php @@ -53,10 +53,10 @@ public function doTrustedCallback(callable $callback, array $args, $message, $er $safe_callback = FALSE; if (is_array($callback)) { - list($object_or_classname, $method_name) = $callback; + [$object_or_classname, $method_name] = $callback; } elseif (is_string($callback) && strpos($callback, '::') !== FALSE) { - list($object_or_classname, $method_name) = explode('::', $callback, 2); + [$object_or_classname, $method_name] = explode('::', $callback, 2); } if (isset($method_name)) { diff --git a/core/lib/Drupal/Core/StreamWrapper/LocalStream.php b/core/lib/Drupal/Core/StreamWrapper/LocalStream.php index 5778e6f98989..b4430966847d 100644 --- a/core/lib/Drupal/Core/StreamWrapper/LocalStream.php +++ b/core/lib/Drupal/Core/StreamWrapper/LocalStream.php @@ -87,7 +87,7 @@ protected function getTarget($uri = NULL) { $uri = $this->uri; } - list(, $target) = explode('://', $uri, 2); + [, $target] = explode('://', $uri, 2); // Remove erroneous leading or trailing, forward-slashes and backslashes. return trim($target, '\/'); @@ -315,7 +315,7 @@ public function rename($from_uri, $to_uri) { * {@inheritdoc} */ public function dirname($uri = NULL) { - list($scheme) = explode('://', $uri, 2); + [$scheme] = explode('://', $uri, 2); $target = $this->getTarget($uri); $dirname = dirname($target); diff --git a/core/lib/Drupal/Core/Template/TwigNodeTrans.php b/core/lib/Drupal/Core/Template/TwigNodeTrans.php index e581fa9c2bbc..135593793597 100644 --- a/core/lib/Drupal/Core/Template/TwigNodeTrans.php +++ b/core/lib/Drupal/Core/Template/TwigNodeTrans.php @@ -50,11 +50,11 @@ public function __construct(Node $body, Node $plural = NULL, AbstractExpression public function compile(Compiler $compiler) { $compiler->addDebugInfo($this); - list($singular, $tokens) = $this->compileString($this->getNode('body')); + [$singular, $tokens] = $this->compileString($this->getNode('body')); $plural = NULL; if ($this->hasNode('plural')) { - list($plural, $pluralTokens) = $this->compileString($this->getNode('plural')); + [$plural, $pluralTokens] = $this->compileString($this->getNode('plural')); $tokens = array_merge($tokens, $pluralTokens); } diff --git a/core/lib/Drupal/Core/Test/TestDiscovery.php b/core/lib/Drupal/Core/Test/TestDiscovery.php index cdcc1eeda7f8..1b12a47c7c65 100644 --- a/core/lib/Drupal/Core/Test/TestDiscovery.php +++ b/core/lib/Drupal/Core/Test/TestDiscovery.php @@ -439,7 +439,7 @@ public static function parseTestClassAnnotations(\ReflectionClass $class) { // @see https://www.drupal.org/node/1273478 if (isset($annotations['requires'])) { foreach ($annotations['requires'] as $i => $value) { - list($type, $value) = explode(' ', $value, 2); + [$type, $value] = explode(' ', $value, 2); if ($type === 'module') { $annotations['requires']['module'][$value] = $value; unset($annotations['requires'][$i]); diff --git a/core/lib/Drupal/Core/Theme/Registry.php b/core/lib/Drupal/Core/Theme/Registry.php index 2a4e8d95f131..98d596a7804e 100644 --- a/core/lib/Drupal/Core/Theme/Registry.php +++ b/core/lib/Drupal/Core/Theme/Registry.php @@ -724,7 +724,7 @@ protected function postProcessExtension(array &$cache, ActiveTheme $theme) { // have matching hooks in the registry. foreach ($prefixes as $prefix) { // Grep only the functions which are within the prefix group. - list($first_prefix,) = explode('_', $prefix, 2); + [$first_prefix] = explode('_', $prefix, 2); if (!isset($grouped_functions[$first_prefix])) { continue; } @@ -836,7 +836,7 @@ public function getPrefixGroupedUserFunctions($prefixes = []) { $grouped_functions = []; // Splitting user defined functions into groups by the first prefix. foreach ($theme_functions as $function) { - list($first_prefix,) = explode('_', $function, 2); + [$first_prefix] = explode('_', $function, 2); $grouped_functions[$first_prefix][] = $function; } diff --git a/core/lib/Drupal/Core/Update/UpdateRegistry.php b/core/lib/Drupal/Core/Update/UpdateRegistry.php index 8b3f03ea24ef..5d55e89466a3 100644 --- a/core/lib/Drupal/Core/Update/UpdateRegistry.php +++ b/core/lib/Drupal/Core/Update/UpdateRegistry.php @@ -205,7 +205,7 @@ public function getPendingUpdateInformation() { $ret = []; foreach ($functions as $function) { - list($module, $update) = explode("_{$this->updateType}_", $function); + [$module, $update] = explode("_{$this->updateType}_", $function); // The description for an update comes from its Doxygen. $func = new \ReflectionFunction($function); $description = trim(str_replace(["\n", '*', '/'], '', $func->getDocComment()), ' '); @@ -247,7 +247,7 @@ public function getModuleUpdateFunctions($module_name) { $all_functions = $this->getAvailableUpdateFunctions(); return array_filter($all_functions, function ($function_name) use ($module_name) { - list($function_module_name,) = explode("_{$this->updateType}_", $function_name); + [$function_module_name] = explode("_{$this->updateType}_", $function_name); return $function_module_name === $module_name; }); } diff --git a/core/lib/Drupal/Core/Url.php b/core/lib/Drupal/Core/Url.php index 776a8f778ad8..226ab436e022 100644 --- a/core/lib/Drupal/Core/Url.php +++ b/core/lib/Drupal/Core/Url.php @@ -349,7 +349,7 @@ public static function fromUri($uri, $options = []) { * Thrown if the entity URI is invalid. */ protected static function fromEntityUri(array $uri_parts, array $options, $uri) { - list($entity_type_id, $entity_id) = explode('/', $uri_parts['path'], 2); + [$entity_type_id, $entity_id] = explode('/', $uri_parts['path'], 2); if ($uri_parts['scheme'] != 'entity' || $entity_id === '') { throw new \InvalidArgumentException("The entity URI '$uri' is invalid. You must specify the entity id in the URL. e.g., entity:node/1 for loading the canonical path to node entity with id 1."); } diff --git a/core/modules/big_pipe/src/Render/BigPipe.php b/core/modules/big_pipe/src/Render/BigPipe.php index 53e4424984c0..133c86534eb5 100644 --- a/core/modules/big_pipe/src/Render/BigPipe.php +++ b/core/modules/big_pipe/src/Render/BigPipe.php @@ -330,7 +330,7 @@ protected function sendPreBody($pre_body, array $no_js_placeholders, AttachedAss // Extract the scripts_bottom markup: the no-JS BigPipe placeholders that we // will render may attach additional asset libraries, and if so, it will be // necessary to re-render scripts_bottom. - list($pre_scripts_bottom, $scripts_bottom, $post_scripts_bottom) = explode('<drupal-big-pipe-scripts-bottom-marker>', $pre_body, 3); + [$pre_scripts_bottom, $scripts_bottom, $post_scripts_bottom] = explode('<drupal-big-pipe-scripts-bottom-marker>', $pre_body, 3); $cumulative_assets_initial = clone $cumulative_assets; $this->sendNoJsPlaceholders($pre_scripts_bottom . $post_scripts_bottom, $no_js_placeholders, $cumulative_assets); diff --git a/core/modules/block/src/Plugin/migrate/process/BlockPluginId.php b/core/modules/block/src/Plugin/migrate/process/BlockPluginId.php index bfe4612b8b15..1e471a2cf72b 100644 --- a/core/modules/block/src/Plugin/migrate/process/BlockPluginId.php +++ b/core/modules/block/src/Plugin/migrate/process/BlockPluginId.php @@ -73,10 +73,10 @@ public static function create(ContainerInterface $container, array $configuratio */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { if (is_array($value)) { - list($module, $delta) = $value; + [$module, $delta] = $value; switch ($module) { case 'aggregator': - list($type, $id) = explode('-', $delta); + [$type, $id] = explode('-', $delta); if ($type == 'feed') { return 'aggregator_feed_block'; } diff --git a/core/modules/block/src/Plugin/migrate/process/BlockRegion.php b/core/modules/block/src/Plugin/migrate/process/BlockRegion.php index 0eb984fd20c6..cd79f051bcbe 100644 --- a/core/modules/block/src/Plugin/migrate/process/BlockRegion.php +++ b/core/modules/block/src/Plugin/migrate/process/BlockRegion.php @@ -56,7 +56,7 @@ public static function create(ContainerInterface $container, array $configuratio public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { // Set the destination region, based on the source region and theme as well // as the current destination default theme. - list($source_theme, $destination_theme, $region) = $value; + [$source_theme, $destination_theme, $region] = $value; // Theme is the same on both source and destination, so ensure that the // region exists in the destination theme. diff --git a/core/modules/block/src/Plugin/migrate/process/BlockSettings.php b/core/modules/block/src/Plugin/migrate/process/BlockSettings.php index 5083f629d997..09c30b1f2cbe 100644 --- a/core/modules/block/src/Plugin/migrate/process/BlockSettings.php +++ b/core/modules/block/src/Plugin/migrate/process/BlockSettings.php @@ -22,7 +22,7 @@ class BlockSettings extends ProcessPluginBase { * Set the block configuration. */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($plugin, $delta, $old_settings, $title) = $value; + [$plugin, $delta, $old_settings, $title] = $value; $settings = []; $settings['label'] = $title; if ($title && $title !== '<none>') { @@ -33,7 +33,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable } switch ($plugin) { case 'aggregator_feed_block': - list(, $id) = explode('-', $delta); + [, $id] = explode('-', $delta); $settings['block_count'] = $old_settings['aggregator']['item_count']; $settings['feed'] = $id; break; diff --git a/core/modules/block/src/Plugin/migrate/process/BlockTheme.php b/core/modules/block/src/Plugin/migrate/process/BlockTheme.php index fe6ae2ce3743..408f83be67e5 100644 --- a/core/modules/block/src/Plugin/migrate/process/BlockTheme.php +++ b/core/modules/block/src/Plugin/migrate/process/BlockTheme.php @@ -71,7 +71,7 @@ public static function create(ContainerInterface $container, array $configuratio * {@inheritdoc} */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($theme, $default_theme, $admin_theme) = $value; + [$theme, $default_theme, $admin_theme] = $value; // If the source theme exists on the destination, we're good. if (isset($this->themes[$theme])) { diff --git a/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php b/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php index 45e4d4e7fb60..4d7b19cd55f6 100644 --- a/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php +++ b/core/modules/block/src/Plugin/migrate/process/BlockVisibility.php @@ -82,7 +82,7 @@ public static function create(ContainerInterface $container, array $configuratio * {@inheritdoc} */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($old_visibility, $pages, $roles) = $value; + [$old_visibility, $pages, $roles] = $value; $visibility = []; diff --git a/core/modules/block/src/Plugin/migrate/source/Block.php b/core/modules/block/src/Plugin/migrate/source/Block.php index a6bc1313be20..de6060c968d5 100644 --- a/core/modules/block/src/Plugin/migrate/source/Block.php +++ b/core/modules/block/src/Plugin/migrate/source/Block.php @@ -135,7 +135,7 @@ public function prepareRow(Row $row) { $settings = []; switch ($module) { case 'aggregator': - list($type, $id) = explode('-', $delta); + [$type, $id] = explode('-', $delta); if ($type == 'feed') { $item_count = $this->select('aggregator_feed', 'af') ->fields('af', ['block']) diff --git a/core/modules/block/tests/src/Functional/BlockTest.php b/core/modules/block/tests/src/Functional/BlockTest.php index 86e705fd95ff..5beff98efcea 100644 --- a/core/modules/block/tests/src/Functional/BlockTest.php +++ b/core/modules/block/tests/src/Functional/BlockTest.php @@ -169,7 +169,7 @@ public function testAddBlockFromLibraryWithWeight() { $this->assertSession()->elementTextEquals('xpath', $xpath, 'Place block'); $link = $this->getSession()->getPage()->find('xpath', $xpath); - list($path, $query_string) = explode('?', $link->getAttribute('href'), 2); + [$path, $query_string] = explode('?', $link->getAttribute('href'), 2); parse_str($query_string, $query_parts); $this->assertEquals($weight, $query_parts['weight'], 'Found the expected weight query string.'); diff --git a/core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php b/core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php index 135cdee2902f..5c2dce25b6b4 100644 --- a/core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php +++ b/core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php @@ -112,7 +112,7 @@ public function getConfig(Editor $editor) { // Add the allowedContent setting, which ensures CKEditor only allows tags // and attributes that are allowed by the text format for this text editor. - list($config['allowedContent'], $config['disallowedContent']) = $this->generateACFSettings($editor); + [$config['allowedContent'], $config['disallowedContent']] = $this->generateACFSettings($editor); // Add the format_tags setting, if its button is enabled. $toolbar_buttons = CKEditorPluginManager::getEnabledButtons($editor); diff --git a/core/modules/ckeditor/src/Plugin/CKEditorPlugin/StylesCombo.php b/core/modules/ckeditor/src/Plugin/CKEditorPlugin/StylesCombo.php index c6d4df3a4d83..e35c5ac1f51d 100644 --- a/core/modules/ckeditor/src/Plugin/CKEditorPlugin/StylesCombo.php +++ b/core/modules/ckeditor/src/Plugin/CKEditorPlugin/StylesCombo.php @@ -146,7 +146,7 @@ protected function generateStylesSetSetting($styles) { } // Parse. - list($selector, $label) = explode('|', $style); + [$selector, $label] = explode('|', $style); $classes = explode('.', $selector); $element = array_shift($classes); diff --git a/core/modules/ckeditor/tests/src/Functional/CKEditorLoadingTest.php b/core/modules/ckeditor/tests/src/Functional/CKEditorLoadingTest.php index e485efe98d6a..eb56fc722017 100644 --- a/core/modules/ckeditor/tests/src/Functional/CKEditorLoadingTest.php +++ b/core/modules/ckeditor/tests/src/Functional/CKEditorLoadingTest.php @@ -93,7 +93,7 @@ public function testLoading() { // - doesn't have access to the filtered_html text format, so: no text editor. $this->drupalLogin($this->untrustedUser); $this->drupalGet('node/add/article'); - list($settings, $editor_settings_present, $editor_js_present) = $this->getThingsToCheck(); + [$settings, $editor_settings_present, $editor_js_present] = $this->getThingsToCheck(); $this->assertFalse($editor_settings_present, 'No Text Editor module settings.'); $this->assertFalse($editor_js_present, 'No Text Editor JavaScript.'); $this->assertSession()->fieldExists('edit-body-0-value'); @@ -112,7 +112,7 @@ public function testLoading() { // - does have access to the filtered_html text format, so: CKEditor. $this->drupalLogin($this->normalUser); $this->drupalGet('node/add/article'); - list($settings, $editor_settings_present, $editor_js_present) = $this->getThingsToCheck(); + [$settings, $editor_settings_present, $editor_js_present] = $this->getThingsToCheck(); $ckeditor_plugin = $this->container->get('plugin.manager.editor')->createInstance('ckeditor'); $editor = Editor::load('filtered_html'); $expected = [ @@ -149,7 +149,7 @@ public function testLoading() { $editor->setSettings($editor_settings); $editor->save(); $this->drupalGet('node/add/article'); - list($settings, $editor_settings_present, $editor_js_present) = $this->getThingsToCheck(); + [$settings, $editor_settings_present, $editor_js_present] = $this->getThingsToCheck(); $expected = [ 'formats' => [ 'filtered_html' => [ diff --git a/core/modules/color/color.module b/core/modules/color/color.module index bc6880e2bce8..8a8aa5e1b41c 100644 --- a/core/modules/color/color.module +++ b/core/modules/color/color.module @@ -393,7 +393,7 @@ function color_scheme_form_submit($form, FormStateInterface $form_state) { if (isset($info['base_image'])) { // Fetch source image dimensions. $source = \Drupal::service('extension.list.theme')->getPath($theme) . '/' . $info['base_image']; - list($width, $height) = getimagesize($source); + [$width, $height] = getimagesize($source); // We need at least a copy of the source and a target buffer of the same // size (both at 32bpp). @@ -523,7 +523,7 @@ function _color_rewrite_stylesheet($theme, &$info, &$paths, $palette, $style) { // Split off the "Don't touch" section of the stylesheet. $split = "Color Module: Don't touch"; if (strpos($style, $split) !== FALSE) { - list($style, $fixed) = explode($split, $style); + [$style, $fixed] = explode($split, $style); } // Find all colors in the stylesheet and the chunks in between. @@ -637,7 +637,7 @@ function _color_render_images($theme, &$info, &$paths, $palette) { // Cut out slices. foreach ($info['slices'] as $file => $coord) { - list($x, $y, $width, $height) = $coord; + [$x, $y, $width, $height] = $coord; /** @var \Drupal\Core\File\FileSystemInterface $file_system */ $file_system = \Drupal::service('file_system'); $base = $file_system->basename($file); diff --git a/core/modules/content_moderation/src/Plugin/views/filter/ModerationStateFilter.php b/core/modules/content_moderation/src/Plugin/views/filter/ModerationStateFilter.php index 42b91bd93cb5..0dfbe3d865d8 100644 --- a/core/modules/content_moderation/src/Plugin/views/filter/ModerationStateFilter.php +++ b/core/modules/content_moderation/src/Plugin/views/filter/ModerationStateFilter.php @@ -177,7 +177,7 @@ protected function opSimple() { // we need to create a complex WHERE condition. $field = $this->view->query->getConnection()->condition('OR'); foreach ((array) $this->value as $value) { - list($workflow_id, $state_id) = explode('-', $value, 2); + [$workflow_id, $state_id] = explode('-', $value, 2); $and = $this->view->query->getConnection()->condition('AND'); $and @@ -247,7 +247,7 @@ public function onDependencyRemoval(array $dependencies) { protected function getWorkflowIds() { $workflow_ids = []; foreach ((array) $this->value as $value) { - list($workflow_id) = explode('-', $value, 2); + [$workflow_id] = explode('-', $value, 2); $workflow_ids[] = $workflow_id; } diff --git a/core/modules/content_moderation/src/Routing/ContentModerationRouteSubscriber.php b/core/modules/content_moderation/src/Routing/ContentModerationRouteSubscriber.php index 934734da3cae..53da1fe07cc6 100644 --- a/core/modules/content_moderation/src/Routing/ContentModerationRouteSubscriber.php +++ b/core/modules/content_moderation/src/Routing/ContentModerationRouteSubscriber.php @@ -65,7 +65,7 @@ protected function setLatestRevisionFlag(Route $route) { return; } // Only set the flag on entity types which are revisionable. - list($entity_type) = explode('.', $entity_form, 2); + [$entity_type] = explode('.', $entity_form, 2); if (!isset($this->getModeratedEntityTypes()[$entity_type]) || !$this->getModeratedEntityTypes()[$entity_type]->isRevisionable()) { return; } diff --git a/core/modules/content_translation/tests/src/Kernel/ContentTranslationFieldSyncRevisionTest.php b/core/modules/content_translation/tests/src/Kernel/ContentTranslationFieldSyncRevisionTest.php index d273d056f3f6..2c7f8a9a3736 100644 --- a/core/modules/content_translation/tests/src/Kernel/ContentTranslationFieldSyncRevisionTest.php +++ b/core/modules/content_translation/tests/src/Kernel/ContentTranslationFieldSyncRevisionTest.php @@ -482,7 +482,7 @@ protected function assertViolations(EntityConstraintViolationListInterface $viol protected function assertLatestRevisionFieldValues($entity_id, array $expected_values) { /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */ $entity = $this->storage->loadRevision($this->storage->getLatestRevisionId($entity_id)); - @list($revision_id, $target_id_en, $target_id_it, $alt_en, $alt_it) = $expected_values; + @[$revision_id, $target_id_en, $target_id_it, $alt_en, $alt_it] = $expected_values; $this->assertEquals($revision_id, $entity->getRevisionId()); $this->assertEquals($target_id_en, $entity->get($this->fieldName)->target_id); $this->assertEquals($alt_en, $entity->get($this->fieldName)->alt); diff --git a/core/modules/contextual/contextual.module b/core/modules/contextual/contextual.module index aaab3a6e9de5..2410f1db51e6 100644 --- a/core/modules/contextual/contextual.module +++ b/core/modules/contextual/contextual.module @@ -210,7 +210,7 @@ function _contextual_id_to_links($id) { $contextual_links = []; $contexts = explode('|', $id); foreach ($contexts as $context) { - list($group, $route_parameters_raw, $metadata_raw) = explode(':', $context); + [$group, $route_parameters_raw, $metadata_raw] = explode(':', $context); parse_str($route_parameters_raw, $route_parameters); $metadata = []; parse_str($metadata_raw, $metadata); diff --git a/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php b/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php index 469155e84959..17f70fc4b67c 100644 --- a/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php +++ b/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php @@ -562,7 +562,7 @@ public function testDatelistWidget() { // Test the widget for validation notifications. foreach ($this->datelistDataProvider($field_label) as $data) { - list($date_value, $expected) = $data; + [$date_value, $expected] = $data; // Display creation form. $this->drupalGet('entity_test/add'); diff --git a/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php b/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php index 77a21941a1ea..d6c4e0cb7728 100644 --- a/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php +++ b/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php @@ -854,7 +854,7 @@ public function testDatelistWidget() { // Test the widget for validation notifications. foreach ($this->datelistDataProvider() as $data) { - list($start_date_value, $end_date_value, $expected) = $data; + [$start_date_value, $end_date_value, $expected] = $data; // Display creation form. $this->drupalGet('entity_test/add'); diff --git a/core/modules/editor/tests/src/Functional/EditorLoadingTest.php b/core/modules/editor/tests/src/Functional/EditorLoadingTest.php index 10cafa12a2ba..51f7c5d81c1f 100644 --- a/core/modules/editor/tests/src/Functional/EditorLoadingTest.php +++ b/core/modules/editor/tests/src/Functional/EditorLoadingTest.php @@ -147,7 +147,7 @@ public function testLoading() { // - doesn't have access to the full_html text format, so: no text editor. $this->drupalLogin($this->normalUser); $this->drupalGet('node/add/article'); - list(, $editor_settings_present, $editor_js_present, $body) = $this->getThingsToCheck('body'); + [, $editor_settings_present, $editor_js_present, $body] = $this->getThingsToCheck('body'); $this->assertFalse($editor_settings_present, 'No Text Editor module settings.'); $this->assertFalse($editor_js_present, 'No Text Editor JavaScript.'); $this->assertCount(1, $body, 'A body field exists.'); @@ -159,7 +159,7 @@ public function testLoading() { // - does have access to the full_html text format, so: Unicorn text editor. $this->drupalLogin($this->privilegedUser); $this->drupalGet('node/add/article'); - list($settings, $editor_settings_present, $editor_js_present, $body) = $this->getThingsToCheck('body'); + [$settings, $editor_settings_present, $editor_js_present, $body] = $this->getThingsToCheck('body'); $expected = [ 'formats' => [ 'full_html' => [ @@ -197,7 +197,7 @@ public function testLoading() { // - has access to the plain_text text format, so: Unicorn text editor. $this->drupalLogin($this->untrustedUser); $this->drupalGet('node/add/article'); - list($settings, $editor_settings_present, $editor_js_present, $body) = $this->getThingsToCheck('body'); + [$settings, $editor_settings_present, $editor_js_present, $body] = $this->getThingsToCheck('body'); $expected = [ 'formats' => [ 'plain_text' => [ @@ -233,7 +233,7 @@ public function testLoading() { // that they are not allowed to use. The editor is still loaded. CKEditor, // for example, supports being loaded in a disabled state. $this->drupalGet('node/1/edit'); - list(, $editor_settings_present, $editor_js_present, $body) = $this->getThingsToCheck('body'); + [, $editor_settings_present, $editor_js_present, $body] = $this->getThingsToCheck('body'); $this->assertTrue($editor_settings_present, 'Text Editor module settings.'); $this->assertTrue($editor_js_present, 'Text Editor JavaScript.'); $this->assertCount(1, $body, 'A body field exists.'); @@ -273,7 +273,7 @@ public function testSupportedElementTypes() { // Assert the unicorn editor works with textfields. $this->drupalLogin($this->privilegedUser); $this->drupalGet('node/1/edit'); - list(, $editor_settings_present, $editor_js_present, $field) = $this->getThingsToCheck('field-text', 'input'); + [, $editor_settings_present, $editor_js_present, $field] = $this->getThingsToCheck('field-text', 'input'); $this->assertTrue($editor_settings_present, "Text Editor module's JavaScript settings are on the page."); $this->assertTrue($editor_js_present, 'Text Editor JavaScript is present.'); $this->assertCount(1, $field, 'A text field exists.'); @@ -292,7 +292,7 @@ public function testSupportedElementTypes() { ])->save(); $this->drupalGet('node/1/edit'); - list(, $editor_settings_present, $editor_js_present, $field) = $this->getThingsToCheck('field-text', 'input'); + [, $editor_settings_present, $editor_js_present, $field] = $this->getThingsToCheck('field-text', 'input'); $this->assertFalse($editor_settings_present, "Text Editor module's JavaScript settings are not on the page."); $this->assertFalse($editor_js_present, 'Text Editor JavaScript is not present.'); $this->assertCount(1, $field, 'A text field exists.'); diff --git a/core/modules/editor/tests/src/Functional/EditorUploadImageScaleTest.php b/core/modules/editor/tests/src/Functional/EditorUploadImageScaleTest.php index 76a398d622b3..4196769ac856 100644 --- a/core/modules/editor/tests/src/Functional/EditorUploadImageScaleTest.php +++ b/core/modules/editor/tests/src/Functional/EditorUploadImageScaleTest.php @@ -81,48 +81,48 @@ public function testEditorUploadImageScale() { // Case 1: no max dimensions set: uploaded image not scaled. $test_image = $testing_image_list[0]; - list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri); + [$image_file_width, $image_file_height] = $this->getTestImageInfo($test_image->uri); $max_width = NULL; $max_height = NULL; $this->setMaxDimensions($max_width, $max_height); $this->assertSavedMaxDimensions($max_width, $max_height); - list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri); + [$uploaded_image_file_width, $uploaded_image_file_height] = $this->uploadImage($test_image->uri); $this->assertEquals($image_file_width, $uploaded_image_file_width); $this->assertEquals($image_file_height, $uploaded_image_file_height); $this->assertSession()->pageTextNotContains("The image was resized to fit within the maximum allowed dimensions of {$max_width}x{$max_height} pixels."); // Case 2: max width smaller than uploaded image: image scaled down. $test_image = $testing_image_list[1]; - list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri); + [$image_file_width, $image_file_height] = $this->getTestImageInfo($test_image->uri); $max_width = $image_file_width - 5; $max_height = $image_file_height; $this->setMaxDimensions($max_width, $max_height); $this->assertSavedMaxDimensions($max_width, $max_height); - list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri); + [$uploaded_image_file_width, $uploaded_image_file_height] = $this->uploadImage($test_image->uri); $this->assertEquals($max_width, $uploaded_image_file_width); $this->assertEquals($uploaded_image_file_height * ($uploaded_image_file_width / $max_width), $uploaded_image_file_height); $this->assertSession()->pageTextContains("The image was resized to fit within the maximum allowed dimensions of {$max_width}x{$max_height} pixels."); // Case 3: max height smaller than uploaded image: image scaled down. $test_image = $testing_image_list[2]; - list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri); + [$image_file_width, $image_file_height] = $this->getTestImageInfo($test_image->uri); $max_width = $image_file_width; $max_height = $image_file_height - 5; $this->setMaxDimensions($max_width, $max_height); $this->assertSavedMaxDimensions($max_width, $max_height); - list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri); + [$uploaded_image_file_width, $uploaded_image_file_height] = $this->uploadImage($test_image->uri); $this->assertEquals($uploaded_image_file_width * ($uploaded_image_file_height / $max_height), $uploaded_image_file_width); $this->assertEquals($max_height, $uploaded_image_file_height); $this->assertSession()->pageTextContains("The image was resized to fit within the maximum allowed dimensions of {$max_width}x{$max_height} pixels."); // Case 4: max dimensions greater than uploaded image: image not scaled. $test_image = $testing_image_list[3]; - list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri); + [$image_file_width, $image_file_height] = $this->getTestImageInfo($test_image->uri); $max_width = $image_file_width + 5; $max_height = $image_file_height + 5; $this->setMaxDimensions($max_width, $max_height); $this->assertSavedMaxDimensions($max_width, $max_height); - list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri); + [$uploaded_image_file_width, $uploaded_image_file_height] = $this->uploadImage($test_image->uri); $this->assertEquals($image_file_width, $uploaded_image_file_width); $this->assertEquals($image_file_height, $uploaded_image_file_height); $this->assertSession()->pageTextNotContains("The image was resized to fit within the maximum allowed dimensions of {$max_width}x{$max_height} pixels."); @@ -130,12 +130,12 @@ public function testEditorUploadImageScale() { // Case 5: only max width dimension was provided and it was smaller than // uploaded image: image scaled down. $test_image = $testing_image_list[4]; - list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri); + [$image_file_width, $image_file_height] = $this->getTestImageInfo($test_image->uri); $max_width = $image_file_width - 5; $max_height = NULL; $this->setMaxDimensions($max_width, $max_height); $this->assertSavedMaxDimensions($max_width, $max_height); - list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri); + [$uploaded_image_file_width, $uploaded_image_file_height] = $this->uploadImage($test_image->uri); $this->assertEquals($max_width, $uploaded_image_file_width); $this->assertEquals($uploaded_image_file_height * ($uploaded_image_file_width / $max_width), $uploaded_image_file_height); $this->assertSession()->pageTextContains("The image was resized to fit within the maximum allowed width of {$max_width} pixels."); @@ -143,12 +143,12 @@ public function testEditorUploadImageScale() { // Case 6: only max height dimension was provided and it was smaller than // uploaded image: image scaled down. $test_image = $testing_image_list[5]; - list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri); + [$image_file_width, $image_file_height] = $this->getTestImageInfo($test_image->uri); $max_width = NULL; $max_height = $image_file_height - 5; $this->setMaxDimensions($max_width, $max_height); $this->assertSavedMaxDimensions($max_width, $max_height); - list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri); + [$uploaded_image_file_width, $uploaded_image_file_height] = $this->uploadImage($test_image->uri); $this->assertEquals($uploaded_image_file_width * ($uploaded_image_file_height / $max_height), $uploaded_image_file_width); $this->assertEquals($max_height, $uploaded_image_file_height); $this->assertSession()->pageTextContains("The image was resized to fit within the maximum allowed height of {$max_height} pixels."); diff --git a/core/modules/field/field.module b/core/modules/field/field.module index 3a8a8e16b1f3..423271665482 100644 --- a/core/modules/field/field.module +++ b/core/modules/field/field.module @@ -410,7 +410,7 @@ function field_field_config_presave(FieldConfigInterface $field) { // target entity type. $target_type = $field->getFieldStorageDefinition()->getSetting('target_type'); $selection_manager = \Drupal::service('plugin.manager.entity_reference_selection'); - list($current_handler) = explode(':', $field->getSetting('handler'), 2); + [$current_handler] = explode(':', $field->getSetting('handler'), 2); $field->setSetting('handler', $selection_manager->getPluginId($target_type, $current_handler)); // In case we removed all the target bundles allowed by the field in diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php index 383fa314ca37..99526b58009a 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceDefaults.php @@ -21,7 +21,7 @@ class FieldInstanceDefaults extends ProcessPluginBase { * Set the field instance defaults. */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($widget_type, $widget_settings) = $value; + [$widget_type, $widget_settings] = $value; $default = []; switch ($widget_type) { diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php index 4b612bffaa78..5e8d2322f8d4 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceOptionTranslation.php @@ -20,7 +20,7 @@ class FieldInstanceOptionTranslation extends ProcessPluginBase { * {@inheritdoc} */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($field_type, $global_settings) = $value; + [$field_type, $global_settings] = $value; $option_key = 0; $translation = ''; diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceSettings.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceSettings.php index d0198dea2b1d..be41a4209ca5 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceSettings.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceSettings.php @@ -21,7 +21,7 @@ class FieldInstanceSettings extends ProcessPluginBase { * Set the field instance defaults. */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($widget_type, $widget_settings, $field_settings) = $value; + [$widget_type, $widget_settings, $field_settings] = $value; $settings = []; switch ($widget_type) { case 'number': diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php index a64a14968903..4f79d7d2eac1 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldInstanceWidgetSettings.php @@ -23,7 +23,7 @@ class FieldInstanceWidgetSettings extends ProcessPluginBase { * Get the field instance default/mapped widget settings. */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($widget_type, $widget_settings) = $value; + [$widget_type, $widget_settings] = $value; return $this->getSettings($widget_type, $widget_settings); } diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php index 8432c2b26256..1976becf830e 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldOptionTranslation.php @@ -22,7 +22,7 @@ class FieldOptionTranslation extends ProcessPluginBase { * Get the field default/mapped settings. */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($field_type, $global_settings) = $value; + [$field_type, $global_settings] = $value; $allowed_values = ''; $i = 0; diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php index 967b4cbd796c..8b7eb0d95192 100644 --- a/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldSettings.php @@ -26,7 +26,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable if (count($value) == 2) { $value[] = NULL; } - list($field_type, $global_settings, $original_field_type) = $value; + [$field_type, $global_settings, $original_field_type] = $value; return $this->getSettings($field_type, $global_settings, $original_field_type); } diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceDefaults.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceDefaults.php index 57c2b51c0343..fab63a67b504 100644 --- a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceDefaults.php +++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceDefaults.php @@ -17,7 +17,7 @@ class FieldInstanceDefaults extends ProcessPluginBase { * {@inheritdoc} */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($default_value, $widget_settings) = $value; + [$default_value, $widget_settings] = $value; $widget_type = $widget_settings['type']; $default_value = $default_value ?: []; diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php index e7082554498e..a3e2063183e6 100644 --- a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php +++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php @@ -20,7 +20,7 @@ class FieldInstanceOptionTranslation extends ProcessPluginBase { * {@inheritdoc} */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($type, $data) = $value; + [$type, $data] = $value; $data = unserialize($data); $property = $row->getSourceProperty('property'); diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceSettings.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceSettings.php index cf17e75a5cf0..5236e5507a38 100644 --- a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceSettings.php +++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceSettings.php @@ -19,7 +19,7 @@ class FieldInstanceSettings extends ProcessPluginBase { * {@inheritdoc} */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($instance_settings, $widget_settings, $field_definition) = $value; + [$instance_settings, $widget_settings, $field_definition] = $value; $widget_type = $widget_settings['type']; $field_data = unserialize($field_definition['data']); diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php index 3831bfcb5964..4b60335f7fb8 100644 --- a/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php +++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php @@ -22,7 +22,7 @@ class FieldOptionTranslation extends ProcessPluginBase { * Get the field default/mapped settings. */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($type, $data) = $value; + [$type, $data] = $value; $data = unserialize($data); $new_allowed_values = ''; diff --git a/core/modules/field/tests/src/Kernel/Boolean/BooleanFormatterTest.php b/core/modules/field/tests/src/Kernel/Boolean/BooleanFormatterTest.php index 7e3653f75501..acebe47fdaa0 100644 --- a/core/modules/field/tests/src/Kernel/Boolean/BooleanFormatterTest.php +++ b/core/modules/field/tests/src/Kernel/Boolean/BooleanFormatterTest.php @@ -127,7 +127,7 @@ public function testBooleanFormatter() { $data[] = [1, $format, 'TRUE']; foreach ($data as $test_data) { - list($value, $settings, $expected) = $test_data; + [$value, $settings, $expected] = $test_data; $component = $this->display->getComponent($this->fieldName); $component['settings'] = $settings; diff --git a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceTest.php b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceTest.php index c14fb3e37c7a..31264bcde6bf 100644 --- a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceTest.php +++ b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceTest.php @@ -52,7 +52,7 @@ protected function setUp(): void { * Whether or not the field is expected to be translatable. */ protected function assertEntity($id, $expected_label, $expected_field_type, $is_required, $expected_translatable) { - list ($expected_entity_type, $expected_bundle, $expected_name) = explode('.', $id); + [$expected_entity_type, $expected_bundle, $expected_name] = explode('.', $id); /** @var \Drupal\field\FieldConfigInterface $field */ $field = FieldConfig::load($id); diff --git a/core/modules/field/tests/src/Kernel/Timestamp/TimestampFormatterTest.php b/core/modules/field/tests/src/Kernel/Timestamp/TimestampFormatterTest.php index 8e0e64baa81d..2e5e7349aafb 100644 --- a/core/modules/field/tests/src/Kernel/Timestamp/TimestampFormatterTest.php +++ b/core/modules/field/tests/src/Kernel/Timestamp/TimestampFormatterTest.php @@ -119,7 +119,7 @@ public function testTimestampFormatter() { $data[] = ['date_format' => 'custom', 'custom_date_format' => 'e', 'timezone' => 'Asia/Tokyo']; foreach ($data as $settings) { - list($date_format, $custom_date_format, $timezone) = array_values($settings); + [$date_format, $custom_date_format, $timezone] = array_values($settings); if (empty($timezone)) { $timezone = NULL; } diff --git a/core/modules/field_ui/src/Form/EntityDisplayFormBase.php b/core/modules/field_ui/src/Form/EntityDisplayFormBase.php index 8f399144099f..6cc3f6bd0589 100644 --- a/core/modules/field_ui/src/Form/EntityDisplayFormBase.php +++ b/core/modules/field_ui/src/Form/EntityDisplayFormBase.php @@ -829,7 +829,7 @@ protected function getDisplays() { $ids = $this->configFactory()->listAll($config_prefix . '.' . $this->entity->getTargetEntityTypeId() . '.' . $this->entity->getTargetBundle() . '.'); foreach ($ids as $id) { $config_id = str_replace($config_prefix . '.', '', $id); - list(,, $display_mode) = explode('.', $config_id); + [,, $display_mode] = explode('.', $config_id); if ($display_mode != 'default') { $load_ids[] = $config_id; } diff --git a/core/modules/field_ui/src/Form/FieldStorageAddForm.php b/core/modules/field_ui/src/Form/FieldStorageAddForm.php index 8a1139b0df0e..7c54ca94cc71 100644 --- a/core/modules/field_ui/src/Form/FieldStorageAddForm.php +++ b/core/modules/field_ui/src/Form/FieldStorageAddForm.php @@ -338,7 +338,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { // Check if we're dealing with a preconfigured field. if (strpos($field_storage_values['type'], 'field_ui:') !== FALSE) { - list(, $field_type, $option_key) = explode(':', $field_storage_values['type'], 3); + [, $field_type, $option_key] = explode(':', $field_storage_values['type'], 3); $field_storage_values['type'] = $field_type; $field_definition = $this->fieldTypePluginManager->getDefinition($field_type); diff --git a/core/modules/file/file.module b/core/modules/file/file.module index d222f3560c9d..7300dd9c6767 100644 --- a/core/modules/file/file.module +++ b/core/modules/file/file.module @@ -416,7 +416,7 @@ function file_validate_image_resolution(FileInterface $file, $maximum_dimensions $scaling = FALSE; if ($maximum_dimensions) { // Check that it is smaller than the given dimensions. - list($width, $height) = explode('x', $maximum_dimensions); + [$width, $height] = explode('x', $maximum_dimensions); if ($image->getWidth() > $width || $image->getHeight() > $height) { // Try to resize the image to fit the dimensions. if ($image->scale($width, $height)) { @@ -456,7 +456,7 @@ function file_validate_image_resolution(FileInterface $file, $maximum_dimensions if ($minimum_dimensions) { // Check that it is larger than the given dimensions. - list($width, $height) = explode('x', $minimum_dimensions); + [$width, $height] = explode('x', $minimum_dimensions); if ($image->getWidth() < $width || $image->getHeight() < $height) { if ($scaling) { $errors[] = t('The resized image is too small. The minimum dimensions are %dimensions pixels and after resizing, the image size will be %widthx%height pixels.', diff --git a/core/modules/file/file.views.inc b/core/modules/file/file.views.inc index 1238b6711272..666c7da49d83 100644 --- a/core/modules/file/file.views.inc +++ b/core/modules/file/file.views.inc @@ -45,7 +45,7 @@ function file_field_views_data_views_data_alter(array &$data, FieldStorageConfig /** @var \Drupal\Core\Entity\Sql\DefaultTableMapping $table_mapping */ $table_mapping = $entity_type_manager->getStorage($entity_type_id)->getTableMapping(); - list($label) = views_entity_field_label($entity_type_id, $field_name); + [$label] = views_entity_field_label($entity_type_id, $field_name); $data['file_managed'][$pseudo_field_name]['relationship'] = [ 'title' => t('@entity using @field', ['@entity' => $entity_type->getLabel(), '@field' => $label]), diff --git a/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php b/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php index d69ab74005ab..9fa11db2f69e 100644 --- a/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php +++ b/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php @@ -175,7 +175,7 @@ protected function prepareAttributes(array $additional_attributes = []) { * TRUE if the MIME type applies, FALSE otherwise. */ protected static function mimeTypeApplies($mime_type) { - list($type) = explode('/', $mime_type, 2); + [$type] = explode('/', $mime_type, 2); return $type === static::getMediaType(); } diff --git a/core/modules/file/src/Plugin/migrate/process/d6/FileUri.php b/core/modules/file/src/Plugin/migrate/process/d6/FileUri.php index c14b5ea50aea..32c30b45bbb0 100644 --- a/core/modules/file/src/Plugin/migrate/process/d6/FileUri.php +++ b/core/modules/file/src/Plugin/migrate/process/d6/FileUri.php @@ -24,7 +24,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable if ($row->isStub()) { return NULL; } - list($filepath, $file_directory_path, $temp_directory_path, $is_public) = $value; + [$filepath, $file_directory_path, $temp_directory_path, $is_public] = $value; // Specific handling using $temp_directory_path for temporary files. if (substr($filepath, 0, strlen($temp_directory_path)) === $temp_directory_path) { diff --git a/core/modules/file/tests/src/Functional/FileFieldValidateTest.php b/core/modules/file/tests/src/Functional/FileFieldValidateTest.php index 12f0887391c9..005bc1badbba 100644 --- a/core/modules/file/tests/src/Functional/FileFieldValidateTest.php +++ b/core/modules/file/tests/src/Functional/FileFieldValidateTest.php @@ -132,7 +132,7 @@ public function testFileExtension() { $this->createFileField($field_name, 'node', $type_name); $test_file = $this->getTestFile('image'); - list(, $test_file_extension) = explode('.', $test_file->getFilename()); + [, $test_file_extension] = explode('.', $test_file->getFilename()); // Disable extension checking. $this->updateFileField($field_name, $type_name, ['file_extensions' => '']); diff --git a/core/modules/file/tests/src/Functional/SaveUploadFormTest.php b/core/modules/file/tests/src/Functional/SaveUploadFormTest.php index 7fd93354ba18..6a112fb9ff96 100644 --- a/core/modules/file/tests/src/Functional/SaveUploadFormTest.php +++ b/core/modules/file/tests/src/Functional/SaveUploadFormTest.php @@ -70,7 +70,7 @@ protected function setUp(): void { $image_files = $this->drupalGetTestFiles('image'); $this->image = File::create((array) current($image_files)); - list(, $this->imageExtension) = explode('.', $this->image->getFilename()); + [, $this->imageExtension] = explode('.', $this->image->getFilename()); $this->assertFileExists($this->image->getFileUri()); $this->phpfile = current($this->drupalGetTestFiles('php')); diff --git a/core/modules/file/tests/src/Functional/SaveUploadTest.php b/core/modules/file/tests/src/Functional/SaveUploadTest.php index a3a7760dbb0d..5fb1f1a8117d 100644 --- a/core/modules/file/tests/src/Functional/SaveUploadTest.php +++ b/core/modules/file/tests/src/Functional/SaveUploadTest.php @@ -67,7 +67,7 @@ protected function setUp(): void { $image_files = $this->drupalGetTestFiles('image'); $this->image = File::create((array) current($image_files)); - list(, $this->imageExtension) = explode('.', $this->image->getFilename()); + [, $this->imageExtension] = explode('.', $this->image->getFilename()); $this->assertFileExists($this->image->getFileUri()); $this->phpfile = current($this->drupalGetTestFiles('php')); diff --git a/core/modules/file/tests/src/Kernel/UsageTest.php b/core/modules/file/tests/src/Kernel/UsageTest.php index b9a2f7134b59..1e1a43cec265 100644 --- a/core/modules/file/tests/src/Kernel/UsageTest.php +++ b/core/modules/file/tests/src/Kernel/UsageTest.php @@ -195,7 +195,7 @@ public function createTempFiles() { * Ensure that temporary files are removed by default. */ public function testTempFileCleanupDefault() { - list($temp_old, $temp_new, $perm_old, $perm_new) = $this->createTempFiles(); + [$temp_old, $temp_new, $perm_old, $perm_new] = $this->createTempFiles(); // Run cron and then ensure that only the old, temp file was deleted. $this->container->get('cron')->run(); @@ -209,7 +209,7 @@ public function testTempFileCleanupDefault() { * Ensure that temporary files are kept as configured. */ public function testTempFileNoCleanup() { - list($temp_old, $temp_new, $perm_old, $perm_new) = $this->createTempFiles(); + [$temp_old, $temp_new, $perm_old, $perm_new] = $this->createTempFiles(); // Set the max age to 0, meaning no temporary files will be deleted. $this->config('system.file') @@ -228,7 +228,7 @@ public function testTempFileNoCleanup() { * Ensure that temporary files are kept as configured. */ public function testTempFileCustomCleanup() { - list($temp_old, $temp_new, $perm_old, $perm_new) = $this->createTempFiles(); + [$temp_old, $temp_new, $perm_old, $perm_new] = $this->createTempFiles(); // Set the max age to older than default. $this->config('system.file') diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module index 04d73fce7aaf..d068ae03acda 100644 --- a/core/modules/filter/filter.module +++ b/core/modules/filter/filter.module @@ -706,7 +706,7 @@ function _filter_autop($text) { } // Opening or closing tag? $open = ($chunk[1] != '/'); - list($tag) = preg_split('/[ >]/', substr($chunk, 2 - $open), 2); + [$tag] = preg_split('/[ >]/', substr($chunk, 2 - $open), 2); if (!$ignore) { if ($open) { $ignore = TRUE; diff --git a/core/modules/filter/tests/src/Functional/FilterDefaultFormatTest.php b/core/modules/filter/tests/src/Functional/FilterDefaultFormatTest.php index 150a2a1a97cf..a2a9a415ebf3 100644 --- a/core/modules/filter/tests/src/Functional/FilterDefaultFormatTest.php +++ b/core/modules/filter/tests/src/Functional/FilterDefaultFormatTest.php @@ -43,7 +43,7 @@ public function testDefaultTextFormats() { $this->resetFilterCaches(); $formats[] = FilterFormat::load($edit['format']); } - list($first_format, $second_format) = $formats; + [$first_format, $second_format] = $formats; $second_format_permission = $second_format->getPermissionName(); $first_user = $this->drupalCreateUser([ $first_format->getPermissionName(), diff --git a/core/modules/filter/tests/src/Functional/FilterFormatAccessTest.php b/core/modules/filter/tests/src/Functional/FilterFormatAccessTest.php index f3c513b2373e..d6a9c66e44be 100644 --- a/core/modules/filter/tests/src/Functional/FilterFormatAccessTest.php +++ b/core/modules/filter/tests/src/Functional/FilterFormatAccessTest.php @@ -97,7 +97,7 @@ protected function setUp(): void { $this->resetFilterCaches(); $formats[] = FilterFormat::load($edit['format']); } - list($this->allowedFormat, $this->secondAllowedFormat, $this->disallowedFormat) = $formats; + [$this->allowedFormat, $this->secondAllowedFormat, $this->disallowedFormat] = $formats; $this->drupalLogout(); // Create a regular user with access to two of the formats. diff --git a/core/modules/help_topics/src/HelpTopicDiscovery.php b/core/modules/help_topics/src/HelpTopicDiscovery.php index 37a81299472f..684453faa0af 100644 --- a/core/modules/help_topics/src/HelpTopicDiscovery.php +++ b/core/modules/help_topics/src/HelpTopicDiscovery.php @@ -99,7 +99,7 @@ public function findAll() { foreach ($files as $file => $provider) { $plugin_id = substr(basename($file), 0, -10); // The plugin ID begins with provider. - list($file_name_provider,) = explode('.', $plugin_id, 2); + [$file_name_provider] = explode('.', $plugin_id, 2); // Only the Help Topics module can provide help for other extensions. // @todo https://www.drupal.org/project/drupal/issues/3072312 Remove // help_topics special case once Help Topics is stable and core diff --git a/core/modules/image/image.views.inc b/core/modules/image/image.views.inc index 483f989faf9f..553678ccd835 100644 --- a/core/modules/image/image.views.inc +++ b/core/modules/image/image.views.inc @@ -45,7 +45,7 @@ function image_field_views_data_views_data_alter(array &$data, FieldStorageConfi /** @var \Drupal\Core\Entity\Sql\DefaultTableMapping $table_mapping */ $table_mapping = $entity_type_manager->getStorage($entity_type_id)->getTableMapping(); - list($label) = views_entity_field_label($entity_type_id, $field_name); + [$label] = views_entity_field_label($entity_type_id, $field_name); $data['file_managed'][$pseudo_field_name]['relationship'] = [ 'title' => t('@entity using @field', ['@entity' => $entity_type->getLabel(), '@field' => $label]), diff --git a/core/modules/image/src/PathProcessor/PathProcessorImageStyles.php b/core/modules/image/src/PathProcessor/PathProcessorImageStyles.php index f40d083ac482..b154bd4df398 100644 --- a/core/modules/image/src/PathProcessor/PathProcessorImageStyles.php +++ b/core/modules/image/src/PathProcessor/PathProcessorImageStyles.php @@ -63,7 +63,7 @@ public function processInbound($path, Request $request) { // Get the image style, scheme and path. if (substr_count($rest, '/') >= 2) { - list($image_style, $scheme, $file) = explode('/', $rest, 3); + [$image_style, $scheme, $file] = explode('/', $rest, 3); // Set the file as query parameter. $request->query->set('file', $file); diff --git a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php index 204a1ac5c70a..fa6ea636e290 100644 --- a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php +++ b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php @@ -377,7 +377,7 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin $file = $images[$extension][$min_resolution][$max_resolution][$image_index]; } - list($width, $height) = getimagesize($file->getFileUri()); + [$width, $height] = getimagesize($file->getFileUri()); $values = [ 'target_id' => $file->id(), 'alt' => $random->sentences(4), diff --git a/core/modules/image/src/Plugin/ImageEffect/CropImageEffect.php b/core/modules/image/src/Plugin/ImageEffect/CropImageEffect.php index 87536e643d35..cdacda96b7cf 100644 --- a/core/modules/image/src/Plugin/ImageEffect/CropImageEffect.php +++ b/core/modules/image/src/Plugin/ImageEffect/CropImageEffect.php @@ -20,7 +20,7 @@ class CropImageEffect extends ResizeImageEffect { * {@inheritdoc} */ public function applyEffect(ImageInterface $image) { - list($x, $y) = explode('-', $this->configuration['anchor']); + [$x, $y] = explode('-', $this->configuration['anchor']); $x = image_filter_keyword($x, $image->getWidth(), $this->configuration['width']); $y = image_filter_keyword($y, $image->getHeight(), $this->configuration['height']); if (!$image->crop($x, $y, $this->configuration['width'], $this->configuration['height'])) { diff --git a/core/modules/image/src/Plugin/ImageEffect/ScaleAndCropImageEffect.php b/core/modules/image/src/Plugin/ImageEffect/ScaleAndCropImageEffect.php index 5f06674dd6e2..b496341a417c 100644 --- a/core/modules/image/src/Plugin/ImageEffect/ScaleAndCropImageEffect.php +++ b/core/modules/image/src/Plugin/ImageEffect/ScaleAndCropImageEffect.php @@ -23,7 +23,7 @@ public function applyEffect(ImageInterface $image) { $height = $this->configuration['height']; $scale = max($width / $image->getWidth(), $height / $image->getHeight()); - list($x, $y) = explode('-', $this->configuration['anchor']); + [$x, $y] = explode('-', $this->configuration['anchor']); $x = image_filter_keyword($x, $image->getWidth() * $scale, $width); $y = image_filter_keyword($y, $image->getHeight() * $scale, $height); diff --git a/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php b/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php index 65ebc66f6338..4e3d31cfa749 100644 --- a/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php +++ b/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php @@ -239,7 +239,7 @@ public function testImageFieldSettings() { $renderer = $this->container->get('renderer'); $node_storage = $this->container->get('entity_type.manager')->getStorage('node'); $test_image = current($this->drupalGetTestFiles('image')); - list(, $test_image_extension) = explode('.', $test_image->filename); + [, $test_image_extension] = explode('.', $test_image->filename); $field_name = strtolower($this->randomMachineName()); $field_settings = [ 'alt_field' => 1, diff --git a/core/modules/jsonapi/src/Access/TemporaryQueryGuard.php b/core/modules/jsonapi/src/Access/TemporaryQueryGuard.php index 1c5c34db1612..6225bf3aa69f 100644 --- a/core/modules/jsonapi/src/Access/TemporaryQueryGuard.php +++ b/core/modules/jsonapi/src/Access/TemporaryQueryGuard.php @@ -150,7 +150,7 @@ protected static function secureQuery(QueryInterface $query, $entity_type_id, ar // portion. JSON:API will have already validated that the property // exists. $split_specifier = explode(':', $specifier, 2); - list($property_name, $target_entity_type_id) = array_merge($split_specifier, count($split_specifier) === 2 ? [] : [NULL]); + [$property_name, $target_entity_type_id] = array_merge($split_specifier, count($split_specifier) === 2 ? [] : [NULL]); // The specifier is either a field property or a delta. If it is a data // reference or a delta, then it needs to be traversed to the next // specifier. However, if the specific is a simple field property, i.e. diff --git a/core/modules/jsonapi/src/EventSubscriber/ResourceObjectNormalizationCacher.php b/core/modules/jsonapi/src/EventSubscriber/ResourceObjectNormalizationCacher.php index 667eb83d2562..c16a23be8a9d 100644 --- a/core/modules/jsonapi/src/EventSubscriber/ResourceObjectNormalizationCacher.php +++ b/core/modules/jsonapi/src/EventSubscriber/ResourceObjectNormalizationCacher.php @@ -110,7 +110,7 @@ public function saveOnTerminate(ResourceObject $object, array $normalization_par */ public function onTerminate(TerminateEvent $event) { foreach ($this->toCache as $value) { - list($object, $normalization_parts) = $value; + [$object, $normalization_parts] = $value; $this->set($object, $normalization_parts); } } diff --git a/core/modules/jsonapi/src/Revisions/VersionNegotiator.php b/core/modules/jsonapi/src/Revisions/VersionNegotiator.php index 76bd43f0f19b..857582a4119f 100644 --- a/core/modules/jsonapi/src/Revisions/VersionNegotiator.php +++ b/core/modules/jsonapi/src/Revisions/VersionNegotiator.php @@ -65,7 +65,7 @@ public function addVersionNegotiator(VersionNegotiatorInterface $version_negotia */ public function getRevision(EntityInterface $entity, $resource_version_identifier) { try { - list($version_negotiator_name, $version_argument) = explode(VersionNegotiator::SEPARATOR, $resource_version_identifier, 2); + [$version_negotiator_name, $version_argument] = explode(VersionNegotiator::SEPARATOR, $resource_version_identifier, 2); if (!isset($this->negotiators[$version_negotiator_name])) { static::throwBadRequestHttpException($resource_version_identifier); } diff --git a/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php b/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php index 58838f000275..ada184a7d820 100644 --- a/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php +++ b/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php @@ -2284,7 +2284,7 @@ public function testPatchIndividual() { $this->assertResourceErrorResponse(403, "The current user is not allowed to PATCH the selected field (field_rest_test).", $url, $response, '/data/attributes/field_rest_test'); // DX: 403 when sending PATCH request with updated read-only fields. - list($modified_entity, $original_values) = static::getModifiedEntityForPatchTesting($this->entity); + [$modified_entity, $original_values] = static::getModifiedEntityForPatchTesting($this->entity); // Send PATCH request by serializing the modified entity, assert the error // response, change the modified entity field that caused the error response // back to its original value, repeat. diff --git a/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php b/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php index 9fe25c95b9fc..c9154a6d445f 100644 --- a/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php @@ -224,7 +224,7 @@ public function tearDown(): void { * @covers ::normalize */ public function testNormalize() { - list($request, $resource_type) = $this->generateProphecies('node', 'article'); + [$request, $resource_type] = $this->generateProphecies('node', 'article'); $resource_object = ResourceObject::createFromEntity($resource_type, $this->node); $includes = $this->includeResolver->resolve($resource_object, 'uid,field_tags,field_image'); @@ -327,7 +327,7 @@ public function testNormalize() { public function testNormalizeRelated() { $this->markTestIncomplete('This fails and should be fixed by https://www.drupal.org/project/drupal/issues/2922121'); - list($request, $resource_type) = $this->generateProphecies('node', 'article', 'uid'); + [$request, $resource_type] = $this->generateProphecies('node', 'article', 'uid'); $request->query = new ParameterBag([ 'fields' => [ 'user--user' => 'name,roles', @@ -362,7 +362,7 @@ public function testNormalizeRelated() { * @covers ::normalize */ public function testNormalizeUuid() { - list($request, $resource_type) = $this->generateProphecies('node', 'article', 'uuid'); + [$request, $resource_type] = $this->generateProphecies('node', 'article', 'uuid'); $resource_object = ResourceObject::createFromEntity($resource_type, $this->node); $include_param = 'uid,field_tags'; $includes = $this->includeResolver->resolve($resource_object, $include_param); @@ -452,11 +452,11 @@ public function testAliasFieldRouteException() { $this->assertSame('user_roles', $this->resourceTypeRepository->getByTypeName('user--user')->getPublicName('roles')); // Create the request to fetch the articles and fetch included user. - list($request, $resource_type) = $this->generateProphecies('node', 'article'); + [$request, $resource_type] = $this->generateProphecies('node', 'article'); $user = User::load($this->node->getOwnerId()); $resource_object = ResourceObject::createFromEntity($resource_type, $this->node); - list($request, $user_resource_type) = $this->generateProphecies('user', 'user'); + [$request, $user_resource_type] = $this->generateProphecies('user', 'user'); $resource_object_user = LabelOnlyResourceObject::createFromEntity($user_resource_type, $user); $includes = $this->includeResolver->resolve($resource_object_user, 'user_roles'); @@ -499,7 +499,7 @@ public function testAliasFieldRouteException() { * @covers ::normalize */ public function testNormalizeConfig() { - list($request, $resource_type) = $this->generateProphecies('node_type', 'node_type', 'id'); + [$request, $resource_type] = $this->generateProphecies('node_type', 'node_type', 'id'); $resource_object = ResourceObject::createFromEntity($resource_type, $this->nodeType); $document_wrapper = new JsonApiDocumentTopLevel(new ResourceObjectData([$resource_object], 1), new NullIncludedData(), new LinkCollection([])); @@ -532,7 +532,7 @@ public function testNormalizeConfig() { public function testDenormalize() { $payload = '{"data":{"type":"article","attributes":{"title":"Testing article"}}}'; - list($request, $resource_type) = $this->generateProphecies('node', 'article', 'id'); + [$request, $resource_type] = $this->generateProphecies('node', 'article', 'id'); $node = $this ->getNormalizer() ->denormalize(Json::decode($payload), NULL, 'api_json', [ @@ -598,10 +598,10 @@ public function testDenormalizeUuid() { ]; foreach ($configurations as $configuration) { - list($payload_data, $expected) = $this->denormalizeUuidProviderBuilder($configuration); + [$payload_data, $expected] = $this->denormalizeUuidProviderBuilder($configuration); $payload = Json::encode($payload_data); - list($request, $resource_type) = $this->generateProphecies('node', 'article'); + [$request, $resource_type] = $this->generateProphecies('node', 'article'); $this->container->get('request_stack')->push($request); try { $node = $this @@ -671,7 +671,7 @@ public function testDenormalizeInvalidTypeAndNoType() { // Test relationship member with invalid type. $payload = Json::encode($payload_data); - list($request, $resource_type) = $this->generateProphecies('node', 'article'); + [$request, $resource_type] = $this->generateProphecies('node', 'article'); $this->container->get('request_stack')->push($request); try { $this @@ -690,7 +690,7 @@ public function testDenormalizeInvalidTypeAndNoType() { unset($payload_data['data']['relationships']['field_tags']['data'][0]['type']); $payload = Json::encode($payload_data); - list($request, $resource_type) = $this->generateProphecies('node', 'article'); + [$request, $resource_type] = $this->generateProphecies('node', 'article'); $this->container->get('request_stack')->push($request); try { $this->container->get('jsonapi_test_normalizers_kernel.jsonapi_document_toplevel') @@ -715,9 +715,9 @@ public function testDenormalizeInvalidTypeAndNoType() { * The test data. */ protected function denormalizeUuidProviderBuilder(array $options) { - list($input, $expected) = $options; - list($input_tag_uuids, $input_user_uuid) = $input; - list($expected_tag_ids, $expected_user_id) = $expected; + [$input, $expected] = $options; + [$input_tag_uuids, $input_user_uuid] = $input; + [$expected_tag_ids, $expected_user_id] = $expected; $node = [ [ @@ -773,7 +773,7 @@ protected function denormalizeUuidProviderBuilder(array $options) { * @dataProvider testCacheableMetadataProvider */ public function testCacheableMetadata(CacheableMetadata $expected_metadata, $fields = NULL, $includes = NULL) { - list($request, $resource_type) = $this->generateProphecies('node', 'article'); + [$request, $resource_type] = $this->generateProphecies('node', 'article'); $resource_object = ResourceObject::createFromEntity($resource_type, $this->node); $context = [ 'resource_type' => $resource_type, diff --git a/core/modules/jsonapi/tests/src/Unit/EventSubscriber/ResourceResponseValidatorTest.php b/core/modules/jsonapi/tests/src/Unit/EventSubscriber/ResourceResponseValidatorTest.php index 2dcafb191df2..e6c1c566cfaa 100644 --- a/core/modules/jsonapi/tests/src/Unit/EventSubscriber/ResourceResponseValidatorTest.php +++ b/core/modules/jsonapi/tests/src/Unit/EventSubscriber/ResourceResponseValidatorTest.php @@ -190,7 +190,7 @@ public function validateResponseProvider() { ]; $test_cases = array_map(function ($input) use ($defaults) { - list($json, $expected, $description, $route_name, $resource_type) = array_values($input + $defaults); + [$json, $expected, $description, $route_name, $resource_type] = array_values($input + $defaults); return [ $this->createRequest($route_name, $resource_type), $this->createResponse($json), diff --git a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrl.php b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrl.php index 7436a3f3a010..48ee5e028b5c 100644 --- a/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrl.php +++ b/core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationUrl.php @@ -164,7 +164,7 @@ public function processOutbound($path, &$options = [], Request $request = NULL, // In case either the original base URL or the HTTP host contains a // port, retain it. if (isset($normalized_base_url) && strpos($normalized_base_url, ':') !== FALSE) { - list(, $port) = explode(':', $normalized_base_url); + [, $port] = explode(':', $normalized_base_url); $options['base_url'] .= ':' . $port; } elseif (($url_scheme == 'http' && $port != 80) || ($url_scheme == 'https' && $port != 443)) { diff --git a/core/modules/language/src/Plugin/migrate/process/ContentTranslationEnabledSetting.php b/core/modules/language/src/Plugin/migrate/process/ContentTranslationEnabledSetting.php index 15a953897a2e..513b93343f90 100644 --- a/core/modules/language/src/Plugin/migrate/process/ContentTranslationEnabledSetting.php +++ b/core/modules/language/src/Plugin/migrate/process/ContentTranslationEnabledSetting.php @@ -29,7 +29,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable throw new MigrateException('Input should be an array'); } - list($language_content_type, $entity_translation_entity_types, $entity_type) = $value; + [$language_content_type, $entity_translation_entity_types, $entity_type] = $value; switch ($language_content_type) { // In the case of being 0, it will be skipped. We are not actually setting diff --git a/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php b/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php index 1f5ec54495a3..98a2bd4352fb 100644 --- a/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php +++ b/core/modules/language/tests/src/Functional/LanguageSwitchingTest.php @@ -97,7 +97,7 @@ protected function doTestLanguageBlockAuthenticated($block_label) { $labels = []; foreach ($language_switchers as $list_item) { $classes = explode(" ", $list_item->getAttribute('class')); - list($langcode) = array_intersect($classes, ['en', 'fr']); + [$langcode] = array_intersect($classes, ['en', 'fr']); $list_items[] = [ 'langcode_class' => $langcode, 'data-drupal-link-system-path' => $list_item->getAttribute('data-drupal-link-system-path'), @@ -156,7 +156,7 @@ protected function doTestLanguageBlockAnonymous($block_label) { $labels = []; foreach ($language_switchers as $list_item) { $classes = explode(" ", $list_item->getAttribute('class')); - list($langcode) = array_intersect($classes, ['en', 'fr']); + [$langcode] = array_intersect($classes, ['en', 'fr']); if (in_array('is-active', $classes)) { $links['active'][] = $langcode; } diff --git a/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php b/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php index 8d8b6711bd62..31a2c1c48acb 100644 --- a/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php +++ b/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php @@ -240,7 +240,7 @@ public function providerIsDefaultConfiguration() { * @dataProvider providerLoadByEntityTypeBundle */ public function testLoadByEntityTypeBundle($config_id, ContentLanguageSettings $existing_config = NULL, $expected_langcode, $expected_language_alterable) { - list($type, $bundle) = explode('.', $config_id); + [$type, $bundle] = explode('.', $config_id); $nullConfig = new ContentLanguageSettings([ 'target_entity_type_id' => $type, diff --git a/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php b/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php index c0794f9e2707..70e86f699913 100644 --- a/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php +++ b/core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php @@ -504,7 +504,7 @@ private function getQuickEditSectionComponent() { // Builder component. It follows the structure prescribed by the // documentation of hook_quickedit_render_field(). if (count($parts) === 6 && $parts[0] === 'layout_builder') { - list(, $delta, $component_uuid, $entity_id) = QuickEditIntegration::deconstructViewModeId($original_mode); + [, $delta, $component_uuid, $entity_id] = QuickEditIntegration::deconstructViewModeId($original_mode); $entity = $this->entityTypeManager()->getStorage($this->getTargetEntityTypeId())->load($entity_id); $sections = $this->getEntitySections($entity); if (isset($sections[$delta])) { @@ -539,7 +539,7 @@ private function getSectionComponentForFieldName($field_name) { if ($plugin instanceof DerivativeInspectionInterface && in_array($plugin->getBaseId(), ['field_block', 'extra_field_block'], TRUE)) { // FieldBlock derivative IDs are in the format // [entity_type]:[bundle]:[field]. - list(, , $field_block_field_name) = explode(PluginBase::DERIVATIVE_SEPARATOR, $plugin->getDerivativeId()); + [, , $field_block_field_name] = explode(PluginBase::DERIVATIVE_SEPARATOR, $plugin->getDerivativeId()); if ($field_block_field_name === $field_name) { return $component; } diff --git a/core/modules/layout_builder/src/Plugin/Block/ExtraFieldBlock.php b/core/modules/layout_builder/src/Plugin/Block/ExtraFieldBlock.php index 56875deb35f1..35c9ee905d89 100644 --- a/core/modules/layout_builder/src/Plugin/Block/ExtraFieldBlock.php +++ b/core/modules/layout_builder/src/Plugin/Block/ExtraFieldBlock.php @@ -72,7 +72,7 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition $this->entityTypeManager = $entity_type_manager; $this->entityFieldManager = $entity_field_manager; // Get field name from the plugin ID. - list (, , , $field_name) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 4); + [, , , $field_name] = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 4); assert(!empty($field_name)); $this->fieldName = $field_name; diff --git a/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php b/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php index 80d9b97315bf..b3b7b919ae2e 100644 --- a/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php +++ b/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php @@ -118,7 +118,7 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition $this->logger = $logger; // Get the entity type and field name from the plugin ID. - list (, $entity_type_id, $bundle, $field_name) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 4); + [, $entity_type_id, $bundle, $field_name] = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 4); $this->entityTypeId = $entity_type_id; $this->bundle = $bundle; $this->fieldName = $field_name; diff --git a/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php b/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php index 140a91213cc6..dc0f35707b41 100644 --- a/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php +++ b/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php @@ -261,7 +261,7 @@ private function extractEntityFromRoute($value, array $defaults) { } if (is_string($value) && strpos($value, '.') !== FALSE) { - list($entity_type_id, $bundle, $view_mode) = explode('.', $value, 3); + [$entity_type_id, $bundle, $view_mode] = explode('.', $value, 3); } elseif (!empty($defaults['entity_type_id']) && !empty($defaults['bundle']) && !empty($defaults['view_mode_name'])) { $entity_type_id = $defaults['entity_type_id']; diff --git a/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php b/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php index d6c0729643a7..219a3c6a0a84 100644 --- a/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php +++ b/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php @@ -195,7 +195,7 @@ public function deriveContextsFromRoute($value, $definition, $name, array $defau */ private function extractEntityFromRoute($value, array $defaults) { if (strpos($value, '.') !== FALSE) { - list($entity_type_id, $entity_id) = explode('.', $value, 2); + [$entity_type_id, $entity_id] = explode('.', $value, 2); } elseif (isset($defaults['entity_type_id']) && !empty($defaults[$defaults['entity_type_id']])) { $entity_type_id = $defaults['entity_type_id']; diff --git a/core/modules/layout_builder/src/QuickEditIntegration.php b/core/modules/layout_builder/src/QuickEditIntegration.php index 9ee5045fbda9..c087f90971f5 100644 --- a/core/modules/layout_builder/src/QuickEditIntegration.php +++ b/core/modules/layout_builder/src/QuickEditIntegration.php @@ -219,7 +219,7 @@ private static function getViewModeId(EntityInterface $entity, EntityViewDisplay * @see \Drupal\layout_builder\QuickEditIntegration::getViewModeId() */ public static function deconstructViewModeId($quick_edit_view_mode_id) { - list(, $entity_view_mode_id, $delta, $component_uuid, $entity_id) = explode('-', $quick_edit_view_mode_id, 7); + [, $entity_view_mode_id, $delta, $component_uuid, $entity_id] = explode('-', $quick_edit_view_mode_id, 7); return [ $entity_view_mode_id, // @todo Explicitly cast delta to an integer, remove this in @@ -247,7 +247,7 @@ public static function deconstructViewModeId($quick_edit_view_mode_id) { * The re-rendered field. */ public function quickEditRenderField(FieldableEntityInterface $entity, $field_name, $quick_edit_view_mode_id, $langcode) { - list($entity_view_mode, $delta, $component_uuid) = static::deconstructViewModeId($quick_edit_view_mode_id); + [$entity_view_mode, $delta, $component_uuid] = static::deconstructViewModeId($quick_edit_view_mode_id); $entity_build = $this->entityTypeManager->getViewBuilder($entity->getEntityTypeId())->view($entity, $entity_view_mode, $langcode); $this->buildEntityView($entity_build); diff --git a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php index 721841f1ae4a..8c6816d8dede 100644 --- a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php +++ b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php @@ -71,7 +71,7 @@ protected static function getUriAsDisplayableString($uri) { $displayable_string = $uri_reference; } elseif ($scheme === 'entity') { - list($entity_type, $entity_id) = explode('/', substr($uri, 7), 2); + [$entity_type, $entity_id] = explode('/', substr($uri, 7), 2); // Show the 'entity:' URI as the entity autocomplete would. // @todo Support entity types other than 'node'. Will be fixed in // https://www.drupal.org/node/2423093. diff --git a/core/modules/link/tests/src/Functional/LinkFieldUITest.php b/core/modules/link/tests/src/Functional/LinkFieldUITest.php index 4b485c2955d6..7045a04fa3d7 100644 --- a/core/modules/link/tests/src/Functional/LinkFieldUITest.php +++ b/core/modules/link/tests/src/Functional/LinkFieldUITest.php @@ -74,7 +74,7 @@ protected function setUp(): void { */ public function testFieldUI() { foreach ($this->providerTestFieldUI() as $item) { - list($cardinality, $link_type, $title, $label, $field_name, $default_uri) = $item; + [$cardinality, $link_type, $title, $label, $field_name, $default_uri] = $item; $this->runFieldUIItem($cardinality, $link_type, $title, $label, $field_name, $default_uri); } } diff --git a/core/modules/locale/src/Plugin/QueueWorker/LocaleTranslation.php b/core/modules/locale/src/Plugin/QueueWorker/LocaleTranslation.php index 2d07fab3d6a5..0d73a2995c0f 100644 --- a/core/modules/locale/src/Plugin/QueueWorker/LocaleTranslation.php +++ b/core/modules/locale/src/Plugin/QueueWorker/LocaleTranslation.php @@ -80,7 +80,7 @@ public static function create(ContainerInterface $container, array $configuratio */ public function processItem($data) { $this->moduleHandler->loadInclude('locale', 'batch.inc'); - list($function, $args) = $data; + [$function, $args] = $data; // We execute batch operation functions here to check, download and import // the translation files. Batch functions use a context variable as last diff --git a/core/modules/locale/src/PoDatabaseWriter.php b/core/modules/locale/src/PoDatabaseWriter.php index aab9c72c1a3c..6763a79e675c 100644 --- a/core/modules/locale/src/PoDatabaseWriter.php +++ b/core/modules/locale/src/PoDatabaseWriter.php @@ -177,7 +177,7 @@ public function setHeader(PoHeader $header) { // Get and store the plural formula if available. $plural = $header->getPluralForms(); if (isset($plural) && $p = $header->parsePluralForms($plural)) { - list($nplurals, $formula) = $p; + [$nplurals, $formula] = $p; \Drupal::service('locale.plural.formula')->setPluralFormula($langcode, $nplurals, $formula); } } diff --git a/core/modules/media/src/OEmbed/ResourceFetcher.php b/core/modules/media/src/OEmbed/ResourceFetcher.php index 05a6b2d0adc5..39e7dd147f67 100644 --- a/core/modules/media/src/OEmbed/ResourceFetcher.php +++ b/core/modules/media/src/OEmbed/ResourceFetcher.php @@ -74,7 +74,7 @@ public function fetchResource($url) { throw new ResourceException('Could not retrieve the oEmbed resource.', $url, [], $e); } - list($format) = $response->getHeader('Content-Type'); + [$format] = $response->getHeader('Content-Type'); $content = (string) $response->getBody(); if (strstr($format, 'text/xml') || strstr($format, 'application/xml')) { diff --git a/core/modules/menu_link_content/src/Form/MenuLinkContentForm.php b/core/modules/menu_link_content/src/Form/MenuLinkContentForm.php index a7525c0ddc3d..6bffb46a373f 100644 --- a/core/modules/menu_link_content/src/Form/MenuLinkContentForm.php +++ b/core/modules/menu_link_content/src/Form/MenuLinkContentForm.php @@ -111,7 +111,7 @@ public function buildEntity(array $form, FormStateInterface $form_state) { /** @var \Drupal\menu_link_content\MenuLinkContentInterface $entity */ $entity = parent::buildEntity($form, $form_state); - list($menu_name, $parent) = explode(':', $form_state->getValue('menu_parent'), 2); + [$menu_name, $parent] = explode(':', $form_state->getValue('menu_parent'), 2); $entity->parent->value = $parent; $entity->menu_name->value = $menu_name; diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module index aaa740624153..ad49bf10f701 100644 --- a/core/modules/menu_ui/menu_ui.module +++ b/core/modules/menu_ui/menu_ui.module @@ -331,7 +331,7 @@ function menu_ui_form_node_form_submit($form, FormStateInterface $form_state) { // Decompose the selected menu parent option into 'menu_name' and 'parent', // if the form used the default parent selection widget. if (!empty($values['menu_parent'])) { - list($menu_name, $parent) = explode(':', $values['menu_parent'], 2); + [$menu_name, $parent] = explode(':', $values['menu_parent'], 2); $values['menu_name'] = $menu_name; $values['parent'] = $parent; } diff --git a/core/modules/menu_ui/src/Plugin/Validation/Constraint/MenuSettingsConstraintValidator.php b/core/modules/menu_ui/src/Plugin/Validation/Constraint/MenuSettingsConstraintValidator.php index 3fa8f2695cbb..2f6d6f85341a 100644 --- a/core/modules/menu_ui/src/Plugin/Validation/Constraint/MenuSettingsConstraintValidator.php +++ b/core/modules/menu_ui/src/Plugin/Validation/Constraint/MenuSettingsConstraintValidator.php @@ -25,7 +25,7 @@ public function validate($entity, Constraint $constraint) { } if (trim($values['title']) && !empty($values['menu_parent'])) { - list($menu_name, $parent) = explode(':', $values['menu_parent'], 2); + [$menu_name, $parent] = explode(':', $values['menu_parent'], 2); $values['menu_name'] = $menu_name; $values['parent'] = $parent; } diff --git a/core/modules/menu_ui/tests/src/Traits/MenuUiTrait.php b/core/modules/menu_ui/tests/src/Traits/MenuUiTrait.php index c4718235102d..0d0d14bf0d75 100644 --- a/core/modules/menu_ui/tests/src/Traits/MenuUiTrait.php +++ b/core/modules/menu_ui/tests/src/Traits/MenuUiTrait.php @@ -28,7 +28,7 @@ protected function assertMenuLink(array $expected_item, $menu_plugin_id) { // Pull the path from the menu link content. if (strpos($menu_plugin_id, 'menu_link_content') === 0) { - list(, $uuid) = explode(':', $menu_plugin_id, 2); + [, $uuid] = explode(':', $menu_plugin_id, 2); /** @var \Drupal\menu_link_content\Entity\MenuLinkContent $entity */ $entity = \Drupal::service('entity.repository') ->loadEntityByUuid('menu_link_content', $uuid); diff --git a/core/modules/migrate/src/EntityFieldDefinitionTrait.php b/core/modules/migrate/src/EntityFieldDefinitionTrait.php index bc8af81909b9..37446d23b809 100644 --- a/core/modules/migrate/src/EntityFieldDefinitionTrait.php +++ b/core/modules/migrate/src/EntityFieldDefinitionTrait.php @@ -48,7 +48,7 @@ protected function getDefinitionFromEntity($key) { protected static function getEntityTypeId($plugin_id) { $entity_type_id = NULL; if (strpos($plugin_id, static::DERIVATIVE_SEPARATOR)) { - list(, $entity_type_id) = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2); + [, $entity_type_id] = explode(static::DERIVATIVE_SEPARATOR, $plugin_id, 2); } return $entity_type_id; } diff --git a/core/modules/migrate/src/Plugin/migrate/process/Download.php b/core/modules/migrate/src/Plugin/migrate/process/Download.php index aedb204d410a..a2832b66e8a7 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/Download.php +++ b/core/modules/migrate/src/Plugin/migrate/process/Download.php @@ -117,7 +117,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable if ($row->isStub()) { return NULL; } - list($source, $destination) = $value; + [$source, $destination] = $value; // Modify the destination filename if necessary. $final_destination = $this->fileSystem->getDestinationFilename($destination, $this->configuration['file_exists']); diff --git a/core/modules/migrate/src/Plugin/migrate/process/FileCopy.php b/core/modules/migrate/src/Plugin/migrate/process/FileCopy.php index 65b5c8ec7735..f4d006c09190 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/FileCopy.php +++ b/core/modules/migrate/src/Plugin/migrate/process/FileCopy.php @@ -123,7 +123,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable if ($row->isStub()) { return NULL; } - list($source, $destination) = $value; + [$source, $destination] = $value; // If the source path or URI represents a remote resource, delegate to the // download plugin. diff --git a/core/modules/migrate/src/Plugin/migrate/process/Route.php b/core/modules/migrate/src/Plugin/migrate/process/Route.php index ebb9a4d6fddd..63c10200727f 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/Route.php +++ b/core/modules/migrate/src/Plugin/migrate/process/Route.php @@ -97,7 +97,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable $options = []; } else { - list($link_path, $options) = $value; + [$link_path, $options] = $value; } $extracted = $this->pathValidator->getUrlIfValidWithoutAccessCheck($link_path); diff --git a/core/modules/migrate/tests/src/Kernel/QueryBatchTest.php b/core/modules/migrate/tests/src/Kernel/QueryBatchTest.php index 86dd2059dc88..7844e4144dc3 100644 --- a/core/modules/migrate/tests/src/Kernel/QueryBatchTest.php +++ b/core/modules/migrate/tests/src/Kernel/QueryBatchTest.php @@ -100,7 +100,7 @@ public function queryDataProvider() { $tests = []; $data_set = 0; foreach ($test_parameters as $data) { - list($num_rows, $batch_size) = $data; + [$num_rows, $batch_size] = $data; for ($i = 0; $i < $num_rows; $i++) { $tests[$data_set]['source_data'][$table][] = [ 'id' => $i, diff --git a/core/modules/migrate/tests/src/Kernel/process/FileCopyTest.php b/core/modules/migrate/tests/src/Kernel/process/FileCopyTest.php index 1d94110e6e96..ae52f6c6fe7a 100644 --- a/core/modules/migrate/tests/src/Kernel/process/FileCopyTest.php +++ b/core/modules/migrate/tests/src/Kernel/process/FileCopyTest.php @@ -65,7 +65,7 @@ public function testSuccessfulCopies() { ], ]; foreach ($data_sets as $data) { - list($source_path, $destination_path) = $data; + [$source_path, $destination_path] = $data; $actual_destination = $this->doTransform($source_path, $destination_path); $this->assertFileExists($destination_path); // Make sure we didn't accidentally do a move. @@ -149,7 +149,7 @@ public function testSuccessfulMoves() { ], ]; foreach ($data_sets as $data) { - list($source_path, $destination_path) = $data; + [$source_path, $destination_path] = $data; $actual_destination = $this->doTransform($source_path, $destination_path, ['move' => TRUE]); $this->assertFileExists($destination_path); $this->assertFileDoesNotExist($source_path); diff --git a/core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php b/core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php index c148213e5c3a..a6ff0931ea56 100644 --- a/core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php +++ b/core/modules/migrate/tests/src/Unit/MigrationPluginManagerTest.php @@ -58,7 +58,7 @@ public function testDependencyBuilding($migrations_data, $result_ids) { $requirements = array_combine($requirements, $requirements); $this->assertCount(1, $migration->set); - list($set_prop, $set_requirements) = reset($migration->set); + [$set_prop, $set_requirements] = reset($migration->set); $this->assertEquals('requirements', $set_prop); $this->assertEquals($requirements, $set_requirements); } diff --git a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeFormBase.php b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeFormBase.php index 30c1091b1008..989b7ee630c0 100644 --- a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeFormBase.php +++ b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeFormBase.php @@ -68,7 +68,7 @@ public static function create(ContainerInterface $container) { */ public function buildForm(array $form, FormStateInterface $form_state) { // Get the current major version. - list($this->destinationSiteVersion) = explode('.', \Drupal::VERSION, 2); + [$this->destinationSiteVersion] = explode('.', \Drupal::VERSION, 2); $form = []; $form['actions']['#type'] = 'actions'; $form['actions']['submit'] = [ diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeFormStepsTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeFormStepsTest.php index 2ce1446efbd1..1d86b61ef8b3 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeFormStepsTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeFormStepsTest.php @@ -63,7 +63,7 @@ public function testMigrateUpgradeReviewPage() { // form. $session = $this->assertSession(); // Get the current major version. - list($destination_site_version) = explode('.', \Drupal::VERSION, 2); + [$destination_site_version] = explode('.', \Drupal::VERSION, 2); $expected['initial'] = "Upgrade a site by importing its files and the data from its database into a clean and empty new install of Drupal $destination_site_version."; $expected['incremental'] = "An upgrade has already been performed on this site."; diff --git a/core/modules/node/src/EventSubscriber/NodeTranslationExceptionSubscriber.php b/core/modules/node/src/EventSubscriber/NodeTranslationExceptionSubscriber.php index 7d93e7201a58..35203168a544 100644 --- a/core/modules/node/src/EventSubscriber/NodeTranslationExceptionSubscriber.php +++ b/core/modules/node/src/EventSubscriber/NodeTranslationExceptionSubscriber.php @@ -104,7 +104,7 @@ public function onException(ExceptionEvent $event) { $old_nid = $parameters['node']; $collection = $this->keyValue->get('node_translation_redirect'); if ($old_nid && $value = $collection->get($old_nid)) { - list($nid, $langcode) = $value; + [$nid, $langcode] = $value; $language = $this->languageManager->getLanguage($langcode); $url = $this->urlGenerator->generateFromRoute('entity.node.canonical', ['node' => $nid], ['language' => $language]); $response = new RedirectResponse($url, 301); diff --git a/core/modules/node/src/Plugin/Search/NodeSearch.php b/core/modules/node/src/Plugin/Search/NodeSearch.php index 5412541a49b7..0342c5f01d29 100644 --- a/core/modules/node/src/Plugin/Search/NodeSearch.php +++ b/core/modules/node/src/Plugin/Search/NodeSearch.php @@ -757,7 +757,7 @@ protected function parseAdvancedDefaults($f, $keys) { // Split out the advanced search parameters. foreach ($f as $advanced) { - list($key, $value) = explode(':', $advanced, 2); + [$key, $value] = explode(':', $advanced, 2); if (!isset($defaults[$key])) { $defaults[$key] = []; } diff --git a/core/modules/page_cache/tests/src/Functional/PageCacheTest.php b/core/modules/page_cache/tests/src/Functional/PageCacheTest.php index 731ba0404589..d96ff7601229 100644 --- a/core/modules/page_cache/tests/src/Functional/PageCacheTest.php +++ b/core/modules/page_cache/tests/src/Functional/PageCacheTest.php @@ -610,7 +610,7 @@ public function testNoUrlNormalization() { ], ]; - foreach ($tests as list($url_raw, $url_normalized)) { + foreach ($tests as [$url_raw, $url_normalized]) { // Initialize cache on raw URL. $headers = $this->getHeaders($url_raw); $this->assertEquals('MISS', $headers['X-Drupal-Cache']); @@ -651,7 +651,7 @@ protected function getHeaders($url) { $headers = []; foreach (explode("\n", $output) as $header) { if (strpos($header, ':')) { - list($key, $value) = explode(':', $header, 2); + [$key, $value] = explode(':', $header, 2); $headers[trim($key)] = trim($value); } } diff --git a/core/modules/quickedit/src/QuickEditController.php b/core/modules/quickedit/src/QuickEditController.php index 455b7bfa6ca3..6a2a794ea2af 100644 --- a/core/modules/quickedit/src/QuickEditController.php +++ b/core/modules/quickedit/src/QuickEditController.php @@ -126,7 +126,7 @@ public function metadata(Request $request) { $metadata = []; foreach ($fields as $field) { - list($entity_type, $entity_id, $field_name, $langcode, $view_mode) = explode('/', $field); + [$entity_type, $entity_id, $field_name, $langcode, $view_mode] = explode('/', $field); // Load the entity. if (!$entity_type || !$this->entityTypeManager()->getDefinition($entity_type)) { diff --git a/core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php b/core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php index 5e6848380dda..30f40bae9889 100644 --- a/core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php +++ b/core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php @@ -24,7 +24,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable throw new MigrateException('Input should be an array'); } - list($mappings, $breakpoint_group) = $value; + [$mappings, $breakpoint_group] = $value; $new_value = []; foreach ($mappings as $mapping_id => $mapping) { diff --git a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php index e3df96112dc1..40c401bdf802 100644 --- a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php +++ b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php @@ -999,7 +999,7 @@ public function testPatch() { // DX: 403 when sending PATCH request with updated read-only fields. $this->assertPatchProtectedFieldNamesStructure(); - list($modified_entity, $original_values) = static::getModifiedEntityForPatchTesting($this->entity); + [$modified_entity, $original_values] = static::getModifiedEntityForPatchTesting($this->entity); // Send PATCH request by serializing the modified entity, assert the error // response, change the modified entity field that caused the error response // back to its original value, repeat. diff --git a/core/modules/search/src/SearchIndex.php b/core/modules/search/src/SearchIndex.php index df6005685c8b..1334992e452a 100644 --- a/core/modules/search/src/SearchIndex.php +++ b/core/modules/search/src/SearchIndex.php @@ -117,7 +117,7 @@ public function index($type, $sid, $langcode, $text, $update_weights = TRUE) { foreach ($split as $value) { if ($tag) { // Increase or decrease score per word based on tag. - list($tagname) = explode(' ', $value, 2); + [$tagname] = explode(' ', $value, 2); $tagname = mb_strtolower($tagname); // Closing or opening tag? if ($tagname[0] == '/') { diff --git a/core/modules/search/src/SearchQuery.php b/core/modules/search/src/SearchQuery.php index 92a1e10a74b3..6869da434f71 100644 --- a/core/modules/search/src/SearchQuery.php +++ b/core/modules/search/src/SearchQuery.php @@ -316,7 +316,7 @@ protected function parseSearchExpression() { $has_new_scores = FALSE; $queryor = $this->connection->condition('OR'); foreach ($key as $or) { - list($num_new_scores) = $this->parseWord($or); + [$num_new_scores] = $this->parseWord($or); $has_new_scores |= $num_new_scores; $queryor->condition('d.data', "% $or %", 'LIKE'); } @@ -329,7 +329,7 @@ protected function parseSearchExpression() { // Single ANDed term. else { $has_and = TRUE; - list($num_new_scores, $num_valid_words) = $this->parseWord($key); + [$num_new_scores, $num_valid_words] = $this->parseWord($key); $this->conditions->condition('d.data', "% $key %", 'LIKE'); if (!$num_valid_words) { $this->simple = FALSE; diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index 65fb20a62b06..2c166df999e4 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -88,7 +88,7 @@ function template_preprocess_system_admin_index(&$variables) { $stripe = 0; // Iterate over all modules. foreach ($variables['menu_items'] as $module => $block) { - list($description, $items) = $block; + [$description, $items] = $block; $position = ++$stripe % 2 ? 'left' : 'right'; // Output links. if (count($items)) { diff --git a/core/modules/system/system.module b/core/modules/system/system.module index 1295b6d18b3f..522159f005a9 100644 --- a/core/modules/system/system.module +++ b/core/modules/system/system.module @@ -605,7 +605,7 @@ function system_page_attachments(array &$page) { } // Get the major Drupal version. - list($version,) = explode('.', \Drupal::VERSION); + [$version] = explode('.', \Drupal::VERSION); // Attach default meta tags. $meta_default = [ diff --git a/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectColspanForm.php b/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectColspanForm.php index becce376f282..3d0277cd76fc 100644 --- a/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectColspanForm.php +++ b/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectColspanForm.php @@ -22,7 +22,7 @@ public function getFormId() { * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { - list($header, $options) = _form_test_tableselect_get_data(); + [$header, $options] = _form_test_tableselect_get_data(); // Change the data so that the third column has colspan=2. $header['three'] = ['data' => 'Three', 'colspan' => 2]; diff --git a/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectFormBase.php b/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectFormBase.php index af41782cb3e1..356b1d8ab6be 100644 --- a/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectFormBase.php +++ b/core/modules/system/tests/modules/form_test/src/Form/FormTestTableSelectFormBase.php @@ -26,7 +26,7 @@ abstract class FormTestTableSelectFormBase extends FormBase { * A form with a tableselect element and a submit button. */ public function tableselectFormBuilder($form, FormStateInterface $form_state, $element_properties) { - list($header, $options) = _form_test_tableselect_get_data(); + [$header, $options] = _form_test_tableselect_get_data(); $form['tableselect'] = $element_properties; diff --git a/core/modules/system/tests/src/Functional/Ajax/FrameworkTest.php b/core/modules/system/tests/src/Functional/Ajax/FrameworkTest.php index e8fde75693f5..402ac866622e 100644 --- a/core/modules/system/tests/src/Functional/Ajax/FrameworkTest.php +++ b/core/modules/system/tests/src/Functional/Ajax/FrameworkTest.php @@ -58,7 +58,7 @@ public function testOrder() { $build['#attached']['library'][] = 'ajax_test/order-header-js-command'; $build['#attached']['library'][] = 'ajax_test/order-footer-js-command'; $assets = AttachedAssets::createFromRenderArray($build); - list($js_assets_header, $js_assets_footer) = $asset_resolver->getJsAssets($assets, FALSE); + [$js_assets_header, $js_assets_footer] = $asset_resolver->getJsAssets($assets, FALSE); $js_header_render_array = $js_collection_renderer->render($js_assets_header); $js_footer_render_array = $js_collection_renderer->render($js_assets_footer); $expected_commands[2] = new PrependCommand('head', $js_header_render_array); diff --git a/core/modules/system/tests/src/Functional/Entity/EntityCacheTagsTestBase.php b/core/modules/system/tests/src/Functional/Entity/EntityCacheTagsTestBase.php index e5b8dc2494a4..9c17f03c7ca8 100644 --- a/core/modules/system/tests/src/Functional/Entity/EntityCacheTagsTestBase.php +++ b/core/modules/system/tests/src/Functional/Entity/EntityCacheTagsTestBase.php @@ -91,10 +91,10 @@ protected function setUp() { } // Create a referencing and a non-referencing entity. - list( + [ $this->referencingEntity, $this->nonReferencingEntity, - ) = $this->createReferenceTestEntities($this->entity); + ] = $this->createReferenceTestEntities($this->entity); } /** diff --git a/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php b/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php index 7643dda23b27..76be86fcac4a 100644 --- a/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php +++ b/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php @@ -156,7 +156,7 @@ public function testAdvancedSelect() { */ public function testMultipleTrueOptionchecker() { - list($header, $options) = _form_test_tableselect_get_data(); + [$header, $options] = _form_test_tableselect_get_data(); $form['tableselect'] = [ '#type' => 'tableselect', @@ -165,11 +165,11 @@ public function testMultipleTrueOptionchecker() { ]; // Test with a valid value. - list(, , $errors) = $this->formSubmitHelper($form, ['tableselect' => ['row1' => 'row1']]); + [, , $errors] = $this->formSubmitHelper($form, ['tableselect' => ['row1' => 'row1']]); $this->assertFalse(isset($errors['tableselect']), 'Option checker allows valid values for checkboxes.'); // Test with an invalid value. - list(, , $errors) = $this->formSubmitHelper($form, ['tableselect' => ['non_existing_value' => 'non_existing_value']]); + [, , $errors] = $this->formSubmitHelper($form, ['tableselect' => ['non_existing_value' => 'non_existing_value']]); $this->assertTrue(isset($errors['tableselect']), 'Option checker disallows invalid values for checkboxes.'); } @@ -180,7 +180,7 @@ public function testMultipleTrueOptionchecker() { */ public function testMultipleFalseOptionchecker() { - list($header, $options) = _form_test_tableselect_get_data(); + [$header, $options] = _form_test_tableselect_get_data(); $form['tableselect'] = [ '#type' => 'tableselect', @@ -190,11 +190,11 @@ public function testMultipleFalseOptionchecker() { ]; // Test with a valid value. - list(, , $errors) = $this->formSubmitHelper($form, ['tableselect' => 'row1']); + [, , $errors] = $this->formSubmitHelper($form, ['tableselect' => 'row1']); $this->assertFalse(isset($errors['tableselect']), 'Option checker allows valid values for radio buttons.'); // Test with an invalid value. - list(, , $errors) = $this->formSubmitHelper($form, ['tableselect' => 'non_existing_value']); + [, , $errors] = $this->formSubmitHelper($form, ['tableselect' => 'non_existing_value']); $this->assertTrue(isset($errors['tableselect']), 'Option checker disallows invalid values for radio buttons.'); } diff --git a/core/modules/system/tests/src/Functional/Menu/LocalActionTest.php b/core/modules/system/tests/src/Functional/Menu/LocalActionTest.php index bf313a301893..fcea5966ad92 100644 --- a/core/modules/system/tests/src/Functional/Menu/LocalActionTest.php +++ b/core/modules/system/tests/src/Functional/Menu/LocalActionTest.php @@ -78,7 +78,7 @@ protected function assertLocalAction(array $actions) { $index = 0; foreach ($actions as $action) { /** @var \Drupal\Core\Url $url */ - list($url, $title) = $action; + [$url, $title] = $action; // SimpleXML gives us the unescaped text, not the actual escaped markup, // so use a pattern instead to check the raw content. // This behavior is a bug in libxml, see diff --git a/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php b/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php index 0c4524dfde4f..7c74f5aaedf8 100644 --- a/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php +++ b/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php @@ -58,7 +58,7 @@ protected function assertLocalTasks(array $routes, $level = 0) { ]); $this->assertGreaterThan(0, count($elements), 'Local tasks found.'); foreach ($routes as $index => $route_info) { - list($route_name, $route_parameters) = $route_info; + [$route_name, $route_parameters] = $route_info; $expected = Url::fromRoute($route_name, $route_parameters)->toString(); $this->assertEquals($expected, $elements[$index]->getAttribute('href'), "Task " . ($index + 1) . "number href " . $elements[$index]->getAttribute('href') . " equals $expected."); } diff --git a/core/modules/system/tests/src/Functional/Module/InstallUninstallTest.php b/core/modules/system/tests/src/Functional/Module/InstallUninstallTest.php index 04ea17f6d171..9b6a3cb856f3 100644 --- a/core/modules/system/tests/src/Functional/Module/InstallUninstallTest.php +++ b/core/modules/system/tests/src/Functional/Module/InstallUninstallTest.php @@ -293,7 +293,7 @@ protected function assertInstallModuleUpdates($module) { $all_update_functions = $post_update_registry->getPendingUpdateFunctions(); $empty_result = TRUE; foreach ($all_update_functions as $function) { - list($function_module,) = explode('_post_update_', $function); + [$function_module] = explode('_post_update_', $function); if ($module === $function_module) { $empty_result = FALSE; break; diff --git a/core/modules/system/tests/src/Functional/System/AdminMetaTagTest.php b/core/modules/system/tests/src/Functional/System/AdminMetaTagTest.php index 187a82c9857f..bcce6148bf90 100644 --- a/core/modules/system/tests/src/Functional/System/AdminMetaTagTest.php +++ b/core/modules/system/tests/src/Functional/System/AdminMetaTagTest.php @@ -20,7 +20,7 @@ class AdminMetaTagTest extends BrowserTestBase { * Verify that the meta tag HTML is generated correctly. */ public function testMetaTag() { - list($version,) = explode('.', \Drupal::VERSION); + [$version] = explode('.', \Drupal::VERSION); $string = '<meta name="Generator" content="Drupal ' . $version . ' (https://www.drupal.org)" />'; $this->drupalGet('node'); $this->assertSession()->responseContains($string); diff --git a/core/modules/system/tests/src/Functional/System/ResponseGeneratorTest.php b/core/modules/system/tests/src/Functional/System/ResponseGeneratorTest.php index db6039fed133..38d842dddf30 100644 --- a/core/modules/system/tests/src/Functional/System/ResponseGeneratorTest.php +++ b/core/modules/system/tests/src/Functional/System/ResponseGeneratorTest.php @@ -42,7 +42,7 @@ public function testGeneratorHeaderAdded() { $node = $this->drupalCreateNode(); - list($version) = explode('.', \Drupal::VERSION, 2); + [$version] = explode('.', \Drupal::VERSION, 2); $expectedGeneratorHeader = 'Drupal ' . $version . ' (https://www.drupal.org)'; // Check to see if the header is added when viewing a normal content page diff --git a/core/modules/system/tests/src/Kernel/Common/UrlTest.php b/core/modules/system/tests/src/Kernel/Common/UrlTest.php index 295fb1ecaae3..447d056e3a01 100644 --- a/core/modules/system/tests/src/Kernel/Common/UrlTest.php +++ b/core/modules/system/tests/src/Kernel/Common/UrlTest.php @@ -59,7 +59,7 @@ public function testLinkBubbleableMetadata() { ]; foreach ($cases as $case) { - list($title, $uri, $options, $expected_cacheability, $expected_attachments) = $case; + [$title, $uri, $options, $expected_cacheability, $expected_attachments] = $case; $expected_cacheability['contexts'] = Cache::mergeContexts($expected_cacheability['contexts'], ['languages:language_interface', 'theme', 'user.permissions']); $link = [ '#type' => 'link', diff --git a/core/modules/system/tests/src/Kernel/Mail/MailTest.php b/core/modules/system/tests/src/Kernel/Mail/MailTest.php index c6c254569480..1eed7c500777 100644 --- a/core/modules/system/tests/src/Kernel/Mail/MailTest.php +++ b/core/modules/system/tests/src/Kernel/Mail/MailTest.php @@ -305,7 +305,7 @@ public function testRenderedElementsUseAbsolutePaths() { // Test images. foreach ($path_pairs as $test_type => $paths) { - list($input_path, $expected_path) = $paths; + [$input_path, $expected_path] = $paths; // Reset the state variable that holds sent messages. \Drupal::state()->set('system.test_mail_collector', []); @@ -336,7 +336,7 @@ public function testRenderedElementsUseAbsolutePaths() { ]; foreach ($path_pairs as $paths) { - list($input_path, $expected_path) = $paths; + [$input_path, $expected_path] = $paths; // Reset the state variable that holds sent messages. \Drupal::state()->set('system.test_mail_collector', []); diff --git a/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php b/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php index a3275470d4a0..fce63ffde228 100644 --- a/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php +++ b/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php @@ -193,7 +193,7 @@ public function providerTestBuildCacheability() { ]; for ($i = 0; $i < count($access_scenarios); $i++) { - list($access, $access_cache_contexts) = $access_scenarios[$i]; + [$access, $access_cache_contexts] = $access_scenarios[$i]; for ($j = 0; $j < count($links_scenarios); $j++) { $links = $links_scenarios[$j]; diff --git a/core/modules/taxonomy/tests/src/Functional/TermTest.php b/core/modules/taxonomy/tests/src/Functional/TermTest.php index e41a918cfe02..99d4a1e74957 100644 --- a/core/modules/taxonomy/tests/src/Functional/TermTest.php +++ b/core/modules/taxonomy/tests/src/Functional/TermTest.php @@ -443,7 +443,7 @@ public function testTermReorder() { // Fetch the created terms in the default alphabetical order, i.e. term1 // precedes term2 alphabetically, and term2 precedes term3. $taxonomy_storage->resetCache(); - list($term1, $term2, $term3) = $taxonomy_storage->loadTree($this->vocabulary->id(), 0, NULL, TRUE); + [$term1, $term2, $term3] = $taxonomy_storage->loadTree($this->vocabulary->id(), 0, NULL, TRUE); $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/overview'); diff --git a/core/modules/toolbar/src/Controller/ToolbarController.php b/core/modules/toolbar/src/Controller/ToolbarController.php index c94e35b307b0..75986f901b0f 100644 --- a/core/modules/toolbar/src/Controller/ToolbarController.php +++ b/core/modules/toolbar/src/Controller/ToolbarController.php @@ -21,7 +21,7 @@ class ToolbarController extends ControllerBase implements TrustedCallbackInterfa * @return \Drupal\Core\Ajax\AjaxResponse */ public function subtreesAjax() { - list($subtrees, $cacheability) = toolbar_get_rendered_subtrees(); + [$subtrees, $cacheability] = toolbar_get_rendered_subtrees(); $response = new AjaxResponse(); $response->addCommand(new SetSubtreesCommand($subtrees)); diff --git a/core/modules/toolbar/toolbar.module b/core/modules/toolbar/toolbar.module index 5451dcb75156..a1def5da6892 100644 --- a/core/modules/toolbar/toolbar.module +++ b/core/modules/toolbar/toolbar.module @@ -164,7 +164,7 @@ function toolbar_toolbar() { // toolbar_subtrees route. We provide the JavaScript requesting that JSONP // script here with the hash parameter that is needed for that route. // @see toolbar_subtrees_jsonp() - list($hash, $hash_cacheability) = _toolbar_get_subtrees_hash(); + [$hash, $hash_cacheability] = _toolbar_get_subtrees_hash(); $subtrees_attached['drupalSettings']['toolbar'] = [ 'subtreesHash' => $hash, ]; @@ -286,7 +286,7 @@ function toolbar_get_rendered_subtrees() { * The hash of the admin_menu subtrees. */ function _toolbar_get_subtrees_hash() { - list($subtrees, $cacheability) = toolbar_get_rendered_subtrees(); + [$subtrees, $cacheability] = toolbar_get_rendered_subtrees(); $hash = Crypt::hashBase64(serialize($subtrees)); return [$hash, $cacheability]; } diff --git a/core/modules/update/src/ProjectSecurityRequirement.php b/core/modules/update/src/ProjectSecurityRequirement.php index b14acf5af741..440be9222fd4 100644 --- a/core/modules/update/src/ProjectSecurityRequirement.php +++ b/core/modules/update/src/ProjectSecurityRequirement.php @@ -97,7 +97,7 @@ public static function createFromProjectDataAndSecurityCoverageInfo(array $proje return new static(); } if (isset($project_data['existing_version'])) { - list($major, $minor) = explode('.', $project_data['existing_version']); + [$major, $minor] = explode('.', $project_data['existing_version']); $existing_version = "$major.$minor"; $next_version = "$major." . ((int) $minor + 1); return new static($project_data['title'], $security_coverage_info, $existing_version, $next_version); diff --git a/core/modules/user/src/AccountForm.php b/core/modules/user/src/AccountForm.php index 7f51ad6fc43f..34e5d401a4bc 100644 --- a/core/modules/user/src/AccountForm.php +++ b/core/modules/user/src/AccountForm.php @@ -418,7 +418,7 @@ protected function flagViolations(EntityConstraintViolationListInterface $violat 'preferred_admin_langcode', ]; foreach ($violations->getByFields($field_names) as $violation) { - list($field_name) = explode('.', $violation->getPropertyPath(), 2); + [$field_name] = explode('.', $violation->getPropertyPath(), 2); $form_state->setErrorByName($field_name, $violation->getMessage()); } parent::flagViolations($violations, $form, $form_state); diff --git a/core/modules/user/src/Event/UserFloodEvent.php b/core/modules/user/src/Event/UserFloodEvent.php index c45bf80adc33..c62cb3da57a3 100644 --- a/core/modules/user/src/Event/UserFloodEvent.php +++ b/core/modules/user/src/Event/UserFloodEvent.php @@ -74,7 +74,7 @@ public function __construct($name, $threshold, $window, $identifier) { return; } if (strpos($identifier, '-') !== FALSE) { - list($uid, $ip) = explode('-', $identifier); + [$uid, $ip] = explode('-', $identifier); $this->uid = $uid; $this->ip = $ip; return; diff --git a/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php b/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php index fb9874339302..7087dc4e80b8 100644 --- a/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php +++ b/core/modules/user/src/Plugin/migrate/process/d6/ProfileFieldOptionTranslation.php @@ -20,7 +20,7 @@ class ProfileFieldOptionTranslation extends ProcessPluginBase { * {@inheritdoc} */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - list($field_type, $translation) = $value; + [$field_type, $translation] = $value; $new_value = NULL; if (isset($translation)) { diff --git a/core/modules/user/tests/src/Kernel/UserValidationTest.php b/core/modules/user/tests/src/Kernel/UserValidationTest.php index 89ede173b211..73886da53eae 100644 --- a/core/modules/user/tests/src/Kernel/UserValidationTest.php +++ b/core/modules/user/tests/src/Kernel/UserValidationTest.php @@ -69,7 +69,7 @@ public function testUsernames() { ]; // cSpell:enable foreach ($test_cases as $name => $test_case) { - list($description, $test) = $test_case; + [$description, $test] = $test_case; $result = user_validate_name($name); $this->$test($result, $description . ' (' . $name . ')'); } diff --git a/core/modules/views/src/EventSubscriber/RouteSubscriber.php b/core/modules/views/src/EventSubscriber/RouteSubscriber.php index 2f5b52c8eea0..50a3ca11d7ce 100644 --- a/core/modules/views/src/EventSubscriber/RouteSubscriber.php +++ b/core/modules/views/src/EventSubscriber/RouteSubscriber.php @@ -94,7 +94,7 @@ protected function getViewsDisplayIDsWithRoute() { // @todo Convert this method to some service. $views = $this->getApplicableViews(); foreach ($views as $data) { - list($view_id, $display_id) = $data; + [$view_id, $display_id] = $data; $this->viewsDisplayPairs[] = $view_id . '.' . $display_id; } $this->viewsDisplayPairs = array_combine($this->viewsDisplayPairs, $this->viewsDisplayPairs); @@ -111,7 +111,7 @@ protected function getViewsDisplayIDsWithRoute() { public function routes() { $collection = new RouteCollection(); foreach ($this->getViewsDisplayIDsWithRoute() as $pair) { - list($view_id, $display_id) = explode('.', $pair); + [$view_id, $display_id] = explode('.', $pair); $view = $this->viewStorage->load($view_id); // @todo This should have an executable factory injected. if (($view = $view->getExecutable()) && $view instanceof ViewExecutable) { @@ -133,7 +133,7 @@ public function routes() { */ protected function alterRoutes(RouteCollection $collection) { foreach ($this->getViewsDisplayIDsWithRoute() as $pair) { - list($view_id, $display_id) = explode('.', $pair); + [$view_id, $display_id] = explode('.', $pair); $view = $this->viewStorage->load($view_id); // @todo This should have an executable factory injected. if (($view = $view->getExecutable()) && $view instanceof ViewExecutable) { diff --git a/core/modules/views/src/Plugin/Block/ViewsBlockBase.php b/core/modules/views/src/Plugin/Block/ViewsBlockBase.php index ac041a2e04a0..3cd675153413 100644 --- a/core/modules/views/src/Plugin/Block/ViewsBlockBase.php +++ b/core/modules/views/src/Plugin/Block/ViewsBlockBase.php @@ -64,7 +64,7 @@ abstract class ViewsBlockBase extends BlockBase implements ContainerFactoryPlugi public function __construct(array $configuration, $plugin_id, $plugin_definition, ViewExecutableFactory $executable_factory, EntityStorageInterface $storage, AccountInterface $user) { $this->pluginId = $plugin_id; $delta = $this->getDerivativeId(); - list($name, $this->displayID) = explode('-', $delta, 2); + [$name, $this->displayID] = explode('-', $delta, 2); // Load the view. $view = $storage->load($name); $this->view = $executable_factory->get($view); diff --git a/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php b/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php index 358620440f79..72347530181f 100644 --- a/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php +++ b/core/modules/views/src/Plugin/Derivative/ViewsLocalTask.php @@ -72,7 +72,7 @@ public function getDerivativeDefinitions($base_plugin_definition) { $view_route_names = $this->state->get('views.view_route_names'); foreach ($this->getApplicableMenuViews() as $pair) { /** @var \Drupal\views\ViewExecutable $executable */ - list($view_id, $display_id) = $pair; + [$view_id, $display_id] = $pair; $executable = $this->viewStorage->load($view_id)->getExecutable(); $executable->setDisplay($display_id); @@ -109,7 +109,7 @@ public function alterLocalTasks(&$local_tasks) { $view_route_names = $this->state->get('views.view_route_names'); foreach ($this->getApplicableMenuViews() as $pair) { - list($view_id, $display_id) = $pair; + [$view_id, $display_id] = $pair; /** @var \Drupal\views\ViewExecutable $executable */ $executable = $this->viewStorage->load($view_id)->getExecutable(); diff --git a/core/modules/views/src/Plugin/Derivative/ViewsMenuLink.php b/core/modules/views/src/Plugin/Derivative/ViewsMenuLink.php index c73846514b0c..7ddca09b3e81 100644 --- a/core/modules/views/src/Plugin/Derivative/ViewsMenuLink.php +++ b/core/modules/views/src/Plugin/Derivative/ViewsMenuLink.php @@ -50,7 +50,7 @@ public function getDerivativeDefinitions($base_plugin_definition) { $views = Views::getApplicableViews('uses_menu_links'); foreach ($views as $data) { - list($view_id, $display_id) = $data; + [$view_id, $display_id] = $data; /** @var \Drupal\views\ViewExecutable $executable */ $executable = $this->viewStorage->load($view_id)->getExecutable(); $executable->initDisplay(); diff --git a/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php b/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php index dff33a3e0dc0..cf80704f6b3f 100644 --- a/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php +++ b/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php @@ -134,7 +134,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta $options = []; foreach ($displays as $data) { - list($view_id, $display_id) = $data; + [$view_id, $display_id] = $data; $view = $view_storage->load($view_id); if (in_array($view->get('base_table'), [$entity_type->getBaseTable(), $entity_type->getDataTable()])) { $display = $view->get('display'); @@ -318,7 +318,7 @@ public function validateReferenceableEntities(array $ids) { public static function settingsFormValidate($element, FormStateInterface $form_state, $form) { // Split view name and display name from the 'view_and_display' value. if (!empty($element['view_and_display']['#value'])) { - list($view, $display) = explode(':', $element['view_and_display']['#value']); + [$view, $display] = explode(':', $element['view_and_display']['#value']); } else { $form_state->setError($element, t('The views entity selection mode requires a view.')); diff --git a/core/modules/views/src/Plugin/views/area/View.php b/core/modules/views/src/Plugin/views/area/View.php index 932e7a6a2595..0f2d5bc91e7b 100644 --- a/core/modules/views/src/Plugin/views/area/View.php +++ b/core/modules/views/src/Plugin/views/area/View.php @@ -102,7 +102,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { */ public function render($empty = FALSE) { if (!empty($this->options['view_to_insert'])) { - list($view_name, $display_id) = explode(':', $this->options['view_to_insert']); + [$view_name, $display_id] = explode(':', $this->options['view_to_insert']); $view = $this->viewStorage->load($view_name)->getExecutable(); @@ -152,7 +152,7 @@ public function isEmpty() { public function calculateDependencies() { $dependencies = parent::calculateDependencies(); - list($view_id) = explode(':', $this->options['view_to_insert'], 2); + [$view_id] = explode(':', $this->options['view_to_insert'], 2); // Don't call the current view, as it would result into an infinite recursion. if ($view_id && $this->view->storage->id() != $view_id) { $view = $this->viewStorage->load($view_id); diff --git a/core/modules/views/src/Plugin/views/display/Page.php b/core/modules/views/src/Plugin/views/display/Page.php index e2104da8a751..68fe5c4ee226 100644 --- a/core/modules/views/src/Plugin/views/display/Page.php +++ b/core/modules/views/src/Plugin/views/display/Page.php @@ -488,7 +488,7 @@ public function submitOptionsForm(&$form, FormStateInterface $form_state) { switch ($form_state->get('section')) { case 'menu': $menu = $form_state->getValue('menu'); - list($menu['menu_name'], $menu['parent']) = explode(':', $menu['parent'], 2); + [$menu['menu_name'], $menu['parent']] = explode(':', $menu['parent'], 2); $this->setOption('menu', $menu); // send ajax form to options page if we use it. if ($form_state->getValue(['menu', 'type']) == 'default tab') { diff --git a/core/modules/views/src/Plugin/views/field/EntityField.php b/core/modules/views/src/Plugin/views/field/EntityField.php index 61db27cd1033..7d38ab2ae839 100644 --- a/core/modules/views/src/Plugin/views/field/EntityField.php +++ b/core/modules/views/src/Plugin/views/field/EntityField.php @@ -541,7 +541,7 @@ public function multiple_options_form(&$form, FormStateInterface $form_state) { // Make the string translatable by keeping it as a whole rather than // translating prefix and suffix separately. - list($prefix, $suffix) = explode('@count', $this->t('Display @count value(s)')); + [$prefix, $suffix] = explode('@count', $this->t('Display @count value(s)')); if ($field->getCardinality() == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) { $type = 'textfield'; @@ -600,7 +600,7 @@ public function multiple_options_form(&$form, FormStateInterface $form_state) { '#fieldset' => 'multiple_field_settings', ]; - list($prefix, $suffix) = explode('@count', $this->t('starting from @count')); + [$prefix, $suffix] = explode('@count', $this->t('starting from @count')); $form['delta_offset'] = [ '#type' => 'textfield', '#size' => 5, diff --git a/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php b/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php index 34e1b086ec4c..3632b95cb3e0 100644 --- a/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php +++ b/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php @@ -196,7 +196,7 @@ protected function leftQuery($options) { // select field. See https://www.drupal.org/node/844910. // We work around this further down. $sort = $options['subquery_sort']; - list($sort_table, $sort_field) = explode('.', $sort); + [$sort_table, $sort_field] = explode('.', $sort); $sort_options = ['order' => $options['subquery_order']]; $temp_view->addHandler('default', 'sort', $sort_table, $sort_field, $sort_options); } @@ -215,7 +215,7 @@ protected function leftQuery($options) { $relationship_id = NULL; // Add the used relationship for the subjoin, if defined. if (isset($this->definition['relationship'])) { - list($relationship_table, $relationship_field) = explode(':', $this->definition['relationship']); + [$relationship_table, $relationship_field] = explode(':', $this->definition['relationship']); $relationship_id = $temp_view->addHandler('default', 'relationship', $relationship_table, $relationship_field); } $temp_item_options = ['relationship' => $relationship_id]; @@ -269,7 +269,7 @@ protected function leftQuery($options) { foreach ($orders as $order_key => $order) { // But if we're using a whole view, we don't know what we have! if ($options['subquery_view']) { - list($sort_table, $sort_field) = explode('.', $order_key); + [$sort_table, $sort_field] = explode('.', $order_key); } $orders[$sort_table . $this->subquery_namespace . '.' . $sort_field] = $order; unset($orders[$order_key]); diff --git a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php index 335ac065e005..0488df1c0434 100644 --- a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php +++ b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php @@ -1022,7 +1022,7 @@ protected function defaultDisplaySortsUser($form, FormStateInterface $form_state // Don't add a sort if there is no form value or the user set the sort to // 'none'. if (($sort_type = $form_state->getValue(['show', 'sort'])) && $sort_type != 'none') { - list($column, $sort) = explode(':', $sort_type); + [$column, $sort] = explode(':', $sort_type); // Column either be a column-name or the table-column-name. $column = explode('-', $column); if (count($column) > 1) { @@ -1096,7 +1096,7 @@ protected function pageDisplayOptions(array $form, FormStateInterface $form_stat if (!empty($page['link'])) { $display_options['menu']['type'] = 'normal'; $display_options['menu']['title'] = $page['link_properties']['title']; - list($display_options['menu']['menu_name'], $display_options['menu']['parent']) = explode(':', $page['link_properties']['parent'], 2); + [$display_options['menu']['menu_name'], $display_options['menu']['parent']] = explode(':', $page['link_properties']['parent'], 2); } return $display_options; } diff --git a/core/modules/views/src/Views.php b/core/modules/views/src/Views.php index 114b72748cd9..03218ac94e90 100644 --- a/core/modules/views/src/Views.php +++ b/core/modules/views/src/Views.php @@ -327,7 +327,7 @@ public static function getViewsAsOptions($views_only = FALSE, $filter = 'all', $ else { // Append a ':' to the $exclude_view string so we always have more than one // item to explode. - list($exclude_view_name, $exclude_view_display) = explode(':', "$exclude_view:"); + [$exclude_view_name, $exclude_view_display] = explode(':', "$exclude_view:"); } $options = []; diff --git a/core/modules/views/tests/src/Functional/Plugin/NumericFormatPluralTest.php b/core/modules/views/tests/src/Functional/Plugin/NumericFormatPluralTest.php index 3392e2853533..5785730c22d4 100644 --- a/core/modules/views/tests/src/Functional/Plugin/NumericFormatPluralTest.php +++ b/core/modules/views/tests/src/Functional/Plugin/NumericFormatPluralTest.php @@ -91,7 +91,7 @@ public function testNumericFormatPlural() { $this->submitForm($edit, 'Add language'); $formula = 'nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);'; $header = new PoHeader(); - list($nplurals, $formula) = $header->parsePluralForms($formula); + [$nplurals, $formula] = $header->parsePluralForms($formula); \Drupal::service('locale.plural.formula')->setPluralFormula('sl', $nplurals, $formula); // Change the view to Slovenian. diff --git a/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php b/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php index 2ae071a4e8dc..9c25d3aead6d 100644 --- a/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php +++ b/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php @@ -327,14 +327,14 @@ public function testVariousTableUpdates() { // base <-> base + translation $this->updateEntityTypeToTranslatable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); $this->assertEquals('entity_test_update_data', $display['display_options']['fields']['name']['table']); $this->updateEntityTypeToNotTranslatable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); @@ -344,21 +344,21 @@ public function testVariousTableUpdates() { // base + translation <-> base + translation + revision $this->updateEntityTypeToTranslatable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); $this->assertEquals('entity_test_update_data', $display['display_options']['fields']['name']['table']); $this->updateEntityTypeToRevisionable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); $this->assertEquals('entity_test_update_data', $display['display_options']['fields']['name']['table']); $this->updateEntityTypeToNotRevisionable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); @@ -368,21 +368,21 @@ public function testVariousTableUpdates() { // base + revision <-> base + translation + revision $this->updateEntityTypeToRevisionable(); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); $this->assertEquals('entity_test_update', $display['display_options']['fields']['name']['table']); $this->updateEntityTypeToTranslatable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); $this->assertEquals('entity_test_update_data', $display['display_options']['fields']['name']['table']); $this->updateEntityTypeToNotTranslatable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); @@ -392,14 +392,14 @@ public function testVariousTableUpdates() { // base <-> base + revision $this->updateEntityTypeToRevisionable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); $this->assertEquals('entity_test_update', $display['display_options']['fields']['name']['table']); $this->updateEntityTypeToNotRevisionable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); @@ -410,7 +410,7 @@ public function testVariousTableUpdates() { // base <-> base + translation + revision $this->updateEntityTypeToRevisionable(TRUE); $this->updateEntityTypeToTranslatable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); @@ -418,7 +418,7 @@ public function testVariousTableUpdates() { $this->updateEntityTypeToNotRevisionable(TRUE); $this->updateEntityTypeToNotTranslatable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(); + [$view, $display] = $this->getUpdatedViewAndDisplay(); $this->assertEquals('entity_test_update', $view->get('base_table')); $this->assertEquals('entity_test_update', $display['display_options']['fields']['id']['table']); @@ -439,21 +439,21 @@ public function testVariousTableUpdatesForRevisionView() { // base + revision <-> base + translation + revision $this->updateEntityTypeToRevisionable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(TRUE); + [$view, $display] = $this->getUpdatedViewAndDisplay(TRUE); $this->assertEquals('entity_test_update_revision', $view->get('base_table')); $this->assertEquals('entity_test_update_revision', $display['display_options']['fields']['id']['table']); $this->assertEquals('entity_test_update_revision', $display['display_options']['fields']['name']['table']); $this->updateEntityTypeToTranslatable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(TRUE); + [$view, $display] = $this->getUpdatedViewAndDisplay(TRUE); $this->assertEquals('entity_test_update_revision', $view->get('base_table')); $this->assertEquals('entity_test_update_revision', $display['display_options']['fields']['id']['table']); $this->assertEquals('entity_test_update_revision_data', $display['display_options']['fields']['name']['table']); $this->updateEntityTypeToNotTranslatable(TRUE); - list($view, $display) = $this->getUpdatedViewAndDisplay(TRUE); + [$view, $display] = $this->getUpdatedViewAndDisplay(TRUE); $this->assertEquals('entity_test_update_revision', $view->get('base_table')); $this->assertEquals('entity_test_update_revision', $display['display_options']['fields']['id']['table']); diff --git a/core/modules/views/tests/src/Kernel/ModuleTest.php b/core/modules/views/tests/src/Kernel/ModuleTest.php index 8060460627b9..55fe86c00225 100644 --- a/core/modules/views/tests/src/Kernel/ModuleTest.php +++ b/core/modules/views/tests/src/Kernel/ModuleTest.php @@ -229,7 +229,7 @@ public function testViewsPluginList() { $plugin_list = Views::pluginList(); // Only plugins used by 'test_view' should be in the plugin list. foreach (['display:default', 'pager:none'] as $key) { - list($plugin_type, $plugin_id) = explode(':', $key); + [$plugin_type, $plugin_id] = explode(':', $key); $plugin_def = $this->container->get("plugin.manager.views.$plugin_type")->getDefinition($plugin_id); $this->assertTrue(isset($plugin_list[$key]), new FormattableMarkup('The expected @key plugin list key was found.', ['@key' => $key])); diff --git a/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php b/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php index 8964cecc0c97..f0e3ba9ce91e 100644 --- a/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php +++ b/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php @@ -188,7 +188,7 @@ public function testAjaxView() { $request->request->set('ajax_page_state', 'drupal.settings[]'); $request->request->set('type', 'article'); - list($view, $executable) = $this->setupValidMocks(); + [$view, $executable] = $this->setupValidMocks(); $this->redirectDestination->expects($this->atLeastOnce()) ->method('set') @@ -217,7 +217,7 @@ public function testAjaxViewViewPathNoSlash() { $request->request->set('ajax_page_state', 'drupal.settings[]'); $request->request->set('type', 'article'); - list($view, $executable) = $this->setupValidMocks(); + [$view, $executable] = $this->setupValidMocks(); $this->redirectDestination->expects($this->atLeastOnce()) ->method('set') @@ -261,7 +261,7 @@ public function testAjaxViewWithArguments() { $request->request->set('view_display_id', 'page_1'); $request->request->set('view_args', 'arg1/arg2'); - list($view, $executable) = $this->setupValidMocks(); + [$view, $executable] = $this->setupValidMocks(); $executable->expects($this->once()) ->method('preview') ->with('page_1', ['arg1', 'arg2']); @@ -282,7 +282,7 @@ public function testAjaxViewWithEmptyArguments() { // Simulate a request that has a second, empty argument. $request->request->set('view_args', 'arg1/'); - list($view, $executable) = $this->setupValidMocks(); + [$view, $executable] = $this->setupValidMocks(); $executable->expects($this->once()) ->method('preview') ->with('page_1', $this->identicalTo(['arg1', NULL])); @@ -302,7 +302,7 @@ public function testAjaxViewWithHtmlEntityArguments() { $request->request->set('view_display_id', 'page_1'); $request->request->set('view_args', 'arg1 & arg2/arg3'); - list($view, $executable) = $this->setupValidMocks(); + [$view, $executable] = $this->setupValidMocks(); $executable->expects($this->once()) ->method('preview') ->with('page_1', ['arg1 & arg2', 'arg3']); @@ -324,7 +324,7 @@ public function testAjaxViewWithPager() { $request->request->set('view_dom_id', $dom_id); $request->request->set('pager_element', '0'); - list($view, $executable) = $this->setupValidMocks(); + [$view, $executable] = $this->setupValidMocks(); $display_handler = $this->getMockBuilder('Drupal\views\Plugin\views\display\DisplayPluginBase') ->disableOriginalConstructor() diff --git a/core/modules/views/tests/src/Unit/EventSubscriber/RouteSubscriberTest.php b/core/modules/views/tests/src/Unit/EventSubscriber/RouteSubscriberTest.php index ec59ed0b0079..8a466182444c 100644 --- a/core/modules/views/tests/src/Unit/EventSubscriber/RouteSubscriberTest.php +++ b/core/modules/views/tests/src/Unit/EventSubscriber/RouteSubscriberTest.php @@ -65,7 +65,7 @@ protected function setUp(): void { * @covers ::routeRebuildFinished */ public function testRouteRebuildFinished() { - list($display_1, $display_2) = $this->setupMocks(); + [$display_1, $display_2] = $this->setupMocks(); $display_1->expects($this->once()) ->method('collectRoutes') @@ -96,7 +96,7 @@ public function testOnAlterRoutes() { $route_event = new RouteBuildEvent($collection, 'views'); - list($display_1, $display_2) = $this->setupMocks(); + [$display_1, $display_2] = $this->setupMocks(); // The page_1 display overrides an existing route, so the dynamicRoutes // should only call the second display. diff --git a/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php b/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php index 7429aefb8a6c..6c67ab2e3fc4 100644 --- a/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php +++ b/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php @@ -89,7 +89,7 @@ public function setupContainer() { * @see \Drupal\views\Plugin\views\display\PathPluginBase::collectRoutes() */ public function testCollectRoutes() { - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -117,7 +117,7 @@ public function testCollectRoutes() { * @see \Drupal\views\Plugin\views\display\PathPluginBase::collectRoutes() */ public function testCollectRoutesWithDisplayReturnResponse() { - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -144,7 +144,7 @@ public function testCollectRoutesWithDisplayReturnResponse() { * @see \Drupal\views\Plugin\views\display\PathPluginBase::collectRoutes() */ public function testCollectRoutesWithArguments() { - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -172,7 +172,7 @@ public function testCollectRoutesWithArguments() { * @see \Drupal\views\Plugin\views\display\PathPluginBase::collectRoutes() */ public function testCollectRoutesWithArgumentsNotSpecifiedInPath() { - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -201,7 +201,7 @@ public function testCollectRoutesWithArgumentsNotSpecifiedInPath() { * Tests the collect routes method with an alternative route name in the UI. */ public function testCollectRoutesWithSpecialRouteName() { - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -232,7 +232,7 @@ public function testAlterRoute() { $route_2 = new Route('test_route/example', ['_controller' => 'Drupal\Tests\Core\Controller\TestController::content']); $collection->add('test_route_2', $route_2); - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -269,7 +269,7 @@ public function testAlterPostRestRoute() { $route->setMethods(['POST']); $collection->add('test_route', $route); - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -308,7 +308,7 @@ public function testGetRestRoute() { $route->setRequirement('_format', 'json'); $collection->add('test_route', $route); - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -346,7 +346,7 @@ public function testAlterRouteWithAlterCallback() { $route_2 = new Route('test_route/example', ['_controller' => 'Drupal\Tests\Core\Controller\TestController::content']); $collection->add('test_route_2', $route_2); - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -381,7 +381,7 @@ public function testAlterRouteWithAlterCallback() { */ public function testCollectRoutesWithNamedParameters() { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $view->argument = []; $view->argument['nid'] = $this->getMockBuilder('Drupal\views\Plugin\views\argument\ArgumentPluginBase') @@ -416,7 +416,7 @@ public function testAlterRoutesWithParameters() { $collection = new RouteCollection(); $collection->add('test_route', new Route('test_route/{parameter}', ['_controller' => 'Drupal\Tests\Core\Controller\TestController::content'])); - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); // Manually set up an argument handler. $argument = $this->getMockBuilder('Drupal\views\Plugin\views\argument\ArgumentPluginBase') @@ -453,7 +453,7 @@ public function testAlterRoutesWithParametersAndUpcasting() { $collection = new RouteCollection(); $collection->add('test_route', new Route('test_route/{parameter}', ['_controller' => 'Drupal\Tests\Core\Controller\TestController::content'], [], ['parameters' => ['taxonomy_term' => 'entity:entity_test']])); - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); // Manually set up an argument handler. $argument = $this->getMockBuilder('Drupal\views\Plugin\views\argument\ArgumentPluginBase') @@ -491,7 +491,7 @@ public function testAlterRoutesWithOptionalParameters() { $collection = new RouteCollection(); $collection->add('test_route', new Route('test_route/{parameter}', ['_controller' => 'Drupal\Tests\Core\Controller\TestController::content'])); - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; @@ -523,7 +523,7 @@ public function testAlterRoutesWithOptionalParameters() { * Tests the getRouteName method. */ public function testGetRouteName() { - list($view) = $this->setupViewExecutableAccessPlugin(); + [$view] = $this->setupViewExecutableAccessPlugin(); $display = []; $display['display_plugin'] = 'page'; diff --git a/core/modules/views/tests/src/Unit/ViewExecutableTest.php b/core/modules/views/tests/src/Unit/ViewExecutableTest.php index f24c0d1428a7..8654aaeffcb2 100644 --- a/core/modules/views/tests/src/Unit/ViewExecutableTest.php +++ b/core/modules/views/tests/src/Unit/ViewExecutableTest.php @@ -300,7 +300,7 @@ public function testGetUrlWithPlaceholdersAndWithoutArgsAndExceptionValue() { public function testBuildThemeFunctions() { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); unset($view->display_handler); $expected = [ @@ -361,7 +361,7 @@ public function testGenerateHandlerId() { public function testAddHandler($option, $handler_type) { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $views_data = []; $views_data['test_field'] = [ @@ -403,7 +403,7 @@ public function testAddHandler($option, $handler_type) { public function testAddHandlerWithEntityField($option, $handler_type) { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $views_data = []; $views_data['table']['entity type'] = 'test_entity_type'; @@ -467,7 +467,7 @@ public function addHandlerProvider() { public function testAttachDisplays($display_enabled, $access_granted, $expected_to_be_attached) { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $display->expects($this->atLeastOnce()) ->method('acceptAttachments') @@ -583,7 +583,7 @@ protected function setupBaseViewAndDisplay() { public function testSetItemsPerPageBeforePreRender() { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $view->setItemsPerPage(12); $this->assertEquals(12, $view->getItemsPerPage()); @@ -597,7 +597,7 @@ public function testSetItemsPerPageBeforePreRender() { public function testSetItemsPerPageDuringPreRender() { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $elements = &$view->element; $elements['#cache'] += ['keys' => []]; @@ -615,7 +615,7 @@ public function testSetItemsPerPageDuringPreRender() { public function testSetOffsetBeforePreRender() { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $view->setOffset(12); $this->assertEquals(12, $view->getOffset()); @@ -629,7 +629,7 @@ public function testSetOffsetBeforePreRender() { public function testSetOffsetDuringPreRender() { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $elements = &$view->element; $elements['#cache'] += ['keys' => []]; @@ -647,7 +647,7 @@ public function testSetOffsetDuringPreRender() { public function testSetCurrentPageBeforePreRender() { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $view->setCurrentPage(12); $this->assertEquals(12, $view->getCurrentPage()); @@ -661,7 +661,7 @@ public function testSetCurrentPageBeforePreRender() { public function testSetCurrentPageDuringPreRender() { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $elements = &$view->element; $elements['#cache'] += ['keys' => []]; @@ -678,7 +678,7 @@ public function testSetCurrentPageDuringPreRender() { public function testCacheIsIgnoredDuringPreview() { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); // Pager needs to be set to avoid false test failures. $view->pager = $this->getMockBuilder(NonePager::class) @@ -713,7 +713,7 @@ public function testCacheIsIgnoredDuringPreview() { public function testExecuteReturn($display_enabled, $expected_result) { /** @var \Drupal\views\ViewExecutable|\PHPUnit\Framework\MockObject\MockObject $view */ /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase|\PHPUnit\Framework\MockObject\MockObject $display */ - list($view, $display) = $this->setupBaseViewAndDisplay(); + [$view, $display] = $this->setupBaseViewAndDisplay(); $display->expects($this->any()) ->method('isEnabled') diff --git a/core/modules/views/views.api.php b/core/modules/views/views.api.php index 18a607073326..8e8d89d08e4d 100644 --- a/core/modules/views/views.api.php +++ b/core/modules/views/views.api.php @@ -559,7 +559,7 @@ function hook_field_views_data_alter(array &$data, \Drupal\field\FieldStorageCon $pseudo_field_name = 'reverse_' . $field_name . '_' . $entity_type_id; $table_mapping = \Drupal::entityTypeManager()->getStorage($entity_type_id)->getTableMapping(); - list($label) = views_entity_field_label($entity_type_id, $field_name); + [$label] = views_entity_field_label($entity_type_id, $field_name); $data['file_managed'][$pseudo_field_name]['relationship'] = [ 'title' => t('@entity using @field', ['@entity' => $entity_type->getLabel(), '@field' => $label]), @@ -614,7 +614,7 @@ function hook_field_views_data_views_data_alter(array &$data, \Drupal\field\Fiel $entity_type_id = $field->entity_type; $entity_type = \Drupal::entityTypeManager()->getDefinition($entity_type_id); $pseudo_field_name = 'reverse_' . $field_name . '_' . $entity_type_id; - list($label) = views_entity_field_label($entity_type_id, $field_name); + [$label] = views_entity_field_label($entity_type_id, $field_name); $table_mapping = \Drupal::entityTypeManager()->getStorage($entity_type_id)->getTableMapping(); // Views data for this field is in $data[$data_key]. diff --git a/core/modules/views/views.views.inc b/core/modules/views/views.views.inc index 7c236e68c4cb..de7977332108 100644 --- a/core/modules/views/views.views.inc +++ b/core/modules/views/views.views.inc @@ -507,7 +507,7 @@ function views_field_default_views_data(FieldStorageConfigInterface $field_stora // Determine the label to use for the field. We don't have a label available // at the field level, so we just go through all fields and take the one // which is used the most frequently. - list($label, $all_labels) = views_entity_field_label($entity_type_id, $field_name); + [$label, $all_labels] = views_entity_field_label($entity_type_id, $field_name); // Expose data for the field as a whole. foreach ($field_tables as $type => $table_info) { diff --git a/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php b/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php index 20f61fe773b5..3a7336ce847f 100644 --- a/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php +++ b/core/modules/views_ui/src/Form/Ajax/ConfigHandler.php @@ -266,7 +266,7 @@ public function remove(&$form, FormStateInterface $form_state) { $type = $form_state->get('type'); $id = $form_state->get('id'); // Store the item back on the view - list($was_defaulted, $is_defaulted) = $view->getOverrideValues($form, $form_state); + [$was_defaulted, $is_defaulted] = $view->getOverrideValues($form, $form_state); $executable = $view->getExecutable(); // If the display selection was changed toggle the override value. if ($was_defaulted != $is_defaulted) { diff --git a/core/modules/views_ui/src/ViewUI.php b/core/modules/views_ui/src/ViewUI.php index 3dbe2b33fe90..0dfaec0f44b8 100644 --- a/core/modules/views_ui/src/ViewUI.php +++ b/core/modules/views_ui/src/ViewUI.php @@ -215,7 +215,7 @@ public function standardSubmit($form, FormStateInterface $form_state) { // Determine whether the values the user entered are intended to apply to // the current display or the default display. - list($was_defaulted, $is_defaulted, $revert) = $this->getOverrideValues($form, $form_state); + [$was_defaulted, $is_defaulted, $revert] = $this->getOverrideValues($form, $form_state); // Based on the user's choice in the display dropdown, determine which display // these changes apply to. @@ -429,7 +429,7 @@ public function submitItemAdd($form, FormStateInterface $form_state) { $display_id = $form_state->get('display_id'); // Handle the override select. - list($was_defaulted, $is_defaulted) = $this->getOverrideValues($form, $form_state); + [$was_defaulted, $is_defaulted] = $this->getOverrideValues($form, $form_state); if ($was_defaulted && !$is_defaulted) { // We were using the default display's values, but we're now overriding // the default display and saving values specific to this display. @@ -450,7 +450,7 @@ public function submitItemAdd($form, FormStateInterface $form_state) { if (!$form_state->isValueEmpty('name') && is_array($form_state->getValue('name'))) { // Loop through each of the items that were checked and add them to the view. foreach (array_keys(array_filter($form_state->getValue('name'))) as $field) { - list($table, $field) = explode('.', $field, 2); + [$table, $field] = explode('.', $field, 2); if ($cut = strpos($field, '$')) { $field = substr($field, 0, $cut); diff --git a/core/modules/workflows/src/WorkflowAccessControlHandler.php b/core/modules/workflows/src/WorkflowAccessControlHandler.php index 1e0456cf6dfa..63ad30f6d831 100644 --- a/core/modules/workflows/src/WorkflowAccessControlHandler.php +++ b/core/modules/workflows/src/WorkflowAccessControlHandler.php @@ -55,7 +55,7 @@ protected function checkAccess(EntityInterface $entity, $operation, AccountInter /** @var \Drupal\workflows\Entity\Workflow $entity */ $workflow_type = $entity->getTypePlugin(); if (strpos($operation, 'delete-state') === 0) { - list(, $state_id) = explode(':', $operation, 2); + [, $state_id] = explode(':', $operation, 2); // Deleting a state is editing a workflow, but also we should forbid // access if there is only one state. return AccessResult::allowedIf(count($entity->getTypePlugin()->getStates()) > 1) diff --git a/core/modules/workspaces/src/EntityQuery/Tables.php b/core/modules/workspaces/src/EntityQuery/Tables.php index 28b16d4a9f88..66600211b2aa 100644 --- a/core/modules/workspaces/src/EntityQuery/Tables.php +++ b/core/modules/workspaces/src/EntityQuery/Tables.php @@ -94,7 +94,7 @@ protected function addJoin($type, $table, $join_condition, $langcode, $delta = N // to also look for a possible workspace-specific revision using COALESCE. $condition_parts = explode(' = ', $join_condition); $condition_parts_1 = str_replace(['[', ']'], '', $condition_parts[1]); - list($base_table, $id_field) = explode('.', $condition_parts_1); + [$base_table, $id_field] = explode('.', $condition_parts_1); if (isset($this->baseTablesEntityType[$base_table])) { $entity_type_id = $this->baseTablesEntityType[$base_table]; diff --git a/core/modules/workspaces/src/Form/WorkspaceForm.php b/core/modules/workspaces/src/Form/WorkspaceForm.php index fe022162d7f6..13a5b60ffd7d 100644 --- a/core/modules/workspaces/src/Form/WorkspaceForm.php +++ b/core/modules/workspaces/src/Form/WorkspaceForm.php @@ -114,7 +114,7 @@ protected function flagViolations(EntityConstraintViolationListInterface $violat 'id', ]; foreach ($violations->getByFields($field_names) as $violation) { - list($field_name) = explode('.', $violation->getPropertyPath(), 2); + [$field_name] = explode('.', $violation->getPropertyPath(), 2); $form_state->setErrorByName($field_name, $violation->getMessage()); } parent::flagViolations($violations, $form, $form_state); diff --git a/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php b/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php index e689d8549c6f..f1d17a6cb42f 100644 --- a/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php +++ b/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php @@ -727,7 +727,7 @@ protected function importContentFromFile($entity_type, $bundle_machine_name) { $filename = $entity_type . '/' . $bundle_machine_name . '.csv'; // Read all multilingual content from the file. - list($all_content, $translated_languages) = $this->readMultilingualContent($filename); + [$all_content, $translated_languages] = $this->readMultilingualContent($filename); // English is no longer needed in the list of languages to translate. $key = array_search('en', $translated_languages); diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh index edb6cab39de0..17ec49b9a484 100755 --- a/core/scripts/run-tests.sh +++ b/core/scripts/run-tests.sh @@ -41,7 +41,7 @@ const SIMPLETEST_SCRIPT_EXIT_EXCEPTION = 2; // Set defaults and get overrides. -list($args, $count) = simpletest_script_parse_args(); +[$args, $count] = simpletest_script_parse_args(); if ($args['help'] || $count == 0) { simpletest_script_help(); @@ -467,7 +467,7 @@ function simpletest_script_init() { elseif ($sudo = getenv('SUDO_COMMAND')) { // 'SUDO_COMMAND' is an environment variable set by the sudo program. // Extract only the PHP interpreter, not the rest of the command. - list($php) = explode(' ', $sudo, 2); + [$php] = explode(' ', $sudo, 2); } else { simpletest_script_print_error('Unable to automatically determine the path to the PHP interpreter. Supply the --php command line argument.'); @@ -824,7 +824,7 @@ function simpletest_script_run_one_test($test_id, $test_class) { // tests and that none ran. $status = SIMPLETEST_SCRIPT_EXIT_SUCCESS; if (strpos($test_class, '::') > 0) { - list($class_name, $method) = explode('::', $test_class, 2); + [$class_name, $method] = explode('::', $test_class, 2); $methods = [$method]; } else { @@ -1048,7 +1048,7 @@ function simpletest_script_get_test_list() { if ($args['class']) { $test_list = []; foreach ($args['test_names'] as $test_class) { - list($class_name) = explode('::', $test_class, 2); + [$class_name] = explode('::', $test_class, 2); if (class_exists($class_name)) { $test_list[] = $test_class; } @@ -1264,7 +1264,7 @@ function simpletest_script_reporter_write_xml_results() { $case = $dom_document->createElement('testcase'); $case->setAttribute('classname', $test_class); if (strpos($result->function, '->') !== FALSE) { - list($class, $name) = explode('->', $result->function, 2); + [$class, $name] = explode('->', $result->function, 2); } else { $name = $result->function; diff --git a/core/tests/Drupal/KernelTests/Core/Asset/AttachedAssetsTest.php b/core/tests/Drupal/KernelTests/Core/Asset/AttachedAssetsTest.php index 221de328ca7e..54700f93f05e 100644 --- a/core/tests/Drupal/KernelTests/Core/Asset/AttachedAssetsTest.php +++ b/core/tests/Drupal/KernelTests/Core/Asset/AttachedAssetsTest.php @@ -64,7 +64,7 @@ protected function setUp(): void { public function testDefault() { $assets = new AttachedAssets(); $this->assertEquals([], $this->assetResolver->getCssAssets($assets, FALSE), 'Default CSS is empty.'); - list($js_assets_header, $js_assets_footer) = $this->assetResolver->getJsAssets($assets, FALSE); + [$js_assets_header, $js_assets_footer] = $this->assetResolver->getJsAssets($assets, FALSE); $this->assertEquals([], $js_assets_header, 'Default header JavaScript is empty.'); $this->assertEquals([], $js_assets_footer, 'Default footer JavaScript is empty.'); } @@ -181,7 +181,7 @@ public function testAggregation() { $this->assertCount(1, $this->assetResolver->getCssAssets($assets, TRUE), 'There is a sole aggregated CSS asset.'); - list($header_js, $footer_js) = $this->assetResolver->getJsAssets($assets, TRUE); + [$header_js, $footer_js] = $this->assetResolver->getJsAssets($assets, TRUE); $this->assertEquals([], \Drupal::service('asset.js.collection_renderer')->render($header_js), 'There are 0 JavaScript assets in the header.'); $rendered_footer_js = \Drupal::service('asset.js.collection_renderer')->render($footer_js); $this->assertCount(2, $rendered_footer_js, 'There are 2 JavaScript assets in the footer.'); diff --git a/core/tests/Drupal/KernelTests/Core/Database/SelectTest.php b/core/tests/Drupal/KernelTests/Core/Database/SelectTest.php index c255d8885b96..89e98bf4a204 100644 --- a/core/tests/Drupal/KernelTests/Core/Database/SelectTest.php +++ b/core/tests/Drupal/KernelTests/Core/Database/SelectTest.php @@ -65,7 +65,7 @@ public function testVulnerableComment() { $connection = Database::getConnection(); foreach ($this->makeCommentsProvider() as $test_set) { - list($expected, $comments) = $test_set; + [$expected, $comments] = $test_set; $this->assertEquals($expected, $connection->makeComment($comments)); } } diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php index ffbf5a59d31e..176413cf6988 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php @@ -140,7 +140,7 @@ protected function setUp(): void { foreach (array_reverse(str_split(decbin($i))) as $key => $bit) { if ($bit) { // @todo https://www.drupal.org/project/drupal/issues/3001920 Doing - // list($field_name, $langcode, $values) = $units[$key]; causes + // [$field_name, $langcode, $values] = $units[$key]; causes // problems in PHP 7.3. Revert to better variable names once // https://bugs.php.net/bug.php?id=76937 is fixed. $entity->getTranslation($units[$key][1])->{$units[$key][0]}[] = $units[$key][2]; diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntitySchemaTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntitySchemaTest.php index 7a81c54d7903..f4c5844e039f 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntitySchemaTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntitySchemaTest.php @@ -337,7 +337,7 @@ public function testCleanUpStorageDefinition() { $entity_type_id_count = 0; foreach (array_keys($schema) as $storage_definition_name) { - list($entity_type_id, ,) = explode('.', $storage_definition_name); + [$entity_type_id] = explode('.', $storage_definition_name); if (in_array($entity_type_id, $entity_type_ids)) { $entity_type_id_count++; } @@ -358,7 +358,7 @@ public function testCleanUpStorageDefinition() { $entity_type_id_count = 0; foreach (array_keys($schema) as $storage_definition_name) { - list($entity_type_id, ,) = explode('.', $storage_definition_name); + [$entity_type_id] = explode('.', $storage_definition_name); if (in_array($entity_type_id, $entity_type_ids)) { $entity_type_id_count++; } diff --git a/core/tests/Drupal/Tests/BrowserTestBase.php b/core/tests/Drupal/Tests/BrowserTestBase.php index 9e5376eb4a53..d4703ed2c9c2 100644 --- a/core/tests/Drupal/Tests/BrowserTestBase.php +++ b/core/tests/Drupal/Tests/BrowserTestBase.php @@ -718,7 +718,7 @@ protected function translatePostValues(array $values) { // string and convert the resulting key/value pairs back into a flat array. $query = http_build_query($values); foreach (explode('&', $query) as $item) { - list($key, $value) = explode('=', $item); + [$key, $value] = explode('=', $item); $edit[urldecode($key)] = urldecode($value); } return $edit; diff --git a/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php b/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php index 84c909e1a3b5..0d000d59d633 100644 --- a/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php +++ b/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php @@ -30,7 +30,7 @@ class PoHeaderTest extends TestCase { public function testPluralsFormula($plural, $expected) { $p = new PoHeader(); $parsed = $p->parsePluralForms($plural); - list($nplurals, $new_plural) = $parsed; + [$nplurals, $new_plural] = $parsed; foreach ($expected as $number => $plural_form) { $result = $new_plural[$number] ?? $new_plural['default']; $this->assertEquals($result, $plural_form, 'Difference found at ' . $number . ': ' . $plural_form . ' versus ' . $result); diff --git a/core/tests/Drupal/Tests/Core/Cache/CacheableMetadataTest.php b/core/tests/Drupal/Tests/Core/Cache/CacheableMetadataTest.php index c04bed5b902e..2d939a75ab85 100644 --- a/core/tests/Drupal/Tests/Core/Cache/CacheableMetadataTest.php +++ b/core/tests/Drupal/Tests/Core/Cache/CacheableMetadataTest.php @@ -96,7 +96,7 @@ public function testAddCacheTags() { ]; foreach ($add_expected as $row => $data) { - list($add, $expected) = $data; + [$add, $expected] = $data; $metadata->addCacheTags($add); $this->assertEquals($expected, $metadata->getCacheTags(), sprintf("Dataset in %d row failed on validation.", $row + 1)); } diff --git a/core/tests/Drupal/Tests/Core/Extension/ExtensionListTest.php b/core/tests/Drupal/Tests/Core/Extension/ExtensionListTest.php index 8da6fa436026..929ad62b1df7 100644 --- a/core/tests/Drupal/Tests/Core/Extension/ExtensionListTest.php +++ b/core/tests/Drupal/Tests/Core/Extension/ExtensionListTest.php @@ -25,7 +25,7 @@ class ExtensionListTest extends UnitTestCase { * @covers ::getName */ public function testGetNameWithNonExistingExtension() { - list($cache, $info_parser, $module_handler, $state) = $this->getMocks(); + [$cache, $info_parser, $module_handler, $state] = $this->getMocks(); $test_extension_list = new TestExtension($this->randomMachineName(), 'test_extension', $cache->reveal(), $info_parser->reveal(), $module_handler->reveal(), $state->reveal(), 'testing'); $extension_discovery = $this->prophesize(ExtensionDiscovery::class); @@ -49,7 +49,7 @@ public function testGetName() { * @covers ::get */ public function testGetWithNonExistingExtension() { - list($cache, $info_parser, $module_handler, $state) = $this->getMocks(); + [$cache, $info_parser, $module_handler, $state] = $this->getMocks(); $test_extension_list = new TestExtension($this->randomMachineName(), 'test_extension', $cache->reveal(), $info_parser->reveal(), $module_handler->reveal(), $state->reveal(), 'testing'); $extension_discovery = $this->prophesize(ExtensionDiscovery::class); @@ -292,7 +292,7 @@ protected function setupTestExtensionList(array $extension_names = ['test_name'] touch("vfs://drupal_root/example/$extension_name/$extension_name.info.yml", 123456789); } - list($cache, $info_parser, $module_handler, $state) = $this->getMocks(); + [$cache, $info_parser, $module_handler, $state] = $this->getMocks(); $info_parser->parse(Argument::any())->will(function ($args) { return Yaml::decode(file_get_contents('vfs://drupal_root/' . $args[0])); }); diff --git a/core/tests/Drupal/Tests/Core/Extension/InfoParserUnitTest.php b/core/tests/Drupal/Tests/Core/Extension/InfoParserUnitTest.php index cfd3439baa5f..ae0f753ef7ec 100644 --- a/core/tests/Drupal/Tests/Core/Extension/InfoParserUnitTest.php +++ b/core/tests/Drupal/Tests/Core/Extension/InfoParserUnitTest.php @@ -587,7 +587,7 @@ public function testCoreIncompatibility($test_case, $constraint, $expected) { * Data provider for testCoreIncompatibility(). */ public function providerCoreIncompatibility() { - list($major, $minor) = explode('.', \Drupal::VERSION); + [$major, $minor] = explode('.', \Drupal::VERSION); $next_minor = $minor + 1; $next_major = $major + 1; diff --git a/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php b/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php index 2588c2ebf268..980e715323ba 100644 --- a/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php +++ b/core/tests/Drupal/Tests/Core/Field/BaseFieldDefinitionTestBase.php @@ -27,7 +27,7 @@ protected function setUp() { parent::setUp(); // getModuleAndPath() returns an array of the module name and directory. - list($module_name, $module_dir) = $this->getModuleAndPath(); + [$module_name, $module_dir] = $this->getModuleAndPath(); $namespaces = new \ArrayObject(); $namespaces["Drupal\\$module_name"] = $module_dir . '/src'; diff --git a/core/tests/Drupal/Tests/Core/Mail/MailFormatHelperTest.php b/core/tests/Drupal/Tests/Core/Mail/MailFormatHelperTest.php index c2075afb04e4..84a3981e0a8e 100644 --- a/core/tests/Drupal/Tests/Core/Mail/MailFormatHelperTest.php +++ b/core/tests/Drupal/Tests/Core/Mail/MailFormatHelperTest.php @@ -23,7 +23,7 @@ public function testWrapMail() { $headers_in_body .= 'Content-Description: ' . $this->randomMachineName(64); $body = $this->randomMachineName(76) . ' ' . $this->randomMachineName(6); $wrapped_text = MailFormatHelper::wrapMail($headers_in_body . $delimiter . $body); - list($processed_headers, $processed_body) = explode($delimiter, $wrapped_text); + [$processed_headers, $processed_body] = explode($delimiter, $wrapped_text); // Check that the body headers were not wrapped even though some exceeded // 77 characters. diff --git a/core/tests/Drupal/Tests/Core/Render/RendererRecursionTest.php b/core/tests/Drupal/Tests/Core/Render/RendererRecursionTest.php index f0d693ba0d81..69fa66bdd4d7 100644 --- a/core/tests/Drupal/Tests/Core/Render/RendererRecursionTest.php +++ b/core/tests/Drupal/Tests/Core/Render/RendererRecursionTest.php @@ -33,7 +33,7 @@ protected function setUpRenderRecursionComplexElements() { * @covers ::doRender */ public function testRenderRecursionWithNestedRenderRoot() { - list($complex_child_markup, $parent_markup, $complex_child_template) = $this->setUpRenderRecursionComplexElements(); + [$complex_child_markup, $parent_markup, $complex_child_template] = $this->setUpRenderRecursionComplexElements(); $renderer = $this->renderer; $this->setUpRequest(); @@ -65,7 +65,7 @@ public function testRenderRecursionWithNestedRenderRoot() { * @covers ::doRender */ public function testRenderRecursionWithNestedRender() { - list($complex_child_markup, $parent_markup, $complex_child_template) = $this->setUpRenderRecursionComplexElements(); + [$complex_child_markup, $parent_markup, $complex_child_template] = $this->setUpRenderRecursionComplexElements(); $renderer = $this->renderer; $this->setUpRequest(); @@ -99,7 +99,7 @@ public function testRenderRecursionWithNestedRender() { * @covers ::renderPlain */ public function testRenderRecursionWithNestedRenderPlain() { - list($complex_child_markup, $parent_markup, $complex_child_template) = $this->setUpRenderRecursionComplexElements(); + [$complex_child_markup, $parent_markup, $complex_child_template] = $this->setUpRenderRecursionComplexElements(); $renderer = $this->renderer; $this->setUpRequest(); diff --git a/core/tests/Drupal/Tests/Listeners/DrupalStandardsListenerTrait.php b/core/tests/Drupal/Tests/Listeners/DrupalStandardsListenerTrait.php index 34f305e36596..aac9b3056b6f 100644 --- a/core/tests/Drupal/Tests/Listeners/DrupalStandardsListenerTrait.php +++ b/core/tests/Drupal/Tests/Listeners/DrupalStandardsListenerTrait.php @@ -102,7 +102,7 @@ private function checkValidCoversForTest(TestCase $test) { $class = $covers; $method = ''; if (strpos($covers, '::') !== FALSE) { - list($class, $method) = explode('::', $covers); + [$class, $method] = explode('::', $covers); } // Check for the existence of the class if it's specified by @covers. if (!empty($class)) { diff --git a/core/tests/Drupal/Tests/XdebugRequestTrait.php b/core/tests/Drupal/Tests/XdebugRequestTrait.php index 5da86a51bde0..48c19a6c7c26 100644 --- a/core/tests/Drupal/Tests/XdebugRequestTrait.php +++ b/core/tests/Drupal/Tests/XdebugRequestTrait.php @@ -35,7 +35,7 @@ protected function extractCookiesFromRequest(Request $request) { // $_SERVER['XDEBUG_CONFIG'] has the form "key1=value1 key2=value2 ...". $pairs = explode(' ', $server->get('XDEBUG_CONFIG')); foreach ($pairs as $pair) { - list($key, $value) = explode('=', $pair); + [$key, $value] = explode('=', $pair); // Account for key-value pairs being separated by multiple spaces. if (trim($key, ' ') == 'idekey') { $cookies['XDEBUG_SESSION'][] = trim($value, ' '); -- GitLab From 6af996bb19005fb623c6e10779547f2e73438b5a Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Mon, 15 Nov 2021 12:46:09 +1000 Subject: [PATCH 31/69] Issue #3231781 by longwave, mondrake, Feuerwagen, larowlan, TR, nlisgo, xxAlHixx, DuaelFr, GoZ, benjy, no_angel, Mac_Weber: [D9.3 beta - w/c Nov 8, 2021] Remove remaining uses of t() in tests (cherry picked from commit a83a7a78366f8494d924de8ceddd86706d94ca3d) --- .../src/Functional/ItemCacheTagsTest.php | 4 +- .../tests/src/Kernel/ItemWithoutFeedTest.php | 2 +- .../tests/src/Kernel/BlockInterfaceTest.php | 4 +- .../tests/src/Functional/CommentPagerTest.php | 7 +- .../CommentStatusFieldAccessTest.php | 2 +- .../src/Functional/Views/NodeCommentsTest.php | 2 +- .../tests/src/Functional/Views/WizardTest.php | 2 +- .../src/Functional/ConfigEntityListTest.php | 10 +-- .../src/Functional/ContactPersonalTest.php | 12 +-- .../ContentTranslationWorkflowsTest.php | 2 +- .../dblog/tests/src/Functional/DbLogTest.php | 4 +- .../tests/src/Functional/NestedFormTest.php | 2 +- .../Functional/ManageFieldsFunctionalTest.php | 9 +-- .../ManageDisplayTest.php | 2 +- .../tests/src/Kernel/EntityDisplayTest.php | 2 +- .../tests/src/Functional/FilePrivateTest.php | 4 +- .../FileManagedFileElementTest.php | 2 +- .../Functional/FilterHtmlImageSecureTest.php | 6 +- .../forum/tests/src/Functional/ForumTest.php | 13 ++-- .../src/Functional/ForumUninstallTest.php | 2 +- .../src/Functional/ImageFieldDisplayTest.php | 2 +- .../ImageFieldValidateTest.php | 2 +- .../tests/src/Functional/ActionTest.php | 2 +- .../tests/src/Functional/ShortcutTest.php | 2 +- .../ConfigurableLanguageManagerTest.php | 2 +- .../src/Functional/LanguageBreadcrumbTest.php | 2 +- .../Functional/LocaleUpdateInterfaceTest.php | 8 +- .../tests/src/Kernel/MediaSourceTest.php | 2 +- .../MenuLinkContentDeleteFormTest.php | 2 +- .../Functional/MenuLinkContentFormTest.php | 4 +- .../MenuUiContentModerationTest.php | 12 +-- .../src/Unit/source/d6/Drupal6SqlBaseTest.php | 20 ++--- .../src/Functional/SourceProviderTest.php | 10 +-- .../Functional/NodeAccessBaseTableTest.php | 2 +- .../src/Functional/NodeAccessPagerTest.php | 2 +- .../NodeEntityViewModeAlterTest.php | 4 +- .../src/Functional/NodeRSSContentTest.php | 2 +- .../src/Functional/NodeTranslationUITest.php | 2 +- .../Functional/Views/FilterNodeAccessTest.php | 2 +- .../src/Functional/PathTaxonomyTermTest.php | 2 +- .../QuickEditCustomPipelineTest.php | 2 +- .../QuickEditEndPointAccessTest.php | 2 +- .../QuickEditImageControllerTest.php | 8 +- .../LayoutBuilderQuickEditTest.php | 2 +- .../QuickEditFileTest.php | 2 +- .../QuickEditImageTest.php | 2 +- .../QuickEditIntegrationTest.php | 2 +- .../QuickEditLoadingTest.php | 2 +- .../src/Functional/ShortcutCacheTagsTest.php | 2 +- .../Functional/StatisticsTokenReplaceTest.php | 2 +- .../Database/SelectTableSortDefaultTest.php | 16 ++-- .../Form/ElementsTableSelectTest.php | 2 +- .../tests/src/Functional/Form/FormTest.php | 8 +- .../Form/LanguageSelectElementTest.php | 2 +- .../src/Functional/Menu/BreadcrumbTest.php | 34 ++++---- .../Functional/System/SiteMaintenanceTest.php | 18 +++-- .../tests/src/Kernel/Action/ActionTest.php | 2 +- .../src/Kernel/Form/ProgrammaticTest.php | 2 +- .../Functional/VocabularyPermissionsTest.php | 5 +- .../Functional/VocabularyTranslationTest.php | 4 +- .../src/Functional/TrackerNodeAccessTest.php | 6 +- .../tests/src/Functional/UserAdminTest.php | 2 +- .../tests/src/Functional/UserCreateTest.php | 2 +- .../src/Functional/UserPasswordResetTest.php | 2 +- .../src/Functional/UserTokenReplaceTest.php | 2 +- .../RegistrationWithUserFieldsTest.php | 2 +- .../Views/HandlerFieldPermissionTest.php | 8 +- .../src/Functional/Handler/HandlerTest.php | 78 +++++++------------ .../src/Functional/ViewsFormMultipleTest.php | 4 +- .../ExposedFilterAJAXTest.php | 2 +- .../src/Kernel/Handler/FieldBooleanTest.php | 2 +- .../src/Kernel/Handler/FieldDateTest.php | 27 ++----- .../views/tests/src/Kernel/ModuleTest.php | 5 +- .../Kernel/Plugin/BlockDependenciesTest.php | 2 +- .../Kernel/Plugin/ExposedFormRenderTest.php | 2 +- .../tests/src/Functional/HandlerTest.php | 6 +- .../Ajax/MultiFormTest.php | 3 +- .../Core/Entity/ConfigEntityQueryTest.php | 4 +- .../Core/Messenger/MessengerTest.php | 2 +- .../Core/Plugin/ContextPluginTest.php | 2 +- 80 files changed, 201 insertions(+), 260 deletions(-) diff --git a/core/modules/aggregator/tests/src/Functional/ItemCacheTagsTest.php b/core/modules/aggregator/tests/src/Functional/ItemCacheTagsTest.php index c7bce98ff211..93b6e8e48d90 100644 --- a/core/modules/aggregator/tests/src/Functional/ItemCacheTagsTest.php +++ b/core/modules/aggregator/tests/src/Functional/ItemCacheTagsTest.php @@ -56,7 +56,7 @@ protected function createEntity() { // Create a "Llama" aggregator feed item. $item = Item::create([ 'fid' => $feed->id(), - 'title' => t('Llama'), + 'title' => 'Llama', 'path' => 'https://www.drupal.org/', ]); $item->save(); @@ -77,7 +77,7 @@ public function testEntityCreation() { // Now create a feed item in that feed. Item::create([ 'fid' => $this->entity->getFeedId(), - 'title' => t('Llama 2'), + 'title' => 'Llama 2', 'path' => 'https://groups.drupal.org/', ])->save(); diff --git a/core/modules/aggregator/tests/src/Kernel/ItemWithoutFeedTest.php b/core/modules/aggregator/tests/src/Kernel/ItemWithoutFeedTest.php index f4a5e8f3f34d..8a604eeb701c 100644 --- a/core/modules/aggregator/tests/src/Kernel/ItemWithoutFeedTest.php +++ b/core/modules/aggregator/tests/src/Kernel/ItemWithoutFeedTest.php @@ -31,7 +31,7 @@ protected function setUp(): void { */ public function testEntityCreation() { $entity = Item::create([ - 'title' => t('Llama 2'), + 'title' => 'Llama 2', 'path' => 'https://groups.drupal.org/', ]); $violations = $entity->validate(); diff --git a/core/modules/block/tests/src/Kernel/BlockInterfaceTest.php b/core/modules/block/tests/src/Kernel/BlockInterfaceTest.php index 49772173409c..d47ac18cff82 100644 --- a/core/modules/block/tests/src/Kernel/BlockInterfaceTest.php +++ b/core/modules/block/tests/src/Kernel/BlockInterfaceTest.php @@ -59,7 +59,7 @@ public function testBlockInterface() { ], 'admin_label' => [ '#type' => 'item', - '#title' => t('Block description'), + '#title' => 'Block description', '#plain_text' => $definition['admin_label'], ], 'label' => [ @@ -78,7 +78,7 @@ public function testBlockInterface() { 'context_mapping' => [], 'display_message' => [ '#type' => 'textfield', - '#title' => t('Display message'), + '#title' => 'Display message', '#default_value' => 'My custom display message.', ], ]; diff --git a/core/modules/comment/tests/src/Functional/CommentPagerTest.php b/core/modules/comment/tests/src/Functional/CommentPagerTest.php index 6e3d1b853378..ef4fe3c018fe 100644 --- a/core/modules/comment/tests/src/Functional/CommentPagerTest.php +++ b/core/modules/comment/tests/src/Functional/CommentPagerTest.php @@ -370,11 +370,8 @@ public function testTwoPagers() { // Set comments to one per page so that we are able to test paging without // needing to insert large numbers of comments. $this->setCommentsPerPage(1, $field_name); - for ($i = 0; $i < 3; $i++) { - $comment = t('Comment @count on field @field', [ - '@count' => $i + 1, - '@field' => $field_name, - ]); + for ($i = 1; $i <= 4; $i++) { + $comment = "Comment $i on field $field_name"; $comments[] = $this->postComment($node, $comment, $comment, TRUE, $field_name); } } diff --git a/core/modules/comment/tests/src/Functional/CommentStatusFieldAccessTest.php b/core/modules/comment/tests/src/Functional/CommentStatusFieldAccessTest.php index 9a34ac30387b..cddb174fed9e 100644 --- a/core/modules/comment/tests/src/Functional/CommentStatusFieldAccessTest.php +++ b/core/modules/comment/tests/src/Functional/CommentStatusFieldAccessTest.php @@ -57,7 +57,7 @@ protected function setUp(): void { parent::setUp(); $node_type = NodeType::create([ 'type' => 'article', - 'name' => t('Article'), + 'name' => 'Article', ]); $node_type->save(); $this->nodeAuthor = $this->drupalCreateUser([ diff --git a/core/modules/comment/tests/src/Functional/Views/NodeCommentsTest.php b/core/modules/comment/tests/src/Functional/Views/NodeCommentsTest.php index 3c68670db755..685fbf220334 100644 --- a/core/modules/comment/tests/src/Functional/Views/NodeCommentsTest.php +++ b/core/modules/comment/tests/src/Functional/Views/NodeCommentsTest.php @@ -51,7 +51,7 @@ public function testCommentCount() { $this->assertCount(1, $comment_count_without_comment); // Create a content type with no comment field, and add a node. - $this->drupalCreateContentType(['type' => 'no_comment', 'name' => t('No comment page')]); + $this->drupalCreateContentType(['type' => 'no_comment', 'name' => 'No comment page']); $this->nodeUserPosted = $this->drupalCreateNode(['type' => 'no_comment']); $this->drupalGet('test-comment-count'); diff --git a/core/modules/comment/tests/src/Functional/Views/WizardTest.php b/core/modules/comment/tests/src/Functional/Views/WizardTest.php index 0103c3d12362..ecabc08b96b1 100644 --- a/core/modules/comment/tests/src/Functional/Views/WizardTest.php +++ b/core/modules/comment/tests/src/Functional/Views/WizardTest.php @@ -33,7 +33,7 @@ class WizardTest extends WizardTestBase { */ protected function setUp($import_test_views = TRUE): void { parent::setUp($import_test_views); - $this->drupalCreateContentType(['type' => 'page', 'name' => t('Basic page')]); + $this->drupalCreateContentType(['type' => 'page', 'name' => 'Basic page']); // Add comment field to page node type. $this->addDefaultCommentField('node', 'page'); } diff --git a/core/modules/config/tests/src/Functional/ConfigEntityListTest.php b/core/modules/config/tests/src/Functional/ConfigEntityListTest.php index aa58a411ec67..e80cf5b4df31 100644 --- a/core/modules/config/tests/src/Functional/ConfigEntityListTest.php +++ b/core/modules/config/tests/src/Functional/ConfigEntityListTest.php @@ -59,17 +59,17 @@ public function testList() { // Test getOperations() method. $expected_operations = [ 'edit' => [ - 'title' => t('Edit'), + 'title' => 'Edit', 'weight' => 10, 'url' => $entity->toUrl()->setOption('query', $this->getRedirectDestination()->getAsArray()), ], 'disable' => [ - 'title' => t('Disable'), + 'title' => 'Disable', 'weight' => 40, 'url' => $entity->toUrl('disable')->setOption('query', $this->getRedirectDestination()->getAsArray()), ], 'delete' => [ - 'title' => t('Delete'), + 'title' => 'Delete', 'weight' => 100, 'url' => $entity->toUrl('delete-form')->setOption('query', $this->getRedirectDestination()->getAsArray()), ], @@ -134,12 +134,12 @@ public function testList() { // Test getOperations() method. $expected_operations = [ 'edit' => [ - 'title' => t('Edit'), + 'title' => 'Edit', 'weight' => 10, 'url' => $entity->toUrl()->setOption('query', $this->getRedirectDestination()->getAsArray()), ], 'delete' => [ - 'title' => t('Delete'), + 'title' => 'Delete', 'weight' => 100, 'url' => $entity->toUrl('delete-form')->setOption('query', $this->getRedirectDestination()->getAsArray()), ], diff --git a/core/modules/contact/tests/src/Functional/ContactPersonalTest.php b/core/modules/contact/tests/src/Functional/ContactPersonalTest.php index 820201eea234..e28c8aae9b15 100644 --- a/core/modules/contact/tests/src/Functional/ContactPersonalTest.php +++ b/core/modules/contact/tests/src/Functional/ContactPersonalTest.php @@ -3,7 +3,6 @@ namespace Drupal\Tests\contact\Functional; use Drupal\Component\Render\FormattableMarkup; -use Drupal\Component\Render\PlainTextOutput; use Drupal\Component\Utility\Html; use Drupal\Core\Session\AccountInterface; use Drupal\Core\Test\AssertMailTrait; @@ -93,14 +92,9 @@ public function testSendPersonalContactMessage() { $this->assertEquals($this->config('system.site')->get('mail'), $mail['from']); $this->assertEquals($this->webUser->getEmail(), $mail['reply-to']); $this->assertEquals('user_mail', $mail['key']); - $variables = [ - '@site-name' => $this->config('system.site')->get('name'), - '@subject' => $message['subject[0][value]'], - '@recipient-name' => $this->contactUser->getDisplayName(), - ]; - $subject = PlainTextOutput::renderFromHtml(t('[@site-name] @subject', $variables)); + $subject = '[' . $this->config('system.site')->get('name') . '] ' . $message['subject[0][value]']; $this->assertEquals($subject, $mail['subject'], 'Subject is in sent message.'); - $this->assertStringContainsString('Hello ' . $variables['@recipient-name'], $mail['body'], 'Recipient name is in sent message.'); + $this->assertStringContainsString('Hello ' . $this->contactUser->getDisplayName(), $mail['body'], 'Recipient name is in sent message.'); $this->assertStringContainsString($this->webUser->getDisplayName(), $mail['body'], 'Sender name is in sent message.'); $this->assertStringContainsString($message['message[0][value]'], $mail['body'], 'Message body is in sent message.'); @@ -128,7 +122,7 @@ public function testSendPersonalContactMessage() { $message = $this->submitPersonalContact($this->contactUser, $message); // Assert mail content. - $this->assertMailString('body', 'Hello ' . $variables['@recipient-name'], 1); + $this->assertMailString('body', 'Hello ' . $this->contactUser->getDisplayName(), 1); $this->assertMailString('body', $this->webUser->getDisplayName(), 1); $this->assertMailString('body', Html::Escape($message['message[0][value]']), 1); } diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php index a57864d83556..9360122fb2bd 100644 --- a/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php +++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php @@ -225,7 +225,7 @@ public function testWorkflows() { $this->doTestWorkflows($this->administrator, $expected_status); // Check that translation permissions allow the associated operations. - $ops = ['create' => t('Add'), 'update' => t('Edit'), 'delete' => t('Delete')]; + $ops = ['create' => 'Add', 'update' => 'Edit', 'delete' => 'Delete']; $translations_url = $this->entity->toUrl('drupal:content-translation-overview'); foreach ($ops as $current_op => $item) { $user = $this->drupalCreateUser([ diff --git a/core/modules/dblog/tests/src/Functional/DbLogTest.php b/core/modules/dblog/tests/src/Functional/DbLogTest.php index 2965cd96f4d2..4b7ef3c2266f 100644 --- a/core/modules/dblog/tests/src/Functional/DbLogTest.php +++ b/core/modules/dblog/tests/src/Functional/DbLogTest.php @@ -377,8 +377,8 @@ private function verifyBreadcrumbs() { private function verifyEvents() { // Invoke events. $this->doUser(); - $this->drupalCreateContentType(['type' => 'article', 'name' => t('Article')]); - $this->drupalCreateContentType(['type' => 'page', 'name' => t('Basic page')]); + $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']); + $this->drupalCreateContentType(['type' => 'page', 'name' => 'Basic page']); $this->doNode('article'); $this->doNode('page'); $this->doNode('forum'); diff --git a/core/modules/field/tests/src/Functional/NestedFormTest.php b/core/modules/field/tests/src/Functional/NestedFormTest.php index 4dd8993d5cbe..7621b07e3a33 100644 --- a/core/modules/field/tests/src/Functional/NestedFormTest.php +++ b/core/modules/field/tests/src/Functional/NestedFormTest.php @@ -204,7 +204,7 @@ public function testNestedEntityFormEntityLevelValidation() { // Submit the form and check that the entities are updated accordingly. $assert_session->hiddenFieldExists('entity_2[changed]') ->setValue(REQUEST_TIME - 86400); - $page->pressButton(t('Save')); + $page->pressButton('Save'); $elements = $this->cssSelect('.entity-2.error'); $this->assertCount(1, $elements, 'The whole nested entity form has been correctly flagged with an error class.'); diff --git a/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php b/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php index 85b056e6575b..1d54d2847135 100644 --- a/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php +++ b/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php @@ -166,12 +166,7 @@ public function manageFieldsPage($type = '') { $type = empty($type) ? $this->contentType : $type; $this->drupalGet('admin/structure/types/manage/' . $type . '/fields'); // Check all table columns. - $table_headers = [ - t('Label'), - t('Machine name'), - t('Field type'), - t('Operations'), - ]; + $table_headers = ['Label', 'Machine name', 'Field type', 'Operations']; foreach ($table_headers as $table_header) { // We check that the label appear in the table headings. $this->assertSession()->responseContains($table_header . '</th>'); @@ -688,7 +683,7 @@ public function testHiddenFields() { 'field_name' => $field_name, 'bundle' => $this->contentType, 'entity_type' => 'node', - 'label' => t('Hidden field'), + 'label' => 'Hidden field', ]; FieldConfig::create($field)->save(); \Drupal::service('entity_display.repository') diff --git a/core/modules/field_ui/tests/src/FunctionalJavascript/ManageDisplayTest.php b/core/modules/field_ui/tests/src/FunctionalJavascript/ManageDisplayTest.php index dbd1b0881698..c0ee1aff261e 100644 --- a/core/modules/field_ui/tests/src/FunctionalJavascript/ManageDisplayTest.php +++ b/core/modules/field_ui/tests/src/FunctionalJavascript/ManageDisplayTest.php @@ -454,7 +454,7 @@ public function fieldUIAddNewField($bundle_path, $field_name, $label = NULL, $fi $field_field_name->setValue($field_name); $assert_session->assertWaitOnAjaxRequest(); - $page->findButton(t('Save and continue'))->click(); + $page->findButton('Save and continue')->click(); $assert_session->pageTextContains("These settings apply to the $label field everywhere it is used."); $breadcrumb_link = $page->findLink($label); diff --git a/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php b/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php index 9312e7a27181..84ad60cd3c0b 100644 --- a/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php +++ b/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php @@ -629,7 +629,7 @@ public function testComponentDependencies() { $this->assertNull($form_display->getComponent($field_name)); $this->assertTrue($form_display->get('hidden')[$field_name]); // The correct warning message has been logged. - $arguments = ['@display' => (string) t('Entity form display'), '@id' => $form_display->id(), '@name' => $field_name]; + $arguments = ['@display' => 'Entity form display', '@id' => $form_display->id(), '@name' => $field_name]; $variables = Database::getConnection()->select('watchdog', 'w') ->fields('w', ['variables']) ->condition('type', 'system') diff --git a/core/modules/file/tests/src/Functional/FilePrivateTest.php b/core/modules/file/tests/src/Functional/FilePrivateTest.php index 8d82b2fb34bb..c1f4b3d2367d 100644 --- a/core/modules/file/tests/src/Functional/FilePrivateTest.php +++ b/core/modules/file/tests/src/Functional/FilePrivateTest.php @@ -90,7 +90,7 @@ public function testPrivateFile() { // Can't use submitForm() to set hidden fields. $this->drupalGet('node/' . $new_node->id() . '/edit'); $this->getSession()->getPage()->find('css', 'input[name="' . $field_name . '[0][fids]"]')->setValue($node_file->id()); - $this->getSession()->getPage()->pressButton(t('Save')); + $this->getSession()->getPage()->pressButton('Save'); $this->assertSession()->addressEquals('node/' . $new_node->id()); // Make sure the submitted hidden file field is empty. $new_node = \Drupal::entityTypeManager()->getStorage('node')->loadUnchanged($new_node->id()); @@ -103,7 +103,7 @@ public function testPrivateFile() { $this->drupalGet('node/add/' . $type_name); $this->getSession()->getPage()->find('css', 'input[name="title[0][value]"]')->setValue($edit['title[0][value]']); $this->getSession()->getPage()->find('css', 'input[name="' . $field_name . '[0][fids]"]')->setValue($node_file->id()); - $this->getSession()->getPage()->pressButton(t('Save')); + $this->getSession()->getPage()->pressButton('Save'); $new_node = $this->drupalGetNodeByTitle($edit['title[0][value]']); $this->assertSession()->addressEquals('node/' . $new_node->id()); // Make sure the submitted hidden file field is empty. diff --git a/core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php b/core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php index 18c197746d66..20dfa742fdcd 100644 --- a/core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php +++ b/core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php @@ -76,7 +76,7 @@ public function testManagedFile() { $this->submitForm([], 'Save'); // Remove, then Submit. - $remove_button_title = $multiple ? t('Remove selected') : t('Remove'); + $remove_button_title = $multiple ? 'Remove selected' : 'Remove'; $this->drupalGet($path . '/' . $last_fid); if ($multiple) { $selected_checkbox = ($tree ? 'nested[file]' : 'file') . '[file_' . $last_fid . '][selected]'; diff --git a/core/modules/filter/tests/src/Functional/FilterHtmlImageSecureTest.php b/core/modules/filter/tests/src/Functional/FilterHtmlImageSecureTest.php index 25d101977b99..3d5e5ee756a0 100644 --- a/core/modules/filter/tests/src/Functional/FilterHtmlImageSecureTest.php +++ b/core/modules/filter/tests/src/Functional/FilterHtmlImageSecureTest.php @@ -94,8 +94,6 @@ public function testImageSource() { $druplicon = 'core/misc/druplicon.png'; $red_x_image = base_path() . 'core/misc/icons/e32700/error.svg'; - $alt_text = t('Image removed.'); - $title_text = t('This image has been removed. For security reasons, only images from the local domain are allowed.'); // Put a test image in the files directory. $test_images = $this->getTestFiles('image'); @@ -152,8 +150,8 @@ public function testImageSource() { $found = TRUE; if ($converted == $red_x_image) { $this->assertEquals($red_x_image, $element->getAttribute('src')); - $this->assertEquals($alt_text, $element->getAttribute('alt')); - $this->assertEquals($title_text, $element->getAttribute('title')); + $this->assertEquals('Image removed.', $element->getAttribute('alt')); + $this->assertEquals('This image has been removed. For security reasons, only images from the local domain are allowed.', $element->getAttribute('title')); $this->assertEquals('16', $element->getAttribute('height')); $this->assertEquals('16', $element->getAttribute('width')); } diff --git a/core/modules/forum/tests/src/Functional/ForumTest.php b/core/modules/forum/tests/src/Functional/ForumTest.php index 50d5a302c137..4d1e0767eacb 100644 --- a/core/modules/forum/tests/src/Functional/ForumTest.php +++ b/core/modules/forum/tests/src/Functional/ForumTest.php @@ -584,14 +584,13 @@ public function createForumTopic($forum, $container = FALSE) { $this->drupalGet('node/add/forum', ['query' => ['forum_id' => $tid]]); $this->submitForm($edit, 'Save'); - $type = t('Forum topic'); if ($container) { - $this->assertSession()->pageTextNotContains("$type $title has been created."); + $this->assertSession()->pageTextNotContains("Forum topic $title has been created."); $this->assertSession()->pageTextContains("The item {$forum['name']} is a forum container, not a forum."); return; } else { - $this->assertSession()->pageTextContains($type . ' ' . $title . ' has been created.'); + $this->assertSession()->pageTextContains("Forum topic $title has been created."); $this->assertSession()->pageTextNotContains("The item {$forum['name']} is a forum container, not a forum."); // Verify that the creation message contains a link to a node. @@ -644,8 +643,8 @@ private function verifyForums(EntityInterface $node, $admin, $response = 200) { $this->assertSession()->statusCodeEquals(200); $this->assertSession()->titleEquals($node->label() . ' | Drupal'); $breadcrumb_build = [ - Link::createFromRoute(t('Home'), '<front>'), - Link::createFromRoute(t('Forums'), 'forum.index'), + Link::createFromRoute('Home', '<front>'), + Link::createFromRoute('Forums', 'forum.index'), Link::createFromRoute($this->forumContainer['name'], 'forum.page', ['taxonomy_term' => $this->forumContainer['tid']]), Link::createFromRoute($this->forum['name'], 'forum.page', ['taxonomy_term' => $this->forum['tid']]), ]; @@ -708,8 +707,8 @@ private function verifyForumView($forum, $parent = NULL) { $this->assertSession()->titleEquals($forum['name'] . ' | Drupal'); $breadcrumb_build = [ - Link::createFromRoute(t('Home'), '<front>'), - Link::createFromRoute(t('Forums'), 'forum.index'), + Link::createFromRoute('Home', '<front>'), + Link::createFromRoute('Forums', 'forum.index'), ]; if (isset($parent)) { $breadcrumb_build[] = Link::createFromRoute($parent['name'], 'forum.page', ['taxonomy_term' => $parent['tid']]); diff --git a/core/modules/forum/tests/src/Functional/ForumUninstallTest.php b/core/modules/forum/tests/src/Functional/ForumUninstallTest.php index 440d3b9f94a8..30ea8c1fd07a 100644 --- a/core/modules/forum/tests/src/Functional/ForumUninstallTest.php +++ b/core/modules/forum/tests/src/Functional/ForumUninstallTest.php @@ -45,7 +45,7 @@ public function testForumUninstallWithField() { // Create a taxonomy term. $term = Term::create([ - 'name' => t('A term'), + 'name' => 'A term', 'langcode' => \Drupal::languageManager()->getDefaultLanguage()->getId(), 'description' => '', 'parent' => [0], diff --git a/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php b/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php index 4e3d31cfa749..551c77aa0eba 100644 --- a/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php +++ b/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php @@ -437,7 +437,7 @@ public function testImageFieldDefaultImage() { // Can't use fillField cause Mink can't fill hidden fields. $this->drupalGet("admin/structure/types/manage/article/fields/node.article.$field_name/storage"); $this->getSession()->getPage()->find('css', 'input[name="settings[default_image][uuid][fids]"]')->setValue(0); - $this->getSession()->getPage()->pressButton(t('Save field settings')); + $this->getSession()->getPage()->pressButton('Save field settings'); // Clear field definition cache so the new default image is detected. \Drupal::service('entity_field.manager')->clearCachedFieldDefinitions(); diff --git a/core/modules/image/tests/src/FunctionalJavascript/ImageFieldValidateTest.php b/core/modules/image/tests/src/FunctionalJavascript/ImageFieldValidateTest.php index 75d1b058eea0..b0a198312f8d 100644 --- a/core/modules/image/tests/src/FunctionalJavascript/ImageFieldValidateTest.php +++ b/core/modules/image/tests/src/FunctionalJavascript/ImageFieldValidateTest.php @@ -56,7 +56,7 @@ public function testFriendlyAjaxValidation() { 'entity_type' => 'node', 'bundle' => 'article', 'field_name' => 'field_dummy_select', - 'label' => t('Dummy select'), + 'label' => 'Dummy select', ])->save(); \Drupal::entityTypeManager() diff --git a/core/modules/jsonapi/tests/src/Functional/ActionTest.php b/core/modules/jsonapi/tests/src/Functional/ActionTest.php index 4fcc0e9e2bb7..9450f274ec66 100644 --- a/core/modules/jsonapi/tests/src/Functional/ActionTest.php +++ b/core/modules/jsonapi/tests/src/Functional/ActionTest.php @@ -54,7 +54,7 @@ protected function createEntity() { $action = Action::create([ 'id' => 'user_add_role_action.' . RoleInterface::ANONYMOUS_ID, 'type' => 'user', - 'label' => t('Add the anonymous role to the selected users'), + 'label' => 'Add the anonymous role to the selected users', 'configuration' => [ 'rid' => RoleInterface::ANONYMOUS_ID, ], diff --git a/core/modules/jsonapi/tests/src/Functional/ShortcutTest.php b/core/modules/jsonapi/tests/src/Functional/ShortcutTest.php index 6267a483364b..c03a78ab651b 100644 --- a/core/modules/jsonapi/tests/src/Functional/ShortcutTest.php +++ b/core/modules/jsonapi/tests/src/Functional/ShortcutTest.php @@ -65,7 +65,7 @@ protected function setUpAuthorization($method) { protected function createEntity() { $shortcut = Shortcut::create([ 'shortcut_set' => 'default', - 'title' => t('Comments'), + 'title' => 'Comments', 'weight' => -20, 'link' => [ 'uri' => 'internal:/user/logout', diff --git a/core/modules/language/tests/src/Functional/ConfigurableLanguageManagerTest.php b/core/modules/language/tests/src/Functional/ConfigurableLanguageManagerTest.php index 6a8dd1571906..d6b71e3a36a5 100644 --- a/core/modules/language/tests/src/Functional/ConfigurableLanguageManagerTest.php +++ b/core/modules/language/tests/src/Functional/ConfigurableLanguageManagerTest.php @@ -53,7 +53,7 @@ protected function setUp(): void { // Create a page node type and make it translatable. NodeType::create([ 'type' => 'page', - 'name' => t('Page'), + 'name' => 'Page', ])->save(); $config = ContentLanguageSettings::loadByEntityTypeBundle('node', 'page'); diff --git a/core/modules/language/tests/src/Functional/LanguageBreadcrumbTest.php b/core/modules/language/tests/src/Functional/LanguageBreadcrumbTest.php index 64028cf28c95..a01d65dba157 100644 --- a/core/modules/language/tests/src/Functional/LanguageBreadcrumbTest.php +++ b/core/modules/language/tests/src/Functional/LanguageBreadcrumbTest.php @@ -40,7 +40,7 @@ protected function setUp(): void { public function testBreadCrumbs() { // Prepare common base breadcrumb elements. $home = ['' => 'Home']; - $admin = $home + ['admin' => t('Administration')]; + $admin = $home + ['admin' => 'Administration']; $page = $this->getSession()->getPage(); diff --git a/core/modules/locale/tests/src/Functional/LocaleUpdateInterfaceTest.php b/core/modules/locale/tests/src/Functional/LocaleUpdateInterfaceTest.php index bf19edd0961e..c1a561550d8a 100644 --- a/core/modules/locale/tests/src/Functional/LocaleUpdateInterfaceTest.php +++ b/core/modules/locale/tests/src/Functional/LocaleUpdateInterfaceTest.php @@ -3,7 +3,6 @@ namespace Drupal\Tests\locale\Functional; use Drupal\Core\Url; -use Drupal\Component\Render\FormattableMarkup; /** * Tests for the user interface of project interface translations. @@ -97,12 +96,7 @@ public function testInterface() { $this->assertSession()->linkByHrefExists(Url::fromRoute('locale.translate_status')->toString()); $this->drupalGet('admin/reports/translations'); $this->assertSession()->pageTextContains('Missing translations for one project'); - $release_details = new FormattableMarkup('@module (@version). @info', [ - '@module' => 'Locale test translate', - '@version' => '1.3-dev', - '@info' => t('File not found at %local_path', ['%local_path' => 'core/modules/locale/tests/test.de.po']), - ]); - $this->assertSession()->responseContains($release_details->__toString()); + $this->assertSession()->pageTextContains('Locale test translate (1.3-dev). File not found at core/modules/locale/tests/test.de.po'); // Override Drupal core translation status as 'no translations found'. $status = locale_translation_get_status(); diff --git a/core/modules/media/tests/src/Kernel/MediaSourceTest.php b/core/modules/media/tests/src/Kernel/MediaSourceTest.php index cf6a75cae70e..07e764544848 100644 --- a/core/modules/media/tests/src/Kernel/MediaSourceTest.php +++ b/core/modules/media/tests/src/Kernel/MediaSourceTest.php @@ -582,7 +582,7 @@ protected function createMediaTypeViaForm($source_plugin_id, $field_name) { $form_state->setValues([ 'label' => 'Test type', 'id' => $source_plugin_id, - 'op' => t('Save'), + 'op' => 'Save', ]); /** @var \Drupal\Core\Entity\EntityFieldManagerInterface $field_manager */ diff --git a/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentDeleteFormTest.php b/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentDeleteFormTest.php index 87e6c684f2f1..cd7b6aaaeb5f 100644 --- a/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentDeleteFormTest.php +++ b/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentDeleteFormTest.php @@ -41,7 +41,7 @@ public function testMenuLinkContentDeleteForm() { // Add new menu item. $this->drupalGet('admin/structure/menu/manage/admin/add'); $this->submitForm([ - 'title[0][value]' => t('Front page'), + 'title[0][value]' => 'Front page', 'link[0][uri]' => '<front>', ], 'Save'); $this->assertSession()->pageTextContains('The menu link has been saved.'); diff --git a/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentFormTest.php b/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentFormTest.php index b57bc58d55c7..d4e47cc3a70a 100644 --- a/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentFormTest.php +++ b/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentFormTest.php @@ -89,7 +89,7 @@ public function testMenuLinkContentForm() { $this->assertSession()->pageTextContains('The location this menu link points to.'); $this->submitForm([ - 'title[0][value]' => t('Front page'), + 'title[0][value]' => 'Front page', 'link[0][uri]' => '<front>', ], 'Save'); $this->assertSession()->pageTextContains('The menu link has been saved.'); @@ -101,7 +101,7 @@ public function testMenuLinkContentForm() { public function testMenuLinkContentFormValidation() { $this->drupalGet('admin/structure/menu/manage/admin/add'); $this->submitForm([ - 'title[0][value]' => t('Test page'), + 'title[0][value]' => 'Test page', 'link[0][uri]' => '<test>', ], 'Save'); $this->assertSession()->pageTextContains('Manually entered paths should start with one of the following characters: / ? #'); diff --git a/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php index 02d8d038f3c4..2491150a6f5a 100644 --- a/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php +++ b/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php @@ -74,13 +74,13 @@ public function testMenuUiWithPendingRevisions() { // Publish the node with no changes. $this->drupalGet('node/' . $node->id() . '/edit'); $this->submitForm([], 'Save'); - $this->assertSession()->responseContains(t('Page %label has been updated.', ['%label' => $node->toLink($node->label())->toString()])); + $this->assertSession()->pageTextContains("Page {$node->label()} has been updated."); // Create a pending revision with no changes. $edit = ['moderation_state[0][state]' => 'draft']; $this->drupalGet('node/' . $node->id() . '/edit'); $this->submitForm($edit, 'Save'); - $this->assertSession()->responseContains(t('Page %label has been updated.', ['%label' => $node->toLink($node->label())->toString()])); + $this->assertSession()->pageTextContains("Page {$node->label()} has been updated."); // Add a menu link and save a new default (published) revision. $edit = [ @@ -138,7 +138,7 @@ public function testMenuUiWithPendingRevisions() { ]; $this->drupalGet('node/' . $node->id() . '/edit'); $this->submitForm($edit, 'Save'); - $this->assertSession()->responseContains(t('Page %label has been updated.', ['%label' => $node->toLink($node->label())->toString()])); + $this->assertSession()->pageTextContains("Page {$node->label()} has been updated."); // Ensure the content was not immediately published. $this->assertSession()->linkExists('Test menu link'); @@ -164,7 +164,7 @@ public function testMenuUiWithPendingRevisions() { $edit = ['moderation_state[0][state]' => 'published']; $this->drupalGet('node/' . $node->id() . '/edit'); $this->submitForm($edit, 'Save'); - $this->assertSession()->responseContains(t('Page %label has been updated.', ['%label' => $node->toLink($node->label())->toString()])); + $this->assertSession()->pageTextContains("Page {$node->label()} has been updated."); // Add a menu link and save and create a new non-default (draft) revision // and ensure it's not immediately published. @@ -175,7 +175,7 @@ public function testMenuUiWithPendingRevisions() { ]; $this->drupalGet('node/' . $node->id() . '/edit'); $this->submitForm($edit, 'Save'); - $this->assertSession()->responseContains(t('Page %label has been updated.', ['%label' => $node->toLink($node->label())->toString()])); + $this->assertSession()->pageTextContains("Page {$node->label()} has been updated."); $this->assertSession()->linkNotExists('Second test menu link'); // Publish the content and ensure the new menu link shows up. @@ -184,7 +184,7 @@ public function testMenuUiWithPendingRevisions() { ]; $this->drupalGet('node/' . $node->id() . '/edit'); $this->submitForm($edit, 'Save'); - $this->assertSession()->responseContains(t('Page %label has been updated.', ['%label' => $node->toLink($node->label())->toString()])); + $this->assertSession()->pageTextContains("Page {$node->label()} has been updated."); $this->assertSession()->linkExists('Second test menu link'); } diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/d6/Drupal6SqlBaseTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/d6/Drupal6SqlBaseTest.php index 4da757565387..87731aadb09d 100644 --- a/core/modules/migrate_drupal/tests/src/Unit/source/d6/Drupal6SqlBaseTest.php +++ b/core/modules/migrate_drupal/tests/src/Unit/source/d6/Drupal6SqlBaseTest.php @@ -146,16 +146,16 @@ class TestDrupal6SqlBase extends DrupalSqlBase { */ public function fields() { return [ - 'filename' => t('The path of the primary file for this item.'), - 'name' => t('The name of the item; e.g. node.'), - 'type' => t('The type of the item, either module, theme, or theme_engine.'), - 'owner' => t("A theme's 'parent'. Can be either a theme or an engine."), - 'status' => t('Boolean indicating whether or not this item is enabled.'), - 'throttle' => t('Boolean indicating whether this item is disabled when the throttle.module disables throttleable items.'), - 'bootstrap' => t("Boolean indicating whether this module is loaded during Drupal's early bootstrapping phase (e.g. even before the page cache is consulted)."), - 'schema_version' => t("The module's database schema version number."), - 'weight' => t("The order in which this module's hooks should be invoked."), - 'info' => t("A serialized array containing information from the module's .info file."), + 'filename' => $this->t('The path of the primary file for this item.'), + 'name' => $this->t('The name of the item; e.g. node.'), + 'type' => $this->t('The type of the item, either module, theme, or theme_engine.'), + 'owner' => $this->t("A theme's 'parent'. Can be either a theme or an engine."), + 'status' => $this->t('Boolean indicating whether or not this item is enabled.'), + 'throttle' => $this->t('Boolean indicating whether this item is disabled when the throttle.module disables throttleable items.'), + 'bootstrap' => $this->t("Boolean indicating whether this module is loaded during Drupal's early bootstrapping phase (e.g. even before the page cache is consulted)."), + 'schema_version' => $this->t("The module's database schema version number."), + 'weight' => $this->t("The order in which this module's hooks should be invoked."), + 'info' => $this->t("A serialized array containing information from the module's .info file."), ]; } diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/SourceProviderTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/SourceProviderTest.php index 9fa261d2a31c..e6768723eb8a 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/SourceProviderTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/SourceProviderTest.php @@ -32,8 +32,8 @@ public function testSourceProvider($path_to_database) { $this->submitCredentialForm(); // Ensure we get errors about missing modules. - $session->pageTextContains(t('Resolve all issues below to continue the upgrade.')); - $session->pageTextContains(t('The no_source_module plugin must define the source_module property.')); + $session->pageTextContains('Resolve all issues below to continue the upgrade.'); + $session->pageTextContains('The no_source_module plugin must define the source_module property.'); // Uninstall the module causing the missing module error messages. $this->container->get('module_installer') @@ -45,10 +45,10 @@ public function testSourceProvider($path_to_database) { $this->submitForm($this->edits, 'Review upgrade'); // Ensure there are no errors about missing modules from the test module. - $session->pageTextNotContains(t('Source module not found for migration_provider_no_annotation.')); - $session->pageTextNotContains(t('Source module not found for migration_provider_test.')); + $session->pageTextNotContains('Source module not found for migration_provider_no_annotation.'); + $session->pageTextNotContains('Source module not found for migration_provider_test.'); // Ensure there are no errors about any other missing migration providers. - $session->pageTextNotContains(t('module not found')); + $session->pageTextNotContains('module not found'); } /** diff --git a/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php b/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php index 7b6889d9c346..a20379f16822 100644 --- a/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php +++ b/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php @@ -108,7 +108,7 @@ public function testNodeAccessBasic() { $this->drupalLogin($this->webUser); foreach ([0 => 'Public', 1 => 'Private'] as $is_private => $type) { $edit = [ - 'title[0][value]' => t('@private_public Article created by @user', ['@private_public' => $type, '@user' => $this->webUser->getAccountName()]), + 'title[0][value]' => "$type Article created by " . $this->webUser->getAccountName(), ]; if ($is_private) { $edit['private[0][value]'] = TRUE; diff --git a/core/modules/node/tests/src/Functional/NodeAccessPagerTest.php b/core/modules/node/tests/src/Functional/NodeAccessPagerTest.php index c47c35dda157..9000a1f6617b 100644 --- a/core/modules/node/tests/src/Functional/NodeAccessPagerTest.php +++ b/core/modules/node/tests/src/Functional/NodeAccessPagerTest.php @@ -32,7 +32,7 @@ protected function setUp(): void { parent::setUp(); node_access_rebuild(); - $this->drupalCreateContentType(['type' => 'page', 'name' => t('Basic page')]); + $this->drupalCreateContentType(['type' => 'page', 'name' => 'Basic page']); $this->addDefaultCommentField('node', 'page'); $this->webUser = $this->drupalCreateUser([ 'access content', diff --git a/core/modules/node/tests/src/Functional/NodeEntityViewModeAlterTest.php b/core/modules/node/tests/src/Functional/NodeEntityViewModeAlterTest.php index e1357d705bfa..25a2758717b2 100644 --- a/core/modules/node/tests/src/Functional/NodeEntityViewModeAlterTest.php +++ b/core/modules/node/tests/src/Functional/NodeEntityViewModeAlterTest.php @@ -37,8 +37,8 @@ public function testNodeViewModeChange() { // Create a node. $edit = []; $edit['title[0][value]'] = $this->randomMachineName(8); - $edit['body[0][value]'] = t('Data that should appear only in the body for the node.'); - $edit['body[0][summary]'] = t('Extra data that should appear only in the teaser for the node.'); + $edit['body[0][value]'] = 'Data that should appear only in the body for the node.'; + $edit['body[0][summary]'] = 'Extra data that should appear only in the teaser for the node.'; $this->drupalGet('node/add/page'); $this->submitForm($edit, 'Save'); diff --git a/core/modules/node/tests/src/Functional/NodeRSSContentTest.php b/core/modules/node/tests/src/Functional/NodeRSSContentTest.php index 1fd49d3eb67b..a7a1ad4e88fc 100644 --- a/core/modules/node/tests/src/Functional/NodeRSSContentTest.php +++ b/core/modules/node/tests/src/Functional/NodeRSSContentTest.php @@ -60,7 +60,7 @@ public function testNodeRSSContent() { $this->assertSession()->responseNotContains($non_rss_content); // Check that extra RSS elements and namespaces are added to RSS feed. - $test_element = '<testElement>' . t('Value of testElement RSS element for node @nid.', ['@nid' => $node->id()]) . '</testElement>'; + $test_element = "<testElement>Value of testElement RSS element for node {$node->id()}.</testElement>"; $test_ns = 'xmlns:drupaltest="http://example.com/test-namespace"'; $this->assertSession()->responseContains($test_element); $this->assertSession()->responseContains($test_ns); diff --git a/core/modules/node/tests/src/Functional/NodeTranslationUITest.php b/core/modules/node/tests/src/Functional/NodeTranslationUITest.php index 624c70906c83..8934c958d920 100644 --- a/core/modules/node/tests/src/Functional/NodeTranslationUITest.php +++ b/core/modules/node/tests/src/Functional/NodeTranslationUITest.php @@ -456,7 +456,7 @@ protected function getFormSubmitSuffix(EntityInterface $entity, $langcode) { if (!$entity->isNew() && $entity->isTranslatable()) { $translations = $entity->getTranslationLanguages(); if ((count($translations) > 1 || !isset($translations[$langcode])) && ($field = $entity->getFieldDefinition('status'))) { - return ' ' . ($field->isTranslatable() ? t('(this translation)') : t('(all translations)')); + return ' ' . ($field->isTranslatable() ? '(this translation)' : '(all translations)'); } } return ''; diff --git a/core/modules/node/tests/src/Functional/Views/FilterNodeAccessTest.php b/core/modules/node/tests/src/Functional/Views/FilterNodeAccessTest.php index a7b8b7f37854..30e75d63cb9a 100644 --- a/core/modules/node/tests/src/Functional/Views/FilterNodeAccessTest.php +++ b/core/modules/node/tests/src/Functional/Views/FilterNodeAccessTest.php @@ -68,7 +68,7 @@ protected function setUp($import_test_views = TRUE): void { 'format' => filter_default_format(), ], ], - 'title' => t('@private_public Article created by @user', ['@private_public' => $type, '@user' => $web_user->getAccountName()]), + 'title' => "$type Article created by " . $web_user->getAccountName(), 'type' => 'article', 'uid' => $web_user->id(), 'private' => (bool) $is_private, diff --git a/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php b/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php index 1a5cfb93498b..821727d1993a 100644 --- a/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php +++ b/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php @@ -28,7 +28,7 @@ protected function setUp(): void { // Create a Tags vocabulary for the Article node type. $vocabulary = Vocabulary::create([ - 'name' => t('Tags'), + 'name' => 'Tags', 'vid' => 'tags', ]); $vocabulary->save(); diff --git a/core/modules/quickedit/tests/src/Functional/QuickEditCustomPipelineTest.php b/core/modules/quickedit/tests/src/Functional/QuickEditCustomPipelineTest.php index ab0b75c7ae66..e4cc514c241c 100644 --- a/core/modules/quickedit/tests/src/Functional/QuickEditCustomPipelineTest.php +++ b/core/modules/quickedit/tests/src/Functional/QuickEditCustomPipelineTest.php @@ -77,7 +77,7 @@ public function testCustomPipeline() { 'body[0][summary]' => '', 'body[0][value]' => '<p>Fine thanks.</p>', 'body[0][format]' => 'filtered_html', - 'op' => t('Save'), + 'op' => 'Save', ]; // Assume there is another field on this page, which doesn't use a custom // render pipeline, but the default one, and it uses the "full" view mode. diff --git a/core/modules/quickedit/tests/src/Functional/QuickEditEndPointAccessTest.php b/core/modules/quickedit/tests/src/Functional/QuickEditEndPointAccessTest.php index fcf9de0c0d41..1cb90adf40db 100644 --- a/core/modules/quickedit/tests/src/Functional/QuickEditEndPointAccessTest.php +++ b/core/modules/quickedit/tests/src/Functional/QuickEditEndPointAccessTest.php @@ -61,7 +61,7 @@ public function testEndPointAccess() { $edit['body[0][summary]'] = ''; $edit['body[0][value]'] = '<p>Malicious content.</p>'; $edit['body[0][format]'] = 'filtered_html'; - $edit['op'] = t('Save'); + $edit['op'] = 'Save'; $this->assertAccessIsBlocked($url, $edit); $post = ['nocssjs' => 'true']; diff --git a/core/modules/quickedit/tests/src/Functional/QuickEditImageControllerTest.php b/core/modules/quickedit/tests/src/Functional/QuickEditImageControllerTest.php index 7642f6fcf0d0..a1e3932c6d5c 100644 --- a/core/modules/quickedit/tests/src/Functional/QuickEditImageControllerTest.php +++ b/core/modules/quickedit/tests/src/Functional/QuickEditImageControllerTest.php @@ -83,7 +83,7 @@ public function testAccess() { // Create a test Node. $node = $this->drupalCreateNode([ 'type' => 'article', - 'title' => t('Test Node'), + 'title' => 'Test Node', ]); $this->drupalGet('quickedit/image/info/node/' . $node->id() . '/' . $this->fieldName . '/' . $node->language()->getId() . '/default'); $this->assertSession()->statusCodeEquals(403); @@ -101,7 +101,7 @@ public function testFieldInfo() { // Create a test Node. $node = $this->drupalCreateNode([ 'type' => 'article', - 'title' => t('Test Node'), + 'title' => 'Test Node', ]); $json = $this->drupalGet('quickedit/image/info/node/' . $node->id() . '/' . $this->fieldName . '/' . $node->language()->getId() . '/default', ['query' => ['_format' => 'json']]); $info = Json::decode($json); @@ -118,7 +118,7 @@ public function testValidImageUpload() { // Create a test Node. $node = $this->drupalCreateNode([ 'type' => 'article', - 'title' => t('Test Node'), + 'title' => 'Test Node', ]); // We want a test image that is a valid size. @@ -145,7 +145,7 @@ public function testInvalidUpload() { // Create a test Node. $node = $this->drupalCreateNode([ 'type' => 'article', - 'title' => t('Test Node'), + 'title' => 'Test Node', ]); // We want a test image that will fail validation. diff --git a/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderQuickEditTest.php b/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderQuickEditTest.php index 2d48df5b66c2..daa5a192c4d9 100644 --- a/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderQuickEditTest.php +++ b/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderQuickEditTest.php @@ -70,7 +70,7 @@ protected function setUp(): void { $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']); $this->article = $this->drupalCreateNode([ 'type' => 'article', - 'title' => t('My Test Node'), + 'title' => 'My Test Node', 'body' => [ 'value' => 'Hello Layout Builder!', 'format' => 'plain_text', diff --git a/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditFileTest.php b/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditFileTest.php index f6a12e36073c..53fad46e43be 100644 --- a/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditFileTest.php +++ b/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditFileTest.php @@ -70,7 +70,7 @@ public function testRemove() { // Create test node. $node = $this->drupalCreateNode([ 'type' => 'article', - 'title' => t('My Test Node'), + 'title' => 'My Test Node', 'field_file' => [ 'target_id' => $file->id(), ], diff --git a/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditImageTest.php b/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditImageTest.php index 198ddf52dda4..7ed590965248 100644 --- a/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditImageTest.php +++ b/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditImageTest.php @@ -104,7 +104,7 @@ public function testImageInPlaceEditor($admin_permission = FALSE) { $image = $image_factory->get($valid_images[0]->uri); $node = $this->drupalCreateNode([ 'type' => 'article', - 'title' => t('Test Node'), + 'title' => 'Test Node', $field_name => [ 'target_id' => $file->id(), 'alt' => 'Hello world', diff --git a/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditIntegrationTest.php b/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditIntegrationTest.php index 3669dfa9256e..2ee31915478c 100644 --- a/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditIntegrationTest.php +++ b/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditIntegrationTest.php @@ -127,7 +127,7 @@ public function testArticleNode() { $node = $this->drupalCreateNode([ 'type' => 'article', - 'title' => t('My Test Node'), + 'title' => 'My Test Node', 'body' => [ 'value' => '<p>Hello world!</p><p>I do not know what to say…</p><p>I wish I were eloquent.</p>', 'format' => 'some_format', diff --git a/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditLoadingTest.php b/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditLoadingTest.php index 86e95b75e67d..18e59f1b46e7 100644 --- a/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditLoadingTest.php +++ b/core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditLoadingTest.php @@ -354,7 +354,7 @@ public function testImageField() { FieldConfig::create([ 'field_name' => 'field_image', 'field_type' => 'image', - 'label' => t('Image'), + 'label' => 'Image', 'entity_type' => 'node', 'bundle' => 'article', ])->save(); diff --git a/core/modules/shortcut/tests/src/Functional/ShortcutCacheTagsTest.php b/core/modules/shortcut/tests/src/Functional/ShortcutCacheTagsTest.php index b6e924bd3edf..bcafe2c4b23d 100644 --- a/core/modules/shortcut/tests/src/Functional/ShortcutCacheTagsTest.php +++ b/core/modules/shortcut/tests/src/Functional/ShortcutCacheTagsTest.php @@ -54,7 +54,7 @@ protected function createEntity() { // Create a "Llama" shortcut. $shortcut = Shortcut::create([ 'shortcut_set' => 'default', - 'title' => t('Llama'), + 'title' => 'Llama', 'weight' => 0, 'link' => [['uri' => 'internal:/admin']], ]); diff --git a/core/modules/statistics/tests/src/Functional/StatisticsTokenReplaceTest.php b/core/modules/statistics/tests/src/Functional/StatisticsTokenReplaceTest.php index 160650bc6144..879f16cc90bc 100644 --- a/core/modules/statistics/tests/src/Functional/StatisticsTokenReplaceTest.php +++ b/core/modules/statistics/tests/src/Functional/StatisticsTokenReplaceTest.php @@ -36,7 +36,7 @@ public function testStatisticsTokenReplacement() { $tests = []; $tests['[node:total-count]'] = 0; $tests['[node:day-count]'] = 0; - $tests['[node:last-view]'] = t('never'); + $tests['[node:last-view]'] = 'never'; $tests['[node:last-view:short]'] = $date_formatter->format($request_time, 'short'); foreach ($tests as $input => $expected) { diff --git a/core/modules/system/tests/src/Functional/Database/SelectTableSortDefaultTest.php b/core/modules/system/tests/src/Functional/Database/SelectTableSortDefaultTest.php index f38ea7a2fca1..6d20a2e4cb12 100644 --- a/core/modules/system/tests/src/Functional/Database/SelectTableSortDefaultTest.php +++ b/core/modules/system/tests/src/Functional/Database/SelectTableSortDefaultTest.php @@ -24,10 +24,10 @@ class SelectTableSortDefaultTest extends DatabaseTestBase { */ public function testTableSortQuery() { $sorts = [ - ['field' => t('Task ID'), 'sort' => 'desc', 'first' => 'perform at superbowl', 'last' => 'eat'], - ['field' => t('Task ID'), 'sort' => 'asc', 'first' => 'eat', 'last' => 'perform at superbowl'], - ['field' => t('Task'), 'sort' => 'asc', 'first' => 'code', 'last' => 'sleep'], - ['field' => t('Task'), 'sort' => 'desc', 'first' => 'sleep', 'last' => 'code'], + ['field' => 'Task ID', 'sort' => 'desc', 'first' => 'perform at superbowl', 'last' => 'eat'], + ['field' => 'Task ID', 'sort' => 'asc', 'first' => 'eat', 'last' => 'perform at superbowl'], + ['field' => 'Task', 'sort' => 'asc', 'first' => 'code', 'last' => 'sleep'], + ['field' => 'Task', 'sort' => 'desc', 'first' => 'sleep', 'last' => 'code'], // more elements here ]; @@ -52,10 +52,10 @@ public function testTableSortQuery() { */ public function testTableSortQueryFirst() { $sorts = [ - ['field' => t('Task ID'), 'sort' => 'desc', 'first' => 'perform at superbowl', 'last' => 'eat'], - ['field' => t('Task ID'), 'sort' => 'asc', 'first' => 'eat', 'last' => 'perform at superbowl'], - ['field' => t('Task'), 'sort' => 'asc', 'first' => 'code', 'last' => 'sleep'], - ['field' => t('Task'), 'sort' => 'desc', 'first' => 'sleep', 'last' => 'code'], + ['field' => 'Task ID', 'sort' => 'desc', 'first' => 'perform at superbowl', 'last' => 'eat'], + ['field' => 'Task ID', 'sort' => 'asc', 'first' => 'eat', 'last' => 'perform at superbowl'], + ['field' => 'Task', 'sort' => 'asc', 'first' => 'code', 'last' => 'sleep'], + ['field' => 'Task', 'sort' => 'desc', 'first' => 'sleep', 'last' => 'code'], // more elements here ]; diff --git a/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php b/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php index 76be86fcac4a..f20a753b719d 100644 --- a/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php +++ b/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php @@ -216,7 +216,7 @@ private function formSubmitHelper($form, $edit) { $form_id = $this->randomMachineName(); $form_state = new FormState(); - $form['op'] = ['#type' => 'submit', '#value' => t('Submit')]; + $form['op'] = ['#type' => 'submit', '#value' => 'Submit']; // The form token CSRF protection should not interfere with this test, so we // bypass it by setting the token to FALSE. $form['#token'] = FALSE; diff --git a/core/modules/system/tests/src/Functional/Form/FormTest.php b/core/modules/system/tests/src/Functional/Form/FormTest.php index 47416c0dba35..860ff8dd0077 100644 --- a/core/modules/system/tests/src/Functional/Form/FormTest.php +++ b/core/modules/system/tests/src/Functional/Form/FormTest.php @@ -85,7 +85,7 @@ public function testRequiredFields() { $elements['textarea']['element'] = ['#title' => $this->randomMachineName(), '#type' => 'textarea']; $elements['textarea']['empty_values'] = $empty_strings; - $elements['radios']['element'] = ['#title' => $this->randomMachineName(), '#type' => 'radios', '#options' => ['' => t('None'), $this->randomMachineName(), $this->randomMachineName(), $this->randomMachineName()]]; + $elements['radios']['element'] = ['#title' => $this->randomMachineName(), '#type' => 'radios', '#options' => ['' => 'None', $this->randomMachineName(), $this->randomMachineName(), $this->randomMachineName()]]; $elements['radios']['empty_values'] = $empty_arrays; $elements['checkbox']['element'] = ['#title' => $this->randomMachineName(), '#type' => 'checkbox', '#required' => TRUE]; @@ -94,7 +94,7 @@ public function testRequiredFields() { $elements['checkboxes']['element'] = ['#title' => $this->randomMachineName(), '#type' => 'checkboxes', '#options' => [$this->randomMachineName(), $this->randomMachineName(), $this->randomMachineName()]]; $elements['checkboxes']['empty_values'] = $empty_arrays; - $elements['select']['element'] = ['#title' => $this->randomMachineName(), '#type' => 'select', '#options' => ['' => t('None'), $this->randomMachineName(), $this->randomMachineName(), $this->randomMachineName()]]; + $elements['select']['element'] = ['#title' => $this->randomMachineName(), '#type' => 'select', '#options' => ['' => 'None', $this->randomMachineName(), $this->randomMachineName(), $this->randomMachineName()]]; $elements['select']['empty_values'] = $empty_strings; $elements['file']['element'] = ['#title' => $this->randomMachineName(), '#type' => 'file']; @@ -109,7 +109,7 @@ public function testRequiredFields() { $form_id = $this->randomMachineName(); $form = []; $form_state = new FormState(); - $form['op'] = ['#type' => 'submit', '#value' => t('Submit')]; + $form['op'] = ['#type' => 'submit', '#value' => 'Submit']; $element = $data['element']['#title']; $form[$element] = $data['element']; $form[$element]['#required'] = $required; @@ -185,7 +185,7 @@ public function testRequiredCheckboxesRadio() { $expected[] = $form[$key]['#form_test_required_error']; } else { - $expected[] = t('@name field is required.', ['@name' => $form[$key]['#title']]); + $expected[] = $form[$key]['#title'] . ' field is required.'; } } diff --git a/core/modules/system/tests/src/Functional/Form/LanguageSelectElementTest.php b/core/modules/system/tests/src/Functional/Form/LanguageSelectElementTest.php index 02331c47c7ab..fa623992416d 100644 --- a/core/modules/system/tests/src/Functional/Form/LanguageSelectElementTest.php +++ b/core/modules/system/tests/src/Functional/Form/LanguageSelectElementTest.php @@ -58,7 +58,7 @@ public function testLanguageSelectElementOptions() { /** @var \Drupal\Core\Language\LanguageManagerInterface $language_manager */ $language_manager = $this->container->get('language_manager'); foreach ($language_manager->getLanguages($flags) as $langcode => $language) { - $options[$langcode] = $language->isLocked() ? t('- @name -', ['@name' => $language->getName()]) : $language->getName(); + $options[$langcode] = $language->isLocked() ? "- {$language->getName()} -" : $language->getName(); } $this->_testLanguageSelectElementOptions($id, $options); } diff --git a/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php b/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php index 849399fd230b..12461125711a 100644 --- a/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php +++ b/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php @@ -68,62 +68,62 @@ protected function setUp(): void { public function testBreadCrumbs() { // Prepare common base breadcrumb elements. $home = ['' => 'Home']; - $admin = $home + ['admin' => t('Administration')]; - $config = $admin + ['admin/config' => t('Configuration')]; + $admin = $home + ['admin' => 'Administration']; + $config = $admin + ['admin/config' => 'Configuration']; $type = 'article'; // Verify Taxonomy administration breadcrumbs. $trail = $admin + [ - 'admin/structure' => t('Structure'), + 'admin/structure' => 'Structure', ]; $this->assertBreadcrumb('admin/structure/taxonomy', $trail); $trail += [ - 'admin/structure/taxonomy' => t('Taxonomy'), + 'admin/structure/taxonomy' => 'Taxonomy', ]; $this->assertBreadcrumb('admin/structure/taxonomy/manage/tags', $trail); $trail += [ - 'admin/structure/taxonomy/manage/tags' => t('Edit Tags'), + 'admin/structure/taxonomy/manage/tags' => 'Edit Tags', ]; $this->assertBreadcrumb('admin/structure/taxonomy/manage/tags/overview', $trail); $this->assertBreadcrumb('admin/structure/taxonomy/manage/tags/add', $trail); // Verify Menu administration breadcrumbs. $trail = $admin + [ - 'admin/structure' => t('Structure'), + 'admin/structure' => 'Structure', ]; $this->assertBreadcrumb('admin/structure/menu', $trail); $trail += [ - 'admin/structure/menu' => t('Menus'), + 'admin/structure/menu' => 'Menus', ]; $this->assertBreadcrumb('admin/structure/menu/manage/tools', $trail); $trail += [ - 'admin/structure/menu/manage/tools' => t('Tools'), + 'admin/structure/menu/manage/tools' => 'Tools', ]; $this->assertBreadcrumb("admin/structure/menu/link/node.add_page/edit", $trail); $this->assertBreadcrumb('admin/structure/menu/manage/tools/add', $trail); // Verify Node administration breadcrumbs. $trail = $admin + [ - 'admin/structure' => t('Structure'), - 'admin/structure/types' => t('Content types'), + 'admin/structure' => 'Structure', + 'admin/structure/types' => 'Content types', ]; $this->assertBreadcrumb('admin/structure/types/add', $trail); $this->assertBreadcrumb("admin/structure/types/manage/$type", $trail); $trail += [ - "admin/structure/types/manage/$type" => t('Article'), + "admin/structure/types/manage/$type" => 'Article', ]; $this->assertBreadcrumb("admin/structure/types/manage/$type/fields", $trail); $this->assertBreadcrumb("admin/structure/types/manage/$type/display", $trail); $trail_teaser = $trail + [ - "admin/structure/types/manage/$type/display" => t('Manage display'), + "admin/structure/types/manage/$type/display" => 'Manage display', ]; $this->assertBreadcrumb("admin/structure/types/manage/$type/display/teaser", $trail_teaser); $this->assertBreadcrumb("admin/structure/types/manage/$type/delete", $trail); $trail += [ - "admin/structure/types/manage/$type/fields" => t('Manage fields'), + "admin/structure/types/manage/$type/fields" => 'Manage fields', ]; $this->assertBreadcrumb("admin/structure/types/manage/$type/fields/node.$type.body", $trail); @@ -132,12 +132,12 @@ public function testBreadCrumbs() { $format = reset($filter_formats); $format_id = $format->id(); $trail = $config + [ - 'admin/config/content' => t('Content authoring'), + 'admin/config/content' => 'Content authoring', ]; $this->assertBreadcrumb('admin/config/content/formats', $trail); $trail += [ - 'admin/config/content/formats' => t('Text formats and editors'), + 'admin/config/content/formats' => 'Text formats and editors', ]; $this->assertBreadcrumb('admin/config/content/formats/add', $trail); $this->assertBreadcrumb("admin/config/content/formats/manage/$format_id", $trail); @@ -379,7 +379,7 @@ public function testBreadCrumbs() { $this->assertSession()->statusCodeNotEquals(403); // Since the Reports page is accessible, that will show. - $trail += ['admin/reports' => t('Reports')]; + $trail += ['admin/reports' => 'Reports']; $this->assertBreadcrumb('admin/reports/dblog', $trail, 'Recent log messages'); $this->assertSession()->statusCodeNotEquals(403); @@ -395,7 +395,7 @@ public function testBreadCrumbs() { public function testAssertBreadcrumbTrait() { // Ensure the test trait works as expected using menu_test routes. $home = ['' => 'Home']; - $trail = $home + ['menu-test' => t('Menu test root')]; + $trail = $home + ['menu-test' => 'Menu test root']; // Test a passing assertion. $this->assertBreadcrumb('menu-test/breadcrumb1', $trail); diff --git a/core/modules/system/tests/src/Functional/System/SiteMaintenanceTest.php b/core/modules/system/tests/src/Functional/System/SiteMaintenanceTest.php index 1400fb0561ee..0503da1715ec 100644 --- a/core/modules/system/tests/src/Functional/System/SiteMaintenanceTest.php +++ b/core/modules/system/tests/src/Functional/System/SiteMaintenanceTest.php @@ -54,12 +54,12 @@ protected function setUp(): void { public function testSiteMaintenance() { // Verify that permission message is displayed. - $permission_handler = $this->container->get('user.permissions'); - $permissions = $permission_handler->getPermissions(); - $permission_label = $permissions['access site in maintenance mode']['title']; - $permission_message = t('Visitors will only see the maintenance mode message. Only users with the "@permission-label" <a href=":permissions-url">permission</a> will be able to access the site. Authorized users can log in directly via the <a href=":user-login">user login</a> page.', ['@permission-label' => $permission_label, ':permissions-url' => Url::fromRoute('user.admin_permissions')->toString(), ':user-login' => Url::fromRoute('user.login')->toString()]); $this->drupalGet(Url::fromRoute('system.site_maintenance_mode')); - $this->assertSession()->responseContains($permission_message); + $this->assertSession()->pageTextContains('Visitors will only see the maintenance mode message. Only users with the "Use the site in maintenance mode" permission will be able to access the site. Authorized users can log in directly via the user login page.'); + $this->assertSession()->linkExists('permission'); + $this->assertSession()->linkByHrefExists(Url::fromRoute('user.admin_permissions')->toString()); + $this->assertSession()->linkExists('user login'); + $this->assertSession()->linkByHrefExists(Url::fromRoute('user.login')->toString()); $this->drupalGet(Url::fromRoute('user.page')); // JS should be aggregated, so drupal.js is not in the page source. @@ -72,7 +72,7 @@ public function testSiteMaintenance() { $this->drupalGet('admin/config/development/maintenance'); $this->submitForm($edit, 'Save configuration'); - $admin_message = t('Operating in maintenance mode. <a href=":url">Go online.</a>', [':url' => Url::fromRoute('system.site_maintenance_mode')->toString()]); + $admin_message = 'Operating in maintenance mode. Go online.'; $user_message = 'Operating in maintenance mode.'; $offline_message = $this->config('system.site')->get('name') . ' is currently under maintenance. We should be back shortly. Thank you for your patience.'; @@ -80,7 +80,9 @@ public function testSiteMaintenance() { // JS should not be aggregated, so drupal.js is expected in the page source. $links = $this->xpath('//script[contains(@src, :href)]', [':href' => '/core/misc/drupal.js']); $this->assertTrue(isset($links[0]), 'script /core/misc/drupal.js in page'); - $this->assertSession()->responseContains($admin_message); + $this->assertSession()->pageTextContains($admin_message); + $this->assertSession()->linkExists('Go online.'); + $this->assertSession()->linkByHrefExists(Url::fromRoute('system.site_maintenance_mode')->toString()); // Logout and verify that offline message is displayed. $this->drupalLogout(); @@ -113,7 +115,7 @@ public function testSiteMaintenance() { $this->drupalLogout(); $this->drupalLogin($this->adminUser); $this->drupalGet('admin/config/development/maintenance'); - $this->assertSession()->responseNotContains($admin_message); + $this->assertSession()->pageTextNotContains($admin_message); $offline_message = 'Sorry, not online.'; $edit = [ diff --git a/core/modules/system/tests/src/Kernel/Action/ActionTest.php b/core/modules/system/tests/src/Kernel/Action/ActionTest.php index 47d39cdbd240..2dac37555cec 100644 --- a/core/modules/system/tests/src/Kernel/Action/ActionTest.php +++ b/core/modules/system/tests/src/Kernel/Action/ActionTest.php @@ -80,7 +80,7 @@ public function testDependencies() { $action = Action::create([ 'id' => 'user_add_role_action.' . RoleInterface::ANONYMOUS_ID, 'type' => 'user', - 'label' => t('Add the anonymous role to the selected users'), + 'label' => 'Add the anonymous role to the selected users', 'configuration' => [ 'rid' => RoleInterface::ANONYMOUS_ID, ], diff --git a/core/modules/system/tests/src/Kernel/Form/ProgrammaticTest.php b/core/modules/system/tests/src/Kernel/Form/ProgrammaticTest.php index c924b55676f2..4cb67b5425e0 100644 --- a/core/modules/system/tests/src/Kernel/Form/ProgrammaticTest.php +++ b/core/modules/system/tests/src/Kernel/Form/ProgrammaticTest.php @@ -76,7 +76,7 @@ protected function doSubmitForm($values, $valid_input) { $valid_form = empty($errors); $args = [ '%values' => print_r($values, TRUE), - '%errors' => $valid_form ? t('None') : implode(' ', $errors), + '%errors' => $valid_form ? 'None' : implode(' ', $errors), ]; $this->assertSame($valid_form, $valid_input, new FormattableMarkup('Input values: %values<br />Validation handler errors: %errors', $args)); diff --git a/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php b/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php index c96ec87df6ed..1794ecde34cf 100644 --- a/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php +++ b/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php @@ -73,8 +73,9 @@ public function testTaxonomyVocabularyOverviewPermissions() { $this->createTerm($vocabulary1); // Assert expected help texts on first vocabulary. - $edit_help_text = t('You can reorganize the terms in @capital_name using their drag-and-drop handles, and group terms under a parent term by sliding them under and to the right of the parent.', ['@capital_name' => Unicode::ucfirst($vocabulary1->label())]); - $no_edit_help_text = t('@capital_name contains the following terms.', ['@capital_name' => Unicode::ucfirst($vocabulary1->label())]); + $vocabulary1_label = Unicode::ucfirst($vocabulary1->label()); + $edit_help_text = "You can reorganize the terms in $vocabulary1_label using their drag-and-drop handles, and group terms under a parent term by sliding them under and to the right of the parent."; + $no_edit_help_text = "$vocabulary1_label contains the following terms."; $assert_session = $this->assertSession(); diff --git a/core/modules/taxonomy/tests/src/Functional/VocabularyTranslationTest.php b/core/modules/taxonomy/tests/src/Functional/VocabularyTranslationTest.php index 9bcf06075f5e..4eb7cecce8b9 100644 --- a/core/modules/taxonomy/tests/src/Functional/VocabularyTranslationTest.php +++ b/core/modules/taxonomy/tests/src/Functional/VocabularyTranslationTest.php @@ -87,7 +87,7 @@ public function testVocabularyTitleLabelTranslation(): void { $edit['langcode'] = 'en'; $edit['vid'] = $vid; $edit['default_language[content_translation]'] = TRUE; - $this->submitForm($edit, t('Save')); + $this->submitForm($edit, 'Save'); $langcode = $this->additionalLangcodes[0]; $vid_name = $edit['name']; @@ -100,7 +100,7 @@ public function testVocabularyTitleLabelTranslation(): void { $this->drupalGet("admin/structure/taxonomy/manage/$vid/translate/$langcode/add"); // Translate the name label. - $this->submitForm(["translation[config_names][taxonomy.vocabulary.$vid][name]" => $translated_vid_name], t('Save translation')); + $this->submitForm(["translation[config_names][taxonomy.vocabulary.$vid][name]" => $translated_vid_name], 'Save translation'); // Assert that the right name label is displayed on the taxonomy term // overview page. diff --git a/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php b/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php index e3921eb0307f..e06fd4cd14c5 100644 --- a/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php +++ b/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php @@ -50,7 +50,7 @@ public function testTrackerNodeAccessIndexing() { // queries run for the anonymous user will miss it. $author = $this->drupalCreateUser(); $private_node = $this->drupalCreateNode([ - 'title' => t('Private node test'), + 'title' => 'Private node test', 'private' => TRUE, 'uid' => $author->id(), ]); @@ -85,11 +85,11 @@ public function testTrackerNodeAccess() { // Create some nodes. $private_node = $this->drupalCreateNode([ - 'title' => t('Private node test'), + 'title' => 'Private node test', 'private' => TRUE, ]); $public_node = $this->drupalCreateNode([ - 'title' => t('Public node test'), + 'title' => 'Public node test', 'private' => FALSE, ]); diff --git a/core/modules/user/tests/src/Functional/UserAdminTest.php b/core/modules/user/tests/src/Functional/UserAdminTest.php index ae93524c788a..8fedf64f7c07 100644 --- a/core/modules/user/tests/src/Functional/UserAdminTest.php +++ b/core/modules/user/tests/src/Functional/UserAdminTest.php @@ -75,7 +75,7 @@ public function testUserAdmin() { $this->assertSession()->pageTextContains($admin_user->getAccountName()); // Test for existence of edit link in table. - $link = $user_a->toLink(t('Edit'), 'edit-form', ['query' => ['destination' => $user_a->toUrl('collection')->toString()]])->toString(); + $link = $user_a->toLink('Edit', 'edit-form', ['query' => ['destination' => $user_a->toUrl('collection')->toString()]])->toString(); $this->assertSession()->responseContains($link); // Test exposed filter elements. diff --git a/core/modules/user/tests/src/Functional/UserCreateTest.php b/core/modules/user/tests/src/Functional/UserCreateTest.php index b87998ff83f0..dee27b7054da 100644 --- a/core/modules/user/tests/src/Functional/UserCreateTest.php +++ b/core/modules/user/tests/src/Functional/UserCreateTest.php @@ -61,7 +61,7 @@ public function testUserAdd() { 'entity_type' => 'user', 'label' => 'Picture', 'bundle' => 'user', - 'description' => t('Your virtual face or picture.'), + 'description' => 'Your virtual face or picture.', 'required' => FALSE, 'settings' => [ 'file_extensions' => 'png gif jpg jpeg', diff --git a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php index 515a149f4849..31c0db9ed3d2 100644 --- a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php +++ b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php @@ -490,7 +490,7 @@ public function testUserResetPasswordUserFloodControlIsCleared() { public function assertValidPasswordReset($name) { $this->assertSession()->pageTextContains("If $name is a valid account, an email will be sent with instructions to reset your password."); $this->assertMail('to', $this->account->getEmail(), 'Password e-mail sent to user.'); - $subject = t('Replacement login information for @username at @site', ['@username' => $this->account->getAccountName(), '@site' => \Drupal::config('system.site')->get('name')]); + $subject = 'Replacement login information for ' . $this->account->getAccountName() . ' at Drupal'; $this->assertMail('subject', $subject, 'Password reset e-mail subject is correct.'); } diff --git a/core/modules/user/tests/src/Functional/UserTokenReplaceTest.php b/core/modules/user/tests/src/Functional/UserTokenReplaceTest.php index 7a3f5ca34c5a..4ea4a29c89c6 100644 --- a/core/modules/user/tests/src/Functional/UserTokenReplaceTest.php +++ b/core/modules/user/tests/src/Functional/UserTokenReplaceTest.php @@ -118,7 +118,7 @@ public function testUserTokenReplacement() { // Generate tokens for the anonymous user. $anonymous_user = User::load(0); $tests = []; - $tests['[user:uid]'] = t('not yet assigned'); + $tests['[user:uid]'] = 'not yet assigned'; $tests['[user:display-name]'] = $anonymous_user->getDisplayName(); $base_bubbleable_metadata = BubbleableMetadata::createFromObject($anonymous_user); diff --git a/core/modules/user/tests/src/FunctionalJavascript/RegistrationWithUserFieldsTest.php b/core/modules/user/tests/src/FunctionalJavascript/RegistrationWithUserFieldsTest.php index 988a9b88be88..da488b759840 100644 --- a/core/modules/user/tests/src/FunctionalJavascript/RegistrationWithUserFieldsTest.php +++ b/core/modules/user/tests/src/FunctionalJavascript/RegistrationWithUserFieldsTest.php @@ -94,7 +94,7 @@ public function testRegistrationWithUserFields() { $this->page->fillField('edit-mail', $name . '@example.com'); $this->page->pressButton('edit-submit'); - $this->webAssert->pageTextContains(t('@name field is required.', ['@name' => $field->label()])); + $this->webAssert->pageTextContains($field->label() . ' field is required.'); // Invalid input. $this->page->fillField('edit-test-user-field-0-value', '-1'); diff --git a/core/modules/user/tests/src/Kernel/Views/HandlerFieldPermissionTest.php b/core/modules/user/tests/src/Kernel/Views/HandlerFieldPermissionTest.php index 1cfe12f8a076..37ff151b28a4 100644 --- a/core/modules/user/tests/src/Kernel/Views/HandlerFieldPermissionTest.php +++ b/core/modules/user/tests/src/Kernel/Views/HandlerFieldPermissionTest.php @@ -34,12 +34,12 @@ public function testFieldPermission() { $expected_permissions = []; $expected_permissions[$this->users[0]->id()] = []; $expected_permissions[$this->users[1]->id()] = []; - $expected_permissions[$this->users[2]->id()][] = t('Administer roles and permissions'); + $expected_permissions[$this->users[2]->id()][] = 'Administer roles and permissions'; // View user profiles comes first, because we sort by the permission // machine name. - $expected_permissions[$this->users[3]->id()][] = t('View user information'); - $expected_permissions[$this->users[3]->id()][] = t('Administer roles and permissions'); - $expected_permissions[$this->users[3]->id()][] = t('Administer users'); + $expected_permissions[$this->users[3]->id()][] = 'View user information'; + $expected_permissions[$this->users[3]->id()][] = 'Administer roles and permissions'; + $expected_permissions[$this->users[3]->id()][] = 'Administer users'; foreach ($view->result as $index => $row) { $uid = $view->field['uid']->getValue($row); diff --git a/core/modules/views/tests/src/Functional/Handler/HandlerTest.php b/core/modules/views/tests/src/Functional/Handler/HandlerTest.php index 47f8015ff5f2..2ac51567d82e 100644 --- a/core/modules/views/tests/src/Functional/Handler/HandlerTest.php +++ b/core/modules/views/tests/src/Functional/Handler/HandlerTest.php @@ -79,41 +79,41 @@ public function testBreakString() { // Test ors $handler = HandlerBase::breakString('word1 word2+word'); - $this->assertEqualValue(['word1', 'word2', 'word'], $handler); + $this->assertEquals(['word1', 'word2', 'word'], $handler->value); $this->assertEquals('or', $handler->operator); $handler = HandlerBase::breakString('word1+word2+word'); - $this->assertEqualValue(['word1', 'word2', 'word'], $handler); + $this->assertEquals(['word1', 'word2', 'word'], $handler->value); $this->assertEquals('or', $handler->operator); $handler = HandlerBase::breakString('word1 word2 word'); - $this->assertEqualValue(['word1', 'word2', 'word'], $handler); + $this->assertEquals(['word1', 'word2', 'word'], $handler->value); $this->assertEquals('or', $handler->operator); $handler = HandlerBase::breakString('word-1+word-2+word'); - $this->assertEqualValue(['word-1', 'word-2', 'word'], $handler); + $this->assertEquals(['word-1', 'word-2', 'word'], $handler->value); $this->assertEquals('or', $handler->operator); $handler = HandlerBase::breakString('wõrd1+wõrd2+wõrd'); - $this->assertEqualValue(['wõrd1', 'wõrd2', 'wõrd'], $handler); + $this->assertEquals(['wõrd1', 'wõrd2', 'wõrd'], $handler->value); $this->assertEquals('or', $handler->operator); // Test ands. $handler = HandlerBase::breakString('word1,word2,word'); - $this->assertEqualValue(['word1', 'word2', 'word'], $handler); + $this->assertEquals(['word1', 'word2', 'word'], $handler->value); $this->assertEquals('and', $handler->operator); $handler = HandlerBase::breakString('word1 word2,word'); - $this->assertEqualValue(['word1 word2', 'word'], $handler); + $this->assertEquals(['word1 word2', 'word'], $handler->value); $this->assertEquals('and', $handler->operator); $handler = HandlerBase::breakString('word1,word2 word'); - $this->assertEqualValue(['word1', 'word2 word'], $handler); + $this->assertEquals(['word1', 'word2 word'], $handler->value); $this->assertEquals('and', $handler->operator); $handler = HandlerBase::breakString('word-1,word-2,word'); - $this->assertEqualValue(['word-1', 'word-2', 'word'], $handler); + $this->assertEquals(['word-1', 'word-2', 'word'], $handler->value); $this->assertEquals('and', $handler->operator); $handler = HandlerBase::breakString('wõrd1,wõrd2,wõrd'); - $this->assertEqualValue(['wõrd1', 'wõrd2', 'wõrd'], $handler); + $this->assertEquals(['wõrd1', 'wõrd2', 'wõrd'], $handler->value); $this->assertEquals('and', $handler->operator); // Test a single word $handler = HandlerBase::breakString('word'); - $this->assertEqualValue(['word'], $handler); + $this->assertEquals(['word'], $handler->value); $this->assertEquals('and', $handler->operator); $s1 = $this->randomMachineName(); @@ -124,45 +124,45 @@ public function testBreakString() { // Test "or"s. $handlerBase = HandlerBase::breakString("$s1 $n2+$n3"); - $this->assertEqualValue([$s1, $n2, $n3], $handlerBase); + $this->assertEquals([$s1, $n2, $n3], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1+$n2+$n3"); - $this->assertEqualValue([$s1, $n2, $n3], $handlerBase); + $this->assertEquals([$s1, $n2, $n3], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1 $n2 $n3"); - $this->assertEqualValue([$s1, $n2, $n3], $handlerBase); + $this->assertEquals([$s1, $n2, $n3], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1 $n2++$n3"); - $this->assertEqualValue([$s1, $n2, $n3], $handlerBase); + $this->assertEquals([$s1, $n2, $n3], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); // Test "and"s. $handlerBase = HandlerBase::breakString("$s1,$n2,$n3"); - $this->assertEqualValue([$s1, $n2, $n3], $handlerBase); + $this->assertEquals([$s1, $n2, $n3], $handlerBase->value); $this->assertEquals('and', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1,,$n2,$n3"); - $this->assertEqualValue([$s1, $n2, $n3], $handlerBase); + $this->assertEquals([$s1, $n2, $n3], $handlerBase->value); $this->assertEquals('and', $handlerBase->operator); // Enforce int values. $handlerBase = HandlerBase::breakString("$n1,$n2,$n3", TRUE); - $this->assertEqualValue([$n1, $n2, $n3], $handlerBase); + $this->assertEquals([$n1, $n2, $n3], $handlerBase->value); $this->assertEquals('and', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$n1+$n2+$n3", TRUE); - $this->assertEqualValue([$n1, $n2, $n3], $handlerBase); + $this->assertEquals([$n1, $n2, $n3], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1,$n2,$n3", TRUE); - $this->assertEqualValue([(int) $s1, $n2, $n3], $handlerBase); + $this->assertEquals([(int) $s1, $n2, $n3], $handlerBase->value); $this->assertEquals('and', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1+$n2+$n3", TRUE); - $this->assertEqualValue([(int) $s1, $n2, $n3], $handlerBase); + $this->assertEquals([(int) $s1, $n2, $n3], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); // Generate three random decimals which can be used below; @@ -172,28 +172,28 @@ public function testBreakString() { // Test "or"s. $handlerBase = HandlerBase::breakString("$s1 $d1+$d2"); - $this->assertEqualValue([$s1, $d1, $d2], $handlerBase); + $this->assertEquals([$s1, $d1, $d2], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1+$d1+$d3"); - $this->assertEqualValue([$s1, $d1, $d3], $handlerBase); + $this->assertEquals([$s1, $d1, $d3], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1 $d2 $d3"); - $this->assertEqualValue([$s1, $d2, $d3], $handlerBase); + $this->assertEquals([$s1, $d2, $d3], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1 $d2++$d3"); - $this->assertEqualValue([$s1, $d2, $d3], $handlerBase); + $this->assertEquals([$s1, $d2, $d3], $handlerBase->value); $this->assertEquals('or', $handlerBase->operator); // Test "and"s. $handlerBase = HandlerBase::breakString("$s1,$d2,$d3"); - $this->assertEqualValue([$s1, $d2, $d3], $handlerBase); + $this->assertEquals([$s1, $d2, $d3], $handlerBase->value); $this->assertEquals('and', $handlerBase->operator); $handlerBase = HandlerBase::breakString("$s1,,$d2,$d3"); - $this->assertEqualValue([$s1, $d2, $d3], $handlerBase); + $this->assertEquals([$s1, $d2, $d3], $handlerBase->value); $this->assertEquals('and', $handlerBase->operator); } @@ -223,30 +223,6 @@ public function testHandlerWeights() { } } - /** - * Check to see if a value is the same as the value on a certain handler. - * - * @param $expected - * The expected value to check. - * @param \Drupal\views\Plugin\views\ViewsHandlerInterface $handler - * The handler that has the $handler->value property to compare with first. - * @param string $message - * The message to display along with the assertion. - * @param string $group - * The type of assertion - examples are "Browser", "PHP". - * - * @return bool - * TRUE if the assertion succeeded. - */ - protected function assertEqualValue($expected, $handler, $message = '', $group = 'Other') { - if (empty($message)) { - $message = t('Comparing @first and @second', ['@first' => implode(',', $expected), '@second' => implode(',', $handler->value)]); - } - - $this->assertEquals($expected, $handler->value, $message); - return TRUE; - } - /** * Tests the relationship ui for field/filter/argument/relationship. */ diff --git a/core/modules/views/tests/src/Functional/ViewsFormMultipleTest.php b/core/modules/views/tests/src/Functional/ViewsFormMultipleTest.php index 49ed139ae0f4..868de09ac6c6 100644 --- a/core/modules/views/tests/src/Functional/ViewsFormMultipleTest.php +++ b/core/modules/views/tests/src/Functional/ViewsFormMultipleTest.php @@ -36,8 +36,8 @@ protected function setUp($import_test_views = TRUE): void { protected function viewsData() { $data = parent::viewsData(); $data['views_test_data']['field_form_button_test']['field'] = [ - 'title' => t('Button test'), - 'help' => t('Adds a test form button.'), + 'title' => 'Button test', + 'help' => 'Adds a test form button.', 'id' => 'field_form_button_test', ]; return $data; diff --git a/core/modules/views/tests/src/FunctionalJavascript/ExposedFilterAJAXTest.php b/core/modules/views/tests/src/FunctionalJavascript/ExposedFilterAJAXTest.php index 8f30fb2db1ad..24873e674f5c 100644 --- a/core/modules/views/tests/src/FunctionalJavascript/ExposedFilterAJAXTest.php +++ b/core/modules/views/tests/src/FunctionalJavascript/ExposedFilterAJAXTest.php @@ -179,7 +179,7 @@ public function testExposedFilteringWithButtonElement() { $ajax_views_before = $drupal_settings['views']['ajaxViews']; // Search for "Page One". - $this->submitForm(['title' => 'Page One'], t('Filter')); + $this->submitForm(['title' => 'Page One'], 'Filter'); $this->assertSession()->assertWaitOnAjaxRequest(); // Verify that only the "Page One" Node is present. diff --git a/core/modules/views/tests/src/Kernel/Handler/FieldBooleanTest.php b/core/modules/views/tests/src/Kernel/Handler/FieldBooleanTest.php index 5640dbb710ec..e3bc2e71dd4b 100644 --- a/core/modules/views/tests/src/Kernel/Handler/FieldBooleanTest.php +++ b/core/modules/views/tests/src/Kernel/Handler/FieldBooleanTest.php @@ -70,7 +70,7 @@ public function testFieldBoolean() { $this->assertEquals('✔', $view->field['age']->advancedRender($view->result[1])); // Set a custom output format. - $view->field['age']->formats['test'] = [t('Test-True'), t('Test-False')]; + $view->field['age']->formats['test'] = ['Test-True', 'Test-False']; $view->field['age']->options['type'] = 'test'; $this->assertEquals('Test-False', $view->field['age']->advancedRender($view->result[0])); $this->assertEquals('Test-True', $view->field['age']->advancedRender($view->result[1])); diff --git a/core/modules/views/tests/src/Kernel/Handler/FieldDateTest.php b/core/modules/views/tests/src/Kernel/Handler/FieldDateTest.php index 0b3ddc4f68dd..5ce5e83c8325 100644 --- a/core/modules/views/tests/src/Kernel/Handler/FieldDateTest.php +++ b/core/modules/views/tests/src/Kernel/Handler/FieldDateTest.php @@ -122,10 +122,10 @@ public function testFieldDate() { $time_since = $date_formatter->formatTimeDiffSince($time); $intervals = [ 'raw time ago' => $time_since, - 'time ago' => t('%time ago', ['%time' => $time_since]), + 'time ago' => "$time_since ago", 'raw time span' => $time_since, 'inverse time span' => "-$time_since", - 'time span' => t('%time ago', ['%time' => $time_since]), + 'time span' => "$time_since ago", ]; $this->assertRenderedDatesEqual($view, $intervals); @@ -134,9 +134,7 @@ public function testFieldDate() { $formatted = $date_formatter->formatTimeDiffUntil($time); $intervals = [ 'raw time span' => "-$formatted", - 'time span' => t('%time hence', [ - '%time' => $formatted, - ]), + 'time span' => "$formatted hence", ]; $this->assertRenderedFutureDatesEqual($view, $intervals); } @@ -154,20 +152,15 @@ public function testFieldDate() { protected function assertRenderedDatesEqual($view, $map, $timezone = NULL) { foreach ($map as $date_format => $expected_result) { $view->field['created']->options['date_format'] = $date_format; - $t_args = [ - '%value' => $expected_result, - '%format' => $date_format, - ]; if (isset($timezone)) { - $t_args['%timezone'] = $timezone; - $message = t('Value %value in %format format for timezone %timezone matches.', $t_args); + $message = "$date_format format for timezone $timezone matches."; $view->field['created']->options['timezone'] = $timezone; } else { - $message = t('Value %value in %format format matches.', $t_args); + $message = "$date_format format matches."; } $actual_result = $view->field['created']->advancedRender($view->result[0]); - $this->assertEquals($expected_result, $actual_result, $message); + $this->assertEquals($expected_result, strip_tags($actual_result), $message); } } @@ -183,13 +176,7 @@ protected function assertRenderedFutureDatesEqual($view, $map) { foreach ($map as $format => $result) { $view->field['destroyed']->options['date_format'] = $format; $view_result = $view->field['destroyed']->advancedRender($view->result[0]); - $t_args = [ - '%value' => $result, - '%format' => $format, - '%actual' => $view_result, - ]; - $message = t('Value %value in %format matches %actual', $t_args); - $this->assertEquals($result, $view_result, $message); + $this->assertEquals($result, strip_tags($view_result), "$format format matches."); } } diff --git a/core/modules/views/tests/src/Kernel/ModuleTest.php b/core/modules/views/tests/src/Kernel/ModuleTest.php index 55fe86c00225..f59370d62d0f 100644 --- a/core/modules/views/tests/src/Kernel/ModuleTest.php +++ b/core/modules/views/tests/src/Kernel/ModuleTest.php @@ -175,7 +175,7 @@ public function testLoadFunctions() { $expected_opt_groups = []; foreach ($all_views as $view) { foreach ($view->get('display') as $display) { - $expected_opt_groups[$view->id()][$view->id() . ':' . $display['id']] = (string) t('@view : @display', ['@view' => $view->id(), '@display' => $display['id']]); + $expected_opt_groups[$view->id()][$view->id() . ':' . $display['id']] = $view->id() . ' : ' . $display['id']; } } $this->assertEquals($expected_opt_groups, Views::getViewsAsOptions(FALSE, 'all', NULL, TRUE), 'Expected option array for an option group returned.'); @@ -325,8 +325,7 @@ protected function formatViewOptions(array $views = []) { $expected_options = []; foreach ($views as $view) { foreach ($view->get('display') as $display) { - $expected_options[$view->id() . ':' . $display['id']] = (string) t('View: @view - Display: @display', - ['@view' => $view->id(), '@display' => $display['id']]); + $expected_options[$view->id() . ':' . $display['id']] = "View: {$view->id()} - Display: {$display['id']}"; } } diff --git a/core/modules/views/tests/src/Kernel/Plugin/BlockDependenciesTest.php b/core/modules/views/tests/src/Kernel/Plugin/BlockDependenciesTest.php index a67b7bada52e..f658f64e7e90 100644 --- a/core/modules/views/tests/src/Kernel/Plugin/BlockDependenciesTest.php +++ b/core/modules/views/tests/src/Kernel/Plugin/BlockDependenciesTest.php @@ -69,7 +69,7 @@ public function testViewsBlock() { * example: * @code * $this->createBlock('system_powered_by_block', array( - * 'label' => t('Hello, world!'), + * 'label' => 'Hello, world!', * )); * @endcode * The following defaults are provided: diff --git a/core/modules/views/tests/src/Kernel/Plugin/ExposedFormRenderTest.php b/core/modules/views/tests/src/Kernel/Plugin/ExposedFormRenderTest.php index 651cb829ec4a..a581f8922cc3 100644 --- a/core/modules/views/tests/src/Kernel/Plugin/ExposedFormRenderTest.php +++ b/core/modules/views/tests/src/Kernel/Plugin/ExposedFormRenderTest.php @@ -49,7 +49,7 @@ public function testExposedFormRender() { $expected_action = $view->display_handler->getUrlInfo()->toString(); $this->assertFieldByXPath('//form/@action', $expected_action, 'The expected value for the action attribute was found.'); // Make sure the description is shown. - $result = $this->xpath('//form//div[contains(@id, :id) and normalize-space(text())=:description]', [':id' => 'edit-type--2--description', ':description' => t('Exposed description')]); + $result = $this->xpath('//form//div[contains(@id, "edit-type--2--description") and normalize-space(text())="Exposed description"]'); $this->assertCount(1, $result, 'Filter description was found.'); } diff --git a/core/modules/views_ui/tests/src/Functional/HandlerTest.php b/core/modules/views_ui/tests/src/Functional/HandlerTest.php index 3815a9ec678f..e20089a77c43 100644 --- a/core/modules/views_ui/tests/src/Functional/HandlerTest.php +++ b/core/modules/views_ui/tests/src/Functional/HandlerTest.php @@ -73,8 +73,8 @@ protected function schemaDefinition() { protected function viewsData() { $data = parent::viewsData(); $data['views_test_data']['uid'] = [ - 'title' => t('UID'), - 'help' => t('The test data UID'), + 'title' => 'UID', + 'help' => 'The test data UID', 'relationship' => [ 'id' => 'standard', 'base' => 'users_field_data', @@ -84,7 +84,7 @@ protected function viewsData() { // Create a dummy field with no help text. $data['views_test_data']['no_help'] = $data['views_test_data']['name']; - $data['views_test_data']['no_help']['field']['title'] = t('No help'); + $data['views_test_data']['no_help']['field']['title'] = 'No help'; $data['views_test_data']['no_help']['field']['real field'] = 'name'; unset($data['views_test_data']['no_help']['help']); diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/MultiFormTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/MultiFormTest.php index 0896f8d2aad3..fbd979c4e36b 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/MultiFormTest.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/MultiFormTest.php @@ -66,7 +66,6 @@ public function testMultiForm() { $form_xpath = '//form[starts-with(@id, "node-page-form")]'; $field_xpath = '//div[contains(@class, "field--name-field-ajax-test")]'; $button_name = $field_name . '_add_more'; - $button_value = t('Add another item'); $button_xpath_suffix = '//input[@name="' . $button_name . '"]'; $field_items_xpath_suffix = '//input[@type="text"]'; @@ -95,7 +94,7 @@ public function testMultiForm() { for ($i = 0; $i < 2; $i++) { $forms = $page->find('xpath', $form_xpath); foreach ($forms as $offset => $form) { - $button = $form->findButton($button_value); + $button = $form->findButton('Add another item'); $this->assertNotNull($button, 'Add Another Item button exists'); $button->press(); diff --git a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php index 9ada56ef4538..667bae835334 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php @@ -510,8 +510,8 @@ public function testSortRange() { */ public function testTableSort() { $header = [ - ['data' => t('ID'), 'specifier' => 'id'], - ['data' => t('Number'), 'specifier' => 'number'], + ['data' => 'ID', 'specifier' => 'id'], + ['data' => 'Number', 'specifier' => 'number'], ]; // Sort key: id diff --git a/core/tests/Drupal/KernelTests/Core/Messenger/MessengerTest.php b/core/tests/Drupal/KernelTests/Core/Messenger/MessengerTest.php index b81395c9d77a..7507c903b11f 100644 --- a/core/tests/Drupal/KernelTests/Core/Messenger/MessengerTest.php +++ b/core/tests/Drupal/KernelTests/Core/Messenger/MessengerTest.php @@ -37,7 +37,7 @@ public function testRemoveSingleMessage() { // Set two messages. $this->messenger->addStatus('First message (removed).'); - $this->messenger->addStatus(t('Second message with <em>markup!</em> (not removed).')); + $this->messenger->addStatus('Second message with <em>markup!</em> (not removed).'); $messages = $this->messenger->deleteByType(MessengerInterface::TYPE_STATUS); // Remove the first. unset($messages[0]); diff --git a/core/tests/Drupal/KernelTests/Core/Plugin/ContextPluginTest.php b/core/tests/Drupal/KernelTests/Core/Plugin/ContextPluginTest.php index 5a8dd1fb42a7..e394a2d2da19 100644 --- a/core/tests/Drupal/KernelTests/Core/Plugin/ContextPluginTest.php +++ b/core/tests/Drupal/KernelTests/Core/Plugin/ContextPluginTest.php @@ -52,7 +52,7 @@ public function testContext() { } // Test the getContextDefinitions() method. - $user_context_definition = EntityContextDefinition::fromEntityTypeId('user')->setLabel(t('User')); + $user_context_definition = EntityContextDefinition::fromEntityTypeId('user')->setLabel('User'); $this->assertEquals($plugin->getContextDefinitions()['user']->getLabel(), $user_context_definition->getLabel()); // Test the getContextDefinition() method for a valid context. -- GitLab From 266679c66232b33cad6c70d4cbd5a8bf8455039d Mon Sep 17 00:00:00 2001 From: Lauri Eskola <lauri.eskola@acquia.com> Date: Mon, 15 Nov 2021 13:22:22 +0200 Subject: [PATCH 32/69] Issue #3249263 by alexpott, andypost, Wim Leers: CKEditor 5 needs validate the filters in the correct order - CKEditor 5 tests fail locally (cherry picked from commit dc51481d8ac7c8eb95289f13a3e536ae00fd9a5a) --- ...mentalCompatibilityConstraintValidator.php | 30 ++++++------- .../src/Kernel/SmartDefaultSettingsTest.php | 4 +- .../tests/src/Kernel/ValidatorsTest.php | 43 +++++++++++++++++-- 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php index 43de2c35c9a5..0913e8cccd21 100644 --- a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php +++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php @@ -84,13 +84,11 @@ private function checkNoMarkupFilters(FilterFormatInterface $text_format, Fundam $text_format, FilterInterface::TYPE_MARKUP_LANGUAGE ); - if (!empty($markup_filters)) { - foreach ($markup_filters as $markup_filter) { - $this->context->buildViolation($constraint->noMarkupFiltersMessage) - ->setParameter('%filter_label', $markup_filter->getLabel()) - ->setParameter('%filter_plugin_id', $markup_filter->getPluginId()) - ->addViolation(); - } + foreach ($markup_filters as $markup_filter) { + $this->context->buildViolation($constraint->noMarkupFiltersMessage) + ->setParameter('%filter_label', $markup_filter->getLabel()) + ->setParameter('%filter_plugin_id', $markup_filter->getPluginId()) + ->addViolation(); } } @@ -194,25 +192,21 @@ private function checkHtmlRestrictionsMatch(EditorInterface $text_editor, Fundam * conditions to be met. Must return TRUE when it meets the conditions, * FALSE otherwise. * - * @return \Drupal\filter\Plugin\FilterInterface[] - * The matched filter plugins. + * @return iterable|\Drupal\filter\Plugin\FilterInterface[] + * An iterable of matched filter plugins. */ - private static function getFiltersInFormatOfType(FilterFormatInterface $text_format, int $filter_type, callable $extra_requirements = NULL): array { + private static function getFiltersInFormatOfType(FilterFormatInterface $text_format, int $filter_type, callable $extra_requirements = NULL): iterable { assert(in_array($filter_type, [ FilterInterface::TYPE_MARKUP_LANGUAGE, FilterInterface::TYPE_HTML_RESTRICTOR, FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE, FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE, ])); - return array_filter($text_format->filters()->getAll(), function (FilterInterface $filter) use ($filter_type, $extra_requirements) { - if (!$filter->status) { - return FALSE; + foreach ($text_format->filters() as $id => $filter) { + if ($filter->status && $filter->getType() === $filter_type && ($extra_requirements === NULL || $extra_requirements($filter))) { + yield $id => $filter; } - if ($filter->getType() === $filter_type && ($extra_requirements === NULL || $extra_requirements($filter))) { - return TRUE; - } - return FALSE; - }); + } } /** diff --git a/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php b/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php index d03e2c98f968..addcc53a3d23 100644 --- a/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php +++ b/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php @@ -517,8 +517,8 @@ public function provider() { 'expected_superset' => '<br> <p>', 'expected_fundamental_compatibility_violations' => [ '' => [ - 0 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.', - 1 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. <code>&lt;br&gt;</code> and <code>&lt;p&gt;</code>)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.', + 0 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. <code>&lt;br&gt;</code> and <code>&lt;p&gt;</code>)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.', + 1 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.', ], ], 'expected_messages' => [ diff --git a/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php index 151cfbd9d8c5..2cb9442e70d3 100644 --- a/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php +++ b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php @@ -416,7 +416,7 @@ public function providerPair(): array { 'id' => 'filter_url', 'provider' => 'filter', 'status' => TRUE, - 'weight' => 0, + 'weight' => -10, 'settings' => [ 'filter_url_length' => 72, ], @@ -429,6 +429,43 @@ public function providerPair(): array { ], ], ]; + $data['INVALID: non-HTML format: filter_autop + filter_url (different order)'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'bold', + ], + ], + 'plugins' => [], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_autop' => [ + 'id' => 'filter_autop', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [], + ], + 'filter_url' => [ + 'id' => 'filter_url', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 10, + 'settings' => [ + 'filter_url_length' => 72, + ], + ], + ], + 'violations' => [ + '' => [ + 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. <code>&lt;br&gt;</code> and <code>&lt;p&gt;</code>)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.', + 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.', + ], + ], + ]; $data['INVALID: forbidden tags'] = [ 'settings' => [ 'toolbar' => [ @@ -456,7 +493,7 @@ public function providerPair(): array { '' => 'CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are forbidden by the "<em class="placeholder">Tag and attribute restricting filter</em>" (<em class="placeholder">filter_test_restrict_tags_and_attributes</em>) filter.', ], ]; - $restricted_html_format_filters = Yaml::parseFile('profiles/standard/config/install/filter.format.restricted_html.yml')['filters']; + $restricted_html_format_filters = Yaml::parseFile(__DIR__ . '/../../../../../profiles/standard/config/install/filter.format.restricted_html.yml')['filters']; $data['INVALID: the default restricted_html text format'] = [ 'settings' => [ 'toolbar' => [ @@ -470,8 +507,8 @@ public function providerPair(): array { 'filters' => $restricted_html_format_filters, 'violations' => [ '' => [ - 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.', 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. <code>&lt;br&gt;</code> and <code>&lt;p&gt;</code>)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.', + 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.', ], ], ]; -- GitLab From 910dedc31b736b83dc900f055611ad232be2802f Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Tue, 16 Nov 2021 06:33:09 +1000 Subject: [PATCH 33/69] Issue #3249233 by longwave: Update 9.3's Symfony 5 components to 5.4 (cherry picked from commit bcf1456ce2c09f12ce8e4bd3e5d6a271188add2d) --- composer.json | 4 +- composer.lock | 85 ++++++++++--------- .../Metapackage/CoreRecommended/composer.json | 6 +- .../Metapackage/DevDependencies/composer.json | 4 +- .../PinnedDevDependencies/composer.json | 4 +- core/composer.json | 2 +- .../Template/ComposerProjectTemplatesTest.php | 2 +- 7 files changed, 55 insertions(+), 52 deletions(-) diff --git a/composer.json b/composer.json index c137ad2ab4c9..5d938d7dd81f 100644 --- a/composer.json +++ b/composer.json @@ -25,8 +25,8 @@ "phpunit/phpunit": "^8.5.14 || ^9", "phpspec/prophecy": "^1.12", "symfony/css-selector": "^4.4", - "symfony/phpunit-bridge": "^5.3.0", - "symfony/var-dumper": "^5.3.0", + "symfony/phpunit-bridge": "^5.4@beta", + "symfony/var-dumper": "^5.4@beta", "symfony/error-handler": "^4.4", "justinrainbow/json-schema": "^5.2", "symfony/filesystem": "^4.4", diff --git a/composer.lock b/composer.lock index 74c5c365ef38..cb861893d50e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8d45389b3d0ae61b9494521b92723562", + "content-hash": "ecbf82b278efeb981800307d22242bf8", "packages": [ { "name": "asm89/stack-cors", @@ -535,7 +535,7 @@ "dist": { "type": "path", "url": "core", - "reference": "1349b63771ae6c0b66e9d870c692bf7f51024171" + "reference": "60f96b86b97f28bf6a18f9a7e392f56caea5eba3" }, "require": { "asm89/stack-cors": "^1.1", @@ -570,7 +570,7 @@ "symfony/event-dispatcher": "^4.4", "symfony/http-foundation": "^4.4.7", "symfony/http-kernel": "^4.4", - "symfony/mime": "^5.3.0", + "symfony/mime": "^5.4@beta", "symfony/polyfill-iconv": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/process": "^4.4", @@ -1425,16 +1425,16 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.6.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "c53d8537f108fac3fae652677a19735db730ba46" + "reference": "db581851a092246ad99e12d4fddf105184924c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/c53d8537f108fac3fae652677a19735db730ba46", - "reference": "c53d8537f108fac3fae652677a19735db730ba46", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/db581851a092246ad99e12d4fddf105184924c71", + "reference": "db581851a092246ad99e12d4fddf105184924c71", "shasum": "" }, "require": { @@ -1480,7 +1480,7 @@ "type": "community_bridge" } ], - "time": "2021-09-02T16:11:32+00:00" + "time": "2021-11-10T11:33:52+00:00" }, { "name": "masterminds/html5", @@ -2999,16 +2999,16 @@ }, { "name": "symfony/mime", - "version": "v5.3.8", + "version": "v5.4.0-BETA1", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "a756033d0a7e53db389618653ae991eba5a19a11" + "reference": "d75d8cd9aa5ad257ed1b958f042c7a2d7cf505d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/a756033d0a7e53db389618653ae991eba5a19a11", - "reference": "a756033d0a7e53db389618653ae991eba5a19a11", + "url": "https://api.github.com/repos/symfony/mime/zipball/d75d8cd9aa5ad257ed1b958f042c7a2d7cf505d5", + "reference": "d75d8cd9aa5ad257ed1b958f042c7a2d7cf505d5", "shasum": "" }, "require": { @@ -3027,10 +3027,10 @@ "require-dev": { "egulias/email-validator": "^2.1.10|^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.1", - "symfony/property-info": "^4.4|^5.1", - "symfony/serializer": "^5.2" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.2|^6.0" }, "type": "library", "autoload": { @@ -3062,7 +3062,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.8" + "source": "https://github.com/symfony/mime/tree/v5.4.0-BETA1" }, "funding": [ { @@ -3078,7 +3078,7 @@ "type": "tidelift" } ], - "time": "2021-09-10T12:30:38+00:00" + "time": "2021-11-04T16:48:04+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4260,16 +4260,16 @@ }, { "name": "symfony/var-dumper", - "version": "v5.3.10", + "version": "v5.4.0-BETA2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "875432adb5f5570fff21036fd22aee244636b7d1" + "reference": "8dcd0b137b3fb45df7df6f06f0ef6a9fad7f587d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/875432adb5f5570fff21036fd22aee244636b7d1", - "reference": "875432adb5f5570fff21036fd22aee244636b7d1", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/8dcd0b137b3fb45df7df6f06f0ef6a9fad7f587d", + "reference": "8dcd0b137b3fb45df7df6f06f0ef6a9fad7f587d", "shasum": "" }, "require": { @@ -4283,8 +4283,9 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -4328,7 +4329,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.10" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.0-BETA2" }, "funding": [ { @@ -4344,7 +4345,7 @@ "type": "tidelift" } ], - "time": "2021-10-26T09:30:15+00:00" + "time": "2021-11-12T11:42:37+00:00" }, { "name": "symfony/yaml", @@ -6603,16 +6604,16 @@ }, { "name": "sebastian/exporter", - "version": "3.1.3", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" + "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", - "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", + "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db", "shasum": "" }, "require": { @@ -6621,7 +6622,7 @@ }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { @@ -6668,7 +6669,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.4" }, "funding": [ { @@ -6676,7 +6677,7 @@ "type": "github" } ], - "time": "2020-11-30T07:47:53+00:00" + "time": "2021-11-11T13:51:24+00:00" }, { "name": "sebastian/global-state", @@ -7709,16 +7710,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v5.3.10", + "version": "v5.4.0-BETA2", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "325aaf6302501ed3673cffbd3ba88db5949de8ae" + "reference": "0f925f6512356879d79954a5442dca83658ae279" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/325aaf6302501ed3673cffbd3ba88db5949de8ae", - "reference": "325aaf6302501ed3673cffbd3ba88db5949de8ae", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/0f925f6512356879d79954a5442dca83658ae279", + "reference": "0f925f6512356879d79954a5442dca83658ae279", "shasum": "" }, "require": { @@ -7729,7 +7730,7 @@ "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0" + "symfony/error-handler": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" @@ -7772,7 +7773,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.3.10" + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.0-BETA2" }, "funding": [ { @@ -7788,7 +7789,7 @@ "type": "tidelift" } ], - "time": "2021-10-28T19:22:18+00:00" + "time": "2021-11-12T11:42:37+00:00" }, { "name": "theseer/tokenizer", @@ -7904,7 +7905,9 @@ "stability-flags": { "drupal/core": 20, "drupal/core-project-message": 20, - "drupal/core-vendor-hardening": 20 + "drupal/core-vendor-hardening": 20, + "symfony/phpunit-bridge": 10, + "symfony/var-dumper": 10 }, "prefer-stable": true, "prefer-lowest": false, diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 0dc75a816089..743923090dd0 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -20,7 +20,7 @@ "laminas/laminas-diactoros": "2.8.0", "laminas/laminas-escaper": "2.9.0", "laminas/laminas-feed": "2.15.0", - "laminas/laminas-stdlib": "3.6.0", + "laminas/laminas-stdlib": "3.6.1", "masterminds/html5": "2.7.5", "pear/archive_tar": "1.4.14", "pear/console_getopt": "v1.4.3", @@ -44,7 +44,7 @@ "symfony/http-client-contracts": "v2.4.0", "symfony/http-foundation": "v4.4.33", "symfony/http-kernel": "v4.4.33", - "symfony/mime": "v5.3.8", + "symfony/mime": "v5.4.0-BETA1", "symfony/polyfill-ctype": "v1.23.0", "symfony/polyfill-iconv": "v1.23.0", "symfony/polyfill-intl-idn": "v1.23.0", @@ -59,7 +59,7 @@ "symfony/translation": "v4.4.32", "symfony/translation-contracts": "v2.4.0", "symfony/validator": "v4.4.33", - "symfony/var-dumper": "v5.3.10", + "symfony/var-dumper": "v5.4.0-BETA2", "symfony/yaml": "v4.4.29", "twig/twig": "v2.14.7", "typo3/phar-stream-wrapper": "v3.1.7" diff --git a/composer/Metapackage/DevDependencies/composer.json b/composer/Metapackage/DevDependencies/composer.json index 32b5862971c2..49f481167a66 100644 --- a/composer/Metapackage/DevDependencies/composer.json +++ b/composer/Metapackage/DevDependencies/composer.json @@ -25,7 +25,7 @@ "symfony/filesystem": "^4.4", "symfony/finder": "^4.4", "symfony/lock": "^4.4", - "symfony/phpunit-bridge": "^5.3.0", - "symfony/var-dumper": "^5.3.0" + "symfony/phpunit-bridge": "^5.4@beta", + "symfony/var-dumper": "^5.4@beta" } } diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index 26eb7a5f52c7..a3e1ab67fcfe 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -40,7 +40,7 @@ "sebastian/comparator": "3.0.3", "sebastian/diff": "3.0.3", "sebastian/environment": "4.2.4", - "sebastian/exporter": "3.1.3", + "sebastian/exporter": "3.1.4", "sebastian/global-state": "3.0.1", "sebastian/object-enumerator": "3.0.4", "sebastian/object-reflector": "1.1.2", @@ -58,7 +58,7 @@ "symfony/filesystem": "v4.4.27", "symfony/finder": "v4.4.30", "symfony/lock": "v4.4.33", - "symfony/phpunit-bridge": "v5.3.10", + "symfony/phpunit-bridge": "v5.4.0-BETA2", "theseer/tokenizer": "1.2.1", "webmozart/assert": "1.10.0" } diff --git a/core/composer.json b/core/composer.json index 2566db7afb71..d83b166ca13d 100644 --- a/core/composer.json +++ b/core/composer.json @@ -23,7 +23,7 @@ "symfony/event-dispatcher": "^4.4", "symfony/http-foundation": "^4.4.7", "symfony/http-kernel": "^4.4", - "symfony/mime": "^5.3.0", + "symfony/mime": "^5.4@beta", "symfony/routing": "^4.4", "symfony/serializer": "^4.4", "symfony/translation": "^4.4", diff --git a/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php b/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php index 5b341db41319..53a5c2308c3c 100644 --- a/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php +++ b/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php @@ -32,7 +32,7 @@ class ComposerProjectTemplatesTest extends BuildTestBase { * * @see https://getcomposer.org/doc/04-schema.md#minimum-stability */ - protected const MINIMUM_STABILITY = 'stable'; + protected const MINIMUM_STABILITY = 'beta'; /** * The order of stability strings from least stable to most stable. -- GitLab From 4657f6618673cabb4a80d28da7ab38159c74e7f8 Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Tue, 16 Nov 2021 06:41:08 +1000 Subject: [PATCH 34/69] Issue #3249240 by alexpott, andypost, Wim Leers: HTMLRestrictionsUtilities:: providedElementsAttributes() causes deprecations on PHP 8.1 (cherry picked from commit 65aaec60ce16057d03a605efa38c4d78b895b1a9) --- .../src/HTMLRestrictionsUtilities.php | 53 +++++++++++++++---- .../src/Plugin/CKEditor5PluginManager.php | 5 +- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/core/modules/ckeditor5/src/HTMLRestrictionsUtilities.php b/core/modules/ckeditor5/src/HTMLRestrictionsUtilities.php index dee7d24c5005..2e683cde4cdc 100644 --- a/core/modules/ckeditor5/src/HTMLRestrictionsUtilities.php +++ b/core/modules/ckeditor5/src/HTMLRestrictionsUtilities.php @@ -13,6 +13,8 @@ * Utilities for interacting with HTML restrictions. * * @internal + * + * @see \Drupal\filter\Plugin\FilterInterface::getHTMLRestrictions() */ final class HTMLRestrictionsUtilities { @@ -29,10 +31,13 @@ final class HTMLRestrictionsUtilities { * Formats HTML elements for display. * * @param array $elements - * List of elements to format. + * List of elements to format. The structure is the same as the allowed tags + * array documented in FilterInterface::getHTMLRestrictions(). * - * @return string + * @return string[] * A formatted list; a string representation of the given HTML elements. + * + * @see \Drupal\filter\Plugin\FilterInterface::getHTMLRestrictions() */ public static function toReadableElements(array $elements): array { $readable = []; @@ -77,10 +82,14 @@ public static function allowedElementsStringToPluginElementsArray(string $elemen * A string of HTML tags, potentially with attributes. * * @return array - * An elements array in the structure expected by filter_html. + * An elements array. The structure is the same as the allowed tags array + * documented in FilterInterface::getHTMLRestrictions(). * - * @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManager::WILDCARD_ELEMENT_METHODS + * @see \Drupal\ckeditor5\HTMLRestrictionsUtilities::WILDCARD_ELEMENT_METHODS * Each key in this array represents a valid wildcard tag. + * + * @see \Drupal\filter\Plugin\Filter\FilterHtml + * @see \Drupal\filter\Plugin\FilterInterface::getHTMLRestrictions() */ public static function allowedElementsStringToHtmlFilterArray(string $elements_string): array { preg_match('/<(\$[A-Z,a-z]*)/', $elements_string, $wildcard_matches); @@ -105,7 +114,7 @@ public static function allowedElementsStringToHtmlFilterArray(string $elements_s if ($node->hasAttributes()) { foreach ($node->attributes as $attribute_name => $attribute) { $value = empty($attribute->value) ? TRUE : explode(' ', $attribute->value); - self::providedElementsAttributes($elements, $tag, $attribute_name, $value); + self::addAllowedAttributeToElements($elements, $tag, $attribute_name, $value); } } else { @@ -121,10 +130,13 @@ public static function allowedElementsStringToHtmlFilterArray(string $elements_s * Cleans unwanted artifacts from "allowed HTML" arrays. * * @param array $elements - * An array of allowed elements, structured as expected by filter_html. + * An array of allowed elements. The structure is the same as the allowed + * tags array documented in FilterInterface::getHTMLRestrictions(). * * @return array * The array without unwanted artifacts. + * + * @see \Drupal\filter\Plugin\FilterInterface::getHTMLRestrictions() */ public static function cleanAllowedHtmlArray(array $elements): array { // When recursively merging elements arrays, unkeyed boolean values can @@ -141,21 +153,35 @@ public static function cleanAllowedHtmlArray(array $elements): array { * Adds allowed attributes to the elements array. * * @param array $elements - * The elements array. + * The elements array. The structure is the same as the allowed tags array + * documented in FilterInterface::getHTMLRestrictions(). * @param string $tag * The tag having its attributes configured. * @param string $attribute * The attribute being configured. - * @param array|bool $value + * @param array|true $value * The attribute config value. + * + * @see \Drupal\filter\Plugin\FilterInterface::getHTMLRestrictions() */ - public static function providedElementsAttributes(array &$elements, string $tag, string $attribute, $value): void { - $attribute_already_allows_all = isset($elements[$tag][$attribute]) && $elements[$tag][$attribute] === TRUE; + public static function addAllowedAttributeToElements(array &$elements, string $tag, string $attribute, $value): void { + if (isset($elements[$tag][$attribute]) && $elements[$tag][$attribute] === TRUE) { + // There's nothing to change as the tag/attribute combination is already + // set to allow all. + return; + } + + if (isset($elements[$tag]) && $elements[$tag] === FALSE) { + // If the tag is already allowed with no attributes then the value will be + // FALSE. We need to convert the value to an empty array so that attribute + // configuration can be added. + $elements[$tag] = []; + } if ($value === TRUE) { $elements[$tag][$attribute] = TRUE; } - elseif (!$attribute_already_allows_all) { + else { foreach ($value as $attribute_value) { $elements[$tag][$attribute][$attribute_value] = TRUE; } @@ -165,6 +191,9 @@ public static function providedElementsAttributes(array &$elements, string $tag, /** * Compares two HTML restrictions. * + * The structure of the arrays is the same as the allowed tags array + * documented in FilterInterface::getHTMLRestrictions(). + * * @param array $elements_array_1 * The array to compare from. * @param array $elements_array_2 @@ -173,6 +202,8 @@ public static function providedElementsAttributes(array &$elements, string $tag, * @return array * Returns an array with all the values in $elements_array_1 that are not * present in $elements_array_1, including values that are FALSE + * + * @see \Drupal\filter\Plugin\FilterInterface::getHTMLRestrictions() */ public static function diffAllowedElements(array $elements_array_1, array $elements_array_2): array { return array_filter( diff --git a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php index 71ca1e66d050..8a7053f33e80 100644 --- a/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php +++ b/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php @@ -326,10 +326,7 @@ public function getProvidedElements(array $plugin_ids = [], EditorInterface $edi if (is_array($attribute_value)) { $attribute_value = array_keys($attribute_value); } - $element_already_allows_all_values = isset($elements[$wildcard_tag][$attribute_name]) && $elements[$wildcard_tag][$attribute_name] === TRUE; - if (!$element_already_allows_all_values) { - HTMLRestrictionsUtilities::providedElementsAttributes($elements, $wildcard_tag, $attribute_name, $attribute_value); - } + HTMLRestrictionsUtilities::addAllowedAttributeToElements($elements, $wildcard_tag, $attribute_name, $attribute_value); } } } -- GitLab From 93f041695535117bc0d90a45347bbf476d962e38 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Tue, 16 Nov 2021 08:24:01 +0000 Subject: [PATCH 35/69] Issue #2707163 by quietone, chishah92, jhodgdon, AndrewHD, xjm, dww, jdelvillar01, alexpott: core/USAGE.TXT -- API section talks only about hooks and functions (cherry picked from commit c304842b8eab423c5ffad9d82c0082049514df3a) --- core/USAGE.txt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/core/USAGE.txt b/core/USAGE.txt index e9efa61aa1f3..9b772874f35d 100644 --- a/core/USAGE.txt +++ b/core/USAGE.txt @@ -68,12 +68,9 @@ DEVELOPING FOR DRUPAL --------------------- Drupal contains an extensive API that allows you to add to and modify the -functionality of your site. The API consists of "hooks", which allow modules to -react to system events and customize Drupal's behavior, and functions that -standardize common operations such as database queries and form generation. The -flexible hook architecture means that you should never need to directly modify -the files that come with Drupal core to achieve the functionality you want; -instead, functionality modifications take the form of modules. +functionality of your site. This means that you should never need to directly +modify the files that come with Drupal core to achieve the behavior you want; +instead, modifications take the form of modules. When you need new functionality for your Drupal site, search for existing contributed modules. If you find a module that matches except for a bug or an @@ -82,6 +79,8 @@ back to the project in the form of a "patch". Create new custom modules only when nothing existing comes close to what you need. More about developing: + * Extending and altering Drupal + https://api.drupal.org/api/drupal/core%21core.api.php/group/extending * Search for existing contributed modules: https://www.drupal.org/project/project_module * Contribute a patch: @@ -91,6 +90,6 @@ More about developing: * Follow programming best practices: https://www.drupal.org/docs/develop/standards * Refer to the API documentation: - https://api.drupal.org/api/drupal/9 + https://api.drupal.org * Learn from documented Drupal API examples: https://www.drupal.org/project/examples -- GitLab From 71b896597a21db4bd68d7e8a4f2793475cc7847a Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Tue, 16 Nov 2021 12:07:58 +0000 Subject: [PATCH 36/69] Issue #3248801 by daffie, rakesh.gectcr, bbrala, longwave: [Symfony 6] The Drupal\Tests\jsonapi\Functional\JsonApiFunctionalTest fails with Symfony 5 (cherry picked from commit 5281af2829ef92fd3409d7326a662ca5ca3f3bde) --- .../jsonapi/tests/src/Functional/JsonApiFunctionalTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/jsonapi/tests/src/Functional/JsonApiFunctionalTest.php b/core/modules/jsonapi/tests/src/Functional/JsonApiFunctionalTest.php index 9f012309e5ac..272fbdf395c4 100644 --- a/core/modules/jsonapi/tests/src/Functional/JsonApiFunctionalTest.php +++ b/core/modules/jsonapi/tests/src/Functional/JsonApiFunctionalTest.php @@ -660,7 +660,7 @@ public function testWrite() { $created_response = Json::decode($response->getBody()->__toString()); $this->assertEquals(422, $response->getStatusCode()); $this->assertNotEmpty($created_response['errors']); - $this->assertEquals('Unprocessable Entity', $created_response['errors'][0]['title']); + $this->assertStringStartsWith('Unprocessable', $created_response['errors'][0]['title']); // 6.2 Relationships are not included in "data". $malformed_body = $body; unset($malformed_body['data']['relationships']); @@ -849,7 +849,7 @@ public function testWrite() { $this->assertEquals(422, $response->getStatusCode()); $this->assertCount(2, $updated_response['errors']); for ($i = 0; $i < 2; $i++) { - $this->assertEquals("Unprocessable Entity", $updated_response['errors'][$i]['title']); + $this->assertStringStartsWith('Unprocessable', $updated_response['errors'][$i]['title']); $this->assertEquals(422, $updated_response['errors'][$i]['status']); } $this->assertEquals("title: This value should not be null.", $updated_response['errors'][0]['detail']); -- GitLab From 5939914c8e2951ba889774efca5de4da3e6e57cd Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Tue, 16 Nov 2021 12:45:10 +0000 Subject: [PATCH 37/69] Issue #3248809 by daffie, larowlan: [Symfony 6] The Drupal\Tests\file\Kernel\FileItemValidationTest fails with Symfony 5 (cherry picked from commit f4d355a22cdc3a1ad519929c4f29b4aa0c6c9785) --- core/lib/Drupal/Core/Validation/DrupalTranslator.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/lib/Drupal/Core/Validation/DrupalTranslator.php b/core/lib/Drupal/Core/Validation/DrupalTranslator.php index 6ac4169877e4..88c78e94c3dd 100644 --- a/core/lib/Drupal/Core/Validation/DrupalTranslator.php +++ b/core/lib/Drupal/Core/Validation/DrupalTranslator.php @@ -33,9 +33,8 @@ public function trans($id, array $parameters = [], $domain = NULL, $locale = NUL // Symfony violation messages may separate singular and plural versions // with "|". $ids = explode('|', $id); - if (count($ids) > 1) { - $number = $parameters['%count%'] ?? 1; - return \Drupal::translation()->formatPlural($number, $ids[0], $ids[1], $this->processParameters($parameters), $this->getOptions($domain, $locale)); + if ((count($ids) > 1) && isset($parameters['%count%'])) { + return \Drupal::translation()->formatPlural($parameters['%count%'], $ids[0], $ids[1], $this->processParameters($parameters), $this->getOptions($domain, $locale)); } return new TranslatableMarkup($id, $this->processParameters($parameters), $this->getOptions($domain, $locale)); -- GitLab From 72459cd0a269191cd119ca5922509132be45a9e0 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Tue, 16 Nov 2021 12:47:21 +0000 Subject: [PATCH 38/69] Issue #3248013 by daffie, longwave: [Symfony6] The Drupal\Tests\views\Unit\Plugin\argument_default\QueryParameterTest fails for Symfony 5.4 (cherry picked from commit 94b94e7ef9a782a923d118342736b815e1847a24) --- .../views/src/Plugin/views/argument_default/QueryParameter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/views/src/Plugin/views/argument_default/QueryParameter.php b/core/modules/views/src/Plugin/views/argument_default/QueryParameter.php index 1b45615fd83f..b864b603ea9d 100644 --- a/core/modules/views/src/Plugin/views/argument_default/QueryParameter.php +++ b/core/modules/views/src/Plugin/views/argument_default/QueryParameter.php @@ -66,7 +66,7 @@ public function getArgument() { $current_request = $this->view->getRequest(); if ($current_request->query->has($this->options['query_param'])) { - $param = $current_request->query->get($this->options['query_param']); + $param = $current_request->query->all()[$this->options['query_param']]; if (is_array($param)) { $conjunction = ($this->options['multiple'] == 'and') ? ',' : '+'; $param = implode($conjunction, $param); -- GitLab From 5cf24e8a92a474c3ebbd9b9831e71cc4b90631ff Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Tue, 16 Nov 2021 13:35:50 +0000 Subject: [PATCH 39/69] Issue #3248816 by bsuttis, danflanagan8, quietone: ResponsiveImageFieldUiTest.php should be moved to tests directory (cherry picked from commit 3795c75c97c5fa6e0e224bed62267bbaa887e759) --- .../FunctionalJavascript/ResponsiveImageFieldUiTest.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) rename core/modules/responsive_image/{ => tests}/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php (97%) diff --git a/core/modules/responsive_image/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php b/core/modules/responsive_image/tests/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php similarity index 97% rename from core/modules/responsive_image/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php rename to core/modules/responsive_image/tests/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php index 26571f556e98..7ecfd5fbec38 100644 --- a/core/modules/responsive_image/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php +++ b/core/modules/responsive_image/tests/src/FunctionalJavascript/ResponsiveImageFieldUiTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\responsive_image\Tests; +namespace Drupal\Tests\responsive_image\FunctionalJavascript; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; use Drupal\responsive_image\Entity\ResponsiveImageStyle; @@ -12,6 +12,11 @@ */ class ResponsiveImageFieldUiTest extends WebDriverTestBase { + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * Modules to install. * -- GitLab From 580535ba56dae3bf36360192fe4cb04d46c1165d Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Tue, 16 Nov 2021 14:22:30 +0000 Subject: [PATCH 40/69] Issue #3248810 by daffie: [Symfony 6] The Drupal\Tests\jsonapi\Kernel\EventSubscriber\ResourceObjectNormalizerCacherTest fails with Symfony 5 (cherry picked from commit b9fd8ef3d5f50f6afe51488adb0c81a5b6b9f4a4) --- .../ResourceObjectNormalizerCacherTest.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/modules/jsonapi/tests/src/Kernel/EventSubscriber/ResourceObjectNormalizerCacherTest.php b/core/modules/jsonapi/tests/src/Kernel/EventSubscriber/ResourceObjectNormalizerCacherTest.php index e715edc47e19..2d213e970f54 100644 --- a/core/modules/jsonapi/tests/src/Kernel/EventSubscriber/ResourceObjectNormalizerCacherTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/EventSubscriber/ResourceObjectNormalizerCacherTest.php @@ -9,7 +9,10 @@ use Drupal\jsonapi\Normalizer\Value\CacheableNormalization; use Drupal\KernelTests\KernelTestBase; use Drupal\user\Entity\User; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\TerminateEvent; +use Symfony\Component\HttpKernel\HttpKernelInterface; /** * @coversDefaultClass \Drupal\jsonapi\EventSubscriber\ResourceObjectNormalizationCacher @@ -92,8 +95,12 @@ public function testLinkNormalizationCacheability() { ResourceObjectNormalizationCacher::RESOURCE_CACHE_SUBSET_FIELDS => [], ]; $this->cacher->saveOnTerminate($resource_object, $normalization_parts); - $event = $this->prophesize(TerminateEvent::class); - $this->cacher->onTerminate($event->reveal()); + + $http_kernel = $this->prophesize(HttpKernelInterface::class); + $request = $this->prophesize(Request::class); + $response = $this->prophesize(Response::class); + $event = new TerminateEvent($http_kernel->reveal(), $request->reveal(), $response->reveal()); + $this->cacher->onTerminate($event); $this->assertNotFalse((bool) $this->cacher->get($resource_object)); Cache::invalidateTags([$cache_tag_to_invalidate]); $this->assertFalse((bool) $this->cacher->get($resource_object)); -- GitLab From 92e176d42b14e9a2d086c8563322f928b0a34505 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Tue, 16 Nov 2021 16:16:57 +0000 Subject: [PATCH 41/69] Issue #3056409 by rkostov, larowlan, maximpodorov: BlockRepository::contextHandler is created dynamically (cherry picked from commit 0e61d2181dcb11ec8dcd36e863c9fb2d487478ee) --- core/modules/block/src/BlockRepository.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/modules/block/src/BlockRepository.php b/core/modules/block/src/BlockRepository.php index 2f27df3d196f..146155717a7b 100644 --- a/core/modules/block/src/BlockRepository.php +++ b/core/modules/block/src/BlockRepository.php @@ -26,6 +26,13 @@ class BlockRepository implements BlockRepositoryInterface { */ protected $themeManager; + /** + * The context handler. + * + * @var \Drupal\Core\Plugin\Context\ContextHandlerInterface + */ + protected $contextHandler; + /** * Constructs a new BlockRepository. * -- GitLab From 9de422eaf3080ba78acd93050ececb36f86109fe Mon Sep 17 00:00:00 2001 From: xjm <xjm@65776.no-reply.drupal.org> Date: Wed, 17 Nov 2021 15:05:52 -0600 Subject: [PATCH 42/69] SA-CORE-2021-011 by jbogdanski, Wim Leers, xjm, greggles, lauriii, tedbow (cherry picked from commit efe095eeba08904148c8b9a184e5b891a870f570) --- core/assets/vendor/ckeditor/CHANGES.md | 72 + core/assets/vendor/ckeditor/SECURITY.md | 10 + core/assets/vendor/ckeditor/ckeditor.js | 1828 +++++++++-------- core/assets/vendor/ckeditor/lang/af.js | 2 +- core/assets/vendor/ckeditor/lang/ar.js | 2 +- core/assets/vendor/ckeditor/lang/az.js | 2 +- core/assets/vendor/ckeditor/lang/bg.js | 2 +- core/assets/vendor/ckeditor/lang/bn.js | 2 +- core/assets/vendor/ckeditor/lang/bs.js | 2 +- core/assets/vendor/ckeditor/lang/ca.js | 2 +- core/assets/vendor/ckeditor/lang/cs.js | 2 +- core/assets/vendor/ckeditor/lang/cy.js | 2 +- core/assets/vendor/ckeditor/lang/da.js | 2 +- core/assets/vendor/ckeditor/lang/de-ch.js | 2 +- core/assets/vendor/ckeditor/lang/de.js | 2 +- core/assets/vendor/ckeditor/lang/el.js | 2 +- core/assets/vendor/ckeditor/lang/en-au.js | 2 +- core/assets/vendor/ckeditor/lang/en-ca.js | 2 +- core/assets/vendor/ckeditor/lang/en-gb.js | 2 +- core/assets/vendor/ckeditor/lang/en.js | 2 +- core/assets/vendor/ckeditor/lang/eo.js | 2 +- core/assets/vendor/ckeditor/lang/es-mx.js | 2 +- core/assets/vendor/ckeditor/lang/es.js | 2 +- core/assets/vendor/ckeditor/lang/et.js | 2 +- core/assets/vendor/ckeditor/lang/eu.js | 2 +- core/assets/vendor/ckeditor/lang/fa.js | 2 +- core/assets/vendor/ckeditor/lang/fi.js | 2 +- core/assets/vendor/ckeditor/lang/fo.js | 2 +- core/assets/vendor/ckeditor/lang/fr-ca.js | 2 +- core/assets/vendor/ckeditor/lang/fr.js | 2 +- core/assets/vendor/ckeditor/lang/gl.js | 2 +- core/assets/vendor/ckeditor/lang/gu.js | 2 +- core/assets/vendor/ckeditor/lang/he.js | 2 +- core/assets/vendor/ckeditor/lang/hi.js | 2 +- core/assets/vendor/ckeditor/lang/hr.js | 2 +- core/assets/vendor/ckeditor/lang/hu.js | 2 +- core/assets/vendor/ckeditor/lang/id.js | 2 +- core/assets/vendor/ckeditor/lang/is.js | 2 +- core/assets/vendor/ckeditor/lang/it.js | 2 +- core/assets/vendor/ckeditor/lang/ja.js | 2 +- core/assets/vendor/ckeditor/lang/ka.js | 2 +- core/assets/vendor/ckeditor/lang/km.js | 2 +- core/assets/vendor/ckeditor/lang/ko.js | 2 +- core/assets/vendor/ckeditor/lang/ku.js | 2 +- core/assets/vendor/ckeditor/lang/lt.js | 2 +- core/assets/vendor/ckeditor/lang/lv.js | 2 +- core/assets/vendor/ckeditor/lang/mk.js | 2 +- core/assets/vendor/ckeditor/lang/mn.js | 2 +- core/assets/vendor/ckeditor/lang/ms.js | 2 +- core/assets/vendor/ckeditor/lang/nb.js | 2 +- core/assets/vendor/ckeditor/lang/nl.js | 2 +- core/assets/vendor/ckeditor/lang/no.js | 2 +- core/assets/vendor/ckeditor/lang/oc.js | 2 +- core/assets/vendor/ckeditor/lang/pl.js | 2 +- core/assets/vendor/ckeditor/lang/pt-br.js | 2 +- core/assets/vendor/ckeditor/lang/pt.js | 2 +- core/assets/vendor/ckeditor/lang/ro.js | 2 +- core/assets/vendor/ckeditor/lang/ru.js | 2 +- core/assets/vendor/ckeditor/lang/si.js | 2 +- core/assets/vendor/ckeditor/lang/sk.js | 2 +- core/assets/vendor/ckeditor/lang/sl.js | 2 +- core/assets/vendor/ckeditor/lang/sq.js | 2 +- core/assets/vendor/ckeditor/lang/sr-latn.js | 2 +- core/assets/vendor/ckeditor/lang/sr.js | 2 +- core/assets/vendor/ckeditor/lang/sv.js | 2 +- core/assets/vendor/ckeditor/lang/th.js | 2 +- core/assets/vendor/ckeditor/lang/tr.js | 2 +- core/assets/vendor/ckeditor/lang/tt.js | 2 +- core/assets/vendor/ckeditor/lang/ug.js | 2 +- core/assets/vendor/ckeditor/lang/uk.js | 2 +- core/assets/vendor/ckeditor/lang/vi.js | 2 +- core/assets/vendor/ckeditor/lang/zh-cn.js | 2 +- core/assets/vendor/ckeditor/lang/zh.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ar.js | 14 +- .../plugins/a11yhelp/dialogs/lang/bg.js | 4 +- .../plugins/a11yhelp/dialogs/lang/en-gb.js | 14 +- .../plugins/a11yhelp/dialogs/lang/en.js | 14 +- .../plugins/a11yhelp/dialogs/lang/fo.js | 14 +- .../plugins/a11yhelp/dialogs/lang/gu.js | 14 +- .../plugins/a11yhelp/dialogs/lang/hi.js | 14 +- .../plugins/a11yhelp/dialogs/lang/km.js | 14 +- .../plugins/a11yhelp/dialogs/lang/lt.js | 14 +- .../plugins/a11yhelp/dialogs/lang/mk.js | 4 +- .../plugins/a11yhelp/dialogs/lang/mn.js | 14 +- .../plugins/a11yhelp/dialogs/lang/th.js | 14 +- .../plugins/a11yhelp/dialogs/lang/tt.js | 14 +- .../plugins/specialchar/dialogs/lang/id.js | 18 +- .../ckeditor/skins/moono-lisa/dialog.css | 2 +- .../ckeditor/skins/moono-lisa/dialog_ie.css | 2 +- .../ckeditor/skins/moono-lisa/dialog_ie8.css | 2 +- .../skins/moono-lisa/dialog_iequirks.css | 2 +- .../ckeditor/skins/moono-lisa/editor.css | 2 +- .../skins/moono-lisa/editor_gecko.css | 2 +- .../ckeditor/skins/moono-lisa/editor_ie.css | 2 +- .../ckeditor/skins/moono-lisa/editor_ie8.css | 2 +- .../skins/moono-lisa/editor_iequirks.css | 2 +- core/core.libraries.yml | 4 +- 97 files changed, 1174 insertions(+), 1078 deletions(-) create mode 100644 core/assets/vendor/ckeditor/SECURITY.md diff --git a/core/assets/vendor/ckeditor/CHANGES.md b/core/assets/vendor/ckeditor/CHANGES.md index 9a9f7b490290..74ebc5b3d3f7 100644 --- a/core/assets/vendor/ckeditor/CHANGES.md +++ b/core/assets/vendor/ckeditor/CHANGES.md @@ -1,6 +1,78 @@ CKEditor 4 Changelog ==================== +## CKEditor 4.17.1 + +Fixed issues: + +* [#4979](https://github.com/ckeditor/ckeditor4/issues/3757): Added cache key in [#4761](https://github.com/ckeditor/ckeditor4/issues/4761) started to breaking relative links for external CSS resources. The fix had been reverted and will be corrected in the upcoming release. + +## CKEditor 4.17 + +**Security Updates:** + +* Fixed XSS vulnerability in the core module reported by [William Bowling](https://github.com/wbowling). + + Issue summary: The vulnerability allowed to inject malformed comments HTML bypassing content sanitization, which could result in executing JavaScript code. See [security advisory](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-7h26-63m7-qhf2) for more details. + +* Fixed XSS vulnerability in the core module reported by [Maurice Dauer](https://twitter.com/laytonctf). + + Issue summary: The vulnerability allowed to inject malformed HTML bypassing content sanitization, which could result in executing JavaScript code. See [security advisory](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-pvmx-g8h5-cprj) for more details. + +You can read more details in the relevant security advisory and [contact us](security@cksource.com) if you have more questions. + +**An upgrade is highly recommended!** + +**Highlights:** + +Adobe [ended support of Flash Player](https://www.adobe.com/products/flashplayer/end-of-life.html) on December 31, 2020 and blocked Flash content from running in Flash Player beginning January 12, 2021. +We have decided to deprecate and remove the [Flash](https://ckeditor.com/cke4/addon/flash) plugin from CKEditor 4 to help protect users' systems and discourage using insecure software. + +New Features: + +* [#3433](https://github.com/ckeditor/ckeditor4/issues/3433): Marked required fields in dialogs with asterisk (`*`) symbol. +* [#4374](https://github.com/ckeditor/ckeditor4/issues/4374): Integrated the [Maximize](https://ckeditor.com/cke4/addon/maximize) plugin with browser's History API. +* [#4461](https://github.com/ckeditor/ckeditor4/issues/4461): Introduced the possibility to delay editor initialization while it is in a detached DOM element. +* [#4462](https://github.com/ckeditor/ckeditor4/issues/4462): Introduced support for reattaching editor container element to DOM. +* [#4612](https://github.com/ckeditor/ckeditor4/issues/4612): Allow pasting images as Base64 from [clipboard](https://ckeditor.com/cke4/addon/clipboard) in all browsers except IE. +* [#4681](https://github.com/ckeditor/ckeditor4/issues/4681): Allow drag and drop images as Base64. +* [#4750](https://github.com/ckeditor/ckeditor4/issues/4750): Added notification for pasting and dropping unsupported file types into the editor. +* [#4807](https://github.com/ckeditor/ckeditor4/issues/4807): [Chrome] Improved the performance of pasting large images. Thanks to [FlowIT-JIT](https://github.com/FlowIT-JIT)! +* [#4850](https://github.com/ckeditor/ckeditor4/issues/4850): Added support for loading [content templates](https://ckeditor.com/cke4/addon/templates) from HTML files. Thanks to [Fynn96](https://github.com/Fynn96)! +* [#4874](https://github.com/ckeditor/ckeditor4/issues/4874): Added the [`config.clipboard_handleImages`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-clipboard_handleImages) configuration option for enabling and disabling built-in support for pasting and dropping images in the [Clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin. Thanks to [FlowIT-JIT](https://github.com/FlowIT-JIT)! +* [#4026](https://github.com/ckeditor/ckeditor4/issues/4026): [Preview](https://ckeditor.com/cke4/addon/preview) plugin now uses the [`editor#title`](http://localhost/ckeditor4-docs/build/docs/ckeditor4/latest/api/CKEDITOR_editor.html#property-title) property for the title of the preview window. Thanks to [Ely](https://github.com/Elyasin)! +* [#4467](https://github.com/ckeditor/ckeditor4/issues/4467): Added support for inserting content next to a block [widgets](https://ckeditor.com/cke4/addon/widget) using keyboard navigation. Thanks to [bunglegrind](https://github.com/bunglegrind)! + +Fixed Issues: + +* [#3757](https://github.com/ckeditor/ckeditor4/issues/3757): [Firefox] Fixed: images pasted from [clipboard](https://ckeditor.com/cke4/addon/clipboard) are not inserted as Base64-encoded images. +* [#3876](https://github.com/ckeditor/ckeditor4/issues/3876): Fixed: The [Print](https://ckeditor.com/cke4/addon/print) plugin incorrectly prints links and images. +* [#4444](https://github.com/ckeditor/ckeditor4/issues/4444): [Firefox] Fixed: Print preview is incorrectly loaded from CDN. +* [#4596](https://github.com/ckeditor/ckeditor4/issues/4596): Fixed: Incorrect handling of HSL/HSLA values in [`CKEDITOR.tools.color`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools_color.html). +* [#4597](https://github.com/ckeditor/ckeditor4/issues/4597): Fixed: Incorrect color conversion for HSL/HSLA values in [`CKEDITOR.tools.color`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools_color.html). +* [#4604](https://github.com/ckeditor/ckeditor4/issues/4604): Fixed: [`CKEDITOR.plugins.clipboard.dataTransfer#getTypes()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_clipboard_dataTransfer.html#method-getTypes) returns no types. +* [#4761](https://github.com/ckeditor/ckeditor4/issues/4761): Fixed: Not all resources loaded by the editor respect the cache key. +* [#4783](https://github.com/ckeditor/ckeditor4/issues/4783): Fixed: The [Accessibility Help](https://ckeditor.com/cke4/addon/a11yhelp) dialog does not contain info about focus being moved back to the editing area upon activating a toolbar button. +* [#4790](https://github.com/ckeditor/ckeditor4/issues/4790): Fixed: Printing page is invoked before the printed page is fully loaded. +* [#4874](https://github.com/ckeditor/ckeditor4/issues/4874): Fixed: Built-in support for pasting and dropping images in the [Clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin restricts third party plugins from handling image pasting. Thanks to [FlowIT-JIT](https://github.com/FlowIT-JIT)! +* [#4888](https://github.com/ckeditor/ckeditor4/issues/4888): Fixed: The [`CKEDITOR.dialog#setState()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog.html#method-setState) method throws error when there is no "OK" button in the dialog. +* [#4858](https://github.com/ckeditor/ckeditor4/issues/4858): Fixed: The [Autolink](https://ckeditor.com/cke4/addon/autolink) plugin incorrectly escapes the `&` characters when pasting links into the editor. +* [#4892](https://github.com/ckeditor/ckeditor4/issues/4892): Fixed: Focus of buttons in dialogs is not visible enough in High Contrast mode. +* [#3858](https://github.com/ckeditor/ckeditor4/issues/3858): Fixed: Pasting content in `ENTER_BR` [enter mode](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-enterMode) crashes the editor. +* [#4891](https://github.com/ckeditor/ckeditor4/issues/4891): Fixed: The [Autogrow](https://ckeditor.com/cke4/addon/autogrow) plugin applies fixed width to the editor. + +API Changes: + +* [#4462](https://github.com/ckeditor/ckeditor4/issues/4462): [`CKEDITOR.editor#getSelection()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#method-getSelection) now returns `null` if the editor is in recreating state. +* [#4583](https://github.com/ckeditor/ckeditor4/issues/4583): Added support for new, comma-less color syntax to [`CKEDITOR.tools.color`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools_color.html). +* [#4604](https://github.com/ckeditor/ckeditor4/issues/4604): Added the [`CKEDITOR.plugins.clipboard.dataTransfer#isFileTransfer()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_clipboard_dataTransfer.html#method-isFileTransfer) method. +* [#4790](https://github.com/ckeditor/ckeditor4/issues/4790): Added `callback` parameter to [`CKEDITOR.plugins.preview#createPreview()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_preview.html#method-createPreview) method. + +Other Changes: + +* [#4866](https://github.com/ckeditor/ckeditor4/issues/#4866): The [Flash](https://ckeditor.com/cke4/addon/flash) plugin is now deprecated and has been removed from CKEditor 4. +* [#4901](https://github.com/ckeditor/ckeditor4/issues/4901): Redesigned buttons placement in the [Content templates](https://ckeditor.com/cke4/addon/templates) dialog to make it more UX friendly. Thanks to [Fynn96](https://github.com/Fynn96)! + ## CKEditor 4.16.2 **Security Updates:** diff --git a/core/assets/vendor/ckeditor/SECURITY.md b/core/assets/vendor/ckeditor/SECURITY.md new file mode 100644 index 000000000000..6e04d5a186ca --- /dev/null +++ b/core/assets/vendor/ckeditor/SECURITY.md @@ -0,0 +1,10 @@ +# Reporting a security issues + +If you believe you have found a security issue in the CKEditor 4 software, please contact us immediately. + +When reporting a potential security problem, please bear this in mind: + +* Make sure to provide as many details as possible about the vulnerability. +* Please do not disclose publicly any security issues until we fix them and publish security releases. + +Contact the security team at security@cksource.com. As soon as we receive the security report, we will work promptly to confirm the issue and then to provide a security fix. diff --git a/core/assets/vendor/ckeditor/ckeditor.js b/core/assets/vendor/ckeditor/ckeditor.js index 16aec92b1465..7c4d6fd9695f 100644 --- a/core/assets/vendor/ckeditor/ckeditor.js +++ b/core/assets/vendor/ckeditor/ckeditor.js @@ -2,14 +2,14 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -(function(){window.CKEDITOR&&window.CKEDITOR.dom||(window.CKEDITOR||(window.CKEDITOR=function(){var b=/(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,h={timestamp:"L7CE",version:"4.16.2",revision:"4e64f6721",rnd:Math.floor(900*Math.random())+100,_:{pending:[],basePathSrcPattern:b},status:"unloaded",basePath:function(){var a=window.CKEDITOR_BASEPATH||"";if(!a)for(var e=document.getElementsByTagName("script"),f=0;f<e.length;f++){var l=e[f].src.match(b);if(l){a=l[1];break}}-1==a.indexOf(":/")&&"//"!=a.slice(0, +(function(){window.CKEDITOR&&window.CKEDITOR.dom||(window.CKEDITOR||(window.CKEDITOR=function(){var b=/(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,h={timestamp:"LAHG",version:"4.17.1",revision:"f6dd30807a",rnd:Math.floor(900*Math.random())+100,_:{pending:[],basePathSrcPattern:b},status:"unloaded",basePath:function(){var a=window.CKEDITOR_BASEPATH||"";if(!a)for(var e=document.getElementsByTagName("script"),f=0;f<e.length;f++){var m=e[f].src.match(b);if(m){a=m[1];break}}-1==a.indexOf(":/")&&"//"!=a.slice(0, 2)&&(a=0===a.indexOf("/")?location.href.match(/^.*?:\/\/[^\/]*/)[0]+a:location.href.match(/^[^\?]*\/(?:)/)[0]+a);if(!a)throw'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return a}(),getUrl:function(a){-1==a.indexOf(":/")&&0!==a.indexOf("/")&&(a=this.basePath+a);this.timestamp&&"/"!=a.charAt(a.length-1)&&!/[&?]t=/.test(a)&&(a+=(0<=a.indexOf("?")?"\x26":"?")+"t\x3d"+this.timestamp);return a}, domReady:function(){function a(){try{document.addEventListener?(document.removeEventListener("DOMContentLoaded",a,!1),window.removeEventListener("load",a,!1),b()):document.attachEvent&&"complete"===document.readyState&&(document.detachEvent("onreadystatechange",a),window.detachEvent("onload",a),b())}catch(e){}}function b(){for(var a;a=e.shift();)a()}var e=[];return function(b){function c(){try{document.documentElement.doScroll("left")}catch(g){setTimeout(c,1);return}a()}e.push(b);"complete"===document.readyState&& setTimeout(a,1);if(1==e.length)if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,!1),window.addEventListener("load",a,!1);else if(document.attachEvent){document.attachEvent("onreadystatechange",a);window.attachEvent("onload",a);b=!1;try{b=!window.frameElement}catch(d){}document.documentElement.doScroll&&b&&c()}}}()},f=window.CKEDITOR_GETURL;if(f){var e=h.getUrl;h.getUrl=function(a){return f.call(h,a)||e.call(h,a)}}return h}()),function(){var b={};CKEDITOR.event||(CKEDITOR.event= function(){},CKEDITOR.event.implementOn=function(b){var f=CKEDITOR.event.prototype,e;for(e in f)null==b[e]&&(b[e]=f[e])},CKEDITOR.event.prototype=function(){function h(a){var b=f(this);return b[a]||(b[a]=new e(a))}var f=function(a){a=a.getPrivate&&a.getPrivate()||a._||(a._={});return a.events||(a.events={})},e=function(a){this.name=a;this.listeners=[]};e.prototype={getListenerIndex:function(a){for(var b=0,e=this.listeners;b<e.length;b++)if(e[b].fn==a)return b;return-1}};return{define:function(a,b){var e= -h.call(this,a);CKEDITOR.tools.extend(e,b,!0)},on:function(a,e,f,l,c){function d(n,c,d,y){n={name:a,sender:this,editor:n,data:c,listenerData:l,stop:d,cancel:y,removeListener:g};return!1===e.call(f,n)?b:n.data}function g(){n.removeListener(a,e)}var n=this,y=h.call(this,a);if(0>y.getListenerIndex(e)){y=y.listeners;f||(f=this);isNaN(c)&&(c=10);d.fn=e;d.priority=c;for(var w=y.length-1;0<=w;w--)if(y[w].priority<=c)return y.splice(w+1,0,d),{removeListener:g};y.unshift(d)}return{removeListener:g}},once:function(){var a= -Array.prototype.slice.call(arguments),b=a[1];a[1]=function(a){a.removeListener();return b.apply(this,arguments)};return this.on.apply(this,a)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,e=function(){a=1},h=0,l=function(){h=1};return function(c,d,g){var n=f(this)[c];c=a;var y=h;a=h=0;if(n){var w=n.listeners;if(w.length)for(var w=w.slice(0),p,t=0;t<w.length;t++){if(n.errorProof)try{p=w[t].call(this, -g,d,e,l)}catch(r){}else p=w[t].call(this,g,d,e,l);p===b?h=1:"undefined"!=typeof p&&(d=p);if(a||h)break}}d=h?!1:"undefined"==typeof d?!0:d;a=c;h=y;return d}}(),fireOnce:function(a,b,e){b=this.fire(a,b,e);delete f(this)[a];return b},removeListener:function(a,b){var e=f(this)[a];if(e){var l=e.getListenerIndex(b);0<=l&&e.listeners.splice(l,1)}},removeAllListeners:function(){var a=f(this),b;for(b in a)delete a[b]},hasListeners:function(a){return(a=f(this)[a])&&0<a.listeners.length}}}())}(),CKEDITOR.editor|| +h.call(this,a);CKEDITOR.tools.extend(e,b,!0)},on:function(a,e,f,m,c){function d(n,c,d,y){n={name:a,sender:this,editor:n,data:c,listenerData:m,stop:d,cancel:y,removeListener:g};return!1===e.call(f,n)?b:n.data}function g(){n.removeListener(a,e)}var n=this,y=h.call(this,a);if(0>y.getListenerIndex(e)){y=y.listeners;f||(f=this);isNaN(c)&&(c=10);d.fn=e;d.priority=c;for(var v=y.length-1;0<=v;v--)if(y[v].priority<=c)return y.splice(v+1,0,d),{removeListener:g};y.unshift(d)}return{removeListener:g}},once:function(){var a= +Array.prototype.slice.call(arguments),b=a[1];a[1]=function(a){a.removeListener();return b.apply(this,arguments)};return this.on.apply(this,a)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,e=function(){a=1},h=0,m=function(){h=1};return function(c,d,g){var n=f(this)[c];c=a;var y=h;a=h=0;if(n){var v=n.listeners;if(v.length)for(var v=v.slice(0),p,q=0;q<v.length;q++){if(n.errorProof)try{p=v[q].call(this, +g,d,e,m)}catch(r){}else p=v[q].call(this,g,d,e,m);p===b?h=1:"undefined"!=typeof p&&(d=p);if(a||h)break}}d=h?!1:"undefined"==typeof d?!0:d;a=c;h=y;return d}}(),fireOnce:function(a,b,e){b=this.fire(a,b,e);delete f(this)[a];return b},removeListener:function(a,b){var e=f(this)[a];if(e){var m=e.getListenerIndex(b);0<=m&&e.listeners.splice(m,1)}},removeAllListeners:function(){var a=f(this),b;for(b in a)delete a[b]},hasListeners:function(a){return(a=f(this)[a])&&0<a.listeners.length}}}())}(),CKEDITOR.editor|| (CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(b,h){b in{instanceReady:1,loaded:1}&&(this[b]=!0);return CKEDITOR.event.prototype.fire.call(this,b,h,this)},CKEDITOR.editor.prototype.fireOnce=function(b,h){b in{instanceReady:1,loaded:1}&&(this[b]=!0);return CKEDITOR.event.prototype.fireOnce.call(this,b,h,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)),CKEDITOR.env||(CKEDITOR.env=function(){var b= navigator.userAgent.toLowerCase(),h=b.match(/edge[ \/](\d+.?\d*)/),f=-1<b.indexOf("trident/"),f=!(!h&&!f),f={ie:f,edge:!!h,webkit:!f&&-1<b.indexOf(" applewebkit/"),air:-1<b.indexOf(" adobeair/"),mac:-1<b.indexOf("macintosh"),quirks:"BackCompat"==document.compatMode&&(!document.documentMode||10>document.documentMode),mobile:-1<b.indexOf("mobile"),iOS:/(ipad|iphone|ipod)/.test(b),isCustomDomain:function(){if(!this.ie)return!1;var a=document.domain,b=window.location.hostname;return a!=b&&a!="["+b+"]"}, secure:"https:"==location.protocol};f.gecko="Gecko"==navigator.product&&!f.webkit&&!f.ie;f.webkit&&(-1<b.indexOf("chrome")?f.chrome=!0:f.safari=!0);var e=0;f.ie&&(e=h?parseFloat(h[1]):f.quirks||!document.documentMode?parseFloat(b.match(/msie (\d+)/)[1]):document.documentMode,f.ie9Compat=9==e,f.ie8Compat=8==e,f.ie7Compat=7==e,f.ie6Compat=7>e||f.quirks);f.gecko&&(h=b.match(/rv:([\d\.]+)/))&&(h=h[1].split("."),e=1E4*h[0]+100*(h[1]||0)+1*(h[2]||0));f.air&&(e=parseFloat(b.match(/ adobeair\/(\d+)/)[1])); @@ -18,16 +18,16 @@ f.iOS&&(f.cssClass+=" cke_browser_ios");f.hidpi&&(f.cssClass+=" cke_hidpi");retu function(b){(this._.pending||(this._.pending=[])).push(b)};(function(){CKEDITOR.domReady(function(){var b=CKEDITOR.loadFullCore,h=CKEDITOR.loadFullCoreTimeout;b&&(CKEDITOR.status="basic_ready",b&&b._load?b():h&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},1E3*h))})})();CKEDITOR.status="basic_loaded"}(),"use strict",CKEDITOR.VERBOSITY_WARN=1,CKEDITOR.VERBOSITY_ERROR=2,CKEDITOR.verbosity=CKEDITOR.VERBOSITY_WARN|CKEDITOR.VERBOSITY_ERROR,CKEDITOR.warn=function(b,h){CKEDITOR.verbosity& CKEDITOR.VERBOSITY_WARN&&CKEDITOR.fire("log",{type:"warn",errorCode:b,additionalData:h})},CKEDITOR.error=function(b,h){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_ERROR&&CKEDITOR.fire("log",{type:"error",errorCode:b,additionalData:h})},CKEDITOR.on("log",function(b){if(window.console&&window.console.log){var h=console[b.data.type]?b.data.type:"log",f=b.data.errorCode;if(b=b.data.additionalData)console[h]("[CKEDITOR] Error code: "+f+".",b);else console[h]("[CKEDITOR] Error code: "+f+".");console[h]("[CKEDITOR] For more information about this error go to https://ckeditor.com/docs/ckeditor4/latest/guide/dev_errors.html#"+ f)}},null,null,999),CKEDITOR.dom={},function(){function b(n,g,c){this._minInterval=n;this._context=c;this._lastOutput=this._scheduledTimer=0;this._output=CKEDITOR.tools.bind(g,c||{});var a=this;this.input=function(){function n(){a._lastOutput=(new Date).getTime();a._scheduledTimer=0;a._call()}if(!a._scheduledTimer||!1!==a._reschedule()){var g=(new Date).getTime()-a._lastOutput;g<a._minInterval?a._scheduledTimer=setTimeout(n,a._minInterval-g):n()}}}function h(n,g,c){b.call(this,n,g,c);this._args=[]; -var a=this;this.input=CKEDITOR.tools.override(this.input,function(n){return function(){a._args=Array.prototype.slice.call(arguments);n.call(this)}})}var f=[],e=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.ie?"-ms-":"",a=/&/g,m=/>/g,k=/</g,l=/"/g,c=/&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,d={lt:"\x3c",gt:"\x3e",amp:"\x26",quot:'"',nbsp:" ",shy:"Â"},g=function(n,g){return"#"==g[0]?String.fromCharCode(parseInt(g.slice(1),10)):d[g]};CKEDITOR.on("reset",function(){f=[]});CKEDITOR.tools= +var a=this;this.input=CKEDITOR.tools.override(this.input,function(n){return function(){a._args=Array.prototype.slice.call(arguments);n.call(this)}})}var f=[],e=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.ie?"-ms-":"",a=/&/g,k=/>/g,l=/</g,m=/"/g,c=/&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,d={lt:"\x3c",gt:"\x3e",amp:"\x26",quot:'"',nbsp:" ",shy:"Â"},g=function(n,g){return"#"==g[0]?String.fromCharCode(parseInt(g.slice(1),10)):d[g]};CKEDITOR.on("reset",function(){f=[]});CKEDITOR.tools= {arrayCompare:function(n,g){if(!n&&!g)return!0;if(!n||!g||n.length!=g.length)return!1;for(var c=0;c<n.length;c++)if(n[c]!=g[c])return!1;return!0},getIndex:function(n,g){for(var c=0;c<n.length;++c)if(g(n[c]))return c;return-1},clone:function(n){var g;if(n&&n instanceof Array){g=[];for(var c=0;c<n.length;c++)g[c]=CKEDITOR.tools.clone(n[c]);return g}if(null===n||"object"!=typeof n||n instanceof String||n instanceof Number||n instanceof Boolean||n instanceof Date||n instanceof RegExp||n.nodeType||n.window=== n)return n;g=new n.constructor;for(c in n)g[c]=CKEDITOR.tools.clone(n[c]);return g},capitalize:function(n,g){return n.charAt(0).toUpperCase()+(g?n.slice(1):n.slice(1).toLowerCase())},extend:function(n){var g=arguments.length,c,a;"boolean"==typeof(c=arguments[g-1])?g--:"boolean"==typeof(c=arguments[g-2])&&(a=arguments[g-1],g-=2);for(var d=1;d<g;d++){var b=arguments[d]||{};CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(b),function(g){if(!0===c||null==n[g])if(!a||g in a)n[g]=b[g]})}return n}, prototypedCopy:function(n){var g=function(){};g.prototype=n;return new g},copy:function(n){var g={},c;for(c in n)g[c]=n[c];return g},isArray:function(n){return"[object Array]"==Object.prototype.toString.call(n)},isEmpty:function(n){for(var g in n)if(n.hasOwnProperty(g))return!1;return!0},cssVendorPrefix:function(n,g,c){if(c)return e+n+":"+g+";"+n+":"+g;c={};c[n]=g;c[e+n]=g;return c},cssStyleToDomStyle:function(){var n=document.createElement("div").style,g="undefined"!=typeof n.cssFloat?"cssFloat": -"undefined"!=typeof n.styleFloat?"styleFloat":"float";return function(n){return"float"==n?g:n.replace(/-./g,function(n){return n.substr(1).toUpperCase()})}}(),buildStyleHtml:function(n){n=[].concat(n);for(var g,c=[],a=0;a<n.length;a++)if(g=n[a])/@import|[{}]/.test(g)?c.push("\x3cstyle\x3e"+g+"\x3c/style\x3e"):c.push('\x3clink type\x3d"text/css" rel\x3dstylesheet href\x3d"'+g+'"\x3e');return c.join("")},htmlEncode:function(n){return void 0===n||null===n?"":String(n).replace(a,"\x26amp;").replace(m, -"\x26gt;").replace(k,"\x26lt;")},htmlDecode:function(n){return n.replace(c,g)},htmlEncodeAttr:function(n){return CKEDITOR.tools.htmlEncode(n).replace(l,"\x26quot;")},htmlDecodeAttr:function(n){return CKEDITOR.tools.htmlDecode(n)},transformPlainTextToHtml:function(n,g){var c=g==CKEDITOR.ENTER_BR,a=this.htmlEncode(n.replace(/\r\n/g,"\n")),a=a.replace(/\t/g,"\x26nbsp;\x26nbsp; \x26nbsp;"),d=g==CKEDITOR.ENTER_P?"p":"div";if(!c){var b=/\n{2}/g;if(b.test(a))var e="\x3c"+d+"\x3e",l="\x3c/"+d+"\x3e",a=e+ -a.replace(b,function(){return l+e})+l}a=a.replace(/\n/g,"\x3cbr\x3e");c||(a=a.replace(new RegExp("\x3cbr\x3e(?\x3d\x3c/"+d+"\x3e)"),function(n){return CKEDITOR.tools.repeat(n,2)}));a=a.replace(/^ | $/g,"\x26nbsp;");return a=a.replace(/(>|\s) /g,function(n,g){return g+"\x26nbsp;"}).replace(/ (?=<)/g,"\x26nbsp;")},getNextNumber:function(){var n=0;return function(){return++n}}(),getNextId:function(){return"cke_"+this.getNextNumber()},getUniqueId:function(){for(var n="e",g=0;8>g;g++)n+=Math.floor(65536* -(1+Math.random())).toString(16).substring(1);return n},override:function(n,g){var c=g(n);c.prototype=n.prototype;return c},setTimeout:function(n,g,c,a,d){d||(d=window);c||(c=d);return d.setTimeout(function(){a?n.apply(c,[].concat(a)):n.apply(c)},g||0)},throttle:function(n,g,c){return new this.buffers.throttle(n,g,c)},trim:function(){var n=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(g){return g.replace(n,"")}}(),ltrim:function(){var g=/^[ \t\n\r]+/g;return function(c){return c.replace(g,"")}}(), +"undefined"!=typeof n.styleFloat?"styleFloat":"float";return function(n){return"float"==n?g:n.replace(/-./g,function(n){return n.substr(1).toUpperCase()})}}(),buildStyleHtml:function(n){n=[].concat(n);for(var g,c=[],a=0;a<n.length;a++)if(g=n[a])/@import|[{}]/.test(g)?c.push("\x3cstyle\x3e"+g+"\x3c/style\x3e"):c.push('\x3clink type\x3d"text/css" rel\x3dstylesheet href\x3d"'+g+'"\x3e');return c.join("")},htmlEncode:function(n){return void 0===n||null===n?"":String(n).replace(a,"\x26amp;").replace(k, +"\x26gt;").replace(l,"\x26lt;")},htmlDecode:function(n){return n.replace(c,g)},htmlEncodeAttr:function(n){return CKEDITOR.tools.htmlEncode(n).replace(m,"\x26quot;")},htmlDecodeAttr:function(n){return CKEDITOR.tools.htmlDecode(n)},transformPlainTextToHtml:function(n,g){var c=g==CKEDITOR.ENTER_BR,a=this.htmlEncode(n.replace(/\r\n/g,"\n")),a=a.replace(/\t/g,"\x26nbsp;\x26nbsp; \x26nbsp;"),d=g==CKEDITOR.ENTER_P?"p":"div";if(!c){var b=/\n{2}/g;if(b.test(a))var e="\x3c"+d+"\x3e",m="\x3c/"+d+"\x3e",a=e+ +a.replace(b,function(){return m+e})+m}a=a.replace(/\n/g,"\x3cbr\x3e");c||(a=a.replace(new RegExp("\x3cbr\x3e(?\x3d\x3c/"+d+"\x3e)"),function(n){return CKEDITOR.tools.repeat(n,2)}));a=a.replace(/^ | $/g,"\x26nbsp;");return a=a.replace(/(>|\s) /g,function(n,g){return g+"\x26nbsp;"}).replace(/ (?=<)/g,"\x26nbsp;")},getNextNumber:function(){var n=0;return function(){return++n}}(),getNextId:function(){return"cke_"+this.getNextNumber()},getUniqueId:function(){for(var n="e",g=0;8>g;g++)n+=Math.floor(65536* +(1+Math.random())).toString(16).substring(1);return n},override:function(n,g){var c=g(n);c.prototype=n.prototype;return c},setTimeout:function(n,g,c,a,d){d||(d=window);c||(c=d);return d.setTimeout(function(){a?n.apply(c,[].concat(a)):n.apply(c)},g||0)},throttle:function(n,g,c){return new this.buffers.throttle(n,g,c)},trim:function(){var n=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(g){return g.replace(n,"")}}(),ltrim:function(){var n=/^[ \t\n\r]+/g;return function(g){return g.replace(n,"")}}(), rtrim:function(){var g=/[ \t\n\r]+$/g;return function(c){return c.replace(g,"")}}(),indexOf:function(g,c){if("function"==typeof c)for(var a=0,d=g.length;a<d;a++){if(c(g[a]))return a}else{if(g.indexOf)return g.indexOf(c);a=0;for(d=g.length;a<d;a++)if(g[a]===c)return a}return-1},search:function(g,c){var a=CKEDITOR.tools.indexOf(g,c);return 0<=a?g[a]:null},bind:function(g,c){var a=Array.prototype.slice.call(arguments,2);return function(){return g.apply(c,a.concat(Array.prototype.slice.call(arguments)))}}, -createClass:function(g){var c=g.$,a=g.base,d=g.privates||g._,b=g.proto;g=g.statics;!c&&(c=function(){a&&this.base.apply(this,arguments)});if(d)var e=c,c=function(){var g=this._||(this._={}),n;for(n in d){var c=d[n];g[n]="function"==typeof c?CKEDITOR.tools.bind(c,this):c}e.apply(this,arguments)};a&&(c.prototype=this.prototypedCopy(a.prototype),c.prototype.constructor=c,c.base=a,c.baseProto=a.prototype,c.prototype.base=function u(){this.base=a.prototype.base;a.apply(this,arguments);this.base=u});b&& +createClass:function(g){var c=g.$,a=g.base,d=g.privates||g._,b=g.proto;g=g.statics;!c&&(c=function(){a&&this.base.apply(this,arguments)});if(d)var e=c,c=function(){var g=this._||(this._={}),n;for(n in d){var c=d[n];g[n]="function"==typeof c?CKEDITOR.tools.bind(c,this):c}e.apply(this,arguments)};a&&(c.prototype=this.prototypedCopy(a.prototype),c.prototype.constructor=c,c.base=a,c.baseProto=a.prototype,c.prototype.base=function t(){this.base=a.prototype.base;a.apply(this,arguments);this.base=t});b&& this.extend(c.prototype,b,!0);g&&this.extend(c,g,!0);return c},addFunction:function(g,c){return f.push(function(){return g.apply(c||this,arguments)})-1},removeFunction:function(g){f[g]=null},callFunction:function(g){var c=f[g];return c&&c.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var g=/^-?\d+\.?\d*px$/,c;return function(a){c=CKEDITOR.tools.trim(a+"")+"px";return g.test(c)?c:a||""}}(),convertToPx:function(){var g;return function(c){g||(g=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e', CKEDITOR.document),CKEDITOR.document.getBody().append(g));if(!/%$/.test(c)){var a=0>parseFloat(c);a&&(c=c.replace("-",""));g.setStyle("width",c);c=g.$.clientWidth;return a?-c:c}return c}}(),repeat:function(g,c){return Array(c+1).join(g)},tryThese:function(){for(var g,c=0,a=arguments.length;c<a;c++){var d=arguments[c];try{g=d();break}catch(b){}}return g},genKey:function(){return Array.prototype.slice.call(arguments).join("-")},defer:function(g){return function(){var c=arguments,a=this;window.setTimeout(function(){g.apply(a, c)},0)}},normalizeCssText:function(g,c){var a=[],d,b=CKEDITOR.tools.parseCssText(g,!0,c);for(d in b)a.push(d+":"+b[d]);a.sort();return a.length?a.join(";")+";":""},convertRgbToHex:function(g){return g.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi,function(g,c,n,a){g=[c,n,a];for(c=0;3>c;c++)g[c]=("0"+parseInt(g[c],10).toString(16)).slice(-2);return"#"+g.join("")})},normalizeHex:function(g){return g.replace(/#(([0-9a-f]{3}){1,2})($|;|\s+)/gi,function(g,c,n,a){g=c.toLowerCase();3==g.length&& @@ -35,12 +35,12 @@ c)},0)}},normalizeCssText:function(g,c){var a=[],d,b=CKEDITOR.tools.parseCssText n.toLowerCase(),"font-family"==n&&(a=a.replace(/\s*,\s*/g,",")),a=CKEDITOR.tools.trim(a));d[n]=a});return d},writeCssText:function(g,c){var a,d=[];for(a in g)d.push(a+":"+g[a]);c&&d.sort();return d.join("; ")},objectCompare:function(g,c,a){var d;if(!g&&!c)return!0;if(!g||!c)return!1;for(d in g)if(g[d]!=c[d])return!1;if(!a)for(d in c)if(g[d]!=c[d])return!1;return!0},objectKeys:function(g){return CKEDITOR.tools.object.keys(g)},convertArrayToObject:function(g,c){var a={};1==arguments.length&&(c=!0); for(var d=0,b=g.length;d<b;++d)a[g[d]]=c;return a},getStyledSpans:function(g,c){var a=CKEDITOR.env.ie&&8==CKEDITOR.env.version?g.toUpperCase():g,a=c.find("span[style*\x3d"+a+"]").toArray();return CKEDITOR.tools.array.filter(a,function(c){return!!c.getStyle(g)})},fixDomain:function(){for(var g;;)try{g=window.parent.document.domain;break}catch(c){g=g?g.replace(/.+?(?:\.|$)/,""):document.domain;if(!g)break;document.domain=g}return!!g},eventsBuffer:function(g,c,a){return new this.buffers.event(g,c,a)}, enableHtml5Elements:function(g,c){for(var a="abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video".split(" "),d=a.length,b;d--;)b=g.createElement(a[d]),c&&g.appendChild(b)},checkIfAnyArrayItemMatches:function(g,c){for(var a=0,d=g.length;a<d;++a)if(g[a].match(c))return!0;return!1},checkIfAnyObjectPropertyMatches:function(g,c){for(var a in g)if(a.match(c))return!0;return!1},keystrokeToString:function(g, -c){var a=this.keystrokeToArray(g,c);a.display=a.display.join("+");a.aria=a.aria.join("+");return a},keystrokeToArray:function(g,c){var a=c&16711680,d=c&65535,b=CKEDITOR.env.mac,e=[],l=[];a&CKEDITOR.CTRL&&(e.push(b?"⌘":g[17]),l.push(b?g[224]:g[17]));a&CKEDITOR.ALT&&(e.push(b?"⌥":g[18]),l.push(g[18]));a&CKEDITOR.SHIFT&&(e.push(b?"⇧":g[16]),l.push(g[16]));d&&(g[d]?(e.push(g[d]),l.push(g[d])):(e.push(String.fromCharCode(d)),l.push(String.fromCharCode(d))));return{display:e,aria:l}},transparentImageData:"data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d", +c){var a=this.keystrokeToArray(g,c);a.display=a.display.join("+");a.aria=a.aria.join("+");return a},keystrokeToArray:function(g,c){var a=c&16711680,d=c&65535,b=CKEDITOR.env.mac,e=[],m=[];a&CKEDITOR.CTRL&&(e.push(b?"⌘":g[17]),m.push(b?g[224]:g[17]));a&CKEDITOR.ALT&&(e.push(b?"⌥":g[18]),m.push(g[18]));a&CKEDITOR.SHIFT&&(e.push(b?"⇧":g[16]),m.push(g[16]));d&&(g[d]?(e.push(g[d]),m.push(g[d])):(e.push(String.fromCharCode(d)),m.push(String.fromCharCode(d))));return{display:e,aria:m}},transparentImageData:"data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d", getCookie:function(g){g=g.toLowerCase();for(var c=document.cookie.split(";"),a,d,b=0;b<c.length;b++)if(a=c[b].split("\x3d"),d=decodeURIComponent(CKEDITOR.tools.trim(a[0]).toLowerCase()),d===g)return decodeURIComponent(1<a.length?a[1]:"");return null},setCookie:function(g,c){document.cookie=encodeURIComponent(g)+"\x3d"+encodeURIComponent(c)+";path\x3d/"},getCsrfToken:function(){var g=CKEDITOR.tools.getCookie("ckCsrfToken");if(!g||40!=g.length){var g=[],c="";if(window.crypto&&window.crypto.getRandomValues)g= new Uint8Array(40),window.crypto.getRandomValues(g);else for(var a=0;40>a;a++)g.push(Math.floor(256*Math.random()));for(a=0;a<g.length;a++)var d="abcdefghijklmnopqrstuvwxyz0123456789".charAt(g[a]%36),c=c+(.5<Math.random()?d.toUpperCase():d);g=c;CKEDITOR.tools.setCookie("ckCsrfToken",g)}return g},escapeCss:function(g){if(g)if(window.CSS&&CSS.escape)g=CSS.escape(g);else{g=String(g);for(var c=g.length,a=-1,d,b="",e=g.charCodeAt(0);++a<c;)d=g.charCodeAt(a),b=0==d?b+"�":127==d||1<=d&&31>=d||0==a&&48<= d&&57>=d||1==a&&48<=d&&57>=d&&45==e?b+("\\"+d.toString(16)+" "):0==a&&1==c&&45==d?b+("\\"+g.charAt(a)):128<=d||45==d||95==d||48<=d&&57>=d||65<=d&&90>=d||97<=d&&122>=d?b+g.charAt(a):b+("\\"+g.charAt(a));g=b}else g="";return g},getMouseButton:function(g){return(g=g&&g.data?g.data.$:g)?CKEDITOR.tools.normalizeMouseButton(g.button):!1},normalizeMouseButton:function(g,c){if(!CKEDITOR.env.ie||9<=CKEDITOR.env.version&&!CKEDITOR.env.ie6Compat)return g;for(var a=[[CKEDITOR.MOUSE_BUTTON_LEFT,1],[CKEDITOR.MOUSE_BUTTON_MIDDLE, -4],[CKEDITOR.MOUSE_BUTTON_RIGHT,2]],d=0;d<a.length;d++){var b=a[d];if(b[0]===g&&c)return b[1];if(!c&&b[1]===g)return b[0]}},convertHexStringToBytes:function(g){var c=[],a=g.length/2,d;for(d=0;d<a;d++)c.push(parseInt(g.substr(2*d,2),16));return c},convertBytesToBase64:function(g){var c="",a=g.length,d;for(d=0;d<a;d+=3){var b=g.slice(d,d+3),e=b.length,l=[],f;if(3>e)for(f=e;3>f;f++)b[f]=0;l[0]=(b[0]&252)>>2;l[1]=(b[0]&3)<<4|b[1]>>4;l[2]=(b[1]&15)<<2|(b[2]&192)>>6;l[3]=b[2]&63;for(f=0;4>f;f++)c=f<=e? -c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l[f]):c+"\x3d"}return c},style:{parse:{_borderStyle:"none hidden dotted dashed solid double groove ridge inset outset".split(" "),_widthRegExp:/^(thin|medium|thick|[\+-]?\d+(\.\d+)?[a-z%]+|[\+-]?0+(\.0+)?|\.\d+[a-z%]+)$/,_rgbaRegExp:/rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi,_hslaRegExp:/hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi,background:function(g){var c={},a=this._findColor(g); +4],[CKEDITOR.MOUSE_BUTTON_RIGHT,2]],d=0;d<a.length;d++){var b=a[d];if(b[0]===g&&c)return b[1];if(!c&&b[1]===g)return b[0]}},convertHexStringToBytes:function(g){var c=[],a=g.length/2,d;for(d=0;d<a;d++)c.push(parseInt(g.substr(2*d,2),16));return c},convertBytesToBase64:function(g){var c="",a=g.length,d;for(d=0;d<a;d+=3){var b=g.slice(d,d+3),e=b.length,m=[],f;if(3>e)for(f=e;3>f;f++)b[f]=0;m[0]=(b[0]&252)>>2;m[1]=(b[0]&3)<<4|b[1]>>4;m[2]=(b[1]&15)<<2|(b[2]&192)>>6;m[3]=b[2]&63;for(f=0;4>f;f++)c=f<=e? +c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m[f]):c+"\x3d"}return c},style:{parse:{_borderStyle:"none hidden dotted dashed solid double groove ridge inset outset".split(" "),_widthRegExp:/^(thin|medium|thick|[\+-]?\d+(\.\d+)?[a-z%]+|[\+-]?0+(\.0+)?|\.\d+[a-z%]+)$/,_rgbaRegExp:/rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi,_hslaRegExp:/hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi,background:function(g){var c={},a=this._findColor(g); a.length&&(c.color=a[0],CKEDITOR.tools.array.forEach(a,function(c){g=g.replace(c,"")}));if(g=CKEDITOR.tools.trim(g))c.unprocessed=g;return c},margin:function(g){return CKEDITOR.tools.style.parse.sideShorthand(g,function(g){return g.match(/(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset|revert)/g)||["0px"]})},sideShorthand:function(g,c){function a(g){d.top=b[g[0]];d.right=b[g[1]];d.bottom=b[g[2]];d.left=b[g[3]]}var d={},b=c?c(g):g.split(/\s+/);switch(b.length){case 1:a([0,0,0,0]);break;case 2:a([0, 1,0,1]);break;case 3:a([0,1,2,1]);break;case 4:a([0,1,2,3])}return d},border:function(g){return CKEDITOR.tools.style.border.fromCssRule(g)},_findColor:function(g){var c=[],a=CKEDITOR.tools.array,c=c.concat(g.match(this._rgbaRegExp)||[]),c=c.concat(g.match(this._hslaRegExp)||[]);return c=c.concat(a.filter(g.split(/\s+/),function(g){return g.match(/^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi)?!0:g.toLowerCase()in CKEDITOR.tools.style.parse._colors}))}}},array:{filter:function(g,c,a){var d=[];this.forEach(g, function(b,e){c.call(a,b,e,g)&&d.push(b)});return d},find:function(g,c,a){for(var d=g.length,b=0;b<d;){if(c.call(a,g[b],b,g))return g[b];b++}},forEach:function(g,c,a){var d=g.length,b;for(b=0;b<d;b++)c.call(a,g[b],b,g)},map:function(g,c,a){for(var d=[],b=0;b<g.length;b++)d.push(c.call(a,g[b],b,g));return d},reduce:function(g,c,a,d){for(var b=0;b<g.length;b++)a=c.call(d,a,g[b],b,g);return a},every:function(g,c,a){if(!g.length)return!0;c=this.filter(g,c,a);return g.length===c.length},some:function(g, @@ -50,53 +50,53 @@ merge:function(g,c){var a=CKEDITOR.tools,d=a.clone(g),b=a.clone(c);a.array.forEa b.x;"x"in d&&"y"in d&&(d.y+=b.y,d.x+=b.x);d.right=d.left+d.width;d.bottom=d.top+d.height;return d}};b.prototype={reset:function(){this._lastOutput=0;this._clearTimer()},_reschedule:function(){return!1},_call:function(){this._output()},_clearTimer:function(){this._scheduledTimer&&clearTimeout(this._scheduledTimer);this._scheduledTimer=0}};h.prototype=CKEDITOR.tools.prototypedCopy(b.prototype);h.prototype._reschedule=function(){this._scheduledTimer&&this._clearTimer()};h.prototype._call=function(){this._output.apply(this._context, this._args)};CKEDITOR.tools.buffers={};CKEDITOR.tools.buffers.event=b;CKEDITOR.tools.buffers.throttle=h;CKEDITOR.tools.style.border=CKEDITOR.tools.createClass({$:function(g){g=g||{};this.width=g.width;this.style=g.style;this.color=g.color;this._.normalize()},_:{normalizeMap:{color:[[/windowtext/g,"black"]]},normalize:function(){for(var g in this._.normalizeMap){var c=this[g];c&&(this[g]=CKEDITOR.tools.array.reduce(this._.normalizeMap[g],function(g,c){return g.replace(c[0],c[1])},c))}}},proto:{toString:function(){return CKEDITOR.tools.array.filter([this.width, this.style,this.color],function(g){return!!g}).join(" ")}},statics:{fromCssRule:function(g){var c={},a=g.split(/\s+/g);g=CKEDITOR.tools.style.parse._findColor(g);g.length&&(c.color=g[0]);CKEDITOR.tools.array.forEach(a,function(g){c.style||-1===CKEDITOR.tools.indexOf(CKEDITOR.tools.style.parse._borderStyle,g)?!c.width&&CKEDITOR.tools.style.parse._widthRegExp.test(g)&&(c.width=g):c.style=g});return new CKEDITOR.tools.style.border(c)},splitCssValues:function(g,c){c=c||{};var a=CKEDITOR.tools.array.reduce(["width", -"style","color"],function(a,d){var b=g["border-"+d]||c[d];a[d]=b?CKEDITOR.tools.style.parse.sideShorthand(b):null;return a},{});return CKEDITOR.tools.array.reduce(["top","right","bottom","left"],function(c,d){var b={},e;for(e in a){var l=g["border-"+d+"-"+e];b[e]=l?l:a[e]&&a[e][d]}c["border-"+d]=new CKEDITOR.tools.style.border(b);return c},{})}}});CKEDITOR.tools.array.indexOf=CKEDITOR.tools.indexOf;CKEDITOR.tools.array.isArray=CKEDITOR.tools.isArray;CKEDITOR.MOUSE_BUTTON_LEFT=0;CKEDITOR.MOUSE_BUTTON_MIDDLE= -1;CKEDITOR.MOUSE_BUTTON_RIGHT=2}(),CKEDITOR.dtd=function(){var b=CKEDITOR.tools.extend,h=function(c,g){for(var a=CKEDITOR.tools.clone(c),b=1;b<arguments.length;b++){g=arguments[b];for(var e in g)delete a[e]}return a},f={},e={},a={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},m={command:1,link:1,meta:1,noscript:1,script:1,style:1},k={}, -l={"#":1},c={center:1,dir:1,noframes:1};b(f,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1,label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,"var":1,video:1,wbr:1},l,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});b(e,a,f,c);h= -{a:h(f,{a:1,button:1}),abbr:f,address:e,area:k,article:e,aside:e,audio:b({source:1,track:1},e),b:f,base:k,bdi:f,bdo:f,blockquote:e,body:e,br:k,button:h(f,{a:1,button:1}),canvas:f,caption:e,cite:f,code:f,col:k,colgroup:{col:1},command:k,datalist:b({option:1},f),dd:e,del:f,details:b({summary:1},e),dfn:f,div:e,dl:{dt:1,dd:1},dt:e,em:f,embed:k,fieldset:b({legend:1},e),figcaption:e,figure:b({figcaption:1},e),footer:e,form:e,h1:f,h2:f,h3:f,h4:f,h5:f,h6:f,head:b({title:1,base:1},m),header:e,hgroup:{h1:1, -h2:1,h3:1,h4:1,h5:1,h6:1},hr:k,html:b({head:1,body:1},e,m),i:f,iframe:l,img:k,input:k,ins:f,kbd:f,keygen:k,label:f,legend:f,li:e,link:k,main:e,map:e,mark:f,menu:b({li:1},e),meta:k,meter:h(f,{meter:1}),nav:e,noscript:b({link:1,meta:1,style:1},f),object:b({param:1},f),ol:{li:1},optgroup:{option:1},option:l,output:f,p:f,param:k,pre:f,progress:h(f,{progress:1}),q:f,rp:f,rt:f,ruby:b({rp:1,rt:1},f),s:f,samp:f,script:l,section:e,select:{optgroup:1,option:1},small:f,source:k,span:f,strong:f,style:l,sub:f, -summary:b({h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},f),sup:f,table:{caption:1,colgroup:1,thead:1,tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:e,textarea:l,tfoot:{tr:1},th:e,thead:{tr:1},time:h(f,{time:1}),title:l,tr:{th:1,td:1},track:k,u:f,ul:{li:1},"var":f,video:b({source:1,track:1},e),wbr:k,acronym:f,applet:b({param:1},e),basefont:k,big:f,center:e,dialog:k,dir:{li:1},font:f,isindex:k,noframes:e,strike:f,tt:f};b(h,{$block:b({audio:1,dd:1,dt:1,figcaption:1,li:1,video:1},a,c),$blockLimit:{article:1,aside:1,audio:1, +"style","color"],function(a,d){var b=g["border-"+d]||c[d];a[d]=b?CKEDITOR.tools.style.parse.sideShorthand(b):null;return a},{});return CKEDITOR.tools.array.reduce(["top","right","bottom","left"],function(c,d){var b={},e;for(e in a){var m=g["border-"+d+"-"+e];b[e]=m?m:a[e]&&a[e][d]}c["border-"+d]=new CKEDITOR.tools.style.border(b);return c},{})}}});CKEDITOR.tools.array.indexOf=CKEDITOR.tools.indexOf;CKEDITOR.tools.array.isArray=CKEDITOR.tools.isArray;CKEDITOR.MOUSE_BUTTON_LEFT=0;CKEDITOR.MOUSE_BUTTON_MIDDLE= +1;CKEDITOR.MOUSE_BUTTON_RIGHT=2}(),CKEDITOR.dtd=function(){var b=CKEDITOR.tools.extend,h=function(c,g){for(var a=CKEDITOR.tools.clone(c),b=1;b<arguments.length;b++){g=arguments[b];for(var e in g)delete a[e]}return a},f={},e={},a={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},k={command:1,link:1,meta:1,noscript:1,script:1,style:1},l={}, +m={"#":1},c={center:1,dir:1,noframes:1};b(f,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1,label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,"var":1,video:1,wbr:1},m,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});b(e,a,f,c);h= +{a:h(f,{a:1,button:1}),abbr:f,address:e,area:l,article:e,aside:e,audio:b({source:1,track:1},e),b:f,base:l,bdi:f,bdo:f,blockquote:e,body:e,br:l,button:h(f,{a:1,button:1}),canvas:f,caption:e,cite:f,code:f,col:l,colgroup:{col:1},command:l,datalist:b({option:1},f),dd:e,del:f,details:b({summary:1},e),dfn:f,div:e,dl:{dt:1,dd:1},dt:e,em:f,embed:l,fieldset:b({legend:1},e),figcaption:e,figure:b({figcaption:1},e),footer:e,form:e,h1:f,h2:f,h3:f,h4:f,h5:f,h6:f,head:b({title:1,base:1},k),header:e,hgroup:{h1:1, +h2:1,h3:1,h4:1,h5:1,h6:1},hr:l,html:b({head:1,body:1},e,k),i:f,iframe:m,img:l,input:l,ins:f,kbd:f,keygen:l,label:f,legend:f,li:e,link:l,main:e,map:e,mark:f,menu:b({li:1},e),meta:l,meter:h(f,{meter:1}),nav:e,noscript:b({link:1,meta:1,style:1},f),object:b({param:1},f),ol:{li:1},optgroup:{option:1},option:m,output:f,p:f,param:l,pre:f,progress:h(f,{progress:1}),q:f,rp:f,rt:f,ruby:b({rp:1,rt:1},f),s:f,samp:f,script:m,section:e,select:{optgroup:1,option:1},small:f,source:l,span:f,strong:f,style:m,sub:f, +summary:b({h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},f),sup:f,table:{caption:1,colgroup:1,thead:1,tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:e,textarea:m,tfoot:{tr:1},th:e,thead:{tr:1},time:h(f,{time:1}),title:m,tr:{th:1,td:1},track:l,u:f,ul:{li:1},"var":f,video:b({source:1,track:1},e),wbr:l,acronym:f,applet:b({param:1},e),basefont:l,big:f,center:e,dialog:l,dir:{li:1},font:f,isindex:l,noframes:e,strike:f,tt:f};b(h,{$block:b({audio:1,dd:1,dt:1,figcaption:1,li:1,video:1},a,c),$blockLimit:{article:1,aside:1,audio:1, body:1,caption:1,details:1,dir:1,div:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,form:1,header:1,hgroup:1,main:1,menu:1,nav:1,ol:1,section:1,table:1,td:1,th:1,tr:1,ul:1,video:1},$cdata:{script:1,style:1},$editable:{address:1,article:1,aside:1,blockquote:1,body:1,details:1,div:1,fieldset:1,figcaption:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,main:1,nav:1,p:1,pre:1,section:1},$empty:{area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1, keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1},$inline:f,$list:{dl:1,ol:1,ul:1},$listItem:{dd:1,dt:1,li:1},$nonBodyContent:b({body:1,head:1,html:1},h.head),$nonEditable:{applet:1,audio:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,param:1,script:1,textarea:1,video:1},$object:{applet:1,audio:1,button:1,hr:1,iframe:1,img:1,input:1,object:1,select:1,table:1,textarea:1,video:1},$removeEmpty:{abbr:1,acronym:1,b:1,bdi:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1, mark:1,meter:1,output:1,q:1,ruby:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,time:1,tt:1,u:1,"var":1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},$transparent:{a:1,audio:1,canvas:1,del:1,ins:1,map:1,noscript:1,object:1,video:1},$intermediate:{caption:1,colgroup:1,dd:1,dt:1,figcaption:1,legend:1,li:1,optgroup:1,option:1,rp:1,rt:1,summary:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}}); return h}(),CKEDITOR.dom.event=function(b){this.$=b},CKEDITOR.dom.event.prototype={getKey:function(){return this.$.keyCode||this.$.which},getKeystroke:function(){var b=this.getKey();if(this.$.ctrlKey||this.$.metaKey)b+=CKEDITOR.CTRL;this.$.shiftKey&&(b+=CKEDITOR.SHIFT);this.$.altKey&&(b+=CKEDITOR.ALT);return b},preventDefault:function(b){var h=this.$;h.preventDefault?h.preventDefault():h.returnValue=!1;b&&this.stopPropagation()},stopPropagation:function(){var b=this.$;b.stopPropagation?b.stopPropagation(): b.cancelBubble=!0},getTarget:function(){var b=this.$.target||this.$.srcElement;return b?new CKEDITOR.dom.node(b):null},getPhase:function(){return this.$.eventPhase||2},getPageOffset:function(){var b=this.getTarget().getDocument().$;return{x:this.$.pageX||this.$.clientX+(b.documentElement.scrollLeft||b.body.scrollLeft),y:this.$.pageY||this.$.clientY+(b.documentElement.scrollTop||b.body.scrollTop)}}},CKEDITOR.CTRL=1114112,CKEDITOR.SHIFT=2228224,CKEDITOR.ALT=4456448,CKEDITOR.EVENT_PHASE_CAPTURING=1, -CKEDITOR.EVENT_PHASE_AT_TARGET=2,CKEDITOR.EVENT_PHASE_BUBBLING=3,CKEDITOR.dom.domObject=function(b){b&&(this.$=b)},CKEDITOR.dom.domObject.prototype=function(){var b=function(b,f){return function(e){"undefined"!=typeof CKEDITOR&&b.fire(f,new CKEDITOR.dom.event(e))}};return{getPrivate:function(){var b;(b=this.getCustomData("_"))||this.setCustomData("_",b={});return b},on:function(h){var f=this.getCustomData("_cke_nativeListeners");f||(f={},this.setCustomData("_cke_nativeListeners",f));f[h]||(f=f[h]= -b(this,h),this.$.addEventListener?this.$.addEventListener(h,f,!!CKEDITOR.event.useCapture):this.$.attachEvent&&this.$.attachEvent("on"+h,f));return CKEDITOR.event.prototype.on.apply(this,arguments)},removeListener:function(b){CKEDITOR.event.prototype.removeListener.apply(this,arguments);if(!this.hasListeners(b)){var f=this.getCustomData("_cke_nativeListeners"),e=f&&f[b];e&&(this.$.removeEventListener?this.$.removeEventListener(b,e,!1):this.$.detachEvent&&this.$.detachEvent("on"+b,e),delete f[b])}}, -removeAllListeners:function(){try{var b=this.getCustomData("_cke_nativeListeners"),f;for(f in b){var e=b[f];this.$.detachEvent?this.$.detachEvent("on"+f,e):this.$.removeEventListener&&this.$.removeEventListener(f,e,!1);delete b[f]}}catch(a){if(!CKEDITOR.env.edge||-2146828218!==a.number)throw a;}CKEDITOR.event.prototype.removeAllListeners.call(this)}}}(),function(b){var h={};CKEDITOR.on("reset",function(){h={}});b.equals=function(b){try{return b&&b.$===this.$}catch(e){return!1}};b.setCustomData=function(b, -e){var a=this.getUniqueId();(h[a]||(h[a]={}))[b]=e;return this};b.getCustomData=function(b){var e=this.$["data-cke-expando"];return(e=e&&h[e])&&b in e?e[b]:null};b.removeCustomData=function(b){var e=this.$["data-cke-expando"],e=e&&h[e],a,m;e&&(a=e[b],m=b in e,delete e[b]);return m?a:null};b.clearCustomData=function(){this.removeAllListeners();var b=this.getUniqueId();b&&delete h[b]};b.getUniqueId=function(){return this.$["data-cke-expando"]||(this.$["data-cke-expando"]=CKEDITOR.tools.getNextNumber())}; -CKEDITOR.event.implementOn(b)}(CKEDITOR.dom.domObject.prototype),CKEDITOR.dom.node=function(b){return b?new CKEDITOR.dom[b.nodeType==CKEDITOR.NODE_DOCUMENT?"document":b.nodeType==CKEDITOR.NODE_ELEMENT?"element":b.nodeType==CKEDITOR.NODE_TEXT?"text":b.nodeType==CKEDITOR.NODE_COMMENT?"comment":b.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT?"documentFragment":"domObject"](b):this},CKEDITOR.dom.node.prototype=new CKEDITOR.dom.domObject,CKEDITOR.NODE_ELEMENT=1,CKEDITOR.NODE_DOCUMENT=9,CKEDITOR.NODE_TEXT= -3,CKEDITOR.NODE_COMMENT=8,CKEDITOR.NODE_DOCUMENT_FRAGMENT=11,CKEDITOR.POSITION_IDENTICAL=0,CKEDITOR.POSITION_DISCONNECTED=1,CKEDITOR.POSITION_FOLLOWING=2,CKEDITOR.POSITION_PRECEDING=4,CKEDITOR.POSITION_IS_CONTAINED=8,CKEDITOR.POSITION_CONTAINS=16,CKEDITOR.tools.extend(CKEDITOR.dom.node.prototype,{appendTo:function(b,h){b.append(this,h);return b},clone:function(b,h){function f(a){a["data-cke-expando"]&&(a["data-cke-expando"]=!1);if(a.nodeType==CKEDITOR.NODE_ELEMENT||a.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)if(h|| -a.nodeType!=CKEDITOR.NODE_ELEMENT||a.removeAttribute("id",!1),b){a=a.childNodes;for(var e=0;e<a.length;e++)f(a[e])}}function e(a){if(a.type==CKEDITOR.NODE_ELEMENT||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT){if(a.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var f=a.getName();":"==f[0]&&a.renameNode(f.substring(1))}if(b)for(f=0;f<a.getChildCount();f++)e(a.getChild(f))}}var a=this.$.cloneNode(b);f(a);a=new CKEDITOR.dom.node(a);CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(this.type==CKEDITOR.NODE_ELEMENT||this.type== -CKEDITOR.NODE_DOCUMENT_FRAGMENT)&&e(a);return a},hasPrevious:function(){return!!this.$.previousSibling},hasNext:function(){return!!this.$.nextSibling},insertAfter:function(b){b.$.parentNode.insertBefore(this.$,b.$.nextSibling);return b},insertBefore:function(b){b.$.parentNode.insertBefore(this.$,b.$);return b},insertBeforeMe:function(b){this.$.parentNode.insertBefore(b.$,this.$);return b},getAddress:function(b){for(var h=[],f=this.getDocument().$.documentElement,e=this;e&&e!=f;){var a=e.getParent(); -a&&h.unshift(this.getIndex.call(e,b));e=a}return h},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument||this.$.parentNode.ownerDocument)},getIndex:function(b){function h(a,b){var e=b?a.getNext():a.getPrevious();return e&&e.type==CKEDITOR.NODE_TEXT?e.isEmpty()?h(e,b):e:null}var f=this,e=-1,a;if(!this.getParent()||b&&f.type==CKEDITOR.NODE_TEXT&&f.isEmpty()&&!h(f)&&!h(f,!0))return-1;do if(!b||f.equals(this)||f.type!=CKEDITOR.NODE_TEXT||!a&&!f.isEmpty())e++,a=f.type==CKEDITOR.NODE_TEXT; -while(f=f.getPrevious());return e},getNextSourceNode:function(b,h,f){if(f&&!f.call){var e=f;f=function(a){return!a.equals(e)}}b=!b&&this.getFirst&&this.getFirst();var a;if(!b){if(this.type==CKEDITOR.NODE_ELEMENT&&f&&!1===f(this,!0))return null;b=this.getNext()}for(;!b&&(a=(a||this).getParent());){if(f&&!1===f(a,!0))return null;b=a.getNext()}return!b||f&&!1===f(b)?null:h&&h!=b.type?b.getNextSourceNode(!1,h,f):b},getPreviousSourceNode:function(b,h,f){if(f&&!f.call){var e=f;f=function(a){return!a.equals(e)}}b= -!b&&this.getLast&&this.getLast();var a;if(!b){if(this.type==CKEDITOR.NODE_ELEMENT&&f&&!1===f(this,!0))return null;b=this.getPrevious()}for(;!b&&(a=(a||this).getParent());){if(f&&!1===f(a,!0))return null;b=a.getPrevious()}return!b||f&&!1===f(b)?null:h&&b.type!=h?b.getPreviousSourceNode(!1,h,f):b},getPrevious:function(b){var h=this.$,f;do f=(h=h.previousSibling)&&10!=h.nodeType&&new CKEDITOR.dom.node(h);while(f&&b&&!b(f));return f},getNext:function(b){var h=this.$,f;do f=(h=h.nextSibling)&&new CKEDITOR.dom.node(h); -while(f&&b&&!b(f));return f},getParent:function(b){var h=this.$.parentNode;return h&&(h.nodeType==CKEDITOR.NODE_ELEMENT||b&&h.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(h):null},getParents:function(b){var h=this,f=[];do f[b?"push":"unshift"](h);while(h=h.getParent());return f},getCommonAncestor:function(b){if(b.equals(this))return this;if(b.contains&&b.contains(this))return b;var h=this.contains?this:this.getParent();do if(h.contains(b))return h;while(h=h.getParent());return null}, -getPosition:function(b){var h=this.$,f=b.$;if(h.compareDocumentPosition)return h.compareDocumentPosition(f);if(h==f)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&b.type==CKEDITOR.NODE_ELEMENT){if(h.contains){if(h.contains(f))return CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING;if(f.contains(h))return CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING}if("sourceIndex"in h)return 0>h.sourceIndex||0>f.sourceIndex?CKEDITOR.POSITION_DISCONNECTED:h.sourceIndex< -f.sourceIndex?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING}h=this.getAddress();b=b.getAddress();for(var f=Math.min(h.length,b.length),e=0;e<f;e++)if(h[e]!=b[e])return h[e]<b[e]?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING;return h.length<b.length?CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING},getAscendant:function(b,h){var f=this.$,e,a;h||(f=f.parentNode);"function"==typeof b?(a=!0,e=b):(a=!1,e=function(a){a= -"string"==typeof a.nodeName?a.nodeName.toLowerCase():"";return"string"==typeof b?a==b:a in b});for(;f;){if(e(a?new CKEDITOR.dom.node(f):f))return new CKEDITOR.dom.node(f);try{f=f.parentNode}catch(m){f=null}}return null},hasAscendant:function(b,h){var f=this.$;h||(f=f.parentNode);for(;f;){if(f.nodeName&&f.nodeName.toLowerCase()==b)return!0;f=f.parentNode}return!1},move:function(b,h){b.append(this.remove(),h)},remove:function(b){var h=this.$,f=h.parentNode;if(f){if(b)for(;b=h.firstChild;)f.insertBefore(h.removeChild(b), -h);f.removeChild(h)}return this},replace:function(b){this.insertBefore(b);b.remove()},trim:function(){this.ltrim();this.rtrim()},ltrim:function(){for(var b;this.getFirst&&(b=this.getFirst());){if(b.type==CKEDITOR.NODE_TEXT){var h=CKEDITOR.tools.ltrim(b.getText()),f=b.getLength();if(h)h.length<f&&(b.split(f-h.length),this.$.removeChild(this.$.firstChild));else{b.remove();continue}}break}},rtrim:function(){for(var b;this.getLast&&(b=this.getLast());){if(b.type==CKEDITOR.NODE_TEXT){var h=CKEDITOR.tools.rtrim(b.getText()), -f=b.getLength();if(h)h.length<f&&(b.split(h.length),this.$.lastChild.parentNode.removeChild(this.$.lastChild));else{b.remove();continue}}break}CKEDITOR.env.needsBrFiller&&(b=this.$.lastChild)&&1==b.type&&"br"==b.nodeName.toLowerCase()&&b.parentNode.removeChild(b)},isReadOnly:function(b){var h=this;this.type!=CKEDITOR.NODE_ELEMENT&&(h=this.getParent());CKEDITOR.env.edge&&h&&h.is("textarea","input")&&(b=!0);if(!b&&h&&"undefined"!=typeof h.$.isContentEditable)return!(h.$.isContentEditable||h.data("cke-editable")); -for(;h;){if(h.data("cke-editable"))return!1;if(h.hasAttribute("contenteditable"))return"false"==h.getAttribute("contenteditable");h=h.getParent()}return!0}}),CKEDITOR.dom.window=function(b){CKEDITOR.dom.domObject.call(this,b)},CKEDITOR.dom.window.prototype=new CKEDITOR.dom.domObject,CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype,{focus:function(){this.$.focus()},getViewPaneSize:function(){var b=this.$.document,h="CSS1Compat"==b.compatMode;return{width:(h?b.documentElement.clientWidth:b.body.clientWidth)|| -0,height:(h?b.documentElement.clientHeight:b.body.clientHeight)||0}},getScrollPosition:function(){var b=this.$;if("pageXOffset"in b)return{x:b.pageXOffset||0,y:b.pageYOffset||0};b=b.document;return{x:b.documentElement.scrollLeft||b.body.scrollLeft||0,y:b.documentElement.scrollTop||b.body.scrollTop||0}},getFrame:function(){var b=this.$.frameElement;return b?new CKEDITOR.dom.element.get(b):null}}),CKEDITOR.dom.document=function(b){CKEDITOR.dom.domObject.call(this,b)},CKEDITOR.dom.document.prototype= +CKEDITOR.EVENT_PHASE_AT_TARGET=2,CKEDITOR.EVENT_PHASE_BUBBLING=3,CKEDITOR.HISTORY_NATIVE=1,CKEDITOR.HISTORY_HASH=2,CKEDITOR.HISTORY_OFF=0,CKEDITOR.dom.domObject=function(b){b&&(this.$=b)},CKEDITOR.dom.domObject.prototype=function(){var b=function(b,f){return function(e){"undefined"!=typeof CKEDITOR&&b.fire(f,new CKEDITOR.dom.event(e))}};return{getPrivate:function(){var b;(b=this.getCustomData("_"))||this.setCustomData("_",b={});return b},on:function(h){var f=this.getCustomData("_cke_nativeListeners"); +f||(f={},this.setCustomData("_cke_nativeListeners",f));f[h]||(f=f[h]=b(this,h),this.$.addEventListener?this.$.addEventListener(h,f,!!CKEDITOR.event.useCapture):this.$.attachEvent&&this.$.attachEvent("on"+h,f));return CKEDITOR.event.prototype.on.apply(this,arguments)},removeListener:function(b){CKEDITOR.event.prototype.removeListener.apply(this,arguments);if(!this.hasListeners(b)){var f=this.getCustomData("_cke_nativeListeners"),e=f&&f[b];e&&(this.$.removeEventListener?this.$.removeEventListener(b, +e,!1):this.$.detachEvent&&this.$.detachEvent("on"+b,e),delete f[b])}},removeAllListeners:function(){try{var b=this.getCustomData("_cke_nativeListeners"),f;for(f in b){var e=b[f];this.$.detachEvent?this.$.detachEvent("on"+f,e):this.$.removeEventListener&&this.$.removeEventListener(f,e,!1);delete b[f]}}catch(a){if(!CKEDITOR.env.edge||-2146828218!==a.number)throw a;}CKEDITOR.event.prototype.removeAllListeners.call(this)}}}(),function(b){var h={};CKEDITOR.on("reset",function(){h={}});b.equals=function(b){try{return b&& +b.$===this.$}catch(e){return!1}};b.setCustomData=function(b,e){var a=this.getUniqueId();(h[a]||(h[a]={}))[b]=e;return this};b.getCustomData=function(b){var e=this.$["data-cke-expando"];return(e=e&&h[e])&&b in e?e[b]:null};b.removeCustomData=function(b){var e=this.$["data-cke-expando"],e=e&&h[e],a,k;e&&(a=e[b],k=b in e,delete e[b]);return k?a:null};b.clearCustomData=function(){this.removeAllListeners();var b=this.getUniqueId();b&&delete h[b]};b.getUniqueId=function(){return this.$["data-cke-expando"]|| +(this.$["data-cke-expando"]=CKEDITOR.tools.getNextNumber())};CKEDITOR.event.implementOn(b)}(CKEDITOR.dom.domObject.prototype),CKEDITOR.dom.node=function(b){return b?new CKEDITOR.dom[b.nodeType==CKEDITOR.NODE_DOCUMENT?"document":b.nodeType==CKEDITOR.NODE_ELEMENT?"element":b.nodeType==CKEDITOR.NODE_TEXT?"text":b.nodeType==CKEDITOR.NODE_COMMENT?"comment":b.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT?"documentFragment":"domObject"](b):this},CKEDITOR.dom.node.prototype=new CKEDITOR.dom.domObject,CKEDITOR.NODE_ELEMENT= +1,CKEDITOR.NODE_DOCUMENT=9,CKEDITOR.NODE_TEXT=3,CKEDITOR.NODE_COMMENT=8,CKEDITOR.NODE_DOCUMENT_FRAGMENT=11,CKEDITOR.POSITION_IDENTICAL=0,CKEDITOR.POSITION_DISCONNECTED=1,CKEDITOR.POSITION_FOLLOWING=2,CKEDITOR.POSITION_PRECEDING=4,CKEDITOR.POSITION_IS_CONTAINED=8,CKEDITOR.POSITION_CONTAINS=16,CKEDITOR.tools.extend(CKEDITOR.dom.node.prototype,{appendTo:function(b,h){b.append(this,h);return b},clone:function(b,h){function f(a){a["data-cke-expando"]&&(a["data-cke-expando"]=!1);if(a.nodeType==CKEDITOR.NODE_ELEMENT|| +a.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)if(h||a.nodeType!=CKEDITOR.NODE_ELEMENT||a.removeAttribute("id",!1),b){a=a.childNodes;for(var e=0;e<a.length;e++)f(a[e])}}function e(a){if(a.type==CKEDITOR.NODE_ELEMENT||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT){if(a.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var f=a.getName();":"==f[0]&&a.renameNode(f.substring(1))}if(b)for(f=0;f<a.getChildCount();f++)e(a.getChild(f))}}var a=this.$.cloneNode(b);f(a);a=new CKEDITOR.dom.node(a);CKEDITOR.env.ie&&9>CKEDITOR.env.version&& +(this.type==CKEDITOR.NODE_ELEMENT||this.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)&&e(a);return a},hasPrevious:function(){return!!this.$.previousSibling},hasNext:function(){return!!this.$.nextSibling},insertAfter:function(b){b.$.parentNode.insertBefore(this.$,b.$.nextSibling);return b},insertBefore:function(b){b.$.parentNode.insertBefore(this.$,b.$);return b},insertBeforeMe:function(b){this.$.parentNode.insertBefore(b.$,this.$);return b},getAddress:function(b){for(var h=[],f=this.getDocument().$.documentElement, +e=this;e&&e!=f;){var a=e.getParent();a&&h.unshift(this.getIndex.call(e,b));e=a}return h},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument||this.$.parentNode.ownerDocument)},getIndex:function(b){function h(a,b){var e=b?a.getNext():a.getPrevious();return e&&e.type==CKEDITOR.NODE_TEXT?e.isEmpty()?h(e,b):e:null}var f=this,e=-1,a;if(!this.getParent()||b&&f.type==CKEDITOR.NODE_TEXT&&f.isEmpty()&&!h(f)&&!h(f,!0))return-1;do if(!b||f.equals(this)||f.type!=CKEDITOR.NODE_TEXT||!a&& +!f.isEmpty())e++,a=f.type==CKEDITOR.NODE_TEXT;while(f=f.getPrevious());return e},getNextSourceNode:function(b,h,f){if(f&&!f.call){var e=f;f=function(a){return!a.equals(e)}}b=!b&&this.getFirst&&this.getFirst();var a;if(!b){if(this.type==CKEDITOR.NODE_ELEMENT&&f&&!1===f(this,!0))return null;b=this.getNext()}for(;!b&&(a=(a||this).getParent());){if(f&&!1===f(a,!0))return null;b=a.getNext()}return!b||f&&!1===f(b)?null:h&&h!=b.type?b.getNextSourceNode(!1,h,f):b},getPreviousSourceNode:function(b,h,f){if(f&& +!f.call){var e=f;f=function(a){return!a.equals(e)}}b=!b&&this.getLast&&this.getLast();var a;if(!b){if(this.type==CKEDITOR.NODE_ELEMENT&&f&&!1===f(this,!0))return null;b=this.getPrevious()}for(;!b&&(a=(a||this).getParent());){if(f&&!1===f(a,!0))return null;b=a.getPrevious()}return!b||f&&!1===f(b)?null:h&&b.type!=h?b.getPreviousSourceNode(!1,h,f):b},getPrevious:function(b){var h=this.$,f;do f=(h=h.previousSibling)&&10!=h.nodeType&&new CKEDITOR.dom.node(h);while(f&&b&&!b(f));return f},getNext:function(b){var h= +this.$,f;do f=(h=h.nextSibling)&&new CKEDITOR.dom.node(h);while(f&&b&&!b(f));return f},getParent:function(b){var h=this.$.parentNode;return h&&(h.nodeType==CKEDITOR.NODE_ELEMENT||b&&h.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(h):null},getParents:function(b){var h=this,f=[];do f[b?"push":"unshift"](h);while(h=h.getParent());return f},getCommonAncestor:function(b){if(b.equals(this))return this;if(b.contains&&b.contains(this))return b;var h=this.contains?this:this.getParent(); +do if(h.contains(b))return h;while(h=h.getParent());return null},getPosition:function(b){var h=this.$,f=b.$;if(h.compareDocumentPosition)return h.compareDocumentPosition(f);if(h==f)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&b.type==CKEDITOR.NODE_ELEMENT){if(h.contains){if(h.contains(f))return CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING;if(f.contains(h))return CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING}if("sourceIndex"in h)return 0>h.sourceIndex|| +0>f.sourceIndex?CKEDITOR.POSITION_DISCONNECTED:h.sourceIndex<f.sourceIndex?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING}h=this.getAddress();b=b.getAddress();for(var f=Math.min(h.length,b.length),e=0;e<f;e++)if(h[e]!=b[e])return h[e]<b[e]?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING;return h.length<b.length?CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING},getAscendant:function(b,h){var f=this.$,e,a;h||(f=f.parentNode); +"function"==typeof b?(a=!0,e=b):(a=!1,e=function(a){a="string"==typeof a.nodeName?a.nodeName.toLowerCase():"";return"string"==typeof b?a==b:a in b});for(;f;){if(e(a?new CKEDITOR.dom.node(f):f))return new CKEDITOR.dom.node(f);try{f=f.parentNode}catch(k){f=null}}return null},hasAscendant:function(b,h){var f=this.$;h||(f=f.parentNode);for(;f;){if(f.nodeName&&f.nodeName.toLowerCase()==b)return!0;f=f.parentNode}return!1},move:function(b,h){b.append(this.remove(),h)},remove:function(b){var h=this.$,f=h.parentNode; +if(f){if(b)for(;b=h.firstChild;)f.insertBefore(h.removeChild(b),h);f.removeChild(h)}return this},replace:function(b){this.insertBefore(b);b.remove()},trim:function(){this.ltrim();this.rtrim()},ltrim:function(){for(var b;this.getFirst&&(b=this.getFirst());){if(b.type==CKEDITOR.NODE_TEXT){var h=CKEDITOR.tools.ltrim(b.getText()),f=b.getLength();if(h)h.length<f&&(b.split(f-h.length),this.$.removeChild(this.$.firstChild));else{b.remove();continue}}break}},rtrim:function(){for(var b;this.getLast&&(b=this.getLast());){if(b.type== +CKEDITOR.NODE_TEXT){var h=CKEDITOR.tools.rtrim(b.getText()),f=b.getLength();if(h)h.length<f&&(b.split(h.length),this.$.lastChild.parentNode.removeChild(this.$.lastChild));else{b.remove();continue}}break}CKEDITOR.env.needsBrFiller&&(b=this.$.lastChild)&&1==b.type&&"br"==b.nodeName.toLowerCase()&&b.parentNode.removeChild(b)},isReadOnly:function(b){var h=this;this.type!=CKEDITOR.NODE_ELEMENT&&(h=this.getParent());CKEDITOR.env.edge&&h&&h.is("textarea","input")&&(b=!0);if(!b&&h&&"undefined"!=typeof h.$.isContentEditable)return!(h.$.isContentEditable|| +h.data("cke-editable"));for(;h;){if(h.data("cke-editable"))return!1;if(h.hasAttribute("contenteditable"))return"false"==h.getAttribute("contenteditable");h=h.getParent()}return!0}}),CKEDITOR.dom.window=function(b){CKEDITOR.dom.domObject.call(this,b)},CKEDITOR.dom.window.prototype=new CKEDITOR.dom.domObject,CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype,{focus:function(){this.$.focus()},getViewPaneSize:function(){var b=this.$.document,h="CSS1Compat"==b.compatMode;return{width:(h?b.documentElement.clientWidth: +b.body.clientWidth)||0,height:(h?b.documentElement.clientHeight:b.body.clientHeight)||0}},getScrollPosition:function(){var b=this.$;if("pageXOffset"in b)return{x:b.pageXOffset||0,y:b.pageYOffset||0};b=b.document;return{x:b.documentElement.scrollLeft||b.body.scrollLeft||0,y:b.documentElement.scrollTop||b.body.scrollTop||0}},getFrame:function(){var b=this.$.frameElement;return b?new CKEDITOR.dom.element.get(b):null}}),CKEDITOR.dom.document=function(b){CKEDITOR.dom.domObject.call(this,b)},CKEDITOR.dom.document.prototype= new CKEDITOR.dom.domObject,CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,{type:CKEDITOR.NODE_DOCUMENT,appendStyleSheet:function(b){if(this.$.createStyleSheet)this.$.createStyleSheet(b);else{var h=new CKEDITOR.dom.element("link");h.setAttributes({rel:"stylesheet",type:"text/css",href:b});this.getHead().append(h)}},appendStyleText:function(b){if(this.$.createStyleSheet){var h=this.$.createStyleSheet("");h.cssText=b}else{var f=new CKEDITOR.dom.element("style",this);f.append(new CKEDITOR.dom.text(b, this));this.getHead().append(f)}return h||f.$.sheet},createElement:function(b,h){var f=new CKEDITOR.dom.element(b,this);h&&(h.attributes&&f.setAttributes(h.attributes),h.styles&&f.setStyles(h.styles));return f},createText:function(b){return new CKEDITOR.dom.text(b,this)},focus:function(){this.getWindow().focus()},getActive:function(){var b;try{b=this.$.activeElement}catch(h){return null}return new CKEDITOR.dom.element(b)},getById:function(b){return(b=this.$.getElementById(b))?new CKEDITOR.dom.element(b): -null},getByAddress:function(b,h){for(var f=this.$.documentElement,e=0;f&&e<b.length;e++){var a=b[e];if(h)for(var m=-1,k=0;k<f.childNodes.length;k++){var l=f.childNodes[k];if(!0!==h||3!=l.nodeType||!l.previousSibling||3!=l.previousSibling.nodeType)if(m++,m==a){f=l;break}}else f=f.childNodes[a]}return f?new CKEDITOR.dom.node(f):null},getElementsByTag:function(b,h){CKEDITOR.env.ie&&8>=document.documentMode||!h||(b=h+":"+b);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(b))},getHead:function(){var b= +null},getByAddress:function(b,h){for(var f=this.$.documentElement,e=0;f&&e<b.length;e++){var a=b[e];if(h)for(var k=-1,l=0;l<f.childNodes.length;l++){var m=f.childNodes[l];if(!0!==h||3!=m.nodeType||!m.previousSibling||3!=m.previousSibling.nodeType)if(k++,k==a){f=m;break}}else f=f.childNodes[a]}return f?new CKEDITOR.dom.node(f):null},getElementsByTag:function(b,h){CKEDITOR.env.ie&&8>=document.documentMode||!h||(b=h+":"+b);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(b))},getHead:function(){var b= this.$.getElementsByTagName("head")[0];return b=b?new CKEDITOR.dom.element(b):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),!0)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView)},write:function(b){this.$.open("text/html","replace");CKEDITOR.env.ie&&(b=b.replace(/(?:^\s*<!DOCTYPE[^>]*?>)|^/i, '$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e('+CKEDITOR.tools.fixDomain+")();\x3c/script\x3e"));this.$.write(b);this.$.close()},find:function(b){return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(b))},findOne:function(b){return(b=this.$.querySelector(b))?new CKEDITOR.dom.element(b):null},_getHtml5ShivFrag:function(){var b=this.getCustomData("html5ShivFrag");b||(b=this.$.createDocumentFragment(),CKEDITOR.tools.enableHtml5Elements(b,!0),this.setCustomData("html5ShivFrag",b));return b}}),CKEDITOR.dom.nodeList= function(b){this.$=b},CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(b){return 0>b||b>=this.$.length?null:(b=this.$[b])?new CKEDITOR.dom.node(b):null},toArray:function(){return CKEDITOR.tools.array.map(this.$,function(b){return new CKEDITOR.dom.node(b)})}},CKEDITOR.dom.element=function(b,h){"string"==typeof b&&(b=(h?h.$:document).createElement(b));CKEDITOR.dom.domObject.call(this,b)},CKEDITOR.dom.element.get=function(b){return(b="string"==typeof b?document.getElementById(b)|| -document.getElementsByName(b)[0]:b)&&(b.$?b:new CKEDITOR.dom.element(b))},CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node,CKEDITOR.dom.element.createFromHtml=function(b,h){var f=new CKEDITOR.dom.element("div",h);f.setHtml(b);return f.getFirst().remove()},CKEDITOR.dom.element.setMarker=function(b,h,f,e){var a=h.getCustomData("list_marker_id")||h.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),m=h.getCustomData("list_marker_names")||h.setCustomData("list_marker_names", -{}).getCustomData("list_marker_names");b[a]=h;m[f]=1;return h.setCustomData(f,e)},CKEDITOR.dom.element.clearAllMarkers=function(b){for(var h in b)CKEDITOR.dom.element.clearMarkers(b,b[h],1)},CKEDITOR.dom.element.clearMarkers=function(b,h,f){var e=h.getCustomData("list_marker_names"),a=h.getCustomData("list_marker_id"),m;for(m in e)h.removeCustomData(m);h.removeCustomData("list_marker_names");f&&(h.removeCustomData("list_marker_id"),delete b[a])},function(){function b(a,c){return-1<(" "+a+" ").replace(m, -" ").indexOf(" "+c+" ")}function h(a){var c=!0;a.$.id||(a.$.id="cke_tmp_"+CKEDITOR.tools.getNextNumber(),c=!1);return function(){c||a.removeAttribute("id")}}function f(a,c){var d=CKEDITOR.tools.escapeCss(a.$.id);return"#"+d+" "+c.split(/,\s*/).join(", #"+d+" ")}function e(a){for(var c=0,d=0,g=k[a].length;d<g;d++)c+=parseFloat(this.getComputedStyle(k[a][d])||0,10)||0;return c}var a=document.createElement("_").classList,a="undefined"!==typeof a&&null!==String(a.add).match(/\[Native code\]/gi),m=/[\n\t\r]/g; +document.getElementsByName(b)[0]:b)&&(b.$?b:new CKEDITOR.dom.element(b))},CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node,CKEDITOR.dom.element.createFromHtml=function(b,h){var f=new CKEDITOR.dom.element("div",h);f.setHtml(b);return f.getFirst().remove()},CKEDITOR.dom.element.setMarker=function(b,h,f,e){var a=h.getCustomData("list_marker_id")||h.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),k=h.getCustomData("list_marker_names")||h.setCustomData("list_marker_names", +{}).getCustomData("list_marker_names");b[a]=h;k[f]=1;return h.setCustomData(f,e)},CKEDITOR.dom.element.clearAllMarkers=function(b){for(var h in b)CKEDITOR.dom.element.clearMarkers(b,b[h],1)},CKEDITOR.dom.element.clearMarkers=function(b,h,f){var e=h.getCustomData("list_marker_names"),a=h.getCustomData("list_marker_id"),k;for(k in e)h.removeCustomData(k);h.removeCustomData("list_marker_names");f&&(h.removeCustomData("list_marker_id"),delete b[a])},function(){function b(a,c){return-1<(" "+a+" ").replace(k, +" ").indexOf(" "+c+" ")}function h(a){var c=!0;a.$.id||(a.$.id="cke_tmp_"+CKEDITOR.tools.getNextNumber(),c=!1);return function(){c||a.removeAttribute("id")}}function f(a,c){var d=CKEDITOR.tools.escapeCss(a.$.id);return"#"+d+" "+c.split(/,\s*/).join(", #"+d+" ")}function e(a){for(var c=0,d=0,g=l[a].length;d<g;d++)c+=parseFloat(this.getComputedStyle(l[a][d])||0,10)||0;return c}var a=document.createElement("_").classList,a="undefined"!==typeof a&&null!==String(a.add).match(/\[Native code\]/gi),k=/[\n\t\r]/g; CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_ELEMENT,addClass:a?function(a){this.$.classList.add(a);return this}:function(a){var c=this.$.className;c&&(b(c,a)||(c+=" "+a));this.$.className=c||a;return this},removeClass:a?function(a){var c=this.$;c.classList.remove(a);c.className||c.removeAttribute("class");return this}:function(a){var c=this.getAttribute("class");c&&b(c,a)&&((c=c.replace(new RegExp("(?:^|\\s+)"+a+"(?\x3d\\s|$)"),"").replace(/^\s+/,""))?this.setAttribute("class", c):this.removeAttribute("class"));return this},hasClass:function(a){return b(this.$.className,a)},append:function(a,c){"string"==typeof a&&(a=this.getDocument().createElement(a));c?this.$.insertBefore(a.$,this.$.firstChild):this.$.appendChild(a.$);return a},appendHtml:function(a){if(this.$.childNodes.length){var c=new CKEDITOR.dom.element("div",this.getDocument());c.setHtml(a);c.moveChildren(this)}else this.setHtml(a)},appendText:function(a){null!=this.$.text&&CKEDITOR.env.ie&&9>CKEDITOR.env.version? this.$.text+=a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(a){if(a||CKEDITOR.env.needsBrFiller){for(a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();a&&a.is&&a.is("br")||(a=this.getDocument().createElement("br"),CKEDITOR.env.gecko&&a.setAttribute("type","_moz"),this.append(a))}},breakParent:function(a,c){var d=new CKEDITOR.dom.range(this.getDocument());d.setStartAfter(this);d.setEndAfter(a);var g=d.extractContents(!1,c||!1),b;d.insertNode(this.remove()); if(CKEDITOR.env.ie&&!CKEDITOR.env.edge){for(d=new CKEDITOR.dom.element("div");b=g.getFirst();)b.$.style.backgroundColor&&(b.$.style.backgroundColor=b.$.style.backgroundColor),d.append(b);d.insertAfter(this);d.remove(!0)}else g.insertAfterNode(this)},contains:document.compareDocumentPosition?function(a){return!!(this.$.compareDocumentPosition(a.$)&16)}:function(a){var c=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?c.contains(a.getParent().$):c!=a.$&&c.contains(a.$)},focus:function(){function a(){try{this.$.focus()}catch(c){}} return function(c){c?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\?[^>]*>/g,""):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/,"");var a=this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(!0));return a.innerHTML},getClientRect:function(a){var c=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!c.width&&(c.width=c.right-c.left);!c.height&& (c.height=c.bottom-c.top);return a?CKEDITOR.tools.getAbsoluteRectPosition(this.getWindow(),c):c},setHtml:CKEDITOR.env.ie&&9>CKEDITOR.env.version?function(a){try{var c=this.$;if(this.getParent())return c.innerHTML=a;var d=this.getDocument()._getHtml5ShivFrag();d.appendChild(c);c.innerHTML=a;d.removeChild(c);return a}catch(g){this.$.innerHTML="";c=new CKEDITOR.dom.element("body",this.getDocument());c.$.innerHTML=a;for(c=c.getChildren();c.count();)this.append(c.getItem(0));return a}}:function(a){return this.$.innerHTML= -a},setText:function(){var a=document.createElement("p");a.innerHTML="x";a=a.textContent;return function(c){this.$[a?"textContent":"innerText"]=c}}(),getAttribute:function(){var a=function(c){return this.$.getAttribute(c,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(c){switch(c){case "class":c="className";break;case "http-equiv":c="httpEquiv";break;case "name":return this.$.name;case "tabindex":return c=this.$.getAttribute(c,2),0!==c&&0===this.$.tabIndex&&(c=null), -c;case "checked":return c=this.$.attributes.getNamedItem(c),(c.specified?c.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[c];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified?this.$.getAttribute("contentEditable"):null}return this.$.getAttribute(c,2)}:a}(),getAttributes:function(a){var c={},d=this.$.attributes,g;a=CKEDITOR.tools.isArray(a)?a:[];for(g=0;g<d.length;g++)-1=== +a},setText:function(){var a=document.createElement("p");a.innerHTML="x";a=a.textContent;return function(c){this.$[a?"textContent":"innerText"]=c}}(),getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){switch(a){case "class":a="className";break;case "http-equiv":a="httpEquiv";break;case "name":return this.$.name;case "tabindex":return a=this.$.getAttribute(a,2),0!==a&&0===this.$.tabIndex&&(a=null), +a;case "checked":return a=this.$.attributes.getNamedItem(a),(a.specified?a.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[a];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified?this.$.getAttribute("contentEditable"):null}return this.$.getAttribute(a,2)}:a}(),getAttributes:function(a){var c={},d=this.$.attributes,g;a=CKEDITOR.tools.isArray(a)?a:[];for(g=0;g<d.length;g++)-1=== CKEDITOR.tools.indexOf(a,d[g].name)&&(c[d[g].name]=d[g].value);return c},getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getClientSize:function(){return{width:this.$.clientWidth,height:this.$.clientHeight}},getComputedStyle:document.defaultView&&document.defaultView.getComputedStyle?function(a){var c=this.getWindow().$.getComputedStyle(this.$,null);return c?c.getPropertyValue(a):""}:function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]},getDtd:function(){var a= CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag,getTabIndex:function(){var a=this.$.tabIndex;return 0!==a||CKEDITOR.dtd.$tabIndex[this.getName()]||0===parseInt(this.getAttribute("tabindex"),10)?a:-1},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||null},getNameAtt:function(){return this.$.name|| null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&8>=document.documentMode){var c=this.$.scopeName;"HTML"!=c&&(a=c.toLowerCase()+":"+a)}this.getName=function(){return a};return this.getName()},getValue:function(){return this.$.value},getFirst:function(a){var c=this.$.firstChild;(c=c&&new CKEDITOR.dom.node(c))&&a&&!a(c)&&(c=c.getNext(a));return c},getLast:function(a){var c=this.$.lastChild;(c=c&&new CKEDITOR.dom.node(c))&&a&&!a(c)&&(c=c.getPrevious(a));return c},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]}, @@ -112,41 +112,41 @@ arguments)}catch(g){}else a.apply(this,arguments);return this}:a}(),setAttribute 0;c<a.length;c++)this.removeAttribute(a[c]);else for(c in a=a||this.getAttributes(),a)a.hasOwnProperty(c)&&this.removeAttribute(c)},removeStyle:function(a){var c=this.$.style;if(c.removeProperty||"border"!=a&&"margin"!=a&&"padding"!=a)c.removeProperty?c.removeProperty(a):c.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a)),this.$.style.cssText||this.removeAttribute("style");else{var d=["top","left","right","bottom"],g;"border"==a&&(g=["color","style","width"]);for(var c=[],b=0;b<d.length;b++)if(g)for(var e= 0;e<g.length;e++)c.push([a,d[b],g[e]].join("-"));else c.push([a,d[b]].join("-"));for(a=0;a<c.length;a++)this.removeStyle(c[a])}},setStyle:function(a,c){this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]=c;return this},setStyles:function(a){for(var c in a)this.setStyle(c,a[c]);return this},setOpacity:function(a){CKEDITOR.env.ie&&9>CKEDITOR.env.version?(a=Math.round(100*a),this.setStyle("filter",100<=a?"":"progid:DXImageTransform.Microsoft.Alpha(opacity\x3d"+a+")")):this.setStyle("opacity",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", "none"));if(CKEDITOR.env.ie){this.setAttribute("unselectable","on");for(var a,c=this.getElementsByTag("*"),d=0,g=c.count();d<g;d++)a=c.getItem(d),a.setAttribute("unselectable","on")}},getPositionedAncestor:function(){for(var a=this;"html"!=a.getName();){if("static"!=a.getComputedStyle("position"))return a;a=a.getParent()}return null},getDocumentPosition:function(a){var c=0,d=0,g=this.getDocument(),b=g.getBody(),e="BackCompat"==g.$.compatMode;if(document.documentElement.getBoundingClientRect&&(CKEDITOR.env.ie? -8!==CKEDITOR.env.version:1)){var f=this.$.getBoundingClientRect(),m=g.$.documentElement,h=m.clientTop||b.$.clientTop||0,r=m.clientLeft||b.$.clientLeft||0,k=!0;CKEDITOR.env.ie&&(k=g.getDocumentElement().contains(this),g=g.getBody().contains(this),k=e&&g||!e&&k);k&&(CKEDITOR.env.webkit||CKEDITOR.env.ie&&12<=CKEDITOR.env.version?(c=b.$.scrollLeft||m.scrollLeft,d=b.$.scrollTop||m.scrollTop):(d=e?b.$:m,c=d.scrollLeft,d=d.scrollTop),c=f.left+c-r,d=f.top+d-h)}else for(h=this,r=null;h&&"body"!=h.getName()&& +8!==CKEDITOR.env.version:1)){var f=this.$.getBoundingClientRect(),k=g.$.documentElement,h=k.clientTop||b.$.clientTop||0,r=k.clientLeft||b.$.clientLeft||0,l=!0;CKEDITOR.env.ie&&(l=g.getDocumentElement().contains(this),g=g.getBody().contains(this),l=e&&g||!e&&l);l&&(CKEDITOR.env.webkit||CKEDITOR.env.ie&&12<=CKEDITOR.env.version?(c=b.$.scrollLeft||k.scrollLeft,d=b.$.scrollTop||k.scrollTop):(d=e?b.$:k,c=d.scrollLeft,d=d.scrollTop),c=f.left+c-r,d=f.top+d-h)}else for(h=this,r=null;h&&"body"!=h.getName()&& "html"!=h.getName();){c+=h.$.offsetLeft-h.$.scrollLeft;d+=h.$.offsetTop-h.$.scrollTop;h.equals(this)||(c+=h.$.clientLeft||0,d+=h.$.clientTop||0);for(;r&&!r.equals(h);)c-=r.$.scrollLeft,d-=r.$.scrollTop,r=r.getParent();r=h;h=(f=h.$.offsetParent)?new CKEDITOR.dom.element(f):null}a&&(f=this.getWindow(),h=a.getWindow(),!f.equals(h)&&f.$.frameElement&&(a=(new CKEDITOR.dom.element(f.$.frameElement)).getDocumentPosition(a),c+=a.x,d+=a.y));document.documentElement.getBoundingClientRect||!CKEDITOR.env.gecko|| -e||(c+=this.$.clientLeft?1:0,d+=this.$.clientTop?1:0);return{x:c,y:d}},scrollIntoView:function(a){var c=this.getParent();if(c){do if((c.$.clientWidth&&c.$.clientWidth<c.$.scrollWidth||c.$.clientHeight&&c.$.clientHeight<c.$.scrollHeight)&&!c.is("body")&&this.scrollIntoParent(c,a,1),c.is("html")){var d=c.getWindow();try{var g=d.$.frameElement;g&&(c=new CKEDITOR.dom.element(g))}catch(b){}}while(c=c.getParent())}},scrollIntoParent:function(a,c,d){var g,b,e,f;function h(g,c){/body|html/.test(a.getName())? -a.getWindow().$.scrollBy(g,c):(a.$.scrollLeft+=g,a.$.scrollTop+=c)}function m(g,a){var c={x:0,y:0};if(!g.is(k?"body":"html")){var d=g.$.getBoundingClientRect();c.x=d.left;c.y=d.top}d=g.getWindow();d.equals(a)||(d=m(CKEDITOR.dom.element.get(d.$.frameElement),a),c.x+=d.x,c.y+=d.y);return c}function r(g,a){return parseInt(g.getComputedStyle("margin-"+a)||0,10)||0}!a&&(a=this.getWindow());e=a.getDocument();var k="BackCompat"==e.$.compatMode;a instanceof CKEDITOR.dom.window&&(a=k?e.getBody():e.getDocumentElement()); -CKEDITOR.env.webkit&&(e=this.getEditor(!1))&&(e._.previousScrollTop=null);e=a.getWindow();b=m(this,e);var u=m(a,e),z=this.$.offsetHeight;g=this.$.offsetWidth;var q=a.$.clientHeight,v=a.$.clientWidth;e=b.x-r(this,"left")-u.x||0;f=b.y-r(this,"top")-u.y||0;g=b.x+g+r(this,"right")-(u.x+v)||0;b=b.y+z+r(this,"bottom")-(u.y+q)||0;(0>f||0<b)&&h(0,!0===c?f:!1===c?b:0>f?f:b);d&&(0>e||0<g)&&h(0>e?e:g,0)},setState:function(a,c,d){c=c||"cke";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(c+"_on");this.removeClass(c+ +e||(c+=this.$.clientLeft?1:0,d+=this.$.clientTop?1:0);return{x:c,y:d}},scrollIntoView:function(a){var c=this.getParent();if(c){do if((c.$.clientWidth&&c.$.clientWidth<c.$.scrollWidth||c.$.clientHeight&&c.$.clientHeight<c.$.scrollHeight)&&!c.is("body")&&this.scrollIntoParent(c,a,1),c.is("html")){var d=c.getWindow();try{var g=d.$.frameElement;g&&(c=new CKEDITOR.dom.element(g))}catch(b){}}while(c=c.getParent())}},scrollIntoParent:function(a,c,d){var g,b,e,f;function k(g,c){/body|html/.test(a.getName())? +a.getWindow().$.scrollBy(g,c):(a.$.scrollLeft+=g,a.$.scrollTop+=c)}function h(a,g){var c={x:0,y:0};if(!a.is(l?"body":"html")){var d=a.$.getBoundingClientRect();c.x=d.left;c.y=d.top}d=a.getWindow();d.equals(g)||(d=h(CKEDITOR.dom.element.get(d.$.frameElement),g),c.x+=d.x,c.y+=d.y);return c}function r(a,g){return parseInt(a.getComputedStyle("margin-"+g)||0,10)||0}!a&&(a=this.getWindow());e=a.getDocument();var l="BackCompat"==e.$.compatMode;a instanceof CKEDITOR.dom.window&&(a=l?e.getBody():e.getDocumentElement()); +CKEDITOR.env.webkit&&(e=this.getEditor(!1))&&(e._.previousScrollTop=null);e=a.getWindow();b=h(this,e);var t=h(a,e),z=this.$.offsetHeight;g=this.$.offsetWidth;var u=a.$.clientHeight,w=a.$.clientWidth;e=b.x-r(this,"left")-t.x||0;f=b.y-r(this,"top")-t.y||0;g=b.x+g+r(this,"right")-(t.x+w)||0;b=b.y+z+r(this,"bottom")-(t.y+u)||0;(0>f||0<b)&&k(0,!0===c?f:!1===c?b:0>f?f:b);d&&(0>e||0<g)&&k(0>e?e:g,0)},setState:function(a,c,d){c=c||"cke";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(c+"_on");this.removeClass(c+ "_off");this.removeClass(c+"_disabled");d&&this.setAttribute("aria-pressed",!0);d&&this.removeAttribute("aria-disabled");break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(c+"_disabled");this.removeClass(c+"_off");this.removeClass(c+"_on");d&&this.setAttribute("aria-disabled",!0);d&&this.removeAttribute("aria-pressed");break;default:this.addClass(c+"_off"),this.removeClass(c+"_on"),this.removeClass(c+"_disabled"),d&&this.removeAttribute("aria-pressed"),d&&this.removeAttribute("aria-disabled")}}, getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(c){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},copyAttributes:function(a,c){var d=this.$.attributes;c=c||{};for(var g=0;g<d.length;g++){var b=d[g],e=b.nodeName.toLowerCase(),f;if(!(e in c))if("checked"==e&&(f=this.getAttribute(e)))a.setAttribute(e,f);else if(!CKEDITOR.env.ie||this.hasAttribute(e))f=this.getAttribute(e),null===f&&(f=b.nodeValue),a.setAttribute(e,f)}""!==this.$.style.cssText&& (a.$.style.cssText=this.$.style.cssText)},renameNode:function(a){if(this.getName()!=a){var c=this.getDocument();a=new CKEDITOR.dom.element(a,c);this.copyAttributes(a);this.moveChildren(a);this.getParent(!0)&&this.$.parentNode.replaceChild(a.$,this.$);a.$["data-cke-expando"]=this.$["data-cke-expando"];this.$=a.$;delete this.getName}},getChild:function(){function a(c,d){var g=c.childNodes;if(0<=d&&d<g.length)return g[d]}return function(c){var d=this.$;if(c.slice)for(c=c.slice();0<c.length&&d;)d=a(d, c.shift());else d=a(d,c);return d?new CKEDITOR.dom.node(d):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){function a(c){return c.type==CKEDITOR.NODE_ELEMENT&&c.hasClass("cke_enable_context_menu")}this.on("contextmenu",function(c){c.data.getTarget().getAscendant(a,!0)||c.data.preventDefault()})},getDirection:function(a){return a?this.getComputedStyle("direction")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir|| "ltr":this.getStyle("direction")||this.getAttribute("dir")},data:function(a,c){a="data-"+a;if(void 0===c)return this.getAttribute(a);!1===c?this.removeAttribute(a):this.setAttribute(a,c);return null},getEditor:function(a){var c=CKEDITOR.instances,d,g,b;a=a||void 0===a;for(d in c)if(g=c[d],g.element.equals(this)&&g.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO||!a&&(b=g.editable())&&(b.equals(this)||b.contains(this)))return g;return null},find:function(a){var c=h(this);a=new CKEDITOR.dom.nodeList(this.$.querySelectorAll(f(this, a)));c();return a},findOne:function(a){var c=h(this);a=this.$.querySelector(f(this,a));c();return a?new CKEDITOR.dom.element(a):null},forEach:function(a,c,d){if(!(d||c&&this.type!=c))var g=a(this);if(!1!==g){d=this.getChildren();for(var b=0;b<d.count();b++)g=d.getItem(b),g.type==CKEDITOR.NODE_ELEMENT?g.forEach(a,c):c&&g.type!=c||a(g)}},fireEventHandler:function(a,c){var d="on"+a,g=this.$;if(CKEDITOR.env.ie&&9>CKEDITOR.env.version){var b=g.ownerDocument.createEventObject(),e;for(e in c)b[e]=c[e];g.fireEvent(d, -b)}else g[g[a]?a:d](c)},isDetached:function(){var a=this.getDocument(),c=a.getDocumentElement();return c.equals(this)||c.contains(this)?!CKEDITOR.env.ie||8<CKEDITOR.env.version&&!CKEDITOR.env.quirks?!a.$.defaultView:!1:!0}});var k={width:["border-left-width","border-right-width","padding-left","padding-right"],height:["border-top-width","border-bottom-width","padding-top","padding-bottom"]};CKEDITOR.dom.element.prototype.setSize=function(a,c,d){"number"==typeof c&&(!d||CKEDITOR.env.ie&&CKEDITOR.env.quirks|| +b)}else g[g[a]?a:d](c)},isDetached:function(){var a=this.getDocument(),c=a.getDocumentElement();return c.equals(this)||c.contains(this)?!CKEDITOR.env.ie||8<CKEDITOR.env.version&&!CKEDITOR.env.quirks?!a.$.defaultView:!1:!0}});var l={width:["border-left-width","border-right-width","padding-left","padding-right"],height:["border-top-width","border-bottom-width","padding-top","padding-bottom"]};CKEDITOR.dom.element.prototype.setSize=function(a,c,d){"number"==typeof c&&(!d||CKEDITOR.env.ie&&CKEDITOR.env.quirks|| (c-=e.call(this,a)),this.setStyle(a,c+"px"))};CKEDITOR.dom.element.prototype.getSize=function(a,c){var d=Math.max(this.$["offset"+CKEDITOR.tools.capitalize(a)],this.$["client"+CKEDITOR.tools.capitalize(a)])||0;c&&(d-=e.call(this,a));return d}}(),CKEDITOR.dom.documentFragment=function(b){b=b||CKEDITOR.document;this.$=b.type==CKEDITOR.NODE_DOCUMENT?b.$.createDocumentFragment():b},CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT, insertAfterNode:function(b){b=b.$;b.parentNode.insertBefore(this.$,b.nextSibling)},getHtml:function(){var b=new CKEDITOR.dom.element("div");this.clone(1,1).appendTo(b);return b.getHtml().replace(/\s*data-cke-expando=".*?"/g,"")}},!0,{append:1,appendBogus:1,clone:1,getFirst:1,getHtml:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1}),CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype, -CKEDITOR.dom.document.prototype,!0,{find:1,findOne:1}),function(){function b(a,g){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed)return this.end(),null;c.optimize()}var d,b=c.startContainer;d=c.endContainer;var e=c.startOffset,n=c.endOffset,f,h=this.guard,m=this.type,k=a?"getPreviousSourceNode":"getNextSourceNode";if(!a&&!this._.guardLTR){var l=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),A=d.type==CKEDITOR.NODE_ELEMENT?d.getChild(n):d.getNext();this._.guardLTR= -function(a,g){return(!g||!l.equals(a))&&(!A||!a.equals(A))&&(a.type!=CKEDITOR.NODE_ELEMENT||!g||!a.equals(c.root))}}if(a&&!this._.guardRTL){var E=b.type==CKEDITOR.NODE_ELEMENT?b:b.getParent(),F=b.type==CKEDITOR.NODE_ELEMENT?e?b.getChild(e-1):null:b.getPrevious();this._.guardRTL=function(a,g){return(!g||!E.equals(a))&&(!F||!a.equals(F))&&(a.type!=CKEDITOR.NODE_ELEMENT||!g||!a.equals(c.root))}}var K=a?this._.guardRTL:this._.guardLTR;f=h?function(a,g){return!1===K(a,g)?!1:h(a,g)}:K;this.current?d=this.current[k](!1, -m,f):(a?d.type==CKEDITOR.NODE_ELEMENT&&(d=0<n?d.getChild(n-1):!1===f(d,!0)?null:d.getPreviousSourceNode(!0,m,f)):(d=b,d.type==CKEDITOR.NODE_ELEMENT&&((d=d.getChild(e))||(d=!1===f(b,!0)?null:b.getNextSourceNode(!0,m,f)))),d&&!1===f(d)&&(d=null));for(;d&&!this._.end;){this.current=d;if(!this.evaluator||!1!==this.evaluator(d)){if(!g)return d}else if(g&&this.evaluator)return!1;d=d[k](!1,m,f)}this.end();return this.current=null}function h(a){for(var g,c=null;g=b.call(this,a);)c=g;return c}CKEDITOR.dom.walker= +CKEDITOR.dom.document.prototype,!0,{find:1,findOne:1}),function(){function b(a,g){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed)return this.end(),null;c.optimize()}var d,b=c.startContainer;d=c.endContainer;var e=c.startOffset,n=c.endOffset,f,k=this.guard,h=this.type,l=a?"getPreviousSourceNode":"getNextSourceNode";if(!a&&!this._.guardLTR){var m=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),A=d.type==CKEDITOR.NODE_ELEMENT?d.getChild(n):d.getNext();this._.guardLTR= +function(a,g){return(!g||!m.equals(a))&&(!A||!a.equals(A))&&(a.type!=CKEDITOR.NODE_ELEMENT||!g||!a.equals(c.root))}}if(a&&!this._.guardRTL){var E=b.type==CKEDITOR.NODE_ELEMENT?b:b.getParent(),F=b.type==CKEDITOR.NODE_ELEMENT?e?b.getChild(e-1):null:b.getPrevious();this._.guardRTL=function(a,g){return(!g||!E.equals(a))&&(!F||!a.equals(F))&&(a.type!=CKEDITOR.NODE_ELEMENT||!g||!a.equals(c.root))}}var K=a?this._.guardRTL:this._.guardLTR;f=k?function(a,g){return!1===K(a,g)?!1:k(a,g)}:K;this.current?d=this.current[l](!1, +h,f):(a?d.type==CKEDITOR.NODE_ELEMENT&&(d=0<n?d.getChild(n-1):!1===f(d,!0)?null:d.getPreviousSourceNode(!0,h,f)):(d=b,d.type==CKEDITOR.NODE_ELEMENT&&((d=d.getChild(e))||(d=!1===f(b,!0)?null:b.getNextSourceNode(!0,h,f)))),d&&!1===f(d)&&(d=null));for(;d&&!this._.end;){this.current=d;if(!this.evaluator||!1!==this.evaluator(d)){if(!g)return d}else if(g&&this.evaluator)return!1;d=d[l](!1,h,f)}this.end();return this.current=null}function h(a){for(var g,c=null;g=b.call(this,a);)c=g;return c}CKEDITOR.dom.walker= CKEDITOR.tools.createClass({$:function(a){this.range=a;this._={}},proto:{end:function(){this._.end=1},next:function(){return b.call(this)},previous:function(){return b.call(this,1)},checkForward:function(){return!1!==b.call(this,0,1)},checkBackward:function(){return!1!==b.call(this,1,1)},lastForward:function(){return h.call(this)},lastBackward:function(){return h.call(this,1)},reset:function(){delete this.current;this._={}}}});var f={block:1,"list-item":1,table:1,"table-row-group":1,"table-header-group":1, "table-footer-group":1,"table-row":1,"table-column-group":1,"table-column":1,"table-cell":1,"table-caption":1},e={absolute:1,fixed:1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(a){return"none"!=this.getComputedStyle("float")||this.getComputedStyle("position")in e||!f[this.getComputedStyle("display")]?!!(this.is(CKEDITOR.dtd.$block)||a&&this.is(a)):!0};CKEDITOR.dom.walker.blockBoundary=function(a){return function(g){return!(g.type==CKEDITOR.NODE_ELEMENT&&g.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary= function(){return this.blockBoundary({br:1})};CKEDITOR.dom.walker.bookmark=function(a,g){function c(a){return a&&a.getName&&"span"==a.getName()&&a.data("cke-bookmark")}return function(d){var b,e;b=d&&d.type!=CKEDITOR.NODE_ELEMENT&&(e=d.getParent())&&c(e);b=a?b:b||c(d);return!!(g^b)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(g){var c;g&&g.type==CKEDITOR.NODE_TEXT&&(c=!CKEDITOR.tools.trim(g.getText())||CKEDITOR.env.webkit&&g.getText()==CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE); -return!!(a^c)}};CKEDITOR.dom.walker.invisible=function(a){var g=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.env.webkit?1:0;return function(d){g(d)?d=1:(d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent()),d=d.$.offsetWidth<=c);return!!(a^d)}};CKEDITOR.dom.walker.nodeType=function(a,g){return function(c){return!!(g^c.type==a)}};CKEDITOR.dom.walker.bogus=function(g){function c(a){return!m(a)&&!k(a)}return function(d){var b=CKEDITOR.env.needsBrFiller?d.is&&d.is("br"):d.getText&&a.test(d.getText());b&&(b=d.getParent(), -d=d.getNext(c),b=b.isBlockBoundary()&&(!d||d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()));return!!(g^b)}};CKEDITOR.dom.walker.temp=function(a){return function(g){g.type!=CKEDITOR.NODE_ELEMENT&&(g=g.getParent());g=g&&g.hasAttribute("data-cke-temp");return!!(a^g)}};var a=/^[\t\r\n ]*(?: |\xa0)$/,m=CKEDITOR.dom.walker.whitespaces(),k=CKEDITOR.dom.walker.bookmark(),l=CKEDITOR.dom.walker.temp(),c=function(a){return k(a)||m(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$inline)&&!a.is(CKEDITOR.dtd.$empty)}; -CKEDITOR.dom.walker.ignored=function(a){return function(g){g=m(g)||k(g)||l(g);return!!(a^g)}};var d=CKEDITOR.dom.walker.ignored();CKEDITOR.dom.walker.empty=function(a){return function(g){for(var c=0,b=g.getChildCount();c<b;++c)if(!d(g.getChild(c)))return!!a;return!a}};var g=CKEDITOR.dom.walker.empty(),n=CKEDITOR.dom.walker.validEmptyBlockContainers=CKEDITOR.tools.extend(function(a){var g={},c;for(c in a)CKEDITOR.dtd[c]["#"]&&(g[c]=1);return g}(CKEDITOR.dtd.$block),{caption:1,td:1,th:1});CKEDITOR.dom.walker.editable= +return!!(a^c)}};CKEDITOR.dom.walker.invisible=function(a){var g=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.env.webkit?1:0;return function(d){g(d)?d=1:(d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent()),d=d.$.offsetWidth<=c);return!!(a^d)}};CKEDITOR.dom.walker.nodeType=function(a,g){return function(c){return!!(g^c.type==a)}};CKEDITOR.dom.walker.bogus=function(g){function c(a){return!k(a)&&!l(a)}return function(d){var b=CKEDITOR.env.needsBrFiller?d.is&&d.is("br"):d.getText&&a.test(d.getText());b&&(b=d.getParent(), +d=d.getNext(c),b=b.isBlockBoundary()&&(!d||d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()));return!!(g^b)}};CKEDITOR.dom.walker.temp=function(a){return function(g){g.type!=CKEDITOR.NODE_ELEMENT&&(g=g.getParent());g=g&&g.hasAttribute("data-cke-temp");return!!(a^g)}};var a=/^[\t\r\n ]*(?: |\xa0)$/,k=CKEDITOR.dom.walker.whitespaces(),l=CKEDITOR.dom.walker.bookmark(),m=CKEDITOR.dom.walker.temp(),c=function(a){return l(a)||k(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$inline)&&!a.is(CKEDITOR.dtd.$empty)}; +CKEDITOR.dom.walker.ignored=function(a){return function(g){g=k(g)||l(g)||m(g);return!!(a^g)}};var d=CKEDITOR.dom.walker.ignored();CKEDITOR.dom.walker.empty=function(a){return function(g){for(var c=0,b=g.getChildCount();c<b;++c)if(!d(g.getChild(c)))return!!a;return!a}};var g=CKEDITOR.dom.walker.empty(),n=CKEDITOR.dom.walker.validEmptyBlockContainers=CKEDITOR.tools.extend(function(a){var g={},c;for(c in a)CKEDITOR.dtd[c]["#"]&&(g[c]=1);return g}(CKEDITOR.dtd.$block),{caption:1,td:1,th:1});CKEDITOR.dom.walker.editable= function(a){return function(c){c=d(c)?!1:c.type==CKEDITOR.NODE_TEXT||c.type==CKEDITOR.NODE_ELEMENT&&(c.is(CKEDITOR.dtd.$inline)||c.is("hr")||"false"==c.getAttribute("contenteditable")||!CKEDITOR.env.needsBrFiller&&c.is(n)&&g(c))?!0:!1;return!!(a^c)}};CKEDITOR.dom.element.prototype.getBogus=function(){var g=this;do g=g.getPreviousSourceNode();while(c(g));return g&&(CKEDITOR.env.needsBrFiller?g.is&&g.is("br"):g.getText&&a.test(g.getText()))?g:!1}}(),CKEDITOR.dom.range=function(b){this.endOffset=this.endContainer= -this.startOffset=this.startContainer=null;this.collapsed=!0;var h=b instanceof CKEDITOR.dom.document;this.document=h?b:b.getDocument();this.root=h?b.getBody():b},function(){function b(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset}function h(a,c,d,b,e){function f(a,g,c,d){var b=c?a.getPrevious():a.getNext();if(d&&k)return b;q||d?g.append(a.clone(!0,e),c):(a.remove(),l&&g.append(a,c));return b}function h(){var a,g,c,d=Math.min(I.length, -M.length);for(a=0;a<d;a++)if(g=I[a],c=M[a],!g.equals(c))return a;return a-1}function m(){var c=Q-1,d=K&&L&&!v.equals(B);c<H-1||c<G-1||d?(d?a.moveToPosition(B,CKEDITOR.POSITION_BEFORE_START):G==c+1&&F?a.moveToPosition(M[c],CKEDITOR.POSITION_BEFORE_END):a.moveToPosition(M[c+1],CKEDITOR.POSITION_BEFORE_START),b&&(c=I[c+1])&&c.type==CKEDITOR.NODE_ELEMENT&&(d=CKEDITOR.dom.element.createFromHtml('\x3cspan data-cke-bookmark\x3d"1" style\x3d"display:none"\x3e\x26nbsp;\x3c/span\x3e',a.document),d.insertAfter(c), -c.mergeSiblings(!1),a.moveToBookmark({startNode:d}))):a.collapse(!0)}a.optimizeBookmark();var k=0===c,l=1==c,q=2==c;c=q||l;var v=a.startContainer,B=a.endContainer,D=a.startOffset,A=a.endOffset,E,F,K,L,C,O;if(q&&B.type==CKEDITOR.NODE_TEXT&&(v.equals(B)||v.type===CKEDITOR.NODE_ELEMENT&&v.getFirst().equals(B)))d.append(a.document.createText(B.substring(D,A)));else{B.type==CKEDITOR.NODE_TEXT?q?O=!0:B=B.split(A):0<B.getChildCount()?A>=B.getChildCount()?(B=B.getChild(A-1),F=!0):B=B.getChild(A):L=F=!0;v.type== -CKEDITOR.NODE_TEXT?q?C=!0:v.split(D):0<v.getChildCount()?0===D?(v=v.getChild(D),E=!0):v=v.getChild(D-1):K=E=!0;for(var I=v.getParents(),M=B.getParents(),Q=h(),H=I.length-1,G=M.length-1,P=d,Y,T,X,da=-1,J=Q;J<=H;J++){T=I[J];X=T.getNext();for(J!=H||T.equals(M[J])&&H<G?c&&(Y=P.append(T.clone(0,e))):E?f(T,P,!1,K):C&&P.append(a.document.createText(T.substring(D)));X;){if(X.equals(M[J])){da=J;break}X=f(X,P)}P=Y}P=d;for(J=Q;J<=G;J++)if(d=M[J],X=d.getPrevious(),d.equals(I[J]))c&&(P=P.getChild(0));else{J!= -G||d.equals(I[J])&&G<H?c&&(Y=P.append(d.clone(0,e))):F?f(d,P,!1,L):O&&P.append(a.document.createText(d.substring(0,A)));if(J>da)for(;X;)X=f(X,P,!0);P=Y}q||m()}}function f(){var a=!1,c=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark(!0),b=CKEDITOR.dom.walker.bogus();return function(e){return d(e)||c(e)?!0:b(e)&&!a?a=!0:e.type==CKEDITOR.NODE_TEXT&&(e.hasAscendant("pre")||CKEDITOR.tools.trim(e.getText()).length)||e.type==CKEDITOR.NODE_ELEMENT&&!e.is(m)?!1:!0}}function e(a){var c=CKEDITOR.dom.walker.whitespaces(), -d=CKEDITOR.dom.walker.bookmark(1);return function(b){return d(b)||c(b)?!0:!a&&k(b)||b.type==CKEDITOR.NODE_ELEMENT&&b.is(CKEDITOR.dtd.$removeEmpty)}}function a(a){return function(){var b;return this[a?"getPreviousNode":"getNextNode"](function(a){!b&&d(a)&&(b=a);return c(a)&&!(k(a)&&a.equals(b))})}}var m={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},k=CKEDITOR.dom.walker.bogus(), -l=/^[\t\r\n ]*(?: |\xa0)$/,c=CKEDITOR.dom.walker.editable(),d=CKEDITOR.dom.walker.ignored(!0);CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer);a.startOffset=this.startOffset;a._setEndContainer(this.endContainer);a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){a?(this._setEndContainer(this.startContainer),this.endOffset=this.startOffset):(this._setStartContainer(this.endContainer), +this.startOffset=this.startContainer=null;this.collapsed=!0;var h=b instanceof CKEDITOR.dom.document;this.document=h?b:b.getDocument();this.root=h?b.getBody():b},function(){function b(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset}function h(a,c,d,b,e){function f(a,g,c,d){var b=c?a.getPrevious():a.getNext();if(d&&l)return b;u||d?g.append(a.clone(!0,e),c):(a.remove(),m&&g.append(a,c));return b}function k(){var a,g,c,d=Math.min(I.length, +L.length);for(a=0;a<d;a++)if(g=I[a],c=L[a],!g.equals(c))return a;return a-1}function h(){var c=R-1,d=K&&M&&!w.equals(B);c<H-1||c<G-1||d?(d?a.moveToPosition(B,CKEDITOR.POSITION_BEFORE_START):G==c+1&&F?a.moveToPosition(L[c],CKEDITOR.POSITION_BEFORE_END):a.moveToPosition(L[c+1],CKEDITOR.POSITION_BEFORE_START),b&&(c=I[c+1])&&c.type==CKEDITOR.NODE_ELEMENT&&(d=CKEDITOR.dom.element.createFromHtml('\x3cspan data-cke-bookmark\x3d"1" style\x3d"display:none"\x3e\x26nbsp;\x3c/span\x3e',a.document),d.insertAfter(c), +c.mergeSiblings(!1),a.moveToBookmark({startNode:d}))):a.collapse(!0)}a.optimizeBookmark();var l=0===c,m=1==c,u=2==c;c=u||m;var w=a.startContainer,B=a.endContainer,C=a.startOffset,A=a.endOffset,E,F,K,M,D,N;if(u&&B.type==CKEDITOR.NODE_TEXT&&(w.equals(B)||w.type===CKEDITOR.NODE_ELEMENT&&w.getFirst().equals(B)))d.append(a.document.createText(B.substring(C,A)));else{B.type==CKEDITOR.NODE_TEXT?u?N=!0:B=B.split(A):0<B.getChildCount()?A>=B.getChildCount()?(B=B.getChild(A-1),F=!0):B=B.getChild(A):M=F=!0;w.type== +CKEDITOR.NODE_TEXT?u?D=!0:w.split(C):0<w.getChildCount()?0===C?(w=w.getChild(C),E=!0):w=w.getChild(C-1):K=E=!0;for(var I=w.getParents(),L=B.getParents(),R=k(),H=I.length-1,G=L.length-1,O=d,Y,S,X,ca=-1,J=R;J<=H;J++){S=I[J];X=S.getNext();for(J!=H||S.equals(L[J])&&H<G?c&&(Y=O.append(S.clone(0,e))):E?f(S,O,!1,K):D&&O.append(a.document.createText(S.substring(C)));X;){if(X.equals(L[J])){ca=J;break}X=f(X,O)}O=Y}O=d;for(J=R;J<=G;J++)if(d=L[J],X=d.getPrevious(),d.equals(I[J]))c&&(O=O.getChild(0));else{J!= +G||d.equals(I[J])&&G<H?c&&(Y=O.append(d.clone(0,e))):F?f(d,O,!1,M):N&&O.append(a.document.createText(d.substring(0,A)));if(J>ca)for(;X;)X=f(X,O,!0);O=Y}u||h()}}function f(){var a=!1,c=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark(!0),b=CKEDITOR.dom.walker.bogus();return function(e){return d(e)||c(e)?!0:b(e)&&!a?a=!0:e.type==CKEDITOR.NODE_TEXT&&(e.hasAscendant("pre")||CKEDITOR.tools.trim(e.getText()).length)||e.type==CKEDITOR.NODE_ELEMENT&&!e.is(k)?!1:!0}}function e(a){var c=CKEDITOR.dom.walker.whitespaces(), +d=CKEDITOR.dom.walker.bookmark(1);return function(b){return d(b)||c(b)?!0:!a&&l(b)||b.type==CKEDITOR.NODE_ELEMENT&&b.is(CKEDITOR.dtd.$removeEmpty)}}function a(a){return function(){var b;return this[a?"getPreviousNode":"getNextNode"](function(a){!b&&d(a)&&(b=a);return c(a)&&!(l(a)&&a.equals(b))})}}var k={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},l=CKEDITOR.dom.walker.bogus(), +m=/^[\t\r\n ]*(?: |\xa0)$/,c=CKEDITOR.dom.walker.editable(),d=CKEDITOR.dom.walker.ignored(!0);CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer);a.startOffset=this.startOffset;a._setEndContainer(this.endContainer);a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){a?(this._setEndContainer(this.startContainer),this.endOffset=this.startOffset):(this._setStartContainer(this.endContainer), this.startOffset=this.endOffset);this.collapsed=!0},cloneContents:function(a){var c=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||h(this,2,c,!1,"undefined"==typeof a?!0:a);return c},deleteContents:function(a){this.collapsed||h(this,0,null,a)},extractContents:function(a,c){var d=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||h(this,1,d,a,"undefined"==typeof c?!0:c);return d},equals:function(a){return this.startOffset===a.startOffset&&this.endOffset===a.endOffset&& -this.startContainer.equals(a.startContainer)&&this.endContainer.equals(a.endContainer)},createBookmark:function(a){function c(a){return a.getAscendant(function(a){var g;if(g=a.data&&a.data("cke-temp"))g=-1===CKEDITOR.tools.array.indexOf(["cke_copybin","cke_pastebin"],a.getAttribute("id"));return g},!0)}var d=this.startContainer,b=this.endContainer,e=this.collapsed,f,h,m,k;f=this.document.createElement("span");f.data("cke-bookmark",1);f.setStyle("display","none");f.setHtml("\x26nbsp;");a&&(m="cke_bm_"+ -CKEDITOR.tools.getNextNumber(),f.setAttribute("id",m+(e?"C":"S")));e||(h=f.clone(),h.setHtml("\x26nbsp;"),a&&h.setAttribute("id",m+"E"),k=this.clone(),c(b)&&(b=c(b),k.moveToPosition(b,CKEDITOR.POSITION_AFTER_END)),k.collapse(),k.insertNode(h));k=this.clone();c(d)&&(b=c(d),k.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START));k.collapse(!0);k.insertNode(f);h?(this.setStartAfter(f),this.setEndBefore(h)):this.moveToPosition(f,CKEDITOR.POSITION_AFTER_END);return{startNode:a?m+(e?"C":"S"):f,endNode:a?m+ -"E":h,serializable:a,collapsed:e}},createBookmark2:function(){function a(g){var c=g.container,b=g.offset,e;e=c;var n=b;e=e.type!=CKEDITOR.NODE_ELEMENT||0===n||n==e.getChildCount()?0:e.getChild(n-1).type==CKEDITOR.NODE_TEXT&&e.getChild(n).type==CKEDITOR.NODE_TEXT;e&&(c=c.getChild(b-1),b=c.getLength());if(c.type==CKEDITOR.NODE_ELEMENT&&0<b){a:{for(e=c;b--;)if(n=e.getChild(b).getIndex(!0),0<=n){b=n;break a}b=-1}b+=1}if(c.type==CKEDITOR.NODE_TEXT){e=c;for(n=0;(e=e.getPrevious())&&e.type==CKEDITOR.NODE_TEXT;)n+= +this.startContainer.equals(a.startContainer)&&this.endContainer.equals(a.endContainer)},createBookmark:function(a){function c(a){return a.getAscendant(function(a){var g;if(g=a.data&&a.data("cke-temp"))g=-1===CKEDITOR.tools.array.indexOf(["cke_copybin","cke_pastebin"],a.getAttribute("id"));return g},!0)}var d=this.startContainer,b=this.endContainer,e=this.collapsed,f,k,h,l;f=this.document.createElement("span");f.data("cke-bookmark",1);f.setStyle("display","none");f.setHtml("\x26nbsp;");a&&(h="cke_bm_"+ +CKEDITOR.tools.getNextNumber(),f.setAttribute("id",h+(e?"C":"S")));e||(k=f.clone(),k.setHtml("\x26nbsp;"),a&&k.setAttribute("id",h+"E"),l=this.clone(),c(b)&&(b=c(b),l.moveToPosition(b,CKEDITOR.POSITION_AFTER_END)),l.collapse(),l.insertNode(k));l=this.clone();c(d)&&(b=c(d),l.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START));l.collapse(!0);l.insertNode(f);k?(this.setStartAfter(f),this.setEndBefore(k)):this.moveToPosition(f,CKEDITOR.POSITION_AFTER_END);return{startNode:a?h+(e?"C":"S"):f,endNode:a?h+ +"E":k,serializable:a,collapsed:e}},createBookmark2:function(){function a(g){var c=g.container,b=g.offset,e;e=c;var n=b;e=e.type!=CKEDITOR.NODE_ELEMENT||0===n||n==e.getChildCount()?0:e.getChild(n-1).type==CKEDITOR.NODE_TEXT&&e.getChild(n).type==CKEDITOR.NODE_TEXT;e&&(c=c.getChild(b-1),b=c.getLength());if(c.type==CKEDITOR.NODE_ELEMENT&&0<b){a:{for(e=c;b--;)if(n=e.getChild(b).getIndex(!0),0<=n){b=n;break a}b=-1}b+=1}if(c.type==CKEDITOR.NODE_TEXT){e=c;for(n=0;(e=e.getPrevious())&&e.type==CKEDITOR.NODE_TEXT;)n+= e.getText().replace(CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE,"").length;e=n;c.isEmpty()?(n=c.getPrevious(d),e?(b=e,c=n?n.getNext():c.getParent().getFirst()):(c=c.getParent(),b=n?n.getIndex(!0)+1:0)):b+=e}g.container=c;g.offset=b}function c(a,g){var d=g.getCustomData("cke-fillingChar");if(d){var b=a.container;d.equals(b)&&(a.offset-=CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE.length,0>=a.offset&&(a.offset=b.getIndex(),a.container=b.getParent()))}}var d=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT, !0);return function(d){var b=this.collapsed,e={container:this.startContainer,offset:this.startOffset},f={container:this.endContainer,offset:this.endOffset};d&&(a(e),c(e,this.root),b||(a(f),c(f,this.root)));return{start:e.container.getAddress(d),end:b?null:f.container.getAddress(d),startOffset:e.offset,endOffset:f.offset,normalized:d,collapsed:b,is2:!0}}}(),moveToBookmark:function(a){if(a.is2){var c=this.document.getByAddress(a.start,a.normalized),d=a.startOffset,b=a.end&&this.document.getByAddress(a.end, a.normalized);a=a.endOffset;this.setStart(c,d);b?this.setEnd(b,a):this.collapse(!0)}else c=(d=a.serializable)?this.document.getById(a.startNode):a.startNode,a=d?this.document.getById(a.endNode):a.endNode,this.setStartBefore(c),c.remove(),a?(this.setEndBefore(a),a.remove()):this.collapse(!0)},getBoundaryNodes:function(){var a=this.startContainer,c=this.endContainer,d=this.startOffset,b=this.endOffset,e;if(a.type==CKEDITOR.NODE_ELEMENT)if(e=a.getChildCount(),e>d)a=a.getChild(d);else if(1>e)a=a.getPreviousSourceNode(); @@ -154,32 +154,32 @@ else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNext this.startOffset==this.endOffset-1?d.getChild(this.startOffset):d:d.getCommonAncestor(b);return c&&!d.is?d.getParent():d},optimize:function(){var a=this.startContainer,c=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(c?c>=a.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;c=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(c?c>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,c=this.endContainer;a.is&&a.is("span")&& a.data("cke-bookmark")&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);c&&c.is&&c.is("span")&&c.data("cke-bookmark")&&this.setEndAt(c,CKEDITOR.POSITION_AFTER_END)},trim:function(a,c){var d=this.startContainer,b=this.startOffset,e=this.collapsed;if((!a||e)&&d&&d.type==CKEDITOR.NODE_TEXT){if(b)if(b>=d.getLength())b=d.getIndex()+1,d=d.getParent();else{var f=d.split(b),b=d.getIndex()+1,d=d.getParent();this.startContainer.equals(this.endContainer)?this.setEnd(f,this.endOffset-this.startOffset):d.equals(this.endContainer)&& (this.endOffset+=1)}else b=d.getIndex(),d=d.getParent();this.setStart(d,b);if(e){this.collapse(!0);return}}d=this.endContainer;b=this.endOffset;c||e||!d||d.type!=CKEDITOR.NODE_TEXT||(b?(b>=d.getLength()||d.split(b),b=d.getIndex()+1):b=d.getIndex(),d=d.getParent(),this.setEnd(d,b))},enlarge:function(a,c){function d(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")?null:a}var b=new RegExp(/[^\s\ufeff]/);switch(a){case CKEDITOR.ENLARGE_INLINE:var e=1;case CKEDITOR.ENLARGE_ELEMENT:var f= -function(a,g){var c=new CKEDITOR.dom.range(m);c.setStart(a,g);c.setEndAt(m,CKEDITOR.POSITION_BEFORE_END);var c=new CKEDITOR.dom.walker(c),d;for(c.guard=function(a){return!(a.type==CKEDITOR.NODE_ELEMENT&&a.isBlockBoundary())};d=c.next();){if(d.type!=CKEDITOR.NODE_TEXT)return!1;E=d!=a?d.getText():d.substring(g);if(b.test(E))return!1}return!0};if(this.collapsed)break;var h=this.getCommonAncestor(),m=this.root,k,l,q,v,B,D=!1,A,E;A=this.startContainer;var F=this.startOffset;A.type==CKEDITOR.NODE_TEXT? -(F&&(A=!CKEDITOR.tools.trim(A.substring(0,F)).length&&A,D=!!A),A&&((v=A.getPrevious())||(q=A.getParent()))):(F&&(v=A.getChild(F-1)||A.getLast()),v||(q=A));for(q=d(q);q||v;){if(q&&!v){!B&&q.equals(h)&&(B=!0);if(e?q.isBlockBoundary():!m.contains(q))break;D&&"inline"==q.getComputedStyle("display")||(D=!1,B?k=q:this.setStartBefore(q));v=q.getPrevious()}for(;v;)if(A=!1,v.type==CKEDITOR.NODE_COMMENT)v=v.getPrevious();else{if(v.type==CKEDITOR.NODE_TEXT)E=v.getText(),b.test(E)&&(v=null),A=/[\s\ufeff]$/.test(E); -else if((v.$.offsetWidth>(CKEDITOR.env.webkit?1:0)||c&&v.is("br"))&&!v.data("cke-bookmark"))if(D&&CKEDITOR.dtd.$removeEmpty[v.getName()]){E=v.getText();if(b.test(E))v=null;else for(var F=v.$.getElementsByTagName("*"),K=0,L;L=F[K++];)if(!CKEDITOR.dtd.$removeEmpty[L.nodeName.toLowerCase()]){v=null;break}v&&(A=!!E.length)}else v=null;A&&(D?B?k=q:q&&this.setStartBefore(q):D=!0);if(v){A=v.getPrevious();if(!q&&!A){q=v;v=null;break}v=A}else q=null}q&&(q=d(q.getParent()))}A=this.endContainer;F=this.endOffset; -q=v=null;B=D=!1;A.type==CKEDITOR.NODE_TEXT?CKEDITOR.tools.trim(A.substring(F)).length?D=!0:(D=!A.getLength(),F==A.getLength()?(v=A.getNext())||(q=A.getParent()):f(A,F)&&(q=A.getParent())):(v=A.getChild(F))||(q=A);for(;q||v;){if(q&&!v){!B&&q.equals(h)&&(B=!0);if(e?q.isBlockBoundary():!m.contains(q))break;D&&"inline"==q.getComputedStyle("display")||(D=!1,B?l=q:q&&this.setEndAfter(q));v=q.getNext()}for(;v;){A=!1;if(v.type==CKEDITOR.NODE_TEXT)E=v.getText(),f(v,0)||(v=null),A=/^[\s\ufeff]/.test(E);else if(v.type== -CKEDITOR.NODE_ELEMENT){if((0<v.$.offsetWidth||c&&v.is("br"))&&!v.data("cke-bookmark"))if(D&&CKEDITOR.dtd.$removeEmpty[v.getName()]){E=v.getText();if(b.test(E))v=null;else for(F=v.$.getElementsByTagName("*"),K=0;L=F[K++];)if(!CKEDITOR.dtd.$removeEmpty[L.nodeName.toLowerCase()]){v=null;break}v&&(A=!!E.length)}else v=null}else A=1;A&&D&&(B?l=q:this.setEndAfter(q));if(v){A=v.getNext();if(!q&&!A){q=v;v=null;break}v=A}else q=null}q&&(q=d(q.getParent()))}k&&l&&(h=k.contains(l)?l:k,this.setStartBefore(h), -this.setEndAfter(h));break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:q=new CKEDITOR.dom.range(this.root);m=this.root;q.setStartAt(m,CKEDITOR.POSITION_AFTER_START);q.setEnd(this.startContainer,this.startOffset);q=new CKEDITOR.dom.walker(q);var C,O,I=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),M=null,Q=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&"false"==a.getAttribute("contenteditable"))if(M){if(M.equals(a)){M=null;return}}else M= -a;else if(M)return;var g=I(a);g||(C=a);return g},e=function(a){var g=Q(a);!g&&a.is&&a.is("br")&&(O=a);return g};q.guard=Q;q=q.lastBackward();C=C||m;this.setStartAt(C,!C.is("br")&&(!q&&this.checkStartOfBlock()||q&&C.contains(q))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){q=this.clone();q=new CKEDITOR.dom.walker(q);var H=CKEDITOR.dom.walker.whitespaces(),G=CKEDITOR.dom.walker.bookmark();q.evaluator=function(a){return!H(a)&&!G(a)};if((q=q.previous())&& -q.type==CKEDITOR.NODE_ELEMENT&&q.is("br"))break}q=this.clone();q.collapse();q.setEndAt(m,CKEDITOR.POSITION_BEFORE_END);q=new CKEDITOR.dom.walker(q);q.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?e:Q;C=M=O=null;q=q.lastForward();C=C||m;this.setEndAt(C,!q&&this.checkEndOfBlock()||q&&C.contains(q)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);O&&this.setEndAfter(O)}},shrink:function(a,c,d){var b="boolean"===typeof d?d:d&&"boolean"===typeof d.shrinkOnBlockBoundary?d.shrinkOnBlockBoundary: -!0,e=d&&d.skipBogus;if(!this.collapsed){a=a||CKEDITOR.SHRINK_TEXT;var f=this.clone(),h=this.startContainer,m=this.endContainer,k=this.startOffset,l=this.endOffset,q=d=1;h&&h.type==CKEDITOR.NODE_TEXT&&(k?k>=h.getLength()?f.setStartAfter(h):(f.setStartBefore(h),d=0):f.setStartBefore(h));m&&m.type==CKEDITOR.NODE_TEXT&&(l?l>=m.getLength()?f.setEndAfter(m):(f.setEndAfter(m),q=0):f.setEndBefore(m));var f=new CKEDITOR.dom.walker(f),v=CKEDITOR.dom.walker.bookmark(),B=CKEDITOR.dom.walker.bogus();f.evaluator= -function(c){return c.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var D;f.guard=function(c,d){if(e&&B(c)||v(c))return!0;if(a==CKEDITOR.SHRINK_ELEMENT&&c.type==CKEDITOR.NODE_TEXT||d&&c.equals(D)||!1===b&&c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()||c.type==CKEDITOR.NODE_ELEMENT&&c.hasAttribute("contenteditable"))return!1;d||c.type!=CKEDITOR.NODE_ELEMENT||(D=c);return!0};d&&(h=f[a==CKEDITOR.SHRINK_ELEMENT?"lastForward":"next"]())&&this.setStartAt(h,c?CKEDITOR.POSITION_AFTER_START: -CKEDITOR.POSITION_BEFORE_START);q&&(f.reset(),(f=f[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(f,c?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END));return!(!d&&!q)}},insertNode:function(a){this.optimizeBookmark();this.trim(!1,!0);var c=this.startContainer,d=c.getChild(this.startOffset);d?a.insertBefore(d):c.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,c){this.setStartAt(a, +function(a,g){var c=new CKEDITOR.dom.range(h);c.setStart(a,g);c.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);var c=new CKEDITOR.dom.walker(c),d;for(c.guard=function(a){return!(a.type==CKEDITOR.NODE_ELEMENT&&a.isBlockBoundary())};d=c.next();){if(d.type!=CKEDITOR.NODE_TEXT)return!1;E=d!=a?d.getText():d.substring(g);if(b.test(E))return!1}return!0};if(this.collapsed)break;var k=this.getCommonAncestor(),h=this.root,l,m,u,w,B,C=!1,A,E;A=this.startContainer;var F=this.startOffset;A.type==CKEDITOR.NODE_TEXT? +(F&&(A=!CKEDITOR.tools.trim(A.substring(0,F)).length&&A,C=!!A),A&&((w=A.getPrevious())||(u=A.getParent()))):(F&&(w=A.getChild(F-1)||A.getLast()),w||(u=A));for(u=d(u);u||w;){if(u&&!w){!B&&u.equals(k)&&(B=!0);if(e?u.isBlockBoundary():!h.contains(u))break;C&&"inline"==u.getComputedStyle("display")||(C=!1,B?l=u:this.setStartBefore(u));w=u.getPrevious()}for(;w;)if(A=!1,w.type==CKEDITOR.NODE_COMMENT)w=w.getPrevious();else{if(w.type==CKEDITOR.NODE_TEXT)E=w.getText(),b.test(E)&&(w=null),A=/[\s\ufeff]$/.test(E); +else if((w.$.offsetWidth>(CKEDITOR.env.webkit?1:0)||c&&w.is("br"))&&!w.data("cke-bookmark"))if(C&&CKEDITOR.dtd.$removeEmpty[w.getName()]){E=w.getText();if(b.test(E))w=null;else for(var F=w.$.getElementsByTagName("*"),K=0,M;M=F[K++];)if(!CKEDITOR.dtd.$removeEmpty[M.nodeName.toLowerCase()]){w=null;break}w&&(A=!!E.length)}else w=null;A&&(C?B?l=u:u&&this.setStartBefore(u):C=!0);if(w){A=w.getPrevious();if(!u&&!A){u=w;w=null;break}w=A}else u=null}u&&(u=d(u.getParent()))}A=this.endContainer;F=this.endOffset; +u=w=null;B=C=!1;A.type==CKEDITOR.NODE_TEXT?CKEDITOR.tools.trim(A.substring(F)).length?C=!0:(C=!A.getLength(),F==A.getLength()?(w=A.getNext())||(u=A.getParent()):f(A,F)&&(u=A.getParent())):(w=A.getChild(F))||(u=A);for(;u||w;){if(u&&!w){!B&&u.equals(k)&&(B=!0);if(e?u.isBlockBoundary():!h.contains(u))break;C&&"inline"==u.getComputedStyle("display")||(C=!1,B?m=u:u&&this.setEndAfter(u));w=u.getNext()}for(;w;){A=!1;if(w.type==CKEDITOR.NODE_TEXT)E=w.getText(),f(w,0)||(w=null),A=/^[\s\ufeff]/.test(E);else if(w.type== +CKEDITOR.NODE_ELEMENT){if((0<w.$.offsetWidth||c&&w.is("br"))&&!w.data("cke-bookmark"))if(C&&CKEDITOR.dtd.$removeEmpty[w.getName()]){E=w.getText();if(b.test(E))w=null;else for(F=w.$.getElementsByTagName("*"),K=0;M=F[K++];)if(!CKEDITOR.dtd.$removeEmpty[M.nodeName.toLowerCase()]){w=null;break}w&&(A=!!E.length)}else w=null}else A=1;A&&C&&(B?m=u:this.setEndAfter(u));if(w){A=w.getNext();if(!u&&!A){u=w;w=null;break}w=A}else u=null}u&&(u=d(u.getParent()))}l&&m&&(k=l.contains(m)?m:l,this.setStartBefore(k), +this.setEndAfter(k));break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:u=new CKEDITOR.dom.range(this.root);h=this.root;u.setStartAt(h,CKEDITOR.POSITION_AFTER_START);u.setEnd(this.startContainer,this.startOffset);u=new CKEDITOR.dom.walker(u);var D,N,I=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),L=null,R=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&"false"==a.getAttribute("contenteditable"))if(L){if(L.equals(a)){L=null;return}}else L= +a;else if(L)return;var g=I(a);g||(D=a);return g},e=function(a){var g=R(a);!g&&a.is&&a.is("br")&&(N=a);return g};u.guard=R;u=u.lastBackward();D=D||h;this.setStartAt(D,!D.is("br")&&(!u&&this.checkStartOfBlock()||u&&D.contains(u))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){u=this.clone();u=new CKEDITOR.dom.walker(u);var H=CKEDITOR.dom.walker.whitespaces(),G=CKEDITOR.dom.walker.bookmark();u.evaluator=function(a){return!H(a)&&!G(a)};if((u=u.previous())&& +u.type==CKEDITOR.NODE_ELEMENT&&u.is("br"))break}u=this.clone();u.collapse();u.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);u=new CKEDITOR.dom.walker(u);u.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?e:R;D=L=N=null;u=u.lastForward();D=D||h;this.setEndAt(D,!u&&this.checkEndOfBlock()||u&&D.contains(u)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);N&&this.setEndAfter(N)}},shrink:function(a,c,d){var b="boolean"===typeof d?d:d&&"boolean"===typeof d.shrinkOnBlockBoundary?d.shrinkOnBlockBoundary: +!0,e=d&&d.skipBogus;if(!this.collapsed){a=a||CKEDITOR.SHRINK_TEXT;var f=this.clone(),k=this.startContainer,h=this.endContainer,l=this.startOffset,m=this.endOffset,u=d=1;k&&k.type==CKEDITOR.NODE_TEXT&&(l?l>=k.getLength()?f.setStartAfter(k):(f.setStartBefore(k),d=0):f.setStartBefore(k));h&&h.type==CKEDITOR.NODE_TEXT&&(m?m>=h.getLength()?f.setEndAfter(h):(f.setEndAfter(h),u=0):f.setEndBefore(h));var f=new CKEDITOR.dom.walker(f),w=CKEDITOR.dom.walker.bookmark(),B=CKEDITOR.dom.walker.bogus();f.evaluator= +function(c){return c.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var C;f.guard=function(c,d){if(e&&B(c)||w(c))return!0;if(a==CKEDITOR.SHRINK_ELEMENT&&c.type==CKEDITOR.NODE_TEXT||d&&c.equals(C)||!1===b&&c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()||c.type==CKEDITOR.NODE_ELEMENT&&c.hasAttribute("contenteditable"))return!1;d||c.type!=CKEDITOR.NODE_ELEMENT||(C=c);return!0};d&&(k=f[a==CKEDITOR.SHRINK_ELEMENT?"lastForward":"next"]())&&this.setStartAt(k,c?CKEDITOR.POSITION_AFTER_START: +CKEDITOR.POSITION_BEFORE_START);u&&(f.reset(),(f=f[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(f,c?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END));return!(!d&&!u)}},insertNode:function(a){this.optimizeBookmark();this.trim(!1,!0);var c=this.startContainer,d=c.getChild(this.startOffset);d?a.insertBefore(d):c.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,c){this.setStartAt(a, c);this.collapse(!0)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(a,c){a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]&&(c=a.getIndex(),a=a.getParent());this._setStartContainer(a);this.startOffset=c;this.endContainer||(this._setEndContainer(a),this.endOffset=c);b(this)},setEnd:function(a, c){a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]&&(c=a.getIndex()+1,a=a.getParent());this._setEndContainer(a);this.endOffset=c;this.startContainer||(this._setStartContainer(a),this.startOffset=c);b(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),a.getIndex())},setStartAt:function(a, c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setStart(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setStart(a,a.getLength()):this.setStart(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(a)}b(this)},setEndAt:function(a,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setEnd(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setEnd(a, a.getLength()):this.setEnd(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(a)}b(this)},fixBlock:function(a,c){var d=this.createBookmark(),b=this.document.createElement(c);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(b);b.trim();this.insertNode(b);var e=b.getBogus();e&&e.remove();b.appendBogus();this.moveToBookmark(d);return b},splitBlock:function(a,c){var d= -new CKEDITOR.dom.elementPath(this.startContainer,this.root),b=new CKEDITOR.dom.elementPath(this.endContainer,this.root),e=d.block,f=b.block,h=null;if(!d.blockLimit.equals(b.blockLimit))return null;"br"!=a&&(e||(e=this.fixBlock(!0,a),f=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block),f||(f=this.fixBlock(!1,a)));d=e&&this.checkStartOfBlock();b=f&&this.checkEndOfBlock();this.deleteContents();e&&e.equals(f)&&(b?(h=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(f, -CKEDITOR.POSITION_AFTER_END),f=null):d?(h=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(e,CKEDITOR.POSITION_BEFORE_START),e=null):(f=this.splitElement(e,c||!1),e.is("ul","ol")||e.appendBogus()));return{previousBlock:e,nextBlock:f,wasStartOfBlock:d,wasEndOfBlock:b,elementPath:h}},splitElement:function(a,c){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var d=this.extractContents(!1,c||!1),b=a.clone(!1,c||!1);d.appendTo(b);b.insertAfter(a); +new CKEDITOR.dom.elementPath(this.startContainer,this.root),b=new CKEDITOR.dom.elementPath(this.endContainer,this.root),e=d.block,f=b.block,k=null;if(!d.blockLimit.equals(b.blockLimit))return null;"br"!=a&&(e||(e=this.fixBlock(!0,a),f=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block),f||(f=this.fixBlock(!1,a)));d=e&&this.checkStartOfBlock();b=f&&this.checkEndOfBlock();this.deleteContents();e&&e.equals(f)&&(b?(k=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(f, +CKEDITOR.POSITION_AFTER_END),f=null):d?(k=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(e,CKEDITOR.POSITION_BEFORE_START),e=null):(f=this.splitElement(e,c||!1),e.is("ul","ol")||e.appendBogus()));return{previousBlock:e,nextBlock:f,wasStartOfBlock:d,wasEndOfBlock:b,elementPath:k}},splitElement:function(a,c){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var d=this.extractContents(!1,c||!1),b=a.clone(!1,c||!1);d.appendTo(b);b.insertAfter(a); this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return b},removeEmptyBlocksAtEnd:function(){function a(g){return function(a){return c(a)||d(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable()||g.is("table")&&a.is("caption")?!1:!0}}var c=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark(!1);return function(c){for(var d=this.createBookmark(),b=this[c?"endPath":"startPath"](),e=b.block||b.blockLimit,f;e&&!e.equals(b.root)&&!e.getFirst(a(e));)f=e.getParent(),this[c?"setEndAt": "setStartAt"](e,CKEDITOR.POSITION_AFTER_END),e.remove(1),e=f;this.moveToBookmark(d)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,c){var d=c==CKEDITOR.START,b=this.clone();b.collapse(d);b[d?"setStartAt":"setEndAt"](a,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);b=new CKEDITOR.dom.walker(b);b.evaluator=e(d);return b[d? -"checkBackward":"checkForward"]()},checkStartOfBlock:function(a){var c=this.startContainer,d=this.startOffset;CKEDITOR.env.ie&&d&&c.type==CKEDITOR.NODE_TEXT&&(c=CKEDITOR.tools.ltrim(c.substring(0,d)),l.test(c)&&this.trim(0,1));a||this.trim();a=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(!0);c.setStartAt(a.block||a.blockLimit,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(c);a.evaluator=f();return a.checkBackward()},checkEndOfBlock:function(a){var c= -this.endContainer,d=this.endOffset;CKEDITOR.env.ie&&c.type==CKEDITOR.NODE_TEXT&&(c=CKEDITOR.tools.rtrim(c.substring(d)),l.test(c)&&this.trim(1,0));a||this.trim();a=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(!1);c.setEndAt(a.block||a.blockLimit,CKEDITOR.POSITION_BEFORE_END);a=new CKEDITOR.dom.walker(c);a.evaluator=f();return a.checkForward()},getPreviousNode:function(a,c,d){var b=this.clone();b.collapse(1);b.setStartAt(d||this.root,CKEDITOR.POSITION_AFTER_START); +"checkBackward":"checkForward"]()},checkStartOfBlock:function(a){var c=this.startContainer,d=this.startOffset;CKEDITOR.env.ie&&d&&c.type==CKEDITOR.NODE_TEXT&&(c=CKEDITOR.tools.ltrim(c.substring(0,d)),m.test(c)&&this.trim(0,1));a||this.trim();a=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(!0);c.setStartAt(a.block||a.blockLimit,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(c);a.evaluator=f();return a.checkBackward()},checkEndOfBlock:function(a){var c= +this.endContainer,d=this.endOffset;CKEDITOR.env.ie&&c.type==CKEDITOR.NODE_TEXT&&(c=CKEDITOR.tools.rtrim(c.substring(d)),m.test(c)&&this.trim(1,0));a||this.trim();a=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(!1);c.setEndAt(a.block||a.blockLimit,CKEDITOR.POSITION_BEFORE_END);a=new CKEDITOR.dom.walker(c);a.evaluator=f();return a.checkForward()},getPreviousNode:function(a,c,d){var b=this.clone();b.collapse(1);b.setStartAt(d||this.root,CKEDITOR.POSITION_AFTER_START); d=new CKEDITOR.dom.walker(b);d.evaluator=a;d.guard=c;return d.previous()},getNextNode:function(a,c,d){var b=this.clone();b.collapse();b.setEndAt(d||this.root,CKEDITOR.POSITION_BEFORE_END);d=new CKEDITOR.dom.walker(b);d.evaluator=a;d.guard=c;return d.next()},checkReadOnly:function(){function a(c,g){for(;c;){if(c.type==CKEDITOR.NODE_ELEMENT){if("false"==c.getAttribute("contentEditable")&&!c.data("cke-editable"))return 0;if(c.is("html")||"true"==c.getAttribute("contentEditable")&&(c.contains(g)||c.equals(g)))break}c= -c.getParent()}return 1}return function(){var c=this.startContainer,d=this.endContainer;return!(a(c,d)&&a(d,c))}}(),moveToElementEditablePosition:function(a,c){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(!1))return this.moveToPosition(a,c?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START),!0;for(var b=0;a;){if(a.type==CKEDITOR.NODE_TEXT){c&&this.endContainer&&this.checkEndOfBlock()&&l.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,c?CKEDITOR.POSITION_AFTER_END: -CKEDITOR.POSITION_BEFORE_START);b=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable())this.moveToPosition(a,c?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START),b=1;else if(c&&a.is("br")&&this.endContainer&&this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);else if("false"==a.getAttribute("contenteditable")&&a.is(CKEDITOR.dtd.$block))return this.setStartBefore(a),this.setEndAfter(a),!0;var e=a,f=b,h=void 0;e.type==CKEDITOR.NODE_ELEMENT&&e.isEditable(!1)&& -(h=e[c?"getLast":"getFirst"](d));f||h||(h=e[c?"getPrevious":"getNext"](d));a=h}return!!b},moveToClosestEditablePosition:function(a,c){var d,b=0,e,f,h=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];a?(d=new CKEDITOR.dom.range(this.root),d.moveToPosition(a,h[c?0:1])):d=this.clone();if(a&&!a.is(CKEDITOR.dtd.$block))b=1;else if(e=d[c?"getNextEditableNode":"getPreviousEditableNode"]())b=1,(f=e.type==CKEDITOR.NODE_ELEMENT)&&e.is(CKEDITOR.dtd.$block)&&"false"==e.getAttribute("contenteditable")? -(d.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),d.setEndAt(e,CKEDITOR.POSITION_AFTER_END)):!CKEDITOR.env.needsBrFiller&&f&&e.is(CKEDITOR.dom.walker.validEmptyBlockContainers)?(d.setEnd(e,0),d.collapse()):d.moveToPosition(e,h[c?1:0]);b&&this.moveToRange(d);return!!b},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,!0)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!= +c.getParent()}return 1}return function(){var c=this.startContainer,d=this.endContainer;return!(a(c,d)&&a(d,c))}}(),moveToElementEditablePosition:function(a,c){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(!1))return this.moveToPosition(a,c?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START),!0;for(var b=0;a;){if(a.type==CKEDITOR.NODE_TEXT){c&&this.endContainer&&this.checkEndOfBlock()&&m.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,c?CKEDITOR.POSITION_AFTER_END: +CKEDITOR.POSITION_BEFORE_START);b=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable())this.moveToPosition(a,c?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START),b=1;else if(c&&a.is("br")&&this.endContainer&&this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);else if("false"==a.getAttribute("contenteditable")&&a.is(CKEDITOR.dtd.$block))return this.setStartBefore(a),this.setEndAfter(a),!0;var e=a,f=b,k=void 0;e.type==CKEDITOR.NODE_ELEMENT&&e.isEditable(!1)&& +(k=e[c?"getLast":"getFirst"](d));f||k||(k=e[c?"getPrevious":"getNext"](d));a=k}return!!b},moveToClosestEditablePosition:function(a,c){var d,b=0,e,f,k=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];a?(d=new CKEDITOR.dom.range(this.root),d.moveToPosition(a,k[c?0:1])):d=this.clone();if(a&&!a.is(CKEDITOR.dtd.$block))b=1;else if(e=d[c?"getNextEditableNode":"getPreviousEditableNode"]())b=1,(f=e.type==CKEDITOR.NODE_ELEMENT)&&e.is(CKEDITOR.dtd.$block)&&"false"==e.getAttribute("contenteditable")? +(d.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),d.setEndAt(e,CKEDITOR.POSITION_AFTER_END)):!CKEDITOR.env.needsBrFiller&&f&&e.is(CKEDITOR.dom.walker.validEmptyBlockContainers)?(d.setEnd(e,0),d.collapse()):d.moveToPosition(e,k[c?1:0]);b&&this.moveToRange(d);return!!b},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,!0)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!= CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),c=CKEDITOR.dom.walker.bookmark(!1,!0),d=CKEDITOR.dom.walker.whitespaces(!0);a.evaluator=function(a){return d(a)&&c(a)};var b=a.next();a.reset();return b&&b.equals(a.previous())?b:null},getTouchedStartNode:function(){var a=this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=this.endContainer;return this.collapsed|| a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},getNextEditableNode:a(),getPreviousEditableNode:a(1),_getTableElement:function(a){a=a||{td:1,th:1,tr:1,tbody:1,thead:1,tfoot:1,table:1};var c=this.getTouchedStartNode(),d=this.getTouchedEndNode(),b=c.getAscendant("table",!0),d=d.getAscendant("table",!0);return b&&!this.root.contains(b)?null:this.getEnclosedNode()?this.getEnclosedNode().getAscendant(a,!0):b&&d&&(b.equals(d)||b.contains(d)||d.contains(b))?c.getAscendant(a,!0):null},scrollIntoView:function(){var a= new CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",this.document),c,d,b,e=this.clone();e.optimize();(b=e.startContainer.type==CKEDITOR.NODE_TEXT)?(d=e.startContainer.getText(),c=e.startContainer.split(e.startOffset),a.insertAfter(e.startContainer)):e.insertNode(a);a.scrollIntoView();b&&(e.startContainer.setText(d),c.remove());a.remove()},getClientRects:function(){function a(c,d){var g=CKEDITOR.tools.array.map(c,function(a){return a}),b=new CKEDITOR.dom.range(d.root),e,f, @@ -189,636 +189,645 @@ function(c,e){var f=CKEDITOR.tools.objectCompare(a[b],c);f||(f=CKEDITOR.tools.ob 1),e.insertAfter(g)),d.setStart(e.$,0),d.setEnd(e.$,0),a=d.getClientRects(),e.remove()):g.startContainer instanceof CKEDITOR.dom.text&&(""===g.startContainer.getText()?(g.startContainer.setText("​"),a=d.getClientRects(),g.startContainer.setText("")):a=[b(g.createBookmark())]):a=[b(g.createBookmark())];return a}function d(a,c,g){a=CKEDITOR.tools.extend({},a);c&&(a=CKEDITOR.tools.getAbsoluteRectPosition(g.document.getWindow(),a));!a.width&&(a.width=a.right-a.left);!a.height&&(a.height=a.bottom-a.top); return a}function b(a){var c=a.startNode;a=a.endNode;var d;c.setText("​");c.removeStyle("display");a?(a.setText("​"),a.removeStyle("display"),d=[c.getClientRect(),a.getClientRect()],a.remove()):d=[c.getClientRect(),c.getClientRect()];c.remove();return{right:Math.max(d[0].right,d[1].right),bottom:Math.max(d[0].bottom,d[1].bottom),left:Math.min(d[0].left,d[1].left),top:Math.min(d[0].top,d[1].top),width:Math.abs(d[0].left-d[1].left),height:Math.max(d[0].bottom,d[1].bottom)-Math.min(d[0].top,d[1].top)}} return void 0!==this.document.getSelection?function(b){var e=this.root.getDocument().$.createRange(),f;e.setStart(this.startContainer.$,this.startOffset);e.setEnd(this.endContainer.$,this.endOffset);f=e.getClientRects();f=a(f,this);f.length||(f=c(f,e,this));return CKEDITOR.tools.array.map(f,function(a){return d(a,b,this)},this)}:function(a){return[d(b(this.createBookmark()),a,this)]}}(),_setStartContainer:function(a){this.startContainer=a},_setEndContainer:function(a){this.endContainer=a},_find:function(a, -c){var d=this.getCommonAncestor(),b=this.getBoundaryNodes(),e=[],f,h,m,k;if(d&&d.find)for(h=d.find(a),f=0;f<h.count();f++)if(d=h.getItem(f),c||!d.isReadOnly())m=d.getPosition(b.startNode)&CKEDITOR.POSITION_FOLLOWING||b.startNode.equals(d),k=d.getPosition(b.endNode)&CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IS_CONTAINED||b.endNode.equals(d),m&&k&&e.push(d);return e}};CKEDITOR.dom.range.mergeRanges=function(a){return CKEDITOR.tools.array.reduce(a,function(a,c){var d=a[a.length-1],g=!1;c=c.clone(); +c){var d=this.getCommonAncestor(),b=this.getBoundaryNodes(),e=[],f,k,h,l;if(d&&d.find)for(k=d.find(a),f=0;f<k.count();f++)if(d=k.getItem(f),c||!d.isReadOnly())h=d.getPosition(b.startNode)&CKEDITOR.POSITION_FOLLOWING||b.startNode.equals(d),l=d.getPosition(b.endNode)&CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IS_CONTAINED||b.endNode.equals(d),h&&l&&e.push(d);return e}};CKEDITOR.dom.range.mergeRanges=function(a){return CKEDITOR.tools.array.reduce(a,function(a,c){var d=a[a.length-1],g=!1;c=c.clone(); c.enlarge(CKEDITOR.ENLARGE_ELEMENT);if(d){var b=new CKEDITOR.dom.range(c.root),g=new CKEDITOR.dom.walker(b),e=CKEDITOR.dom.walker.whitespaces();b.setStart(d.endContainer,d.endOffset);b.setEnd(c.startContainer,c.startOffset);for(b=g.next();e(b)||c.endContainer.equals(b);)b=g.next();g=!b}g?d.setEnd(c.endContainer,c.endOffset):a.push(c);return a},[])}}(),CKEDITOR.POSITION_AFTER_START=1,CKEDITOR.POSITION_BEFORE_END=2,CKEDITOR.POSITION_BEFORE_START=3,CKEDITOR.POSITION_AFTER_END=4,CKEDITOR.ENLARGE_ELEMENT= 1,CKEDITOR.ENLARGE_BLOCK_CONTENTS=2,CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3,CKEDITOR.ENLARGE_INLINE=4,CKEDITOR.START=1,CKEDITOR.END=2,CKEDITOR.SHRINK_ELEMENT=1,CKEDITOR.SHRINK_TEXT=2,"use strict",function(){function b(a){1>arguments.length||(this.range=a,this.forceBrBreak=0,this.enlargeBr=1,this.enforceRealBlocks=0,this._||(this._={}))}function h(a){var c=[];a.forEach(function(a){if("true"==a.getAttribute("contenteditable"))return c.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return c}function f(a,c,b,e){a:{null== -e&&(e=h(b));for(var m;m=e.shift();)if(m.getDtd().p){e={element:m,remaining:e};break a}e=null}if(!e)return 0;if((m=CKEDITOR.filter.instances[e.element.data("cke-filter")])&&!m.check(c))return f(a,c,b,e.remaining);c=new CKEDITOR.dom.range(e.element);c.selectNodeContents(e.element);c=c.createIterator();c.enlargeBr=a.enlargeBr;c.enforceRealBlocks=a.enforceRealBlocks;c.activeFilter=c.filter=m;a._.nestedEditable={element:e.element,container:b,remaining:e.remaining,iterator:c};return 1}function e(a,c,b){if(!c)return!1; -a=a.clone();a.collapse(!b);return a.checkBoundaryOfElement(c,b?CKEDITOR.START:CKEDITOR.END)}var a=/^[\r\n\t ]+$/,m=CKEDITOR.dom.walker.bookmark(!1,!0),k=CKEDITOR.dom.walker.whitespaces(!0),l=function(a){return m(a)&&k(a)},c={dd:1,dt:1,li:1};b.prototype={getNextParagraph:function(d){var g,b,h,k,p;d=d||"p";if(this._.nestedEditable){if(g=this._.nestedEditable.iterator.getNextParagraph(d))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,g;this.activeFilter=this.filter;if(f(this,d, -this._.nestedEditable.container,this._.nestedEditable.remaining))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,this._.nestedEditable.iterator.getNextParagraph(d);this._.nestedEditable=null}if(!this.range.root.getDtd()[d])return null;if(!this._.started){var t=this.range.clone();b=t.startPath();var r=t.endPath(),x=!t.collapsed&&e(t,b.block),u=!t.collapsed&&e(t,r.block,1);t.shrink(CKEDITOR.SHRINK_ELEMENT,!0);x&&t.setStartAt(b.block,CKEDITOR.POSITION_BEFORE_END);u&&t.setEndAt(r.block, -CKEDITOR.POSITION_AFTER_START);b=t.endContainer.hasAscendant("pre",!0)||t.startContainer.hasAscendant("pre",!0);t.enlarge(this.forceBrBreak&&!b||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);t.collapsed||(b=new CKEDITOR.dom.walker(t.clone()),r=CKEDITOR.dom.walker.bookmark(!0,!0),b.evaluator=r,this._.nextNode=b.next(),b=new CKEDITOR.dom.walker(t.clone()),b.evaluator=r,b=b.previous(),this._.lastNode=b.getNextSourceNode(!0,null,t.root),this._.lastNode&&this._.lastNode.type== -CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()&&(r=this.range.clone(),r.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END),r.checkEndOfBlock()&&(r=new CKEDITOR.dom.elementPath(r.endContainer,r.root),this._.lastNode=(r.block||r.blockLimit).getNextSourceNode(!0))),this._.lastNode&&t.root.contains(this._.lastNode)||(this._.lastNode=this._.docEndMarker=t.document.createText(""),this._.lastNode.insertAfter(b)),t=null);this._.started= -1;b=t}r=this._.nextNode;t=this._.lastNode;for(this._.nextNode=null;r;){var x=0,u=r.hasAscendant("pre"),z=r.type!=CKEDITOR.NODE_ELEMENT,q=0;if(z)r.type==CKEDITOR.NODE_TEXT&&a.test(r.getText())&&(z=0);else{var v=r.getName();if(CKEDITOR.dtd.$block[v]&&"false"==r.getAttribute("contenteditable")){g=r;f(this,d,g);break}else if(r.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){if("br"==v)z=1;else if(!b&&!r.getChildCount()&&"hr"!=v){g=r;h=r.equals(t);break}b&&(b.setEndAt(r,CKEDITOR.POSITION_BEFORE_START), -"br"!=v&&(this._.nextNode=r));x=1}else{if(r.getFirst()){b||(b=this.range.clone(),b.setStartAt(r,CKEDITOR.POSITION_BEFORE_START));r=r.getFirst();continue}z=1}}z&&!b&&(b=this.range.clone(),b.setStartAt(r,CKEDITOR.POSITION_BEFORE_START));h=(!x||z)&&r.equals(t);if(b&&!x)for(;!r.getNext(l)&&!h;){v=r.getParent();if(v.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){x=1;z=0;h||v.equals(t);b.setEndAt(v,CKEDITOR.POSITION_BEFORE_END);break}r=v;z=1;h=r.equals(t);q=1}z&&b.setEndAt(r,CKEDITOR.POSITION_AFTER_END); -r=this._getNextSourceNode(r,q,t);if((h=!r)||x&&b)break}if(!g){if(!b)return this._.docEndMarker&&this._.docEndMarker.remove(),this._.nextNode=null;g=new CKEDITOR.dom.elementPath(b.startContainer,b.root);r=g.blockLimit;x={div:1,th:1,td:1};g=g.block;!g&&r&&!this.enforceRealBlocks&&x[r.getName()]&&b.checkStartOfBlock()&&b.checkEndOfBlock()&&!r.equals(b.root)?g=r:!g||this.enforceRealBlocks&&g.is(c)?(g=this.range.document.createElement(d),b.extractContents().appendTo(g),g.trim(),b.insertNode(g),k=p=!0): -"li"!=g.getName()?b.checkStartOfBlock()&&b.checkEndOfBlock()||(g=g.clone(!1),b.extractContents().appendTo(g),g.trim(),p=b.splitBlock(),k=!p.wasStartOfBlock,p=!p.wasEndOfBlock,b.insertNode(g)):h||(this._.nextNode=g.equals(t)?null:this._getNextSourceNode(b.getBoundaryNodes().endNode,1,t))}k&&(k=g.getPrevious())&&k.type==CKEDITOR.NODE_ELEMENT&&("br"==k.getName()?k.remove():k.getLast()&&"br"==k.getLast().$.nodeName.toLowerCase()&&k.getLast().remove());p&&(k=g.getLast())&&k.type==CKEDITOR.NODE_ELEMENT&& -"br"==k.getName()&&(!CKEDITOR.env.needsBrFiller||k.getPrevious(m)||k.getNext(m))&&k.remove();this._.nextNode||(this._.nextNode=h||g.equals(t)||!t?null:this._getNextSourceNode(g,1,t));return g},_getNextSourceNode:function(a,c,b){function e(a){return!(a.equals(b)||a.equals(f))}var f=this.range.root;for(a=a.getNextSourceNode(c,null,e);!m(a);)a=a.getNextSourceNode(c,null,e);return a}};CKEDITOR.dom.range.prototype.createIterator=function(){return new b(this)}}(),CKEDITOR.command=function(b,h){this.uiItems= +e&&(e=h(b));for(var k;k=e.shift();)if(k.getDtd().p){e={element:k,remaining:e};break a}e=null}if(!e)return 0;if((k=CKEDITOR.filter.instances[e.element.data("cke-filter")])&&!k.check(c))return f(a,c,b,e.remaining);c=new CKEDITOR.dom.range(e.element);c.selectNodeContents(e.element);c=c.createIterator();c.enlargeBr=a.enlargeBr;c.enforceRealBlocks=a.enforceRealBlocks;c.activeFilter=c.filter=k;a._.nestedEditable={element:e.element,container:b,remaining:e.remaining,iterator:c};return 1}function e(a,c,b){if(!c)return!1; +a=a.clone();a.collapse(!b);return a.checkBoundaryOfElement(c,b?CKEDITOR.START:CKEDITOR.END)}var a=/^[\r\n\t ]+$/,k=CKEDITOR.dom.walker.bookmark(!1,!0),l=CKEDITOR.dom.walker.whitespaces(!0),m=function(a){return k(a)&&l(a)},c={dd:1,dt:1,li:1};b.prototype={getNextParagraph:function(d){var g,b,h,l,p;d=d||"p";if(this._.nestedEditable){if(g=this._.nestedEditable.iterator.getNextParagraph(d))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,g;this.activeFilter=this.filter;if(f(this,d, +this._.nestedEditable.container,this._.nestedEditable.remaining))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,this._.nestedEditable.iterator.getNextParagraph(d);this._.nestedEditable=null}if(!this.range.root.getDtd()[d])return null;if(!this._.started){var q=this.range.clone();b=q.startPath();var r=q.endPath(),x=!q.collapsed&&e(q,b.block),t=!q.collapsed&&e(q,r.block,1);q.shrink(CKEDITOR.SHRINK_ELEMENT,!0);x&&q.setStartAt(b.block,CKEDITOR.POSITION_BEFORE_END);t&&q.setEndAt(r.block, +CKEDITOR.POSITION_AFTER_START);b=q.endContainer.hasAscendant("pre",!0)||q.startContainer.hasAscendant("pre",!0);q.enlarge(this.forceBrBreak&&!b||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);q.collapsed||(b=new CKEDITOR.dom.walker(q.clone()),r=CKEDITOR.dom.walker.bookmark(!0,!0),b.evaluator=r,this._.nextNode=b.next(),b=new CKEDITOR.dom.walker(q.clone()),b.evaluator=r,b=b.previous(),this._.lastNode=b.getNextSourceNode(!0,null,q.root),this._.lastNode&&this._.lastNode.type== +CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()&&(r=this.range.clone(),r.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END),r.checkEndOfBlock()&&(r=new CKEDITOR.dom.elementPath(r.endContainer,r.root),this._.lastNode=(r.block||r.blockLimit).getNextSourceNode(!0))),this._.lastNode&&q.root.contains(this._.lastNode)||(this._.lastNode=this._.docEndMarker=q.document.createText(""),this._.lastNode.insertAfter(b)),q=null);this._.started= +1;b=q}r=this._.nextNode;q=this._.lastNode;for(this._.nextNode=null;r;){var x=0,t=r.hasAscendant("pre"),z=r.type!=CKEDITOR.NODE_ELEMENT,u=0;if(z)r.type==CKEDITOR.NODE_TEXT&&a.test(r.getText())&&(z=0);else{var w=r.getName();if(CKEDITOR.dtd.$block[w]&&"false"==r.getAttribute("contenteditable")){g=r;f(this,d,g);break}else if(r.isBlockBoundary(this.forceBrBreak&&!t&&{br:1})){if("br"==w)z=1;else if(!b&&!r.getChildCount()&&"hr"!=w){g=r;h=r.equals(q);break}b&&(b.setEndAt(r,CKEDITOR.POSITION_BEFORE_START), +"br"!=w&&(this._.nextNode=r));x=1}else{if(r.getFirst()){b||(b=this.range.clone(),b.setStartAt(r,CKEDITOR.POSITION_BEFORE_START));r=r.getFirst();continue}z=1}}z&&!b&&(b=this.range.clone(),b.setStartAt(r,CKEDITOR.POSITION_BEFORE_START));h=(!x||z)&&r.equals(q);if(b&&!x)for(;!r.getNext(m)&&!h;){w=r.getParent();if(w.isBlockBoundary(this.forceBrBreak&&!t&&{br:1})){x=1;z=0;h||w.equals(q);b.setEndAt(w,CKEDITOR.POSITION_BEFORE_END);break}r=w;z=1;h=r.equals(q);u=1}z&&b.setEndAt(r,CKEDITOR.POSITION_AFTER_END); +r=this._getNextSourceNode(r,u,q);if((h=!r)||x&&b)break}if(!g){if(!b)return this._.docEndMarker&&this._.docEndMarker.remove(),this._.nextNode=null;g=new CKEDITOR.dom.elementPath(b.startContainer,b.root);r=g.blockLimit;x={div:1,th:1,td:1};g=g.block;!g&&r&&!this.enforceRealBlocks&&x[r.getName()]&&b.checkStartOfBlock()&&b.checkEndOfBlock()&&!r.equals(b.root)?g=r:!g||this.enforceRealBlocks&&g.is(c)?(g=this.range.document.createElement(d),b.extractContents().appendTo(g),g.trim(),b.insertNode(g),l=p=!0): +"li"!=g.getName()?b.checkStartOfBlock()&&b.checkEndOfBlock()||(g=g.clone(!1),b.extractContents().appendTo(g),g.trim(),p=b.splitBlock(),l=!p.wasStartOfBlock,p=!p.wasEndOfBlock,b.insertNode(g)):h||(this._.nextNode=g.equals(q)?null:this._getNextSourceNode(b.getBoundaryNodes().endNode,1,q))}l&&(l=g.getPrevious())&&l.type==CKEDITOR.NODE_ELEMENT&&("br"==l.getName()?l.remove():l.getLast()&&"br"==l.getLast().$.nodeName.toLowerCase()&&l.getLast().remove());p&&(l=g.getLast())&&l.type==CKEDITOR.NODE_ELEMENT&& +"br"==l.getName()&&(!CKEDITOR.env.needsBrFiller||l.getPrevious(k)||l.getNext(k))&&l.remove();this._.nextNode||(this._.nextNode=h||g.equals(q)||!q?null:this._getNextSourceNode(g,1,q));return g},_getNextSourceNode:function(a,c,b){function e(a){return!(a.equals(b)||a.equals(f))}var f=this.range.root;for(a=a.getNextSourceNode(c,null,e);!k(a);)a=a.getNextSourceNode(c,null,e);return a}};CKEDITOR.dom.range.prototype.createIterator=function(){return new b(this)}}(),CKEDITOR.command=function(b,h){this.uiItems= [];this.exec=function(e){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return!1;this.editorFocus&&b.focus();return!1===this.fire("exec")?!0:!1!==h.exec.call(this,b,e)};this.refresh=function(b,a){if(!this.readOnly&&b.readOnly)return!0;if(this.context&&!a.isContextFor(this.context)||!this.checkAllowed(!0))return this.disable(),!0;this.startDisabled||this.enable();this.modes&&!this.modes[b.mode]&&this.disable();return!1===this.fire("refresh",{editor:b,path:a})?!0:h.refresh&&!1!==h.refresh.apply(this, arguments)};var f;this.checkAllowed=function(e){return e||"boolean"!=typeof f?f=b.activeFilter.checkFeature(this):f};CKEDITOR.tools.extend(this,h,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!h.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)},CKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(this.preserveState&&"undefined"!=typeof this.previousState?this.previousState:CKEDITOR.TRISTATE_OFF)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)}, setState:function(b){if(this.state==b||b!=CKEDITOR.TRISTATE_DISABLED&&!this.checkAllowed())return!1;this.previousState=this.state;this.state=b;this.fire("state");return!0},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?this.setState(CKEDITOR.TRISTATE_ON):this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}},CKEDITOR.event.implementOn(CKEDITOR.command.prototype),CKEDITOR.ENTER_P=1,CKEDITOR.ENTER_BR=2,CKEDITOR.ENTER_DIV=3,CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0, language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"\x3c!DOCTYPE html\x3e",bodyId:"",bodyClass:"",fullPage:!1,height:200,contentsCss:CKEDITOR.getUrl("contents.css"),extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]},function(){function b(a,c,d,b,g){var e,f;a=[];for(e in c){f=c[e];f="boolean"==typeof f? -{}:"function"==typeof f?{match:f}:K(f);"$"!=e.charAt(0)&&(f.elements=e);d&&(f.featureName=d.toLowerCase());var h=f;h.elements=k(h.elements,/\s+/)||null;h.propertiesOnly=h.propertiesOnly||!0===h.elements;var m=/\s*,\s*/,n=void 0;for(n in O){h[n]=k(h[n],m)||null;var r=h,v=I[n],l=k(h[I[n]],m),G=h[n],H=[],t=!0,y=void 0;l?t=!1:l={};for(y in G)"!"==y.charAt(0)&&(y=y.slice(1),H.push(y),l[y]=!0,t=!1);for(;y=H.pop();)G[y]=G["!"+y],delete G["!"+y];r[v]=(t?!1:l)||null}h.match=h.match||null;b.push(f);a.push(f)}c= -g.elements;g=g.generic;var u;d=0;for(b=a.length;d<b;++d){e=K(a[d]);f=!0===e.classes||!0===e.styles||!0===e.attributes;h=e;n=v=m=void 0;for(m in O)h[m]=x(h[m]);r=!0;for(n in I){m=I[n];v=h[m];l=[];G=void 0;for(G in v)-1<G.indexOf("*")?l.push(new RegExp("^"+G.replace(/\*/g,".*")+"$")):l.push(G);v=l;v.length&&(h[m]=v,r=!1)}h.nothingRequired=r;h.noProperties=!(h.attributes||h.classes||h.styles);if(!0===e.elements||null===e.elements)g[f?"unshift":"push"](e);else for(u in h=e.elements,delete e.elements, -h)if(c[u])c[u][f?"unshift":"push"](e);else c[u]=[e]}}function h(a,c,d,b){if(!a.match||a.match(c))if(b||l(a,c))if(a.propertiesOnly||(d.valid=!0),d.allAttributes||(d.allAttributes=f(a.attributes,c.attributes,d.validAttributes)),d.allStyles||(d.allStyles=f(a.styles,c.styles,d.validStyles)),!d.allClasses){a=a.classes;c=c.classes;b=d.validClasses;if(a)if(!0===a)a=!0;else{for(var g=0,e=c.length,h;g<e;++g)h=c[g],b[h]||(b[h]=a(h));a=!1}else a=!1;d.allClasses=a}}function f(a,c,d){if(!a)return!1;if(!0===a)return!0; -for(var b in c)d[b]||(d[b]=a(b));return!1}function e(c,d,b){if(!c.match||c.match(d)){if(c.noProperties)return!1;b.hadInvalidAttribute=a(c.attributes,d.attributes)||b.hadInvalidAttribute;b.hadInvalidStyle=a(c.styles,d.styles)||b.hadInvalidStyle;c=c.classes;d=d.classes;if(c){for(var g=!1,e=!0===c,f=d.length;f--;)if(e||c(d[f]))d.splice(f,1),g=!0;c=g}else c=!1;b.hadInvalidClass=c||b.hadInvalidClass}}function a(a,c){if(!a)return!1;var d=!1,b=!0===a,g;for(g in c)if(b||a(g))delete c[g],d=!0;return d}function m(a, -c,d){if(a.disabled||a.customConfig&&!d||!c)return!1;a._.cachedChecks={};return!0}function k(a,c){if(!a)return!1;if(!0===a)return a;if("string"==typeof a)return a=L(a),"*"==a?!0:CKEDITOR.tools.convertArrayToObject(a.split(c));if(CKEDITOR.tools.isArray(a))return a.length?CKEDITOR.tools.convertArrayToObject(a):!1;var d={},b=0,g;for(g in a)d[g]=a[g],b++;return b?d:!1}function l(a,d){if(a.nothingRequired)return!0;var b,g,e,f;if(e=a.requiredClasses)for(f=d.classes,b=0;b<e.length;++b)if(g=e[b],"string"== -typeof g){if(-1==CKEDITOR.tools.indexOf(f,g))return!1}else if(!CKEDITOR.tools.checkIfAnyArrayItemMatches(f,g))return!1;return c(d.styles,a.requiredStyles)&&c(d.attributes,a.requiredAttributes)}function c(a,c){if(!c)return!0;for(var d=0,b;d<c.length;++d)if(b=c[d],"string"==typeof b){if(!(b in a))return!1}else if(!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a,b))return!1;return!0}function d(a){if(!a)return{};a=a.split(/\s*,\s*/).sort();for(var c={};a.length;)c[a.shift()]="cke-test";return c}function g(a){var c, -d,b,g,e={},f=1;for(a=L(a);c=a.match(M);)(d=c[2])?(b=n(d,"styles"),g=n(d,"attrs"),d=n(d,"classes")):b=g=d=null,e["$"+f++]={elements:c[1],classes:d,styles:b,attributes:g},a=a.slice(c[0].length);return e}function n(a,c){var d=a.match(Q[c]);return d?L(d[1]):null}function y(a){var c=a.styleBackup=a.attributes.style,d=a.classBackup=a.attributes["class"];a.styles||(a.styles=CKEDITOR.tools.parseCssText(c||"",1));a.classes||(a.classes=d?d.split(/\s+/):[])}function w(a,c,d,b){var g=0,f;b.toHtml&&(c.name=c.name.replace(H, -"$1"));if(b.doCallbacks&&a.elementCallbacks){a:{f=a.elementCallbacks;for(var m=0,n=f.length,k;m<n;++m)if(k=f[m](c)){f=k;break a}f=void 0}if(f)return f}if(b.doTransform&&(f=a._.transformations[c.name])){y(c);for(m=0;m<f.length;++m)v(a,c,f[m]);t(c)}if(b.doFilter){a:{m=c.name;n=a._;a=n.allowedRules.elements[m];f=n.allowedRules.generic;m=n.disallowedRules.elements[m];n=n.disallowedRules.generic;k=b.skipRequired;var l={valid:!1,validAttributes:{},validClasses:{},validStyles:{},allAttributes:!1,allClasses:!1, -allStyles:!1,hadInvalidAttribute:!1,hadInvalidClass:!1,hadInvalidStyle:!1},u,x;if(a||f){y(c);if(m)for(u=0,x=m.length;u<x;++u)if(!1===e(m[u],c,l)){a=null;break a}if(n)for(u=0,x=n.length;u<x;++u)e(n[u],c,l);if(a)for(u=0,x=a.length;u<x;++u)h(a[u],c,l,k);if(f)for(u=0,x=f.length;u<x;++u)h(f[u],c,l,k);a=l}else a=null}if(!a||!a.valid)return d.push(c),1;x=a.validAttributes;var B=a.validStyles;f=a.validClasses;var m=c.attributes,F=c.styles,n=c.classes;k=c.classBackup;var N=c.styleBackup,R,L,q=[],l=[],A=/^data-cke-/; -u=!1;delete m.style;delete m["class"];delete c.classBackup;delete c.styleBackup;if(!a.allAttributes)for(R in m)x[R]||(A.test(R)?R==(L=R.replace(/^data-cke-saved-/,""))||x[L]||(delete m[R],u=!0):(delete m[R],u=!0));if(!a.allStyles||a.hadInvalidStyle){for(R in F)a.allStyles||B[R]?q.push(R+":"+F[R]):u=!0;q.length&&(m.style=q.sort().join("; "))}else N&&(m.style=N);if(!a.allClasses||a.hadInvalidClass){for(R=0;R<n.length;++R)(a.allClasses||f[n[R]])&&l.push(n[R]);l.length&&(m["class"]=l.sort().join(" ")); -k&&l.length<k.split(/\s+/).length&&(u=!0)}else k&&(m["class"]=k);u&&(g=1);if(!b.skipFinalValidation&&!r(c))return d.push(c),1}b.toHtml&&(c.name=c.name.replace(G,"cke:$1"));return g}function p(a){var c=[],d;for(d in a)-1<d.indexOf("*")&&c.push(d.replace(/\*/g,".*"));return c.length?new RegExp("^(?:"+c.join("|")+")$"):null}function t(a){var c=a.attributes,d;delete c.style;delete c["class"];if(d=CKEDITOR.tools.writeCssText(a.styles,!0))c.style=d;a.classes.length&&(c["class"]=a.classes.sort().join(" "))} -function r(a){switch(a.name){case "a":if(!(a.children.length||a.attributes.name||a.attributes.id))return!1;break;case "img":if(!a.attributes.src)return!1}return!0}function x(a){if(!a)return!1;if(!0===a)return!0;var c=p(a);return function(d){return d in a||c&&d.match(c)}}function u(){return new CKEDITOR.htmlParser.element("br")}function z(a){return a.type==CKEDITOR.NODE_ELEMENT&&("br"==a.name||F.$block[a.name])}function q(a,c,d){var b=a.name;if(F.$empty[b]||!a.children.length)"hr"==b&&"br"==c?a.replaceWith(u()): -(a.parent&&d.push({check:"it",el:a.parent}),a.remove());else if(F.$block[b]||"tr"==b)if("br"==c)a.previous&&!z(a.previous)&&(c=u(),c.insertBefore(a)),a.next&&!z(a.next)&&(c=u(),c.insertAfter(a)),a.replaceWithChildren();else{var b=a.children,g;b:{g=F[c];for(var e=0,f=b.length,h;e<f;++e)if(h=b[e],h.type==CKEDITOR.NODE_ELEMENT&&!g[h.name]){g=!1;break b}g=!0}if(g)a.name=c,a.attributes={},d.push({check:"parent-down",el:a});else{g=a.parent;for(var e=g.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||"body"==g.name, -m,n,f=b.length;0<f;)h=b[--f],e&&(h.type==CKEDITOR.NODE_TEXT||h.type==CKEDITOR.NODE_ELEMENT&&F.$inline[h.name])?(m||(m=new CKEDITOR.htmlParser.element(c),m.insertAfter(a),d.push({check:"parent-down",el:m})),m.add(h,0)):(m=null,n=F[g.name]||F.span,h.insertAfter(a),g.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||h.type!=CKEDITOR.NODE_ELEMENT||n[h.name]||d.push({check:"el-up",el:h}));a.remove()}}else b in{style:1,script:1}?a.remove():(a.parent&&d.push({check:"it",el:a.parent}),a.replaceWithChildren())}function v(a, -c,d){var b,g;for(b=0;b<d.length;++b)if(g=d[b],!(g.check&&!a.check(g.check,!1)||g.left&&!g.left(c))){g.right(c,P);break}}function B(a,c){var d=c.getDefinition(),b=d.attributes,g=d.styles,e,f,h,m;if(a.name!=d.element)return!1;for(e in b)if("class"==e)for(d=b[e].split(/\s+/),h=a.classes.join("|");m=d.pop();){if(-1==h.indexOf(m))return!1}else if(a.attributes[e]!=b[e])return!1;for(f in g)if(a.styles[f]!=g[f])return!1;return!0}function D(a,c){var d,b;"string"==typeof a?d=a:a instanceof CKEDITOR.style?b= -a:(d=a[0],b=a[1]);return[{element:d,left:b,right:function(a,d){d.transform(a,c)}}]}function A(a){return function(c){return B(c,a)}}function E(a){return function(c,d){d[a](c)}}var F=CKEDITOR.dtd,K=CKEDITOR.tools.copy,L=CKEDITOR.tools.trim,C=["","p","br","div"];CKEDITOR.FILTER_SKIP_TREE=2;CKEDITOR.filter=function(a,c){this.allowedContent=[];this.disallowedContent=[];this.elementCallbacks=null;this.disabled=!1;this.editor=null;this.id=CKEDITOR.tools.getNextNumber();this._={allowedRules:{elements:{}, -generic:[]},disallowedRules:{elements:{},generic:[]},transformations:{},cachedTests:{},cachedChecks:{}};CKEDITOR.filter.instances[this.id]=this;var d=this.editor=a instanceof CKEDITOR.editor?a:null;if(d&&!c){this.customConfig=!0;var b=d.config.allowedContent;!0===b?this.disabled=!0:(b||(this.customConfig=!1),this.allow(b,"config",1),this.allow(d.config.extraAllowedContent,"extra",1),this.allow(C[d.enterMode]+" "+C[d.shiftEnterMode],"default",1),this.disallow(d.config.disallowedContent))}else this.customConfig= -!1,this.allow(c||a,"default",1)};CKEDITOR.filter.instances={};CKEDITOR.filter.prototype={allow:function(a,c,d){if(!m(this,a,d))return!1;var e,f;if("string"==typeof a)a=g(a);else if(a instanceof CKEDITOR.style){if(a.toAllowedContentRules)return this.allow(a.toAllowedContentRules(this.editor),c,d);e=a.getDefinition();a={};d=e.attributes;a[e.element]=e={styles:e.styles,requiredStyles:e.styles&&CKEDITOR.tools.object.keys(e.styles)};d&&(d=K(d),e.classes=d["class"]?d["class"].split(/\s+/):null,e.requiredClasses= -e.classes,delete d["class"],e.attributes=d,e.requiredAttributes=d&&CKEDITOR.tools.object.keys(d))}else if(CKEDITOR.tools.isArray(a)){for(e=0;e<a.length;++e)f=this.allow(a[e],c,d);return f}b(this,a,c,this.allowedContent,this._.allowedRules);return!0},applyTo:function(a,c,d,b){if(this.disabled)return!1;var g=this,e=[],f=this.editor&&this.editor.config.protectedSource,h,m=!1,n={doFilter:!d,doTransform:!0,doCallbacks:!0,toHtml:c};a.forEach(function(a){if(a.type==CKEDITOR.NODE_ELEMENT){if("off"==a.attributes["data-cke-filter"])return!1; -if(!c||"span"!=a.name||!~CKEDITOR.tools.object.keys(a.attributes).join("|").indexOf("data-cke-"))if(h=w(g,a,e,n),h&1)m=!0;else if(h&2)return!1}else if(a.type==CKEDITOR.NODE_COMMENT&&a.value.match(/^\{cke_protected\}(?!\{C\})/)){var d;a:{var b=decodeURIComponent(a.value.replace(/^\{cke_protected\}/,""));d=[];var k,r,v;if(f)for(r=0;r<f.length;++r)if((v=b.match(f[r]))&&v[0].length==b.length){d=!0;break a}b=CKEDITOR.htmlParser.fragment.fromHtml(b);1==b.children.length&&(k=b.children[0]).type==CKEDITOR.NODE_ELEMENT&& -w(g,k,d,n);d=!d.length}d||e.push(a)}},null,!0);e.length&&(m=!0);var k;a=[];b=C[b||(this.editor?this.editor.enterMode:CKEDITOR.ENTER_P)];for(var v;d=e.pop();)d.type==CKEDITOR.NODE_ELEMENT?q(d,b,a):d.remove();for(;k=a.pop();)if(d=k.el,d.parent)switch(v=F[d.parent.name]||F.span,k.check){case "it":F.$removeEmpty[d.name]&&!d.children.length?q(d,b,a):r(d)||q(d,b,a);break;case "el-up":d.parent.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||v[d.name]||q(d,b,a);break;case "parent-down":d.parent.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT|| -v[d.name]||q(d.parent,b,a)}return m},checkFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));return!a.requiredContent||this.check(a.requiredContent)},disable:function(){this.disabled=!0},disallow:function(a){if(!m(this,a,!0))return!1;"string"==typeof a&&(a=g(a));b(this,a,null,this.disallowedContent,this._.disallowedRules);return!0},addContentForms:function(a){if(!this.disabled&&a){var c,d,b=[],g;for(c=0;c<a.length&&!g;++c)d=a[c],("string"==typeof d||d instanceof -CKEDITOR.style)&&this.check(d)&&(g=d);if(g){for(c=0;c<a.length;++c)b.push(D(a[c],g));this.addTransformations(b)}}},addElementCallback:function(a){this.elementCallbacks||(this.elementCallbacks=[]);this.elementCallbacks.push(a)},addFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));this.allow(a.allowedContent,a.name);this.addTransformations(a.contentTransformations);this.addContentForms(a.contentForms);return a.requiredContent&&(this.customConfig||this.disallowedContent.length)? -this.check(a.requiredContent):!0},addTransformations:function(a){var c,d;if(!this.disabled&&a){var b=this._.transformations,g;for(g=0;g<a.length;++g){c=a[g];var e=void 0,f=void 0,h=void 0,m=void 0,n=void 0,k=void 0;d=[];for(f=0;f<c.length;++f)h=c[f],"string"==typeof h?(h=h.split(/\s*:\s*/),m=h[0],n=null,k=h[1]):(m=h.check,n=h.left,k=h.right),e||(e=h,e=e.element?e.element:m?m.match(/^([a-z0-9]+)/i)[0]:e.left.getDefinition().element),n instanceof CKEDITOR.style&&(n=A(n)),d.push({check:m==e?null:m,left:n, -right:"string"==typeof k?E(k):k});c=e;b[c]||(b[c]=[]);b[c].push(d)}}},check:function(a,c,b){if(this.disabled)return!0;if(CKEDITOR.tools.isArray(a)){for(var e=a.length;e--;)if(this.check(a[e],c,b))return!0;return!1}var f,h;if("string"==typeof a){h=a+"\x3c"+(!1===c?"0":"1")+(b?"1":"0")+"\x3e";if(h in this._.cachedChecks)return this._.cachedChecks[h];f=g(a).$1;var m=f.styles,e=f.classes;f.name=f.elements;f.classes=e=e?e.split(/\s*,\s*/):[];f.styles=d(m);f.attributes=d(f.attributes);f.children=[];e.length&& -(f.attributes["class"]=e.join(" "));m&&(f.attributes.style=CKEDITOR.tools.writeCssText(f.styles))}else f=a.getDefinition(),m=f.styles,e=f.attributes||{},m&&!CKEDITOR.tools.isEmpty(m)?(m=K(m),e.style=CKEDITOR.tools.writeCssText(m,!0)):m={},f={name:f.element,attributes:e,classes:e["class"]?e["class"].split(/\s+/):[],styles:m,children:[]};var m=CKEDITOR.tools.clone(f),n=[],k;if(!1!==c&&(k=this._.transformations[f.name])){for(e=0;e<k.length;++e)v(this,f,k[e]);t(f)}w(this,m,n,{doFilter:!0,doTransform:!1!== -c,skipRequired:!b,skipFinalValidation:!b});0<n.length?b=!1:((c=f.attributes["class"])&&(f.attributes["class"]=f.attributes["class"].split(" ").sort().join(" ")),b=CKEDITOR.tools.objectCompare(f.attributes,m.attributes,!0),c&&(f.attributes["class"]=c));"string"==typeof a&&(this._.cachedChecks[h]=b);return b},getAllowedEnterMode:function(){var a=["p","div","br"],c={p:CKEDITOR.ENTER_P,div:CKEDITOR.ENTER_DIV,br:CKEDITOR.ENTER_BR};return function(d,b){var g=a.slice(),e;if(this.check(C[d]))return d;for(b|| -(g=g.reverse());e=g.pop();)if(this.check(e))return c[e];return CKEDITOR.ENTER_BR}}(),clone:function(){var a=new CKEDITOR.filter,c=CKEDITOR.tools.clone;a.allowedContent=c(this.allowedContent);a._.allowedRules=c(this._.allowedRules);a.disallowedContent=c(this.disallowedContent);a._.disallowedRules=c(this._.disallowedRules);a._.transformations=c(this._.transformations);a.disabled=this.disabled;a.editor=this.editor;return a},destroy:function(){delete CKEDITOR.filter.instances[this.id];delete this._;delete this.allowedContent; -delete this.disallowedContent}};var O={styles:1,attributes:1,classes:1},I={styles:"requiredStyles",attributes:"requiredAttributes",classes:"requiredClasses"},M=/^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,Q={styles:/{([^}]+)}/,attrs:/\[([^\]]+)\]/,classes:/\(([^\)]+)\)/},H=/^cke:(object|embed|param)$/,G=/^(object|embed|param)$/,P;P=CKEDITOR.filter.transformationsTools={sizeToStyle:function(a){this.lengthToStyle(a,"width");this.lengthToStyle(a, -"height")},sizeToAttribute:function(a){this.lengthToAttribute(a,"width");this.lengthToAttribute(a,"height")},lengthToStyle:function(a,c,d){d=d||c;if(!(d in a.styles)){var b=a.attributes[c];b&&(/^\d+$/.test(b)&&(b+="px"),a.styles[d]=b)}delete a.attributes[c]},lengthToAttribute:function(a,c,d){d=d||c;if(!(d in a.attributes)){var b=a.styles[c],g=b&&b.match(/^(\d+)(?:\.\d*)?px$/);g?a.attributes[d]=g[1]:"cke-test"==b&&(a.attributes[d]="cke-test")}delete a.styles[c]},alignmentToStyle:function(a){if(!("float"in +{}:"function"==typeof f?{match:f}:K(f);"$"!=e.charAt(0)&&(f.elements=e);d&&(f.featureName=d.toLowerCase());var k=f;k.elements=l(k.elements,/\s+/)||null;k.propertiesOnly=k.propertiesOnly||!0===k.elements;var h=/\s*,\s*/,n=void 0;for(n in N){k[n]=l(k[n],h)||null;var w=k,r=I[n],m=l(k[I[n]],h),G=k[n],H=[],Q=!0,q=void 0;m?Q=!1:m={};for(q in G)"!"==q.charAt(0)&&(q=q.slice(1),H.push(q),m[q]=!0,Q=!1);for(;q=H.pop();)G[q]=G["!"+q],delete G["!"+q];w[r]=(Q?!1:m)||null}k.match=k.match||null;b.push(f);a.push(f)}c= +g.elements;g=g.generic;var t;d=0;for(b=a.length;d<b;++d){e=K(a[d]);f=!0===e.classes||!0===e.styles||!0===e.attributes;k=e;n=r=h=void 0;for(h in N)k[h]=x(k[h]);w=!0;for(n in I){h=I[n];r=k[h];m=[];G=void 0;for(G in r)-1<G.indexOf("*")?m.push(new RegExp("^"+G.replace(/\*/g,".*")+"$")):m.push(G);r=m;r.length&&(k[h]=r,w=!1)}k.nothingRequired=w;k.noProperties=!(k.attributes||k.classes||k.styles);if(!0===e.elements||null===e.elements)g[f?"unshift":"push"](e);else for(t in k=e.elements,delete e.elements, +k)if(c[t])c[t][f?"unshift":"push"](e);else c[t]=[e]}}function h(a,c,d,g){if(!a.match||a.match(c))if(g||m(a,c))if(a.propertiesOnly||(d.valid=!0),d.allAttributes||(d.allAttributes=f(a.attributes,c.attributes,d.validAttributes)),d.allStyles||(d.allStyles=f(a.styles,c.styles,d.validStyles)),!d.allClasses){a=a.classes;c=c.classes;g=d.validClasses;if(a)if(!0===a)a=!0;else{for(var b=0,e=c.length,k;b<e;++b)k=c[b],g[k]||(g[k]=a(k));a=!1}else a=!1;d.allClasses=a}}function f(a,c,d){if(!a)return!1;if(!0===a)return!0; +for(var g in c)d[g]||(d[g]=a(g));return!1}function e(c,d,g){if(!c.match||c.match(d)){if(c.noProperties)return!1;g.hadInvalidAttribute=a(c.attributes,d.attributes)||g.hadInvalidAttribute;g.hadInvalidStyle=a(c.styles,d.styles)||g.hadInvalidStyle;c=c.classes;d=d.classes;if(c){for(var b=!1,e=!0===c,f=d.length;f--;)if(e||c(d[f]))d.splice(f,1),b=!0;c=b}else c=!1;g.hadInvalidClass=c||g.hadInvalidClass}}function a(a,c){if(!a)return!1;var d=!1,g=!0===a,b;for(b in c)if(g||a(b))delete c[b],d=!0;return d}function k(a, +c,d){if(a.disabled||a.customConfig&&!d||!c)return!1;a._.cachedChecks={};return!0}function l(a,c){if(!a)return!1;if(!0===a)return a;if("string"==typeof a)return a=M(a),"*"==a?!0:CKEDITOR.tools.convertArrayToObject(a.split(c));if(CKEDITOR.tools.isArray(a))return a.length?CKEDITOR.tools.convertArrayToObject(a):!1;var d={},g=0,b;for(b in a)d[b]=a[b],g++;return g?d:!1}function m(a,d){if(a.nothingRequired)return!0;var g,b,e,f;if(e=a.requiredClasses)for(f=d.classes,g=0;g<e.length;++g)if(b=e[g],"string"== +typeof b){if(-1==CKEDITOR.tools.indexOf(f,b))return!1}else if(!CKEDITOR.tools.checkIfAnyArrayItemMatches(f,b))return!1;return c(d.styles,a.requiredStyles)&&c(d.attributes,a.requiredAttributes)}function c(a,c){if(!c)return!0;for(var d=0,g;d<c.length;++d)if(g=c[d],"string"==typeof g){if(!(g in a))return!1}else if(!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a,g))return!1;return!0}function d(a){if(!a)return{};a=a.split(/\s*,\s*/).sort();for(var c={};a.length;)c[a.shift()]="cke-test";return c}function g(a){var c, +d,g,b,e={},f=1;for(a=M(a);c=a.match(L);)(d=c[2])?(g=n(d,"styles"),b=n(d,"attrs"),d=n(d,"classes")):g=b=d=null,e["$"+f++]={elements:c[1],classes:d,styles:g,attributes:b},a=a.slice(c[0].length);return e}function n(a,c){var d=a.match(R[c]);return d?M(d[1]):null}function y(a){var c=a.styleBackup=a.attributes.style,d=a.classBackup=a.attributes["class"];a.styles||(a.styles=CKEDITOR.tools.parseCssText(c||"",1));a.classes||(a.classes=d?d.split(/\s+/):[])}function v(a,c,d,g){var b=0,f;g.toHtml&&(c.name=c.name.replace(H, +"$1"));if(g.doCallbacks&&a.elementCallbacks){a:{f=a.elementCallbacks;for(var k=0,n=f.length,l;k<n;++k)if(l=f[k](c)){f=l;break a}f=void 0}if(f)return f}if(g.doTransform&&(f=a._.transformations[c.name])){y(c);for(k=0;k<f.length;++k)w(a,c,f[k]);q(c)}if(g.doFilter){a:{k=c.name;n=a._;a=n.allowedRules.elements[k];f=n.allowedRules.generic;k=n.disallowedRules.elements[k];n=n.disallowedRules.generic;l=g.skipRequired;var m={valid:!1,validAttributes:{},validClasses:{},validStyles:{},allAttributes:!1,allClasses:!1, +allStyles:!1,hadInvalidAttribute:!1,hadInvalidClass:!1,hadInvalidStyle:!1},t,B;if(a||f){y(c);if(k)for(t=0,B=k.length;t<B;++t)if(!1===e(k[t],c,m)){a=null;break a}if(n)for(t=0,B=n.length;t<B;++t)e(n[t],c,m);if(a)for(t=0,B=a.length;t<B;++t)h(a[t],c,m,l);if(f)for(t=0,B=f.length;t<B;++t)h(f[t],c,m,l);a=m}else a=null}if(!a||!a.valid)return d.push(c),1;B=a.validAttributes;var x=a.validStyles;f=a.validClasses;var k=c.attributes,u=c.styles,n=c.classes;l=c.classBackup;var F=c.styleBackup,Q,M,A=[],m=[],C=/^data-cke-/; +t=!1;delete k.style;delete k["class"];delete c.classBackup;delete c.styleBackup;if(!a.allAttributes)for(Q in k)B[Q]||(C.test(Q)?Q==(M=Q.replace(/^data-cke-saved-/,""))||B[M]||(delete k[Q],t=!0):(delete k[Q],t=!0));if(!a.allStyles||a.hadInvalidStyle){for(Q in u)a.allStyles||x[Q]?A.push(Q+":"+u[Q]):t=!0;A.length&&(k.style=A.sort().join("; "))}else F&&(k.style=F);if(!a.allClasses||a.hadInvalidClass){for(Q=0;Q<n.length;++Q)(a.allClasses||f[n[Q]])&&m.push(n[Q]);m.length&&(k["class"]=m.sort().join(" ")); +l&&m.length<l.split(/\s+/).length&&(t=!0)}else l&&(k["class"]=l);t&&(b=1);if(!g.skipFinalValidation&&!r(c))return d.push(c),1}g.toHtml&&(c.name=c.name.replace(G,"cke:$1"));return b}function p(a){var c=[],d;for(d in a)-1<d.indexOf("*")&&c.push(d.replace(/\*/g,".*"));return c.length?new RegExp("^(?:"+c.join("|")+")$"):null}function q(a){var c=a.attributes,d;delete c.style;delete c["class"];if(d=CKEDITOR.tools.writeCssText(a.styles,!0))c.style=d;a.classes.length&&(c["class"]=a.classes.sort().join(" "))} +function r(a){switch(a.name){case "a":if(!(a.children.length||a.attributes.name||a.attributes.id))return!1;break;case "img":if(!a.attributes.src)return!1}return!0}function x(a){if(!a)return!1;if(!0===a)return!0;var c=p(a);return function(d){return d in a||c&&d.match(c)}}function t(){return new CKEDITOR.htmlParser.element("br")}function z(a){return a.type==CKEDITOR.NODE_ELEMENT&&("br"==a.name||F.$block[a.name])}function u(a,c,d){var g=a.name;if(F.$empty[g]||!a.children.length)"hr"==g&&"br"==c?a.replaceWith(t()): +(a.parent&&d.push({check:"it",el:a.parent}),a.remove());else if(F.$block[g]||"tr"==g)if("br"==c)a.previous&&!z(a.previous)&&(c=t(),c.insertBefore(a)),a.next&&!z(a.next)&&(c=t(),c.insertAfter(a)),a.replaceWithChildren();else{var g=a.children,b;b:{b=F[c];for(var e=0,f=g.length,k;e<f;++e)if(k=g[e],k.type==CKEDITOR.NODE_ELEMENT&&!b[k.name]){b=!1;break b}b=!0}if(b)a.name=c,a.attributes={},d.push({check:"parent-down",el:a});else{b=a.parent;for(var e=b.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||"body"==b.name, +h,n,f=g.length;0<f;)k=g[--f],e&&(k.type==CKEDITOR.NODE_TEXT||k.type==CKEDITOR.NODE_ELEMENT&&F.$inline[k.name])?(h||(h=new CKEDITOR.htmlParser.element(c),h.insertAfter(a),d.push({check:"parent-down",el:h})),h.add(k,0)):(h=null,n=F[b.name]||F.span,k.insertAfter(a),b.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||k.type!=CKEDITOR.NODE_ELEMENT||n[k.name]||d.push({check:"el-up",el:k}));a.remove()}}else g in{style:1,script:1}?a.remove():(a.parent&&d.push({check:"it",el:a.parent}),a.replaceWithChildren())}function w(a, +c,d){var g,b;for(g=0;g<d.length;++g)if(b=d[g],!(b.check&&!a.check(b.check,!1)||b.left&&!b.left(c))){b.right(c,O);break}}function B(a,c){var d=c.getDefinition(),g=d.attributes,b=d.styles,e,f,k,h;if(a.name!=d.element)return!1;for(e in g)if("class"==e)for(d=g[e].split(/\s+/),k=a.classes.join("|");h=d.pop();){if(-1==k.indexOf(h))return!1}else if(a.attributes[e]!=g[e])return!1;for(f in b)if(a.styles[f]!=b[f])return!1;return!0}function C(a,c){var d,g;"string"==typeof a?d=a:a instanceof CKEDITOR.style?g= +a:(d=a[0],g=a[1]);return[{element:d,left:g,right:function(a,d){d.transform(a,c)}}]}function A(a){return function(c){return B(c,a)}}function E(a){return function(c,d){d[a](c)}}var F=CKEDITOR.dtd,K=CKEDITOR.tools.copy,M=CKEDITOR.tools.trim,D=["","p","br","div"];CKEDITOR.FILTER_SKIP_TREE=2;CKEDITOR.filter=function(a,c){this.allowedContent=[];this.disallowedContent=[];this.elementCallbacks=null;this.disabled=!1;this.editor=null;this.id=CKEDITOR.tools.getNextNumber();this._={allowedRules:{elements:{}, +generic:[]},disallowedRules:{elements:{},generic:[]},transformations:{},cachedTests:{},cachedChecks:{}};CKEDITOR.filter.instances[this.id]=this;var d=this.editor=a instanceof CKEDITOR.editor?a:null;if(d&&!c){this.customConfig=!0;var g=d.config.allowedContent;!0===g?this.disabled=!0:(g||(this.customConfig=!1),this.allow(g,"config",1),this.allow(d.config.extraAllowedContent,"extra",1),this.allow(D[d.enterMode]+" "+D[d.shiftEnterMode],"default",1),this.disallow(d.config.disallowedContent))}else this.customConfig= +!1,this.allow(c||a,"default",1)};CKEDITOR.filter.instances={};CKEDITOR.filter.prototype={allow:function(a,c,d){if(!k(this,a,d))return!1;var e,f;if("string"==typeof a)a=g(a);else if(a instanceof CKEDITOR.style){if(a.toAllowedContentRules)return this.allow(a.toAllowedContentRules(this.editor),c,d);e=a.getDefinition();a={};d=e.attributes;a[e.element]=e={styles:e.styles,requiredStyles:e.styles&&CKEDITOR.tools.object.keys(e.styles)};d&&(d=K(d),e.classes=d["class"]?d["class"].split(/\s+/):null,e.requiredClasses= +e.classes,delete d["class"],e.attributes=d,e.requiredAttributes=d&&CKEDITOR.tools.object.keys(d))}else if(CKEDITOR.tools.isArray(a)){for(e=0;e<a.length;++e)f=this.allow(a[e],c,d);return f}b(this,a,c,this.allowedContent,this._.allowedRules);return!0},applyTo:function(a,c,d,g){if(this.disabled)return!1;var b=this,e=[],f=this.editor&&this.editor.config.protectedSource,k,h=!1,n={doFilter:!d,doTransform:!0,doCallbacks:!0,toHtml:c};a.forEach(function(a){if(a.type==CKEDITOR.NODE_ELEMENT){if("off"==a.attributes["data-cke-filter"])return!1; +if(!c||"span"!=a.name||!~CKEDITOR.tools.object.keys(a.attributes).join("|").indexOf("data-cke-"))if(k=v(b,a,e,n),k&1)h=!0;else if(k&2)return!1}else if(a.type==CKEDITOR.NODE_COMMENT&&a.value.match(/^\{cke_protected\}(?!\{C\})/)){var d;a:{var g=decodeURIComponent(a.value.replace(/^\{cke_protected\}/,""));d=[];var l,w,r;if(f)for(w=0;w<f.length;++w)if((r=g.match(f[w]))&&r[0].length==g.length){d=!0;break a}g=CKEDITOR.htmlParser.fragment.fromHtml(g);1==g.children.length&&(l=g.children[0]).type==CKEDITOR.NODE_ELEMENT&& +v(b,l,d,n);d=!d.length}d||e.push(a)}},null,!0);e.length&&(h=!0);var l;a=[];g=D[g||(this.editor?this.editor.enterMode:CKEDITOR.ENTER_P)];for(var w;d=e.pop();)d.type==CKEDITOR.NODE_ELEMENT?u(d,g,a):d.remove();for(;l=a.pop();)if(d=l.el,d.parent)switch(w=F[d.parent.name]||F.span,l.check){case "it":F.$removeEmpty[d.name]&&!d.children.length?u(d,g,a):r(d)||u(d,g,a);break;case "el-up":d.parent.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||w[d.name]||u(d,g,a);break;case "parent-down":d.parent.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT|| +w[d.name]||u(d.parent,g,a)}return h},checkFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));return!a.requiredContent||this.check(a.requiredContent)},disable:function(){this.disabled=!0},disallow:function(a){if(!k(this,a,!0))return!1;"string"==typeof a&&(a=g(a));b(this,a,null,this.disallowedContent,this._.disallowedRules);return!0},addContentForms:function(a){if(!this.disabled&&a){var c,d,g=[],b;for(c=0;c<a.length&&!b;++c)d=a[c],("string"==typeof d||d instanceof +CKEDITOR.style)&&this.check(d)&&(b=d);if(b){for(c=0;c<a.length;++c)g.push(C(a[c],b));this.addTransformations(g)}}},addElementCallback:function(a){this.elementCallbacks||(this.elementCallbacks=[]);this.elementCallbacks.push(a)},addFeature:function(a){if(this.disabled||!a)return!0;a.toFeature&&(a=a.toFeature(this.editor));this.allow(a.allowedContent,a.name);this.addTransformations(a.contentTransformations);this.addContentForms(a.contentForms);return a.requiredContent&&(this.customConfig||this.disallowedContent.length)? +this.check(a.requiredContent):!0},addTransformations:function(a){var c,d;if(!this.disabled&&a){var g=this._.transformations,b;for(b=0;b<a.length;++b){c=a[b];var e=void 0,f=void 0,k=void 0,h=void 0,n=void 0,l=void 0;d=[];for(f=0;f<c.length;++f)k=c[f],"string"==typeof k?(k=k.split(/\s*:\s*/),h=k[0],n=null,l=k[1]):(h=k.check,n=k.left,l=k.right),e||(e=k,e=e.element?e.element:h?h.match(/^([a-z0-9]+)/i)[0]:e.left.getDefinition().element),n instanceof CKEDITOR.style&&(n=A(n)),d.push({check:h==e?null:h,left:n, +right:"string"==typeof l?E(l):l});c=e;g[c]||(g[c]=[]);g[c].push(d)}}},check:function(a,c,b){if(this.disabled)return!0;if(CKEDITOR.tools.isArray(a)){for(var e=a.length;e--;)if(this.check(a[e],c,b))return!0;return!1}var f,k;if("string"==typeof a){k=a+"\x3c"+(!1===c?"0":"1")+(b?"1":"0")+"\x3e";if(k in this._.cachedChecks)return this._.cachedChecks[k];f=g(a).$1;var h=f.styles,e=f.classes;f.name=f.elements;f.classes=e=e?e.split(/\s*,\s*/):[];f.styles=d(h);f.attributes=d(f.attributes);f.children=[];e.length&& +(f.attributes["class"]=e.join(" "));h&&(f.attributes.style=CKEDITOR.tools.writeCssText(f.styles))}else f=a.getDefinition(),h=f.styles,e=f.attributes||{},h&&!CKEDITOR.tools.isEmpty(h)?(h=K(h),e.style=CKEDITOR.tools.writeCssText(h,!0)):h={},f={name:f.element,attributes:e,classes:e["class"]?e["class"].split(/\s+/):[],styles:h,children:[]};var h=CKEDITOR.tools.clone(f),n=[],l;if(!1!==c&&(l=this._.transformations[f.name])){for(e=0;e<l.length;++e)w(this,f,l[e]);q(f)}v(this,h,n,{doFilter:!0,doTransform:!1!== +c,skipRequired:!b,skipFinalValidation:!b});0<n.length?b=!1:((c=f.attributes["class"])&&(f.attributes["class"]=f.attributes["class"].split(" ").sort().join(" ")),b=CKEDITOR.tools.objectCompare(f.attributes,h.attributes,!0),c&&(f.attributes["class"]=c));"string"==typeof a&&(this._.cachedChecks[k]=b);return b},getAllowedEnterMode:function(){var a=["p","div","br"],c={p:CKEDITOR.ENTER_P,div:CKEDITOR.ENTER_DIV,br:CKEDITOR.ENTER_BR};return function(d,g){var b=a.slice(),e;if(this.check(D[d]))return d;for(g|| +(b=b.reverse());e=b.pop();)if(this.check(e))return c[e];return CKEDITOR.ENTER_BR}}(),clone:function(){var a=new CKEDITOR.filter,c=CKEDITOR.tools.clone;a.allowedContent=c(this.allowedContent);a._.allowedRules=c(this._.allowedRules);a.disallowedContent=c(this.disallowedContent);a._.disallowedRules=c(this._.disallowedRules);a._.transformations=c(this._.transformations);a.disabled=this.disabled;a.editor=this.editor;return a},destroy:function(){delete CKEDITOR.filter.instances[this.id];delete this._;delete this.allowedContent; +delete this.disallowedContent}};var N={styles:1,attributes:1,classes:1},I={styles:"requiredStyles",attributes:"requiredAttributes",classes:"requiredClasses"},L=/^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,R={styles:/{([^}]+)}/,attrs:/\[([^\]]+)\]/,classes:/\(([^\)]+)\)/},H=/^cke:(object|embed|param)$/,G=/^(object|embed|param)$/,O;O=CKEDITOR.filter.transformationsTools={sizeToStyle:function(a){this.lengthToStyle(a,"width");this.lengthToStyle(a, +"height")},sizeToAttribute:function(a){this.lengthToAttribute(a,"width");this.lengthToAttribute(a,"height")},lengthToStyle:function(a,c,d){d=d||c;if(!(d in a.styles)){var g=a.attributes[c];g&&(/^\d+$/.test(g)&&(g+="px"),a.styles[d]=g)}delete a.attributes[c]},lengthToAttribute:function(a,c,d){d=d||c;if(!(d in a.attributes)){var g=a.styles[c],b=g&&g.match(/^(\d+)(?:\.\d*)?px$/);b?a.attributes[d]=b[1]:"cke-test"==g&&(a.attributes[d]="cke-test")}delete a.styles[c]},alignmentToStyle:function(a){if(!("float"in a.styles)){var c=a.attributes.align;if("left"==c||"right"==c)a.styles["float"]=c}delete a.attributes.align},alignmentToAttribute:function(a){if(!("align"in a.attributes)){var c=a.styles["float"];if("left"==c||"right"==c)a.attributes.align=c}delete a.styles["float"]},splitBorderShorthand:function(a){if(a.styles.border){var c=CKEDITOR.tools.style.parse.border(a.styles.border);c.color&&(a.styles["border-color"]=c.color);c.style&&(a.styles["border-style"]=c.style);c.width&&(a.styles["border-width"]=c.width); -delete a.styles.border}},listTypeToStyle:function(a){if(a.attributes.type)switch(a.attributes.type){case "a":a.styles["list-style-type"]="lower-alpha";break;case "A":a.styles["list-style-type"]="upper-alpha";break;case "i":a.styles["list-style-type"]="lower-roman";break;case "I":a.styles["list-style-type"]="upper-roman";break;case "1":a.styles["list-style-type"]="decimal";break;default:a.styles["list-style-type"]=a.attributes.type}},splitMarginShorthand:function(a){function c(b){a.styles["margin-top"]= -d[b[0]];a.styles["margin-right"]=d[b[1]];a.styles["margin-bottom"]=d[b[2]];a.styles["margin-left"]=d[b[3]]}if(a.styles.margin){var d=a.styles.margin.match(/(auto|0|(?:\-?[\.\d]+(?:\w+|%)))/g)||["0px"];switch(d.length){case 1:c([0,0,0,0]);break;case 2:c([0,1,0,1]);break;case 3:c([0,1,2,1]);break;case 4:c([0,1,2,3])}delete a.styles.margin}},matchesStyle:B,transform:function(a,c){if("string"==typeof c)a.name=c;else{var d=c.getDefinition(),b=d.styles,g=d.attributes,e,f,h,m;a.name=d.element;for(e in g)if("class"== -e)for(d=a.classes.join("|"),h=g[e].split(/\s+/);m=h.pop();)-1==d.indexOf(m)&&a.classes.push(m);else a.attributes[e]=g[e];for(f in b)a.styles[f]=b[f]}}}}(),function(){CKEDITOR.focusManager=function(b){if(b.focusManager)return b.focusManager;this.hasFocus=!1;this.currentActive=null;this._={editor:b};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(b){this._.timer&&clearTimeout(this._.timer);b&&(this.currentActive=b);this.hasFocus||this._.locked||((b= +delete a.styles.border}},listTypeToStyle:function(a){if(a.attributes.type)switch(a.attributes.type){case "a":a.styles["list-style-type"]="lower-alpha";break;case "A":a.styles["list-style-type"]="upper-alpha";break;case "i":a.styles["list-style-type"]="lower-roman";break;case "I":a.styles["list-style-type"]="upper-roman";break;case "1":a.styles["list-style-type"]="decimal";break;default:a.styles["list-style-type"]=a.attributes.type}},splitMarginShorthand:function(a){function c(g){a.styles["margin-top"]= +d[g[0]];a.styles["margin-right"]=d[g[1]];a.styles["margin-bottom"]=d[g[2]];a.styles["margin-left"]=d[g[3]]}if(a.styles.margin){var d=a.styles.margin.match(/(auto|0|(?:\-?[\.\d]+(?:\w+|%)))/g)||["0px"];switch(d.length){case 1:c([0,0,0,0]);break;case 2:c([0,1,0,1]);break;case 3:c([0,1,2,1]);break;case 4:c([0,1,2,3])}delete a.styles.margin}},matchesStyle:B,transform:function(a,c){if("string"==typeof c)a.name=c;else{var d=c.getDefinition(),g=d.styles,b=d.attributes,e,f,k,h;a.name=d.element;for(e in b)if("class"== +e)for(d=a.classes.join("|"),k=b[e].split(/\s+/);h=k.pop();)-1==d.indexOf(h)&&a.classes.push(h);else a.attributes[e]=b[e];for(f in g)a.styles[f]=g[f]}}}}(),function(){CKEDITOR.focusManager=function(b){if(b.focusManager)return b.focusManager;this.hasFocus=!1;this.currentActive=null;this._={editor:b};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(b){this._.timer&&clearTimeout(this._.timer);b&&(this.currentActive=b);this.hasFocus||this._.locked||((b= CKEDITOR.currentInstance)&&b.focusManager.blur(1),this.hasFocus=!0,(b=this._.editor.container)&&b.addClass("cke_focus"),this._.editor.fire("focus"))},lock:function(){this._.locked=1},unlock:function(){delete this._.locked},blur:function(b){function h(){if(this.hasFocus){this.hasFocus=!1;var b=this._.editor.container;b&&b.removeClass("cke_focus");this._.editor.fire("blur")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var f=CKEDITOR.focusManager._.blurDelay;b||!f?h.call(this):this._.timer= CKEDITOR.tools.setTimeout(function(){delete this._.timer;h.call(this)},f,this)}},add:function(b,h){var f=b.getCustomData("focusmanager");if(!f||f!=this){f&&f.remove(b);var f="focus",e="blur";h&&(CKEDITOR.env.ie?(f="focusin",e="focusout"):CKEDITOR.event.useCapture=1);var a={blur:function(){b.equals(this.currentActive)&&this.blur()},focus:function(){this.focus(b)}};b.on(f,a.focus,this);b.on(e,a.blur,this);h&&(CKEDITOR.event.useCapture=0);b.setCustomData("focusmanager",this);b.setCustomData("focusmanager_handlers", a)}},remove:function(b){b.removeCustomData("focusmanager");var h=b.removeCustomData("focusmanager_handlers");b.removeListener("blur",h.blur);b.removeListener("focus",h.focus)}}}(),CKEDITOR.keystrokeHandler=function(b){if(b.keystrokeHandler)return b.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:b};return this},function(){var b,h=function(e){e=e.data;var a=e.getKeystroke(),f=this.keystrokes[a],h=this._.editor;b=!1===h.fire("key",{keyCode:a,domEvent:e});b||(f&&(b=!1!== h.execCommand(f,{from:"keystrokeHandler"})),b||(b=!!this.blockedKeystrokes[a]));b&&e.preventDefault(!0);return!b},f=function(e){b&&(b=!1,e.data.preventDefault(!0))};CKEDITOR.keystrokeHandler.prototype={attach:function(b){b.on("keydown",h,this);if(CKEDITOR.env.gecko&&CKEDITOR.env.mac)b.on("keypress",f,this)}}}(),function(){CKEDITOR.lang={languages:{af:1,ar:1,az:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,"en-au":1,"en-ca":1,"en-gb":1,en:1,eo:1,es:1,"es-mx":1,et:1,eu:1,fa:1,fi:1,fo:1,"fr-ca":1, fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,ms:1,nb:1,nl:1,no:1,oc:1,pl:1,"pt-br":1,pt:1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,"sr-latn":1,sr:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,"zh-cn":1,zh:1},rtl:{ar:1,fa:1,he:1,ku:1,ug:1},load:function(b,h,f){b&&CKEDITOR.lang.languages[b]||(b=this.detect(h,b));var e=this;h=function(){e[b].dir=e.rtl[b]?"rtl":"ltr";f(b,e[b])};this[b]?h():CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/"+b+".js"),h,this)},detect:function(b, -h){var f=this.languages;h=h||navigator.userLanguage||navigator.language||b;var e=h.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),a=e[1],e=e[2];f[a+"-"+e]?a=a+"-"+e:f[a]||(a=null);CKEDITOR.lang.detect=a?function(){return a}:function(a){return a};return a||b}}}(),CKEDITOR.scriptLoader=function(){var b={},h={};return{load:function(f,e,a,m){var k="string"==typeof f;k&&(f=[f]);a||(a=CKEDITOR);var l=f.length,c=l,d=[],g=[],n=function(c){e&&(k?e.call(a,c):e.call(a,d,g))};if(0===c)n(!0);else{var y=function(a, -b){(b?d:g).push(a);0>=--c&&(m&&CKEDITOR.document.getDocumentElement().removeStyle("cursor"),n(b))},w=function(a,c){b[a]=1;var d=h[a];delete h[a];for(var g=0;g<d.length;g++)d[g](a,c)},p=function(a){if(b[a])y(a,!0);else{var c=h[a]||(h[a]=[]);c.push(y);if(!(1<c.length)){var d=new CKEDITOR.dom.element("script");d.setAttributes({type:"text/javascript",src:a});e&&(CKEDITOR.env.ie&&(8>=CKEDITOR.env.version||CKEDITOR.env.ie9Compat)?d.$.onreadystatechange=function(){if("loaded"==d.$.readyState||"complete"== -d.$.readyState)d.$.onreadystatechange=null,w(a,!0)}:(d.$.onload=function(){setTimeout(function(){d.$.onload=null;d.$.onerror=null;w(a,!0)},0)},d.$.onerror=function(){d.$.onload=null;d.$.onerror=null;w(a,!1)}));d.appendTo(CKEDITOR.document.getHead())}}};m&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var t=0;t<l;t++)p(f[t])}},queue:function(){function b(){var a;(a=e[0])&&this.load(a.scriptUrl,a.callback,CKEDITOR,0)}var e=[];return function(a,h){var k=this;e.push({scriptUrl:a, -callback:function(){h&&h.apply(this,arguments);e.shift();b.call(k)}});1==e.length&&b.call(this)}}()}}(),CKEDITOR.resourceManager=function(b,h){this.basePath=b;this.fileName=h;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}},CKEDITOR.resourceManager.prototype={add:function(b,h){if(this.registered[b])throw Error('[CKEDITOR.resourceManager.add] The resource name "'+b+'" is already registered.');var f=this.registered[b]=h||{};f.name=b;f.path=this.getPath(b);CKEDITOR.fire(b+ +h){var f=this.languages;h=h||navigator.userLanguage||navigator.language||b;var e=h.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),a=e[1],e=e[2];f[a+"-"+e]?a=a+"-"+e:f[a]||(a=null);CKEDITOR.lang.detect=a?function(){return a}:function(a){return a};return a||b}}}(),CKEDITOR.scriptLoader=function(){var b={},h={};return{load:function(f,e,a,k){var l="string"==typeof f;l&&(f=[f]);a||(a=CKEDITOR);var m=f.length,c=m,d=[],g=[],n=function(c){e&&(l?e.call(a,c):e.call(a,d,g))};if(0===c)n(!0);else{var y=function(a, +b){(b?d:g).push(a);0>=--c&&(k&&CKEDITOR.document.getDocumentElement().removeStyle("cursor"),n(b))},v=function(a,c){b[a]=1;var d=h[a];delete h[a];for(var g=0;g<d.length;g++)d[g](a,c)},p=function(a){if(b[a])y(a,!0);else{var c=h[a]||(h[a]=[]);c.push(y);if(!(1<c.length)){var d=new CKEDITOR.dom.element("script");d.setAttributes({type:"text/javascript",src:a});e&&(CKEDITOR.env.ie&&(8>=CKEDITOR.env.version||CKEDITOR.env.ie9Compat)?d.$.onreadystatechange=function(){if("loaded"==d.$.readyState||"complete"== +d.$.readyState)d.$.onreadystatechange=null,v(a,!0)}:(d.$.onload=function(){setTimeout(function(){d.$.onload=null;d.$.onerror=null;v(a,!0)},0)},d.$.onerror=function(){d.$.onload=null;d.$.onerror=null;v(a,!1)}));d.appendTo(CKEDITOR.document.getHead())}}};k&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var q=0;q<m;q++)p(f[q])}},queue:function(){function b(){var a;(a=e[0])&&this.load(a.scriptUrl,a.callback,CKEDITOR,0)}var e=[];return function(a,k){var h=this;e.push({scriptUrl:a, +callback:function(){k&&k.apply(this,arguments);e.shift();b.call(h)}});1==e.length&&b.call(this)}}()}}(),CKEDITOR.resourceManager=function(b,h){this.basePath=b;this.fileName=h;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}},CKEDITOR.resourceManager.prototype={add:function(b,h){if(this.registered[b])throw Error('[CKEDITOR.resourceManager.add] The resource name "'+b+'" is already registered.');var f=this.registered[b]=h||{};f.name=b;f.path=this.getPath(b);CKEDITOR.fire(b+ CKEDITOR.tools.capitalize(this.fileName)+"Ready",f);return this.get(b)},get:function(b){return this.registered[b]||null},getPath:function(b){var h=this.externals[b];return CKEDITOR.getUrl(h&&h.dir||this.basePath+b+"/")},getFilePath:function(b){var h=this.externals[b];return CKEDITOR.getUrl(this.getPath(b)+(h?h.file:this.fileName+".js"))},addExternal:function(b,h,f){f||(h=h.replace(/[^\/]+$/,function(a){f=a;return""}));f=f||this.fileName+".js";b=b.split(",");for(var e=0;e<b.length;e++)this.externals[b[e]]= -{dir:h,file:f}},load:function(b,h,f){CKEDITOR.tools.isArray(b)||(b=b?[b]:[]);for(var e=this.loaded,a=this.registered,m=[],k={},l={},c=0;c<b.length;c++){var d=b[c];if(d)if(e[d]||a[d])l[d]=this.get(d);else{var g=this.getFilePath(d);m.push(g);g in k||(k[g]=[]);k[g].push(d)}}CKEDITOR.scriptLoader.load(m,function(a,c){if(c.length)throw Error('[CKEDITOR.resourceManager.load] Resource name "'+k[c[0]].join(",")+'" was not found at "'+c[0]+'".');for(var d=0;d<a.length;d++)for(var b=k[a[d]],g=0;g<b.length;g++){var m= -b[g];l[m]=this.get(m);e[m]=1}h.call(f,l)},this)}},CKEDITOR.plugins=new CKEDITOR.resourceManager("plugins/","plugin"),CKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load,function(b){var h={};return function(f,e,a){var m={},k=function(f){b.call(this,f,function(c){CKEDITOR.tools.extend(m,c);var d=[],b;for(b in c){var f=c[b],l=f&&f.requires;if(!h[b]){if(f.icons)for(var w=f.icons.split(","),p=w.length;p--;)CKEDITOR.skin.addIcon(w[p],f.path+"icons/"+(CKEDITOR.env.hidpi&&f.hidpi?"hidpi/": -"")+w[p]+".png");f.isSupportedEnvironment=f.isSupportedEnvironment||function(){return!0};h[b]=1}if(l)for(l.split&&(l=l.split(",")),f=0;f<l.length;f++)m[l[f]]||d.push(l[f])}if(d.length)k.call(this,d);else{for(b in m)f=m[b],f.onLoad&&!f.onLoad._called&&(!1===f.onLoad()&&delete m[b],f.onLoad._called=1);e&&e.call(a||window,m)}},this)};k.call(this,f)}}),CKEDITOR.plugins.setLang=function(b,h,f){var e=this.get(b);b=e.langEntries||(e.langEntries={});e=e.lang||(e.lang=[]);e.split&&(e=e.split(","));-1==CKEDITOR.tools.indexOf(e, +{dir:h,file:f}},load:function(b,h,f){CKEDITOR.tools.isArray(b)||(b=b?[b]:[]);for(var e=this.loaded,a=this.registered,k=[],l={},m={},c=0;c<b.length;c++){var d=b[c];if(d)if(e[d]||a[d])m[d]=this.get(d);else{var g=this.getFilePath(d);k.push(g);g in l||(l[g]=[]);l[g].push(d)}}CKEDITOR.scriptLoader.load(k,function(a,c){if(c.length)throw Error('[CKEDITOR.resourceManager.load] Resource name "'+l[c[0]].join(",")+'" was not found at "'+c[0]+'".');for(var d=0;d<a.length;d++)for(var g=l[a[d]],b=0;b<g.length;b++){var k= +g[b];m[k]=this.get(k);e[k]=1}h.call(f,m)},this)}},CKEDITOR.plugins=new CKEDITOR.resourceManager("plugins/","plugin"),CKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load,function(b){var h={};return function(f,e,a){var k={},l=function(f){b.call(this,f,function(c){CKEDITOR.tools.extend(k,c);var d=[],g;for(g in c){var b=c[g],f=b&&b.requires;if(!h[g]){if(b.icons)for(var m=b.icons.split(","),p=m.length;p--;)CKEDITOR.skin.addIcon(m[p],b.path+"icons/"+(CKEDITOR.env.hidpi&&b.hidpi?"hidpi/": +"")+m[p]+".png");b.isSupportedEnvironment=b.isSupportedEnvironment||function(){return!0};h[g]=1}if(f)for(f.split&&(f=f.split(",")),b=0;b<f.length;b++)k[f[b]]||d.push(f[b])}if(d.length)l.call(this,d);else{for(g in k)b=k[g],b.onLoad&&!b.onLoad._called&&(!1===b.onLoad()&&delete k[g],b.onLoad._called=1);e&&e.call(a||window,k)}},this)};l.call(this,f)}}),CKEDITOR.plugins.setLang=function(b,h,f){var e=this.get(b);b=e.langEntries||(e.langEntries={});e=e.lang||(e.lang=[]);e.split&&(e=e.split(","));-1==CKEDITOR.tools.indexOf(e, h)&&e.push(h);b[h]=f},CKEDITOR.ui=function(b){if(b.ui)return b.ui;this.items={};this.instances={};this.editor=b;this._={handlers:{}};return this},CKEDITOR.ui.prototype={add:function(b,h,f){f.name=b.toLowerCase();var e=this.items[b]={type:h,command:f.command||null,args:Array.prototype.slice.call(arguments,2)};CKEDITOR.tools.extend(e,f)},get:function(b){return this.instances[b]},create:function(b){var h=this.items[b],f=h&&this._.handlers[h.type],e=h&&h.command&&this.editor.getCommand(h.command),f=f&& f.create.apply(this,h.args);this.instances[b]=f;e&&e.uiItems.push(f);f&&!f.type&&(f.type=h.type);return f},addHandler:function(b,h){this._.handlers[b]=h},space:function(b){return CKEDITOR.document.getById(this.spaceId(b))},spaceId:function(b){return this.editor.id+"_"+b}},CKEDITOR.event.implementOn(CKEDITOR.ui),function(){function b(a,c,d){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a);if(void 0!==c){if(!(c instanceof CKEDITOR.dom.element))throw Error("Expect element of type CKEDITOR.dom.element."); if(!d)throw Error("One of the element modes must be specified.");if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&d==CKEDITOR.ELEMENT_MODE_INLINE)throw Error("Inline element mode is not supported on IE quirks.");if(!f(c,d))throw Error('The specified element mode is not supported on element: "'+c.getName()+'".');this.element=c;this.elementMode=d;this.name=this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO&&(c.getId()||c.getNameAtt())}else this.elementMode=CKEDITOR.ELEMENT_MODE_NONE;this._={};this.commands={}; -this.templates={};this.name=this.name||h();this.id=CKEDITOR.tools.getNextId();this.status="unloaded";this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this);this.focusManager=new CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this);this.on("readOnly",e);this.on("selectionChange",function(a){m(this,a.data.path)});this.on("activeFilterChange",function(){m(this,this.elementPath(),!0)});this.on("mode",e);CKEDITOR.dom.selection.setupEditorOptimization(this); -this.on("instanceReady",function(){if(this.config.startupFocus){if("end"===this.config.startupFocus){var a=this.createRange();a.selectNodeContents(this.editable());a.shrink(CKEDITOR.SHRINK_ELEMENT,!0);a.collapse();this.getSelection().selectRanges([a])}this.focus()}});CKEDITOR.fire("instanceCreated",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){this.isDestroyed()||this.isDetached()||l(this,a)},0,this)}function h(){do var a="editor"+ ++p;while(CKEDITOR.instances[a]);return a}function f(a, -c){return c==CKEDITOR.ELEMENT_MODE_INLINE?a.is(CKEDITOR.dtd.$editable)||a.is("textarea"):c==CKEDITOR.ELEMENT_MODE_REPLACE?!a.is(CKEDITOR.dtd.$nonBodyContent):1}function e(){var c=this.commands,d;for(d in c)a(this,c[d])}function a(a,c){c[c.startDisabled?"disable":a.readOnly&&!c.readOnly?"disable":c.modes[a.mode]?"enable":"disable"]()}function m(a,c,d){if(c){var b,g,e=a.commands;for(g in e)b=e[g],(d||b.contextSensitive)&&b.refresh(a,c)}}function k(a){var c=a.config.customConfig;if(!c)return!1;var c= -CKEDITOR.getUrl(c),d=t[c]||(t[c]={});d.fn?(d.fn.call(a,a.config),CKEDITOR.getUrl(a.config.customConfig)!=c&&k(a)||a.fireOnce("customConfigLoaded")):CKEDITOR.scriptLoader.queue(c,function(){d.fn=d.fn||CKEDITOR.editorConfig||function(){};k(a)});return!0}function l(a,d){a.on("customConfigLoaded",function(){if(d){if(d.on)for(var b in d.on)a.on(b,d.on[b]);CKEDITOR.tools.extend(a.config,d,!0);delete a.config.on}b=a.config;a.readOnly=b.readOnly?!0:a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.is("textarea")? -a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):a.element.isReadOnly():a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):!1;a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?!(a.element.is("textarea")||CKEDITOR.dtd[a.element.getName()].p):!1;a.tabIndex=b.tabIndex||a.element&&a.element.getAttribute("tabindex")||0;a.activeEnterMode=a.enterMode=a.blockless?CKEDITOR.ENTER_BR:b.enterMode;a.activeShiftEnterMode= -a.shiftEnterMode=a.blockless?CKEDITOR.ENTER_BR:b.shiftEnterMode;b.skin&&(CKEDITOR.skinName=b.skin);a.fireOnce("configLoaded");a.dataProcessor=new CKEDITOR.htmlDataProcessor(a);a.filter=a.activeFilter=new CKEDITOR.filter(a);c(a)});d&&null!=d.customConfig&&(a.config.customConfig=d.customConfig);k(a)||a.fireOnce("customConfigLoaded")}function c(a){CKEDITOR.skin.loadPart("editor",function(){d(a)})}function d(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(c,d){var b=a.config.title; +this.templates={};this.name=this.name||h();this.id=CKEDITOR.tools.getNextId();this.status="unloaded";this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this);this.focusManager=new CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this);this.on("readOnly",e);this.on("selectionChange",function(a){k(this,a.data.path)});this.on("activeFilterChange",function(){k(this,this.elementPath(),!0)});this.on("mode",e);CKEDITOR.dom.selection.setupEditorOptimization(this); +this.on("instanceReady",function(){if(this.config.startupFocus){if("end"===this.config.startupFocus){var a=this.createRange();a.selectNodeContents(this.editable());a.shrink(CKEDITOR.SHRINK_ELEMENT,!0);a.collapse();this.getSelection().selectRanges([a])}this.focus()}});CKEDITOR.fire("instanceCreated",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){this.isDestroyed()||this.isDetached()||m(this,a)},0,this)}function h(){do var a="editor"+ ++p;while(CKEDITOR.instances[a]);return a}function f(a, +c){return c==CKEDITOR.ELEMENT_MODE_INLINE?a.is(CKEDITOR.dtd.$editable)||a.is("textarea"):c==CKEDITOR.ELEMENT_MODE_REPLACE?!a.is(CKEDITOR.dtd.$nonBodyContent):1}function e(){var c=this.commands,d;for(d in c)a(this,c[d])}function a(a,c){c[c.startDisabled?"disable":a.readOnly&&!c.readOnly?"disable":c.modes[a.mode]?"enable":"disable"]()}function k(a,c,d){if(c){var g,b,e=a.commands;for(b in e)g=e[b],(d||g.contextSensitive)&&g.refresh(a,c)}}function l(a){var c=a.config.customConfig;if(!c)return!1;var c= +CKEDITOR.getUrl(c),d=q[c]||(q[c]={});d.fn?(d.fn.call(a,a.config),CKEDITOR.getUrl(a.config.customConfig)!=c&&l(a)||a.fireOnce("customConfigLoaded")):CKEDITOR.scriptLoader.queue(c,function(){d.fn=d.fn||CKEDITOR.editorConfig||function(){};l(a)});return!0}function m(a,d){a.on("customConfigLoaded",function(){if(d){if(d.on)for(var g in d.on)a.on(g,d.on[g]);CKEDITOR.tools.extend(a.config,d,!0);delete a.config.on}g=a.config;a.readOnly=g.readOnly?!0:a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.is("textarea")? +a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):a.element.isReadOnly():a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.element.hasAttribute("disabled")||a.element.hasAttribute("readonly"):!1;a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?!(a.element.is("textarea")||CKEDITOR.dtd[a.element.getName()].p):!1;a.tabIndex=g.tabIndex||a.element&&a.element.getAttribute("tabindex")||0;a.activeEnterMode=a.enterMode=a.blockless?CKEDITOR.ENTER_BR:g.enterMode;a.activeShiftEnterMode= +a.shiftEnterMode=a.blockless?CKEDITOR.ENTER_BR:g.shiftEnterMode;g.skin&&(CKEDITOR.skinName=g.skin);a.fireOnce("configLoaded");a.dataProcessor=new CKEDITOR.htmlDataProcessor(a);a.filter=a.activeFilter=new CKEDITOR.filter(a);c(a)});d&&null!=d.customConfig&&(a.config.customConfig=d.customConfig);l(a)||a.fireOnce("customConfigLoaded")}function c(a){CKEDITOR.skin.loadPart("editor",function(){d(a)})}function d(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(c,d){var b=a.config.title; a.langCode=c;a.lang=CKEDITOR.tools.prototypedCopy(d);a.title="string"==typeof b||!1===b?b:[a.lang.editor,a.name].join(", ");a.config.contentsLangDirection||(a.config.contentsLangDirection=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.getDirection(1):a.lang.dir);a.fire("langLoaded");g(a)})}function g(a){a.getStylesSet(function(c){a.once("loaded",function(){a.fire("stylesSet",{styles:c})},null,null,1);n(a)})}function n(a){function c(a){if(!a)return"";CKEDITOR.tools.isArray(a)&&(a=a.join(",")); -return a.replace(/\s/g,"")}var d=a.config,b=c(d.plugins),g=c(d.extraPlugins),e=c(d.removePlugins);if(g)var f=new RegExp("(?:^|,)(?:"+g.replace(/,/g,"|")+")(?\x3d,|$)","g"),b=b.replace(f,""),b=b+(","+g);if(e)var h=new RegExp("(?:^|,)(?:"+e.replace(/,/g,"|")+")(?\x3d,|$)","g"),b=b.replace(h,"");CKEDITOR.env.air&&(b+=",adobeair");CKEDITOR.plugins.load(b.split(","),function(c){var b=[],g=[],e=[];a.plugins=CKEDITOR.tools.extend({},a.plugins,c);for(var f in c){var m=c[f],n=m.lang,k=null,l=m.requires,v; -CKEDITOR.tools.isArray(l)&&(l=l.join(","));if(l&&(v=l.match(h)))for(;l=v.pop();)CKEDITOR.error("editor-plugin-required",{plugin:l.replace(",",""),requiredBy:f});n&&!a.lang[f]&&(n.split&&(n=n.split(",")),0<=CKEDITOR.tools.indexOf(n,a.langCode)?k=a.langCode:(k=a.langCode.replace(/-.*/,""),k=k!=a.langCode&&0<=CKEDITOR.tools.indexOf(n,k)?k:0<=CKEDITOR.tools.indexOf(n,"en")?"en":n[0]),m.langEntries&&m.langEntries[k]?(a.lang[f]=m.langEntries[k],k=null):e.push(CKEDITOR.getUrl(m.path+"lang/"+k+".js")));g.push(k); -b.push(m)}CKEDITOR.scriptLoader.load(e,function(){if(!a.isDestroyed()&&!a.isDetached()){for(var c=["beforeInit","init","afterInit"],e=0;e<c.length;e++)for(var f=0;f<b.length;f++){var h=b[f];0===e&&g[f]&&h.lang&&h.langEntries&&(a.lang[h.name]=h.langEntries[g[f]]);if(h[c[e]])h[c[e]](a)}a.fireOnce("pluginsLoaded");d.keystrokes&&a.setKeystroke(a.config.keystrokes);for(f=0;f<a.config.blockedKeystrokes.length;f++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[f]]=1;a.status="loaded";a.fireOnce("loaded"); -CKEDITOR.fire("instanceLoaded",null,a)}})})}function y(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var c=this.getData();this.config.htmlEncodeOutput&&(c=CKEDITOR.tools.htmlEncode(c));a.is("textarea")?a.setValue(c):a.setHtml(c);return!0}return!1}function w(a,c){function d(a){var c=a.startContainer,b=a.endContainer;return c.is&&(c.is("tr")||c.is("td")&&c.equals(b)&&a.endOffset===c.getChildCount())?!0:!1}function b(a){var c=a.startContainer;return c.is("tr")?a.cloneContents(): -c.clone(!0)}for(var g=new CKEDITOR.dom.documentFragment,e,f,h,m=0;m<a.length;m++){var n=a[m],k=n.startContainer.getAscendant("tr",!0);d(n)?(e||(e=k.getAscendant("table").clone(),e.append(k.getAscendant({thead:1,tbody:1,tfoot:1}).clone()),g.append(e),e=e.findOne("thead, tbody, tfoot")),f&&f.equals(k)||(f=k,h=k.clone(),e.append(h)),h.append(b(n))):g.append(n.cloneContents())}return e?g:c.getHtmlFromRange(a[0])}b.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=b;var p=0,t={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype, -{plugins:{detectConflict:function(a,c){for(var d=0;d<c.length;d++){var b=c[d];if(this[b])return CKEDITOR.warn("editor-plugin-conflict",{plugin:a,replacedWith:b}),!0}return!1}},addCommand:function(c,d){d.name=c.toLowerCase();var b=d instanceof CKEDITOR.command?d:new CKEDITOR.command(this,d);this.mode&&a(this,b);return this.commands[c]=b},_attachToForm:function(){function a(c){d.updateElement();d._.required&&!b.getValue()&&!1===d.fire("required")&&c.data.preventDefault()}function c(a){return!!(a&&a.call&& -a.apply)}var d=this,b=d.element,g=new CKEDITOR.dom.element(b.$.form);b.is("textarea")&&g&&(g.on("submit",a),c(g.$.submit)&&(g.$.submit=CKEDITOR.tools.override(g.$.submit,function(c){return function(){a();c.apply?c.apply(this):c()}})),d.on("destroy",function(){g.removeListener("submit",a)}))},destroy:function(a){var c=CKEDITOR.filter.instances,d=this;this.fire("beforeDestroy");!a&&y.call(this);this.editable(null);this.filter&&delete this.filter;CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(c), +return a.replace(/\s/g,"")}var d=a.config,g=c(d.plugins),b=c(d.extraPlugins),e=c(d.removePlugins);if(b)var f=new RegExp("(?:^|,)(?:"+b.replace(/,/g,"|")+")(?\x3d,|$)","g"),g=g.replace(f,""),g=g+(","+b);if(e)var k=new RegExp("(?:^|,)(?:"+e.replace(/,/g,"|")+")(?\x3d,|$)","g"),g=g.replace(k,"");CKEDITOR.env.air&&(g+=",adobeair");CKEDITOR.plugins.load(g.split(","),function(c){var g=[],b=[],e=[];a.plugins=CKEDITOR.tools.extend({},a.plugins,c);for(var f in c){var h=c[f],n=h.lang,l=null,w=h.requires,m; +CKEDITOR.tools.isArray(w)&&(w=w.join(","));if(w&&(m=w.match(k)))for(;w=m.pop();)CKEDITOR.error("editor-plugin-required",{plugin:w.replace(",",""),requiredBy:f});n&&!a.lang[f]&&(n.split&&(n=n.split(",")),0<=CKEDITOR.tools.indexOf(n,a.langCode)?l=a.langCode:(l=a.langCode.replace(/-.*/,""),l=l!=a.langCode&&0<=CKEDITOR.tools.indexOf(n,l)?l:0<=CKEDITOR.tools.indexOf(n,"en")?"en":n[0]),h.langEntries&&h.langEntries[l]?(a.lang[f]=h.langEntries[l],l=null):e.push(CKEDITOR.getUrl(h.path+"lang/"+l+".js")));b.push(l); +g.push(h)}CKEDITOR.scriptLoader.load(e,function(){if(!a.isDestroyed()&&!a.isDetached()){for(var c=["beforeInit","init","afterInit"],e=0;e<c.length;e++)for(var f=0;f<g.length;f++){var k=g[f];0===e&&b[f]&&k.lang&&k.langEntries&&(a.lang[k.name]=k.langEntries[b[f]]);if(k[c[e]])k[c[e]](a)}a.fireOnce("pluginsLoaded");d.keystrokes&&a.setKeystroke(a.config.keystrokes);for(f=0;f<a.config.blockedKeystrokes.length;f++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[f]]=1;a.status="loaded";a.fireOnce("loaded"); +CKEDITOR.fire("instanceLoaded",null,a)}})})}function y(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var c=this.getData();this.config.htmlEncodeOutput&&(c=CKEDITOR.tools.htmlEncode(c));a.is("textarea")?a.setValue(c):a.setHtml(c);return!0}return!1}function v(a,c){function d(a){var c=a.startContainer,g=a.endContainer;return c.is&&(c.is("tr")||c.is("td")&&c.equals(g)&&a.endOffset===c.getChildCount())?!0:!1}function g(a){var c=a.startContainer;return c.is("tr")?a.cloneContents(): +c.clone(!0)}for(var b=new CKEDITOR.dom.documentFragment,e,f,k,h=0;h<a.length;h++){var n=a[h],l=n.startContainer.getAscendant("tr",!0);d(n)?(e||(e=l.getAscendant("table").clone(),e.append(l.getAscendant({thead:1,tbody:1,tfoot:1}).clone()),b.append(e),e=e.findOne("thead, tbody, tfoot")),f&&f.equals(l)||(f=l,k=l.clone(),e.append(k)),k.append(g(n))):b.append(n.cloneContents())}return e?b:c.getHtmlFromRange(a[0])}b.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=b;var p=0,q={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype, +{plugins:{detectConflict:function(a,c){for(var d=0;d<c.length;d++){var g=c[d];if(this[g])return CKEDITOR.warn("editor-plugin-conflict",{plugin:a,replacedWith:g}),!0}return!1}},addCommand:function(c,d){d.name=c.toLowerCase();var g=d instanceof CKEDITOR.command?d:new CKEDITOR.command(this,d);this.mode&&a(this,g);return this.commands[c]=g},_attachToForm:function(){function a(c){d.updateElement();d._.required&&!g.getValue()&&!1===d.fire("required")&&c.data.preventDefault()}function c(a){return!!(a&&a.call&& +a.apply)}var d=this,g=d.element,b=new CKEDITOR.dom.element(g.$.form);g.is("textarea")&&b&&(b.on("submit",a),c(b.$.submit)&&(b.$.submit=CKEDITOR.tools.override(b.$.submit,function(c){return function(){a();c.apply?c.apply(this):c()}})),d.on("destroy",function(){b.removeListener("submit",a)}))},destroy:function(a){var c=CKEDITOR.filter.instances,d=this;this.fire("beforeDestroy");!a&&y.call(this);this.editable(null);this.filter&&delete this.filter;CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(c), function(a){a=c[a];d===a.editor&&a.destroy()});delete this.activeFilter;this.status="destroyed";this.fire("destroy");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire("instanceDestroyed",null,this)},elementPath:function(a){if(!a){a=this.getSelection();if(!a)return null;a=a.getStartElement()}return a?new CKEDITOR.dom.elementPath(a,this.editable()):null},createRange:function(){var a=this.editable();return a?new CKEDITOR.dom.range(a):null},execCommand:function(a,c){var d=this.getCommand(a), -b={name:a,commandData:c||{},command:d};return d&&d.state!=CKEDITOR.TRISTATE_DISABLED&&!1!==this.fire("beforeCommandExec",b)&&(b.returnValue=d.exec(b.commandData),!d.async&&!1!==this.fire("afterCommandExec",b))?b.returnValue:!1},getCommand:function(a){return this.commands[a]},getData:function(a){!a&&this.fire("beforeGetData");var c=this._.data;"string"!=typeof c&&(c=(c=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?c.is("textarea")?c.getValue():c.getHtml():"");c={dataValue:c};!a&&this.fire("getData", -c);return c.dataValue},getSnapshot:function(){var a=this.fire("getSnapshot");"string"!=typeof a&&(a=(a=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.is("textarea")?a.getValue():a.getHtml():"");return a},loadSnapshot:function(a){this.fire("loadSnapshot",a)},setData:function(a,c,d){var b=!0,g=c;c&&"object"==typeof c&&(d=c.internal,g=c.callback,b=!c.noSnapshot);!d&&b&&this.fire("saveSnapshot");if(g||!d)this.once("dataReady",function(a){!d&&b&&this.fire("saveSnapshot");g&&g.call(a.editor)}); +g={name:a,commandData:c||{},command:d};return d&&d.state!=CKEDITOR.TRISTATE_DISABLED&&!1!==this.fire("beforeCommandExec",g)&&(g.returnValue=d.exec(g.commandData),!d.async&&!1!==this.fire("afterCommandExec",g))?g.returnValue:!1},getCommand:function(a){return this.commands[a]},getData:function(a){!a&&this.fire("beforeGetData");var c=this._.data;"string"!=typeof c&&(c=(c=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?c.is("textarea")?c.getValue():c.getHtml():"");c={dataValue:c};!a&&this.fire("getData", +c);return c.dataValue},getSnapshot:function(){var a=this.fire("getSnapshot");"string"!=typeof a&&(a=(a=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?a.is("textarea")?a.getValue():a.getHtml():"");return a},loadSnapshot:function(a){this.fire("loadSnapshot",a)},setData:function(a,c,d){var g=!0,b=c;c&&"object"==typeof c&&(d=c.internal,b=c.callback,g=!c.noSnapshot);!d&&g&&this.fire("saveSnapshot");if(b||!d)this.once("dataReady",function(a){!d&&g&&this.fire("saveSnapshot");b&&b.call(a.editor)}); a={dataValue:a};!d&&this.fire("setData",a);this._.data=a.dataValue;!d&&this.fire("afterSetData",a)},setReadOnly:function(a){a=null==a||a;this.readOnly!=a&&(this.readOnly=a,this.keystrokeHandler.blockedKeystrokes[8]=+a,this.editable().setReadOnly(a),this.fire("readOnly"))},insertHtml:function(a,c,d){this.fire("insertHtml",{dataValue:a,mode:c,range:d})},insertText:function(a){this.fire("insertText",a)},insertElement:function(a){this.fire("insertElement",a)},getSelectedHtml:function(a){var c=this.editable(), -d=this.getSelection(),d=d&&d.getRanges();if(!c||!d||0===d.length)return null;c=w(d,c);return a?c.getHtml():c},extractSelectedHtml:function(a,c){var d=this.editable(),b=this.getSelection().getRanges(),g=new CKEDITOR.dom.documentFragment,e;if(!d||0===b.length)return null;for(e=0;e<b.length;e++)g.append(d.extractHtmlFromRange(b[e],c));c||this.getSelection().selectRanges([b[0]]);return a?g.getHtml():g},focus:function(){this.fire("beforeFocus")},checkDirty:function(){return"ready"==this.status&&this._.previousValue!== -this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return y.call(this)},setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,c=CKEDITOR.tools.isArray(arguments[0])?arguments[0]:[[].slice.call(arguments,0)],d,b,g=c.length;g--;)d=c[g],b=0,CKEDITOR.tools.isArray(d)&&(b=d[1],d=d[0]),b?a[d]=b:delete a[d]},getCommandKeystroke:function(a,c){var d="string"===typeof a?this.getCommand(a):a,b=[];if(d){var g=CKEDITOR.tools.object.findKey(this.commands, -d),e=this.keystrokeHandler.keystrokes;if(d.fakeKeystroke)b.push(d.fakeKeystroke);else for(var f in e)e[f]===g&&b.push(f)}return c?b:b[0]||null},addFeature:function(a){return this.filter.addFeature(a)},setActiveFilter:function(a){a||(a=this.filter);this.activeFilter!==a&&(this.activeFilter=a,this.fire("activeFilterChange"),a===this.filter?this.setActiveEnterMode(null,null):this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode),a.getAllowedEnterMode(this.shiftEnterMode,!0)))},setActiveEnterMode:function(a, +d=this.getSelection(),d=d&&d.getRanges();if(!c||!d||0===d.length)return null;c=v(d,c);return a?c.getHtml():c},extractSelectedHtml:function(a,c){var d=this.editable(),g=this.getSelection().getRanges(),b=new CKEDITOR.dom.documentFragment,e;if(!d||0===g.length)return null;for(e=0;e<g.length;e++)b.append(d.extractHtmlFromRange(g[e],c));c||this.getSelection().selectRanges([g[0]]);return a?b.getHtml():b},focus:function(){this.fire("beforeFocus")},checkDirty:function(){return"ready"==this.status&&this._.previousValue!== +this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return y.call(this)},setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,c=CKEDITOR.tools.isArray(arguments[0])?arguments[0]:[[].slice.call(arguments,0)],d,g,b=c.length;b--;)d=c[b],g=0,CKEDITOR.tools.isArray(d)&&(g=d[1],d=d[0]),g?a[d]=g:delete a[d]},getCommandKeystroke:function(a,c){var d="string"===typeof a?this.getCommand(a):a,g=[];if(d){var b=CKEDITOR.tools.object.findKey(this.commands, +d),e=this.keystrokeHandler.keystrokes;if(d.fakeKeystroke)g.push(d.fakeKeystroke);else for(var f in e)e[f]===b&&g.push(f)}return c?g:g[0]||null},addFeature:function(a){return this.filter.addFeature(a)},setActiveFilter:function(a){a||(a=this.filter);this.activeFilter!==a&&(this.activeFilter=a,this.fire("activeFilterChange"),a===this.filter?this.setActiveEnterMode(null,null):this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode),a.getAllowedEnterMode(this.shiftEnterMode,!0)))},setActiveEnterMode:function(a, c){a=a?this.blockless?CKEDITOR.ENTER_BR:a:this.enterMode;c=c?this.blockless?CKEDITOR.ENTER_BR:c:this.shiftEnterMode;if(this.activeEnterMode!=a||this.activeShiftEnterMode!=c)this.activeEnterMode=a,this.activeShiftEnterMode=c,this.fire("activeEnterModeChange")},showNotification:function(a){alert(a)},isDetached:function(){return!!this.container&&this.container.isDetached()},isDestroyed:function(){return"destroyed"===this.status}});CKEDITOR.editor._getEditorElement=function(a){if(!CKEDITOR.env.isCompatible)return null; -var c=CKEDITOR.dom.element.get(a);return c?c.getEditor()?(CKEDITOR.error("editor-element-conflict",{editorName:c.getEditor().name}),null):c:(CKEDITOR.error("editor-incorrect-element",{element:a}),null)}}(),CKEDITOR.ELEMENT_MODE_NONE=0,CKEDITOR.ELEMENT_MODE_REPLACE=1,CKEDITOR.ELEMENT_MODE_APPENDTO=2,CKEDITOR.ELEMENT_MODE_INLINE=3,CKEDITOR.htmlParser=function(){this._={htmlPartsRegex:/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--!?>)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g}}, -function(){var b=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,h={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(f){for(var e,a,m=0,k;e=this._.htmlPartsRegex.exec(f);){a=e.index;if(a>m)if(m=f.substring(m,a),k)k.push(m);else this.onText(m); -m=this._.htmlPartsRegex.lastIndex;if(a=e[1])if(a=a.toLowerCase(),k&&CKEDITOR.dtd.$cdata[a]&&(this.onCDATA(k.join("")),k=null),!k){this.onTagClose(a);continue}if(k)k.push(e[0]);else if(a=e[3]){if(a=a.toLowerCase(),!/="/.test(a)){var l={},c,d=e[4];e=!!e[5];if(d)for(;c=b.exec(d);){var g=c[1].toLowerCase();c=c[2]||c[3]||c[4]||"";l[g]=!c&&h[g]?g:CKEDITOR.tools.htmlDecodeAttr(c)}this.onTagOpen(a,l,e);!k&&CKEDITOR.dtd.$cdata[a]&&(k=[])}}else if(a=e[2])this.onComment(a)}if(f.length>m)this.onText(f.substring(m, -f.length))}}}(),CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(b){this._.output.push("\x3c",b)},openTagClose:function(b,h){h?this._.output.push(" /\x3e"):this._.output.push("\x3e")},attribute:function(b,h){"string"==typeof h&&(h=CKEDITOR.tools.htmlEncodeAttr(h));this._.output.push(" ",b,'\x3d"',h,'"')},closeTag:function(b){this._.output.push("\x3c/",b,"\x3e")},text:function(b){this._.output.push(b)},comment:function(b){this._.output.push("\x3c!--", -b,"--\x3e")},write:function(b){this._.output.push(b)},reset:function(){this._.output=[];this._.indent=!1},getHtml:function(b){var h=this._.output.join("");b&&this.reset();return h}}}),"use strict",function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var b=this.parent.children,h=CKEDITOR.tools.indexOf(b,this),f=this.previous,e=this.next;f&&(f.next=e);e&&(e.previous=f);b.splice(h,1);this.parent=null},replaceWith:function(b){var h=this.parent.children, -f=CKEDITOR.tools.indexOf(h,this),e=b.previous=this.previous,a=b.next=this.next;e&&(e.next=b);a&&(a.previous=b);h[f]=b;b.parent=this.parent;this.parent=null},insertAfter:function(b){var h=b.parent.children,f=CKEDITOR.tools.indexOf(h,b),e=b.next;h.splice(f+1,0,this);this.next=b.next;this.previous=b;b.next=this;e&&(e.previous=this);this.parent=b.parent},insertBefore:function(b){var h=b.parent.children,f=CKEDITOR.tools.indexOf(h,b);h.splice(f,0,this);this.next=b;(this.previous=b.previous)&&(b.previous.next= -this);b.previous=this;this.parent=b.parent},getAscendant:function(b){var h="function"==typeof b?b:"string"==typeof b?function(e){return e.name==b}:function(e){return e.name in b},f=this.parent;for(;f&&f.type==CKEDITOR.NODE_ELEMENT;){if(h(f))return f;f=f.parent}return null},wrapWith:function(b){this.replaceWith(b);b.add(this);return b},getIndex:function(){return CKEDITOR.tools.indexOf(this.parent.children,this)},getFilterContext:function(b){return b||{}}}}(),"use strict",CKEDITOR.htmlParser.comment= -function(b){this.value=b;this._={isBlockLike:!1}},CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(b,h){var f=this.value;if(!(f=b.onComment(h,f,this)))return this.remove(),!1;if("string"!=typeof f)return this.replaceWith(f),!1;this.value=f;return!0},writeHtml:function(b,h){h&&this.filter(h);b.comment(this.value)}}),"use strict",function(){CKEDITOR.htmlParser.text=function(b){this.value=b;this._={isBlockLike:!1}};CKEDITOR.htmlParser.text.prototype= -CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(b,h){if(!(this.value=b.onText(h,this.value,this)))return this.remove(),!1},writeHtml:function(b,h){h&&this.filter(h);b.text(this.value)}})}(),"use strict",function(){CKEDITOR.htmlParser.cdata=function(b){this.value=b};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(b){b.write(this.value)}})}(),"use strict", -CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:!0,hasInlineStarted:!1}},function(){function b(a){return a.attributes["data-cke-survive"]?!1:"a"==a.name&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var h=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),f={ol:1,ul:1},e=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1}),a={ul:"li", -ol:"li",dl:"dd",table:"tbody",tbody:"tr",thead:"tr",tfoot:"tr",tr:"td"};CKEDITOR.htmlParser.fragment.fromHtml=function(m,k,l){function c(a){var c;if(0<r.length)for(var b=0;b<r.length;b++){var g=r[b],e=g.name,f=CKEDITOR.dtd[e],h=u.name&&CKEDITOR.dtd[u.name];h&&!h[e]||a&&f&&!f[a]&&CKEDITOR.dtd[a]?e==u.name&&(n(u,u.parent,1),b--):(c||(d(),c=1),g=g.clone(),g.parent=u,u=g,r.splice(b,1),b--)}}function d(){for(;x.length;)n(x.shift(),u)}function g(a){if(a._.isBlockLike&&"pre"!=a.name&&"textarea"!=a.name){var c= -a.children.length,d=a.children[c-1],b;d&&d.type==CKEDITOR.NODE_TEXT&&((b=CKEDITOR.tools.rtrim(d.value))?d.value=b:a.children.length=c-1)}}function n(a,c,d){c=c||u||t;var e=u;void 0===a.previous&&(y(c,a)&&(u=c,p.onTagOpen(l,{}),a.returnPoint=c=u),g(a),b(a)&&!a.children.length||c.add(a),"pre"==a.name&&(q=!1),"textarea"==a.name&&(z=!1));a.returnPoint?(u=a.returnPoint,delete a.returnPoint):u=d?c:e}function y(a,c){if((a==t||"body"==a.name)&&l&&(!a.name||CKEDITOR.dtd[a.name][l])){var d,b;return(d=c.attributes&& -(b=c.attributes["data-cke-real-element-type"])?b:c.name)&&d in CKEDITOR.dtd.$inline&&!(d in CKEDITOR.dtd.head)&&!c.isOrphan||c.type==CKEDITOR.NODE_TEXT}}function w(a,c){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$tableContent?a==c||"dt"==a&&"dd"==c||"dd"==a&&"dt"==c:!1}var p=new CKEDITOR.htmlParser,t=k instanceof CKEDITOR.htmlParser.element?k:"string"==typeof k?new CKEDITOR.htmlParser.element(k):new CKEDITOR.htmlParser.fragment,r=[],x=[],u=t,z="textarea"==t.name,q="pre"==t.name;p.onTagOpen= -function(a,g,m,k){g=new CKEDITOR.htmlParser.element(a,g);g.isUnknown&&m&&(g.isEmpty=!0);g.isOptionalClose=k;if(b(g))r.push(g);else{if("pre"==a)q=!0;else{if("br"==a&&q){u.add(new CKEDITOR.htmlParser.text("\n"));return}"textarea"==a&&(z=!0)}if("br"==a)x.push(g);else{for(;!(k=(m=u.name)?CKEDITOR.dtd[m]||(u._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):e,g.isUnknown||u.isUnknown||k[a]);)if(u.isOptionalClose)p.onTagClose(m);else if(a in f&&m in f)m=u.children,(m=m[m.length-1])&&"li"==m.name||n(m=new CKEDITOR.htmlParser.element("li"), -u),!g.returnPoint&&(g.returnPoint=u),u=m;else if(a in CKEDITOR.dtd.$listItem&&!w(a,m))p.onTagOpen("li"==a?"ul":"dl",{},0,1);else if(m in h&&!w(a,m))!g.returnPoint&&(g.returnPoint=u),u=u.parent;else if(m in CKEDITOR.dtd.$inline&&r.unshift(u),u.parent)n(u,u.parent,1);else{g.isOrphan=1;break}c(a);d();g.parent=u;g.isEmpty?n(g):u=g}}};p.onTagClose=function(a){for(var c=r.length-1;0<=c;c--)if(a==r[c].name){r.splice(c,1);return}for(var b=[],g=[],e=u;e!=t&&e.name!=a;)e._.isBlockLike||g.unshift(e),b.push(e), -e=e.returnPoint||e.parent;if(e!=t){for(c=0;c<b.length;c++){var f=b[c];n(f,f.parent)}u=e;e._.isBlockLike&&d();n(e,e.parent);e==u&&(u=u.parent);r=r.concat(g)}"body"==a&&(l=!1)};p.onText=function(b){if(!(u._.hasInlineStarted&&!x.length||q||z)&&(b=CKEDITOR.tools.ltrim(b),0===b.length))return;var g=u.name,f=g?CKEDITOR.dtd[g]||(u._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):e;if(!z&&!f["#"]&&g in h)p.onTagOpen(a[g]||""),p.onText(b);else{d();c();q||z||(b=b.replace(/[\t\r\n ]{2,}|[\t\r\n]/g," "));b= -new CKEDITOR.htmlParser.text(b);if(y(u,b))this.onTagOpen(l,{},0,1);u.add(b)}};p.onCDATA=function(a){u.add(new CKEDITOR.htmlParser.cdata(a))};p.onComment=function(a){d();c();u.add(new CKEDITOR.htmlParser.comment(a))};p.parse(m);for(d();u!=t;)n(u,u.parent,1);g(t);return t};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var e=0<b?this.children[b-1]:null;if(e){if(a._.isBlockLike&&e.type==CKEDITOR.NODE_TEXT&&(e.value=CKEDITOR.tools.rtrim(e.value), -0===e.value.length)){this.children.pop();this.add(a);return}e.next=a}a.previous=e;a.parent=this;this.children.splice(b,0,a);this._.hasInlineStarted||(this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike)},filter:function(a,b){b=this.getFilterContext(b);a.onRoot(b,this);this.filterChildren(a,!1,b)},filterChildren:function(a,b,e){if(this.childrenFilteredBy!=a.id){e=this.getFilterContext(e);if(b&&!this.parent)a.onRoot(e,this);this.childrenFilteredBy=a.id; -for(b=0;b<this.children.length;b++)!1===this.children[b].filter(a,e)&&b--}},writeHtml:function(a,b){b&&this.filter(b);this.writeChildrenHtml(a)},writeChildrenHtml:function(a,b,e){var c=this.getFilterContext();if(e&&!this.parent&&b)b.onRoot(c,this);b&&this.filterChildren(b,!1,c);b=0;e=this.children;for(c=e.length;b<c;b++)e[b].writeHtml(a)},forEach:function(a,b,e){if(!(e||b&&this.type!=b))var c=a(this);if(!1!==c){e=this.children;for(var d=0;d<e.length;d++)c=e[d],c.type==CKEDITOR.NODE_ELEMENT?c.forEach(a, -b):b&&c.type!=b||a(c)}},getFilterContext:function(a){return a||{}}}}(),"use strict",function(){function b(){this.rules=[]}function h(f,e,a,h){var k,l;for(k in e)(l=f[k])||(l=f[k]=new b),l.add(e[k],a,h)}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(f){this.id=CKEDITOR.tools.getNextNumber();this.elementNameRules=new b;this.attributeNameRules=new b;this.elementsRules={};this.attributesRules={};this.textRules=new b;this.commentRules=new b;this.rootRules=new b;f&&this.addRules(f,10)}, -proto:{addRules:function(b,e){var a;"number"==typeof e?a=e:e&&"priority"in e&&(a=e.priority);"number"!=typeof a&&(a=10);"object"!=typeof e&&(e={});b.elementNames&&this.elementNameRules.addMany(b.elementNames,a,e);b.attributeNames&&this.attributeNameRules.addMany(b.attributeNames,a,e);b.elements&&h(this.elementsRules,b.elements,a,e);b.attributes&&h(this.attributesRules,b.attributes,a,e);b.text&&this.textRules.add(b.text,a,e);b.comment&&this.commentRules.add(b.comment,a,e);b.root&&this.rootRules.add(b.root, -a,e)},applyTo:function(b){b.filter(this)},onElementName:function(b,e){return this.elementNameRules.execOnName(b,e)},onAttributeName:function(b,e){return this.attributeNameRules.execOnName(b,e)},onText:function(b,e,a){return this.textRules.exec(b,e,a)},onComment:function(b,e,a){return this.commentRules.exec(b,e,a)},onRoot:function(b,e){return this.rootRules.exec(b,e)},onElement:function(b,e){for(var a=[this.elementsRules["^"],this.elementsRules[e.name],this.elementsRules.$],h,k=0;3>k;k++)if(h=a[k]){h= -h.exec(b,e,this);if(!1===h)return null;if(h&&h!=e)return this.onNode(b,h);if(e.parent&&!e.name)break}return e},onNode:function(b,e){var a=e.type;return a==CKEDITOR.NODE_ELEMENT?this.onElement(b,e):a==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(b,e.value,e)):a==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(b,e.value,e)):null},onAttribute:function(b,e,a,h){return(a=this.attributesRules[a])?a.exec(b,h,e,this):h}}});CKEDITOR.htmlParser.filterRulesGroup=b;b.prototype= -{add:function(b,e,a){this.rules.splice(this.findIndex(e),0,{value:b,priority:e,options:a})},addMany:function(b,e,a){for(var h=[this.findIndex(e),0],k=0,l=b.length;k<l;k++)h.push({value:b[k],priority:e,options:a});this.rules.splice.apply(this.rules,h)},findIndex:function(b){for(var e=this.rules,a=e.length-1;0<=a&&b<e[a].priority;)a--;return a+1},exec:function(b,e){var a=e instanceof CKEDITOR.htmlParser.node||e instanceof CKEDITOR.htmlParser.fragment,h=Array.prototype.slice.call(arguments,1),k=this.rules, -l=k.length,c,d,g,n;for(n=0;n<l;n++)if(a&&(c=e.type,d=e.name),g=k[n],!(b.nonEditable&&!g.options.applyToAll||b.nestedEditable&&g.options.excludeNestedEditable)){g=g.value.apply(null,h);if(!1===g||a&&g&&(g.name!=d||g.type!=c))return g;null!=g&&(h[0]=e=g)}return e},execOnName:function(b,e){for(var a=0,h=this.rules,k=h.length,l;e&&a<k;a++)l=h[a],b.nonEditable&&!l.options.applyToAll||b.nestedEditable&&l.options.excludeNestedEditable||(e=e.replace(l.value[0],l.value[1]));return e}}}(),function(){function b(c, -d){function b(a){return a||CKEDITOR.env.needsNbspFiller?new CKEDITOR.htmlParser.text(" "):new CKEDITOR.htmlParser.element("br",{"data-cke-bogus":1})}function g(a,c){return function(d){if(d.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var g=[],n=f(d),k,v;if(n)for(h(n,1)&&g.push(n);n;)m(n)&&(k=e(n))&&h(k)&&((v=e(k))&&!m(v)?g.push(k):(b(l).insertAfter(k),k.remove())),n=n.previous;for(n=0;n<g.length;n++)g[n].remove();if(g=!a||!1!==("function"==typeof c?c(d):c))l||CKEDITOR.env.needsBrFiller||d.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT? -l||CKEDITOR.env.needsBrFiller||!(7<document.documentMode||d.name in CKEDITOR.dtd.tr||d.name in CKEDITOR.dtd.$listItem)?(g=f(d),g=!g||"form"==d.name&&"input"==g.name):g=!1:g=!1;g&&d.add(b(a))}}}function h(a,c){if((!l||CKEDITOR.env.needsBrFiller)&&a.type==CKEDITOR.NODE_ELEMENT&&"br"==a.name&&!a.attributes["data-cke-eol"])return!0;var d;return a.type==CKEDITOR.NODE_TEXT&&(d=a.value.match(x))&&(d.index&&((new CKEDITOR.htmlParser.text(a.value.substring(0,d.index))).insertBefore(a),a.value=d[0]),!CKEDITOR.env.needsBrFiller&& -l&&(!c||a.parent.name in H)||!l&&((d=a.previous)&&"br"==d.name||!d||m(d)))?!0:!1}var n={elements:{}},l="html"==d,H=CKEDITOR.tools.extend({},v),r;for(r in H)"#"in z[r]||delete H[r];for(r in H)n.elements[r]=g(l,c.config.fillEmptyBlocks);n.root=g(l,!1);n.elements.br=function(c){return function(d){if(d.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var g=d.attributes;if("data-cke-bogus"in g||"data-cke-eol"in g)delete g["data-cke-bogus"];else{for(g=d.next;g&&a(g);)g=g.next;var f=e(d);!g&&m(d.parent)?k(d.parent, -b(c)):m(g)&&f&&!m(f)&&b(c).insertBefore(g)}}}}(l);return n}function h(a,c){return a!=CKEDITOR.ENTER_BR&&!1!==c?a==CKEDITOR.ENTER_DIV?"div":"p":!1}function f(c){for(c=c.children[c.children.length-1];c&&a(c);)c=c.previous;return c}function e(c){for(c=c.previous;c&&a(c);)c=c.previous;return c}function a(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&a.attributes["data-cke-bookmark"]}function m(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in -v||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function k(a,c){var d=a.children[a.children.length-1];a.children.push(c);c.parent=a;d&&(d.next=c,c.previous=d)}function l(a){a=a.attributes;"false"!=a.contenteditable&&(a["data-cke-editable"]=a.contenteditable?"true":1);a.contenteditable="false"}function c(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":a.contenteditable="true";break;case "1":delete a.contenteditable}}function d(a){return a.replace(F,function(a,c,d){return"\x3c"+c+d.replace(K, -function(a,c){return L.test(c)&&-1==d.indexOf("data-cke-saved-"+c)?" data-cke-saved-"+a+" data-cke-"+CKEDITOR.rnd+"-"+a:a})+"\x3e"})}function g(a,c){return a.replace(c,function(a,c,d){0===a.indexOf("\x3ctextarea")&&(a=c+w(d).replace(/</g,"\x26lt;").replace(/>/g,"\x26gt;")+"\x3c/textarea\x3e");return"\x3ccke:encoded\x3e"+encodeURIComponent(a)+"\x3c/cke:encoded\x3e"})}function n(a){return a.replace(I,function(a,c){return decodeURIComponent(c)})}function y(a){return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, -function(a){return"\x3c!--"+u+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\x3e"})}function w(a){return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g,function(a,c){return decodeURIComponent(c)})}function p(a,c){var d=c._.dataStore;return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g,function(a,c){return decodeURIComponent(c)}).replace(/\{cke_protected_(\d+)\}/g,function(a,c){return d&&d[c]||""})}function t(a,c){var d=[],b=c.config.protectedSource,g=c._.dataStore||(c._.dataStore= -{id:1}),e=/<\!--\{cke_temp(comment)?\}(\d*?)--\x3e/g,b=[/<script[\s\S]*?(<\/script>|$)/gi,/<noscript[\s\S]*?<\/noscript>/gi,/<meta[\s\S]*?\/?>/gi].concat(b);a=a.replace(/\x3c!--[\s\S]*?--\x3e/g,function(a){return"\x3c!--{cke_tempcomment}"+(d.push(a)-1)+"--\x3e"});for(var f=0;f<b.length;f++)a=a.replace(b[f],function(a){a=a.replace(e,function(a,c,b){return d[b]});return/cke_temp(comment)?/.test(a)?a:"\x3c!--{cke_temp}"+(d.push(a)-1)+"--\x3e"});a=a.replace(e,function(a,c,b){return"\x3c!--"+u+(c?"{C}": -"")+encodeURIComponent(d[b]).replace(/--/g,"%2D%2D")+"--\x3e"});a=a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g,function(a){return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g,function(a,c){g[g.id]=decodeURIComponent(c);return"{cke_protected_"+g.id++ +"}"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g,function(a,d,b,g){return"\x3c"+d+b+"\x3e"+p(w(g),c)+"\x3c/"+d+"\x3e"})}var r;CKEDITOR.htmlDataProcessor=function(a){var c, -e,f=this;this.editor=a;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=e=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(B);c.addRules(D,{applyToAll:!0});c.addRules(b(a,"data"),{applyToAll:!0});e.addRules(A);e.addRules(E,{applyToAll:!0});e.addRules(b(a,"html"),{applyToAll:!0});a.on("toHtml",function(c){c=c.data;var b=c.dataValue,e,b=r(b),b=t(b,a),b=g(b,O),b=d(b),b=g(b,C),b=b.replace(M,"$1cke:$2"),b=b.replace(H,"\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"), -b=b.replace(/(<pre\b[^>]*>)(\r\n|\n)/g,"$1$2$2"),b=b.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi,"$1data-cke-"+CKEDITOR.rnd+"-$2");e=c.context||a.editable().getName();var f;CKEDITOR.env.ie&&9>CKEDITOR.env.version&&"pre"==e&&(e="div",b="\x3cpre\x3e"+b+"\x3c/pre\x3e",f=1);e=a.document.createElement(e);e.setHtml("a"+b);b=e.getHtml().substr(1);b=b.replace(new RegExp("data-cke-"+CKEDITOR.rnd+"-","ig"),"");f&&(b=b.replace(/^<pre>|<\/pre>$/gi,""));b=b.replace(Q,"$1$2");b=n(b);b=w(b);e=!1===c.fixForBody?!1: +var c=CKEDITOR.dom.element.get(a);return c?c.getEditor()?(CKEDITOR.error("editor-element-conflict",{editorName:c.getEditor().name}),null):c:(CKEDITOR.error("editor-incorrect-element",{element:a}),null)};CKEDITOR.editor.initializeDelayedEditorCreation=function(a,c,d){if(c.delayIfDetached_callback)CKEDITOR.warn("editor-delayed-creation",{method:"callback"}),c.delayIfDetached_callback(function(){CKEDITOR[d](a,c);CKEDITOR.warn("editor-delayed-creation-success",{method:"callback"})});else{var g=void 0=== +c.delayIfDetached_interval?CKEDITOR.config.delayIfDetached_interval:c.delayIfDetached_interval,b;CKEDITOR.warn("editor-delayed-creation",{method:"interval - "+g+" ms"});b=setInterval(function(){a.isDetached()||(clearInterval(b),CKEDITOR[d](a,c),CKEDITOR.warn("editor-delayed-creation-success",{method:"interval - "+g+" ms"}))},g)}};CKEDITOR.editor.shouldDelayEditorCreation=function(a,c){CKEDITOR.editor.mergeDelayedCreationConfigs(c);return c&&c.delayIfDetached&&a.isDetached()};CKEDITOR.editor.mergeDelayedCreationConfigs= +function(a){a&&(a.delayIfDetached="boolean"===typeof a.delayIfDetached?a.delayIfDetached:CKEDITOR.config.delayIfDetached,a.delayIfDetached_interval=isNaN(a.delayIfDetached_interval)?CKEDITOR.config.delayIfDetached_interval:a.delayIfDetached_interval,a.delayIfDetached_callback=a.delayIfDetached_callback||CKEDITOR.config.delayIfDetached_callback)}}(),CKEDITOR.ELEMENT_MODE_NONE=0,CKEDITOR.ELEMENT_MODE_REPLACE=1,CKEDITOR.ELEMENT_MODE_APPENDTO=2,CKEDITOR.ELEMENT_MODE_INLINE=3,CKEDITOR.config.delayIfDetached= +!1,CKEDITOR.config.delayIfDetached_callback=void 0,CKEDITOR.config.delayIfDetached_interval=50,CKEDITOR.htmlParser=function(){this._={htmlPartsRegex:/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--!?>)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g}},function(){var b=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,h={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1, +readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(f){for(var e,a,k=0,l;e=this._.htmlPartsRegex.exec(f);){a=e.index;if(a>k)if(k=f.substring(k,a),l)l.push(k);else this.onText(k);k=this._.htmlPartsRegex.lastIndex;if(a=e[1])if(a=a.toLowerCase(),l&&CKEDITOR.dtd.$cdata[a]&&(this.onCDATA(l.join("")),l=null),!l){this.onTagClose(a);continue}if(l)l.push(e[0]);else if(a=e[3]){if(a= +a.toLowerCase(),!/="/.test(a)){var m={},c,d=e[4];e=!!e[5];if(d)for(;c=b.exec(d);){var g=c[1].toLowerCase();c=c[2]||c[3]||c[4]||"";m[g]=!c&&h[g]?g:CKEDITOR.tools.htmlDecodeAttr(c)}this.onTagOpen(a,m,e);!l&&CKEDITOR.dtd.$cdata[a]&&(l=[])}}else if(a=e[2])this.onComment(a)}if(f.length>k)this.onText(f.substring(k,f.length))}}}(),CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(b){this._.output.push("\x3c",b)},openTagClose:function(b,h){h? +this._.output.push(" /\x3e"):this._.output.push("\x3e")},attribute:function(b,h){"string"==typeof h&&(h=CKEDITOR.tools.htmlEncodeAttr(h));this._.output.push(" ",b,'\x3d"',h,'"')},closeTag:function(b){this._.output.push("\x3c/",b,"\x3e")},text:function(b){this._.output.push(b)},comment:function(b){this._.output.push("\x3c!--",b,"--\x3e")},write:function(b){this._.output.push(b)},reset:function(){this._.output=[];this._.indent=!1},getHtml:function(b){var h=this._.output.join("");b&&this.reset();return h}}}), +"use strict",function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var b=this.parent.children,h=CKEDITOR.tools.indexOf(b,this),f=this.previous,e=this.next;f&&(f.next=e);e&&(e.previous=f);b.splice(h,1);this.parent=null},replaceWith:function(b){var h=this.parent.children,f=CKEDITOR.tools.indexOf(h,this),e=b.previous=this.previous,a=b.next=this.next;e&&(e.next=b);a&&(a.previous=b);h[f]=b;b.parent=this.parent;this.parent=null},insertAfter:function(b){var h= +b.parent.children,f=CKEDITOR.tools.indexOf(h,b),e=b.next;h.splice(f+1,0,this);this.next=b.next;this.previous=b;b.next=this;e&&(e.previous=this);this.parent=b.parent},insertBefore:function(b){var h=b.parent.children,f=CKEDITOR.tools.indexOf(h,b);h.splice(f,0,this);this.next=b;(this.previous=b.previous)&&(b.previous.next=this);b.previous=this;this.parent=b.parent},getAscendant:function(b){var h="function"==typeof b?b:"string"==typeof b?function(e){return e.name==b}:function(e){return e.name in b},f= +this.parent;for(;f&&f.type==CKEDITOR.NODE_ELEMENT;){if(h(f))return f;f=f.parent}return null},wrapWith:function(b){this.replaceWith(b);b.add(this);return b},getIndex:function(){return CKEDITOR.tools.indexOf(this.parent.children,this)},getFilterContext:function(b){return b||{}}}}(),"use strict",CKEDITOR.htmlParser.comment=function(b){this.value=b;this._={isBlockLike:!1}},CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(b, +h){var f=this.value;if(!(f=b.onComment(h,f,this)))return this.remove(),!1;if("string"!=typeof f)return this.replaceWith(f),!1;this.value=f;return!0},writeHtml:function(b,h){h&&this.filter(h);b.comment(this.value)}}),"use strict",function(){CKEDITOR.htmlParser.text=function(b){this.value=b;this._={isBlockLike:!1}};CKEDITOR.htmlParser.text.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(b,h){if(!(this.value=b.onText(h,this.value,this)))return this.remove(), +!1},writeHtml:function(b,h){h&&this.filter(h);b.text(this.value)}})}(),"use strict",function(){CKEDITOR.htmlParser.cdata=function(b){this.value=b};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(b){var h=this.getAscendant("style");if(h&&h.getAscendant({math:1,svg:1})){var h=CKEDITOR.htmlParser.fragment.fromHtml(this.value),f=new CKEDITOR.htmlParser.basicWriter;b.applyTo(h);h.writeHtml(f);this.value=f.getHtml()}},writeHtml:function(b){b.write(this.value)}})}(), +"use strict",CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:!0,hasInlineStarted:!1}},function(){function b(a){return a.attributes["data-cke-survive"]?!1:"a"==a.name&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var h=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),f={ol:1,ul:1},e=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1}), +a={ul:"li",ol:"li",dl:"dd",table:"tbody",tbody:"tr",thead:"tr",tfoot:"tr",tr:"td"};CKEDITOR.htmlParser.fragment.fromHtml=function(k,l,m){function c(a){var c;if(0<r.length)for(var g=0;g<r.length;g++){var b=r[g],e=b.name,f=CKEDITOR.dtd[e],k=t.name&&CKEDITOR.dtd[t.name];k&&!k[e]||a&&f&&!f[a]&&CKEDITOR.dtd[a]?e==t.name&&(n(t,t.parent,1),g--):(c||(d(),c=1),b=b.clone(),b.parent=t,t=b,r.splice(g,1),g--)}}function d(){for(;x.length;)n(x.shift(),t)}function g(a){if(a._.isBlockLike&&"pre"!=a.name&&"textarea"!= +a.name){var c=a.children.length,d=a.children[c-1],g;d&&d.type==CKEDITOR.NODE_TEXT&&((g=CKEDITOR.tools.rtrim(d.value))?d.value=g:a.children.length=c-1)}}function n(a,c,d){c=c||t||q;var e=t;void 0===a.previous&&(y(c,a)&&(t=c,p.onTagOpen(m,{}),a.returnPoint=c=t),g(a),b(a)&&!a.children.length||c.add(a),"pre"==a.name&&(u=!1),"textarea"==a.name&&(z=!1));a.returnPoint?(t=a.returnPoint,delete a.returnPoint):t=d?c:e}function y(a,c){if((a==q||"body"==a.name)&&m&&(!a.name||CKEDITOR.dtd[a.name][m])){var d,g; +return(d=c.attributes&&(g=c.attributes["data-cke-real-element-type"])?g:c.name)&&d in CKEDITOR.dtd.$inline&&!(d in CKEDITOR.dtd.head)&&!c.isOrphan||c.type==CKEDITOR.NODE_TEXT}}function v(a,c){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$tableContent?a==c||"dt"==a&&"dd"==c||"dd"==a&&"dt"==c:!1}var p=new CKEDITOR.htmlParser,q=l instanceof CKEDITOR.htmlParser.element?l:"string"==typeof l?new CKEDITOR.htmlParser.element(l):new CKEDITOR.htmlParser.fragment,r=[],x=[],t=q,z="textarea"==q.name, +u="pre"==q.name;p.onTagOpen=function(a,g,k,l){g=new CKEDITOR.htmlParser.element(a,g);g.isUnknown&&k&&(g.isEmpty=!0);g.isOptionalClose=l;if(b(g))r.push(g);else{if("pre"==a)u=!0;else{if("br"==a&&u){t.add(new CKEDITOR.htmlParser.text("\n"));return}"textarea"==a&&(z=!0)}if("br"==a)x.push(g);else{for(;!(l=(k=t.name)?CKEDITOR.dtd[k]||(t._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):e,g.isUnknown||t.isUnknown||l[a]);)if(t.isOptionalClose)p.onTagClose(k);else if(a in f&&k in f)k=t.children,(k=k[k.length- +1])&&"li"==k.name||n(k=new CKEDITOR.htmlParser.element("li"),t),!g.returnPoint&&(g.returnPoint=t),t=k;else if(a in CKEDITOR.dtd.$listItem&&!v(a,k))p.onTagOpen("li"==a?"ul":"dl",{},0,1);else if(k in h&&!v(a,k))!g.returnPoint&&(g.returnPoint=t),t=t.parent;else if(k in CKEDITOR.dtd.$inline&&r.unshift(t),t.parent)n(t,t.parent,1);else{g.isOrphan=1;break}c(a);d();g.parent=t;g.isEmpty?n(g):t=g}}};p.onTagClose=function(a){for(var c=r.length-1;0<=c;c--)if(a==r[c].name){r.splice(c,1);return}for(var g=[],b= +[],e=t;e!=q&&e.name!=a;)e._.isBlockLike||b.unshift(e),g.push(e),e=e.returnPoint||e.parent;if(e!=q){for(c=0;c<g.length;c++){var f=g[c];n(f,f.parent)}t=e;e._.isBlockLike&&d();n(e,e.parent);e==t&&(t=t.parent);r=r.concat(b)}"body"==a&&(m=!1)};p.onText=function(g){if(!(t._.hasInlineStarted&&!x.length||u||z)&&(g=CKEDITOR.tools.ltrim(g),0===g.length))return;var b=t.name,f=b?CKEDITOR.dtd[b]||(t._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):e;if(!z&&!f["#"]&&b in h)p.onTagOpen(a[b]||""),p.onText(g);else{d(); +c();u||z||(g=g.replace(/[\t\r\n ]{2,}|[\t\r\n]/g," "));g=new CKEDITOR.htmlParser.text(g);if(y(t,g))this.onTagOpen(m,{},0,1);t.add(g)}};p.onCDATA=function(a){t.add(new CKEDITOR.htmlParser.cdata(a))};p.onComment=function(a){d();c();t.add(new CKEDITOR.htmlParser.comment(a))};p.parse(k);for(d();t!=q;)n(t,t.parent,1);g(q);return q};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var e=0<b?this.children[b-1]:null;if(e){if(a._.isBlockLike&& +e.type==CKEDITOR.NODE_TEXT&&(e.value=CKEDITOR.tools.rtrim(e.value),0===e.value.length)){this.children.pop();this.add(a);return}e.next=a}a.previous=e;a.parent=this;this.children.splice(b,0,a);this._.hasInlineStarted||(this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike)},filter:function(a,b){b=this.getFilterContext(b);a.onRoot(b,this);this.filterChildren(a,!1,b)},filterChildren:function(a,b,e){if(this.childrenFilteredBy!=a.id){e=this.getFilterContext(e); +if(b&&!this.parent)a.onRoot(e,this);this.childrenFilteredBy=a.id;for(b=0;b<this.children.length;b++)!1===this.children[b].filter(a,e)&&b--}},writeHtml:function(a,b){b&&this.filter(b);this.writeChildrenHtml(a)},writeChildrenHtml:function(a,b,e){var c=this.getFilterContext();if(e&&!this.parent&&b)b.onRoot(c,this);b&&this.filterChildren(b,!1,c);b=0;e=this.children;for(c=e.length;b<c;b++)e[b].writeHtml(a)},forEach:function(a,b,e){if(!(e||b&&this.type!=b))var c=a(this);if(!1!==c){e=this.children;for(var d= +0;d<e.length;d++)c=e[d],c.type==CKEDITOR.NODE_ELEMENT?c.forEach(a,b):b&&c.type!=b||a(c)}},getFilterContext:function(a){return a||{}}}}(),"use strict",function(){function b(){this.rules=[]}function h(f,e,a,k){var h,m;for(h in e)(m=f[h])||(m=f[h]=new b),m.add(e[h],a,k)}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(f){this.id=CKEDITOR.tools.getNextNumber();this.elementNameRules=new b;this.attributeNameRules=new b;this.elementsRules={};this.attributesRules={};this.textRules=new b; +this.commentRules=new b;this.rootRules=new b;f&&this.addRules(f,10)},proto:{addRules:function(b,e){var a;"number"==typeof e?a=e:e&&"priority"in e&&(a=e.priority);"number"!=typeof a&&(a=10);"object"!=typeof e&&(e={});b.elementNames&&this.elementNameRules.addMany(b.elementNames,a,e);b.attributeNames&&this.attributeNameRules.addMany(b.attributeNames,a,e);b.elements&&h(this.elementsRules,b.elements,a,e);b.attributes&&h(this.attributesRules,b.attributes,a,e);b.text&&this.textRules.add(b.text,a,e);b.comment&& +this.commentRules.add(b.comment,a,e);b.root&&this.rootRules.add(b.root,a,e)},applyTo:function(b){b.filter(this)},onElementName:function(b,e){return this.elementNameRules.execOnName(b,e)},onAttributeName:function(b,e){return this.attributeNameRules.execOnName(b,e)},onText:function(b,e,a){return this.textRules.exec(b,e,a)},onComment:function(b,e,a){return this.commentRules.exec(b,e,a)},onRoot:function(b,e){return this.rootRules.exec(b,e)},onElement:function(b,e){for(var a=[this.elementsRules["^"],this.elementsRules[e.name], +this.elementsRules.$],k,h=0;3>h;h++)if(k=a[h]){k=k.exec(b,e,this);if(!1===k)return null;if(k&&k!=e)return this.onNode(b,k);if(e.parent&&!e.name)break}return e},onNode:function(b,e){var a=e.type;return a==CKEDITOR.NODE_ELEMENT?this.onElement(b,e):a==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(b,e.value,e)):a==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(b,e.value,e)):null},onAttribute:function(b,e,a,k){return(a=this.attributesRules[a])?a.exec(b,k,e,this):k}}}); +CKEDITOR.htmlParser.filterRulesGroup=b;b.prototype={add:function(b,e,a){this.rules.splice(this.findIndex(e),0,{value:b,priority:e,options:a})},addMany:function(b,e,a){for(var k=[this.findIndex(e),0],h=0,m=b.length;h<m;h++)k.push({value:b[h],priority:e,options:a});this.rules.splice.apply(this.rules,k)},findIndex:function(b){for(var e=this.rules,a=e.length-1;0<=a&&b<e[a].priority;)a--;return a+1},exec:function(b,e){var a=e instanceof CKEDITOR.htmlParser.node||e instanceof CKEDITOR.htmlParser.fragment, +k=Array.prototype.slice.call(arguments,1),h=this.rules,m=h.length,c,d,g,n;for(n=0;n<m;n++)if(a&&(c=e.type,d=e.name),g=h[n],!(b.nonEditable&&!g.options.applyToAll||b.nestedEditable&&g.options.excludeNestedEditable)){g=g.value.apply(null,k);if(!1===g||a&&g&&(g.name!=d||g.type!=c))return g;null!=g&&(k[0]=e=g)}return e},execOnName:function(b,e){for(var a=0,k=this.rules,h=k.length,m;e&&a<h;a++)m=k[a],b.nonEditable&&!m.options.applyToAll||b.nestedEditable&&m.options.excludeNestedEditable||(e=e.replace(m.value[0], +m.value[1]));return e}}}(),function(){function b(c,d){function b(a){return a||CKEDITOR.env.needsNbspFiller?new CKEDITOR.htmlParser.text(" "):new CKEDITOR.htmlParser.element("br",{"data-cke-bogus":1})}function g(a,c){return function(d){if(d.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var g=[],n=f(d),l,w;if(n)for(h(n,1)&&g.push(n);n;)k(n)&&(l=e(n))&&h(l)&&((w=e(l))&&!k(w)?g.push(l):(b(m).insertAfter(l),l.remove())),n=n.previous;for(n=0;n<g.length;n++)g[n].remove();if(g=!a||!1!==("function"==typeof c?c(d): +c))m||CKEDITOR.env.needsBrFiller||d.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT?m||CKEDITOR.env.needsBrFiller||!(7<document.documentMode||d.name in CKEDITOR.dtd.tr||d.name in CKEDITOR.dtd.$listItem)?(g=f(d),g=!g||"form"==d.name&&"input"==g.name):g=!1:g=!1;g&&d.add(b(a))}}}function h(a,c){if((!m||CKEDITOR.env.needsBrFiller)&&a.type==CKEDITOR.NODE_ELEMENT&&"br"==a.name&&!a.attributes["data-cke-eol"])return!0;var d;return a.type==CKEDITOR.NODE_TEXT&&(d=a.value.match(x))&&(d.index&&((new CKEDITOR.htmlParser.text(a.value.substring(0, +d.index))).insertBefore(a),a.value=d[0]),!CKEDITOR.env.needsBrFiller&&m&&(!c||a.parent.name in H)||!m&&((d=a.previous)&&"br"==d.name||!d||k(d)))?!0:!1}var n={elements:{}},m="html"==d,H=CKEDITOR.tools.extend({},w),q;for(q in H)"#"in z[q]||delete H[q];for(q in H)n.elements[q]=g(m,c.config.fillEmptyBlocks);n.root=g(m,!1);n.elements.br=function(c){return function(d){if(d.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var g=d.attributes;if("data-cke-bogus"in g||"data-cke-eol"in g)delete g["data-cke-bogus"]; +else{for(g=d.next;g&&a(g);)g=g.next;var f=e(d);!g&&k(d.parent)?l(d.parent,b(c)):k(g)&&f&&!k(f)&&b(c).insertBefore(g)}}}}(m);return n}function h(a,c){return a!=CKEDITOR.ENTER_BR&&!1!==c?a==CKEDITOR.ENTER_DIV?"div":"p":!1}function f(c){for(c=c.children[c.children.length-1];c&&a(c);)c=c.previous;return c}function e(c){for(c=c.previous;c&&a(c);)c=c.previous;return c}function a(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&a.attributes["data-cke-bookmark"]} +function k(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in w||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function l(a,c){var d=a.children[a.children.length-1];a.children.push(c);c.parent=a;d&&(d.next=c,c.previous=d)}function m(a){a=a.attributes;"false"!=a.contenteditable&&(a["data-cke-editable"]=a.contenteditable?"true":1);a.contenteditable="false"}function c(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":a.contenteditable="true";break;case "1":delete a.contenteditable}}function d(a){return a.replace(F, +function(a,c,d){return"\x3c"+c+d.replace(K,function(a,c){return M.test(c)&&-1==d.indexOf("data-cke-saved-"+c)?" data-cke-saved-"+a+" data-cke-"+CKEDITOR.rnd+"-"+a:a})+"\x3e"})}function g(a,c){return a.replace(c,function(a,c,d){0===a.indexOf("\x3ctextarea")&&(a=c+v(d).replace(/</g,"\x26lt;").replace(/>/g,"\x26gt;")+"\x3c/textarea\x3e");return"\x3ccke:encoded\x3e"+encodeURIComponent(a)+"\x3c/cke:encoded\x3e"})}function n(a){return a.replace(I,function(a,c){return decodeURIComponent(c)})}function y(a){return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, +function(a){return"\x3c!--"+t+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\x3e"})}function v(a){return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g,function(a,c){return decodeURIComponent(c)})}function p(a,c){var d=c._.dataStore;return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g,function(a,c){return decodeURIComponent(c)}).replace(/\{cke_protected_(\d+)\}/g,function(a,c){return d&&d[c]||""})}function q(a,c){var d=[],g=c.config.protectedSource,b=c._.dataStore||(c._.dataStore= +{id:1}),e=/<\!--\{cke_temp(comment)?\}(\d*?)--\x3e/g,g=[/<script[\s\S]*?(<\/script>|$)/gi,/<noscript[\s\S]*?<\/noscript>/gi,/<meta[\s\S]*?\/?>/gi].concat(g);a=a.replace(/\x3c!--[\s\S]*?--\x3e/g,function(a){return"\x3c!--{cke_tempcomment}"+(d.push(a)-1)+"--\x3e"});for(var f=0;f<g.length;f++)a=a.replace(g[f],function(a){a=a.replace(e,function(a,c,g){return d[g]});return/cke_temp(comment)?/.test(a)?a:"\x3c!--{cke_temp}"+(d.push(a)-1)+"--\x3e"});a=a.replace(e,function(a,c,g){return"\x3c!--"+t+(c?"{C}": +"")+encodeURIComponent(d[g]).replace(/--/g,"%2D%2D")+"--\x3e"});a=a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g,function(a){return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g,function(a,c){b[b.id]=decodeURIComponent(c);return"{cke_protected_"+b.id++ +"}"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g,function(a,d,g,b){return"\x3c"+d+g+"\x3e"+p(v(b),c)+"\x3c/"+d+"\x3e"})}var r;CKEDITOR.htmlDataProcessor=function(a){var c, +e,f=this;this.editor=a;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=e=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(B);c.addRules(C,{applyToAll:!0});c.addRules(b(a,"data"),{applyToAll:!0});e.addRules(A);e.addRules(E,{applyToAll:!0});e.addRules(b(a,"html"),{applyToAll:!0});a.on("toHtml",function(c){c=c.data;var b=c.dataValue,e,b=r(b),b=q(b,a),b=g(b,N),b=d(b),b=g(b,D),b=b.replace(L,"$1cke:$2"),b=b.replace(H,"\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"), +b=b.replace(/(<pre\b[^>]*>)(\r\n|\n)/g,"$1$2$2"),b=b.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi,"$1data-cke-"+CKEDITOR.rnd+"-$2");e=c.context||a.editable().getName();var f;CKEDITOR.env.ie&&9>CKEDITOR.env.version&&"pre"==e&&(e="div",b="\x3cpre\x3e"+b+"\x3c/pre\x3e",f=1);e=a.document.createElement(e);e.setHtml("a"+b);b=e.getHtml().substr(1);b=b.replace(new RegExp("data-cke-"+CKEDITOR.rnd+"-","ig"),"");f&&(b=b.replace(/^<pre>|<\/pre>$/gi,""));b=b.replace(R,"$1$2");b=n(b);b=v(b);e=!1===c.fixForBody?!1: h(c.enterMode,a.config.autoParagraph);b=CKEDITOR.htmlParser.fragment.fromHtml(b,c.context,e);e&&(f=b,!f.children.length&&CKEDITOR.dtd[f.name][e]&&(e=new CKEDITOR.htmlParser.element(e),f.add(e)));c.dataValue=b},null,null,5);a.on("toHtml",function(c){c.data.filter.applyTo(c.data.dataValue,!0,c.data.dontFilter,c.data.enterMode)&&a.fire("dataFiltered")},null,null,6);a.on("toHtml",function(a){a.data.dataValue.filterChildren(f.dataFilter,!0)},null,null,10);a.on("toHtml",function(a){a=a.data;var c=a.dataValue, d=new CKEDITOR.htmlParser.basicWriter;c.writeChildrenHtml(d);c=d.getHtml(!0);a.dataValue=y(c)},null,null,15);a.on("toDataFormat",function(c){var d=c.data.dataValue;c.data.enterMode!=CKEDITOR.ENTER_BR&&(d=d.replace(/^<br *\/?>/i,""));c.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(d,c.data.context,h(c.data.enterMode,a.config.autoParagraph))},null,null,5);a.on("toDataFormat",function(a){a.data.dataValue.filterChildren(f.htmlFilter,!0)},null,null,10);a.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue, -!1,!0)},null,null,11);a.on("toDataFormat",function(c){var d=c.data.dataValue,b=f.writer;b.reset();d.writeChildrenHtml(b);d=b.getHtml(!0);d=w(d);d=p(d,a);c.data.dataValue=d},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,c,d,b){var g=this.editor,e,f,h,m;c&&"object"==typeof c?(e=c.context,d=c.fixForBody,b=c.dontFilter,f=c.filter,h=c.enterMode,m=c.protectedWhitespaces):e=c;e||null===e||(e=g.editable().getName());return g.fire("toHtml",{dataValue:a,context:e,fixForBody:d,dontFilter:b, -filter:f||g.filter,enterMode:h||g.enterMode,protectedWhitespaces:m}).dataValue},toDataFormat:function(a,c){var d,b,g;c&&(d=c.context,b=c.filter,g=c.enterMode);d||null===d||(d=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:b||this.editor.filter,context:d,enterMode:g||this.editor.enterMode}).dataValue},protectSource:function(a){return t(a,this.editor)},unprotectSource:function(a){return p(a,this.editor)},unprotectRealComments:function(a){return w(a)}};var x= -/(?: |\xa0)$/,u="{cke_protected}",z=CKEDITOR.dtd,q="caption colgroup col thead tfoot tbody".split(" "),v=CKEDITOR.tools.extend({},z.$blockLimit,z.$block),B={elements:{input:l,textarea:l}},D={attributeNames:[[/^on/,"data-cke-pa-on"],[/^srcdoc/,"data-cke-pa-srcdoc"],[/^data-cke-expando$/,""]],elements:{iframe:function(a){if(a.attributes&&a.attributes.src){var c=a.attributes.src.toLowerCase().replace(/[^a-z]/gi,"");if(0===c.indexOf("javascript")||0===c.indexOf("data"))a.attributes["data-cke-pa-src"]= +!1,!0)},null,null,11);a.on("toDataFormat",function(c){var d=c.data.dataValue,b=f.writer;b.reset();d.writeChildrenHtml(b);d=b.getHtml(!0);d=v(d);d=p(d,a);c.data.dataValue=d},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,c,d,b){var g=this.editor,e,f,k,h;c&&"object"==typeof c?(e=c.context,d=c.fixForBody,b=c.dontFilter,f=c.filter,k=c.enterMode,h=c.protectedWhitespaces):e=c;e||null===e||(e=g.editable().getName());return g.fire("toHtml",{dataValue:a,context:e,fixForBody:d,dontFilter:b, +filter:f||g.filter,enterMode:k||g.enterMode,protectedWhitespaces:h}).dataValue},toDataFormat:function(a,c){var d,b,g;c&&(d=c.context,b=c.filter,g=c.enterMode);d||null===d||(d=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:b||this.editor.filter,context:d,enterMode:g||this.editor.enterMode}).dataValue},protectSource:function(a){return q(a,this.editor)},unprotectSource:function(a){return p(a,this.editor)},unprotectRealComments:function(a){return v(a)}};var x= +/(?: |\xa0)$/,t="{cke_protected}",z=CKEDITOR.dtd,u="caption colgroup col thead tfoot tbody".split(" "),w=CKEDITOR.tools.extend({},z.$blockLimit,z.$block),B={elements:{input:m,textarea:m}},C={attributeNames:[[/^on/,"data-cke-pa-on"],[/^srcdoc/,"data-cke-pa-srcdoc"],[/^data-cke-expando$/,""]],elements:{iframe:function(a){if(a.attributes&&a.attributes.src){var c=a.attributes.src.toLowerCase().replace(/[^a-z]/gi,"");if(0===c.indexOf("javascript")||0===c.indexOf("data"))a.attributes["data-cke-pa-src"]= a.attributes.src,delete a.attributes.src}}}},A={elements:{embed:function(a){var c=a.parent;if(c&&"object"==c.name){var d=c.attributes.width,c=c.attributes.height;d&&(a.attributes.width=d);c&&(a.attributes.height=c)}},a:function(a){var c=a.attributes;if(!(a.children.length||c.name||c.id||a.attributes["data-cke-saved-name"]))return!1}}},E={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/,""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var c= -a.attributes;if(c){if(c["data-cke-temp"])return!1;for(var d=["name","href","src"],b,g=0;g<d.length;g++)b="data-cke-saved-"+d[g],b in c&&delete c[d[g]]}return a},table:function(a){a.children.slice(0).sort(function(a,c){var d,b;a.type==CKEDITOR.NODE_ELEMENT&&c.type==a.type&&(d=CKEDITOR.tools.indexOf(q,a.name),b=CKEDITOR.tools.indexOf(q,c.name));-1<d&&-1<b&&d!=b||(d=a.parent?a.getIndex():-1,b=c.parent?c.getIndex():-1);return d>b?1:-1})},param:function(a){a.children=[];a.isEmpty=!0;return a},span:function(a){"Apple-style-span"== -a.attributes["class"]&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var c=a.children[0];c&&c.value&&(c.value=CKEDITOR.tools.trim(c.value));a.attributes.type||(a.attributes.type="text/css")},title:function(a){var c=a.children[0];!c&&k(a,c=new CKEDITOR.htmlParser.text);c.value=a.attributes["data-cke-title"]||""},input:c,textarea:c},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g, -""))||!1}}};CKEDITOR.env.ie&&(E.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})});var F=/<(a|area|img|input|source)\b([^>]*)>/gi,K=/([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,L=/^(href|src|name)$/i,C=/(?:<style(?=[ >])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,O=/(<textarea(?=[ >])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,I=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,M=/(<\/?)((?:object|embed|param|html|body|head|title)([\s][^>]*)?>)/gi, -Q=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,H=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi;r=function(){function a(d){return CKEDITOR.tools.array.reduce(d.split(""),function(a,d){var b=d.toLowerCase(),g=d.toUpperCase(),e=c(b);b!==g&&(e+="|"+c(g));return a+("("+e+")")},"")}function c(a){var d;d=a.charCodeAt(0);var b=d.toString(16);d={htmlCode:"\x26#"+d+";?",hex:"\x26#x0*"+b+";?",entity:{"\x3c":"\x26lt;","\x3e":"\x26gt;",":":"\x26colon;"}[a]};for(var g in d)d[g]&&(a+="|"+d[g]);return a}var d= -new RegExp("("+a("\x3ccke:encoded\x3e")+"(.*?)"+a("\x3c/cke:encoded\x3e")+")|("+a("\x3c")+a("/")+"?"+a("cke:encoded\x3e")+")","gi"),b=new RegExp("(("+a("{cke_protected")+")(_[0-9]*)?"+a("}")+")","gi");return function(a){return a.replace(d,"").replace(b,"")}}()}(),"use strict",CKEDITOR.htmlParser.element=function(b,h){this.name=b;this.attributes=h||{};this.children=[];var f=b||"",e=f.match(/^cke:(.*)/);e&&(f=e[1]);f=!!(CKEDITOR.dtd.$nonBodyContent[f]||CKEDITOR.dtd.$block[f]||CKEDITOR.dtd.$listItem[f]|| -CKEDITOR.dtd.$tableContent[f]||CKEDITOR.dtd.$nonEditable[f]||"br"==f);this.isEmpty=!!CKEDITOR.dtd.$empty[b];this.isUnknown=!CKEDITOR.dtd[b];this._={isBlockLike:f,hasInlineStarted:this.isEmpty||!f}},CKEDITOR.htmlParser.cssStyle=function(b){var h={};((b instanceof CKEDITOR.htmlParser.element?b.attributes.style:b)||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(b,e,a){"font-family"==e&&(a=a.replace(/["']/g,""));h[e.toLowerCase()]=a});return{rules:h,populate:function(b){var e= -this.toString();e&&(b instanceof CKEDITOR.dom.element?b.setAttribute("style",e):b instanceof CKEDITOR.htmlParser.element?b.attributes.style=e:b.style=e)},toString:function(){var b=[],e;for(e in h)h[e]&&b.push(e,":",h[e],";");return b.join("")}}},function(){function b(b){return function(a){return a.type==CKEDITOR.NODE_ELEMENT&&("string"==typeof b?a.name==b:a.name in b)}}var h=function(b,a){b=b[0];a=a[0];return b<a?-1:b>a?1:0},f=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype= -CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:f.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(b,a){var f=this,h,l;a=f.getFilterContext(a);if(!f.parent)b.onRoot(a,f);for(;;){h=f.name;if(!(l=b.onElementName(a,h)))return this.remove(),!1;f.name=l;if(!(f=b.onElement(a,f)))return this.remove(),!1;if(f!==this)return this.replaceWith(f),!1;if(f.name==h)break;if(f.type!=CKEDITOR.NODE_ELEMENT)return this.replaceWith(f), -!1;if(!f.name)return this.replaceWithChildren(),!1}h=f.attributes;var c,d;for(c in h){for(l=h[c];;)if(d=b.onAttributeName(a,c))if(d!=c)delete h[c],c=d;else break;else{delete h[c];break}d&&(!1===(l=b.onAttribute(a,f,d,l))?delete h[d]:h[d]=l)}f.isEmpty||this.filterChildren(b,!1,a);return!0},filterChildren:f.filterChildren,writeHtml:function(b,a){a&&this.filter(a);var f=this.name,k=[],l=this.attributes,c,d;b.openTag(f,l);for(c in l)k.push([c,l[c]]);b.sortAttributes&&k.sort(h);c=0;for(d=k.length;c<d;c++)l= -k[c],b.attribute(l[0],l[1]);b.openTagClose(f,this.isEmpty);this.writeChildrenHtml(b);this.isEmpty||b.closeTag(f)},writeChildrenHtml:f.writeChildrenHtml,replaceWithChildren:function(){for(var b=this.children,a=b.length;a;)b[--a].insertAfter(this);this.remove()},forEach:f.forEach,getFirst:function(e){if(!e)return this.children.length?this.children[0]:null;"function"!=typeof e&&(e=b(e));for(var a=0,f=this.children.length;a<f;++a)if(e(this.children[a]))return this.children[a];return null},getHtml:function(){var b= -new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml(b);return b.getHtml()},setHtml:function(b){b=this.children=CKEDITOR.htmlParser.fragment.fromHtml(b).children;for(var a=0,f=b.length;a<f;++a)b[a].parent=this},getOuterHtml:function(){var b=new CKEDITOR.htmlParser.basicWriter;this.writeHtml(b);return b.getHtml()},split:function(b){for(var a=this.children.splice(b,this.children.length-b),f=this.clone(),h=0;h<a.length;++h)a[h].parent=f;f.children=a;a[0]&&(a[0].previous=null);0<b&&(this.children[b- -1].next=null);this.parent.add(f,this.getIndex()+1);return f},find:function(b,a){void 0===a&&(a=!1);var f=[],h;for(h=0;h<this.children.length;h++){var l=this.children[h];"function"==typeof b&&b(l)?f.push(l):"string"==typeof b&&l.name===b&&f.push(l);a&&l.find&&(f=f.concat(l.find(b,a)))}return f},findOne:function(b,a){var f=null,h=CKEDITOR.tools.array.find(this.children,function(h){var c="function"===typeof b?b(h):h.name===b;if(c||!a)return c;h.children&&h.findOne&&(f=h.findOne(b,!0));return!!f});return f|| -h||null},addClass:function(b){if(!this.hasClass(b)){var a=this.attributes["class"]||"";this.attributes["class"]=a+(a?" ":"")+b}},removeClass:function(b){var a=this.attributes["class"];a&&((a=CKEDITOR.tools.trim(a.replace(new RegExp("(?:\\s+|^)"+b+"(?:\\s+|$)")," ")))?this.attributes["class"]=a:delete this.attributes["class"])},hasClass:function(b){var a=this.attributes["class"];return a?(new RegExp("(?:^|\\s)"+b+"(?\x3d\\s|$)")).test(a):!1},getFilterContext:function(b){var a=[];b||(b={nonEditable:!1, -nestedEditable:!1});b.nonEditable||"false"!=this.attributes.contenteditable?b.nonEditable&&!b.nestedEditable&&"true"==this.attributes.contenteditable&&a.push("nestedEditable",!0):a.push("nonEditable",!0);if(a.length){b=CKEDITOR.tools.copy(b);for(var f=0;f<a.length;f+=2)b[a[f]]=a[f+1]}return b}},!0)}(),function(){var b=/{([^}]+)}/g;CKEDITOR.template=function(b){this.source="function"===typeof b?b:String(b)};CKEDITOR.template.prototype.output=function(h,f){var e=("function"===typeof this.source?this.source(h): -this.source).replace(b,function(a,b){return void 0!==h[b]?h[b]:a});return f?f.push(e):e}}(),delete CKEDITOR.loadFullCore,CKEDITOR.instances={},CKEDITOR.document=new CKEDITOR.dom.document(document),CKEDITOR.add=function(b){function h(){CKEDITOR.currentInstance==b&&(CKEDITOR.currentInstance=null,CKEDITOR.fire("currentInstance"))}CKEDITOR.instances[b.name]=b;b.on("focus",function(){CKEDITOR.currentInstance!=b&&(CKEDITOR.currentInstance=b,CKEDITOR.fire("currentInstance"))});b.on("blur",h);b.on("destroy", -h);CKEDITOR.fire("instance",null,b)},CKEDITOR.remove=function(b){delete CKEDITOR.instances[b.name]},function(){var b={};CKEDITOR.addTemplate=function(h,f){var e=b[h];if(e)return e;e={name:h,source:f};CKEDITOR.fire("template",e);return b[h]=new CKEDITOR.template(e.source)};CKEDITOR.getTemplate=function(h){return b[h]}}(),function(){var b=[];CKEDITOR.addCss=function(h){b.push(h)};CKEDITOR.getCss=function(){return b.join("\n")}}(),CKEDITOR.on("instanceDestroyed",function(){CKEDITOR.tools.isEmpty(this.instances)&& -CKEDITOR.fire("reset")}),CKEDITOR.TRISTATE_ON=1,CKEDITOR.TRISTATE_OFF=2,CKEDITOR.TRISTATE_DISABLED=0,function(){CKEDITOR.inline=function(b,h){b=CKEDITOR.editor._getEditorElement(b);if(!b)return null;var f=new CKEDITOR.editor(h,b,CKEDITOR.ELEMENT_MODE_INLINE),e=b.is("textarea")?b:null;e?(f.setData(e.getValue(),null,!0),b=CKEDITOR.dom.element.createFromHtml('\x3cdiv contenteditable\x3d"'+!!f.readOnly+'" class\x3d"cke_textarea_inline"\x3e'+e.getValue()+"\x3c/div\x3e",CKEDITOR.document),b.insertAfter(e), -e.hide(),e.$.form&&f._attachToForm()):(h&&"undefined"!==typeof h.readOnly&&!h.readOnly&&b.setAttribute("contenteditable","true"),f.setData(b.getHtml(),null,!0));f.on("loaded",function(){f.fire("uiReady");f.editable(b);f.container=b;f.ui.contentsElement=b;f.setData(f.getData(1));f.resetDirty();f.fire("contentDom");f.mode="wysiwyg";f.fire("mode");f.status="ready";f.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,f)},null,null,1E4);f.on("destroy",function(){var a=f.container;e&&a&&(a.clearCustomData(), -a.remove());e&&e.show();f.element.clearCustomData();delete f.element});return f};CKEDITOR.inlineAll=function(){var b,h,f;for(f in CKEDITOR.dtd.$editable)for(var e=CKEDITOR.document.getElementsByTag(f),a=0,m=e.count();a<m;a++)b=e.getItem(a),"true"!=b.getAttribute("contenteditable")||b.getEditor()||(h={element:b,config:{}},!1!==CKEDITOR.fire("inline",h)&&CKEDITOR.inline(b,h.config))};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})}(),CKEDITOR.replaceClass="ckeditor", -function(){function b(b,a,m,k){b=CKEDITOR.editor._getEditorElement(b);if(!b)return null;var l=new CKEDITOR.editor(a,b,k);k==CKEDITOR.ELEMENT_MODE_REPLACE&&(b.setStyle("visibility","hidden"),l._.required=b.hasAttribute("required"),b.removeAttribute("required"));m&&l.setData(m,null,!0);l.on("loaded",function(){l.isDestroyed()||l.isDetached()||(f(l),k==CKEDITOR.ELEMENT_MODE_REPLACE&&l.config.autoUpdateElement&&b.$.form&&l._attachToForm(),l.setMode(l.config.startupMode,function(){l.resetDirty();l.status= -"ready";l.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,l)}))});l.on("destroy",h);return l}function h(){var b=this.container,a=this.element;b&&(b.clearCustomData(),b.remove());a&&(a.clearCustomData(),this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(a.show(),this._.required&&a.setAttribute("required","required")),delete this.element)}function f(b){var a=b.name,f=b.element,h=b.elementMode,l=b.fire("uiSpace",{space:"top",html:""}).html,c=b.fire("uiSpace",{space:"bottom",html:""}).html, -d=new CKEDITOR.template('\x3c{outerEl} id\x3d"cke_{name}" class\x3d"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"application"'+(b.title?' aria-labelledby\x3d"cke_{name}_arialbl"':"")+"\x3e"+(b.title?'\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e':"")+'\x3c{outerEl} class\x3d"cke_inner cke_reset" role\x3d"presentation"\x3e{topHtml}\x3c{outerEl} id\x3d"{contentId}" class\x3d"cke_contents cke_reset" role\x3d"presentation"\x3e\x3c/{outerEl}\x3e{bottomHtml}\x3c/{outerEl}\x3e\x3c/{outerEl}\x3e'), -a=CKEDITOR.dom.element.createFromHtml(d.output({id:b.id,name:a,langDir:b.lang.dir,langCode:b.langCode,voiceLabel:b.title,topHtml:l?'\x3cspan id\x3d"'+b.ui.spaceId("top")+'" class\x3d"cke_top cke_reset_all" role\x3d"presentation" style\x3d"height:auto"\x3e'+l+"\x3c/span\x3e":"",contentId:b.ui.spaceId("contents"),bottomHtml:c?'\x3cspan id\x3d"'+b.ui.spaceId("bottom")+'" class\x3d"cke_bottom cke_reset_all" role\x3d"presentation"\x3e'+c+"\x3c/span\x3e":"",outerEl:CKEDITOR.env.ie?"span":"div"}));h==CKEDITOR.ELEMENT_MODE_REPLACE? -(f.hide(),a.insertAfter(f)):f.append(a);b.container=a;b.ui.contentsElement=b.ui.space("contents");l&&b.ui.space("top").unselectable();c&&b.ui.space("bottom").unselectable();f=b.config.width;h=b.config.height;f&&a.setStyle("width",CKEDITOR.tools.cssLength(f));h&&b.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(h));a.disableContextMenu();CKEDITOR.env.webkit&&a.on("focus",function(){b.focus()});b.fireOnce("uiReady")}CKEDITOR.replace=function(e,a){return b(e,a,null,CKEDITOR.ELEMENT_MODE_REPLACE)}; -CKEDITOR.appendTo=function(e,a,f){return b(e,a,f,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var b=document.getElementsByTagName("textarea"),a=0;a<b.length;a++){var f=null,h=b[a];if(h.name||h.id){if("string"==typeof arguments[0]){if(!(new RegExp("(?:^|\\s)"+arguments[0]+"(?:$|\\s)")).test(h.className))continue}else if("function"==typeof arguments[0]&&(f={},!1===arguments[0](h,f)))continue;this.replace(h,f)}}};CKEDITOR.editor.prototype.addMode=function(b,a){(this._.modes||(this._.modes= -{}))[b]=a};CKEDITOR.editor.prototype.setMode=function(b,a){var f=this,h=this._.modes;if(b!=f.mode&&h&&h[b]){f.fire("beforeSetMode",b);if(f.mode){var l=f.checkDirty(),h=f._.previousModeData,c,d=0;f.fire("beforeModeUnload");f.editable(0);f._.previousMode=f.mode;f._.previousModeData=c=f.getData(1);"source"==f.mode&&h==c&&(f.fire("lockSnapshot",{forceUpdate:!0}),d=1);f.ui.space("contents").setHtml("");f.mode=""}else f._.previousModeData=f.getData(1);this._.modes[b](function(){f.mode=b;void 0!==l&&!l&& -f.resetDirty();d?f.fire("unlockSnapshot"):"wysiwyg"==b&&f.fire("saveSnapshot");setTimeout(function(){f.isDestroyed()||f.isDetached()||(f.fire("mode"),a&&a.call(f))},0)})}};CKEDITOR.editor.prototype.resize=function(b,a,f,h){var l=this.container,c=this.ui.space("contents"),d=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement;h=h?this.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}):l;if(b||0===b)b=CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(b)); -h.setSize("width",b,!0);d&&(d.style.width="1%");a=CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(a));var g=(h.$.offsetHeight||0)-(c.$.clientHeight||0),l=Math.max(a-(f?0:g),0);a=f?a+g:a;c.setStyle("height",CKEDITOR.tools.cssLength(l));d&&(d.style.width="100%");this.fire("resize",{outerHeight:a,contentsHeight:l,outerWidth:b||h.getSize("width")})};CKEDITOR.editor.prototype.getResizable=function(b){return b?this.ui.space("contents"):this.container};CKEDITOR.domReady(function(){CKEDITOR.replaceClass&& -CKEDITOR.replaceAll(CKEDITOR.replaceClass)})}(),CKEDITOR.config.startupMode="wysiwyg",function(){function b(a){var c=a.editor,b=a.data.path,d=b.blockLimit,g=a.data.selection,f=g.getRanges()[0],n;if(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)if(g=h(g,b))g.appendBogus(),n=CKEDITOR.env.ie&&!CKEDITOR.env.edge||CKEDITOR.env.edge&&c._.previousActive;k(c,b.block,d)&&f.collapsed&&!f.getCommonAncestor().isReadOnly()&&(b=f.clone(),b.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS),d=new CKEDITOR.dom.walker(b), -d.guard=function(a){return!e(a)||a.type==CKEDITOR.NODE_COMMENT||a.isReadOnly()},!d.checkForward()||b.checkStartOfBlock()&&b.checkEndOfBlock())&&(c=f.fixBlock(!0,c.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p"),CKEDITOR.env.needsBrFiller||(c=c.getFirst(e))&&c.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(c.getText()).match(/^(?: |\xa0)$/)&&c.remove(),n=1,a.cancel());n&&f.select()}function h(a,c){if(a.isFake)return 0;var b=c.block||c.blockLimit,d=b&&b.getLast(e);if(!(!b||!b.isBlockBoundary()|| -d&&d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()||b.is("pre")||b.getBogus()))return b}function f(a){var c=a.data.getTarget();c.is("input")&&(c=c.getAttribute("type"),"submit"!=c&&"reset"!=c||a.data.preventDefault())}function e(a){return n(a)&&y(a)}function a(a,c){return function(b){var d=b.data.$.toElement||b.data.$.fromElement||b.data.$.relatedTarget;(d=d&&d.nodeType==CKEDITOR.NODE_ELEMENT?new CKEDITOR.dom.element(d):null)&&(c.equals(d)||c.contains(d))||a.call(this,b)}}function m(a){function c(a){return function(c, -d){d&&c.type==CKEDITOR.NODE_ELEMENT&&c.is(g)&&(b=c);if(!(d||!e(c)||a&&p(c)))return!1}}var b,d=a.getRanges()[0];a=a.root;var g={table:1,ul:1,ol:1,dl:1};if(d.startPath().contains(g)){var f=d.clone();f.collapse(1);f.setStartAt(a,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(f);a.guard=c();a.checkBackward();if(b)return f=d.clone(),f.collapse(),f.setEndAt(b,CKEDITOR.POSITION_AFTER_END),a=new CKEDITOR.dom.walker(f),a.guard=c(!0),b=!1,a.checkForward(),b}return null}function k(a,c,b){return!1!== -a.config.autoParagraph&&a.activeEnterMode!=CKEDITOR.ENTER_BR&&(a.editable().equals(b)&&!c||c&&"true"==c.getAttribute("contenteditable"))}function l(a){return a.activeEnterMode!=CKEDITOR.ENTER_BR&&!1!==a.config.autoParagraph?a.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p":!1}function c(a){a&&a.isEmptyInlineRemoveable()&&a.remove()}function d(a){var c=a.editor;c.getSelection().scrollIntoView();setTimeout(function(){c.fire("saveSnapshot")},0)}function g(a,c,b){var d=a.getCommonAncestor(c);for(c=a=b? -c:a;(a=a.getParent())&&!d.equals(a)&&1==a.getChildCount();)c=a;c.remove()}var n,y,w,p,t,r,x,u,z,q;CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element,$:function(a,c){this.base(c.$||c);this.editor=a;this.status="unloaded";this.hasFocus=!1;this.setup()},proto:{focus:function(){var a;if(CKEDITOR.env.webkit&&!this.hasFocus&&(a=this.editor._.previousActive||this.getDocument().getActive(),this.contains(a))){a.focus();return}CKEDITOR.env.edge&&14<CKEDITOR.env.version&&!this.hasFocus&& -this.getDocument().equals(CKEDITOR.document)&&(this.editor._.previousScrollTop=this.$.scrollTop);try{if(!CKEDITOR.env.ie||CKEDITOR.env.edge&&14<CKEDITOR.env.version||!this.getDocument().equals(CKEDITOR.document))if(CKEDITOR.env.chrome){var c=this.$.scrollTop;this.$.focus();this.$.scrollTop=c}else this.$.focus();else this.$.setActive()}catch(b){if(!CKEDITOR.env.ie)throw b;}CKEDITOR.env.safari&&!this.isInline()&&(a=CKEDITOR.document.getActive(),a.equals(this.getWindow().getFrame())||this.getWindow().focus())}, -on:function(c,b){var d=Array.prototype.slice.call(arguments,0);CKEDITOR.env.ie&&/^focus|blur$/.exec(c)&&(c="focus"==c?"focusin":"focusout",b=a(b,this),d[0]=c,d[1]=b);return CKEDITOR.dom.element.prototype.on.apply(this,d)},attachListener:function(a){!this._.listeners&&(this._.listeners=[]);var c=Array.prototype.slice.call(arguments,1),c=a.on.apply(a,c);this._.listeners.push(c);return c},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(c){}},restoreAttrs:function(){var a= -this._.attrChanges,c,b;for(b in a)a.hasOwnProperty(b)&&(c=a[b],null!==c?this.setAttribute(b,c):this.removeAttribute(b))},attachClass:function(a){var c=this.getCustomData("classes");this.hasClass(a)||(!c&&(c=[]),c.push(a),this.setCustomData("classes",c),this.addClass(a))},changeAttr:function(a,c){var b=this.getAttribute(a);c!==b&&(!this._.attrChanges&&(this._.attrChanges={}),a in this._.attrChanges||(this._.attrChanges[a]=b),this.setAttribute(a,c))},insertText:function(a){this.editor.focus();this.insertHtml(this.transformPlainTextToHtml(a), -"text")},transformPlainTextToHtml:function(a){var c=this.editor.getSelection().getStartElement().hasAscendant("pre",!0)?CKEDITOR.ENTER_BR:this.editor.activeEnterMode;return CKEDITOR.tools.transformPlainTextToHtml(a,c)},insertHtml:function(a,c,b){var g=this.editor;g.focus();g.fire("saveSnapshot");b||(b=g.getSelection().getRanges()[0]);r(this,c||"html",a,b);b.select();d(this);this.editor.fire("afterInsertHtml",{})},insertHtmlIntoRange:function(a,c,b){r(this,b||"html",a,c);this.editor.fire("afterInsertHtml", -{intoRange:c})},insertElement:function(a,c){var b=this.editor;b.focus();b.fire("saveSnapshot");var g=b.activeEnterMode,b=b.getSelection(),f=a.getName(),f=CKEDITOR.dtd.$block[f];c||(c=b.getRanges()[0]);this.insertElementIntoRange(a,c)&&(c.moveToPosition(a,CKEDITOR.POSITION_AFTER_END),f&&((f=a.getNext(function(a){return e(a)&&!p(a)}))&&f.type==CKEDITOR.NODE_ELEMENT&&f.is(CKEDITOR.dtd.$block)?f.getDtd()["#"]?c.moveToElementEditStart(f):c.moveToElementEditEnd(a):f||g==CKEDITOR.ENTER_BR||(f=c.fixBlock(!0, -g==CKEDITOR.ENTER_DIV?"div":"p"),c.moveToElementEditStart(f))));b.selectRanges([c]);d(this)},insertElementIntoSelection:function(a){this.insertElement(a)},insertElementIntoRange:function(a,b){var d=this.editor,g=d.config.enterMode,e=a.getName(),f=CKEDITOR.dtd.$block[e];if(b.checkReadOnly())return!1;b.deleteContents(1);b.startContainer.type==CKEDITOR.NODE_ELEMENT&&(b.startContainer.is({tr:1,table:1,tbody:1,thead:1,tfoot:1})?x(b):b.startContainer.is(CKEDITOR.dtd.$list)&&u(b));var h,n;if(f)for(;(h=b.getCommonAncestor(0, -1))&&(n=CKEDITOR.dtd[h.getName()])&&(!n||!n[e]);)if(h.getName()in CKEDITOR.dtd.span){var f=b.splitElement(h),m=b.createBookmark();c(h);c(f);b.moveToBookmark(m)}else b.checkStartOfBlock()&&b.checkEndOfBlock()?(b.setStartBefore(h),b.collapse(!0),h.remove()):b.splitBlock(g==CKEDITOR.ENTER_DIV?"div":"p",d.editable());b.insertNode(a);return!0},setData:function(a,c){c||(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.fixInitialSelection();"unloaded"==this.status&&(this.status="ready");this.editor.fire("dataReady")}, -getData:function(a){var c=this.getHtml();a||(c=this.editor.dataProcessor.toDataFormat(c));return c},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.status="detached";this.editor.setData(this.editor.getData(),{internal:!0});this.clearListeners();try{this._.cleanCustomData()}catch(a){if(!CKEDITOR.env.ie||-2146828218!==a.number)throw a;}this.editor.fire("contentDomUnload");delete this.editor.document;delete this.editor.window;delete this.editor},isInline:function(){return this.getDocument().equals(CKEDITOR.document)}, -fixInitialSelection:function(){function a(){var c=b.getDocument().$,d=c.getSelection(),g;a:if(d.anchorNode&&d.anchorNode==b.$)g=!0;else{if(CKEDITOR.env.webkit&&(g=b.getDocument().getActive())&&g.equals(b)&&!d.anchorNode){g=!0;break a}g=void 0}g&&(g=new CKEDITOR.dom.range(b),g.moveToElementEditStart(b),c=c.createRange(),c.setStart(g.startContainer.$,g.startOffset),c.collapse(!0),d.removeAllRanges(),d.addRange(c))}function c(){var a=b.getDocument().$,d=a.selection,g=b.getDocument().getActive();"None"== -d.type&&g.equals(b)&&(d=new CKEDITOR.dom.range(b),a=a.body.createTextRange(),d.moveToElementEditStart(b),d=d.startContainer,d.type!=CKEDITOR.NODE_ELEMENT&&(d=d.getParent()),a.moveToElementText(d.$),a.collapse(!0),a.select())}var b=this;if(CKEDITOR.env.ie&&(9>CKEDITOR.env.version||CKEDITOR.env.quirks))this.hasFocus&&(this.focus(),c());else if(this.hasFocus)this.focus(),a();else this.once("focus",function(){a()},null,null,-999)},getHtmlFromRange:function(a){if(a.collapsed)return new CKEDITOR.dom.documentFragment(a.document); -a={doc:this.getDocument(),range:a.clone()};z.eol.detect(a,this);z.bogus.exclude(a);z.cell.shrink(a);a.fragment=a.range.cloneContents();z.tree.rebuild(a,this);z.eol.fix(a,this);return new CKEDITOR.dom.documentFragment(a.fragment.$)},extractHtmlFromRange:function(a,c){var b=q,d={range:a,doc:a.document},g=this.getHtmlFromRange(a);if(a.collapsed)return a.optimize(),g;a.enlarge(CKEDITOR.ENLARGE_INLINE,1);b.table.detectPurge(d);d.bookmark=a.createBookmark();delete d.range;var e=this.editor.createRange(); -e.moveToPosition(d.bookmark.startNode,CKEDITOR.POSITION_BEFORE_START);d.targetBookmark=e.createBookmark();b.list.detectMerge(d,this);b.table.detectRanges(d,this);b.block.detectMerge(d,this);d.tableContentsRanges?(b.table.deleteRanges(d),a.moveToBookmark(d.bookmark),d.range=a):(a.moveToBookmark(d.bookmark),d.range=a,a.extractContents(b.detectExtractMerge(d)));a.moveToBookmark(d.targetBookmark);a.optimize();b.fixUneditableRangePosition(a);b.list.merge(d,this);b.table.purge(d,this);b.block.merge(d,this); -if(c){b=a.startPath();if(d=a.checkStartOfBlock()&&a.checkEndOfBlock()&&b.block&&!a.root.equals(b.block)){a:{var d=b.block.getElementsByTag("span"),e=0,f;if(d)for(;f=d.getItem(e++);)if(!y(f)){d=!0;break a}d=!1}d=!d}d&&(a.moveToPosition(b.block,CKEDITOR.POSITION_BEFORE_START),b.block.remove())}else b.autoParagraph(this.editor,a),w(a.startContainer)&&a.startContainer.appendBogus();a.startContainer.mergeSiblings();return g},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var c= -this.getData();this.is("textarea")||!1!==a.config.ignoreEmptyParagraph&&(c=c.replace(t,function(a,c){return c}));a.setData(c,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus",function(){var c=a.getSelection();(c=c&&c.getNative())&&"Control"==c.type||this.focus()}, -this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode,a.data.range)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?this.attachClass("cke_editable_inline"):a.elementMode!=CKEDITOR.ELEMENT_MODE_REPLACE&&a.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO|| -this.attachClass("cke_editable_themed");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(){this.hasFocus=!1},null,null,-1);this.on("focus",function(){this.hasFocus=!0},null,null,-1);if(CKEDITOR.env.webkit)this.on("scroll",function(){a._.previousScrollTop=a.editable().$.scrollTop},null,null,-1);if(CKEDITOR.env.edge&&14<CKEDITOR.env.version){var c=function(){var b=a.editable(); -null!=a._.previousScrollTop&&b.getDocument().equals(CKEDITOR.document)&&(b.$.scrollTop=a._.previousScrollTop,a._.previousScrollTop=null,this.removeListener("scroll",c))};this.on("scroll",c)}a.focusManager.add(this);this.equals(CKEDITOR.document.getActive())&&(this.hasFocus=!0,a.once("contentDom",function(){a.focusManager.focus(this)},this));this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var b=a.document;this.changeAttr("spellcheck", -!a.config.disableNativeSpellChecker);var d=a.config.contentsLangDirection;this.getDirection(1)!=d&&this.changeAttr("dir",d);var h=CKEDITOR.getCss();if(h){var d=b.getHead(),k=d.getCustomData("stylesheet");k?h!=k.getText()&&(CKEDITOR.env.ie&&9>CKEDITOR.env.version?k.$.styleSheet.cssText=h:k.setText(h)):(h=b.appendStyleText(h),h=new CKEDITOR.dom.element(h.ownerNode||h.owningElement),d.setCustomData("stylesheet",h),h.data("cke-temp",1))}d=b.getCustomData("stylesheet_ref")||0;b.setCustomData("stylesheet_ref", -d+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){a=a.data;var c=(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains("a");c&&2!=a.$.button&&c.isReadOnly()&&a.preventDefault()});var l={8:1,46:1};this.attachListener(a,"key",function(c){if(a.readOnly)return!0;var b=c.data.domEvent.getKey(),d;c=a.getSelection();if(0!==c.getRanges().length){if(b in l){var g,e=c.getRanges()[0],f=e.startPath(),h,k,r,b=8==b;CKEDITOR.env.ie&& -11>CKEDITOR.env.version&&(g=c.getSelectedElement())||(g=m(c))?(a.fire("saveSnapshot"),e.moveToPosition(g,CKEDITOR.POSITION_BEFORE_START),g.remove(),e.select(),a.fire("saveSnapshot"),d=1):e.collapsed&&((h=f.block)&&(r=h[b?"getPrevious":"getNext"](n))&&r.type==CKEDITOR.NODE_ELEMENT&&r.is("table")&&e[b?"checkStartOfBlock":"checkEndOfBlock"]()?(a.fire("saveSnapshot"),e[b?"checkEndOfBlock":"checkStartOfBlock"]()&&h.remove(),e["moveToElementEdit"+(b?"End":"Start")](r),e.select(),a.fire("saveSnapshot"), -d=1):f.blockLimit&&f.blockLimit.is("td")&&(k=f.blockLimit.getAscendant("table"))&&e.checkBoundaryOfElement(k,b?CKEDITOR.START:CKEDITOR.END)&&(r=k[b?"getPrevious":"getNext"](n))?(a.fire("saveSnapshot"),e["moveToElementEdit"+(b?"End":"Start")](r),e.checkStartOfBlock()&&e.checkEndOfBlock()?r.remove():e.select(),a.fire("saveSnapshot"),d=1):(k=f.contains(["td","th","caption"]))&&e.checkBoundaryOfElement(k,b?CKEDITOR.START:CKEDITOR.END)&&(d=1))}return!d}});a.blockless&&CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller&& -this.attachListener(this,"keyup",function(c){c.data.getKeystroke()in l&&!this.getFirst(e)&&(this.appendBogus(),c=a.createRange(),c.moveToPosition(this,CKEDITOR.POSITION_AFTER_START),c.select())});this.attachListener(this,"dblclick",function(c){if(a.readOnly)return!1;c={element:c.data.getTarget()};a.fire("doubleclick",c)});CKEDITOR.env.ie&&this.attachListener(this,"click",f);CKEDITOR.env.ie&&!CKEDITOR.env.edge||this.attachListener(this,"mousedown",function(c){var b=c.data.getTarget();b.is("img","hr", -"input","textarea","select")&&!b.isReadOnly()&&(a.getSelection().selectElement(b),b.is("input","textarea","select")&&c.data.preventDefault())});CKEDITOR.env.edge&&this.attachListener(this,"mouseup",function(c){(c=c.data.getTarget())&&c.is("img")&&!c.isReadOnly()&&a.getSelection().selectElement(c)});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(c){if(2==c.data.$.button&&(c=c.data.getTarget(),!c.getAscendant("table")&&!c.getOuterHtml().replace(t,""))){var b=a.createRange();b.moveToElementEditStart(c); -b.select(!0)}});CKEDITOR.env.webkit&&(this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()}),this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()}));CKEDITOR.env.webkit&&this.attachListener(a,"key",function(c){if(a.readOnly)return!0;var b=c.data.domEvent.getKey();if(b in l&&(c=a.getSelection(),0!==c.getRanges().length)){var b=8==b,d=c.getRanges()[0];c=d.startPath();if(d.collapsed)a:{var e= -c.block;if(e&&d[b?"checkStartOfBlock":"checkEndOfBlock"](!0)&&d.moveToClosestEditablePosition(e,!b)&&d.collapsed){if(d.startContainer.type==CKEDITOR.NODE_ELEMENT){var f=d.startContainer.getChild(d.startOffset-(b?1:0));if(f&&f.type==CKEDITOR.NODE_ELEMENT&&f.is("hr")){a.fire("saveSnapshot");f.remove();c=!0;break a}}d=d.startPath().block;if(!d||d&&d.contains(e))c=void 0;else{a.fire("saveSnapshot");var h;(h=(b?d:e).getBogus())&&h.remove();h=a.getSelection();f=h.createBookmarks();(b?e:d).moveChildren(b? -d:e,!1);c.lastElement.mergeSiblings();g(e,d,!b);h.selectBookmarks(f);c=!0}}else c=!1}else b=d,h=c.block,d=b.endPath().block,h&&d&&!h.equals(d)?(a.fire("saveSnapshot"),(e=h.getBogus())&&e.remove(),b.enlarge(CKEDITOR.ENLARGE_INLINE),b.deleteContents(),d.getParent()&&(d.moveChildren(h,!1),c.lastElement.mergeSiblings(),g(h,d,!0)),b=a.getSelection().getRanges()[0],b.collapse(1),b.optimize(),""===b.startContainer.getHtml()&&b.startContainer.appendBogus(),b.select(),c=!0):c=!1;if(!c)return;a.getSelection().scrollIntoView(); -a.fire("saveSnapshot");return!1}},this,null,100)}},getUniqueId:function(){var a;try{this._.expandoNumber=a=CKEDITOR.dom.domObject.prototype.getUniqueId.call(this)}catch(c){a=this._&&this._.expandoNumber}return a}},_:{cleanCustomData:function(){this.removeClass("cke_editable");this.restoreAttrs();for(var a=this.removeCustomData("classes");a&&a.length;)this.removeClass(a.pop());if(!this.is("textarea")){var a=this.getDocument(),c=a.getHead();if(c.getCustomData("stylesheet")){var b=a.getCustomData("stylesheet_ref"); ---b?a.setCustomData("stylesheet_ref",b):(a.removeCustomData("stylesheet_ref"),c.removeCustomData("stylesheet").remove())}}}}});CKEDITOR.editor.prototype.editable=function(a){var c=this._.editable;if(c&&a)return 0;if(!arguments.length)return c;a?c=a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(c&&c.detach(),c=null);return this._.editable=c};CKEDITOR.on("instanceLoaded",function(a){var c=a.editor;c.on("insertElement",function(a){a=a.data;a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")|| -a.is("textarea"))&&("false"!=a.getAttribute("contentEditable")&&a.data("cke-editable",a.hasAttribute("contenteditable")?"true":"1"),a.setAttribute("contentEditable",!1))});c.on("selectionChange",function(a){if(!c.readOnly){var d=c.getSelection();d&&!d.isLocked&&(d=c.checkDirty(),c.fire("lockSnapshot"),b(a),c.fire("unlockSnapshot"),!d&&c.resetDirty())}})});CKEDITOR.on("instanceCreated",function(a){var c=a.editor;c.on("mode",function(){var a=c.editable();if(a&&a.isInline()){var b=c.title;a.changeAttr("role", -"textbox");a.changeAttr("aria-multiline","true");a.changeAttr("aria-label",b);b&&a.changeAttr("title",b);var d=c.fire("ariaEditorHelpLabel",{}).label;if(d&&(b=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents"))){var g=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+g+'" class\x3d"cke_voice_label"\x3e'+d+"\x3c/span\x3e");b.append(d);a.changeAttr("aria-describedby",g)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}"); -n=CKEDITOR.dom.walker.whitespaces(!0);y=CKEDITOR.dom.walker.bookmark(!1,!0);w=CKEDITOR.dom.walker.empty();p=CKEDITOR.dom.walker.bogus();t=/(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi;r=function(){function a(c){return c.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var g,e,f,h,n=[],k=d.range.startContainer;g=d.range.startPath();for(var k=m[k.getName()],l=0,r=c.getChildren(),t=r.count(),y=-1,u=-1,q=0,x=g.contains(m.$list);l< -t;++l)g=r.getItem(l),a(g)?(f=g.getName(),x&&f in CKEDITOR.dtd.$list?n=n.concat(b(g,d)):(h=!!k[f],"br"!=f||!g.data("cke-eol")||l&&l!=t-1||(q=(e=l?n[l-1].node:r.getItem(l+1))&&(!a(e)||!e.is("br")),e=e&&a(e)&&m.$block[e.getName()]),-1!=y||h||(y=l),h||(u=l),n.push({isElement:1,isLineBreak:q,isBlock:g.isBlockBoundary(),hasBlockSibling:e,node:g,name:f,allowed:h}),e=q=0)):n.push({isElement:0,node:g,allowed:1});-1<y&&(n[y].firstNotAllowed=1);-1<u&&(n[u].lastNotAllowed=1);return n}function d(c,b){var g=[], -e=c.getChildren(),f=e.count(),h,n=0,k=m[b],l=!c.is(m.$inline)||c.is("br");for(l&&g.push(" ");n<f;n++)h=e.getItem(n),a(h)&&!h.is(k)?g=g.concat(d(h,b)):g.push(h);l&&g.push(" ");return g}function g(c){return a(c.startContainer)&&c.startContainer.getChild(c.startOffset-1)}function f(c){return c&&a(c)&&(c.is(m.$removeEmpty)||c.is("a")&&!c.isBlockBoundary())}function h(c,b,d,g){var e=c.clone(),f,n;e.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);(f=(new CKEDITOR.dom.walker(e)).next())&&a(f)&&r[f.getName()]&& -(n=f.getPrevious())&&a(n)&&!n.getParent().equals(c.startContainer)&&d.contains(n)&&g.contains(f)&&f.isIdentical(n)&&(f.moveChildren(n),f.remove(),h(c,b,d,g))}function n(c,b){function d(c,b){if(b.isBlock&&b.isElement&&!b.node.is("br")&&a(c)&&c.is("br"))return c.remove(),1}var g=b.endContainer.getChild(b.endOffset),e=b.endContainer.getChild(b.endOffset-1);g&&d(g,c[c.length-1]);e&&d(e,c[0])&&(b.setEnd(b.endContainer,b.endOffset-1),b.collapse())}var m=CKEDITOR.dtd,r={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1, -h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},y={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},u=CKEDITOR.tools.extend({},m.$inline);delete u.br;return function(r,q,H,G){var x=r.editor,p=!1,w;"unfiltered_html"==q&&(q="html",p=!0);if(!G.checkReadOnly()){var z=(new CKEDITOR.dom.elementPath(G.startContainer,G.root)).blockLimit||G.root;q={type:q,dontFilter:p,editable:r,editor:x,range:G,blockLimit:z,mergeCandidates:[],zombies:[]};var p=q.range,z=q.mergeCandidates,C="html"===q.type,J,S,W,aa,ba;"text"==q.type&& -p.shrink(CKEDITOR.SHRINK_ELEMENT,!0,!1)&&(S=CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",p.document),p.insertNode(S),p.setStartAfter(S));W=new CKEDITOR.dom.elementPath(p.startContainer);q.endPath=aa=new CKEDITOR.dom.elementPath(p.endContainer);if(!p.collapsed){J=aa.block||aa.blockLimit;var ca=p.getCommonAncestor();J&&!J.equals(ca)&&!J.contains(ca)&&p.checkEndOfBlock()&&q.zombies.push(J);p.deleteContents()}for(;(ba=g(p))&&a(ba)&&ba.isBlockBoundary()&&W.contains(ba);)p.moveToPosition(ba, -CKEDITOR.POSITION_BEFORE_END);h(p,q.blockLimit,W,aa);S&&(p.setEndBefore(S),p.collapse(),S.remove());S=p.startPath();if(J=S.contains(f,!1,1))w=p.splitElement(J),q.inlineStylesRoot=J,q.inlineStylesPeak=S.lastElement;S=p.createBookmark();C&&(c(J),c(w));(J=S.startNode.getPrevious(e))&&a(J)&&f(J)&&z.push(J);(J=S.startNode.getNext(e))&&a(J)&&f(J)&&z.push(J);for(J=S.startNode;(J=J.getParent())&&f(J);)z.push(J);p.moveToBookmark(S);w=r.getHtml();w=""===w||w.match(t);x.enterMode===CKEDITOR.ENTER_DIV&&w&&((x= -r.getFirst())&&x.remove(),G.setStartAt(r,CKEDITOR.POSITION_AFTER_START),G.collapse(!0));if(r=H){r=q.range;if("text"==q.type&&q.inlineStylesRoot){G=q.inlineStylesPeak;x=G.getDocument().createText("{cke-peak}");for(w=q.inlineStylesRoot.getParent();!G.equals(w);)x=x.appendTo(G.clone()),G=G.getParent();H=x.getOuterHtml().split("{cke-peak}").join(H)}G=q.blockLimit.getName();if(/^\s+|\s+$/.test(H)&&"span"in CKEDITOR.dtd[G]){var Z='\x3cspan data-cke-marker\x3d"1"\x3e\x26nbsp;\x3c/span\x3e';H=Z+H+Z}H=q.editor.dataProcessor.toHtml(H, -{context:null,fixForBody:!1,protectedWhitespaces:!!Z,dontFilter:q.dontFilter,filter:q.editor.activeFilter,enterMode:q.editor.activeEnterMode});G=r.document.createElement("body");G.setHtml(H);Z&&(G.getFirst().remove(),G.getLast().remove());if((Z=r.startPath().block)&&(1!=Z.getChildCount()||!Z.getBogus()))a:{var U;if(1==G.getChildCount()&&a(U=G.getFirst())&&U.is(y)&&!U.hasAttribute("contenteditable")){Z=U.getElementsByTag("*");r=0;for(w=Z.count();r<w;r++)if(x=Z.getItem(r),!x.is(u))break a;U.moveChildren(U.getParent(1)); -U.remove()}}q.dataWrapper=G;r=H}if(r){U=q.range;r=U.document;G=q.blockLimit;w=0;var V,Z=[],ga,N;H=S=0;var R,x=U.startContainer;ba=q.endPath.elements[0];var ea,p=ba.getPosition(x),z=!!ba.getCommonAncestor(x)&&p!=CKEDITOR.POSITION_IDENTICAL&&!(p&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED),x=b(q.dataWrapper,q);for(n(x,U);w<x.length;w++){p=x[w];if(C=p.isLineBreak)C=U,J=G,aa=W=void 0,p.hasBlockSibling?C=1:(W=C.startContainer.getAscendant(m.$block,1))&&W.is({div:1,p:1})?(aa=W.getPosition(J), -aa==CKEDITOR.POSITION_IDENTICAL||aa==CKEDITOR.POSITION_CONTAINS?C=0:(J=C.splitElement(W),C.moveToPosition(J,CKEDITOR.POSITION_AFTER_START),C=1)):C=0;if(C)H=0<w;else{C=U.startPath();!p.isBlock&&k(q.editor,C.block,C.blockLimit)&&(N=l(q.editor))&&(N=r.createElement(N),N.appendBogus(),U.insertNode(N),CKEDITOR.env.needsBrFiller&&(V=N.getBogus())&&V.remove(),U.moveToPosition(N,CKEDITOR.POSITION_BEFORE_END));if((C=U.startPath().block)&&!C.equals(ga)){if(V=C.getBogus())V.remove(),Z.push(C);ga=C}p.firstNotAllowed&& -(S=1);if(S&&p.isElement){C=U.startContainer;for(J=null;C&&!m[C.getName()][p.name];){if(C.equals(G)){C=null;break}J=C;C=C.getParent()}if(C)J&&(R=U.splitElement(J),q.zombies.push(R),q.zombies.push(J));else{J=G.getName();ea=!w;C=w==x.length-1;J=d(p.node,J);W=[];aa=J.length;for(var ca=0,ia=void 0,ha=0,fa=-1;ca<aa;ca++)ia=J[ca]," "==ia?(ha||ea&&!ca||(W.push(new CKEDITOR.dom.text(" ")),fa=W.length),ha=1):(W.push(ia),ha=0);C&&fa==W.length&&W.pop();ea=W}}if(ea){for(;C=ea.pop();)U.insertNode(C);ea=0}else U.insertNode(p.node); -p.lastNotAllowed&&w<x.length-1&&((R=z?ba:R)&&U.setEndAt(R,CKEDITOR.POSITION_AFTER_START),S=0);U.collapse()}}1!=x.length?V=!1:(V=x[0],V=V.isElement&&"false"==V.node.getAttribute("contenteditable"));V&&(H=!0,C=x[0].node,U.setStartAt(C,CKEDITOR.POSITION_BEFORE_START),U.setEndAt(C,CKEDITOR.POSITION_AFTER_END));q.dontMoveCaret=H;q.bogusNeededBlocks=Z}V=q.range;var ja;ea=q.bogusNeededBlocks;for(ga=V.createBookmark();N=q.zombies.pop();)N.getParent()&&(R=V.clone(),R.moveToElementEditStart(N),R.removeEmptyBlocksAtEnd()); -if(ea)for(;N=ea.pop();)CKEDITOR.env.needsBrFiller?N.appendBogus():N.append(V.document.createText(" "));for(;N=q.mergeCandidates.pop();)N.mergeSiblings();CKEDITOR.env.webkit&&V.startPath()&&(N=V.startPath(),N.block?N.block.$.normalize():N.blockLimit&&N.blockLimit.$.normalize());V.moveToBookmark(ga);if(!q.dontMoveCaret){for(N=g(V);N&&a(N)&&!N.is(m.$empty);){if(N.isBlockBoundary())V.moveToPosition(N,CKEDITOR.POSITION_BEFORE_END);else{if(f(N)&&N.getHtml().match(/(\s| )$/g)){ja=null;break}ja=V.clone(); -ja.moveToPosition(N,CKEDITOR.POSITION_BEFORE_END)}N=N.getLast(e)}ja&&V.moveToRange(ja)}}}}();x=function(){function a(c){c=new CKEDITOR.dom.walker(c);c.guard=function(a,c){if(c)return!1;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$tableContent)};c.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT};return c}function c(a,b,d){b=a.getDocument().createElement(b);a.append(b,d);return b}function b(a){var c=a.count(),d;for(c;0<c--;)d=a.getItem(c),CKEDITOR.tools.trim(d.getHtml())||(d.appendBogus(), -CKEDITOR.env.ie&&9>CKEDITOR.env.version&&d.getChildCount()&&d.getFirst().remove())}return function(d){var g=d.startContainer,e=g.getAscendant("table",1),f=!1;b(e.getElementsByTag("td"));b(e.getElementsByTag("th"));e=d.clone();e.setStart(g,0);e=a(e).lastBackward();e||(e=d.clone(),e.setEndAt(g,CKEDITOR.POSITION_BEFORE_END),e=a(e).lastForward(),f=!0);e||(e=g);e.is("table")?(d.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),d.collapse(!0),e.remove()):(e.is({tbody:1,thead:1,tfoot:1})&&(e=c(e,"tr",f)),e.is("tr")&& -(e=c(e,e.getParent().is("thead")?"th":"td",f)),(g=e.getBogus())&&g.remove(),d.moveToPosition(e,f?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END))}}();u=function(){function a(c){c=new CKEDITOR.dom.walker(c);c.guard=function(a,c){if(c)return!1;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$list)||a.is(CKEDITOR.dtd.$listItem)};c.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$listItem)};return c}return function(c){var b=c.startContainer,d=!1,g;g= -c.clone();g.setStart(b,0);g=a(g).lastBackward();g||(g=c.clone(),g.setEndAt(b,CKEDITOR.POSITION_BEFORE_END),g=a(g).lastForward(),d=!0);g||(g=b);g.is(CKEDITOR.dtd.$list)?(c.setStartAt(g,CKEDITOR.POSITION_BEFORE_START),c.collapse(!0),g.remove()):((b=g.getBogus())&&b.remove(),c.moveToPosition(g,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END),c.select())}}();z={eol:{detect:function(a,c){var b=a.range,d=b.clone(),g=b.clone(),e=new CKEDITOR.dom.elementPath(b.startContainer,c),f=new CKEDITOR.dom.elementPath(b.endContainer, -c);d.collapse(1);g.collapse();e.block&&d.checkBoundaryOfElement(e.block,CKEDITOR.END)&&(b.setStartAfter(e.block),a.prependEolBr=1);f.block&&g.checkBoundaryOfElement(f.block,CKEDITOR.START)&&(b.setEndBefore(f.block),a.appendEolBr=1)},fix:function(a,c){var b=c.getDocument(),d;a.appendEolBr&&(d=this.createEolBr(b),a.fragment.append(d));!a.prependEolBr||d&&!d.getPrevious()||a.fragment.append(this.createEolBr(b),1)},createEolBr:function(a){return a.createElement("br",{attributes:{"data-cke-eol":1}})}}, -bogus:{exclude:function(a){var c=a.range.getBoundaryNodes(),b=c.startNode,c=c.endNode;!c||!p(c)||b&&b.equals(c)||a.range.setEndBefore(c)}},tree:{rebuild:function(a,c){var b=a.range,d=b.getCommonAncestor(),g=new CKEDITOR.dom.elementPath(d,c),e=new CKEDITOR.dom.elementPath(b.startContainer,c),b=new CKEDITOR.dom.elementPath(b.endContainer,c),f;d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent());if(g.blockLimit.is({tr:1,table:1})){var h=g.contains("table").getParent();f=function(a){return!a.equals(h)}}else if(g.block&& -g.block.is(CKEDITOR.dtd.$listItem)&&(e=e.contains(CKEDITOR.dtd.$list),b=b.contains(CKEDITOR.dtd.$list),!e.equals(b))){var n=g.contains(CKEDITOR.dtd.$list).getParent();f=function(a){return!a.equals(n)}}f||(f=function(a){return!a.equals(g.block)&&!a.equals(g.blockLimit)});this.rebuildFragment(a,c,d,f)},rebuildFragment:function(a,c,b,d){for(var g;b&&!b.equals(c)&&d(b);)g=b.clone(0,1),a.fragment.appendTo(g),a.fragment=g,b=b.getParent()}},cell:{shrink:function(a){a=a.range;var c=a.startContainer,b=a.endContainer, -d=a.startOffset,g=a.endOffset;c.type==CKEDITOR.NODE_ELEMENT&&c.equals(b)&&c.is("tr")&&++d==g&&a.shrink(CKEDITOR.SHRINK_TEXT)}}};q=function(){function a(c,b){var d=c.getParent();if(d.is(CKEDITOR.dtd.$inline))c[b?"insertBefore":"insertAfter"](d)}function c(b,d,g){a(d);a(g,1);for(var e;e=g.getNext();)e.insertAfter(d),d=e;w(b)&&b.remove()}function b(a,c){var d=new CKEDITOR.dom.range(a);d.setStartAfter(c.startNode);d.setEndBefore(c.endNode);return d}return{list:{detectMerge:function(a,c){var d=b(c,a.bookmark), -g=d.startPath(),e=d.endPath(),f=g.contains(CKEDITOR.dtd.$list),h=e.contains(CKEDITOR.dtd.$list);a.mergeList=f&&h&&f.getParent().equals(h.getParent())&&!f.equals(h);a.mergeListItems=g.block&&e.block&&g.block.is(CKEDITOR.dtd.$listItem)&&e.block.is(CKEDITOR.dtd.$listItem);if(a.mergeList||a.mergeListItems)d=d.clone(),d.setStartBefore(a.bookmark.startNode),d.setEndAfter(a.bookmark.endNode),a.mergeListBookmark=d.createBookmark()},merge:function(a,b){if(a.mergeListBookmark){var d=a.mergeListBookmark.startNode, -g=a.mergeListBookmark.endNode,e=new CKEDITOR.dom.elementPath(d,b),f=new CKEDITOR.dom.elementPath(g,b);if(a.mergeList){var h=e.contains(CKEDITOR.dtd.$list),n=f.contains(CKEDITOR.dtd.$list);h.equals(n)||(n.moveChildren(h),n.remove())}a.mergeListItems&&(e=e.contains(CKEDITOR.dtd.$listItem),f=f.contains(CKEDITOR.dtd.$listItem),e.equals(f)||c(f,d,g));d.remove();g.remove()}}},block:{detectMerge:function(a,c){if(!a.tableContentsRanges&&!a.mergeListBookmark){var b=new CKEDITOR.dom.range(c);b.setStartBefore(a.bookmark.startNode); -b.setEndAfter(a.bookmark.endNode);a.mergeBlockBookmark=b.createBookmark()}},merge:function(a,b){if(a.mergeBlockBookmark&&!a.purgeTableBookmark){var d=a.mergeBlockBookmark.startNode,g=a.mergeBlockBookmark.endNode,e=new CKEDITOR.dom.elementPath(d,b),f=new CKEDITOR.dom.elementPath(g,b),e=e.block,f=f.block;e&&f&&!e.equals(f)&&c(f,d,g);d.remove();g.remove()}}},table:function(){function a(b){var g=[],e,f=new CKEDITOR.dom.walker(b),h=b.startPath().contains(d),n=b.endPath().contains(d),m={};f.guard=function(a, -f){if(a.type==CKEDITOR.NODE_ELEMENT){var k="visited_"+(f?"out":"in");if(a.getCustomData(k))return;CKEDITOR.dom.element.setMarker(m,a,k,1)}if(f&&h&&a.equals(h))e=b.clone(),e.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),g.push(e);else if(!f&&n&&a.equals(n))e=b.clone(),e.setStartAt(n,CKEDITOR.POSITION_AFTER_START),g.push(e);else{if(k=!f)k=a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&(!h||c(a,h))&&(!n||c(a,n));if(!k&&(k=f))if(a.is(d))var k=h&&h.getAscendant("table",!0),l=n&&n.getAscendant("table",!0),r=a.getAscendant("table", -!0),k=k&&k.contains(r)||l&&l.contains(r);else k=void 0;k&&(e=b.clone(),e.selectNodeContents(a),g.push(e))}};f.lastForward();CKEDITOR.dom.element.clearAllMarkers(m);return g}function c(a,b){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED,g=a.getPosition(b);return g===CKEDITOR.POSITION_IDENTICAL?!1:0===(g&d)}var d={td:1,th:1,caption:1};return{detectPurge:function(a){var c=a.range,b=c.clone();b.enlarge(CKEDITOR.ENLARGE_ELEMENT);var b=new CKEDITOR.dom.walker(b),g=0;b.evaluator=function(a){a.type== -CKEDITOR.NODE_ELEMENT&&a.is(d)&&++g};b.checkForward();if(1<g){var b=c.startPath().contains("table"),e=c.endPath().contains("table");b&&e&&c.checkBoundaryOfElement(b,CKEDITOR.START)&&c.checkBoundaryOfElement(e,CKEDITOR.END)&&(c=a.range.clone(),c.setStartBefore(b),c.setEndAfter(e),a.purgeTableBookmark=c.createBookmark())}},detectRanges:function(g,e){var f=b(e,g.bookmark),h=f.clone(),n,m,k=f.getCommonAncestor();k.is(CKEDITOR.dtd.$tableContent)&&!k.is(d)&&(k=k.getAscendant("table",!0));m=k;k=new CKEDITOR.dom.elementPath(f.startContainer, -m);m=new CKEDITOR.dom.elementPath(f.endContainer,m);k=k.contains("table");m=m.contains("table");if(k||m)k&&m&&c(k,m)?(g.tableSurroundingRange=h,h.setStartAt(k,CKEDITOR.POSITION_AFTER_END),h.setEndAt(m,CKEDITOR.POSITION_BEFORE_START),h=f.clone(),h.setEndAt(k,CKEDITOR.POSITION_AFTER_END),n=f.clone(),n.setStartAt(m,CKEDITOR.POSITION_BEFORE_START),n=a(h).concat(a(n))):k?m||(g.tableSurroundingRange=h,h.setStartAt(k,CKEDITOR.POSITION_AFTER_END),f.setEndAt(k,CKEDITOR.POSITION_AFTER_END)):(g.tableSurroundingRange= -h,h.setEndAt(m,CKEDITOR.POSITION_BEFORE_START),f.setStartAt(m,CKEDITOR.POSITION_AFTER_START)),g.tableContentsRanges=n?n:a(f)},deleteRanges:function(a){for(var c;c=a.tableContentsRanges.pop();)c.extractContents(),w(c.startContainer)&&c.startContainer.appendBogus();a.tableSurroundingRange&&a.tableSurroundingRange.extractContents()},purge:function(a){if(a.purgeTableBookmark){var c=a.doc,b=a.range.clone(),c=c.createElement("p");c.insertBefore(a.purgeTableBookmark.startNode);b.moveToBookmark(a.purgeTableBookmark); -b.deleteContents();a.range.moveToPosition(c,CKEDITOR.POSITION_AFTER_START)}}}}(),detectExtractMerge:function(a){return!(a.range.startPath().contains(CKEDITOR.dtd.$listItem)&&a.range.endPath().contains(CKEDITOR.dtd.$listItem))},fixUneditableRangePosition:function(a){a.startContainer.getDtd()["#"]||a.moveToClosestEditablePosition(null,!0)},autoParagraph:function(a,c){var b=c.startPath(),d;k(a,b.block,b.blockLimit)&&(d=l(a))&&(d=c.document.createElement(d),d.appendBogus(),c.insertNode(d),c.moveToPosition(d, +a.attributes;if(c){if(c["data-cke-temp"])return!1;for(var d=["name","href","src"],b,g=0;g<d.length;g++)b="data-cke-saved-"+d[g],b in c&&delete c[d[g]]}return a},table:function(a){a.children.slice(0).sort(function(a,c){var d,b;a.type==CKEDITOR.NODE_ELEMENT&&c.type==a.type&&(d=CKEDITOR.tools.indexOf(u,a.name),b=CKEDITOR.tools.indexOf(u,c.name));-1<d&&-1<b&&d!=b||(d=a.parent?a.getIndex():-1,b=c.parent?c.getIndex():-1);return d>b?1:-1})},param:function(a){a.children=[];a.isEmpty=!0;return a},span:function(a){"Apple-style-span"== +a.attributes["class"]&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var c=a.children[0];c&&c.value&&(c.value=CKEDITOR.tools.trim(c.value));a.attributes.type||(a.attributes.type="text/css")},title:function(a){var c=a.children[0];!c&&l(a,c=new CKEDITOR.htmlParser.text);c.value=a.attributes["data-cke-title"]||""},input:c,textarea:c},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g, +""))||!1}}};CKEDITOR.env.ie&&(E.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})});var F=/<(a|area|img|input|source)\b([^>]*)>/gi,K=/([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,M=/^(href|src|name)$/i,D=/(?:<style(?=[ >])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,N=/(<textarea(?=[ >])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,I=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,L=/(<\/?)((?:object|embed|param|html|body|head|title)([\s][^>]*)?>)/gi, +R=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,H=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi;r=function(){function a(c,d){for(var b=0;b<c.length;b++){var g=c[b];g.lastIndex=0;if(g.test(d))return!0}return!1}function c(a){return CKEDITOR.tools.array.reduce(a.split(""),function(a,c){var b=c.toLowerCase(),g=c.toUpperCase(),e=d(b);b!==g&&(e+="|"+d(g));return a+("("+e+")")},"")}function d(a){var c;c=a.charCodeAt(0);var b=c.toString(16);c={htmlCode:"\x26#"+c+";?",hex:"\x26#x0*"+b+";?",entity:{"\x3c":"\x26lt;", +"\x3e":"\x26gt;",":":"\x26colon;"}[a]};for(var g in c)c[g]&&(a+="|"+c[g]);return a}var b=[new RegExp("("+c("\x3ccke:encoded\x3e")+"(.*?)"+c("\x3c/cke:encoded\x3e")+")|("+c("\x3c")+c("/")+"?"+c("cke:encoded\x3e")+")","gi"),new RegExp("(("+c("{cke_protected")+")(_[0-9]*)?"+c("}")+")","gi"),/<!(?:\s*-\s*){2,3}!?\s*>/g];return function(c){for(;a(b,c);)for(var d=b,g=0;g<d.length;g++)c=c.replace(d[g],"");return c}}()}(),"use strict",CKEDITOR.htmlParser.element=function(b,h){this.name=b;this.attributes= +h||{};this.children=[];var f=b||"",e=f.match(/^cke:(.*)/);e&&(f=e[1]);f=!!(CKEDITOR.dtd.$nonBodyContent[f]||CKEDITOR.dtd.$block[f]||CKEDITOR.dtd.$listItem[f]||CKEDITOR.dtd.$tableContent[f]||CKEDITOR.dtd.$nonEditable[f]||"br"==f);this.isEmpty=!!CKEDITOR.dtd.$empty[b];this.isUnknown=!CKEDITOR.dtd[b];this._={isBlockLike:f,hasInlineStarted:this.isEmpty||!f}},CKEDITOR.htmlParser.cssStyle=function(b){var h={};((b instanceof CKEDITOR.htmlParser.element?b.attributes.style:b)||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, +function(b,e,a){"font-family"==e&&(a=a.replace(/["']/g,""));h[e.toLowerCase()]=a});return{rules:h,populate:function(b){var e=this.toString();e&&(b instanceof CKEDITOR.dom.element?b.setAttribute("style",e):b instanceof CKEDITOR.htmlParser.element?b.attributes.style=e:b.style=e)},toString:function(){var b=[],e;for(e in h)h[e]&&b.push(e,":",h[e],";");return b.join("")}}},function(){function b(b){return function(a){return a.type==CKEDITOR.NODE_ELEMENT&&("string"==typeof b?a.name==b:a.name in b)}}var h= +function(b,a){b=b[0];a=a[0];return b<a?-1:b>a?1:0},f=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:f.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(b,a){var f=this,h,m;a=f.getFilterContext(a);if(!f.parent)b.onRoot(a,f);for(;;){h=f.name;if(!(m=b.onElementName(a,h)))return this.remove(),!1;f.name=m;if(!(f=b.onElement(a,f)))return this.remove(), +!1;if(f!==this)return this.replaceWith(f),!1;if(f.name==h)break;if(f.type!=CKEDITOR.NODE_ELEMENT)return this.replaceWith(f),!1;if(!f.name)return this.replaceWithChildren(),!1}h=f.attributes;var c,d;for(c in h){for(m=h[c];;)if(d=b.onAttributeName(a,c))if(d!=c)delete h[c],c=d;else break;else{delete h[c];break}d&&(!1===(m=b.onAttribute(a,f,d,m))?delete h[d]:h[d]=m)}f.isEmpty||this.filterChildren(b,!1,a);return!0},filterChildren:f.filterChildren,writeHtml:function(b,a){a&&this.filter(a);var f=this.name, +l=[],m=this.attributes,c,d;b.openTag(f,m);for(c in m)l.push([c,m[c]]);b.sortAttributes&&l.sort(h);c=0;for(d=l.length;c<d;c++)m=l[c],b.attribute(m[0],m[1]);b.openTagClose(f,this.isEmpty);this.writeChildrenHtml(b);this.isEmpty||b.closeTag(f)},writeChildrenHtml:f.writeChildrenHtml,replaceWithChildren:function(){for(var b=this.children,a=b.length;a;)b[--a].insertAfter(this);this.remove()},forEach:f.forEach,getFirst:function(e){if(!e)return this.children.length?this.children[0]:null;"function"!=typeof e&& +(e=b(e));for(var a=0,f=this.children.length;a<f;++a)if(e(this.children[a]))return this.children[a];return null},getHtml:function(){var b=new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml(b);return b.getHtml()},setHtml:function(b){b=this.children=CKEDITOR.htmlParser.fragment.fromHtml(b).children;for(var a=0,f=b.length;a<f;++a)b[a].parent=this},getOuterHtml:function(){var b=new CKEDITOR.htmlParser.basicWriter;this.writeHtml(b);return b.getHtml()},split:function(b){for(var a=this.children.splice(b, +this.children.length-b),f=this.clone(),h=0;h<a.length;++h)a[h].parent=f;f.children=a;a[0]&&(a[0].previous=null);0<b&&(this.children[b-1].next=null);this.parent.add(f,this.getIndex()+1);return f},find:function(b,a){void 0===a&&(a=!1);var f=[],h;for(h=0;h<this.children.length;h++){var m=this.children[h];"function"==typeof b&&b(m)?f.push(m):"string"==typeof b&&m.name===b&&f.push(m);a&&m.find&&(f=f.concat(m.find(b,a)))}return f},findOne:function(b,a){var f=null,h=CKEDITOR.tools.array.find(this.children, +function(h){var c="function"===typeof b?b(h):h.name===b;if(c||!a)return c;h.children&&h.findOne&&(f=h.findOne(b,!0));return!!f});return f||h||null},addClass:function(b){if(!this.hasClass(b)){var a=this.attributes["class"]||"";this.attributes["class"]=a+(a?" ":"")+b}},removeClass:function(b){var a=this.attributes["class"];a&&((a=CKEDITOR.tools.trim(a.replace(new RegExp("(?:\\s+|^)"+b+"(?:\\s+|$)")," ")))?this.attributes["class"]=a:delete this.attributes["class"])},hasClass:function(b){var a=this.attributes["class"]; +return a?(new RegExp("(?:^|\\s)"+b+"(?\x3d\\s|$)")).test(a):!1},getFilterContext:function(b){var a=[];b||(b={nonEditable:!1,nestedEditable:!1});b.nonEditable||"false"!=this.attributes.contenteditable?b.nonEditable&&!b.nestedEditable&&"true"==this.attributes.contenteditable&&a.push("nestedEditable",!0):a.push("nonEditable",!0);if(a.length){b=CKEDITOR.tools.copy(b);for(var f=0;f<a.length;f+=2)b[a[f]]=a[f+1]}return b}},!0)}(),function(){var b=/{([^}]+)}/g;CKEDITOR.template=function(b){this.source="function"=== +typeof b?b:String(b)};CKEDITOR.template.prototype.output=function(h,f){var e=("function"===typeof this.source?this.source(h):this.source).replace(b,function(a,b){return void 0!==h[b]?h[b]:a});return f?f.push(e):e}}(),delete CKEDITOR.loadFullCore,CKEDITOR.instances={},CKEDITOR.document=new CKEDITOR.dom.document(document),CKEDITOR.add=function(b){function h(){CKEDITOR.currentInstance==b&&(CKEDITOR.currentInstance=null,CKEDITOR.fire("currentInstance"))}CKEDITOR.instances[b.name]=b;b.on("focus",function(){CKEDITOR.currentInstance!= +b&&(CKEDITOR.currentInstance=b,CKEDITOR.fire("currentInstance"))});b.on("blur",h);b.on("destroy",h);CKEDITOR.fire("instance",null,b)},CKEDITOR.remove=function(b){delete CKEDITOR.instances[b.name]},function(){var b={};CKEDITOR.addTemplate=function(h,f){var e=b[h];if(e)return e;e={name:h,source:f};CKEDITOR.fire("template",e);return b[h]=new CKEDITOR.template(e.source)};CKEDITOR.getTemplate=function(h){return b[h]}}(),function(){var b=[];CKEDITOR.addCss=function(h){b.push(h)};CKEDITOR.getCss=function(){return b.join("\n")}}(), +CKEDITOR.on("instanceDestroyed",function(){CKEDITOR.tools.isEmpty(this.instances)&&CKEDITOR.fire("reset")}),CKEDITOR.TRISTATE_ON=1,CKEDITOR.TRISTATE_OFF=2,CKEDITOR.TRISTATE_DISABLED=0,function(){CKEDITOR.inline=function(b,h){b=CKEDITOR.editor._getEditorElement(b);if(!b)return null;if(CKEDITOR.editor.shouldDelayEditorCreation(b,h))return CKEDITOR.editor.initializeDelayedEditorCreation(b,h,"inline"),null;var f=b.is("textarea")?b:null,e=f?f.getValue():b.getHtml(),a=new CKEDITOR.editor(h,b,CKEDITOR.ELEMENT_MODE_INLINE); +f?(a.setData(e,null,!0),b=CKEDITOR.dom.element.createFromHtml('\x3cdiv contenteditable\x3d"'+!!a.readOnly+'" class\x3d"cke_textarea_inline"\x3e'+f.getValue()+"\x3c/div\x3e",CKEDITOR.document),b.insertAfter(f),f.hide(),f.$.form&&a._attachToForm()):(h&&"undefined"!==typeof h.readOnly&&!h.readOnly&&b.setAttribute("contenteditable","true"),a.setData(e,null,!0));a.on("loaded",function(){a.fire("uiReady");a.editable(b);a.container=b;a.ui.contentsElement=b;a.setData(a.getData(1));a.resetDirty();a.fire("contentDom"); +a.mode="wysiwyg";a.fire("mode");a.status="ready";a.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,a)},null,null,1E4);a.on("destroy",function(){var b=a.container;f&&b&&(b.clearCustomData(),b.remove());f&&f.show();a.element.clearCustomData();delete a.element});return a};CKEDITOR.inlineAll=function(){var b,h,f;for(f in CKEDITOR.dtd.$editable)for(var e=CKEDITOR.document.getElementsByTag(f),a=0,k=e.count();a<k;a++)b=e.getItem(a),"true"!=b.getAttribute("contenteditable")||b.getEditor()||(h= +{element:b,config:{}},!1!==CKEDITOR.fire("inline",h)&&CKEDITOR.inline(b,h.config))};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})}(),CKEDITOR.replaceClass="ckeditor",function(){function b(b,a,k,l){b=CKEDITOR.editor._getEditorElement(b);if(!b)return null;if(CKEDITOR.editor.shouldDelayEditorCreation(b,a))return CKEDITOR.editor.initializeDelayedEditorCreation(b,a,"replace"),null;var m=new CKEDITOR.editor(a,b,l);l==CKEDITOR.ELEMENT_MODE_REPLACE&&(b.setStyle("visibility", +"hidden"),m._.required=b.hasAttribute("required"),b.removeAttribute("required"));k&&m.setData(k,null,!0);m.on("loaded",function(){m.isDestroyed()||m.isDetached()||(f(m),l==CKEDITOR.ELEMENT_MODE_REPLACE&&m.config.autoUpdateElement&&b.$.form&&m._attachToForm(),m.setMode(m.config.startupMode,function(){m.resetDirty();m.status="ready";m.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,m)}))});m.on("destroy",h);return m}function h(){var b=this.container,a=this.element;b&&(b.clearCustomData(), +b.remove());a&&(a.clearCustomData(),this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(a.show(),this._.required&&a.setAttribute("required","required")),delete this.element)}function f(b){var a=b.name,f=b.element,h=b.elementMode,m=b.fire("uiSpace",{space:"top",html:""}).html,c=b.fire("uiSpace",{space:"bottom",html:""}).html,d=new CKEDITOR.template('\x3c{outerEl} id\x3d"cke_{name}" class\x3d"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"application"'+ +(b.title?' aria-labelledby\x3d"cke_{name}_arialbl"':"")+"\x3e"+(b.title?'\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e':"")+'\x3c{outerEl} class\x3d"cke_inner cke_reset" role\x3d"presentation"\x3e{topHtml}\x3c{outerEl} id\x3d"{contentId}" class\x3d"cke_contents cke_reset" role\x3d"presentation"\x3e\x3c/{outerEl}\x3e{bottomHtml}\x3c/{outerEl}\x3e\x3c/{outerEl}\x3e'),a=CKEDITOR.dom.element.createFromHtml(d.output({id:b.id,name:a,langDir:b.lang.dir,langCode:b.langCode, +voiceLabel:b.title,topHtml:m?'\x3cspan id\x3d"'+b.ui.spaceId("top")+'" class\x3d"cke_top cke_reset_all" role\x3d"presentation" style\x3d"height:auto"\x3e'+m+"\x3c/span\x3e":"",contentId:b.ui.spaceId("contents"),bottomHtml:c?'\x3cspan id\x3d"'+b.ui.spaceId("bottom")+'" class\x3d"cke_bottom cke_reset_all" role\x3d"presentation"\x3e'+c+"\x3c/span\x3e":"",outerEl:CKEDITOR.env.ie?"span":"div"}));h==CKEDITOR.ELEMENT_MODE_REPLACE?(f.hide(),a.insertAfter(f)):f.append(a);b.container=a;b.ui.contentsElement= +b.ui.space("contents");m&&b.ui.space("top").unselectable();c&&b.ui.space("bottom").unselectable();f=b.config.width;h=b.config.height;f&&a.setStyle("width",CKEDITOR.tools.cssLength(f));h&&b.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(h));a.disableContextMenu();CKEDITOR.env.webkit&&a.on("focus",function(){b.focus()});b.fireOnce("uiReady")}CKEDITOR.replace=function(e,a){return b(e,a,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(e,a,f){return b(e,a,f,CKEDITOR.ELEMENT_MODE_APPENDTO)}; +CKEDITOR.replaceAll=function(){for(var b=document.getElementsByTagName("textarea"),a=0;a<b.length;a++){var f=null,h=b[a];if(h.name||h.id){if("string"==typeof arguments[0]){if(!(new RegExp("(?:^|\\s)"+arguments[0]+"(?:$|\\s)")).test(h.className))continue}else if("function"==typeof arguments[0]&&(f={},!1===arguments[0](h,f)))continue;this.replace(h,f)}}};CKEDITOR.editor.prototype.addMode=function(b,a){(this._.modes||(this._.modes={}))[b]=a};CKEDITOR.editor.prototype.setMode=function(b,a){var f=this, +h=this._.modes;if(b!=f.mode&&h&&h[b]){f.fire("beforeSetMode",b);if(f.mode){var m=f.checkDirty(),h=f._.previousModeData,c,d=0;f.fire("beforeModeUnload");f.editable(0);f._.previousMode=f.mode;f._.previousModeData=c=f.getData(1);"source"==f.mode&&h==c&&(f.fire("lockSnapshot",{forceUpdate:!0}),d=1);f.ui.space("contents").setHtml("");f.mode=""}else f._.previousModeData=f.getData(1);this._.modes[b](function(){f.mode=b;void 0!==m&&!m&&f.resetDirty();d?f.fire("unlockSnapshot"):"wysiwyg"==b&&f.fire("saveSnapshot"); +setTimeout(function(){f.isDestroyed()||f.isDetached()||(f.fire("mode"),a&&a.call(f))},0)})}};CKEDITOR.editor.prototype.resize=function(b,a,f,h){var m=this.container,c=this.ui.space("contents"),d=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement;h=h?this.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}):m;if(b||0===b)b=CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(b));h.setSize("width",b,!0);d&&(d.style.width="1%");a=CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(a)); +var g=(h.$.offsetHeight||0)-(c.$.clientHeight||0),m=Math.max(a-(f?0:g),0);a=f?a+g:a;c.setStyle("height",CKEDITOR.tools.cssLength(m));d&&(d.style.width="100%");this.fire("resize",{outerHeight:a,contentsHeight:m,outerWidth:b||h.getSize("width")})};CKEDITOR.editor.prototype.getResizable=function(b){return b?this.ui.space("contents"):this.container};CKEDITOR.domReady(function(){CKEDITOR.replaceClass&&CKEDITOR.replaceAll(CKEDITOR.replaceClass)})}(),CKEDITOR.config.startupMode="wysiwyg",function(){function b(a){var c= +a.editor,b=a.data.path,d=b.blockLimit,g=a.data.selection,f=g.getRanges()[0],k;if(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)if(g=h(g,b))g.appendBogus(),k=CKEDITOR.env.ie&&!CKEDITOR.env.edge||CKEDITOR.env.edge&&c._.previousActive;l(c,b.block,d)&&f.collapsed&&!f.getCommonAncestor().isReadOnly()&&(b=f.clone(),b.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS),d=new CKEDITOR.dom.walker(b),d.guard=function(a){return!e(a)||a.type==CKEDITOR.NODE_COMMENT||a.isReadOnly()},!d.checkForward()||b.checkStartOfBlock()&& +b.checkEndOfBlock())&&(c=f.fixBlock(!0,c.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p"),CKEDITOR.env.needsBrFiller||(c=c.getFirst(e))&&c.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(c.getText()).match(/^(?: |\xa0)$/)&&c.remove(),k=1,a.cancel());k&&f.select()}function h(a,c){if(a.isFake)return 0;var b=c.block||c.blockLimit,d=b&&b.getLast(e);if(!(!b||!b.isBlockBoundary()||d&&d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()||b.is("pre")||b.getBogus()))return b}function f(a){var c=a.data.getTarget(); +c.is("input")&&(c=c.getAttribute("type"),"submit"!=c&&"reset"!=c||a.data.preventDefault())}function e(a){return n(a)&&y(a)}function a(a,c){return function(b){var d=b.data.$.toElement||b.data.$.fromElement||b.data.$.relatedTarget;(d=d&&d.nodeType==CKEDITOR.NODE_ELEMENT?new CKEDITOR.dom.element(d):null)&&(c.equals(d)||c.contains(d))||a.call(this,b)}}function k(a){function c(a){return function(c,d){d&&c.type==CKEDITOR.NODE_ELEMENT&&c.is(g)&&(b=c);if(!(d||!e(c)||a&&p(c)))return!1}}var b,d=a.getRanges()[0]; +a=a.root;var g={table:1,ul:1,ol:1,dl:1};if(d.startPath().contains(g)){var f=d.clone();f.collapse(1);f.setStartAt(a,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(f);a.guard=c();a.checkBackward();if(b)return f=d.clone(),f.collapse(),f.setEndAt(b,CKEDITOR.POSITION_AFTER_END),a=new CKEDITOR.dom.walker(f),a.guard=c(!0),b=!1,a.checkForward(),b}return null}function l(a,c,b){return!1!==a.config.autoParagraph&&a.activeEnterMode!=CKEDITOR.ENTER_BR&&(a.editable().equals(b)&&!c||c&&"true"==c.getAttribute("contenteditable"))} +function m(a){return a.activeEnterMode!=CKEDITOR.ENTER_BR&&!1!==a.config.autoParagraph?a.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p":!1}function c(a){a&&a.isEmptyInlineRemoveable()&&a.remove()}function d(a){var c=a.editor;c.getSelection().scrollIntoView();setTimeout(function(){c.fire("saveSnapshot")},0)}function g(a,c,b){var d=a.getCommonAncestor(c);for(c=a=b?c:a;(a=a.getParent())&&!d.equals(a)&&1==a.getChildCount();)c=a;c.remove()}var n,y,v,p,q,r,x,t,z,u;CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element, +$:function(a,c){this.base(c.$||c);this.editor=a;this.status="unloaded";this.hasFocus=!1;this.setup()},proto:{focus:function(){var a;if(CKEDITOR.env.webkit&&!this.hasFocus&&(a=this.editor._.previousActive||this.getDocument().getActive(),this.contains(a))){a.focus();return}CKEDITOR.env.edge&&14<CKEDITOR.env.version&&!this.hasFocus&&this.getDocument().equals(CKEDITOR.document)&&(this.editor._.previousScrollTop=this.$.scrollTop);try{if(!CKEDITOR.env.ie||CKEDITOR.env.edge&&14<CKEDITOR.env.version||!this.getDocument().equals(CKEDITOR.document))if(CKEDITOR.env.chrome){var c= +this.$.scrollTop;this.$.focus();this.$.scrollTop=c}else this.$.focus();else this.$.setActive()}catch(b){if(!CKEDITOR.env.ie)throw b;}CKEDITOR.env.safari&&!this.isInline()&&(a=CKEDITOR.document.getActive(),a.equals(this.getWindow().getFrame())||this.getWindow().focus())},on:function(c,b){var d=Array.prototype.slice.call(arguments,0);CKEDITOR.env.ie&&/^focus|blur$/.exec(c)&&(c="focus"==c?"focusin":"focusout",b=a(b,this),d[0]=c,d[1]=b);return CKEDITOR.dom.element.prototype.on.apply(this,d)},attachListener:function(a){!this._.listeners&& +(this._.listeners=[]);var c=Array.prototype.slice.call(arguments,1),c=a.on.apply(a,c);this._.listeners.push(c);return c},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(c){}},restoreAttrs:function(){var a=this._.attrChanges,c,b;for(b in a)a.hasOwnProperty(b)&&(c=a[b],null!==c?this.setAttribute(b,c):this.removeAttribute(b))},attachClass:function(a){var c=this.getCustomData("classes");this.hasClass(a)||(!c&&(c=[]),c.push(a),this.setCustomData("classes", +c),this.addClass(a))},changeAttr:function(a,c){var b=this.getAttribute(a);c!==b&&(!this._.attrChanges&&(this._.attrChanges={}),a in this._.attrChanges||(this._.attrChanges[a]=b),this.setAttribute(a,c))},insertText:function(a){this.editor.focus();this.insertHtml(this.transformPlainTextToHtml(a),"text")},transformPlainTextToHtml:function(a){var c=this.editor.getSelection().getStartElement().hasAscendant("pre",!0)?CKEDITOR.ENTER_BR:this.editor.activeEnterMode;return CKEDITOR.tools.transformPlainTextToHtml(a, +c)},insertHtml:function(a,c,b){var g=this.editor;g.focus();g.fire("saveSnapshot");b||(b=g.getSelection().getRanges()[0]);r(this,c||"html",a,b);b.select();d(this);this.editor.fire("afterInsertHtml",{})},insertHtmlIntoRange:function(a,c,b){r(this,b||"html",a,c);this.editor.fire("afterInsertHtml",{intoRange:c})},insertElement:function(a,c){var b=this.editor;b.focus();b.fire("saveSnapshot");var g=b.activeEnterMode,b=b.getSelection(),f=a.getName(),f=CKEDITOR.dtd.$block[f];c||(c=b.getRanges()[0]);this.insertElementIntoRange(a, +c)&&(c.moveToPosition(a,CKEDITOR.POSITION_AFTER_END),f&&((f=a.getNext(function(a){return e(a)&&!p(a)}))&&f.type==CKEDITOR.NODE_ELEMENT&&f.is(CKEDITOR.dtd.$block)?f.getDtd()["#"]?c.moveToElementEditStart(f):c.moveToElementEditEnd(a):f||g==CKEDITOR.ENTER_BR||(f=c.fixBlock(!0,g==CKEDITOR.ENTER_DIV?"div":"p"),c.moveToElementEditStart(f))));b.selectRanges([c]);d(this)},insertElementIntoSelection:function(a){this.insertElement(a)},insertElementIntoRange:function(a,b){var d=this.editor,g=d.config.enterMode, +e=a.getName(),f=CKEDITOR.dtd.$block[e];if(b.checkReadOnly())return!1;b.deleteContents(1);b.startContainer.type==CKEDITOR.NODE_ELEMENT&&(b.startContainer.is({tr:1,table:1,tbody:1,thead:1,tfoot:1})?x(b):b.startContainer.is(CKEDITOR.dtd.$list)&&t(b));var h,k;if(f)for(;(h=b.getCommonAncestor(0,1))&&(k=CKEDITOR.dtd[h.getName()])&&(!k||!k[e]);)if(h.getName()in CKEDITOR.dtd.span){var f=b.splitElement(h),n=b.createBookmark();c(h);c(f);b.moveToBookmark(n)}else b.checkStartOfBlock()&&b.checkEndOfBlock()?(b.setStartBefore(h), +b.collapse(!0),h.remove()):b.splitBlock(g==CKEDITOR.ENTER_DIV?"div":"p",d.editable());b.insertNode(a);return!0},setData:function(a,c){c||(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.fixInitialSelection();"unloaded"==this.status&&(this.status="ready");this.editor.fire("dataReady")},getData:function(a){var c=this.getHtml();a||(c=this.editor.dataProcessor.toDataFormat(c));return c},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.status="detached"; +this.editor.setData(this.editor.getData(),{internal:!0});this.clearListeners();try{this._.cleanCustomData()}catch(a){if(!CKEDITOR.env.ie||-2146828218!==a.number)throw a;}this.editor.fire("contentDomUnload");delete this.editor.document;delete this.editor.window;delete this.editor},isInline:function(){return this.getDocument().equals(CKEDITOR.document)},fixInitialSelection:function(){function a(){var c=b.getDocument().$,d=c.getSelection(),g;a:if(d.anchorNode&&d.anchorNode==b.$)g=!0;else{if(CKEDITOR.env.webkit&& +(g=b.getDocument().getActive())&&g.equals(b)&&!d.anchorNode){g=!0;break a}g=void 0}g&&(g=new CKEDITOR.dom.range(b),g.moveToElementEditStart(b),c=c.createRange(),c.setStart(g.startContainer.$,g.startOffset),c.collapse(!0),d.removeAllRanges(),d.addRange(c))}function c(){var a=b.getDocument().$,d=a.selection,g=b.getDocument().getActive();"None"==d.type&&g.equals(b)&&(d=new CKEDITOR.dom.range(b),a=a.body.createTextRange(),d.moveToElementEditStart(b),d=d.startContainer,d.type!=CKEDITOR.NODE_ELEMENT&&(d= +d.getParent()),a.moveToElementText(d.$),a.collapse(!0),a.select())}var b=this;if(CKEDITOR.env.ie&&(9>CKEDITOR.env.version||CKEDITOR.env.quirks))this.hasFocus&&(this.focus(),c());else if(this.hasFocus)this.focus(),a();else this.once("focus",function(){a()},null,null,-999)},getHtmlFromRange:function(a){if(a.collapsed)return new CKEDITOR.dom.documentFragment(a.document);a={doc:this.getDocument(),range:a.clone()};z.eol.detect(a,this);z.bogus.exclude(a);z.cell.shrink(a);a.fragment=a.range.cloneContents(); +z.tree.rebuild(a,this);z.eol.fix(a,this);return new CKEDITOR.dom.documentFragment(a.fragment.$)},extractHtmlFromRange:function(a,c){var b=u,d={range:a,doc:a.document},g=this.getHtmlFromRange(a);if(a.collapsed)return a.optimize(),g;a.enlarge(CKEDITOR.ENLARGE_INLINE,1);b.table.detectPurge(d);d.bookmark=a.createBookmark();delete d.range;var e=this.editor.createRange();e.moveToPosition(d.bookmark.startNode,CKEDITOR.POSITION_BEFORE_START);d.targetBookmark=e.createBookmark();b.list.detectMerge(d,this); +b.table.detectRanges(d,this);b.block.detectMerge(d,this);d.tableContentsRanges?(b.table.deleteRanges(d),a.moveToBookmark(d.bookmark),d.range=a):(a.moveToBookmark(d.bookmark),d.range=a,a.extractContents(b.detectExtractMerge(d)));a.moveToBookmark(d.targetBookmark);a.optimize();b.fixUneditableRangePosition(a);b.list.merge(d,this);b.table.purge(d,this);b.block.merge(d,this);if(c){b=a.startPath();if(d=a.checkStartOfBlock()&&a.checkEndOfBlock()&&b.block&&!a.root.equals(b.block)){a:{var d=b.block.getElementsByTag("span"), +e=0,f;if(d)for(;f=d.getItem(e++);)if(!y(f)){d=!0;break a}d=!1}d=!d}d&&(a.moveToPosition(b.block,CKEDITOR.POSITION_BEFORE_START),b.block.remove())}else b.autoParagraph(this.editor,a),v(a.startContainer)&&a.startContainer.appendBogus();a.startContainer.mergeSiblings();return g},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var c=this.getData();this.is("textarea")||!1!==a.config.ignoreEmptyParagraph&&(c=c.replace(q,function(a,c){return c}));a.setData(c,null,1)}, +this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus",function(){var c=a.getSelection();(c=c&&c.getNative())&&"Control"==c.type||this.focus()},this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode,a.data.range)},this);this.attachListener(a, +"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?this.attachClass("cke_editable_inline"):a.elementMode!=CKEDITOR.ELEMENT_MODE_REPLACE&&a.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO||this.attachClass("cke_editable_themed");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]= ++a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(){this.hasFocus=!1},null,null,-1);this.on("focus",function(){this.hasFocus=!0},null,null,-1);if(CKEDITOR.env.webkit)this.on("scroll",function(){a._.previousScrollTop=a.editable().$.scrollTop},null,null,-1);if(CKEDITOR.env.edge&&14<CKEDITOR.env.version){var c=function(){var b=a.editable();null!=a._.previousScrollTop&&b.getDocument().equals(CKEDITOR.document)&&(b.$.scrollTop=a._.previousScrollTop,a._.previousScrollTop=null,this.removeListener("scroll", +c))};this.on("scroll",c)}a.focusManager.add(this);this.equals(CKEDITOR.document.getActive())&&(this.hasFocus=!0,a.once("contentDom",function(){a.focusManager.focus(this)},this));this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var b=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var d=a.config.contentsLangDirection;this.getDirection(1)!=d&&this.changeAttr("dir",d);var h=CKEDITOR.getCss(); +if(h){var d=b.getHead(),l=d.getCustomData("stylesheet");l?h!=l.getText()&&(CKEDITOR.env.ie&&9>CKEDITOR.env.version?l.$.styleSheet.cssText=h:l.setText(h)):(h=b.appendStyleText(h),h=new CKEDITOR.dom.element(h.ownerNode||h.owningElement),d.setCustomData("stylesheet",h),h.data("cke-temp",1))}d=b.getCustomData("stylesheet_ref")||0;b.setCustomData("stylesheet_ref",d+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){a=a.data;var c= +(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains("a");c&&2!=a.$.button&&c.isReadOnly()&&a.preventDefault()});var m={8:1,46:1};this.attachListener(a,"key",function(c){if(a.readOnly)return!0;var b=c.data.domEvent.getKey(),d;c=a.getSelection();if(0!==c.getRanges().length){if(b in m){var g,e=c.getRanges()[0],f=e.startPath(),h,l,q,b=8==b;CKEDITOR.env.ie&&11>CKEDITOR.env.version&&(g=c.getSelectedElement())||(g=k(c))?(a.fire("saveSnapshot"),e.moveToPosition(g,CKEDITOR.POSITION_BEFORE_START),g.remove(), +e.select(),a.fire("saveSnapshot"),d=1):e.collapsed&&((h=f.block)&&(q=h[b?"getPrevious":"getNext"](n))&&q.type==CKEDITOR.NODE_ELEMENT&&q.is("table")&&e[b?"checkStartOfBlock":"checkEndOfBlock"]()?(a.fire("saveSnapshot"),e[b?"checkEndOfBlock":"checkStartOfBlock"]()&&h.remove(),e["moveToElementEdit"+(b?"End":"Start")](q),e.select(),a.fire("saveSnapshot"),d=1):f.blockLimit&&f.blockLimit.is("td")&&(l=f.blockLimit.getAscendant("table"))&&e.checkBoundaryOfElement(l,b?CKEDITOR.START:CKEDITOR.END)&&(q=l[b? +"getPrevious":"getNext"](n))?(a.fire("saveSnapshot"),e["moveToElementEdit"+(b?"End":"Start")](q),e.checkStartOfBlock()&&e.checkEndOfBlock()?q.remove():e.select(),a.fire("saveSnapshot"),d=1):(l=f.contains(["td","th","caption"]))&&e.checkBoundaryOfElement(l,b?CKEDITOR.START:CKEDITOR.END)&&(d=1))}return!d}});a.blockless&&CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller&&this.attachListener(this,"keyup",function(c){c.data.getKeystroke()in m&&!this.getFirst(e)&&(this.appendBogus(),c=a.createRange(),c.moveToPosition(this, +CKEDITOR.POSITION_AFTER_START),c.select())});this.attachListener(this,"dblclick",function(c){if(a.readOnly)return!1;c={element:c.data.getTarget()};a.fire("doubleclick",c)});CKEDITOR.env.ie&&this.attachListener(this,"click",f);CKEDITOR.env.ie&&!CKEDITOR.env.edge||this.attachListener(this,"mousedown",function(c){var b=c.data.getTarget();b.is("img","hr","input","textarea","select")&&!b.isReadOnly()&&(a.getSelection().selectElement(b),b.is("input","textarea","select")&&c.data.preventDefault())});CKEDITOR.env.edge&& +this.attachListener(this,"mouseup",function(c){(c=c.data.getTarget())&&c.is("img")&&!c.isReadOnly()&&a.getSelection().selectElement(c)});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(c){if(2==c.data.$.button&&(c=c.data.getTarget(),!c.getAscendant("table")&&!c.getOuterHtml().replace(q,""))){var b=a.createRange();b.moveToElementEditStart(c);b.select(!0)}});CKEDITOR.env.webkit&&(this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()}), +this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()}));CKEDITOR.env.webkit&&this.attachListener(a,"key",function(c){if(a.readOnly)return!0;var b=c.data.domEvent.getKey();if(b in m&&(c=a.getSelection(),0!==c.getRanges().length)){var b=8==b,d=c.getRanges()[0];c=d.startPath();if(d.collapsed)a:{var e=c.block;if(e&&d[b?"checkStartOfBlock":"checkEndOfBlock"](!0)&&d.moveToClosestEditablePosition(e,!b)&&d.collapsed){if(d.startContainer.type==CKEDITOR.NODE_ELEMENT){var f= +d.startContainer.getChild(d.startOffset-(b?1:0));if(f&&f.type==CKEDITOR.NODE_ELEMENT&&f.is("hr")){a.fire("saveSnapshot");f.remove();c=!0;break a}}d=d.startPath().block;if(!d||d&&d.contains(e))c=void 0;else{a.fire("saveSnapshot");var h;(h=(b?d:e).getBogus())&&h.remove();h=a.getSelection();f=h.createBookmarks();(b?e:d).moveChildren(b?d:e,!1);c.lastElement.mergeSiblings();g(e,d,!b);h.selectBookmarks(f);c=!0}}else c=!1}else b=d,h=c.block,d=b.endPath().block,h&&d&&!h.equals(d)?(a.fire("saveSnapshot"), +(e=h.getBogus())&&e.remove(),b.enlarge(CKEDITOR.ENLARGE_INLINE),b.deleteContents(),d.getParent()&&(d.moveChildren(h,!1),c.lastElement.mergeSiblings(),g(h,d,!0)),b=a.getSelection().getRanges()[0],b.collapse(1),b.optimize(),""===b.startContainer.getHtml()&&b.startContainer.appendBogus(),b.select(),c=!0):c=!1;if(!c)return;a.getSelection().scrollIntoView();a.fire("saveSnapshot");return!1}},this,null,100)}},getUniqueId:function(){var a;try{this._.expandoNumber=a=CKEDITOR.dom.domObject.prototype.getUniqueId.call(this)}catch(c){a= +this._&&this._.expandoNumber}return a}},_:{cleanCustomData:function(){this.removeClass("cke_editable");this.restoreAttrs();for(var a=this.removeCustomData("classes");a&&a.length;)this.removeClass(a.pop());if(!this.is("textarea")){var a=this.getDocument(),c=a.getHead();if(c.getCustomData("stylesheet")){var b=a.getCustomData("stylesheet_ref");--b?a.setCustomData("stylesheet_ref",b):(a.removeCustomData("stylesheet_ref"),c.removeCustomData("stylesheet").remove())}}}}});CKEDITOR.editor.prototype.editable= +function(a){var c=this._.editable;if(c&&a)return 0;if(!arguments.length)return c;a?c=a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(c&&c.detach(),c=null);return this._.editable=c};CKEDITOR.on("instanceLoaded",function(a){var c=a.editor;c.on("insertElement",function(a){a=a.data;a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))&&("false"!=a.getAttribute("contentEditable")&&a.data("cke-editable",a.hasAttribute("contenteditable")?"true":"1"),a.setAttribute("contentEditable", +!1))});c.on("selectionChange",function(a){if(!c.readOnly){var d=c.getSelection();d&&!d.isLocked&&(d=c.checkDirty(),c.fire("lockSnapshot"),b(a),c.fire("unlockSnapshot"),!d&&c.resetDirty())}})});CKEDITOR.on("instanceCreated",function(a){var c=a.editor;c.on("mode",function(){var a=c.editable();if(a&&a.isInline()){var b=c.title;a.changeAttr("role","textbox");a.changeAttr("aria-multiline","true");a.changeAttr("aria-label",b);b&&a.changeAttr("title",b);var d=c.fire("ariaEditorHelpLabel",{}).label;if(d&& +(b=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents"))){var g=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+g+'" class\x3d"cke_voice_label"\x3e'+d+"\x3c/span\x3e");b.append(d);a.changeAttr("aria-describedby",g)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");n=CKEDITOR.dom.walker.whitespaces(!0);y=CKEDITOR.dom.walker.bookmark(!1,!0);v=CKEDITOR.dom.walker.empty(); +p=CKEDITOR.dom.walker.bogus();q=/(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi;r=function(){function a(c){return c.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var g,e,f,h,k=[],l=d.range.startContainer;g=d.range.startPath();for(var l=n[l.getName()],m=0,q=c.getChildren(),r=q.count(),y=-1,t=-1,u=0,F=g.contains(n.$list);m<r;++m)g=q.getItem(m),a(g)?(f=g.getName(),F&&f in CKEDITOR.dtd.$list?k=k.concat(b(g,d)):(h=!!l[f], +"br"!=f||!g.data("cke-eol")||m&&m!=r-1||(u=(e=m?k[m-1].node:q.getItem(m+1))&&(!a(e)||!e.is("br")),e=e&&a(e)&&n.$block[e.getName()]),-1!=y||h||(y=m),h||(t=m),k.push({isElement:1,isLineBreak:u,isBlock:g.isBlockBoundary(),hasBlockSibling:e,node:g,name:f,allowed:h}),e=u=0)):k.push({isElement:0,node:g,allowed:1});-1<y&&(k[y].firstNotAllowed=1);-1<t&&(k[t].lastNotAllowed=1);return k}function d(c,b){var g=[],e=c.getChildren(),f=e.count(),h,k=0,l=n[b],m=!c.is(n.$inline)||c.is("br");for(m&&g.push(" ");k<f;k++)h= +e.getItem(k),a(h)&&!h.is(l)?g=g.concat(d(h,b)):g.push(h);m&&g.push(" ");return g}function g(c){return a(c.startContainer)&&c.startContainer.getChild(c.startOffset-1)}function f(c){return c&&a(c)&&(c.is(n.$removeEmpty)||c.is("a")&&!c.isBlockBoundary())}function h(c,b,d,g){var e=c.clone(),f,k;e.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);(f=(new CKEDITOR.dom.walker(e)).next())&&a(f)&&r[f.getName()]&&(k=f.getPrevious())&&a(k)&&!k.getParent().equals(c.startContainer)&&d.contains(k)&&g.contains(f)&&f.isIdentical(k)&& +(f.moveChildren(k),f.remove(),h(c,b,d,g))}function k(c,b){function d(c,b){if(b.isBlock&&b.isElement&&!b.node.is("br")&&a(c)&&c.is("br"))return c.remove(),1}var g=b.endContainer.getChild(b.endOffset),e=b.endContainer.getChild(b.endOffset-1);g&&d(g,c[c.length-1]);e&&d(e,c[0])&&(b.setEnd(b.endContainer,b.endOffset-1),b.collapse())}var n=CKEDITOR.dtd,r={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},y={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},t=CKEDITOR.tools.extend({}, +n.$inline);delete t.br;return function(r,u,H,G){var p=r.editor,x=!1,v;"unfiltered_html"==u&&(u="html",x=!0);if(!G.checkReadOnly()){var z=(new CKEDITOR.dom.elementPath(G.startContainer,G.root)).blockLimit||G.root;u={type:u,dontFilter:x,editable:r,editor:p,range:G,blockLimit:z,mergeCandidates:[],zombies:[]};var x=u.range,z=u.mergeCandidates,D="html"===u.type,J,T,W,aa,ba;"text"==u.type&&x.shrink(CKEDITOR.SHRINK_ELEMENT,!0,!1)&&(T=CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e", +x.document),x.insertNode(T),x.setStartAfter(T));W=new CKEDITOR.dom.elementPath(x.startContainer);u.endPath=aa=new CKEDITOR.dom.elementPath(x.endContainer);if(!x.collapsed){J=aa.block||aa.blockLimit;var da=x.getCommonAncestor();J&&!J.equals(da)&&!J.contains(da)&&x.checkEndOfBlock()&&u.zombies.push(J);x.deleteContents()}for(;(ba=g(x))&&a(ba)&&ba.isBlockBoundary()&&W.contains(ba);)x.moveToPosition(ba,CKEDITOR.POSITION_BEFORE_END);h(x,u.blockLimit,W,aa);T&&(x.setEndBefore(T),x.collapse(),T.remove()); +T=x.startPath();if(J=T.contains(f,!1,1))v=x.splitElement(J),u.inlineStylesRoot=J,u.inlineStylesPeak=T.lastElement;T=x.createBookmark();D&&(c(J),c(v));(J=T.startNode.getPrevious(e))&&a(J)&&f(J)&&z.push(J);(J=T.startNode.getNext(e))&&a(J)&&f(J)&&z.push(J);for(J=T.startNode;(J=J.getParent())&&f(J);)z.push(J);x.moveToBookmark(T);v=r.getHtml();v=""===v||v.match(q);p.enterMode===CKEDITOR.ENTER_DIV&&v&&((p=r.getFirst())&&p.remove(),G.setStartAt(r,CKEDITOR.POSITION_AFTER_START),G.collapse(!0));if(r=H){r= +u.range;if("text"==u.type&&u.inlineStylesRoot){G=u.inlineStylesPeak;p=G.getDocument().createText("{cke-peak}");for(v=u.inlineStylesRoot.getParent();!G.equals(v);)p=p.appendTo(G.clone()),G=G.getParent();H=p.getOuterHtml().split("{cke-peak}").join(H)}G=u.blockLimit.getName();if(/^\s+|\s+$/.test(H)&&"span"in CKEDITOR.dtd[G]){var Z='\x3cspan data-cke-marker\x3d"1"\x3e\x26nbsp;\x3c/span\x3e';H=Z+H+Z}H=u.editor.dataProcessor.toHtml(H,{context:null,fixForBody:!1,protectedWhitespaces:!!Z,dontFilter:u.dontFilter, +filter:u.editor.activeFilter,enterMode:u.editor.activeEnterMode});G=r.document.createElement("body");G.setHtml(H);Z&&(G.getFirst().remove(),G.getLast().remove());if((Z=r.startPath().block)&&(1!=Z.getChildCount()||!Z.getBogus()))a:{var U;if(1==G.getChildCount()&&a(U=G.getFirst())&&U.is(y)&&!U.hasAttribute("contenteditable")){Z=U.getElementsByTag("*");r=0;for(v=Z.count();r<v;r++)if(p=Z.getItem(r),!p.is(t))break a;U.moveChildren(U.getParent(1));U.remove()}}u.dataWrapper=G;r=H}if(r){U=u.range;r=U.document; +G=u.blockLimit;v=0;var V,Z=[],ha,P;H=T=0;var Q,p=U.startContainer;ba=u.endPath.elements[0];var ea,x=ba.getPosition(p),z=!!ba.getCommonAncestor(p)&&x!=CKEDITOR.POSITION_IDENTICAL&&!(x&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED),p=b(u.dataWrapper,u);for(u.editor.enterMode!==CKEDITOR.ENTER_BR&&k(p,U);v<p.length;v++){x=p[v];if(D=x.isLineBreak)D=U,J=G,aa=W=void 0,x.hasBlockSibling?D=1:(W=D.startContainer.getAscendant(n.$block,1))&&W.is({div:1,p:1})?(aa=W.getPosition(J),aa==CKEDITOR.POSITION_IDENTICAL|| +aa==CKEDITOR.POSITION_CONTAINS?D=0:(J=D.splitElement(W),D.moveToPosition(J,CKEDITOR.POSITION_AFTER_START),D=1)):D=0;if(D)H=0<v;else{D=U.startPath();!x.isBlock&&l(u.editor,D.block,D.blockLimit)&&(P=m(u.editor))&&(P=r.createElement(P),P.appendBogus(),U.insertNode(P),CKEDITOR.env.needsBrFiller&&(V=P.getBogus())&&V.remove(),U.moveToPosition(P,CKEDITOR.POSITION_BEFORE_END));if((D=U.startPath().block)&&!D.equals(ha)){if(V=D.getBogus())V.remove(),Z.push(D);ha=D}x.firstNotAllowed&&(T=1);if(T&&x.isElement){D= +U.startContainer;for(J=null;D&&!n[D.getName()][x.name];){if(D.equals(G)){D=null;break}J=D;D=D.getParent()}if(D)J&&(Q=U.splitElement(J),u.zombies.push(Q),u.zombies.push(J));else{J=G.getName();ea=!v;D=v==p.length-1;J=d(x.node,J);W=[];aa=J.length;for(var da=0,ja=void 0,ga=0,fa=-1;da<aa;da++)ja=J[da]," "==ja?(ga||ea&&!da||(W.push(new CKEDITOR.dom.text(" ")),fa=W.length),ga=1):(W.push(ja),ga=0);D&&fa==W.length&&W.pop();ea=W}}if(ea){for(;D=ea.pop();)U.insertNode(D);ea=0}else U.insertNode(x.node);x.lastNotAllowed&& +v<p.length-1&&((Q=z?ba:Q)&&U.setEndAt(Q,CKEDITOR.POSITION_AFTER_START),T=0);U.collapse()}}1!=p.length?V=!1:(V=p[0],V=V.isElement&&"false"==V.node.getAttribute("contenteditable"));V&&(H=!0,D=p[0].node,U.setStartAt(D,CKEDITOR.POSITION_BEFORE_START),U.setEndAt(D,CKEDITOR.POSITION_AFTER_END));u.dontMoveCaret=H;u.bogusNeededBlocks=Z}V=u.range;var ia;ea=u.bogusNeededBlocks;for(ha=V.createBookmark();P=u.zombies.pop();)P.getParent()&&(Q=V.clone(),Q.moveToElementEditStart(P),Q.removeEmptyBlocksAtEnd());if(ea)for(;P= +ea.pop();)CKEDITOR.env.needsBrFiller?P.appendBogus():P.append(V.document.createText(" "));for(;P=u.mergeCandidates.pop();)P.mergeSiblings();CKEDITOR.env.webkit&&V.startPath()&&(P=V.startPath(),P.block?P.block.$.normalize():P.blockLimit&&P.blockLimit.$.normalize());V.moveToBookmark(ha);if(!u.dontMoveCaret){for(P=g(V);P&&a(P)&&!P.is(n.$empty);){if(P.isBlockBoundary())V.moveToPosition(P,CKEDITOR.POSITION_BEFORE_END);else{if(f(P)&&P.getHtml().match(/(\s| )$/g)){ia=null;break}ia=V.clone();ia.moveToPosition(P, +CKEDITOR.POSITION_BEFORE_END)}P=P.getLast(e)}ia&&V.moveToRange(ia)}}}}();x=function(){function a(c){c=new CKEDITOR.dom.walker(c);c.guard=function(a,c){if(c)return!1;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$tableContent)};c.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT};return c}function c(a,b,d){b=a.getDocument().createElement(b);a.append(b,d);return b}function b(a){var c=a.count(),d;for(c;0<c--;)d=a.getItem(c),CKEDITOR.tools.trim(d.getHtml())||(d.appendBogus(),CKEDITOR.env.ie&& +9>CKEDITOR.env.version&&d.getChildCount()&&d.getFirst().remove())}return function(d){var g=d.startContainer,e=g.getAscendant("table",1),f=!1;b(e.getElementsByTag("td"));b(e.getElementsByTag("th"));e=d.clone();e.setStart(g,0);e=a(e).lastBackward();e||(e=d.clone(),e.setEndAt(g,CKEDITOR.POSITION_BEFORE_END),e=a(e).lastForward(),f=!0);e||(e=g);e.is("table")?(d.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),d.collapse(!0),e.remove()):(e.is({tbody:1,thead:1,tfoot:1})&&(e=c(e,"tr",f)),e.is("tr")&&(e=c(e,e.getParent().is("thead")? +"th":"td",f)),(g=e.getBogus())&&g.remove(),d.moveToPosition(e,f?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END))}}();t=function(){function a(c){c=new CKEDITOR.dom.walker(c);c.guard=function(a,c){if(c)return!1;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$list)||a.is(CKEDITOR.dtd.$listItem)};c.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$listItem)};return c}return function(c){var b=c.startContainer,d=!1,g;g=c.clone();g.setStart(b,0);g=a(g).lastBackward(); +g||(g=c.clone(),g.setEndAt(b,CKEDITOR.POSITION_BEFORE_END),g=a(g).lastForward(),d=!0);g||(g=b);g.is(CKEDITOR.dtd.$list)?(c.setStartAt(g,CKEDITOR.POSITION_BEFORE_START),c.collapse(!0),g.remove()):((b=g.getBogus())&&b.remove(),c.moveToPosition(g,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END),c.select())}}();z={eol:{detect:function(a,c){var b=a.range,d=b.clone(),g=b.clone(),e=new CKEDITOR.dom.elementPath(b.startContainer,c),f=new CKEDITOR.dom.elementPath(b.endContainer,c);d.collapse(1); +g.collapse();e.block&&d.checkBoundaryOfElement(e.block,CKEDITOR.END)&&(b.setStartAfter(e.block),a.prependEolBr=1);f.block&&g.checkBoundaryOfElement(f.block,CKEDITOR.START)&&(b.setEndBefore(f.block),a.appendEolBr=1)},fix:function(a,c){var b=c.getDocument(),d;a.appendEolBr&&(d=this.createEolBr(b),a.fragment.append(d));!a.prependEolBr||d&&!d.getPrevious()||a.fragment.append(this.createEolBr(b),1)},createEolBr:function(a){return a.createElement("br",{attributes:{"data-cke-eol":1}})}},bogus:{exclude:function(a){var c= +a.range.getBoundaryNodes(),b=c.startNode,c=c.endNode;!c||!p(c)||b&&b.equals(c)||a.range.setEndBefore(c)}},tree:{rebuild:function(a,c){var b=a.range,d=b.getCommonAncestor(),g=new CKEDITOR.dom.elementPath(d,c),e=new CKEDITOR.dom.elementPath(b.startContainer,c),b=new CKEDITOR.dom.elementPath(b.endContainer,c),f;d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent());if(g.blockLimit.is({tr:1,table:1})){var h=g.contains("table").getParent();f=function(a){return!a.equals(h)}}else if(g.block&&g.block.is(CKEDITOR.dtd.$listItem)&& +(e=e.contains(CKEDITOR.dtd.$list),b=b.contains(CKEDITOR.dtd.$list),!e.equals(b))){var k=g.contains(CKEDITOR.dtd.$list).getParent();f=function(a){return!a.equals(k)}}f||(f=function(a){return!a.equals(g.block)&&!a.equals(g.blockLimit)});this.rebuildFragment(a,c,d,f)},rebuildFragment:function(a,c,b,d){for(var g;b&&!b.equals(c)&&d(b);)g=b.clone(0,1),a.fragment.appendTo(g),a.fragment=g,b=b.getParent()}},cell:{shrink:function(a){a=a.range;var c=a.startContainer,b=a.endContainer,d=a.startOffset,g=a.endOffset; +c.type==CKEDITOR.NODE_ELEMENT&&c.equals(b)&&c.is("tr")&&++d==g&&a.shrink(CKEDITOR.SHRINK_TEXT)}}};u=function(){function a(c,b){var d=c.getParent();if(d.is(CKEDITOR.dtd.$inline))c[b?"insertBefore":"insertAfter"](d)}function c(b,d,g){a(d);a(g,1);for(var e;e=g.getNext();)e.insertAfter(d),d=e;v(b)&&b.remove()}function b(a,c){var d=new CKEDITOR.dom.range(a);d.setStartAfter(c.startNode);d.setEndBefore(c.endNode);return d}return{list:{detectMerge:function(a,c){var d=b(c,a.bookmark),g=d.startPath(),e=d.endPath(), +f=g.contains(CKEDITOR.dtd.$list),h=e.contains(CKEDITOR.dtd.$list);a.mergeList=f&&h&&f.getParent().equals(h.getParent())&&!f.equals(h);a.mergeListItems=g.block&&e.block&&g.block.is(CKEDITOR.dtd.$listItem)&&e.block.is(CKEDITOR.dtd.$listItem);if(a.mergeList||a.mergeListItems)d=d.clone(),d.setStartBefore(a.bookmark.startNode),d.setEndAfter(a.bookmark.endNode),a.mergeListBookmark=d.createBookmark()},merge:function(a,b){if(a.mergeListBookmark){var d=a.mergeListBookmark.startNode,g=a.mergeListBookmark.endNode, +e=new CKEDITOR.dom.elementPath(d,b),f=new CKEDITOR.dom.elementPath(g,b);if(a.mergeList){var h=e.contains(CKEDITOR.dtd.$list),k=f.contains(CKEDITOR.dtd.$list);h.equals(k)||(k.moveChildren(h),k.remove())}a.mergeListItems&&(e=e.contains(CKEDITOR.dtd.$listItem),f=f.contains(CKEDITOR.dtd.$listItem),e.equals(f)||c(f,d,g));d.remove();g.remove()}}},block:{detectMerge:function(a,c){if(!a.tableContentsRanges&&!a.mergeListBookmark){var b=new CKEDITOR.dom.range(c);b.setStartBefore(a.bookmark.startNode);b.setEndAfter(a.bookmark.endNode); +a.mergeBlockBookmark=b.createBookmark()}},merge:function(a,b){if(a.mergeBlockBookmark&&!a.purgeTableBookmark){var d=a.mergeBlockBookmark.startNode,g=a.mergeBlockBookmark.endNode,e=new CKEDITOR.dom.elementPath(d,b),f=new CKEDITOR.dom.elementPath(g,b),e=e.block,f=f.block;e&&f&&!e.equals(f)&&c(f,d,g);d.remove();g.remove()}}},table:function(){function a(b){var g=[],e,f=new CKEDITOR.dom.walker(b),h=b.startPath().contains(d),k=b.endPath().contains(d),n={};f.guard=function(a,f){if(a.type==CKEDITOR.NODE_ELEMENT){var l= +"visited_"+(f?"out":"in");if(a.getCustomData(l))return;CKEDITOR.dom.element.setMarker(n,a,l,1)}if(f&&h&&a.equals(h))e=b.clone(),e.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),g.push(e);else if(!f&&k&&a.equals(k))e=b.clone(),e.setStartAt(k,CKEDITOR.POSITION_AFTER_START),g.push(e);else{if(l=!f)l=a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&(!h||c(a,h))&&(!k||c(a,k));if(!l&&(l=f))if(a.is(d))var l=h&&h.getAscendant("table",!0),m=k&&k.getAscendant("table",!0),q=a.getAscendant("table",!0),l=l&&l.contains(q)||m&& +m.contains(q);else l=void 0;l&&(e=b.clone(),e.selectNodeContents(a),g.push(e))}};f.lastForward();CKEDITOR.dom.element.clearAllMarkers(n);return g}function c(a,b){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED,g=a.getPosition(b);return g===CKEDITOR.POSITION_IDENTICAL?!1:0===(g&d)}var d={td:1,th:1,caption:1};return{detectPurge:function(a){var c=a.range,b=c.clone();b.enlarge(CKEDITOR.ENLARGE_ELEMENT);var b=new CKEDITOR.dom.walker(b),g=0;b.evaluator=function(a){a.type==CKEDITOR.NODE_ELEMENT&& +a.is(d)&&++g};b.checkForward();if(1<g){var b=c.startPath().contains("table"),e=c.endPath().contains("table");b&&e&&c.checkBoundaryOfElement(b,CKEDITOR.START)&&c.checkBoundaryOfElement(e,CKEDITOR.END)&&(c=a.range.clone(),c.setStartBefore(b),c.setEndAfter(e),a.purgeTableBookmark=c.createBookmark())}},detectRanges:function(g,e){var f=b(e,g.bookmark),h=f.clone(),k,n,l=f.getCommonAncestor();l.is(CKEDITOR.dtd.$tableContent)&&!l.is(d)&&(l=l.getAscendant("table",!0));n=l;l=new CKEDITOR.dom.elementPath(f.startContainer, +n);n=new CKEDITOR.dom.elementPath(f.endContainer,n);l=l.contains("table");n=n.contains("table");if(l||n)l&&n&&c(l,n)?(g.tableSurroundingRange=h,h.setStartAt(l,CKEDITOR.POSITION_AFTER_END),h.setEndAt(n,CKEDITOR.POSITION_BEFORE_START),h=f.clone(),h.setEndAt(l,CKEDITOR.POSITION_AFTER_END),k=f.clone(),k.setStartAt(n,CKEDITOR.POSITION_BEFORE_START),k=a(h).concat(a(k))):l?n||(g.tableSurroundingRange=h,h.setStartAt(l,CKEDITOR.POSITION_AFTER_END),f.setEndAt(l,CKEDITOR.POSITION_AFTER_END)):(g.tableSurroundingRange= +h,h.setEndAt(n,CKEDITOR.POSITION_BEFORE_START),f.setStartAt(n,CKEDITOR.POSITION_AFTER_START)),g.tableContentsRanges=k?k:a(f)},deleteRanges:function(a){for(var c;c=a.tableContentsRanges.pop();)c.extractContents(),v(c.startContainer)&&c.startContainer.appendBogus();a.tableSurroundingRange&&a.tableSurroundingRange.extractContents()},purge:function(a){if(a.purgeTableBookmark){var c=a.doc,b=a.range.clone(),c=c.createElement("p");c.insertBefore(a.purgeTableBookmark.startNode);b.moveToBookmark(a.purgeTableBookmark); +b.deleteContents();a.range.moveToPosition(c,CKEDITOR.POSITION_AFTER_START)}}}}(),detectExtractMerge:function(a){return!(a.range.startPath().contains(CKEDITOR.dtd.$listItem)&&a.range.endPath().contains(CKEDITOR.dtd.$listItem))},fixUneditableRangePosition:function(a){a.startContainer.getDtd()["#"]||a.moveToClosestEditablePosition(null,!0)},autoParagraph:function(a,c){var b=c.startPath(),d;l(a,b.block,b.blockLimit)&&(d=m(a))&&(d=c.document.createElement(d),d.appendBogus(),c.insertNode(d),c.moveToPosition(d, CKEDITOR.POSITION_AFTER_START))}}}()}(),function(){function b(a){return CKEDITOR.plugins.widget&&CKEDITOR.plugins.widget.isDomWidget(a)}function h(a,c){if(0===a.length||b(a[0].getEnclosedNode()))return!1;var d,g;if((d=!c&&1===a.length)&&!(d=a[0].collapsed)){var e=a[0];d=e.startContainer.getAscendant({td:1,th:1},!0);var f=e.endContainer.getAscendant({td:1,th:1},!0);g=CKEDITOR.tools.trim;d&&d.equals(f)&&!d.findOne("td, th, tr, tbody, table")?(e=e.cloneContents(),d=e.getFirst()?g(e.getFirst().getText())!== g(d.getText()):!0):d=!1}if(d)return!1;for(g=0;g<a.length;g++)if(d=a[g]._getTableElement(),!d)return!1;return!0}function f(a){function c(a){a=a.find("td, th");var b=[],d;for(d=0;d<a.count();d++)b.push(a.getItem(d));return b}var b=[],d,g;for(g=0;g<a.length;g++)d=a[g]._getTableElement(),d.is&&d.is({td:1,th:1})?b.push(d):b=b.concat(c(d));return b}function e(a){a=f(a);var c="",b=[],d,g;for(g=0;g<a.length;g++)d&&!d.equals(a[g].getAscendant("tr"))?(c+=b.join("\t")+"\n",d=a[g].getAscendant("tr"),b=[]):0=== -g&&(d=a[g].getAscendant("tr")),b.push(a[g].getText());return c+=b.join("\t")}function a(a){var c=this.root.editor,b=c.getSelection(1);this.reset();q=!0;b.root.once("selectionchange",function(a){a.cancel()},null,null,0);b.selectRanges([a[0]]);b=this._.cache;b.ranges=new CKEDITOR.dom.rangeList(a);b.type=CKEDITOR.SELECTION_TEXT;b.selectedElement=a[0]._getTableElement();b.selectedText=e(a);b.nativeSel=null;this.isFake=1;this.rev=x++;c._.fakeSelection=this;q=!1;this.root.fire("selectionchange")}function m(){var a= -this._.fakeSelection,c;if(a){c=this.getSelection(1);var d;if(!(d=!c)&&(d=!c.isHidden())){d=a;var g=c.getRanges(),e=d.getRanges(),f=g.length&&g[0]._getTableElement()&&g[0]._getTableElement().getAscendant("table",!0),n=e.length&&e[0]._getTableElement()&&e[0]._getTableElement().getAscendant("table",!0),m=1===g.length&&g[0]._getTableElement()&&g[0]._getTableElement().is("table"),k=1===e.length&&e[0]._getTableElement()&&e[0]._getTableElement().is("table");if(b(d.getSelectedElement()))d=!1;else{var l=1=== -g.length&&g[0].collapsed,e=h(g,!!CKEDITOR.env.webkit)&&h(e);f=f&&n?f.equals(n)||n.contains(f):!1;f&&(l||e)?(m&&!k&&d.selectRanges(g),d=!0):d=!1}d=!d}d&&(a.reset(),a=0)}if(!a&&(a=c||this.getSelection(1),!a||a.getType()==CKEDITOR.SELECTION_NONE))return;this.fire("selectionCheck",a);c=this.elementPath();c.compare(this._.selectionPreviousPath)||(d=this._.selectionPreviousPath&&this._.selectionPreviousPath.blockLimit.equals(c.blockLimit),!CKEDITOR.env.webkit&&!CKEDITOR.env.gecko||d||(this._.previousActive= -this.document.getActive()),this._.selectionPreviousPath=c,this.fire("selectionChange",{selection:a,path:c}))}function k(){B=!0;v||(l.call(this),v=CKEDITOR.tools.setTimeout(l,200,this))}function l(){v=null;B&&(CKEDITOR.tools.setTimeout(m,0,this),B=!1)}function c(a){return D(a)||a.type==CKEDITOR.NODE_ELEMENT&&!a.is(CKEDITOR.dtd.$empty)?!0:!1}function d(a){function b(c,d){return c&&c.type!=CKEDITOR.NODE_TEXT?a.clone()["moveToElementEdit"+(d?"End":"Start")](c):!1}if(!(a.root instanceof CKEDITOR.editable))return!1; -var d=a.startContainer,g=a.getPreviousNode(c,null,d),e=a.getNextNode(c,null,d);return b(g)||b(e,1)||!(g||e||d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()&&d.getBogus())?!0:!1}function g(a){n(a,!1);var c=a.getDocument().createText(u);a.setCustomData("cke-fillingChar",c);return c}function n(a,c){var b=a&&a.removeCustomData("cke-fillingChar");if(b){if(!1!==c){var d=a.getDocument().getSelection().getNative(),g=d&&"None"!=d.type&&d.getRangeAt(0),e=u.length;if(b.getLength()>e&&g&&g.intersectsNode(b.$)){var f= -[{node:d.anchorNode,offset:d.anchorOffset},{node:d.focusNode,offset:d.focusOffset}];d.anchorNode==b.$&&d.anchorOffset>e&&(f[0].offset-=e);d.focusNode==b.$&&d.focusOffset>e&&(f[1].offset-=e)}}b.setText(y(b.getText(),1));f&&(b=a.getDocument().$,d=b.getSelection(),b=b.createRange(),b.setStart(f[0].node,f[0].offset),b.collapse(!0),d.removeAllRanges(),d.addRange(b),d.extend(f[1].node,f[1].offset))}}function y(a,c){return c?a.replace(z,function(a,c){return c?" ":""}):a.replace(u,"")}function w(a,c){var b= +g&&(d=a[g].getAscendant("tr")),b.push(a[g].getText());return c+=b.join("\t")}function a(a){var c=this.root.editor,b=c.getSelection(1);this.reset();u=!0;b.root.once("selectionchange",function(a){a.cancel()},null,null,0);b.selectRanges([a[0]]);b=this._.cache;b.ranges=new CKEDITOR.dom.rangeList(a);b.type=CKEDITOR.SELECTION_TEXT;b.selectedElement=a[0]._getTableElement();b.selectedText=e(a);b.nativeSel=null;this.isFake=1;this.rev=x++;c._.fakeSelection=this;u=!1;this.root.fire("selectionchange")}function k(){var a= +this._.fakeSelection,c;if(a){c=this.getSelection(1);var d;if(!(d=!c)&&(d=!c.isHidden())){d=a;var g=c.getRanges(),e=d.getRanges(),f=g.length&&g[0]._getTableElement()&&g[0]._getTableElement().getAscendant("table",!0),k=e.length&&e[0]._getTableElement()&&e[0]._getTableElement().getAscendant("table",!0),n=1===g.length&&g[0]._getTableElement()&&g[0]._getTableElement().is("table"),l=1===e.length&&e[0]._getTableElement()&&e[0]._getTableElement().is("table");if(b(d.getSelectedElement()))d=!1;else{var m=1=== +g.length&&g[0].collapsed,e=h(g,!!CKEDITOR.env.webkit)&&h(e);f=f&&k?f.equals(k)||k.contains(f):!1;f&&(m||e)?(n&&!l&&d.selectRanges(g),d=!0):d=!1}d=!d}d&&(a.reset(),a=0)}if(!a&&(a=c||this.getSelection(1),!a||a.getType()==CKEDITOR.SELECTION_NONE))return;this.fire("selectionCheck",a);c=this.elementPath();c.compare(this._.selectionPreviousPath)||(d=this._.selectionPreviousPath&&this._.selectionPreviousPath.blockLimit.equals(c.blockLimit),!CKEDITOR.env.webkit&&!CKEDITOR.env.gecko||d||(this._.previousActive= +this.document.getActive()),this._.selectionPreviousPath=c,this.fire("selectionChange",{selection:a,path:c}))}function l(){B=!0;w||(m.call(this),w=CKEDITOR.tools.setTimeout(m,200,this))}function m(){w=null;B&&(CKEDITOR.tools.setTimeout(k,0,this),B=!1)}function c(a){return C(a)||a.type==CKEDITOR.NODE_ELEMENT&&!a.is(CKEDITOR.dtd.$empty)?!0:!1}function d(a){function b(c,d){return c&&c.type!=CKEDITOR.NODE_TEXT?a.clone()["moveToElementEdit"+(d?"End":"Start")](c):!1}if(!(a.root instanceof CKEDITOR.editable))return!1; +var d=a.startContainer,g=a.getPreviousNode(c,null,d),e=a.getNextNode(c,null,d);return b(g)||b(e,1)||!(g||e||d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()&&d.getBogus())?!0:!1}function g(a){n(a,!1);var c=a.getDocument().createText(t);a.setCustomData("cke-fillingChar",c);return c}function n(a,c){var b=a&&a.removeCustomData("cke-fillingChar");if(b){if(!1!==c){var d=a.getDocument().getSelection().getNative(),g=d&&"None"!=d.type&&d.getRangeAt(0),e=t.length;if(b.getLength()>e&&g&&g.intersectsNode(b.$)){var f= +[{node:d.anchorNode,offset:d.anchorOffset},{node:d.focusNode,offset:d.focusOffset}];d.anchorNode==b.$&&d.anchorOffset>e&&(f[0].offset-=e);d.focusNode==b.$&&d.focusOffset>e&&(f[1].offset-=e)}}b.setText(y(b.getText(),1));f&&(b=a.getDocument().$,d=b.getSelection(),b=b.createRange(),b.setStart(f[0].node,f[0].offset),b.collapse(!0),d.removeAllRanges(),d.addRange(b),d.extend(f[1].node,f[1].offset))}}function y(a,c){return c?a.replace(z,function(a,c){return c?" ":""}):a.replace(t,"")}function v(a,c){var b= c&&CKEDITOR.tools.htmlEncode(c)||"\x26nbsp;",b=CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-hidden-sel\x3d"1" data-cke-temp\x3d"1" style\x3d"'+(CKEDITOR.env.ie&&14>CKEDITOR.env.version?"display:none":"position:fixed;top:0;left:-1000px;width:0;height:0;overflow:hidden;")+'"\x3e'+b+"\x3c/div\x3e",a.document);a.fire("lockSnapshot");a.editable().append(b);var d=a.getSelection(1),g=a.createRange(),e=d.root.on("selectionchange",function(a){a.cancel()},null,null,0);g.setStartAt(b,CKEDITOR.POSITION_AFTER_START); g.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);d.selectRanges([g]);e.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer=b}function p(a){var c={37:1,39:1,8:1,46:1};return function(b){var d=b.data.getKeystroke();if(c[d]){var g=a.getSelection(),e=g.getRanges()[0];g.isCollapsed()&&(e=e[38>d?"getPreviousEditableNode":"getNextEditableNode"]())&&e.type==CKEDITOR.NODE_ELEMENT&&"false"==e.getAttribute("contenteditable")&&(g=g.getStartElement(),!g.isBlockBoundary()||""!==(void 0===g.$.textContent? -g.$.innerText:g.$.textContent)||8!==d&&46!==d||(g.remove(),a.fire("saveSnapshot")),a.getSelection().fake(e),b.data.preventDefault(),b.cancel())}}}function t(a){for(var c=0;c<a.length;c++){var b=a[c];b.getCommonAncestor().isReadOnly()&&a.splice(c,1);if(!b.collapsed){if(b.startContainer.isReadOnly())for(var d=b.startContainer,g;d&&!((g=d.type==CKEDITOR.NODE_ELEMENT)&&d.is("body")||!d.isReadOnly());)g&&"false"==d.getAttribute("contentEditable")&&b.setStartAfter(d),d=d.getParent();d=b.startContainer; +g.$.innerText:g.$.textContent)||8!==d&&46!==d||(g.remove(),a.fire("saveSnapshot")),a.getSelection().fake(e),b.data.preventDefault(),b.cancel())}}}function q(a){for(var c=0;c<a.length;c++){var b=a[c];b.getCommonAncestor().isReadOnly()&&a.splice(c,1);if(!b.collapsed){if(b.startContainer.isReadOnly())for(var d=b.startContainer,g;d&&!((g=d.type==CKEDITOR.NODE_ELEMENT)&&d.is("body")||!d.isReadOnly());)g&&"false"==d.getAttribute("contentEditable")&&b.setStartAfter(d),d=d.getParent();d=b.startContainer; g=b.endContainer;var e=b.startOffset,f=b.endOffset,h=b.clone();d&&d.type==CKEDITOR.NODE_TEXT&&(e>=d.getLength()?h.setStartAfter(d):h.setStartBefore(d));g&&g.type==CKEDITOR.NODE_TEXT&&(f?h.setEndAfter(g):h.setEndBefore(g));d=new CKEDITOR.dom.walker(h);d.evaluator=function(d){if(d.type==CKEDITOR.NODE_ELEMENT&&d.isReadOnly()){var g=b.clone();b.setEndBefore(d);b.collapsed&&a.splice(c--,1);d.getPosition(h.endContainer)&CKEDITOR.POSITION_CONTAINS||(g.setStartAfter(d),g.collapsed||a.splice(c+1,0,g));return!0}return!1}; -d.next()}}return a}var r="function"!=typeof window.getSelection,x=1,u=CKEDITOR.tools.repeat("​",7),z=new RegExp(u+"( )?","g"),q,v,B,D=CKEDITOR.dom.walker.invisible(1),A=function(){function a(c){return function(a){var b=a.editor.createRange();b.moveToClosestEditablePosition(a.selected,c)&&a.editor.getSelection().selectRanges([b]);return!1}}function c(a){return function(c){var b=c.editor,d=b.createRange(),g;if(!b.readOnly)return(g=d.moveToClosestEditablePosition(c.selected,a))||(g=d.moveToClosestEditablePosition(c.selected, -!a)),g&&b.getSelection().selectRanges([d]),b.fire("saveSnapshot"),c.selected.remove(),g||(d.moveToElementEditablePosition(b.editable()),b.getSelection().selectRanges([d])),b.fire("saveSnapshot"),!1}}var b=a(),d=a(1);return{37:b,38:b,39:d,40:d,8:c(),46:c(1)}}();CKEDITOR.on("instanceCreated",function(a){function c(){var a=b.getSelection();a&&a.removeAllRanges()}var b=a.editor;b.on("contentDom",function(){function a(){u=new CKEDITOR.dom.selection(b.getSelection());u.lock()}function c(){f.removeListener("mouseup", -c);t.removeListener("mouseup",c);var a=CKEDITOR.document.$.selection,b=a.createRange();"None"!=a.type&&b.parentElement()&&b.parentElement().ownerDocument==e.$&&b.select()}function d(a){var c,b;c=(c=this.document.getActive())?"input"===c.getName()||"textarea"===c.getName():!1;c||(c=this.getSelection(1),(b=g(c))&&!b.equals(h)&&(c.selectElement(b),a.data.preventDefault()))}function g(a){a=a.getRanges()[0];return a?(a=a.startContainer.getAscendant(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")}, -!0))&&"false"===a.getAttribute("contenteditable")?a:null:null}var e=b.document,f=CKEDITOR.document,h=b.editable(),l=e.getBody(),t=e.getDocumentElement(),y=h.isInline(),q,u;CKEDITOR.env.gecko&&h.attachListener(h,"focus",function(a){a.removeListener();0!==q&&(a=b.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==h.$&&(a=b.createRange(),a.moveToElementEditStart(h),a.select())},null,null,-2);h.attachListener(h,CKEDITOR.env.webkit||CKEDITOR.env.gecko?"focusin":"focus",function(){if(q&&(CKEDITOR.env.webkit|| -CKEDITOR.env.gecko)){q=b._.previousActive&&b._.previousActive.equals(e.getActive());var a=null!=b._.previousScrollTop&&b._.previousScrollTop!=h.$.scrollTop;CKEDITOR.env.webkit&&q&&a&&(h.$.scrollTop=b._.previousScrollTop)}b.unlockSelection(q);q=0},null,null,-1);h.attachListener(h,"mousedown",function(){q=0});if(CKEDITOR.env.ie||CKEDITOR.env.gecko||y)r?h.attachListener(h,"beforedeactivate",a,null,null,-1):h.attachListener(b,"selectionCheck",a,null,null,-1),h.attachListener(h,CKEDITOR.env.webkit||CKEDITOR.env.gecko? -"focusout":"blur",function(){var a=u&&(u.isFake||2>u.getRanges().length);CKEDITOR.env.gecko&&!y&&a||(b.lockSelection(u),q=1)},null,null,-1),h.attachListener(h,"mousedown",function(){q=0});if(CKEDITOR.env.ie&&!y){var x;h.attachListener(h,"mousedown",function(a){2==a.data.$.button&&((a=b.document.getSelection())&&a.getType()!=CKEDITOR.SELECTION_NONE||(x=b.window.getScrollPosition()))});h.attachListener(h,"mouseup",function(a){2==a.data.$.button&&x&&(b.document.$.documentElement.scrollLeft=x.x,b.document.$.documentElement.scrollTop= -x.y);x=null});if("BackCompat"!=e.$.compatMode){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat){var v,w;t.on("mousedown",function(a){function c(a){a=a.data.$;if(v){var b=l.$.createTextRange();try{b.moveToPoint(a.clientX,a.clientY)}catch(d){}v.setEndPoint(0>w.compareEndPoints("StartToStart",b)?"EndToEnd":"StartToStart",b);v.select()}}function b(){t.removeListener("mousemove",c);f.removeListener("mouseup",b);t.removeListener("mouseup",b);v.select()}a=a.data;if(a.getTarget().is("html")&&a.$.y<t.$.clientHeight&& -a.$.x<t.$.clientWidth){v=l.$.createTextRange();try{v.moveToPoint(a.$.clientX,a.$.clientY)}catch(d){}w=v.duplicate();t.on("mousemove",c);f.on("mouseup",b);t.on("mouseup",b)}})}if(7<CKEDITOR.env.version&&11>CKEDITOR.env.version)t.on("mousedown",function(a){a.data.getTarget().is("html")&&(f.on("mouseup",c),t.on("mouseup",c))})}}h.attachListener(h,"selectionchange",m,b);h.attachListener(h,"keyup",k,b);h.attachListener(h,"touchstart",k,b);h.attachListener(h,"touchend",k,b);CKEDITOR.env.ie&&h.attachListener(h, -"keydown",d,b);h.attachListener(h,CKEDITOR.env.webkit||CKEDITOR.env.gecko?"focusin":"focus",function(){b.forceNextSelectionCheck();b.selectionChange(1)});if(y&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var z;h.attachListener(h,"mousedown",function(){z=1});h.attachListener(e.getDocumentElement(),"mouseup",function(){z&&k.call(b);z=0})}else h.attachListener(CKEDITOR.env.ie?h:e.getDocumentElement(),"mouseup",k,b);CKEDITOR.env.webkit&&h.attachListener(e,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:h.hasFocus&& +d.next()}}return a}var r="function"!=typeof window.getSelection,x=1,t=CKEDITOR.tools.repeat("​",7),z=new RegExp(t+"( )?","g"),u,w,B,C=CKEDITOR.dom.walker.invisible(1),A=function(){function a(c){return function(a){var b=a.editor.createRange();b.moveToClosestEditablePosition(a.selected,c)&&a.editor.getSelection().selectRanges([b]);return!1}}function c(a){return function(c){var b=c.editor,d=b.createRange(),g;if(!b.readOnly)return(g=d.moveToClosestEditablePosition(c.selected,a))||(g=d.moveToClosestEditablePosition(c.selected, +!a)),g&&b.getSelection().selectRanges([d]),b.fire("saveSnapshot"),c.selected.remove(),g||(d.moveToElementEditablePosition(b.editable()),b.getSelection().selectRanges([d])),b.fire("saveSnapshot"),!1}}var b=a(),d=a(1);return{37:b,38:b,39:d,40:d,8:c(),46:c(1)}}();CKEDITOR.on("instanceCreated",function(a){function c(){var a=b.getSelection();a&&a.removeAllRanges()}var b=a.editor;b.on("contentDom",function(){function a(){t=new CKEDITOR.dom.selection(b.getSelection());t.lock()}function c(){f.removeListener("mouseup", +c);q.removeListener("mouseup",c);var a=CKEDITOR.document.$.selection,b=a.createRange();"None"!=a.type&&b.parentElement()&&b.parentElement().ownerDocument==e.$&&b.select()}function d(a){var c,b;c=(c=this.document.getActive())?"input"===c.getName()||"textarea"===c.getName():!1;c||(c=this.getSelection(1),(b=g(c))&&!b.equals(h)&&(c.selectElement(b),a.data.preventDefault()))}function g(a){a=a.getRanges()[0];return a?(a=a.startContainer.getAscendant(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")}, +!0))&&"false"===a.getAttribute("contenteditable")?a:null:null}var e=b.document,f=CKEDITOR.document,h=b.editable(),m=e.getBody(),q=e.getDocumentElement(),y=h.isInline(),u,t;CKEDITOR.env.gecko&&h.attachListener(h,"focus",function(a){a.removeListener();0!==u&&(a=b.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==h.$&&(a=b.createRange(),a.moveToElementEditStart(h),a.select())},null,null,-2);h.attachListener(h,CKEDITOR.env.webkit||CKEDITOR.env.gecko?"focusin":"focus",function(){if(u&&(CKEDITOR.env.webkit|| +CKEDITOR.env.gecko)){u=b._.previousActive&&b._.previousActive.equals(e.getActive());var a=null!=b._.previousScrollTop&&b._.previousScrollTop!=h.$.scrollTop;CKEDITOR.env.webkit&&u&&a&&(h.$.scrollTop=b._.previousScrollTop)}b.unlockSelection(u);u=0},null,null,-1);h.attachListener(h,"mousedown",function(){u=0});if(CKEDITOR.env.ie||CKEDITOR.env.gecko||y)r?h.attachListener(h,"beforedeactivate",a,null,null,-1):h.attachListener(b,"selectionCheck",a,null,null,-1),h.attachListener(h,CKEDITOR.env.webkit||CKEDITOR.env.gecko? +"focusout":"blur",function(){var a=t&&(t.isFake||2>t.getRanges().length);CKEDITOR.env.gecko&&!y&&a||(b.lockSelection(t),u=1)},null,null,-1),h.attachListener(h,"mousedown",function(){u=0});if(CKEDITOR.env.ie&&!y){var w;h.attachListener(h,"mousedown",function(a){2==a.data.$.button&&((a=b.document.getSelection())&&a.getType()!=CKEDITOR.SELECTION_NONE||(w=b.window.getScrollPosition()))});h.attachListener(h,"mouseup",function(a){2==a.data.$.button&&w&&(b.document.$.documentElement.scrollLeft=w.x,b.document.$.documentElement.scrollTop= +w.y);w=null});if("BackCompat"!=e.$.compatMode){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat){var x,v;q.on("mousedown",function(a){function c(a){a=a.data.$;if(x){var b=m.$.createTextRange();try{b.moveToPoint(a.clientX,a.clientY)}catch(d){}x.setEndPoint(0>v.compareEndPoints("StartToStart",b)?"EndToEnd":"StartToStart",b);x.select()}}function b(){q.removeListener("mousemove",c);f.removeListener("mouseup",b);q.removeListener("mouseup",b);x.select()}a=a.data;if(a.getTarget().is("html")&&a.$.y<q.$.clientHeight&& +a.$.x<q.$.clientWidth){x=m.$.createTextRange();try{x.moveToPoint(a.$.clientX,a.$.clientY)}catch(d){}v=x.duplicate();q.on("mousemove",c);f.on("mouseup",b);q.on("mouseup",b)}})}if(7<CKEDITOR.env.version&&11>CKEDITOR.env.version)q.on("mousedown",function(a){a.data.getTarget().is("html")&&(f.on("mouseup",c),q.on("mouseup",c))})}}h.attachListener(h,"selectionchange",k,b);h.attachListener(h,"keyup",l,b);h.attachListener(h,"touchstart",l,b);h.attachListener(h,"touchend",l,b);CKEDITOR.env.ie&&h.attachListener(h, +"keydown",d,b);h.attachListener(h,CKEDITOR.env.webkit||CKEDITOR.env.gecko?"focusin":"focus",function(){b.forceNextSelectionCheck();b.selectionChange(1)});if(y&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var z;h.attachListener(h,"mousedown",function(){z=1});h.attachListener(e.getDocumentElement(),"mouseup",function(){z&&l.call(b);z=0})}else h.attachListener(CKEDITOR.env.ie?h:e.getDocumentElement(),"mouseup",l,b);CKEDITOR.env.webkit&&h.attachListener(e,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:h.hasFocus&& n(h)}},null,null,-1);h.attachListener(h,"keydown",p(b),null,null,-1)});b.on("setData",function(){b.unlockSelection();CKEDITOR.env.webkit&&c()});b.on("contentDomUnload",function(){b.unlockSelection()});if(CKEDITOR.env.ie9Compat)b.on("beforeDestroy",c,null,null,9);b.on("dataReady",function(){delete b._.fakeSelection;delete b._.hiddenSelectionContainer;b.selectionChange(1)});b.on("loadSnapshot",function(){var a=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),c=b.editable().getLast(a);c&&c.hasAttribute("data-cke-hidden-sel")&& (c.remove(),CKEDITOR.env.gecko&&(a=b.editable().getFirst(a))&&a.is("br")&&a.getAttribute("_moz_editor_bogus_node")&&a.remove())},null,null,100);b.on("key",function(a){if("wysiwyg"==b.mode){var c=b.getSelection();if(c.isFake){var d=A[a.data.keyCode];if(d)return d({editor:b,selected:c.getSelectedElement(),selection:c,keyEvent:a})}}})});if(CKEDITOR.env.webkit)CKEDITOR.on("instanceReady",function(a){var c=a.editor;c.on("selectionChange",function(){var a=c.editable(),b=a.getCustomData("cke-fillingChar"); -b&&(b.getCustomData("ready")?(n(a),a.editor.fire("selectionCheck")):b.setCustomData("ready",1))},null,null,-1);c.on("beforeSetMode",function(){n(c.editable())},null,null,-1);c.on("getSnapshot",function(a){a.data&&(a.data=y(a.data))},c,null,20);c.on("toDataFormat",function(a){a.data.dataValue=y(a.data.dataValue)},null,null,0)});CKEDITOR.editor.prototype.selectionChange=function(a){(a?m:k).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){return!this._.savedSelection&&!this._.fakeSelection|| -a?(a=this.editable())&&"wysiwyg"==this.mode?new CKEDITOR.dom.selection(a):null:this._.savedSelection||this._.fakeSelection};CKEDITOR.editor.prototype.getSelectedRanges=function(a){var c=this.getSelection();return c&&c.getRanges(a)||[]};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);return a.getType()!=CKEDITOR.SELECTION_NONE?(!a.isLocked&&a.lock(),this._.savedSelection=a,!0):!1};CKEDITOR.editor.prototype.unlockSelection=function(a){var c=this._.savedSelection;return c? -(c.unlock(a),delete this._.savedSelection,!0):!1};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT= -3;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection){var c=a;a=a.root}var b=a instanceof CKEDITOR.dom.element;this.rev=c?c.rev:x++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=b?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(c)return CKEDITOR.tools.extend(this._.cache,c._.cache),this.isFake=c.isFake,this.isLocked=c.isLocked,this;a=this.getNative();var d,g;if(a)if(a.getRangeAt)d=(g=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(g.commonAncestorContainer); -else{try{g=a.createRange()}catch(e){}d=g&&CKEDITOR.dom.element.get(g.item&&g.item(0)||g.parentElement())}if(!d||d.type!=CKEDITOR.NODE_ELEMENT&&d.type!=CKEDITOR.NODE_TEXT||!this.root.equals(d)&&!this.root.contains(d))this._.cache.type=CKEDITOR.SELECTION_NONE,this._.cache.startElement=null,this._.cache.selectedElement=null,this._.cache.selectedText="",this._.cache.ranges=new CKEDITOR.dom.rangeList;return this};var E={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1, -select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.tools.extend(CKEDITOR.dom.selection,{_removeFillingCharSequenceString:y,_createFillingCharSequenceNode:g,FILLING_CHAR_SEQUENCE:u});CKEDITOR.dom.selection.prototype={getNative:function(){return void 0!==this._.cache.nativeSel?this._.cache.nativeSel:this._.cache.nativeSel=r?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:r?function(){var a=this._.cache;if(a.type)return a.type;var c=CKEDITOR.SELECTION_NONE; -try{var b=this.getNative(),d=b.type;"Text"==d&&(c=CKEDITOR.SELECTION_TEXT);"Control"==d&&(c=CKEDITOR.SELECTION_ELEMENT);b.createRange().parentElement()&&(c=CKEDITOR.SELECTION_TEXT)}catch(g){}return a.type=c}:function(){var a=this._.cache;if(a.type)return a.type;var c=CKEDITOR.SELECTION_TEXT,b=this.getNative();if(!b||!b.rangeCount)c=CKEDITOR.SELECTION_NONE;else if(1==b.rangeCount){var b=b.getRangeAt(0),d=b.startContainer;d==b.endContainer&&1==d.nodeType&&1==b.endOffset-b.startOffset&&E[d.childNodes[b.startOffset].nodeName.toLowerCase()]&& -(c=CKEDITOR.SELECTION_ELEMENT)}return a.type=c},getRanges:function(){var a=r?function(){function a(c){return(new CKEDITOR.dom.node(c)).getIndex()}var c=function(c,b){c=c.duplicate();c.collapse(b);var d=c.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var g=d.children,e,f,h=c.duplicate(),n=0,m=g.length-1,k=-1,l,r;n<=m;)if(k=Math.floor((n+m)/2),e=g[k],h.moveToElementText(e),l=h.compareEndPoints("StartToStart",c),0<l)m=k-1;else if(0>l)n=k+1;else return{container:d,offset:a(e)}; -if(-1==k||k==g.length-1&&0>l){h.moveToElementText(d);h.setEndPoint("StartToStart",c);h=h.text.replace(/(\r\n|\r)/g,"\n").length;g=d.childNodes;if(!h)return e=g[g.length-1],e.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:g.length}:{container:e,offset:e.nodeValue.length};for(d=g.length;0<h&&0<d;)f=g[--d],f.nodeType==CKEDITOR.NODE_TEXT&&(r=f,h-=f.nodeValue.length);return{container:r,offset:-h}}h.collapse(0<l?!0:!1);h.setEndPoint(0<l?"StartToStart":"EndToStart",c);h=h.text.replace(/(\r\n|\r)/g,"\n").length; -if(!h)return{container:d,offset:a(e)+(0<l?0:1)};for(;0<h;)try{f=e[0<l?"previousSibling":"nextSibling"],f.nodeType==CKEDITOR.NODE_TEXT&&(h-=f.nodeValue.length,r=f),e=f}catch(t){return{container:d,offset:a(e)}}return{container:r,offset:0<l?-h:r.nodeValue.length+h}};return function(){var a=this.getNative(),b=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT)return a=new CKEDITOR.dom.range(this.root),d=c(b,!0),a.setStart(new CKEDITOR.dom.node(d.container),d.offset),d=c(b), -a.setEnd(new CKEDITOR.dom.node(d.container),d.offset),a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse(),[a];if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],g=0;g<b.length;g++){for(var e=b.item(g),f=e.parentNode,h=0,a=new CKEDITOR.dom.range(this.root);h<f.childNodes.length&&f.childNodes[h]!=e;h++);a.setStart(new CKEDITOR.dom.node(f),h);a.setEnd(new CKEDITOR.dom.node(f),h+1);d.push(a)}return d}return[]}}():function(){var a= -[],c,b=this.getNative();if(!b)return a;for(var d=0;d<b.rangeCount;d++){var g=b.getRangeAt(d);c=new CKEDITOR.dom.range(this.root);c.setStart(new CKEDITOR.dom.node(g.startContainer),g.startOffset);c.setEnd(new CKEDITOR.dom.node(g.endContainer),g.endOffset);a.push(c)}return a};return function(c){var b=this._.cache,d=b.ranges;d||(b.ranges=d=new CKEDITOR.dom.rangeList(a.call(this)));return c?t(new CKEDITOR.dom.rangeList(d.slice())):d}}(),getStartElement:function(){var a=this._.cache;if(void 0!==a.startElement)return a.startElement; -var c;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var b=this.getRanges()[0];if(b){if(b.collapsed)c=b.startContainer,c.type!=CKEDITOR.NODE_ELEMENT&&(c=c.getParent());else{for(b.optimize();c=b.startContainer,b.startOffset==(c.getChildCount?c.getChildCount():c.getLength())&&!c.isBlockBoundary();)b.setStartAfter(c);c=b.startContainer;if(c.type!=CKEDITOR.NODE_ELEMENT)return c.getParent();if((c=c.getChild(b.startOffset))&&c.type== -CKEDITOR.NODE_ELEMENT)for(b=c.getFirst();b&&b.type==CKEDITOR.NODE_ELEMENT;)c=b,b=b.getFirst();else c=b.startContainer}c=c.$}}return a.startElement=c?new CKEDITOR.dom.element(c):null},getSelectedElement:function(){var a=this._.cache;if(void 0!==a.selectedElement)return a.selectedElement;var c=this,b=CKEDITOR.tools.tryThese(function(){return c.getNative().createRange().item(0)},function(){for(var a=c.getRanges()[0].clone(),b,d,g=2;g&&!((b=a.getEnclosedNode())&&b.type==CKEDITOR.NODE_ELEMENT&&E[b.getName()]&& -(d=b));g--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d&&d.$});return a.selectedElement=b?new CKEDITOR.dom.element(b):null},getSelectedText:function(){var a=this._.cache;if(void 0!==a.selectedText)return a.selectedText;var c=this.getNative(),c=r?"Control"==c.type?"":c.createRange().text:c.toString();return a.selectedText=c},lock:function(){this.getRanges();this.getStartElement();this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked=1},unlock:function(c){if(this.isLocked){if(c)var b= -this.getSelectedElement(),d=this.getRanges(),g=this.isFake;this.isLocked=0;this.reset();c&&(c=b||d[0]&&d[0].getCommonAncestor())&&c.getAscendant("body",1)&&((c=this.root.editor)&&c.plugins.tableselection&&c.plugins.tableselection.isSupportedEnvironment(c)&&h(d)?a.call(this,d):g?this.fake(b):b&&2>d.length?this.selectElement(b):this.selectRanges(d))}},reset:function(){this._.cache={};this.isFake=0;var a=this.root.editor;if(a&&a._.fakeSelection)if(this.rev==a._.fakeSelection.rev){delete a._.fakeSelection; -var c=a._.hiddenSelectionContainer;if(c){var b=a.checkDirty();a.fire("lockSnapshot");c.remove();a.fire("unlockSnapshot");!b&&a.resetDirty()}delete a._.hiddenSelectionContainer}else CKEDITOR.warn("selection-fake-reset");this.rev=x++},selectElement:function(a){var c=new CKEDITOR.dom.range(this.root);c.setStartBefore(a);c.setEndAfter(a);this.selectRanges([c])},selectRanges:function(c){var b=this.root.editor,e=b&&b._.hiddenSelectionContainer;this.reset();if(e)for(var e=this.root,f,m=0;m<c.length;++m)f= -c[m],f.endContainer.equals(e)&&(f.endOffset=Math.min(f.endOffset,e.getChildCount()));if(c.length)if(this.isLocked){var k=CKEDITOR.document.getActive();this.unlock();this.selectRanges(c);this.lock();k&&!k.equals(this.root)&&k.focus()}else{var l;a:{var t,y;if(1==c.length&&!(y=c[0]).collapsed&&(l=y.getEnclosedNode())&&l.type==CKEDITOR.NODE_ELEMENT&&(y=y.clone(),y.shrink(CKEDITOR.SHRINK_ELEMENT,!0),(t=y.getEnclosedNode())&&t.type==CKEDITOR.NODE_ELEMENT&&(l=t),"false"==l.getAttribute("contenteditable")))break a; -l=void 0}if(l)this.fake(l);else if(b&&b.plugins.tableselection&&b.plugins.tableselection.isSupportedEnvironment(b)&&h(c)&&!q&&!c[0]._getTableElement({table:1}).hasAttribute("data-cke-tableselection-ignored"))a.call(this,c);else{if(r){t=CKEDITOR.dom.walker.whitespaces(!0);l=/\ufeff|\u00a0/;y={table:1,tbody:1,tr:1};1<c.length&&(b=c[c.length-1],c[0].setEnd(b.endContainer,b.endOffset));b=c[0];c=b.collapsed;var u,x,v;if((e=b.getEnclosedNode())&&e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in E&&(!e.is("a")|| -!e.getText()))try{v=e.$.createControlRange();v.addElement(e.$);v.select();return}catch(p){}if(b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.getName()in y||b.endContainer.type==CKEDITOR.NODE_ELEMENT&&b.endContainer.getName()in y)b.shrink(CKEDITOR.NODE_ELEMENT,!0),c=b.collapsed;v=b.createBookmark();y=v.startNode;c||(k=v.endNode);v=b.document.$.body.createTextRange();v.moveToElementText(y.$);v.moveStart("character",1);k?(l=b.document.$.body.createTextRange(),l.moveToElementText(k.$), -v.setEndPoint("EndToEnd",l),v.moveEnd("character",-1)):(u=y.getNext(t),x=y.hasAscendant("pre"),u=!(u&&u.getText&&u.getText().match(l))&&(x||!y.hasPrevious()||y.getPrevious().is&&y.getPrevious().is("br")),x=b.document.createElement("span"),x.setHtml("\x26#65279;"),x.insertBefore(y),u&&b.document.createText("").insertBefore(y));b.setStartBefore(y);y.remove();c?(u?(v.moveStart("character",-1),v.select(),b.document.$.selection.clear()):v.select(),b.moveToPosition(x,CKEDITOR.POSITION_BEFORE_START),x.remove()): -(b.setEndBefore(k),k.remove(),v.select())}else{k=this.getNative();if(!k)return;this.removeAllRanges();for(v=0;v<c.length;v++){if(v<c.length-1&&(u=c[v],x=c[v+1],l=u.clone(),l.setStart(u.endContainer,u.endOffset),l.setEnd(x.startContainer,x.startOffset),!l.collapsed&&(l.shrink(CKEDITOR.NODE_ELEMENT,!0),b=l.getCommonAncestor(),l=l.getEnclosedNode(),b.isReadOnly()||l&&l.isReadOnly()))){x.setStart(u.startContainer,u.startOffset);c.splice(v--,1);continue}b=c[v];x=this.document.$.createRange();b.collapsed&& -CKEDITOR.env.webkit&&d(b)&&(l=g(this.root),b.insertNode(l),(u=l.getNext())&&!l.getPrevious()&&u.type==CKEDITOR.NODE_ELEMENT&&"br"==u.getName()?(n(this.root),b.moveToPosition(u,CKEDITOR.POSITION_BEFORE_START)):b.moveToPosition(l,CKEDITOR.POSITION_AFTER_END));x.setStart(b.startContainer.$,b.startOffset);try{x.setEnd(b.endContainer.$,b.endOffset)}catch(w){if(0<=w.toString().indexOf("NS_ERROR_ILLEGAL_VALUE"))b.collapse(1),x.setEnd(b.endContainer.$,b.endOffset);else throw w;}k.addRange(x)}}this.reset(); -this.root.fire("selectionchange")}}},fake:function(a,c){var b=this.root.editor;void 0===c&&a.hasAttribute("aria-label")&&(c=a.getAttribute("aria-label"));this.reset();w(b,c);var d=this._.cache,g=new CKEDITOR.dom.range(this.root);g.setStartBefore(a);g.setEndAfter(a);d.ranges=new CKEDITOR.dom.rangeList(g);d.selectedElement=d.startElement=a;d.type=CKEDITOR.SELECTION_ELEMENT;d.selectedText=d.nativeSel=null;this.isFake=1;this.rev=x++;b._.fakeSelection=this;this.root.fire("selectionchange")},isHidden:function(){var a= -this.getCommonAncestor();a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data("cke-hidden-sel"))},isInTable:function(a){return h(this.getRanges(),a)},isCollapsed:function(){var a=this.getRanges();return 1===a.length&&a[0].collapsed},createBookmarks:function(a){a=this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake=1);return a},selectBookmarks:function(a){for(var c=[],b,d=0;d< -a.length;d++){var g=new CKEDITOR.dom.range(this.root);g.moveToBookmark(a[d]);c.push(g)}a.isFake&&(b=h(c)?c[0]._getTableElement():c[0].getEnclosedNode(),b&&b.type==CKEDITOR.NODE_ELEMENT||(CKEDITOR.warn("selection-not-fake"),a.isFake=0));a.isFake&&!h(c)?this.fake(b):this.selectRanges(c);return this},getCommonAncestor:function(){var a=this.getRanges();return a.length?a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer):null},scrollIntoView:function(){this.getType()!=CKEDITOR.SELECTION_NONE&& -this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){if(this.getType()!=CKEDITOR.SELECTION_NONE){var a=this.getNative();try{a&&a[r?"empty":"removeAllRanges"]()}catch(c){}this.reset()}}}}(),"use strict",CKEDITOR.STYLE_BLOCK=1,CKEDITOR.STYLE_INLINE=2,CKEDITOR.STYLE_OBJECT=3,function(){function b(a,c){for(var b,d;(a=a.getParent())&&!a.equals(c);)if(a.getAttribute("data-nostyle"))b=a;else if(!d){var g=a.getAttribute("contentEditable");"false"==g?b=a:"true"==g&&(d=1)}return b}function h(a, -c,b,d){return(a.getPosition(c)|d)==d&&(!b.childRule||b.childRule(a))}function f(c){var d=c.document;if(c.collapsed)d=x(this,d),c.insertNode(d),c.moveToPosition(d,CKEDITOR.POSITION_BEFORE_END);else{var g=this.element,e=this._.definition,n,k=e.ignoreReadonly,m=k||e.includeReadonly;null==m&&(m=c.root.getCustomData("cke_includeReadonly"));var l=CKEDITOR.dtd[g];l||(n=!0,l=CKEDITOR.dtd.span);c.enlarge(CKEDITOR.ENLARGE_INLINE,1);c.trim();var r=c.createBookmark(),t=r.startNode,y=r.endNode,q=t,u;if(!k){var v= -c.getCommonAncestor(),k=b(t,v),v=b(y,v);k&&(q=k.getNextSourceNode(!0));v&&(y=v)}for(q.getPosition(y)==CKEDITOR.POSITION_FOLLOWING&&(q=0);q;){k=!1;if(q.equals(y))q=null,k=!0;else{var w=q.type==CKEDITOR.NODE_ELEMENT?q.getName():null,v=w&&"false"==q.getAttribute("contentEditable"),z=w&&-1!==CKEDITOR.tools.array.indexOf(CKEDITOR.style.unstylableElements,w),z=w&&(q.getAttribute("data-nostyle")||z);if(w&&q.data("cke-bookmark")||q.type===CKEDITOR.NODE_COMMENT){q=q.getNextSourceNode(!0);continue}if(v&&m&& -CKEDITOR.dtd.$block[w])for(var B=q,A=a(B),E=void 0,N=A.length,R=0,B=N&&new CKEDITOR.dom.range(B.getDocument());R<N;++R){var E=A[R],ea=CKEDITOR.filter.instances[E.data("cke-filter")];if(ea?ea.check(this):1)B.selectNodeContents(E),f.call(this,B)}A=w?!l[w]||z?0:v&&!m?0:h(q,y,e,O):1;if(A)if(E=q.getParent(),A=e,N=g,R=n,!E||!(E.getDtd()||CKEDITOR.dtd.span)[N]&&!R||A.parentRule&&!A.parentRule(E))k=!0;else{if(u||w&&CKEDITOR.dtd.$removeEmpty[w]&&(q.getPosition(y)|O)!=O||(u=c.clone(),u.setStartBefore(q)),w= -q.type,w==CKEDITOR.NODE_TEXT||v||w==CKEDITOR.NODE_ELEMENT&&!q.getChildCount()){for(var w=q,ia;(k=!w.getNext(L))&&(ia=w.getParent(),l[ia.getName()])&&h(ia,t,e,I);)w=ia;u.setEndAfter(w)}}else k=!0;q=q.getNextSourceNode(z||v)}if(k&&u&&!u.collapsed){for(var k=x(this,d),v=k.hasAttributes(),z=u.getCommonAncestor(),w={},A={},E={},N={},ha,fa,D;k&&z;){if(z.getName()==g){for(ha in e.attributes)!N[ha]&&(D=z.getAttribute(fa))&&(k.getAttribute(ha)==D?A[ha]=1:N[ha]=1);for(fa in e.styles)!E[fa]&&(D=z.getStyle(fa))&& -(k.getStyle(fa)==D?w[fa]=1:E[fa]=1)}z=z.getParent()}for(ha in A)k.removeAttribute(ha);for(fa in w)k.removeStyle(fa);v&&!k.hasAttributes()&&(k=null);k?(u.extractContents().appendTo(k),u.insertNode(k),p.call(this,k),k.mergeSiblings(),CKEDITOR.env.ie||k.$.normalize()):(k=new CKEDITOR.dom.element("span"),u.extractContents().appendTo(k),u.insertNode(k),p.call(this,k),k.remove(!0));u=null}}c.moveToBookmark(r);c.shrink(CKEDITOR.SHRINK_TEXT);c.shrink(CKEDITOR.NODE_ELEMENT,!0)}}function e(a){function c(){for(var a= -new CKEDITOR.dom.elementPath(d.getParent()),b=new CKEDITOR.dom.elementPath(m.getParent()),g=null,e=null,f=0;f<a.elements.length;f++){var h=a.elements[f];if(h==a.block||h==a.blockLimit)break;l.checkElementRemovable(h,!0)&&(g=h)}for(f=0;f<b.elements.length;f++){h=b.elements[f];if(h==b.block||h==b.blockLimit)break;l.checkElementRemovable(h,!0)&&(e=h)}e&&m.breakParent(e);g&&d.breakParent(g)}a.enlarge(CKEDITOR.ENLARGE_INLINE,1);var b=a.createBookmark(),d=b.startNode,g=this._.definition.alwaysRemoveElement; -if(a.collapsed){for(var e=new CKEDITOR.dom.elementPath(d.getParent(),a.root),f,h=0,n;h<e.elements.length&&(n=e.elements[h])&&n!=e.block&&n!=e.blockLimit;h++)if(this.checkElementRemovable(n)){var k;!g&&a.collapsed&&(a.checkBoundaryOfElement(n,CKEDITOR.END)||(k=a.checkBoundaryOfElement(n,CKEDITOR.START)))?(f=n,f.match=k?"start":"end"):(n.mergeSiblings(),n.is(this.element)?w.call(this,n):t(n,q(this)[n.getName()]))}if(f){g=d;for(h=0;;h++){n=e.elements[h];if(n.equals(f))break;else if(n.match)continue; -else n=n.clone();n.append(g);g=n}g["start"==f.match?"insertBefore":"insertAfter"](f)}}else{var m=b.endNode,l=this;c();for(e=d;!e.equals(m);)f=e.getNextSourceNode(),e.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(e)&&(e.getName()==this.element?w.call(this,e):t(e,q(this)[e.getName()]),f.type==CKEDITOR.NODE_ELEMENT&&f.contains(d)&&(c(),f=d.getNext())),e=f}a.moveToBookmark(b);a.shrink(CKEDITOR.NODE_ELEMENT,!0)}function a(a){var c=[];a.forEach(function(a){if("true"==a.getAttribute("contenteditable"))return c.push(a), -!1},CKEDITOR.NODE_ELEMENT,!0);return c}function m(a){var c=a.getEnclosedNode()||a.getCommonAncestor(!1,!0);(a=(new CKEDITOR.dom.elementPath(c,a.root)).contains(this.element,1))&&!a.isReadOnly()&&u(a,this)}function k(a){var c=a.getCommonAncestor(!0,!0);if(a=(new CKEDITOR.dom.elementPath(c,a.root)).contains(this.element,1)){var c=this._.definition,b=c.attributes;if(b)for(var d in b)a.removeAttribute(d,b[d]);if(c.styles)for(var g in c.styles)c.styles.hasOwnProperty(g)&&a.removeStyle(g)}}function l(a){var c= -a.createBookmark(!0),b=a.createIterator();b.enforceRealBlocks=!0;this._.enterMode&&(b.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR);for(var g,e=a.document,f;g=b.getNextParagraph();)!g.isReadOnly()&&(b.activeFilter?b.activeFilter.check(this):1)&&(f=x(this,e,g),d(g,f));a.moveToBookmark(c)}function c(a){var c=a.createBookmark(1),b=a.createIterator();b.enforceRealBlocks=!0;b.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var g,e;g=b.getNextParagraph();)this.checkElementRemovable(g)&&(g.is("pre")? -((e=this._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))&&g.copyAttributes(e),d(g,e)):w.call(this,g));a.moveToBookmark(c)}function d(a,c){var b=!c;b&&(c=a.getDocument().createElement("div"),a.copyAttributes(c));var d=c&&c.is("pre"),e=a.is("pre"),f=!d&&e;if(d&&!e){e=c;(f=a.getBogus())&&f.remove();f=a.getHtml();f=n(f,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"");f=f.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+| )/g, -" ");f=f.replace(/<br\b[^>]*>/gi,"\n");if(CKEDITOR.env.ie){var h=a.getDocument().createElement("div");h.append(e);e.$.outerHTML="\x3cpre\x3e"+f+"\x3c/pre\x3e";e.copyAttributes(h.getFirst());e=h.getFirst().remove()}else e.setHtml(f);c=e}else f?c=y(b?[a.getHtml()]:g(a),c):a.moveChildren(c);c.replace(a);if(d){var b=c,k;(k=b.getPrevious(C))&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("pre")&&(d=n(k.getHtml(),/\n$/,"")+"\n\n"+n(b.getHtml(),/^\n/,""),CKEDITOR.env.ie?b.$.outerHTML="\x3cpre\x3e"+d+"\x3c/pre\x3e": +b&&(b.getCustomData("ready")?(n(a),a.editor.fire("selectionCheck")):b.setCustomData("ready",1))},null,null,-1);c.on("beforeSetMode",function(){n(c.editable())},null,null,-1);c.on("getSnapshot",function(a){a.data&&(a.data=y(a.data))},c,null,20);c.on("toDataFormat",function(a){a.data.dataValue=y(a.data.dataValue)},null,null,0)});CKEDITOR.editor.prototype.selectionChange=function(a){(a?k:l).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){return!this._.savedSelection&&!this._.fakeSelection|| +a?(a=this.editable())&&"wysiwyg"==this.mode&&"recreating"!==this.status?new CKEDITOR.dom.selection(a):null:this._.savedSelection||this._.fakeSelection};CKEDITOR.editor.prototype.getSelectedRanges=function(a){var c=this.getSelection();return c&&c.getRanges(a)||[]};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);return a.getType()!=CKEDITOR.SELECTION_NONE?(!a.isLocked&&a.lock(),this._.savedSelection=a,!0):!1};CKEDITOR.editor.prototype.unlockSelection=function(a){var c= +this._.savedSelection;return c?(c.unlock(a),delete this._.savedSelection,!0):!1};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT= +2;CKEDITOR.SELECTION_ELEMENT=3;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection){var c=a;a=a.root}var b=a instanceof CKEDITOR.dom.element;this.rev=c?c.rev:x++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=b?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(c)return CKEDITOR.tools.extend(this._.cache,c._.cache),this.isFake=c.isFake,this.isLocked=c.isLocked,this;a=this.getNative();var d,g;if(a)if(a.getRangeAt)d=(g=a.rangeCount&&a.getRangeAt(0))&& +new CKEDITOR.dom.node(g.commonAncestorContainer);else{try{g=a.createRange()}catch(e){}d=g&&CKEDITOR.dom.element.get(g.item&&g.item(0)||g.parentElement())}if(!d||d.type!=CKEDITOR.NODE_ELEMENT&&d.type!=CKEDITOR.NODE_TEXT||!this.root.equals(d)&&!this.root.contains(d))this._.cache.type=CKEDITOR.SELECTION_NONE,this._.cache.startElement=null,this._.cache.selectedElement=null,this._.cache.selectedText="",this._.cache.ranges=new CKEDITOR.dom.rangeList;return this};var E={img:1,hr:1,li:1,table:1,tr:1,td:1, +th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.tools.extend(CKEDITOR.dom.selection,{_removeFillingCharSequenceString:y,_createFillingCharSequenceNode:g,FILLING_CHAR_SEQUENCE:t});CKEDITOR.dom.selection.prototype={getNative:function(){return void 0!==this._.cache.nativeSel?this._.cache.nativeSel:this._.cache.nativeSel=r?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:r?function(){var a=this._.cache;if(a.type)return a.type; +var c=CKEDITOR.SELECTION_NONE;try{var b=this.getNative(),d=b.type;"Text"==d&&(c=CKEDITOR.SELECTION_TEXT);"Control"==d&&(c=CKEDITOR.SELECTION_ELEMENT);b.createRange().parentElement()&&(c=CKEDITOR.SELECTION_TEXT)}catch(g){}return a.type=c}:function(){var a=this._.cache;if(a.type)return a.type;var c=CKEDITOR.SELECTION_TEXT,b=this.getNative();if(!b||!b.rangeCount)c=CKEDITOR.SELECTION_NONE;else if(1==b.rangeCount){var b=b.getRangeAt(0),d=b.startContainer;d==b.endContainer&&1==d.nodeType&&1==b.endOffset- +b.startOffset&&E[d.childNodes[b.startOffset].nodeName.toLowerCase()]&&(c=CKEDITOR.SELECTION_ELEMENT)}return a.type=c},getRanges:function(){var a=r?function(){function a(c){return(new CKEDITOR.dom.node(c)).getIndex()}var c=function(c,b){c=c.duplicate();c.collapse(b);var d=c.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var g=d.children,e,f,h=c.duplicate(),k=0,n=g.length-1,l=-1,m,q;k<=n;)if(l=Math.floor((k+n)/2),e=g[l],h.moveToElementText(e),m=h.compareEndPoints("StartToStart", +c),0<m)n=l-1;else if(0>m)k=l+1;else return{container:d,offset:a(e)};if(-1==l||l==g.length-1&&0>m){h.moveToElementText(d);h.setEndPoint("StartToStart",c);h=h.text.replace(/(\r\n|\r)/g,"\n").length;g=d.childNodes;if(!h)return e=g[g.length-1],e.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:g.length}:{container:e,offset:e.nodeValue.length};for(d=g.length;0<h&&0<d;)f=g[--d],f.nodeType==CKEDITOR.NODE_TEXT&&(q=f,h-=f.nodeValue.length);return{container:q,offset:-h}}h.collapse(0<m?!0:!1);h.setEndPoint(0< +m?"StartToStart":"EndToStart",c);h=h.text.replace(/(\r\n|\r)/g,"\n").length;if(!h)return{container:d,offset:a(e)+(0<m?0:1)};for(;0<h;)try{f=e[0<m?"previousSibling":"nextSibling"],f.nodeType==CKEDITOR.NODE_TEXT&&(h-=f.nodeValue.length,q=f),e=f}catch(r){return{container:d,offset:a(e)}}return{container:q,offset:0<m?-h:q.nodeValue.length+h}};return function(){var a=this.getNative(),b=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT)return a=new CKEDITOR.dom.range(this.root), +d=c(b,!0),a.setStart(new CKEDITOR.dom.node(d.container),d.offset),d=c(b),a.setEnd(new CKEDITOR.dom.node(d.container),d.offset),a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse(),[a];if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],g=0;g<b.length;g++){for(var e=b.item(g),f=e.parentNode,h=0,a=new CKEDITOR.dom.range(this.root);h<f.childNodes.length&&f.childNodes[h]!=e;h++);a.setStart(new CKEDITOR.dom.node(f),h);a.setEnd(new CKEDITOR.dom.node(f), +h+1);d.push(a)}return d}return[]}}():function(){var a=[],c,b=this.getNative();if(!b)return a;for(var d=0;d<b.rangeCount;d++){var g=b.getRangeAt(d);c=new CKEDITOR.dom.range(this.root);c.setStart(new CKEDITOR.dom.node(g.startContainer),g.startOffset);c.setEnd(new CKEDITOR.dom.node(g.endContainer),g.endOffset);a.push(c)}return a};return function(c){var b=this._.cache,d=b.ranges;d||(b.ranges=d=new CKEDITOR.dom.rangeList(a.call(this)));return c?q(new CKEDITOR.dom.rangeList(d.slice())):d}}(),getStartElement:function(){var a= +this._.cache;if(void 0!==a.startElement)return a.startElement;var c;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var b=this.getRanges()[0];if(b){if(b.collapsed)c=b.startContainer,c.type!=CKEDITOR.NODE_ELEMENT&&(c=c.getParent());else{for(b.optimize();c=b.startContainer,b.startOffset==(c.getChildCount?c.getChildCount():c.getLength())&&!c.isBlockBoundary();)b.setStartAfter(c);c=b.startContainer;if(c.type!=CKEDITOR.NODE_ELEMENT)return c.getParent(); +if((c=c.getChild(b.startOffset))&&c.type==CKEDITOR.NODE_ELEMENT)for(b=c.getFirst();b&&b.type==CKEDITOR.NODE_ELEMENT;)c=b,b=b.getFirst();else c=b.startContainer}c=c.$}}return a.startElement=c?new CKEDITOR.dom.element(c):null},getSelectedElement:function(){var a=this._.cache;if(void 0!==a.selectedElement)return a.selectedElement;var c=this,b=CKEDITOR.tools.tryThese(function(){return c.getNative().createRange().item(0)},function(){for(var a=c.getRanges()[0].clone(),b,d,g=2;g&&!((b=a.getEnclosedNode())&& +b.type==CKEDITOR.NODE_ELEMENT&&E[b.getName()]&&(d=b));g--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d&&d.$});return a.selectedElement=b?new CKEDITOR.dom.element(b):null},getSelectedText:function(){var a=this._.cache;if(void 0!==a.selectedText)return a.selectedText;var c=this.getNative(),c=r?"Control"==c.type?"":c.createRange().text:c.toString();return a.selectedText=c},lock:function(){this.getRanges();this.getStartElement();this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null; +this.isLocked=1},unlock:function(c){if(this.isLocked){if(c)var b=this.getSelectedElement(),d=this.getRanges(),g=this.isFake;this.isLocked=0;this.reset();c&&(c=b||d[0]&&d[0].getCommonAncestor())&&c.getAscendant("body",1)&&((c=this.root.editor)&&c.plugins.tableselection&&c.plugins.tableselection.isSupportedEnvironment(c)&&h(d)?a.call(this,d):g?this.fake(b):b&&2>d.length?this.selectElement(b):this.selectRanges(d))}},reset:function(){this._.cache={};this.isFake=0;var a=this.root.editor;if(a&&a._.fakeSelection)if(this.rev== +a._.fakeSelection.rev){delete a._.fakeSelection;var c=a._.hiddenSelectionContainer;if(c){var b=a.checkDirty();a.fire("lockSnapshot");c.remove();a.fire("unlockSnapshot");!b&&a.resetDirty()}delete a._.hiddenSelectionContainer}else CKEDITOR.warn("selection-fake-reset");this.rev=x++},selectElement:function(a){var c=new CKEDITOR.dom.range(this.root);c.setStartBefore(a);c.setEndAfter(a);this.selectRanges([c])},selectRanges:function(c){var b=this.root.editor,e=b&&b._.hiddenSelectionContainer;this.reset(); +if(e)for(var e=this.root,f,k=0;k<c.length;++k)f=c[k],f.endContainer.equals(e)&&(f.endOffset=Math.min(f.endOffset,e.getChildCount()));if(c.length)if(this.isLocked){var l=CKEDITOR.document.getActive();this.unlock();this.selectRanges(c);this.lock();l&&!l.equals(this.root)&&l.focus()}else{var m;a:{var q,y;if(1==c.length&&!(y=c[0]).collapsed&&(m=y.getEnclosedNode())&&m.type==CKEDITOR.NODE_ELEMENT&&(y=y.clone(),y.shrink(CKEDITOR.SHRINK_ELEMENT,!0),(q=y.getEnclosedNode())&&q.type==CKEDITOR.NODE_ELEMENT&& +(m=q),"false"==m.getAttribute("contenteditable")))break a;m=void 0}if(m)this.fake(m);else if(b&&b.plugins.tableselection&&b.plugins.tableselection.isSupportedEnvironment(b)&&h(c)&&!u&&!c[0]._getTableElement({table:1}).hasAttribute("data-cke-tableselection-ignored"))a.call(this,c);else{if(r){q=CKEDITOR.dom.walker.whitespaces(!0);m=/\ufeff|\u00a0/;y={table:1,tbody:1,tr:1};1<c.length&&(b=c[c.length-1],c[0].setEnd(b.endContainer,b.endOffset));b=c[0];c=b.collapsed;var t,w,p;if((e=b.getEnclosedNode())&& +e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in E&&(!e.is("a")||!e.getText()))try{p=e.$.createControlRange();p.addElement(e.$);p.select();return}catch(x){}if(b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.getName()in y||b.endContainer.type==CKEDITOR.NODE_ELEMENT&&b.endContainer.getName()in y)b.shrink(CKEDITOR.NODE_ELEMENT,!0),c=b.collapsed;p=b.createBookmark();y=p.startNode;c||(l=p.endNode);p=b.document.$.body.createTextRange();p.moveToElementText(y.$);p.moveStart("character",1);l?(m= +b.document.$.body.createTextRange(),m.moveToElementText(l.$),p.setEndPoint("EndToEnd",m),p.moveEnd("character",-1)):(t=y.getNext(q),w=y.hasAscendant("pre"),t=!(t&&t.getText&&t.getText().match(m))&&(w||!y.hasPrevious()||y.getPrevious().is&&y.getPrevious().is("br")),w=b.document.createElement("span"),w.setHtml("\x26#65279;"),w.insertBefore(y),t&&b.document.createText("").insertBefore(y));b.setStartBefore(y);y.remove();c?(t?(p.moveStart("character",-1),p.select(),b.document.$.selection.clear()):p.select(), +b.moveToPosition(w,CKEDITOR.POSITION_BEFORE_START),w.remove()):(b.setEndBefore(l),l.remove(),p.select())}else{l=this.getNative();if(!l)return;this.removeAllRanges();for(p=0;p<c.length;p++){if(p<c.length-1&&(t=c[p],w=c[p+1],m=t.clone(),m.setStart(t.endContainer,t.endOffset),m.setEnd(w.startContainer,w.startOffset),!m.collapsed&&(m.shrink(CKEDITOR.NODE_ELEMENT,!0),b=m.getCommonAncestor(),m=m.getEnclosedNode(),b.isReadOnly()||m&&m.isReadOnly()))){w.setStart(t.startContainer,t.startOffset);c.splice(p--, +1);continue}b=c[p];w=this.document.$.createRange();b.collapsed&&CKEDITOR.env.webkit&&d(b)&&(m=g(this.root),b.insertNode(m),(t=m.getNext())&&!m.getPrevious()&&t.type==CKEDITOR.NODE_ELEMENT&&"br"==t.getName()?(n(this.root),b.moveToPosition(t,CKEDITOR.POSITION_BEFORE_START)):b.moveToPosition(m,CKEDITOR.POSITION_AFTER_END));w.setStart(b.startContainer.$,b.startOffset);try{w.setEnd(b.endContainer.$,b.endOffset)}catch(v){if(0<=v.toString().indexOf("NS_ERROR_ILLEGAL_VALUE"))b.collapse(1),w.setEnd(b.endContainer.$, +b.endOffset);else throw v;}l.addRange(w)}}this.reset();this.root.fire("selectionchange")}}},fake:function(a,c){var b=this.root.editor;void 0===c&&a.hasAttribute("aria-label")&&(c=a.getAttribute("aria-label"));this.reset();v(b,c);var d=this._.cache,g=new CKEDITOR.dom.range(this.root);g.setStartBefore(a);g.setEndAfter(a);d.ranges=new CKEDITOR.dom.rangeList(g);d.selectedElement=d.startElement=a;d.type=CKEDITOR.SELECTION_ELEMENT;d.selectedText=d.nativeSel=null;this.isFake=1;this.rev=x++;b._.fakeSelection= +this;this.root.fire("selectionchange")},isHidden:function(){var a=this.getCommonAncestor();a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data("cke-hidden-sel"))},isInTable:function(a){return h(this.getRanges(),a)},isCollapsed:function(){var a=this.getRanges();return 1===a.length&&a[0].collapsed},createBookmarks:function(a){a=this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake= +1);return a},selectBookmarks:function(a){for(var c=[],b,d=0;d<a.length;d++){var g=new CKEDITOR.dom.range(this.root);g.moveToBookmark(a[d]);c.push(g)}a.isFake&&(b=h(c)?c[0]._getTableElement():c[0].getEnclosedNode(),b&&b.type==CKEDITOR.NODE_ELEMENT||(CKEDITOR.warn("selection-not-fake"),a.isFake=0));a.isFake&&!h(c)?this.fake(b):this.selectRanges(c);return this},getCommonAncestor:function(){var a=this.getRanges();return a.length?a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer):null}, +scrollIntoView:function(){this.getType()!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){if(this.getType()!=CKEDITOR.SELECTION_NONE){var a=this.getNative();try{a&&a[r?"empty":"removeAllRanges"]()}catch(c){}this.reset()}}}}(),"use strict",CKEDITOR.STYLE_BLOCK=1,CKEDITOR.STYLE_INLINE=2,CKEDITOR.STYLE_OBJECT=3,function(){function b(a,c){for(var b,d;(a=a.getParent())&&!a.equals(c);)if(a.getAttribute("data-nostyle"))b=a;else if(!d){var g=a.getAttribute("contentEditable"); +"false"==g?b=a:"true"==g&&(d=1)}return b}function h(a,c,b,d){return(a.getPosition(c)|d)==d&&(!b.childRule||b.childRule(a))}function f(c){var d=c.document;if(c.collapsed)d=x(this,d),c.insertNode(d),c.moveToPosition(d,CKEDITOR.POSITION_BEFORE_END);else{var g=this.element,e=this._.definition,k,n=e.ignoreReadonly,l=n||e.includeReadonly;null==l&&(l=c.root.getCustomData("cke_includeReadonly"));var m=CKEDITOR.dtd[g];m||(k=!0,m=CKEDITOR.dtd.span);c.enlarge(CKEDITOR.ENLARGE_INLINE,1);c.trim();var q=c.createBookmark(), +r=q.startNode,y=q.endNode,t=r,u;if(!n){var w=c.getCommonAncestor(),n=b(r,w),w=b(y,w);n&&(t=n.getNextSourceNode(!0));w&&(y=w)}for(t.getPosition(y)==CKEDITOR.POSITION_FOLLOWING&&(t=0);t;){n=!1;if(t.equals(y))t=null,n=!0;else{var v=t.type==CKEDITOR.NODE_ELEMENT?t.getName():null,w=v&&"false"==t.getAttribute("contentEditable"),z=v&&-1!==CKEDITOR.tools.array.indexOf(CKEDITOR.style.unstylableElements,v),z=v&&(t.getAttribute("data-nostyle")||z);if(v&&t.data("cke-bookmark")||t.type===CKEDITOR.NODE_COMMENT){t= +t.getNextSourceNode(!0);continue}if(w&&l&&CKEDITOR.dtd.$block[v])for(var B=t,A=a(B),E=void 0,C=A.length,Q=0,B=C&&new CKEDITOR.dom.range(B.getDocument());Q<C;++Q){var E=A[Q],ea=CKEDITOR.filter.instances[E.data("cke-filter")];if(ea?ea.check(this):1)B.selectNodeContents(E),f.call(this,B)}A=v?!m[v]||z?0:w&&!l?0:h(t,y,e,N):1;if(A)if(E=t.getParent(),A=e,C=g,Q=k,!E||!(E.getDtd()||CKEDITOR.dtd.span)[C]&&!Q||A.parentRule&&!A.parentRule(E))n=!0;else{if(u||v&&CKEDITOR.dtd.$removeEmpty[v]&&(t.getPosition(y)| +N)!=N||(u=c.clone(),u.setStartBefore(t)),v=t.type,v==CKEDITOR.NODE_TEXT||w||v==CKEDITOR.NODE_ELEMENT&&!t.getChildCount()){for(var v=t,ja;(n=!v.getNext(M))&&(ja=v.getParent(),m[ja.getName()])&&h(ja,r,e,I);)v=ja;u.setEndAfter(v)}}else n=!0;t=t.getNextSourceNode(z||w)}if(n&&u&&!u.collapsed){for(var n=x(this,d),w=n.hasAttributes(),z=u.getCommonAncestor(),v={},A={},E={},C={},ga,fa,ia;n&&z;){if(z.getName()==g){for(ga in e.attributes)!C[ga]&&(ia=z.getAttribute(fa))&&(n.getAttribute(ga)==ia?A[ga]=1:C[ga]= +1);for(fa in e.styles)!E[fa]&&(ia=z.getStyle(fa))&&(n.getStyle(fa)==ia?v[fa]=1:E[fa]=1)}z=z.getParent()}for(ga in A)n.removeAttribute(ga);for(fa in v)n.removeStyle(fa);w&&!n.hasAttributes()&&(n=null);n?(u.extractContents().appendTo(n),u.insertNode(n),p.call(this,n),n.mergeSiblings(),CKEDITOR.env.ie||n.$.normalize()):(n=new CKEDITOR.dom.element("span"),u.extractContents().appendTo(n),u.insertNode(n),p.call(this,n),n.remove(!0));u=null}}c.moveToBookmark(q);c.shrink(CKEDITOR.SHRINK_TEXT);c.shrink(CKEDITOR.NODE_ELEMENT, +!0)}}function e(a){function c(){for(var a=new CKEDITOR.dom.elementPath(d.getParent()),b=new CKEDITOR.dom.elementPath(l.getParent()),g=null,e=null,f=0;f<a.elements.length;f++){var h=a.elements[f];if(h==a.block||h==a.blockLimit)break;m.checkElementRemovable(h,!0)&&(g=h)}for(f=0;f<b.elements.length;f++){h=b.elements[f];if(h==b.block||h==b.blockLimit)break;m.checkElementRemovable(h,!0)&&(e=h)}e&&l.breakParent(e);g&&d.breakParent(g)}a.enlarge(CKEDITOR.ENLARGE_INLINE,1);var b=a.createBookmark(),d=b.startNode, +g=this._.definition.alwaysRemoveElement;if(a.collapsed){for(var e=new CKEDITOR.dom.elementPath(d.getParent(),a.root),f,h=0,k;h<e.elements.length&&(k=e.elements[h])&&k!=e.block&&k!=e.blockLimit;h++)if(this.checkElementRemovable(k)){var n;!g&&a.collapsed&&(a.checkBoundaryOfElement(k,CKEDITOR.END)||(n=a.checkBoundaryOfElement(k,CKEDITOR.START)))?(f=k,f.match=n?"start":"end"):(k.mergeSiblings(),k.is(this.element)?v.call(this,k):q(k,u(this)[k.getName()]))}if(f){g=d;for(h=0;;h++){k=e.elements[h];if(k.equals(f))break; +else if(k.match)continue;else k=k.clone();k.append(g);g=k}g["start"==f.match?"insertBefore":"insertAfter"](f)}}else{var l=b.endNode,m=this;c();for(e=d;!e.equals(l);)f=e.getNextSourceNode(),e.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(e)&&(e.getName()==this.element?v.call(this,e):q(e,u(this)[e.getName()]),f.type==CKEDITOR.NODE_ELEMENT&&f.contains(d)&&(c(),f=d.getNext())),e=f}a.moveToBookmark(b);a.shrink(CKEDITOR.NODE_ELEMENT,!0)}function a(a){var c=[];a.forEach(function(a){if("true"== +a.getAttribute("contenteditable"))return c.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return c}function k(a){var c=a.getEnclosedNode()||a.getCommonAncestor(!1,!0);(a=(new CKEDITOR.dom.elementPath(c,a.root)).contains(this.element,1))&&!a.isReadOnly()&&t(a,this)}function l(a){var c=a.getCommonAncestor(!0,!0);if(a=(new CKEDITOR.dom.elementPath(c,a.root)).contains(this.element,1)){var c=this._.definition,b=c.attributes;if(b)for(var d in b)a.removeAttribute(d,b[d]);if(c.styles)for(var g in c.styles)c.styles.hasOwnProperty(g)&& +a.removeStyle(g)}}function m(a){var c=a.createBookmark(!0),b=a.createIterator();b.enforceRealBlocks=!0;this._.enterMode&&(b.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR);for(var g,e=a.document,f;g=b.getNextParagraph();)!g.isReadOnly()&&(b.activeFilter?b.activeFilter.check(this):1)&&(f=x(this,e,g),d(g,f));a.moveToBookmark(c)}function c(a){var c=a.createBookmark(1),b=a.createIterator();b.enforceRealBlocks=!0;b.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var g,e;g=b.getNextParagraph();)this.checkElementRemovable(g)&& +(g.is("pre")?((e=this._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))&&g.copyAttributes(e),d(g,e)):v.call(this,g));a.moveToBookmark(c)}function d(a,c){var b=!c;b&&(c=a.getDocument().createElement("div"),a.copyAttributes(c));var d=c&&c.is("pre"),e=a.is("pre"),f=!d&&e;if(d&&!e){e=c;(f=a.getBogus())&&f.remove();f=a.getHtml();f=n(f,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"");f=f.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+| )/g, +" ");f=f.replace(/<br\b[^>]*>/gi,"\n");if(CKEDITOR.env.ie){var h=a.getDocument().createElement("div");h.append(e);e.$.outerHTML="\x3cpre\x3e"+f+"\x3c/pre\x3e";e.copyAttributes(h.getFirst());e=h.getFirst().remove()}else e.setHtml(f);c=e}else f?c=y(b?[a.getHtml()]:g(a),c):a.moveChildren(c);c.replace(a);if(d){var b=c,k;(k=b.getPrevious(D))&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("pre")&&(d=n(k.getHtml(),/\n$/,"")+"\n\n"+n(b.getHtml(),/^\n/,""),CKEDITOR.env.ie?b.$.outerHTML="\x3cpre\x3e"+d+"\x3c/pre\x3e": b.setHtml(d),k.remove())}else b&&r(c)}function g(a){var c=[];n(a.getOuterHtml(),/(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,c,b){return c+"\x3c/pre\x3e"+b+"\x3cpre\x3e"}).replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi,function(a,b){c.push(b)});return c}function n(a,c,b){var d="",g="";a=a.replace(/(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi,function(a,c,b){c&&(d=c);b&&(g=b);return""});return d+a.replace(c,b)+g}function y(a,c){var b; 1<a.length&&(b=new CKEDITOR.dom.documentFragment(c.getDocument()));for(var d=0;d<a.length;d++){var g=a[d],g=g.replace(/(\r\n|\r)/g,"\n"),g=n(g,/^[ \t]*\n/,""),g=n(g,/\n$/,""),g=n(g,/^[ \t]+|[ \t]+$/g,function(a,c){return 1==a.length?"\x26nbsp;":c?" "+CKEDITOR.tools.repeat("\x26nbsp;",a.length-1):CKEDITOR.tools.repeat("\x26nbsp;",a.length-1)+" "}),g=g.replace(/\n/g,"\x3cbr\x3e"),g=g.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat("\x26nbsp;",a.length-1)+" "});if(b){var e=c.clone();e.setHtml(g); -b.append(e)}else c.setHtml(g)}return b||c}function w(a,c){var b=this._.definition,d=b.attributes,b=b.styles,g=q(this)[a.getName()],e=CKEDITOR.tools.isEmpty(d)&&CKEDITOR.tools.isEmpty(b),f;for(f in d)if("class"!=f&&!this._.definition.fullMatch||a.getAttribute(f)==v(f,d[f]))c&&"data-"==f.slice(0,5)||(e=a.hasAttribute(f),a.removeAttribute(f));for(var h in b)this._.definition.fullMatch&&a.getStyle(h)!=v(h,b[h],!0)||(e=e||!!a.getStyle(h),a.removeStyle(h));t(a,g,A[a.getName()]);e&&(this._.definition.alwaysRemoveElement? -r(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==CKEDITOR.ENTER_BR&&!a.hasAttributes()?r(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function p(a){for(var c=q(this),b=a.getElementsByTag(this.element),d,g=b.count();0<=--g;)d=b.getItem(g),d.isReadOnly()||w.call(this,d,!0);for(var e in c)if(e!=this.element)for(b=a.getElementsByTag(e),g=b.count()-1;0<=g;g--)d=b.getItem(g),d.isReadOnly()||t(d,c[e])}function t(a,c,b){if(c=c&&c.attributes)for(var d=0;d<c.length;d++){var g=c[d][0], -e;if(e=a.getAttribute(g)){var f=c[d][1];(null===f||f.test&&f.test(e)||"string"==typeof f&&e==f)&&a.removeAttribute(g)}}b||r(a)}function r(a,c){if(!a.hasAttributes()||c)if(CKEDITOR.dtd.$block[a.getName()]){var b=a.getPrevious(C),d=a.getNext(C);!b||b.type!=CKEDITOR.NODE_TEXT&&b.isBlockBoundary({br:1})||a.append("br",1);!d||d.type!=CKEDITOR.NODE_TEXT&&d.isBlockBoundary({br:1})||a.append("br");a.remove(!0)}else b=a.getFirst(),d=a.getLast(),a.remove(!0),b&&(b.type==CKEDITOR.NODE_ELEMENT&&b.mergeSiblings(), -d&&!b.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT&&d.mergeSiblings())}function x(a,c,b){var d;d=a.element;"*"==d&&(d="span");d=new CKEDITOR.dom.element(d,c);b&&b.copyAttributes(d);d=u(d,a);c.getCustomData("doc_processing_style")&&d.hasAttribute("id")?d.removeAttribute("id"):c.setCustomData("doc_processing_style",1);return d}function u(a,c){var b=c._.definition,d=b.attributes,b=CKEDITOR.style.getStyleText(b);if(d)for(var g in d)a.setAttribute(g,d[g]);b&&a.setAttribute("style",b);a.getDocument().removeCustomData("doc_processing_style"); -return a}function z(a,c){for(var b in a)a[b]=a[b].replace(K,function(a,b){return c[b]})}function q(a){if(a._.overrides)return a._.overrides;var c=a._.overrides={},b=a._.definition.overrides;if(b){CKEDITOR.tools.isArray(b)||(b=[b]);for(var d=0;d<b.length;d++){var g=b[d],e,f;"string"==typeof g?e=g.toLowerCase():(e=g.element?g.element.toLowerCase():a.element,f=g.attributes);g=c[e]||(c[e]={});if(f){var g=g.attributes=g.attributes||[],h;for(h in f)g.push([h.toLowerCase(),f[h]])}}}return c}function v(a, -c,b){var d=new CKEDITOR.dom.element("span");d[b?"setStyle":"setAttribute"](a,c);return d[b?"getStyle":"getAttribute"](a)}function B(a,c){function b(a,c){return"font-family"==c.toLowerCase()?a.replace(/["']/g,""):a}"string"==typeof a&&(a=CKEDITOR.tools.parseCssText(a));"string"==typeof c&&(c=CKEDITOR.tools.parseCssText(c,!0));for(var d in a)if(!(d in c)||b(c[d],d)!=b(a[d],d)&&"inherit"!=a[d]&&"inherit"!=c[d])return!1;return!0}function D(a,c,b){var d=a.getRanges();c=c?this.removeFromRange:this.applyToRange; -for(var g,e=d.createIterator();g=e.getNextRange();)c.call(this,g,b);a.selectRanges(d)}var A={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},E={a:1,blockquote:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},F=/\s*(?:;\s*|$)/,K=/#\((.+?)\)/g,L=CKEDITOR.dom.walker.bookmark(0, -1),C=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,c){if("string"==typeof a.type)return new CKEDITOR.style.customHandlers[a.type](a);var b=a.attributes;b&&b.style&&(a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(b.style)),delete b.style);c&&(a=CKEDITOR.tools.clone(a),z(a.attributes,c),z(a.styles,c));b=this.element=a.element?"string"==typeof a.element?a.element.toLowerCase():a.element:"*";this.type=a.type||(A[b]?CKEDITOR.STYLE_BLOCK:E[b]?CKEDITOR.STYLE_OBJECT: -CKEDITOR.STYLE_INLINE);"object"==typeof this.element&&(this.type=CKEDITOR.STYLE_OBJECT);this._={definition:a}};CKEDITOR.style.prototype={apply:function(a){if(a instanceof CKEDITOR.dom.document)return D.call(this,a.getSelection());if(this.checkApplicable(a.elementPath(),a)){var c=this._.enterMode;c||(this._.enterMode=a.activeEnterMode);D.call(this,a.getSelection(),0,a);this._.enterMode=c}},remove:function(a){if(a instanceof CKEDITOR.dom.document)return D.call(this,a.getSelection(),1);if(this.checkApplicable(a.elementPath(), -a)){var c=this._.enterMode;c||(this._.enterMode=a.activeEnterMode);D.call(this,a.getSelection(),1,a);this._.enterMode=c}},applyToRange:function(a){this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?f:this.type==CKEDITOR.STYLE_BLOCK?l:this.type==CKEDITOR.STYLE_OBJECT?m:null;return this.applyToRange(a)},removeFromRange:function(a){this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?e:this.type==CKEDITOR.STYLE_BLOCK?c:this.type==CKEDITOR.STYLE_OBJECT?k:null;return this.removeFromRange(a)},applyToObject:function(a){u(a, +b.append(e)}else c.setHtml(g)}return b||c}function v(a,c){var b=this._.definition,d=b.attributes,b=b.styles,g=u(this)[a.getName()],e=CKEDITOR.tools.isEmpty(d)&&CKEDITOR.tools.isEmpty(b),f;for(f in d)if("class"!=f&&!this._.definition.fullMatch||a.getAttribute(f)==w(f,d[f]))c&&"data-"==f.slice(0,5)||(e=a.hasAttribute(f),a.removeAttribute(f));for(var h in b)this._.definition.fullMatch&&a.getStyle(h)!=w(h,b[h],!0)||(e=e||!!a.getStyle(h),a.removeStyle(h));q(a,g,A[a.getName()]);e&&(this._.definition.alwaysRemoveElement? +r(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==CKEDITOR.ENTER_BR&&!a.hasAttributes()?r(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function p(a){for(var c=u(this),b=a.getElementsByTag(this.element),d,g=b.count();0<=--g;)d=b.getItem(g),d.isReadOnly()||v.call(this,d,!0);for(var e in c)if(e!=this.element)for(b=a.getElementsByTag(e),g=b.count()-1;0<=g;g--)d=b.getItem(g),d.isReadOnly()||q(d,c[e])}function q(a,c,b){if(c=c&&c.attributes)for(var d=0;d<c.length;d++){var g=c[d][0], +e;if(e=a.getAttribute(g)){var f=c[d][1];(null===f||f.test&&f.test(e)||"string"==typeof f&&e==f)&&a.removeAttribute(g)}}b||r(a)}function r(a,c){if(!a.hasAttributes()||c)if(CKEDITOR.dtd.$block[a.getName()]){var b=a.getPrevious(D),d=a.getNext(D);!b||b.type!=CKEDITOR.NODE_TEXT&&b.isBlockBoundary({br:1})||a.append("br",1);!d||d.type!=CKEDITOR.NODE_TEXT&&d.isBlockBoundary({br:1})||a.append("br");a.remove(!0)}else b=a.getFirst(),d=a.getLast(),a.remove(!0),b&&(b.type==CKEDITOR.NODE_ELEMENT&&b.mergeSiblings(), +d&&!b.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT&&d.mergeSiblings())}function x(a,c,b){var d;d=a.element;"*"==d&&(d="span");d=new CKEDITOR.dom.element(d,c);b&&b.copyAttributes(d);d=t(d,a);c.getCustomData("doc_processing_style")&&d.hasAttribute("id")?d.removeAttribute("id"):c.setCustomData("doc_processing_style",1);return d}function t(a,c){var b=c._.definition,d=b.attributes,b=CKEDITOR.style.getStyleText(b);if(d)for(var g in d)a.setAttribute(g,d[g]);b&&a.setAttribute("style",b);a.getDocument().removeCustomData("doc_processing_style"); +return a}function z(a,c){for(var b in a)a[b]=a[b].replace(K,function(a,b){return c[b]})}function u(a){if(a._.overrides)return a._.overrides;var c=a._.overrides={},b=a._.definition.overrides;if(b){CKEDITOR.tools.isArray(b)||(b=[b]);for(var d=0;d<b.length;d++){var g=b[d],e,f;"string"==typeof g?e=g.toLowerCase():(e=g.element?g.element.toLowerCase():a.element,f=g.attributes);g=c[e]||(c[e]={});if(f){var g=g.attributes=g.attributes||[],h;for(h in f)g.push([h.toLowerCase(),f[h]])}}}return c}function w(a, +c,b){var d=new CKEDITOR.dom.element("span");d[b?"setStyle":"setAttribute"](a,c);return d[b?"getStyle":"getAttribute"](a)}function B(a,c){function b(a,c){return"font-family"==c.toLowerCase()?a.replace(/["']/g,""):a}"string"==typeof a&&(a=CKEDITOR.tools.parseCssText(a));"string"==typeof c&&(c=CKEDITOR.tools.parseCssText(c,!0));for(var d in a)if(!(d in c)||b(c[d],d)!=b(a[d],d)&&"inherit"!=a[d]&&"inherit"!=c[d])return!1;return!0}function C(a,c,b){var d=a.getRanges();c=c?this.removeFromRange:this.applyToRange; +for(var g,e=d.createIterator();g=e.getNextRange();)c.call(this,g,b);a.selectRanges(d)}var A={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},E={a:1,blockquote:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},F=/\s*(?:;\s*|$)/,K=/#\((.+?)\)/g,M=CKEDITOR.dom.walker.bookmark(0, +1),D=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,c){if("string"==typeof a.type)return new CKEDITOR.style.customHandlers[a.type](a);var b=a.attributes;b&&b.style&&(a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(b.style)),delete b.style);c&&(a=CKEDITOR.tools.clone(a),z(a.attributes,c),z(a.styles,c));b=this.element=a.element?"string"==typeof a.element?a.element.toLowerCase():a.element:"*";this.type=a.type||(A[b]?CKEDITOR.STYLE_BLOCK:E[b]?CKEDITOR.STYLE_OBJECT: +CKEDITOR.STYLE_INLINE);"object"==typeof this.element&&(this.type=CKEDITOR.STYLE_OBJECT);this._={definition:a}};CKEDITOR.style.prototype={apply:function(a){if(a instanceof CKEDITOR.dom.document)return C.call(this,a.getSelection());if(this.checkApplicable(a.elementPath(),a)){var c=this._.enterMode;c||(this._.enterMode=a.activeEnterMode);C.call(this,a.getSelection(),0,a);this._.enterMode=c}},remove:function(a){if(a instanceof CKEDITOR.dom.document)return C.call(this,a.getSelection(),1);if(this.checkApplicable(a.elementPath(), +a)){var c=this._.enterMode;c||(this._.enterMode=a.activeEnterMode);C.call(this,a.getSelection(),1,a);this._.enterMode=c}},applyToRange:function(a){this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?f:this.type==CKEDITOR.STYLE_BLOCK?m:this.type==CKEDITOR.STYLE_OBJECT?k:null;return this.applyToRange(a)},removeFromRange:function(a){this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?e:this.type==CKEDITOR.STYLE_BLOCK?c:this.type==CKEDITOR.STYLE_OBJECT?l:null;return this.removeFromRange(a)},applyToObject:function(a){t(a, this)},checkActive:function(a,c){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(a.block||a.blockLimit,!0,c);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:for(var b=a.elements,d=0,g;d<b.length;d++)if(g=b[d],this.type!=CKEDITOR.STYLE_INLINE||g!=a.block&&g!=a.blockLimit){if(this.type==CKEDITOR.STYLE_OBJECT){var e=g.getName();if(!("string"==typeof this.element?e==this.element:e in this.element))continue}if(this.checkElementRemovable(g,!0,c))return!0}}return!1},checkApplicable:function(a, c,b){c&&c instanceof CKEDITOR.filter&&(b=c);if(b&&!b.check(this))return!1;switch(this.type){case CKEDITOR.STYLE_OBJECT:return!!a.contains(this.element);case CKEDITOR.STYLE_BLOCK:return!!a.blockLimit.getDtd()[this.element]}return!0},checkElementMatch:function(a,c){var b=this._.definition;if(!a||!b.ignoreReadonly&&a.isReadOnly())return!1;var d=a.getName();if("string"==typeof this.element?d==this.element:d in this.element){if(!c&&!a.hasAttributes())return!0;if(d=b._AC)b=d;else{var d={},g=0,e=b.attributes; -if(e)for(var f in e)g++,d[f]=e[f];if(f=CKEDITOR.style.getStyleText(b))d.style||g++,d.style=f;d._length=g;b=b._AC=d}if(b._length){for(var h in b)if("_length"!=h)if(d=a.getAttribute(h)||"","style"==h?B(b[h],d):b[h]==d){if(!c)return!0}else if(c)return!1;if(c)return!0}else return!0}return!1},checkElementRemovable:function(a,c,b){if(this.checkElementMatch(a,c,b))return!0;if(c=q(this)[a.getName()]){var d;if(!(c=c.attributes))return!0;for(b=0;b<c.length;b++)if(d=c[b][0],d=a.getAttribute(d)){var g=c[b][1]; +if(e)for(var f in e)g++,d[f]=e[f];if(f=CKEDITOR.style.getStyleText(b))d.style||g++,d.style=f;d._length=g;b=b._AC=d}if(b._length){for(var h in b)if("_length"!=h)if(d=a.getAttribute(h)||"","style"==h?B(b[h],d):b[h]==d){if(!c)return!0}else if(c)return!1;if(c)return!0}else return!0}return!1},checkElementRemovable:function(a,c,b){if(this.checkElementMatch(a,c,b))return!0;if(c=u(this)[a.getName()]){var d;if(!(c=c.attributes))return!0;for(b=0;b<c.length;b++)if(d=c[b][0],d=a.getAttribute(d)){var g=c[b][1]; if(null===g)return!0;if("string"==typeof g){if(d==g)return!0}else if(g.test(d))return!0}}return!1},buildPreview:function(a){var c=this._.definition,b=[],d=c.element;"bdo"==d&&(d="span");var b=["\x3c",d],g=c.attributes;if(g)for(var e in g)b.push(" ",e,'\x3d"',g[e],'"');(g=CKEDITOR.style.getStyleText(c))&&b.push(' style\x3d"',g,'"');b.push("\x3e",a||c.name,"\x3c/",d,"\x3e");return b.join("")},getDefinition:function(){return this._.definition}};CKEDITOR.style.getStyleText=function(a){var c=a._ST;if(c)return c; var c=a.styles,b=a.attributes&&a.attributes.style||"",d="";b.length&&(b=b.replace(F,";"));for(var g in c){var e=c[g],f=(g+":"+e).replace(F,";");"inherit"==e?d+=f:b+=f}b.length&&(b=CKEDITOR.tools.normalizeCssText(b,!0));return a._ST=b+d};CKEDITOR.style.customHandlers={};CKEDITOR.style.unstylableElements=[];CKEDITOR.style.addCustomHandler=function(a){var c=function(a){this._={definition:a};this.setup&&this.setup(a)};c.prototype=CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype), -{assignedTo:CKEDITOR.STYLE_OBJECT},a,!0);return this.customHandlers[a.type]=c};var O=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,I=CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED}(),CKEDITOR.styleCommand=function(b,h){this.requiredContent=this.allowedContent=this.style=b;CKEDITOR.tools.extend(this,h,!0)},CKEDITOR.styleCommand.prototype.exec=function(b){b.focus();this.state==CKEDITOR.TRISTATE_OFF?b.applyStyle(this.style): +{assignedTo:CKEDITOR.STYLE_OBJECT},a,!0);return this.customHandlers[a.type]=c};var N=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,I=CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED}(),CKEDITOR.styleCommand=function(b,h){this.requiredContent=this.allowedContent=this.style=b;CKEDITOR.tools.extend(this,h,!0)},CKEDITOR.styleCommand.prototype.exec=function(b){b.focus();this.state==CKEDITOR.TRISTATE_OFF?b.applyStyle(this.style): this.state==CKEDITOR.TRISTATE_ON&&b.removeStyle(this.style)},CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet"),CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet),CKEDITOR.loadStylesSet=function(b,h,f){CKEDITOR.stylesSet.addExternal(b,h,"");CKEDITOR.stylesSet.load(b,f)},CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{attachStyleStateChange:function(b,h){var f=this._.styleStateChangeCallbacks;f||(f=this._.styleStateChangeCallbacks=[],this.on("selectionChange", -function(b){for(var a=0;a<f.length;a++){var h=f[a],k=h.style.checkActive(b.data.path,this)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;h.fn.call(this,k)}}));f.push({style:b,fn:h})},applyStyle:function(b){b.apply(this)},removeStyle:function(b){b.remove(this)},getStylesSet:function(b){if(this._.stylesDefinitions)b(this._.stylesDefinitions);else{var h=this,f=h.config.stylesCombo_stylesSet||h.config.stylesSet;if(!1===f)b(null);else if(f instanceof Array)h._.stylesDefinitions=f,b(f);else{f||(f="default"); +function(b){for(var a=0;a<f.length;a++){var h=f[a],l=h.style.checkActive(b.data.path,this)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;h.fn.call(this,l)}}));f.push({style:b,fn:h})},applyStyle:function(b){b.apply(this)},removeStyle:function(b){b.remove(this)},getStylesSet:function(b){if(this._.stylesDefinitions)b(this._.stylesDefinitions);else{var h=this,f=h.config.stylesCombo_stylesSet||h.config.stylesSet;if(!1===f)b(null);else if(f instanceof Array)h._.stylesDefinitions=f,b(f);else{f||(f="default"); var f=f.split(":"),e=f[0];CKEDITOR.stylesSet.addExternal(e,f[1]?f.slice(1).join(":"):CKEDITOR.getUrl("styles.js"),"");CKEDITOR.stylesSet.load(e,function(a){h._.stylesDefinitions=a[e];b(h._.stylesDefinitions)})}}}}),function(){if(window.Promise)CKEDITOR.tools.promise=Promise;else{var b=CKEDITOR.getUrl("vendor/promise.js");if("function"===typeof window.define&&window.define.amd&&"function"===typeof window.require)return window.require([b],function(b){CKEDITOR.tools.promise=b});CKEDITOR.scriptLoader.load(b, -function(h){if(!h)return CKEDITOR.error("no-vendor-lib",{path:b});if("undefined"!==typeof window.ES6Promise)return CKEDITOR.tools.promise=ES6Promise})}}(),function(){function b(b,a,m){b.once("selectionCheck",function(b){if(!h){var e=b.data.getRanges()[0];m.equals(e)?b.cancel():a.equals(e)&&(f=!0)}},null,null,-1)}var h=!0,f=!1;CKEDITOR.dom.selection.setupEditorOptimization=function(b){b.on("selectionCheck",function(a){a.data&&!f&&a.data.optimizeInElementEnds();f=!1});b.on("contentDom",function(){var a= -b.editable();a&&(a.attachListener(a,"keydown",function(a){this._.shiftPressed=a.data.$.shiftKey},this),a.attachListener(a,"keyup",function(a){this._.shiftPressed=a.data.$.shiftKey},this))})};CKEDITOR.dom.selection.prototype.optimizeInElementEnds=function(){var e=this.getRanges()[0],a=this.root.editor,f;if(this.root.editor._.shiftPressed||this.isFake||e.isCollapsed||e.startContainer.equals(e.endContainer))f=!1;else if(0===e.endOffset)f=!0;else{f=e.startContainer.type===CKEDITOR.NODE_TEXT;var k=e.endContainer.type=== -CKEDITOR.NODE_TEXT,l=f?e.startContainer.getLength():e.startContainer.getChildCount();f=e.startOffset===l||f^k}f&&(f=e.clone(),e.shrink(CKEDITOR.SHRINK_TEXT,!1,{skipBogus:!CKEDITOR.env.webkit}),h=!1,b(a,e,f),e.select(),h=!0)}}(),function(){function b(a,b){f(a)?a=Math.round(b*(parseFloat(a)/100)):"string"===typeof a&&a.match(/^\d+$/gm)&&(a=parseInt(a,10));return a}function h(a,b){f(a)?a=b*(parseFloat(a)/100):"string"===typeof a&&a.match(/^\d?\.\d+/gm)&&(a=parseFloat(a));return a}function f(a){return"string"=== -typeof a&&a.match(/^((\d*\.\d+)|(\d+))%{1}$/gm)}function e(a,b,e){return!isNaN(a)&&a>=b&&a<=e}function a(a){a=a.toString(16);return 1==a.length?"0"+a:a}CKEDITOR.tools.color=CKEDITOR.tools.createClass({$:function(a,b){this._.initialColorCode=a;this._.defaultValue=b;this._.parseInput(a)},proto:{getHex:function(){if(!this._.isValidColor)return this._.defaultValue;var a=this._.blendAlphaColor(this._.red,this._.green,this._.blue,this._.alpha);return this._.formatHexString(a[0],a[1],a[2])},getHexWithAlpha:function(){if(!this._.isValidColor)return this._.defaultValue; -var a=Math.round(this._.alpha*CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE);return this._.formatHexString(this._.red,this._.green,this._.blue,a)},getRgb:function(){if(!this._.isValidColor)return this._.defaultValue;var a=this._.blendAlphaColor(this._.red,this._.green,this._.blue,this._.alpha);return this._.formatRgbString("rgb",a[0],a[1],a[2])},getRgba:function(){return this._.isValidColor?this._.formatRgbString("rgba",this._.red,this._.green,this._.blue,this._.alpha):this._.defaultValue},getHsl:function(){if(!this._.isValidColor)return this._.defaultValue; -var a=this._.blendAlphaColor(this._.red,this._.green,this._.blue,this._.alpha),a=this._.rgbToHsl(a[0],a[1],a[2]);return this._.formatHslString("hsl",a[0],a[1],a[2])},getHsla:function(){if(!this._.isValidColor)return this._.defaultValue;var a=this._.rgbToHsl(this._.red,this._.green,this._.blue);return this._.formatHslString("hsla",a[0],a[1],a[2],this._.alpha)},getInitialValue:function(){return this._.initialColorCode}},_:{initialColorCode:"",isValidColor:!0,red:0,green:0,blue:0,alpha:1,blendAlphaColor:function(a, -b,e,c){return CKEDITOR.tools.array.map([a,b,e],function(a){return Math.round(CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE-c*(CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE-a))})},formatHexString:function(b,e,f,c){b="#"+a(b)+a(e)+a(f);void 0!==c&&(b+=a(c));return b.toUpperCase()},formatRgbString:function(a,b,e,c,d){b=[b,e,c];void 0!==d&&b.push(d);return a+"("+b.join(",")+")"},formatHslString:function(a,b,e,c,d){return a+"("+b+","+e+"%,"+c+"%"+(void 0!==d?","+d:"")+")"},parseInput:function(a){if("string"!== -typeof a)this._.isValidColor=!1;else{a=CKEDITOR.tools.trim(a);var b=this._.matchStringToNamedColor(a);b&&(a=b);var b=this._.extractColorChannelsFromHex(a),e=this._.extractColorChannelsFromRgba(a);a=this._.extractColorChannelsFromHsla(a);(a=b||e||a)?(this._.red=a[0],this._.green=a[1],this._.blue=a[2],this._.alpha=a[3]):this._.isValidColor=!1}},matchStringToNamedColor:function(a){return CKEDITOR.tools.color.namedColors[a.toLowerCase()]||null},extractColorChannelsFromHex:function(a){a.match(CKEDITOR.tools.color.hex3CharsRegExp)&& -(a=this._.hex3ToHex6(a));if(!a.match(CKEDITOR.tools.color.hex6CharsRegExp)&&!a.match(CKEDITOR.tools.color.hex8CharsRegExp))return null;a=a.split("");var b=1;a[7]&&a[8]&&(b=parseInt(a[7]+a[8],16),b/=CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE,b=Number(b.toFixed(1)));return[parseInt(a[1]+a[2],16),parseInt(a[3]+a[4],16),parseInt(a[5]+a[6],16),b]},extractColorChannelsFromRgba:function(a){var e=this._.extractColorChannelsByPattern(a,CKEDITOR.tools.color.rgbRegExp);if(!e||(a=0===a.indexOf("rgba"))&&4!== -e.length||!a&&3!==e.length)return null;var f=b(e[0],CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE),c=b(e[1],CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE),d=b(e[2],CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE),g=1;a&&(g=h(e[3],CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE));return this._.areColorChannelsValid(f,c,d,g)?[f,c,d,g]:null},extractColorChannelsFromHsla:function(a){var e=this._.extractColorChannelsByPattern(a,CKEDITOR.tools.color.hslRegExp);if(!e||(a=0===a.indexOf("hsla"))&&4!==e.length||!a&&3!== -e.length)return null;var f=b(e[0],CKEDITOR.tools.color.MAX_HUE_CHANNEL_VALUE),c=h(e[1],CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE),d=h(e[2],CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE),g=1,f=this._.hslToRgb(f,c,d);a&&(g=h(e[3],CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE));f.push(g);return this._.areColorChannelsValid(f[0],f[1],f[2],f[3])?f:null},hex3ToHex6:function(a){a=a.split("");return"#"+a[1]+a[1]+a[2]+a[2]+a[3]+a[3]},extractColorChannelsByPattern:function(a, -b){var e=a.match(b);if(!e)return null;e=e[2].split(",");return e=CKEDITOR.tools.array.map(e,function(a){return CKEDITOR.tools.trim(a)})},areColorChannelsValid:function(a,b,f,c){return e(a,0,CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE)&&e(b,0,CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE)&&e(f,0,CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE)&&e(c,0,CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE)},hslToRgb:function(a,b,e){var c=function(c){var g=(c+a/30)%12;c=b*Math.min(e,1-e);g=Math.min(g-3,9-g,1);g=Math.max(-1, -g);return Math.round((e-c*g)*CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE)};return[c(0),c(8),c(4)]},rgbToHsl:function(a,b,e){a/=CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE;b/=CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE;var c=e/CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE,d=Math.max(a,b,c),g=Math.min(a,b,c);e=d-g;var f=0;switch(d){case a:f=(b-c)/e%6;break;case b:f=(c-a)/e+2;break;case c:f=(a-b)/e+4}a=0===e?0:60*f;b=(d+g)/2;d=0;1!==b&&0!==b&&(d=e/(1-Math.abs(2*b-1)));a=Math.round(a);d=100*Math.round(d);return[a, -d,100*b]}},statics:{MAX_RGB_CHANNEL_VALUE:255,MAX_ALPHA_CHANNEL_VALUE:1,MAX_HUE_CHANNEL_VALUE:360,MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE:1,hex3CharsRegExp:/#([0-9a-f]{3}$)/gim,hex6CharsRegExp:/#([0-9a-f]{6}$)/gim,hex8CharsRegExp:/#([0-9a-f]{8}$)/gim,rgbRegExp:/(rgb[a]?)\(([.,\d\s%]*)\)/i,hslRegExp:/(hsl[a]?)\(([.,\d\s%]*)\)/i,namedColors:{aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD", -blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F", -darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",green:"#008000",greenyellow:"#ADFF2F",grey:"#808080",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082", -ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6", -magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA", -palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F", -steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",windowtext:"windowtext",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"}}});CKEDITOR.tools.style.parse._colors=CKEDITOR.tools.color.namedColors}(),CKEDITOR.dom.comment=function(b,h){"string"==typeof b&&(b=(h?h.$:document).createComment(b));CKEDITOR.dom.domObject.call(this,b)},CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node,CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype, -{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"\x3c!--"+this.$.nodeValue+"--\x3e"}}),"use strict",function(){var b={},h={},f;for(f in CKEDITOR.dtd.$blockLimit)f in CKEDITOR.dtd.$list||(b[f]=1);for(f in CKEDITOR.dtd.$block)f in CKEDITOR.dtd.$blockLimit||f in CKEDITOR.dtd.$empty||(h[f]=1);CKEDITOR.dom.elementPath=function(e,a){var f=null,k=null,l=[],c=e,d;a=a||e.getDocument().getBody();c||(c=a);do if(c.type==CKEDITOR.NODE_ELEMENT){l.push(c);if(!this.lastElement&&(this.lastElement=c,c.is(CKEDITOR.dtd.$object)|| -"false"==c.getAttribute("contenteditable")))continue;if(c.equals(a))break;if(!k&&(d=c.getName(),"true"==c.getAttribute("contenteditable")?k=c:!f&&h[d]&&(f=c),b[d])){if(d=!f&&"div"==d){a:{d=c.getChildren();for(var g=0,n=d.count();g<n;g++){var y=d.getItem(g);if(y.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[y.getName()]){d=!0;break a}}d=!1}d=!d}d?f=c:k=c}}while(c=c.getParent());k||(k=a);this.block=f;this.blockLimit=k;this.root=a;this.elements=l}}(),CKEDITOR.dom.elementPath.prototype={compare:function(b){var h= -this.elements;b=b&&b.elements;if(!b||h.length!=b.length)return!1;for(var f=0;f<h.length;f++)if(!h[f].equals(b[f]))return!1;return!0},contains:function(b,h,f){var e=0,a;"string"==typeof b&&(a=function(a){return a.getName()==b});b instanceof CKEDITOR.dom.element?a=function(a){return a.equals(b)}:CKEDITOR.tools.isArray(b)?a=function(a){return-1<CKEDITOR.tools.indexOf(b,a.getName())}:"function"==typeof b?a=b:"object"==typeof b&&(a=function(a){return a.getName()in b});var m=this.elements,k=m.length;h&& -(f?e+=1:--k);f&&(m=Array.prototype.slice.call(m,0),m.reverse());for(;e<k;e++)if(a(m[e]))return m[e];return null},isContextFor:function(b){var h;return b in CKEDITOR.dtd.$block?(h=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&&this.block||this.blockLimit,!!h.getDtd()[b]):!0},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}},CKEDITOR.dom.text=function(b,h){"string"==typeof b&&(b=(h?h.$:document).createTextNode(b));this.$=b},CKEDITOR.dom.text.prototype= -new CKEDITOR.dom.node,CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(b){this.$.nodeValue=b},isEmpty:function(b){var h=this.getText();b&&(h=CKEDITOR.tools.trim(h));return!h||h===CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE},split:function(b){var h=this.$.parentNode,f=h.childNodes.length,e=this.getLength(),a=this.getDocument(),m=new CKEDITOR.dom.text(this.$.splitText(b), -a);h.childNodes.length==f&&(b>=e?(m=a.createText(""),m.insertAfter(this)):(b=a.createText(""),b.insertAfter(m),b.remove()));return m},substring:function(b,h){return"number"!=typeof h?this.$.nodeValue.substr(b):this.$.nodeValue.substring(b,h)}}),function(){function b(b,e,a){var h=b.serializable,k=e[a?"endContainer":"startContainer"],l=a?"endOffset":"startOffset",c=h?e.document.getById(b.startNode):b.startNode;b=h?e.document.getById(b.endNode):b.endNode;k.equals(c.getPrevious())?(e.startOffset=e.startOffset- -k.getLength()-b.getPrevious().getLength(),k=b.getNext()):k.equals(b.getPrevious())&&(e.startOffset-=k.getLength(),k=b.getNext());k.equals(c.getParent())&&e[l]++;k.equals(b.getParent())&&e[l]++;e[a?"endContainer":"startContainer"]=k;return e}CKEDITOR.dom.rangeList=function(b){if(b instanceof CKEDITOR.dom.rangeList)return b;b?b instanceof CKEDITOR.dom.range&&(b=[b]):b=[];return CKEDITOR.tools.extend(b,h)};var h={createIterator:function(){var b=this,e=CKEDITOR.dom.walker.bookmark(),a=[],h;return{getNextRange:function(k){h= -void 0===h?0:h+1;var l=b[h];if(l&&1<b.length){if(!h)for(var c=b.length-1;0<=c;c--)a.unshift(b[c].createBookmark(!0));if(k)for(var d=0;b[h+d+1];){var g=l.document;k=0;c=g.getById(a[d].endNode);for(g=g.getById(a[d+1].startNode);;){c=c.getNextSourceNode(!1);if(g.equals(c))k=1;else if(e(c)||c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary())continue;break}if(!k)break;d++}for(l.moveToBookmark(a.shift());d--;)c=b[++h],c.moveToBookmark(a.shift()),l.setEnd(c.endContainer,c.endOffset)}return l}}},createBookmarks:function(f){for(var e= -[],a,h=0;h<this.length;h++){e.push(a=this[h].createBookmark(f,!0));for(var k=h+1;k<this.length;k++)this[k]=b(a,this[k]),this[k]=b(a,this[k],!0)}return e},createBookmarks2:function(b){for(var e=[],a=0;a<this.length;a++)e.push(this[a].createBookmark2(b));return e},moveToBookmarks:function(b){for(var e=0;e<this.length;e++)this[e].moveToBookmark(b[e])}}}(),function(){function b(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]||"skins/"+CKEDITOR.skinName.split(",")[0]+"/")}function h(a){var c= -CKEDITOR.skin["ua_"+a],e=CKEDITOR.env;if(c)for(var c=c.split(",").sort(function(a,c){return a>c?-1:1}),f=0,h;f<c.length;f++)if(h=c[f],e.ie&&(h.replace(/^ie/,"")==e.version||e.quirks&&"iequirks"==h)&&(h="ie"),e[h]){a+="_"+c[f];break}return CKEDITOR.getUrl(b()+a+".css")}function f(a,c){m[a]||(CKEDITOR.document.appendStyleSheet(h(a)),m[a]=1);c&&c()}function e(a){var c=a.getById(k);c||(c=a.getHead().append("style"),c.setAttribute("id",k),c.setAttribute("type","text/css"));return c}function a(a,c,b){var e, -f,h;if(CKEDITOR.env.webkit)for(c=c.split("}").slice(0,-1),f=0;f<c.length;f++)c[f]=c[f].split("{");for(var k=0;k<a.length;k++)if(CKEDITOR.env.webkit)for(f=0;f<c.length;f++){h=c[f][1];for(e=0;e<b.length;e++)h=h.replace(b[e][0],b[e][1]);a[k].$.sheet.addRule(c[f][0],h)}else{h=c;for(e=0;e<b.length;e++)h=h.replace(b[e][0],b[e][1]);CKEDITOR.env.ie&&11>CKEDITOR.env.version?a[k].$.styleSheet.cssText+=h:a[k].$.innerHTML+=h}}var m={};CKEDITOR.skin={path:b,loadPart:function(a,c){CKEDITOR.skin.name!=CKEDITOR.skinName.split(",")[0]? -CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(b()+"skin.js"),function(){f(a,c)}):f(a,c)},getPath:function(a){return CKEDITOR.getUrl(h(a))},icons:{},addIcon:function(a,c,b,e){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:c,offset:b||0,bgsize:e||"16px"})},getIconStyle:function(a,c,b,e,f){var h;a&&(a=a.toLowerCase(),c&&(h=this.icons[a+"-rtl"]),h||(h=this.icons[a]));a=b||h&&h.path||"";e=e||h&&h.offset;f=f||h&&h.bgsize||"16px";a&&(a=a.replace(/'/g,"\\'"));return a&&"background-image:url('"+CKEDITOR.getUrl(a)+ -"');background-position:0 "+e+"px;background-size:"+f+";"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(b){var g=e(CKEDITOR.document);return(this.setUiColor=function(b){this.uiColor=b;var d=CKEDITOR.skin.chameleon,e="",f="";"function"==typeof d&&(e=d(this,"editor"),f=d(this,"panel"));b=[[c,b]];a([g],e,b);a(l,f,b)}).call(this,b)}});var k="cke_ui_color",l=[],c=/\$color/g;CKEDITOR.on("instanceLoaded",function(b){if(!CKEDITOR.env.ie|| -!CKEDITOR.env.quirks){var g=b.editor;b=function(b){b=(b.data[0]||b.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!b.getById("cke_ui_color")){var d=e(b);l.push(d);g.on("destroy",function(){l=CKEDITOR.tools.array.filter(l,function(a){return d!==a})});(b=g.getUiColor())&&a([d],CKEDITOR.skin.chameleon(g,"panel"),[[c,b]])}};g.on("panelShow",b);g.on("menuShow",b);g.config.uiColor&&g.setUiColor(g.config.uiColor)}})}(),function(){var b=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e', -CKEDITOR.document);b.appendTo(CKEDITOR.document.getHead());try{var h=b.getComputedStyle("border-top-color"),f=b.getComputedStyle("border-right-color");CKEDITOR.env.hc=!(!h||h!=f)}catch(e){CKEDITOR.env.hc=!1}b.remove();CKEDITOR.env.hc&&(CKEDITOR.env.cssClass+=" cke_hc");CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(b=CKEDITOR._.pending)for(delete CKEDITOR._.pending,h=0;h<b.length;h++)CKEDITOR.editor.prototype.constructor.apply(b[h][0], -b[h][1]),CKEDITOR.add(b[h][0])}(),CKEDITOR.skin.name="moono-lisa",CKEDITOR.skin.ua_editor="ie,iequirks,ie8,gecko",CKEDITOR.skin.ua_dialog="ie,iequirks,ie8",CKEDITOR.skin.chameleon=function(){var b=function(){return function(b,e){for(var a=b.match(/[^#]./g),h=0;3>h;h++){var k=h,l;l=parseInt(a[h],16);l=("0"+(0>e?0|l*(1+e):0|l+(255-l)*e).toString(16)).slice(-2);a[k]=l}return"#"+a.join("")}}(),h={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_bottom [background-color:{defaultBackground};border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [background-color:{defaultBackground};outline-color:{defaultBorder};] {id} .cke_dialog_tab [background-color:{dialogTab};border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [background-color:{lightBackground};] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} a.cke_button_off:hover,{id} a.cke_button_off:focus,{id} a.cke_button_off:active [background-color:{darkBackground};border-color:{toolbarElementsBorder};] {id} .cke_button_on [background-color:{ckeButtonOn};border-color:{toolbarElementsBorder};] {id} .cke_toolbar_separator,{id} .cke_toolgroup a.cke_button:last-child:after,{id} .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after [background-color: {toolbarElementsBorder};border-color: {toolbarElementsBorder};] {id} a.cke_combo_button:hover,{id} a.cke_combo_button:focus,{id} .cke_combo_on a.cke_combo_button [border-color:{toolbarElementsBorder};background-color:{darkBackground};] {id} .cke_combo:after [border-color:{toolbarElementsBorder};] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover,{id} a.cke_path_item:focus,{id} a.cke_path_item:active [background-color:{darkBackground};] {id}.cke_panel [border-color:{defaultBorder};] "), +function(h){if(!h)return CKEDITOR.error("no-vendor-lib",{path:b});if("undefined"!==typeof window.ES6Promise)return CKEDITOR.tools.promise=ES6Promise})}}(),function(){function b(b,a,k){b.once("selectionCheck",function(b){if(!h){var e=b.data.getRanges()[0];k.equals(e)?b.cancel():a.equals(e)&&(f=!0)}},null,null,-1)}var h=!0,f=!1;CKEDITOR.dom.selection.setupEditorOptimization=function(b){b.on("selectionCheck",function(a){a.data&&!f&&a.data.optimizeInElementEnds();f=!1});b.on("contentDom",function(){var a= +b.editable();a&&(a.attachListener(a,"keydown",function(a){this._.shiftPressed=a.data.$.shiftKey},this),a.attachListener(a,"keyup",function(a){this._.shiftPressed=a.data.$.shiftKey},this))})};CKEDITOR.dom.selection.prototype.optimizeInElementEnds=function(){var e=this.getRanges()[0],a=this.root.editor,f;if(this.root.editor._.shiftPressed||this.isFake||e.isCollapsed||e.startContainer.equals(e.endContainer))f=!1;else if(0===e.endOffset)f=!0;else{f=e.startContainer.type===CKEDITOR.NODE_TEXT;var l=e.endContainer.type=== +CKEDITOR.NODE_TEXT,m=f?e.startContainer.getLength():e.startContainer.getChildCount();f=e.startOffset===m||f^l}f&&(f=e.clone(),e.shrink(CKEDITOR.SHRINK_TEXT,!1,{skipBogus:!CKEDITOR.env.webkit}),h=!1,b(a,e,f),e.select(),h=!0)}}(),function(){function b(a,b){if(f(a))a=Math.round(b*(parseFloat(a)/100));else if("string"===typeof a&&a.match(/^\d+$/gm)||"string"===typeof a&&a.match(/^\d+(?:deg)?$/gm))a=parseInt(a,10);return a}function h(a,b){f(a)?a=b*(parseFloat(a)/100):"string"===typeof a&&a.match(/^\d?\.\d+/gm)&& +(a=parseFloat(a));return a}function f(a){return"string"===typeof a&&a.match(/^((\d*\.\d+)|(\d+))%{1}$/gm)}function e(a,b,e){return!isNaN(a)&&a>=b&&a<=e}function a(a){a=a.toString(16);return 1==a.length?"0"+a:a}CKEDITOR.tools.color=CKEDITOR.tools.createClass({$:function(a,b){this._.initialColorCode=a;this._.defaultValue=b;this._.parseInput(a)},proto:{getHex:function(){if(!this._.isValidColor)return this._.defaultValue;var a=this._.blendAlphaColor(this._.red,this._.green,this._.blue,this._.alpha);return this._.formatHexString(a[0], +a[1],a[2])},getHexWithAlpha:function(){if(!this._.isValidColor)return this._.defaultValue;var a=Math.round(this._.alpha*CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE);return this._.formatHexString(this._.red,this._.green,this._.blue,a)},getRgb:function(){if(!this._.isValidColor)return this._.defaultValue;var a=this._.blendAlphaColor(this._.red,this._.green,this._.blue,this._.alpha);return this._.formatRgbString("rgb",a[0],a[1],a[2])},getRgba:function(){return this._.isValidColor?this._.formatRgbString("rgba", +this._.red,this._.green,this._.blue,this._.alpha):this._.defaultValue},getHsl:function(){var a=0===this._.alpha||1===this._.alpha;if(!this._.isValidColor)return this._.defaultValue;this._.type===CKEDITOR.tools.color.TYPE_HSL&&a?a=[this._.hue,this._.saturation,this._.lightness]:(a=this._.blendAlphaColor(this._.red,this._.green,this._.blue,this._.alpha),a=this._.rgbToHsl(a[0],a[1],a[2]));return this._.formatHslString("hsl",a[0],a[1],a[2])},getHsla:function(){var a;if(!this._.isValidColor)return this._.defaultValue; +a=this._.type===CKEDITOR.tools.color.TYPE_HSL?[this._.hue,this._.saturation,this._.lightness]:this._.rgbToHsl(this._.red,this._.green,this._.blue);return this._.formatHslString("hsla",a[0],a[1],a[2],this._.alpha)},getInitialValue:function(){return this._.initialColorCode}},_:{initialColorCode:"",isValidColor:!0,type:0,hue:0,saturation:0,lightness:0,red:0,green:0,blue:0,alpha:1,blendAlphaColor:function(a,b,e,c){return CKEDITOR.tools.array.map([a,b,e],function(a){return Math.round(CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE- +c*(CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE-a))})},formatHexString:function(b,e,f,c){b="#"+a(b)+a(e)+a(f);void 0!==c&&(b+=a(c));return b.toUpperCase()},formatRgbString:function(a,b,e,c,d){b=[b,e,c];void 0!==d&&b.push(d);return a+"("+b.join(",")+")"},formatHslString:function(a,b,e,c,d){return a+"("+b+","+e+"%,"+c+"%"+(void 0!==d?","+d:"")+")"},parseInput:function(a){if("string"!==typeof a)this._.isValidColor=!1;else{a=CKEDITOR.tools.trim(a);var b=this._.matchStringToNamedColor(a);b&&(a=b);var b= +this._.extractColorChannelsFromHex(a),e=this._.extractColorChannelsFromRgba(a);a=this._.extractColorChannelsFromHsla(a);(a=b||e||a)?(this._.type=a.type,this._.red=a.red,this._.green=a.green,this._.blue=a.blue,this._.alpha=a.alpha,a.type===CKEDITOR.tools.color.TYPE_HSL&&(this._.hue=a.hue,this._.saturation=a.saturation,this._.lightness=a.lightness)):this._.isValidColor=!1}},matchStringToNamedColor:function(a){return CKEDITOR.tools.color.namedColors[a.toLowerCase()]||null},extractColorChannelsFromHex:function(a){-1=== +a.indexOf("#")&&(a="#"+a);a.match(CKEDITOR.tools.color.hex3CharsRegExp)&&(a=this._.hex3ToHex6(a));a.match(CKEDITOR.tools.color.hex4CharsRegExp)&&(a=this._.hex4ToHex8(a));if(!a.match(CKEDITOR.tools.color.hex6CharsRegExp)&&!a.match(CKEDITOR.tools.color.hex8CharsRegExp))return null;a=a.split("");var b=1;a[7]&&a[8]&&(b=parseInt(a[7]+a[8],16),b/=CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE,b=Number(b.toFixed(1)));return{type:CKEDITOR.tools.color.TYPE_RGB,red:parseInt(a[1]+a[2],16),green:parseInt(a[3]+a[4], +16),blue:parseInt(a[5]+a[6],16),alpha:b}},extractColorChannelsFromRgba:function(a){var e=this._.extractColorChannelsByPattern(a,CKEDITOR.tools.color.rgbRegExp);if(!e||3>e.length||4<e.length)return null;var f=4===e.length;a=b(e[0],CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE);var c=b(e[1],CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE),d=b(e[2],CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE),g=1;f&&(g=h(e[3],CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE));e={type:CKEDITOR.tools.color.TYPE_RGB,red:a,green:c,blue:d, +alpha:g};return this._.areColorChannelsValid(a,c,d,g)?e:null},extractColorChannelsFromHsla:function(a){var e=this._.extractColorChannelsByPattern(a,CKEDITOR.tools.color.hslRegExp);if(!e||3>e.length||4<e.length)return null;var f=4===e.length,c=b(e[0],CKEDITOR.tools.color.MAX_HUE_CHANNEL_VALUE),d=h(e[1],CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE),g=h(e[2],CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE),n=1;a=this._.hslToRgb(c,d,g);f&&(n=h(e[3],CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE)); +a.push(n);e={type:CKEDITOR.tools.color.TYPE_HSL,red:a[0],green:a[1],blue:a[2],alpha:a[3],hue:c,saturation:Math.round(100*d),lightness:Math.round(100*g)};return this._.areColorChannelsValid(a[0],a[1],a[2],a[3])?e:null},hex3ToHex6:function(a){a=a.split("");return"#"+a[1]+a[1]+a[2]+a[2]+a[3]+a[3]},hex4ToHex8:function(a){return this._.hex3ToHex6(a.substr(0,4))+CKEDITOR.tools.repeat(a[4],2)},extractColorChannelsByPattern:function(a,b){var e=a.match(b);if(!e)return null;var c=-1===e[1].indexOf(",")?/\s/: +",",c=e[1].split(c),c=CKEDITOR.tools.array.reduce(c,function(a,c){var b=CKEDITOR.tools.trim(c);return 0===b.length?a:a.concat([b])},[]);e[2]&&(e=CKEDITOR.tools.trim(e[2].replace(/[\/,]/,"")),c.push(e));return c},areColorChannelsValid:function(a,b,f,c){return e(a,0,CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE)&&e(b,0,CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE)&&e(f,0,CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE)&&e(c,0,CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE)},hslToRgb:function(a,b,e){var c=function(c){var g= +(c+a/30)%12;c=b*Math.min(e,1-e);g=Math.min(g-3,9-g,1);g=Math.max(-1,g);return Math.round((e-c*g)*CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE)};return[c(0),c(8),c(4)]},rgbToHsl:function(a,b,e){a/=CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE;b/=CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE;var c=e/CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE,d=Math.max(a,b,c),g=Math.min(a,b,c);e=d-g;var f=0;switch(d){case a:f=(b-c)/e%6;break;case b:f=(c-a)/e+2;break;case c:f=(a-b)/e+4}a=0===e?0:60*f;b=(d+g)/2;d=0;1!==b&&0!== +b&&(d=e/(1-Math.abs(2*b-1)));a=Math.round(a);d=Math.round(100*d);b=Math.round(100*b);return[a,d,b]}},statics:{TYPE_RGB:1,TYPE_HSL:2,MAX_RGB_CHANNEL_VALUE:255,MAX_ALPHA_CHANNEL_VALUE:1,MAX_HUE_CHANNEL_VALUE:360,MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE:1,hex3CharsRegExp:/#([0-9a-f]{3}$)/gim,hex4CharsRegExp:/#([0-9a-f]{4}$)/gim,hex6CharsRegExp:/#([0-9a-f]{6}$)/gim,hex8CharsRegExp:/#([0-9a-f]{8}$)/gim,rgbRegExp:/rgba?\(([.,\d\s%]*)(\s*\/\s*[\d.%]+)?\s*\)/i,hslRegExp:/hsla?\((\s*(?:[.\d]+(?:deg)?)(?:\s*,?\s*[.\d]+%){2})((?:(?:\s*\/\s*)|(?:\s*,\s*))[\d.]+%?)?\s*\)/i, +namedColors:{aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400", +darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC", +ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",green:"#008000",greenyellow:"#ADFF2F",grey:"#808080",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A", +lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1", +moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460", +seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",windowtext:"windowtext",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"}}});CKEDITOR.tools.style.parse._colors=CKEDITOR.tools.color.namedColors}(),CKEDITOR.dom.comment= +function(b,h){"string"==typeof b&&(b=(h?h.$:document).createComment(b));CKEDITOR.dom.domObject.call(this,b)},CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node,CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"\x3c!--"+this.$.nodeValue+"--\x3e"}}),"use strict",function(){var b={},h={},f;for(f in CKEDITOR.dtd.$blockLimit)f in CKEDITOR.dtd.$list||(b[f]=1);for(f in CKEDITOR.dtd.$block)f in CKEDITOR.dtd.$blockLimit||f in CKEDITOR.dtd.$empty|| +(h[f]=1);CKEDITOR.dom.elementPath=function(e,a){var f=null,l=null,m=[],c=e,d;a=a||e.getDocument().getBody();c||(c=a);do if(c.type==CKEDITOR.NODE_ELEMENT){m.push(c);if(!this.lastElement&&(this.lastElement=c,c.is(CKEDITOR.dtd.$object)||"false"==c.getAttribute("contenteditable")))continue;if(c.equals(a))break;if(!l&&(d=c.getName(),"true"==c.getAttribute("contenteditable")?l=c:!f&&h[d]&&(f=c),b[d])){if(d=!f&&"div"==d){a:{d=c.getChildren();for(var g=0,n=d.count();g<n;g++){var y=d.getItem(g);if(y.type== +CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[y.getName()]){d=!0;break a}}d=!1}d=!d}d?f=c:l=c}}while(c=c.getParent());l||(l=a);this.block=f;this.blockLimit=l;this.root=a;this.elements=m}}(),CKEDITOR.dom.elementPath.prototype={compare:function(b){var h=this.elements;b=b&&b.elements;if(!b||h.length!=b.length)return!1;for(var f=0;f<h.length;f++)if(!h[f].equals(b[f]))return!1;return!0},contains:function(b,h,f){var e=0,a;"string"==typeof b&&(a=function(a){return a.getName()==b});b instanceof CKEDITOR.dom.element? +a=function(a){return a.equals(b)}:CKEDITOR.tools.isArray(b)?a=function(a){return-1<CKEDITOR.tools.indexOf(b,a.getName())}:"function"==typeof b?a=b:"object"==typeof b&&(a=function(a){return a.getName()in b});var k=this.elements,l=k.length;h&&(f?e+=1:--l);f&&(k=Array.prototype.slice.call(k,0),k.reverse());for(;e<l;e++)if(a(k[e]))return k[e];return null},isContextFor:function(b){var h;return b in CKEDITOR.dtd.$block?(h=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&&this.block|| +this.blockLimit,!!h.getDtd()[b]):!0},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}},CKEDITOR.dom.text=function(b,h){"string"==typeof b&&(b=(h?h.$:document).createTextNode(b));this.$=b},CKEDITOR.dom.text.prototype=new CKEDITOR.dom.node,CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(b){this.$.nodeValue=b},isEmpty:function(b){var h= +this.getText();b&&(h=CKEDITOR.tools.trim(h));return!h||h===CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE},split:function(b){var h=this.$.parentNode,f=h.childNodes.length,e=this.getLength(),a=this.getDocument(),k=new CKEDITOR.dom.text(this.$.splitText(b),a);h.childNodes.length==f&&(b>=e?(k=a.createText(""),k.insertAfter(this)):(b=a.createText(""),b.insertAfter(k),b.remove()));return k},substring:function(b,h){return"number"!=typeof h?this.$.nodeValue.substr(b):this.$.nodeValue.substring(b,h)}}),function(){function b(b, +e,a){var h=b.serializable,l=e[a?"endContainer":"startContainer"],m=a?"endOffset":"startOffset",c=h?e.document.getById(b.startNode):b.startNode;b=h?e.document.getById(b.endNode):b.endNode;l.equals(c.getPrevious())?(e.startOffset=e.startOffset-l.getLength()-b.getPrevious().getLength(),l=b.getNext()):l.equals(b.getPrevious())&&(e.startOffset-=l.getLength(),l=b.getNext());l.equals(c.getParent())&&e[m]++;l.equals(b.getParent())&&e[m]++;e[a?"endContainer":"startContainer"]=l;return e}CKEDITOR.dom.rangeList= +function(b){if(b instanceof CKEDITOR.dom.rangeList)return b;b?b instanceof CKEDITOR.dom.range&&(b=[b]):b=[];return CKEDITOR.tools.extend(b,h)};var h={createIterator:function(){var b=this,e=CKEDITOR.dom.walker.bookmark(),a=[],h;return{getNextRange:function(l){h=void 0===h?0:h+1;var m=b[h];if(m&&1<b.length){if(!h)for(var c=b.length-1;0<=c;c--)a.unshift(b[c].createBookmark(!0));if(l)for(var d=0;b[h+d+1];){var g=m.document;l=0;c=g.getById(a[d].endNode);for(g=g.getById(a[d+1].startNode);;){c=c.getNextSourceNode(!1); +if(g.equals(c))l=1;else if(e(c)||c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary())continue;break}if(!l)break;d++}for(m.moveToBookmark(a.shift());d--;)c=b[++h],c.moveToBookmark(a.shift()),m.setEnd(c.endContainer,c.endOffset)}return m}}},createBookmarks:function(f){for(var e=[],a,h=0;h<this.length;h++){e.push(a=this[h].createBookmark(f,!0));for(var l=h+1;l<this.length;l++)this[l]=b(a,this[l]),this[l]=b(a,this[l],!0)}return e},createBookmarks2:function(b){for(var e=[],a=0;a<this.length;a++)e.push(this[a].createBookmark2(b)); +return e},moveToBookmarks:function(b){for(var e=0;e<this.length;e++)this[e].moveToBookmark(b[e])}}}(),function(){function b(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]||"skins/"+CKEDITOR.skinName.split(",")[0]+"/")}function h(a){var c=CKEDITOR.skin["ua_"+a],e=CKEDITOR.env;if(c)for(var c=c.split(",").sort(function(a,c){return a>c?-1:1}),f=0,h;f<c.length;f++)if(h=c[f],e.ie&&(h.replace(/^ie/,"")==e.version||e.quirks&&"iequirks"==h)&&(h="ie"),e[h]){a+="_"+c[f];break}return CKEDITOR.getUrl(b()+ +a+".css")}function f(a,c){k[a]||(CKEDITOR.document.appendStyleSheet(h(a)),k[a]=1);c&&c()}function e(a){var c=a.getById(l);c||(c=a.getHead().append("style"),c.setAttribute("id",l),c.setAttribute("type","text/css"));return c}function a(a,c,b){var e,f,h;if(CKEDITOR.env.webkit)for(c=c.split("}").slice(0,-1),f=0;f<c.length;f++)c[f]=c[f].split("{");for(var k=0;k<a.length;k++)if(CKEDITOR.env.webkit)for(f=0;f<c.length;f++){h=c[f][1];for(e=0;e<b.length;e++)h=h.replace(b[e][0],b[e][1]);a[k].$.sheet.addRule(c[f][0], +h)}else{h=c;for(e=0;e<b.length;e++)h=h.replace(b[e][0],b[e][1]);CKEDITOR.env.ie&&11>CKEDITOR.env.version?a[k].$.styleSheet.cssText+=h:a[k].$.innerHTML+=h}}var k={};CKEDITOR.skin={path:b,loadPart:function(a,c){CKEDITOR.skin.name!=CKEDITOR.skinName.split(",")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(b()+"skin.js"),function(){f(a,c)}):f(a,c)},getPath:function(a){return CKEDITOR.getUrl(h(a))},icons:{},addIcon:function(a,c,b,e){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:c,offset:b||0,bgsize:e|| +"16px"})},getIconStyle:function(a,c,b,e,f){var h;a&&(a=a.toLowerCase(),c&&(h=this.icons[a+"-rtl"]),h||(h=this.icons[a]));a=b||h&&h.path||"";e=e||h&&h.offset;f=f||h&&h.bgsize||"16px";a&&(a=a.replace(/'/g,"\\'"));return a&&"background-image:url('"+CKEDITOR.getUrl(a)+"');background-position:0 "+e+"px;background-size:"+f+";"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(b){var g=e(CKEDITOR.document);return(this.setUiColor=function(b){this.uiColor= +b;var d=CKEDITOR.skin.chameleon,e="",f="";"function"==typeof d&&(e=d(this,"editor"),f=d(this,"panel"));b=[[c,b]];a([g],e,b);a(m,f,b)}).call(this,b)}});var l="cke_ui_color",m=[],c=/\$color/g;CKEDITOR.on("instanceLoaded",function(b){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var g=b.editor;b=function(b){b=(b.data[0]||b.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!b.getById("cke_ui_color")){var d=e(b);m.push(d);g.on("destroy",function(){m=CKEDITOR.tools.array.filter(m,function(a){return d!== +a})});(b=g.getUiColor())&&a([d],CKEDITOR.skin.chameleon(g,"panel"),[[c,b]])}};g.on("panelShow",b);g.on("menuShow",b);g.config.uiColor&&g.setUiColor(g.config.uiColor)}})}(),function(){var b=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e',CKEDITOR.document);b.appendTo(CKEDITOR.document.getHead());try{var h=b.getComputedStyle("border-top-color"),f=b.getComputedStyle("border-right-color"); +CKEDITOR.env.hc=!(!h||h!=f)}catch(e){CKEDITOR.env.hc=!1}b.remove();CKEDITOR.env.hc&&(CKEDITOR.env.cssClass+=" cke_hc");CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(b=CKEDITOR._.pending)for(delete CKEDITOR._.pending,h=0;h<b.length;h++)CKEDITOR.editor.prototype.constructor.apply(b[h][0],b[h][1]),CKEDITOR.add(b[h][0])}(),CKEDITOR.skin.name="moono-lisa",CKEDITOR.skin.ua_editor="ie,iequirks,ie8,gecko",CKEDITOR.skin.ua_dialog="ie,iequirks,ie8", +CKEDITOR.skin.chameleon=function(){var b=function(){return function(b,e){for(var a=b.match(/[^#]./g),h=0;3>h;h++){var l=h,m;m=parseInt(a[h],16);m=("0"+(0>e?0|m*(1+e):0|m+(255-m)*e).toString(16)).slice(-2);a[l]=m}return"#"+a.join("")}}(),h={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_bottom [background-color:{defaultBackground};border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [background-color:{defaultBackground};outline-color:{defaultBorder};] {id} .cke_dialog_tab [background-color:{dialogTab};border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [background-color:{lightBackground};] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} a.cke_button_off:hover,{id} a.cke_button_off:focus,{id} a.cke_button_off:active [background-color:{darkBackground};border-color:{toolbarElementsBorder};] {id} .cke_button_on [background-color:{ckeButtonOn};border-color:{toolbarElementsBorder};] {id} .cke_toolbar_separator,{id} .cke_toolgroup a.cke_button:last-child:after,{id} .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after [background-color: {toolbarElementsBorder};border-color: {toolbarElementsBorder};] {id} a.cke_combo_button:hover,{id} a.cke_combo_button:focus,{id} .cke_combo_on a.cke_combo_button [border-color:{toolbarElementsBorder};background-color:{darkBackground};] {id} .cke_combo:after [border-color:{toolbarElementsBorder};] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover,{id} a.cke_path_item:focus,{id} a.cke_path_item:active [background-color:{darkBackground};] {id}.cke_panel [border-color:{defaultBorder};] "), panel:new CKEDITOR.template(".cke_panel_grouptitle [background-color:{lightBackground};border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active [background-color:{menubuttonHover};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")}; return function(f,e){var a=b(f.uiColor,.4),a={id:"."+f.id,defaultBorder:b(a,-.2),toolbarElementsBorder:b(a,-.25),defaultBackground:a,lightBackground:b(a,.8),darkBackground:b(a,-.15),ckeButtonOn:b(a,.4),ckeResizer:b(a,-.4),ckeColorauto:b(a,.8),dialogBody:b(a,.7),dialogTab:b(a,.65),dialogTabSelected:"#FFF",dialogTabSelectedBorder:"#FFF",elementsPathColor:b(a,-.6),menubuttonHover:b(a,.1),menubuttonIcon:b(a,.5),menubuttonIconHover:b(a,.3)};return h[e].output(a).replace(/\[/g,"{").replace(/\]/g,"}")}}(), CKEDITOR.plugins.add("dialogui",{onLoad:function(){var b=function(a){this._||(this._={});this._["default"]=this._.initValue=a["default"]||"";this._.required=a.required||!1;for(var b=[this._],g=1;g<arguments.length;g++)b.push(arguments[g]);b.push(!0);CKEDITOR.tools.extend.apply(CKEDITOR.tools,b);return this._},h={build:function(a,b,g){return new CKEDITOR.ui.dialog.textInput(a,b,g)}},f={build:function(a,b,g){return new CKEDITOR.ui.dialog[b.type](a,b,g)}},e={isChanged:function(){return this.getValue()!= this.getInitValue()},reset:function(a){this.setValue(this.getInitValue(),a)},setInitValue:function(){this._.initValue=this.getValue()},resetInitValue:function(){this._.initValue=this._["default"]},getInitValue:function(){return this._.initValue}},a=CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onChange:function(a,b){this._.domOnChangeRegistered||(a.on("load",function(){this.getInputElement().on("change",function(){a.parts.dialog.isVisible()&&this.fire("change",{value:this.getValue()})}, -this)},this),this._.domOnChangeRegistered=!0);this.on("change",b)}},!0),m=/^on([A-Z]\w+)/,k=function(a){for(var b in a)(m.test(b)||"title"==b||"type"==b)&&delete a[b];return a},l=function(a){a=a.data.getKeystroke();a==CKEDITOR.SHIFT+CKEDITOR.ALT+36?this.setDirectionMarker("ltr"):a==CKEDITOR.SHIFT+CKEDITOR.ALT+35&&this.setDirectionMarker("rtl")};CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{labeledElement:function(a,d,g,e){if(!(4>arguments.length)){var f=b.call(this,d);f.labelId=CKEDITOR.tools.getNextId()+ -"_label";this._.children=[];var h={role:d.role||"presentation"};d.includeLabel&&(h["aria-labelledby"]=f.labelId);CKEDITOR.ui.dialog.uiElement.call(this,a,d,g,"div",null,h,function(){var b=[],g=d.required?" cke_required":"";"horizontal"!=d.labelLayout?b.push('\x3clabel class\x3d"cke_dialog_ui_labeled_label'+g+'" ',' id\x3d"'+f.labelId+'"',f.inputId?' for\x3d"'+f.inputId+'"':"",(d.labelStyle?' style\x3d"'+d.labelStyle+'"':"")+"\x3e",d.label,"\x3c/label\x3e",'\x3cdiv class\x3d"cke_dialog_ui_labeled_content"', -d.controlStyle?' style\x3d"'+d.controlStyle+'"':"",' role\x3d"presentation"\x3e',e.call(this,a,d),"\x3c/div\x3e"):(g={type:"hbox",widths:d.widths,padding:0,children:[{type:"html",html:'\x3clabel class\x3d"cke_dialog_ui_labeled_label'+g+'" id\x3d"'+f.labelId+'" for\x3d"'+f.inputId+'"'+(d.labelStyle?' style\x3d"'+d.labelStyle+'"':"")+"\x3e"+CKEDITOR.tools.htmlEncode(d.label)+"\x3c/label\x3e"},{type:"html",html:'\x3cspan class\x3d"cke_dialog_ui_labeled_content"'+(d.controlStyle?' style\x3d"'+d.controlStyle+ -'"':"")+"\x3e"+e.call(this,a,d)+"\x3c/span\x3e"}]},CKEDITOR.dialog._.uiElementBuilders.hbox.build(a,g,b));return b.join("")})}},textInput:function(a,d,g){if(!(3>arguments.length)){b.call(this,d);var e=this._.inputId=CKEDITOR.tools.getNextId()+"_textInput",f={"class":"cke_dialog_ui_input_"+d.type,id:e,type:d.type};d.validate&&(this.validate=d.validate);d.maxLength&&(f.maxlength=d.maxLength);d.size&&(f.size=d.size);d.inputStyle&&(f.style=d.inputStyle);var h=this,k=!1;a.on("load",function(){h.getInputElement().on("keydown", -function(a){13==a.data.getKeystroke()&&(k=!0)});h.getInputElement().on("keyup",function(b){13==b.data.getKeystroke()&&k&&(a.getButton("ok")&&setTimeout(function(){a.getButton("ok").click()},0),k=!1);h.bidi&&l.call(h,b)},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,a,d,g,function(){var a=['\x3cdiv class\x3d"cke_dialog_ui_input_',d.type,'" role\x3d"presentation"'];d.width&&a.push('style\x3d"width:'+d.width+'" ');a.push("\x3e\x3cinput ");f["aria-labelledby"]=this._.labelId;this._.required&& -(f["aria-required"]=this._.required);for(var c in f)a.push(c+'\x3d"'+f[c]+'" ');a.push(" /\x3e\x3c/div\x3e");return a.join("")})}},textarea:function(a,d,g){if(!(3>arguments.length)){b.call(this,d);var e=this,f=this._.inputId=CKEDITOR.tools.getNextId()+"_textarea",h={};d.validate&&(this.validate=d.validate);h.rows=d.rows||5;h.cols=d.cols||20;h["class"]="cke_dialog_ui_input_textarea "+(d["class"]||"");"undefined"!=typeof d.inputStyle&&(h.style=d.inputStyle);d.dir&&(h.dir=d.dir);if(e.bidi)a.on("load", -function(){e.getInputElement().on("keyup",l)},e);CKEDITOR.ui.dialog.labeledElement.call(this,a,d,g,function(){h["aria-labelledby"]=this._.labelId;this._.required&&(h["aria-required"]=this._.required);var a=['\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"',f,'" '],c;for(c in h)a.push(c+'\x3d"'+CKEDITOR.tools.htmlEncode(h[c])+'" ');a.push("\x3e",CKEDITOR.tools.htmlEncode(e._["default"]),"\x3c/textarea\x3e\x3c/div\x3e");return a.join("")})}},checkbox:function(a, -d,g){if(!(3>arguments.length)){var e=b.call(this,d,{"default":!!d["default"]});d.validate&&(this.validate=d.validate);CKEDITOR.ui.dialog.uiElement.call(this,a,d,g,"span",null,null,function(){var b=CKEDITOR.tools.extend({},d,{id:d.id?d.id+"_checkbox":CKEDITOR.tools.getNextId()+"_checkbox"},!0),g=[],f=CKEDITOR.tools.getNextId()+"_label",h={"class":"cke_dialog_ui_checkbox_input",type:"checkbox","aria-labelledby":f};k(b);d["default"]&&(h.checked="checked");"undefined"!=typeof b.inputStyle&&(b.style=b.inputStyle); -e.checkbox=new CKEDITOR.ui.dialog.uiElement(a,b,g,"input",null,h);g.push(' \x3clabel id\x3d"',f,'" for\x3d"',h.id,'"'+(d.labelStyle?' style\x3d"'+d.labelStyle+'"':"")+"\x3e",CKEDITOR.tools.htmlEncode(d.label),"\x3c/label\x3e");return g.join("")})}},radio:function(a,d,g){if(!(3>arguments.length)){b.call(this,d);this._["default"]||(this._["default"]=this._.initValue=d.items[0][1]);d.validate&&(this.validate=d.validate);var e=[],f=this;d.role="radiogroup";d.includeLabel=!0;CKEDITOR.ui.dialog.labeledElement.call(this, -a,d,g,function(){for(var b=[],g=[],h=(d.id?d.id:CKEDITOR.tools.getNextId())+"_radio",l=0;l<d.items.length;l++){var m=d.items[l],u=void 0!==m[2]?m[2]:m[0],z=void 0!==m[1]?m[1]:m[0],q=CKEDITOR.tools.getNextId()+"_radio_input",v=q+"_label",q=CKEDITOR.tools.extend({},d,{id:q,title:null,type:null},!0),u=CKEDITOR.tools.extend({},q,{title:u},!0),B={type:"radio","class":"cke_dialog_ui_radio_input",name:h,value:z,"aria-labelledby":v},D=[];f._["default"]==z&&(B.checked="checked");k(q);k(u);"undefined"!=typeof q.inputStyle&& -(q.style=q.inputStyle);q.keyboardFocusable=!0;e.push(new CKEDITOR.ui.dialog.uiElement(a,q,D,"input",null,B));D.push(" ");new CKEDITOR.ui.dialog.uiElement(a,u,D,"label",null,{id:v,"for":B.id},m[0]);b.push(D.join(""))}new CKEDITOR.ui.dialog.hbox(a,e,b,g);return g.join("")});this._.children=e}},button:function(a,d,g){if(arguments.length){"function"==typeof d&&(d=d(a.getParentEditor()));b.call(this,d,{disabled:d.disabled||!1});CKEDITOR.event.implementOn(this);var e=this;a.on("load",function(){var a=this.getElement(); -(function(){a.on("click",function(a){e.click();a.data.preventDefault()});a.on("keydown",function(a){a.data.getKeystroke()in{32:1}&&(e.click(),a.data.preventDefault())})})();a.unselectable()},this);var f=CKEDITOR.tools.extend({},d);delete f.style;var h=CKEDITOR.tools.getNextId()+"_label";CKEDITOR.ui.dialog.uiElement.call(this,a,f,g,"a",null,{style:d.style,href:"javascript:void(0)",title:d.label,hidefocus:"true","class":d["class"],role:"button","aria-labelledby":h},'\x3cspan id\x3d"'+h+'" class\x3d"cke_dialog_ui_button"\x3e'+ -CKEDITOR.tools.htmlEncode(d.label)+"\x3c/span\x3e")}},select:function(a,d,g){if(!(3>arguments.length)){var e=b.call(this,d);d.validate&&(this.validate=d.validate);e.inputId=CKEDITOR.tools.getNextId()+"_select";CKEDITOR.ui.dialog.labeledElement.call(this,a,d,g,function(){var b=CKEDITOR.tools.extend({},d,{id:d.id?d.id+"_select":CKEDITOR.tools.getNextId()+"_select"},!0),g=[],f=[],h={id:e.inputId,"class":"cke_dialog_ui_input_select","aria-labelledby":this._.labelId};g.push('\x3cdiv class\x3d"cke_dialog_ui_input_', -d.type,'" role\x3d"presentation"');d.width&&g.push('style\x3d"width:'+d.width+'" ');g.push("\x3e");void 0!==d.size&&(h.size=d.size);void 0!==d.multiple&&(h.multiple=d.multiple);k(b);for(var l=0,m;l<d.items.length&&(m=d.items[l]);l++)f.push('\x3coption value\x3d"',CKEDITOR.tools.htmlEncode(void 0!==m[1]?m[1]:m[0]).replace(/"/g,"\x26quot;"),'" /\x3e ',CKEDITOR.tools.htmlEncode(m[0]));"undefined"!=typeof b.inputStyle&&(b.style=b.inputStyle);e.select=new CKEDITOR.ui.dialog.uiElement(a,b,g,"select",null, -h,f.join(""));g.push("\x3c/div\x3e");return g.join("")})}},file:function(a,d,g){if(!(3>arguments.length)){void 0===d["default"]&&(d["default"]="");var e=CKEDITOR.tools.extend(b.call(this,d),{definition:d,buttons:[]});d.validate&&(this.validate=d.validate);a.on("load",function(){CKEDITOR.document.getById(e.frameId).getParent().addClass("cke_dialog_ui_input_file")});CKEDITOR.ui.dialog.labeledElement.call(this,a,d,g,function(){e.frameId=CKEDITOR.tools.getNextId()+"_fileInput";var a=['\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"', -e.frameId,'" title\x3d"',d.label,'" src\x3d"javascript:void('];a.push(CKEDITOR.env.ie?"(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"})()":"0");a.push(')"\x3e\x3c/iframe\x3e');return a.join("")})}},fileButton:function(a,d,g){var e=this;if(!(3>arguments.length)){b.call(this,d);d.validate&&(this.validate=d.validate);var f=CKEDITOR.tools.extend({},d),h=f.onClick;f.className=(f.className?f.className+" ":"")+"cke_dialog_ui_button";f.onClick=function(b){var g= -d["for"];b=h?h.call(this,b):!1;!1!==b&&("xhr"!==b&&a.getContentElement(g[0],g[1]).submit(),this.disable())};a.on("load",function(){a.getContentElement(d["for"][0],d["for"][1])._.buttons.push(e)});CKEDITOR.ui.dialog.button.call(this,a,f,g)}},html:function(){var a=/^\s*<[\w:]+\s+([^>]*)?>/,b=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,g=/\/$/;return function(e,f,h){if(!(3>arguments.length)){var k=[],l=f.html;"\x3c"!=l.charAt(0)&&(l="\x3cspan\x3e"+l+"\x3c/span\x3e");var m=f.focus;if(m){var x=this.focus; -this.focus=function(){("function"==typeof m?m:x).call(this);this.fire("focus")};f.isFocusable&&(this.isFocusable=this.isFocusable);this.keyboardFocusable=!0}CKEDITOR.ui.dialog.uiElement.call(this,e,f,k,"span",null,null,"");k=k.join("").match(a);l=l.match(b)||["","",""];g.test(l[1])&&(l[1]=l[1].slice(0,-1),l[2]="/"+l[2]);h.push([l[1]," ",k[1]||"",l[2]].join(""))}}}(),fieldset:function(a,b,g,e,f){var h=f.label;this._={children:b};CKEDITOR.ui.dialog.uiElement.call(this,a,f,e,"fieldset",null,null,function(){var a= -[];h&&a.push("\x3clegend"+(f.labelStyle?' style\x3d"'+f.labelStyle+'"':"")+"\x3e"+h+"\x3c/legend\x3e");for(var c=0;c<g.length;c++)a.push(g[c]);return a.join("")})}},!0);CKEDITOR.ui.dialog.html.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.ui.dialog.labeledElement.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setLabel:function(a){var b=CKEDITOR.document.getById(this._.labelId);1>b.getChildCount()?(new CKEDITOR.dom.text(a,CKEDITOR.document)).appendTo(b):b.getChild(0).$.nodeValue= -a;return this},getLabel:function(){var a=CKEDITOR.document.getById(this._.labelId);return!a||1>a.getChildCount()?"":a.getChild(0).getText()},eventProcessors:a},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return this._.disabled?!1:this.fire("click",{dialog:this._.dialog})},enable:function(){this._.disabled=!1;var a=this.getElement();a&&a.removeClass("cke_disabled")},disable:function(){this._.disabled=!0;this.getElement().addClass("cke_disabled")}, -isVisible:function(){return this.getElement().getFirst().isVisible()},isEnabled:function(){return!this._.disabled},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(a,b){this.on("click",function(){b.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)}, -focus:function(){var a=this.selectParentTab();setTimeout(function(){var b=a.getInputElement();b&&b.$.focus()},0)},select:function(){var a=this.selectParentTab();setTimeout(function(){var b=a.getInputElement();b&&(b.$.focus(),b.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(a){if(this.bidi){var b=a&&a.charAt(0);(b="‪"==b?"ltr":"‫"==b?"rtl":null)&&(a=a.slice(1));this.setDirectionMarker(b)}a||(a="");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)}, -getValue:function(){var a=CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this);if(this.bidi&&a){var b=this.getDirectionMarker();b&&(a=("ltr"==b?"‪":"‫")+a)}return a},setDirectionMarker:function(a){var b=this.getInputElement();a?b.setAttributes({dir:a,"data-cke-dir-marker":a}):this.getDirectionMarker()&&b.removeAttributes(["dir","data-cke-dir-marker"])},getDirectionMarker:function(){return this.getInputElement().data("cke-dir-marker")},keyboardFocusable:!0},e,!0);CKEDITOR.ui.dialog.textarea.prototype= -new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return this._.select.getElement()},add:function(a,b,g){var e=new CKEDITOR.dom.element("option",this.getDialog().getParentEditor().document),f=this.getInputElement().$;e.$.text=a;e.$.value=void 0===b||null===b?a:b;void 0===g||null===g?CKEDITOR.env.ie?f.add(e.$):f.add(e.$,null):f.add(e.$,g);return this},remove:function(a){this.getInputElement().$.remove(a); -return this},clear:function(){for(var a=this.getInputElement().$;0<a.length;)a.remove(0);return this},keyboardFocusable:!0},e,!0);CKEDITOR.ui.dialog.checkbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getInputElement:function(){return this._.checkbox.getElement()},setValue:function(a,b){this.getInputElement().$.checked=a;!b&&this.fire("change",{value:a})},getValue:function(){return this.getInputElement().$.checked},accessKeyUp:function(){this.setValue(!this.getValue())},eventProcessors:{onChange:function(c, -b){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return a.onChange.apply(this,arguments);c.on("load",function(){var a=this._.checkbox.getElement();a.on("propertychange",function(c){c=c.data.$;"checked"==c.propertyName&&this.fire("change",{value:a.$.checked})},this)},this);this.on("change",b);return null}},keyboardFocusable:!0},e,!0);CKEDITOR.ui.dialog.radio.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setValue:function(a,b){for(var g=this._.children,e,f=0;f<g.length&&(e=g[f]);f++)e.getElement().$.checked= -e.getValue()==a;!b&&this.fire("change",{value:a})},getValue:function(){for(var a=this._.children,b=0;b<a.length;b++)if(a[b].getElement().$.checked)return a[b].getValue();return null},accessKeyUp:function(){var a=this._.children,b;for(b=0;b<a.length;b++)if(a[b].getElement().$.checked){a[b].getElement().focus();return}a[0].getElement().focus()},eventProcessors:{onChange:function(b,d){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return a.onChange.apply(this,arguments);b.on("load",function(){for(var a= -this._.children,b=this,c=0;c<a.length;c++)a[c].getElement().on("propertychange",function(a){a=a.data.$;"checked"==a.propertyName&&this.$.checked&&b.fire("change",{value:this.getAttribute("value")})})},this);this.on("change",d);return null}}},e,!0);CKEDITOR.ui.dialog.file.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,e,{getInputElement:function(){var a=CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0<a.$.forms.length?new CKEDITOR.dom.element(a.$.forms[0].elements[0]): -this.getElement()},submit:function(){this.getInputElement().getParent().$.submit();return this},getAction:function(){return this.getInputElement().getParent().$.action},registerEvents:function(a){var b=/^on([A-Z]\w+)/,g,e=function(a,b,c,d){a.on("formLoaded",function(){a.getInputElement().on(c,d,a)})},f;for(f in a)if(g=f.match(b))this.eventProcessors[f]?this.eventProcessors[f].call(this,this._.dialog,a[f]):e(this,this._.dialog,g[1].toLowerCase(),a[f]);return this},reset:function(){function a(){g.$.open(); -var c="";e.size&&(c=e.size-(CKEDITOR.env.ie?7:0));var u=b.frameId+"_input";g.$.write(['\x3chtml dir\x3d"'+l+'" lang\x3d"'+m+'"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e','\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"'+l+'" lang\x3d"'+m+'" action\x3d"',CKEDITOR.tools.htmlEncode(e.action),'"\x3e\x3clabel id\x3d"',b.labelId,'" for\x3d"',u,'" style\x3d"display:none"\x3e',CKEDITOR.tools.htmlEncode(e.label), -'\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"',u,'" aria-labelledby\x3d"',b.labelId,'" type\x3d"file" name\x3d"',CKEDITOR.tools.htmlEncode(e.id||"cke_upload"),'" size\x3d"',CKEDITOR.tools.htmlEncode(0<c?c:""),'" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e',CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"","window.parent.CKEDITOR.tools.callFunction("+h+");","window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction("+k+")}","\x3c/script\x3e"].join("")); -g.$.close();for(c=0;c<f.length;c++)f[c].enable()}var b=this._,g=CKEDITOR.document.getById(b.frameId).getFrameDocument(),e=b.definition,f=b.buttons,h=this.formLoadedNumber,k=this.formUnloadNumber,l=b.dialog._.editor.lang.dir,m=b.dialog._.editor.langCode;h||(h=this.formLoadedNumber=CKEDITOR.tools.addFunction(function(){this.fire("formLoaded")},this),k=this.formUnloadNumber=CKEDITOR.tools.addFunction(function(){this.getInputElement().clearCustomData()},this),this.getDialog()._.editor.on("destroy",function(){CKEDITOR.tools.removeFunction(h); -CKEDITOR.tools.removeFunction(k)}));CKEDITOR.env.gecko?setTimeout(a,500):a()},getValue:function(){return this.getInputElement().$.value||""},setInitValue:function(){this._.initValue=""},eventProcessors:{onChange:function(a,b){this._.domOnChangeRegistered||(this.on("formLoaded",function(){this.getInputElement().on("change",function(){this.fire("change",{value:this.getValue()})},this)},this),this._.domOnChangeRegistered=!0);this.on("change",b)}},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.fileButton.prototype= -new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement("text",h);CKEDITOR.dialog.addUIElement("password",h);CKEDITOR.dialog.addUIElement("tel",h);CKEDITOR.dialog.addUIElement("textarea",f);CKEDITOR.dialog.addUIElement("checkbox",f);CKEDITOR.dialog.addUIElement("radio",f);CKEDITOR.dialog.addUIElement("button",f);CKEDITOR.dialog.addUIElement("select",f);CKEDITOR.dialog.addUIElement("file",f);CKEDITOR.dialog.addUIElement("fileButton", -f);CKEDITOR.dialog.addUIElement("html",f);CKEDITOR.dialog.addUIElement("fieldset",{build:function(a,b,g){for(var e=b.children,f,h=[],k=[],l=0;l<e.length&&(f=e[l]);l++){var m=[];h.push(m);k.push(CKEDITOR.dialog._.uiElementBuilders[f.type].build(a,f,m))}return new CKEDITOR.ui.dialog[b.type](a,k,h,g,b)}})}}),CKEDITOR.DIALOG_RESIZE_NONE=0,CKEDITOR.DIALOG_RESIZE_WIDTH=1,CKEDITOR.DIALOG_RESIZE_HEIGHT=2,CKEDITOR.DIALOG_RESIZE_BOTH=3,CKEDITOR.DIALOG_STATE_IDLE=1,CKEDITOR.DIALOG_STATE_BUSY=2,function(){function b(a){a._.tabBarMode= -!0;a._.tabs[a._.currentTabId][0].focus();a._.currentFocusIndex=-1}function h(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,c=b-1;c>b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function f(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;c<b+a;c++)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a]; -return null}function e(a,b){for(var c=a.$.getElementsByTagName("input"),d=0,g=c.length;d<g;d++){var e=new CKEDITOR.dom.element(c[d]);"text"==e.getAttribute("type").toLowerCase()&&(b?(e.setAttribute("value",e.getCustomData("fake_value")||""),e.removeCustomData("fake_value")):(e.setCustomData("fake_value",e.getAttribute("value")),e.setAttribute("value","")))}}function a(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute("aria-invalid"):c.setAttribute("aria-invalid",!0));a||(this.select?this.select(): -this.focus());b&&alert(b);this.fire("validated",{valid:a,msg:b})}function m(){var a=this.getInputElement();a&&a.removeAttribute("aria-invalid")}function k(a){var b=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog",L).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:"cke_editor_"+a.name.replace(/\./g,"\\.")+"_dialog",closeTitle:a.lang.common.close,hidpi:CKEDITOR.env.hidpi?"cke_hidpi":""})),c=b.getChild([0,0,0,0,0]),d=c.getChild(0), -g=c.getChild(1);a.plugins.clipboard&&CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(c);!CKEDITOR.env.ie||CKEDITOR.env.quirks||CKEDITOR.env.edge||(a="javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())",CKEDITOR.dom.element.createFromHtml('\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"'+a+'" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e').appendTo(c.getParent()));d.unselectable();g.unselectable();return{element:b, -parts:{dialog:b.getChild(0),title:d,close:g,tabs:c.getChild(2),contents:c.getChild([3,0,0,0]),footer:c.getChild([3,0,1,0])}}}function l(a,b,c){this.element=b;this.focusIndex=c;this.tabIndex=0;this.isFocusable=function(){return!b.getAttribute("disabled")&&b.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};b.on("keydown",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire("click")});b.on("focus",function(){this.fire("mouseover")});b.on("blur",function(){this.fire("mouseout")})} -function c(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow();c.on("resize",b);a.on("hide",function(){c.removeListener("resize",b)})}function d(a,b){this.dialog=a;for(var c=b.contents,d=0,e;e=c[d];d++)c[d]=e&&new g(a,e);CKEDITOR.tools.extend(this,b)}function g(a,b){this._={dialog:a};CKEDITOR.tools.extend(this,b)}function n(a){function b(c){var n=a.getSize(),k=a.parts.dialog.getParent().getClientSize(),l=c.data.$.screenX,m=c.data.$.screenY,r=l-d.x,t=m-d.y;d={x:l,y:m};g.x+=r;g.y+=t;l=g.x+ -h[3]<f?-h[3]:g.x-h[1]>k.width-n.width-f?k.width-n.width+("rtl"==e.lang.dir?0:h[1]):g.x;n=g.y+h[0]<f?-h[0]:g.y-h[2]>k.height-n.height-f?k.height-n.height+h[2]:g.y;l=Math.floor(l);n=Math.floor(n);a.move(l,n,1);c.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mousemove",b);CKEDITOR.document.removeListener("mouseup",c);if(CKEDITOR.env.ie6Compat){var a=E.getChild(0).getFrameDocument();a.removeListener("mousemove",b);a.removeListener("mouseup",c)}}var d=null,g=null,e=a.getParentEditor(), -f=e.config.dialog_magnetDistance,h=CKEDITOR.skin.margins||[0,0,0,0];"undefined"==typeof f&&(f=20);a.parts.title.on("mousedown",function(e){if(!a._.moved){var f=a._.element;f.getFirst().setStyle("position","absolute");f.removeStyle("display");a._.moved=!0;a.layout()}d={x:e.data.$.screenX,y:e.data.$.screenY};CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);g=a.getPosition();CKEDITOR.env.ie6Compat&&(f=E.getChild(0).getFrameDocument(),f.on("mousemove",b),f.on("mouseup",c));e.data.preventDefault()}, -a)}function y(a){function b(c){var m="rtl"==e.lang.dir,r=l.width,t=l.height,q=r+(c.data.$.screenX-k.x)*(m?-1:1)*(a._.moved?1:2),R=t+(c.data.$.screenY-k.y)*(a._.moved?1:2),u=a._.element.getFirst(),u=m&&parseInt(u.getComputedStyle("right"),10),v=a.getPosition();v.x=v.x||0;v.y=v.y||0;v.y+R>n.height&&(R=n.height-v.y);(m?u:v.x)+q>n.width&&(q=n.width-(m?u:v.x));R=Math.floor(R);q=Math.floor(q);if(g==CKEDITOR.DIALOG_RESIZE_WIDTH||g==CKEDITOR.DIALOG_RESIZE_BOTH)r=Math.max(d.minWidth||0,q-f);if(g==CKEDITOR.DIALOG_RESIZE_HEIGHT|| -g==CKEDITOR.DIALOG_RESIZE_BOTH)t=Math.max(d.minHeight||0,R-h);a.resize(r,t);a._.moved&&w(a,a._.position.x,a._.position.y);a._.moved||a.layout();c.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mouseup",c);CKEDITOR.document.removeListener("mousemove",b);m&&(m.remove(),m=null);if(CKEDITOR.env.ie6Compat){var a=E.getChild(0).getFrameDocument();a.removeListener("mouseup",c);a.removeListener("mousemove",b)}}var d=a.definition,g=d.resizable;if(g!=CKEDITOR.DIALOG_RESIZE_NONE){var e= -a.getParentEditor(),f,h,n,k,l,m,r=CKEDITOR.tools.addFunction(function(d){function g(a){return a.isVisible()}l=a.getSize();var e=a.parts.contents,r=e.$.getElementsByTagName("iframe").length,t=!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks);r&&(m=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%; left:0; top:0;"\x3e\x3c/div\x3e'),e.append(m));h=l.height-a.parts.contents.getFirst(g).getSize("height",t); -f=l.width-a.parts.contents.getFirst(g).getSize("width",1);k={x:d.screenX,y:d.screenY};n=CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);CKEDITOR.env.ie6Compat&&(e=E.getChild(0).getFrameDocument(),e.on("mousemove",b),e.on("mouseup",c));d.preventDefault&&d.preventDefault()});a.on("load",function(){var b="";g==CKEDITOR.DIALOG_RESIZE_WIDTH?b=" cke_resizer_horizontal":g==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=" cke_resizer_vertical");b=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer'+ -b+" cke_resizer_"+e.lang.dir+'" title\x3d"'+CKEDITOR.tools.htmlEncode(e.lang.common.resize)+'" onmousedown\x3d"CKEDITOR.tools.callFunction('+r+', event )"\x3e'+("ltr"==e.lang.dir?"â—¢":"â—£")+"\x3c/div\x3e");a.parts.footer.append(b,1)});e.on("destroy",function(){CKEDITOR.tools.removeFunction(r)})}}function w(a,b,c){var d=a.parts.dialog.getParent().getClientSize(),g=a.getSize(),e=a._.viewportRatio,f=Math.max(d.width-g.width,0),d=Math.max(d.height-g.height,0);e.width=f?b/f:e.width;e.height=d?c/d:e.height; -a._.viewportRatio=e}function p(a){a.data.preventDefault(1)}function t(a){var b=a.config,c=CKEDITOR.skinName||a.config.skin,d=b.dialog_backgroundCoverColor||("moono-lisa"==c?"black":"white"),c=b.dialog_backgroundCoverOpacity,g=b.baseFloatZIndex,b=CKEDITOR.tools.genKey(d,c,g),e=M[b];CKEDITOR.document.getBody().addClass("cke_dialog_open");e?e.show():(g=['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ',CKEDITOR.env.ie6Compat?"absolute":"fixed","; z-index: ",g,"; top: 0px; left: 0px; ","; width: 100%; height: 100%;", -CKEDITOR.env.ie6Compat?"":"background-color: "+d,'" class\x3d"cke_dialog_background_cover"\x3e'],CKEDITOR.env.ie6Compat&&(d="\x3chtml\x3e\x3cbody style\x3d\\'background-color:"+d+";\\'\x3e\x3c/body\x3e\x3c/html\x3e",g.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'),g.push("void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.write( '"+d+"' );document.close();")+"})())"),g.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')), -g.push("\x3c/div\x3e"),e=CKEDITOR.dom.element.createFromHtml(g.join("")),e.setOpacity(void 0!==c?c:.5),e.on("keydown",p),e.on("keypress",p),e.on("keyup",p),e.appendTo(CKEDITOR.document.getBody()),M[b]=e);a.focusManager.add(e);E=e;CKEDITOR.env.mac&&CKEDITOR.env.webkit||e.focus()}function r(a){CKEDITOR.document.getBody().removeClass("cke_dialog_open");E&&(a.focusManager.remove(E),E.hide())}function x(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,d=a.data.$.shiftKey,g=String.fromCharCode(a.data.$.keyCode); -(b=Q[(b?"CTRL+":"")+(c?"ALT+":"")+(d?"SHIFT+":"")+g])&&b.length&&(b=b[b.length-1],b.keydown&&b.keydown.call(b.uiElement,b.dialog,b.key),a.data.preventDefault())}function u(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,d=a.data.$.shiftKey,g=String.fromCharCode(a.data.$.keyCode);(b=Q[(b?"CTRL+":"")+(c?"ALT+":"")+(d?"SHIFT+":"")+g])&&b.length&&(b=b[b.length-1],b.keyup&&(b.keyup.call(b.uiElement,b.dialog,b.key),a.data.preventDefault()))}function z(a,b,c,d,g){(Q[c]||(Q[c]=[])).push({uiElement:a, -dialog:b,key:c,keyup:g||a.accessKeyUp,keydown:d||a.accessKeyDown})}function q(a){for(var b in Q){for(var c=Q[b],d=c.length-1;0<=d;d--)c[d].dialog!=a&&c[d].uiElement!=a||c.splice(d,1);0===c.length&&delete Q[b]}}function v(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])}function B(){}var D=CKEDITOR.tools.cssLength,A,E,F=!1,K=!CKEDITOR.env.ie||CKEDITOR.env.edge,L='\x3cdiv class\x3d"cke_reset_all cke_dialog_container {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" style\x3d"'+(K? -"display:flex":"")+'" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog '+CKEDITOR.env.cssClass+' cke_{langDir}" style\x3d"'+(K?"margin:auto":"position:absolute")+'" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e'; -CKEDITOR.dialog=function(c,g){function e(){var a=E._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;c<b;c++)a[c].focusIndex=c}function l(a){var b=E._.focusList;a=a||0;if(!(1>b.length)){var c=E._.currentFocusIndex;E._.tabBarMode&&0>a&&(c=0);try{b[c].getInputElement().$.blur()}catch(d){}var g=c,e=1<E._.pageCount;do{g+=a;if(e&&!E._.tabBarMode&&(g==b.length||-1==g)){E._.tabBarMode=!0;E._.tabs[E._.currentTabId][0].focus(); -E._.currentFocusIndex=-1;return}g=(g+b.length)%b.length;if(g==c)break}while(a&&!b[g].isFocusable());b[g].focus();"text"==b[g].type&&b[g].select()}}function r(a){if(E==CKEDITOR.dialog._.currentTop){var d=a.data.getKeystroke(),g="rtl"==c.lang.dir,e=[37,38,39,40];w=z=0;if(9==d||d==CKEDITOR.SHIFT+9)l(d==CKEDITOR.SHIFT+9?-1:1),w=1;else if(d==CKEDITOR.ALT+121&&!E._.tabBarMode&&1<E.getPageCount())b(E),w=1;else if(-1!=CKEDITOR.tools.indexOf(e,d)&&E._.tabBarMode)d=-1!=CKEDITOR.tools.indexOf([g?39:37,38],d)? -h.call(E):f.call(E),E.selectPage(d),E._.tabs[d][0].focus(),w=1;else if(13!=d&&32!=d||!E._.tabBarMode)if(13==d)d=a.data.getTarget(),d.is("a","button","select","textarea")||d.is("input")&&"button"==d.$.type||((d=this.getButton("ok"))&&CKEDITOR.tools.setTimeout(d.click,0,d),w=1),z=1;else if(27==d)(d=this.getButton("cancel"))?CKEDITOR.tools.setTimeout(d.click,0,d):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),z=1;else return;else this.selectPage(this._.currentTabId),this._.tabBarMode=!1,this._.currentFocusIndex= --1,l(1),w=1;t(a)}}function t(a){w?a.data.preventDefault(1):z&&a.data.stopPropagation()}var q=CKEDITOR.dialog._.dialogDefinitions[g],u=CKEDITOR.tools.clone(A),v=c.config.dialog_buttonsOrder||"OS",x=c.lang.dir,p={},w,z;("OS"==v&&CKEDITOR.env.mac||"rtl"==v&&"ltr"==x||"ltr"==v&&"rtl"==x)&&u.buttons.reverse();q=CKEDITOR.tools.extend(q(c),u);q=CKEDITOR.tools.clone(q);q=new d(this,q);u=k(c);this._={editor:c,element:u.element,name:g,model:null,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{}, -buttons:{},accessKeyMap:{},viewportRatio:{width:.5,height:.5},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],currentFocusIndex:0,hasFocus:!1};this.parts=u.parts;CKEDITOR.tools.setTimeout(function(){c.fire("ariaWidget",this.parts.contents)},0,this);u={top:0,visibility:"hidden"};CKEDITOR.env.ie6Compat&&(u.position="absolute");u["rtl"==x?"right":"left"]=0;this.parts.dialog.setStyles(u);CKEDITOR.event.call(this);this.definition=q=CKEDITOR.fire("dialogDefinition", -{name:g,definition:q,dialog:this},c).definition;if(!("removeDialogTabs"in c._)&&c.config.removeDialogTabs){u=c.config.removeDialogTabs.split(";");for(x=0;x<u.length;x++)if(v=u[x].split(":"),2==v.length){var B=v[0];p[B]||(p[B]=[]);p[B].push(v[1])}c._.removeDialogTabs=p}if(c._.removeDialogTabs&&(p=c._.removeDialogTabs[g]))for(x=0;x<p.length;x++)q.removeContents(p[x]);if(q.onLoad)this.on("load",q.onLoad);if(q.onShow)this.on("show",q.onShow);if(q.onHide)this.on("hide",q.onHide);if(q.onOk)this.on("ok", -function(a){c.fire("saveSnapshot");setTimeout(function(){c.fire("saveSnapshot")},0);!1===q.onOk.call(this,a)&&(a.data.hide=!1)});this.state=CKEDITOR.DIALOG_STATE_IDLE;if(q.onCancel)this.on("cancel",function(a){!1===q.onCancel.call(this,a)&&(a.data.hide=!1)});var E=this,D=function(a){var b=E._.contents,c=!1,d;for(d in b)for(var g in b[d])if(c=a.call(this,b[d][g]))return};this.on("ok",function(b){D(function(c){if(c.validate){var d=c.validate(this),g="string"==typeof d||!1===d;g&&(b.data.hide=!1,b.stop()); -a.call(c,!g,"string"==typeof d?d:void 0);return g}})},this,null,0);this.on("cancel",function(a){D(function(b){if(b.isChanged())return c.config.dialog_noConfirmCancel||confirm(c.lang.common.confirmCancel)||(a.data.hide=!1),!0})},this,null,0);this.parts.close.on("click",function(a){!1!==this.fire("cancel",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=l;var K=this._.element;c.focusManager.add(K,1);this.on("show",function(){K.on("keydown",r,this);if(CKEDITOR.env.gecko)K.on("keypress", -t,this)});this.on("hide",function(){K.removeListener("keydown",r);CKEDITOR.env.gecko&&K.removeListener("keypress",t);D(function(a){m.apply(a)})});this.on("iframeAdded",function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on("keydown",r,this,null,0)});this.on("show",function(){e();var a=1<E._.pageCount;c.config.dialog_startupFocusTab&&a?(E._.tabBarMode=!0,E._.tabs[E._.currentTabId][0].focus(),E._.currentFocusIndex=-1):this._.hasFocus||(this._.currentFocusIndex=a?-1:this._.focusList.length- -1,q.onFocus?(a=q.onFocus.call(this))&&a.focus():l(1))},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on("load",function(){var a=this.getElement(),b=a.getFirst();b.remove();b.appendTo(a)},this);n(this);y(this);(new CKEDITOR.dom.text(q.title,CKEDITOR.document)).appendTo(this.parts.title);for(x=0;x<q.contents.length;x++)(p=q.contents[x])&&this.addPage(p);this.parts.tabs.on("click",function(a){var c=a.data.getTarget();c.hasClass("cke_dialog_tab")&&(c=c.$.id,this.selectPage(c.substring(4,c.lastIndexOf("_"))), -b(this),a.data.preventDefault())},this);x=[];p=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:"hbox",className:"cke_dialog_footer_buttons",widths:[],children:q.buttons},x).getChild();this.parts.footer.setHtml(x.join(""));for(x=0;x<p.length;x++)this._.buttons[p[x].id]=p[x]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(a,b){if(!this._.contentSize||this._.contentSize.width!=a||this._.contentSize.height!=b){CKEDITOR.dialog.fire("resize", -{dialog:this,width:a,height:b},this._.editor);this.fire("resize",{width:a,height:b},this._.editor);this.parts.contents.setStyles({width:a+"px",height:b+"px"});if("rtl"==this._.editor.lang.dir&&this._.position){var c=this.parts.dialog.getParent().getClientSize().width;this._.position.x=c-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle("right"),10)}this._.contentSize={width:a,height:b}}},getSize:function(){var a=this._.element.getFirst();return{width:a.$.offsetWidth||0,height:a.$.offsetHeight|| -0}},move:function(a,b,c){var d=this._.element.getFirst(),g="rtl"==this._.editor.lang.dir;CKEDITOR.env.ie&&d.setStyle("zoom","100%");var e=this.parts.dialog.getParent().getClientSize(),f=this.getSize(),h=this._.viewportRatio,n=Math.max(e.width-f.width,0),e=Math.max(e.height-f.height,0);this._.position&&this._.position.x==a&&this._.position.y==b?(a=Math.floor(n*h.width),b=Math.floor(e*h.height)):w(this,a,b);this._.position={x:a,y:b};g&&(a=n-a);b={top:(0<b?b:0)+"px"};b[g?"right":"left"]=(0<a?a:0)+"px"; -d.setStyles(b);c&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var a=this._.element,b=this.definition,d=CKEDITOR.document.getBody(),g=this._.editor.config.baseFloatZIndex;a.getParent()&&a.getParent().equals(d)?a.setStyle("display",K?"flex":"block"):a.appendTo(d);this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight);this.reset();null===this._.currentTabId&& -this.selectPage(this.definition.contents[0].id);null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=g);this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10);this.getElement().setStyle("z-index",CKEDITOR.dialog._.currentZIndex);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,t(this._.editor)):CKEDITOR.dialog._.currentTop!==this&&(this._.parentDialog=CKEDITOR.dialog._.currentTop,d=this._.parentDialog.getElement().getFirst(), -d.$.style.zIndex-=Math.floor(g/2),this._.parentDialog.getElement().setStyle("z-index",d.$.style.zIndex),CKEDITOR.dialog._.currentTop=this);a.on("keydown",x);a.on("keyup",u);this._.hasFocus=!1;for(var e in b.contents)if(b.contents[e]){var a=b.contents[e],g=this._.tabs[a.id],d=a.requiredContent,f=0;if(g){for(var h in this._.contents[a.id]){var n=this._.contents[a.id][h];"hbox"!=n.type&&"vbox"!=n.type&&n.getInputElement()&&(n.requiredContent&&!this._.editor.activeFilter.check(n.requiredContent)?n.disable(): +this)},this),this._.domOnChangeRegistered=!0);this.on("change",b)}},!0),k=/^on([A-Z]\w+)/,l=function(a){for(var b in a)(k.test(b)||"title"==b||"type"==b)&&delete a[b];return a},m=function(a){a=a.data.getKeystroke();a==CKEDITOR.SHIFT+CKEDITOR.ALT+36?this.setDirectionMarker("ltr"):a==CKEDITOR.SHIFT+CKEDITOR.ALT+35&&this.setDirectionMarker("rtl")};CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{labeledElement:function(a,d,g,e){if(!(4>arguments.length)){var f=b.call(this,d);f.labelId=CKEDITOR.tools.getNextId()+ +"_label";this._.children=[];var h={role:d.role||"presentation"};d.includeLabel&&(h["aria-labelledby"]=f.labelId);CKEDITOR.ui.dialog.uiElement.call(this,a,d,g,"div",null,h,function(){var b=[],g=d.required?" cke_required":"";"horizontal"!=d.labelLayout?b.push('\x3clabel class\x3d"cke_dialog_ui_labeled_label'+g+'" ',' id\x3d"'+f.labelId+'"',f.inputId?' for\x3d"'+f.inputId+'"':"",(d.labelStyle?' style\x3d"'+d.labelStyle+'"':"")+"\x3e",d.required?d.label+'\x3cspan class\x3d"cke_dialog_ui_labeled_required" aria-hidden\x3d"true"\x3e*\x3c/span\x3e': +d.label,"\x3c/label\x3e",'\x3cdiv class\x3d"cke_dialog_ui_labeled_content"',d.controlStyle?' style\x3d"'+d.controlStyle+'"':"",' role\x3d"presentation"\x3e',e.call(this,a,d),"\x3c/div\x3e"):(g={type:"hbox",widths:d.widths,padding:0,children:[{type:"html",html:'\x3clabel class\x3d"cke_dialog_ui_labeled_label'+g+'" id\x3d"'+f.labelId+'" for\x3d"'+f.inputId+'"'+(d.labelStyle?' style\x3d"'+d.labelStyle+'"':"")+"\x3e"+CKEDITOR.tools.htmlEncode(d.label)+"\x3c/label\x3e"},{type:"html",html:'\x3cspan class\x3d"cke_dialog_ui_labeled_content"'+ +(d.controlStyle?' style\x3d"'+d.controlStyle+'"':"")+"\x3e"+e.call(this,a,d)+"\x3c/span\x3e"}]},CKEDITOR.dialog._.uiElementBuilders.hbox.build(a,g,b));return b.join("")})}},textInput:function(a,d,g){if(!(3>arguments.length)){b.call(this,d);var e=this._.inputId=CKEDITOR.tools.getNextId()+"_textInput",f={"class":"cke_dialog_ui_input_"+d.type,id:e,type:d.type};d.validate&&(this.validate=d.validate);d.maxLength&&(f.maxlength=d.maxLength);d.size&&(f.size=d.size);d.inputStyle&&(f.style=d.inputStyle);var h= +this,k=!1;a.on("load",function(){h.getInputElement().on("keydown",function(a){13==a.data.getKeystroke()&&(k=!0)});h.getInputElement().on("keyup",function(b){13==b.data.getKeystroke()&&k&&(a.getButton("ok")&&setTimeout(function(){a.getButton("ok").click()},0),k=!1);h.bidi&&m.call(h,b)},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,a,d,g,function(){var a=['\x3cdiv class\x3d"cke_dialog_ui_input_',d.type,'" role\x3d"presentation"'];d.width&&a.push('style\x3d"width:'+d.width+'" ');a.push("\x3e\x3cinput "); +f["aria-labelledby"]=this._.labelId;this._.required&&(f["aria-required"]=this._.required);for(var c in f)a.push(c+'\x3d"'+f[c]+'" ');a.push(" /\x3e\x3c/div\x3e");return a.join("")})}},textarea:function(a,d,g){if(!(3>arguments.length)){b.call(this,d);var e=this,f=this._.inputId=CKEDITOR.tools.getNextId()+"_textarea",h={};d.validate&&(this.validate=d.validate);h.rows=d.rows||5;h.cols=d.cols||20;h["class"]="cke_dialog_ui_input_textarea "+(d["class"]||"");"undefined"!=typeof d.inputStyle&&(h.style=d.inputStyle); +d.dir&&(h.dir=d.dir);if(e.bidi)a.on("load",function(){e.getInputElement().on("keyup",m)},e);CKEDITOR.ui.dialog.labeledElement.call(this,a,d,g,function(){h["aria-labelledby"]=this._.labelId;this._.required&&(h["aria-required"]=this._.required);var a=['\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"',f,'" '],c;for(c in h)a.push(c+'\x3d"'+CKEDITOR.tools.htmlEncode(h[c])+'" ');a.push("\x3e",CKEDITOR.tools.htmlEncode(e._["default"]),"\x3c/textarea\x3e\x3c/div\x3e"); +return a.join("")})}},checkbox:function(a,d,g){if(!(3>arguments.length)){var e=b.call(this,d,{"default":!!d["default"]});d.validate&&(this.validate=d.validate);CKEDITOR.ui.dialog.uiElement.call(this,a,d,g,"span",null,null,function(){var b=CKEDITOR.tools.extend({},d,{id:d.id?d.id+"_checkbox":CKEDITOR.tools.getNextId()+"_checkbox"},!0),g=[],f=CKEDITOR.tools.getNextId()+"_label",h={"class":"cke_dialog_ui_checkbox_input",type:"checkbox","aria-labelledby":f};l(b);d["default"]&&(h.checked="checked");"undefined"!= +typeof b.inputStyle&&(b.style=b.inputStyle);e.checkbox=new CKEDITOR.ui.dialog.uiElement(a,b,g,"input",null,h);g.push(' \x3clabel id\x3d"',f,'" for\x3d"',h.id,'"'+(d.labelStyle?' style\x3d"'+d.labelStyle+'"':"")+"\x3e",CKEDITOR.tools.htmlEncode(d.label),"\x3c/label\x3e");return g.join("")})}},radio:function(a,d,g){if(!(3>arguments.length)){b.call(this,d);this._["default"]||(this._["default"]=this._.initValue=d.items[0][1]);d.validate&&(this.validate=d.validate);var e=[],f=this;d.role="radiogroup"; +d.includeLabel=!0;CKEDITOR.ui.dialog.labeledElement.call(this,a,d,g,function(){for(var b=[],g=[],h=(d.id?d.id:CKEDITOR.tools.getNextId())+"_radio",k=0;k<d.items.length;k++){var m=d.items[k],t=void 0!==m[2]?m[2]:m[0],z=void 0!==m[1]?m[1]:m[0],u=CKEDITOR.tools.getNextId()+"_radio_input",w=u+"_label",u=CKEDITOR.tools.extend({},d,{id:u,title:null,type:null},!0),t=CKEDITOR.tools.extend({},u,{title:t},!0),B={type:"radio","class":"cke_dialog_ui_radio_input",name:h,value:z,"aria-labelledby":w},C=[];f._["default"]== +z&&(B.checked="checked");l(u);l(t);"undefined"!=typeof u.inputStyle&&(u.style=u.inputStyle);u.keyboardFocusable=!0;e.push(new CKEDITOR.ui.dialog.uiElement(a,u,C,"input",null,B));C.push(" ");new CKEDITOR.ui.dialog.uiElement(a,t,C,"label",null,{id:w,"for":B.id},m[0]);b.push(C.join(""))}new CKEDITOR.ui.dialog.hbox(a,e,b,g);return g.join("")});this._.children=e}},button:function(a,d,g){if(arguments.length){"function"==typeof d&&(d=d(a.getParentEditor()));b.call(this,d,{disabled:d.disabled||!1});CKEDITOR.event.implementOn(this); +var e=this;a.on("load",function(){var a=this.getElement();(function(){a.on("click",function(a){e.click();a.data.preventDefault()});a.on("keydown",function(a){a.data.getKeystroke()in{32:1}&&(e.click(),a.data.preventDefault())})})();a.unselectable()},this);var f=CKEDITOR.tools.extend({},d);delete f.style;var h=CKEDITOR.tools.getNextId()+"_label";CKEDITOR.ui.dialog.uiElement.call(this,a,f,g,"a",null,{style:d.style,href:"javascript:void(0)",title:d.label,hidefocus:"true","class":d["class"],role:"button", +"aria-labelledby":h},'\x3cspan id\x3d"'+h+'" class\x3d"cke_dialog_ui_button"\x3e'+CKEDITOR.tools.htmlEncode(d.label)+"\x3c/span\x3e")}},select:function(a,d,g){if(!(3>arguments.length)){var e=b.call(this,d);d.validate&&(this.validate=d.validate);e.inputId=CKEDITOR.tools.getNextId()+"_select";CKEDITOR.ui.dialog.labeledElement.call(this,a,d,g,function(){var b=CKEDITOR.tools.extend({},d,{id:d.id?d.id+"_select":CKEDITOR.tools.getNextId()+"_select"},!0),g=[],f=[],h={id:e.inputId,"class":"cke_dialog_ui_input_select", +"aria-labelledby":this._.labelId};g.push('\x3cdiv class\x3d"cke_dialog_ui_input_',d.type,'" role\x3d"presentation"');d.width&&g.push('style\x3d"width:'+d.width+'" ');g.push("\x3e");void 0!==d.size&&(h.size=d.size);void 0!==d.multiple&&(h.multiple=d.multiple);l(b);for(var k=0,m;k<d.items.length&&(m=d.items[k]);k++)f.push('\x3coption value\x3d"',CKEDITOR.tools.htmlEncode(void 0!==m[1]?m[1]:m[0]).replace(/"/g,"\x26quot;"),'" /\x3e ',CKEDITOR.tools.htmlEncode(m[0]));"undefined"!=typeof b.inputStyle&& +(b.style=b.inputStyle);e.select=new CKEDITOR.ui.dialog.uiElement(a,b,g,"select",null,h,f.join(""));g.push("\x3c/div\x3e");return g.join("")})}},file:function(a,d,g){if(!(3>arguments.length)){void 0===d["default"]&&(d["default"]="");var e=CKEDITOR.tools.extend(b.call(this,d),{definition:d,buttons:[]});d.validate&&(this.validate=d.validate);a.on("load",function(){CKEDITOR.document.getById(e.frameId).getParent().addClass("cke_dialog_ui_input_file")});CKEDITOR.ui.dialog.labeledElement.call(this,a,d,g, +function(){e.frameId=CKEDITOR.tools.getNextId()+"_fileInput";var a=['\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"',e.frameId,'" title\x3d"',d.label,'" src\x3d"javascript:void('];a.push(CKEDITOR.env.ie?"(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"})()":"0");a.push(')"\x3e\x3c/iframe\x3e');return a.join("")})}},fileButton:function(a,d,g){var e=this;if(!(3>arguments.length)){b.call(this, +d);d.validate&&(this.validate=d.validate);var f=CKEDITOR.tools.extend({},d),h=f.onClick;f.className=(f.className?f.className+" ":"")+"cke_dialog_ui_button";f.onClick=function(b){var g=d["for"];b=h?h.call(this,b):!1;!1!==b&&("xhr"!==b&&a.getContentElement(g[0],g[1]).submit(),this.disable())};a.on("load",function(){a.getContentElement(d["for"][0],d["for"][1])._.buttons.push(e)});CKEDITOR.ui.dialog.button.call(this,a,f,g)}},html:function(){var a=/^\s*<[\w:]+\s+([^>]*)?>/,b=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/, +g=/\/$/;return function(e,f,h){if(!(3>arguments.length)){var k=[],l=f.html;"\x3c"!=l.charAt(0)&&(l="\x3cspan\x3e"+l+"\x3c/span\x3e");var m=f.focus;if(m){var x=this.focus;this.focus=function(){("function"==typeof m?m:x).call(this);this.fire("focus")};f.isFocusable&&(this.isFocusable=this.isFocusable);this.keyboardFocusable=!0}CKEDITOR.ui.dialog.uiElement.call(this,e,f,k,"span",null,null,"");k=k.join("").match(a);l=l.match(b)||["","",""];g.test(l[1])&&(l[1]=l[1].slice(0,-1),l[2]="/"+l[2]);h.push([l[1], +" ",k[1]||"",l[2]].join(""))}}}(),fieldset:function(a,b,g,e,f){var h=f.label;this._={children:b};CKEDITOR.ui.dialog.uiElement.call(this,a,f,e,"fieldset",null,null,function(){var a=[];h&&a.push("\x3clegend"+(f.labelStyle?' style\x3d"'+f.labelStyle+'"':"")+"\x3e"+h+"\x3c/legend\x3e");for(var c=0;c<g.length;c++)a.push(g[c]);return a.join("")})}},!0);CKEDITOR.ui.dialog.html.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.ui.dialog.labeledElement.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement, +{setLabel:function(a){var b=CKEDITOR.document.getById(this._.labelId);1>b.getChildCount()?(new CKEDITOR.dom.text(a,CKEDITOR.document)).appendTo(b):b.getChild(0).$.nodeValue=a;return this},getLabel:function(){var a=CKEDITOR.document.getById(this._.labelId);return!a||1>a.getChildCount()?"":a.getChild(0).getText()},eventProcessors:a},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return this._.disabled?!1:this.fire("click",{dialog:this._.dialog})}, +enable:function(){this._.disabled=!1;var a=this.getElement();a&&a.removeClass("cke_disabled")},disable:function(){this._.disabled=!0;this.getElement().addClass("cke_disabled")},isVisible:function(){return this.getElement().getFirst().isVisible()},isEnabled:function(){return!this._.disabled},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(a,b){this.on("click",function(){b.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()}, +accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)},focus:function(){var a=this.selectParentTab();setTimeout(function(){var b=a.getInputElement();b&&b.$.focus()},0)},select:function(){var a=this.selectParentTab();setTimeout(function(){var b=a.getInputElement();b&&(b.$.focus(),b.$.select())},0)},accessKeyUp:function(){this.select()}, +setValue:function(a){if(this.bidi){var b=a&&a.charAt(0);(b="‪"==b?"ltr":"‫"==b?"rtl":null)&&(a=a.slice(1));this.setDirectionMarker(b)}a||(a="");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)},getValue:function(){var a=CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this);if(this.bidi&&a){var b=this.getDirectionMarker();b&&(a=("ltr"==b?"‪":"‫")+a)}return a},setDirectionMarker:function(a){var b=this.getInputElement();a?b.setAttributes({dir:a,"data-cke-dir-marker":a}): +this.getDirectionMarker()&&b.removeAttributes(["dir","data-cke-dir-marker"])},getDirectionMarker:function(){return this.getInputElement().data("cke-dir-marker")},keyboardFocusable:!0},e,!0);CKEDITOR.ui.dialog.textarea.prototype=new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return this._.select.getElement()},add:function(a,b,g){var e=new CKEDITOR.dom.element("option",this.getDialog().getParentEditor().document), +f=this.getInputElement().$;e.$.text=a;e.$.value=void 0===b||null===b?a:b;void 0===g||null===g?CKEDITOR.env.ie?f.add(e.$):f.add(e.$,null):f.add(e.$,g);return this},remove:function(a){this.getInputElement().$.remove(a);return this},clear:function(){for(var a=this.getInputElement().$;0<a.length;)a.remove(0);return this},keyboardFocusable:!0},e,!0);CKEDITOR.ui.dialog.checkbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getInputElement:function(){return this._.checkbox.getElement()}, +setValue:function(a,b){this.getInputElement().$.checked=a;!b&&this.fire("change",{value:a})},getValue:function(){return this.getInputElement().$.checked},accessKeyUp:function(){this.setValue(!this.getValue())},eventProcessors:{onChange:function(c,b){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return a.onChange.apply(this,arguments);c.on("load",function(){var a=this._.checkbox.getElement();a.on("propertychange",function(c){c=c.data.$;"checked"==c.propertyName&&this.fire("change",{value:a.$.checked})}, +this)},this);this.on("change",b);return null}},keyboardFocusable:!0},e,!0);CKEDITOR.ui.dialog.radio.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setValue:function(a,b){for(var g=this._.children,e,f=0;f<g.length&&(e=g[f]);f++)e.getElement().$.checked=e.getValue()==a;!b&&this.fire("change",{value:a})},getValue:function(){for(var a=this._.children,b=0;b<a.length;b++)if(a[b].getElement().$.checked)return a[b].getValue();return null},accessKeyUp:function(){var a=this._.children,b; +for(b=0;b<a.length;b++)if(a[b].getElement().$.checked){a[b].getElement().focus();return}a[0].getElement().focus()},eventProcessors:{onChange:function(c,b){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return a.onChange.apply(this,arguments);c.on("load",function(){for(var a=this._.children,c=this,b=0;b<a.length;b++)a[b].getElement().on("propertychange",function(a){a=a.data.$;"checked"==a.propertyName&&this.$.checked&&c.fire("change",{value:this.getAttribute("value")})})},this);this.on("change",b);return null}}}, +e,!0);CKEDITOR.ui.dialog.file.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,e,{getInputElement:function(){var a=CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0<a.$.forms.length?new CKEDITOR.dom.element(a.$.forms[0].elements[0]):this.getElement()},submit:function(){this.getInputElement().getParent().$.submit();return this},getAction:function(){return this.getInputElement().getParent().$.action},registerEvents:function(a){var b=/^on([A-Z]\w+)/,g,e=function(a, +c,b,d){a.on("formLoaded",function(){a.getInputElement().on(b,d,a)})},f;for(f in a)if(g=f.match(b))this.eventProcessors[f]?this.eventProcessors[f].call(this,this._.dialog,a[f]):e(this,this._.dialog,g[1].toLowerCase(),a[f]);return this},reset:function(){function a(){g.$.open();var c="";e.size&&(c=e.size-(CKEDITOR.env.ie?7:0));var t=b.frameId+"_input";g.$.write(['\x3chtml dir\x3d"'+l+'" lang\x3d"'+m+'"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e', +'\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"'+l+'" lang\x3d"'+m+'" action\x3d"',CKEDITOR.tools.htmlEncode(e.action),'"\x3e\x3clabel id\x3d"',b.labelId,'" for\x3d"',t,'" style\x3d"display:none"\x3e',CKEDITOR.tools.htmlEncode(e.label),'\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"',t,'" aria-labelledby\x3d"',b.labelId,'" type\x3d"file" name\x3d"',CKEDITOR.tools.htmlEncode(e.id||"cke_upload"),'" size\x3d"',CKEDITOR.tools.htmlEncode(0<c?c:""),'" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e', +CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"","window.parent.CKEDITOR.tools.callFunction("+h+");","window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction("+k+")}","\x3c/script\x3e"].join(""));g.$.close();for(c=0;c<f.length;c++)f[c].enable()}var b=this._,g=CKEDITOR.document.getById(b.frameId).getFrameDocument(),e=b.definition,f=b.buttons,h=this.formLoadedNumber,k=this.formUnloadNumber,l=b.dialog._.editor.lang.dir,m=b.dialog._.editor.langCode;h||(h=this.formLoadedNumber= +CKEDITOR.tools.addFunction(function(){this.fire("formLoaded")},this),k=this.formUnloadNumber=CKEDITOR.tools.addFunction(function(){this.getInputElement().clearCustomData()},this),this.getDialog()._.editor.on("destroy",function(){CKEDITOR.tools.removeFunction(h);CKEDITOR.tools.removeFunction(k)}));CKEDITOR.env.gecko?setTimeout(a,500):a()},getValue:function(){return this.getInputElement().$.value||""},setInitValue:function(){this._.initValue=""},eventProcessors:{onChange:function(a,b){this._.domOnChangeRegistered|| +(this.on("formLoaded",function(){this.getInputElement().on("change",function(){this.fire("change",{value:this.getValue()})},this)},this),this._.domOnChangeRegistered=!0);this.on("change",b)}},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.fileButton.prototype=new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement("text",h);CKEDITOR.dialog.addUIElement("password",h);CKEDITOR.dialog.addUIElement("tel",h); +CKEDITOR.dialog.addUIElement("textarea",f);CKEDITOR.dialog.addUIElement("checkbox",f);CKEDITOR.dialog.addUIElement("radio",f);CKEDITOR.dialog.addUIElement("button",f);CKEDITOR.dialog.addUIElement("select",f);CKEDITOR.dialog.addUIElement("file",f);CKEDITOR.dialog.addUIElement("fileButton",f);CKEDITOR.dialog.addUIElement("html",f);CKEDITOR.dialog.addUIElement("fieldset",{build:function(a,b,g){for(var e=b.children,f,h=[],k=[],l=0;l<e.length&&(f=e[l]);l++){var m=[];h.push(m);k.push(CKEDITOR.dialog._.uiElementBuilders[f.type].build(a, +f,m))}return new CKEDITOR.ui.dialog[b.type](a,k,h,g,b)}})}}),CKEDITOR.DIALOG_RESIZE_NONE=0,CKEDITOR.DIALOG_RESIZE_WIDTH=1,CKEDITOR.DIALOG_RESIZE_HEIGHT=2,CKEDITOR.DIALOG_RESIZE_BOTH=3,CKEDITOR.DIALOG_STATE_IDLE=1,CKEDITOR.DIALOG_STATE_BUSY=2,function(){function b(a){a._.tabBarMode=!0;a._.tabs[a._.currentTabId][0].focus();a._.currentFocusIndex=-1}function h(){for(var a=this._.tabIdList.length,c=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,b=c-1;b>c-a;b--)if(this._.tabs[this._.tabIdList[b% +a]][0].$.offsetHeight)return this._.tabIdList[b%a];return null}function f(){for(var a=this._.tabIdList.length,c=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),b=c+1;b<c+a;b++)if(this._.tabs[this._.tabIdList[b%a]][0].$.offsetHeight)return this._.tabIdList[b%a];return null}function e(a,c){for(var b=a.$.getElementsByTagName("input"),d=0,g=b.length;d<g;d++){var e=new CKEDITOR.dom.element(b[d]);"text"==e.getAttribute("type").toLowerCase()&&(c?(e.setAttribute("value",e.getCustomData("fake_value")|| +""),e.removeCustomData("fake_value")):(e.setCustomData("fake_value",e.getAttribute("value")),e.setAttribute("value","")))}}function a(a,c){var b=this.getInputElement();b&&(a?b.removeAttribute("aria-invalid"):b.setAttribute("aria-invalid",!0));a||(this.select?this.select():this.focus());c&&alert(c);this.fire("validated",{valid:a,msg:c})}function k(){var a=this.getInputElement();a&&a.removeAttribute("aria-invalid")}function l(a){var c=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog", +M).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:"cke_editor_"+a.name.replace(/\./g,"\\.")+"_dialog",closeTitle:a.lang.common.close,hidpi:CKEDITOR.env.hidpi?"cke_hidpi":""})),b=c.getChild([0,0,0,0,0]),d=b.getChild(0),g=b.getChild(1);a.plugins.clipboard&&CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(b);!CKEDITOR.env.ie||CKEDITOR.env.quirks||CKEDITOR.env.edge||(a="javascript:void(function(){"+encodeURIComponent("document.open();("+ +CKEDITOR.tools.fixDomain+")();document.close();")+"}())",CKEDITOR.dom.element.createFromHtml('\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"'+a+'" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e').appendTo(b.getParent()));d.unselectable();g.unselectable();return{element:c,parts:{dialog:c.getChild(0),title:d,close:g,tabs:b.getChild(2),contents:b.getChild([3,0,0,0]),footer:b.getChild([3,0,1,0])}}}function m(a,c,b){this.element=c;this.focusIndex=b;this.tabIndex=0;this.isFocusable=function(){return!c.getAttribute("disabled")&& +c.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};c.on("keydown",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire("click")});c.on("focus",function(){this.fire("mouseover")});c.on("blur",function(){this.fire("mouseout")})}function c(a){function c(){a.layout()}var b=CKEDITOR.document.getWindow();b.on("resize",c);a.on("hide",function(){b.removeListener("resize",c)})}function d(a,c){this.dialog=a;for(var b=c.contents,d=0,e;e=b[d];d++)b[d]=e&&new g(a, +e);CKEDITOR.tools.extend(this,c)}function g(a,c){this._={dialog:a};CKEDITOR.tools.extend(this,c)}function n(a){function c(b){var n=a.getSize(),k=a.parts.dialog.getParent().getClientSize(),l=b.data.$.screenX,m=b.data.$.screenY,q=l-d.x,t=m-d.y;d={x:l,y:m};g.x+=q;g.y+=t;l=g.x+h[3]<f?-h[3]:g.x-h[1]>k.width-n.width-f?k.width-n.width+("rtl"==e.lang.dir?0:h[1]):g.x;n=g.y+h[0]<f?-h[0]:g.y-h[2]>k.height-n.height-f?k.height-n.height+h[2]:g.y;l=Math.floor(l);n=Math.floor(n);a.move(l,n,1);b.data.preventDefault()} +function b(){CKEDITOR.document.removeListener("mousemove",c);CKEDITOR.document.removeListener("mouseup",b);if(CKEDITOR.env.ie6Compat){var a=E.getChild(0).getFrameDocument();a.removeListener("mousemove",c);a.removeListener("mouseup",b)}}var d=null,g=null,e=a.getParentEditor(),f=e.config.dialog_magnetDistance,h=CKEDITOR.skin.margins||[0,0,0,0];"undefined"==typeof f&&(f=20);a.parts.title.on("mousedown",function(e){if(!a._.moved){var f=a._.element;f.getFirst().setStyle("position","absolute");f.removeStyle("display"); +a._.moved=!0;a.layout()}d={x:e.data.$.screenX,y:e.data.$.screenY};CKEDITOR.document.on("mousemove",c);CKEDITOR.document.on("mouseup",b);g=a.getPosition();CKEDITOR.env.ie6Compat&&(f=E.getChild(0).getFrameDocument(),f.on("mousemove",c),f.on("mouseup",b));e.data.preventDefault()},a)}function y(a){function c(b){var m="rtl"==e.lang.dir,q=l.width,t=l.height,r=q+(b.data.$.screenX-k.x)*(m?-1:1)*(a._.moved?1:2),Q=t+(b.data.$.screenY-k.y)*(a._.moved?1:2),u=a._.element.getFirst(),u=m&&parseInt(u.getComputedStyle("right"), +10),w=a.getPosition();w.x=w.x||0;w.y=w.y||0;w.y+Q>n.height&&(Q=n.height-w.y);(m?u:w.x)+r>n.width&&(r=n.width-(m?u:w.x));Q=Math.floor(Q);r=Math.floor(r);if(g==CKEDITOR.DIALOG_RESIZE_WIDTH||g==CKEDITOR.DIALOG_RESIZE_BOTH)q=Math.max(d.minWidth||0,r-f);if(g==CKEDITOR.DIALOG_RESIZE_HEIGHT||g==CKEDITOR.DIALOG_RESIZE_BOTH)t=Math.max(d.minHeight||0,Q-h);a.resize(q,t);a._.moved&&v(a,a._.position.x,a._.position.y);a._.moved||a.layout();b.data.preventDefault()}function b(){CKEDITOR.document.removeListener("mouseup", +b);CKEDITOR.document.removeListener("mousemove",c);m&&(m.remove(),m=null);if(CKEDITOR.env.ie6Compat){var a=E.getChild(0).getFrameDocument();a.removeListener("mouseup",b);a.removeListener("mousemove",c)}}var d=a.definition,g=d.resizable;if(g!=CKEDITOR.DIALOG_RESIZE_NONE){var e=a.getParentEditor(),f,h,n,k,l,m,q=CKEDITOR.tools.addFunction(function(d){function g(a){return a.isVisible()}l=a.getSize();var e=a.parts.contents,q=e.$.getElementsByTagName("iframe").length,t=!(CKEDITOR.env.gecko||CKEDITOR.env.ie&& +CKEDITOR.env.quirks);q&&(m=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%; left:0; top:0;"\x3e\x3c/div\x3e'),e.append(m));h=l.height-a.parts.contents.getFirst(g).getSize("height",t);f=l.width-a.parts.contents.getFirst(g).getSize("width",1);k={x:d.screenX,y:d.screenY};n=CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on("mousemove",c);CKEDITOR.document.on("mouseup",b);CKEDITOR.env.ie6Compat&& +(e=E.getChild(0).getFrameDocument(),e.on("mousemove",c),e.on("mouseup",b));d.preventDefault&&d.preventDefault()});a.on("load",function(){var c="";g==CKEDITOR.DIALOG_RESIZE_WIDTH?c=" cke_resizer_horizontal":g==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(c=" cke_resizer_vertical");c=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer'+c+" cke_resizer_"+e.lang.dir+'" title\x3d"'+CKEDITOR.tools.htmlEncode(e.lang.common.resize)+'" onmousedown\x3d"CKEDITOR.tools.callFunction('+q+', event )"\x3e'+("ltr"== +e.lang.dir?"â—¢":"â—£")+"\x3c/div\x3e");a.parts.footer.append(c,1)});e.on("destroy",function(){CKEDITOR.tools.removeFunction(q)})}}function v(a,c,b){var d=a.parts.dialog.getParent().getClientSize(),g=a.getSize(),e=a._.viewportRatio,f=Math.max(d.width-g.width,0),d=Math.max(d.height-g.height,0);e.width=f?c/f:e.width;e.height=d?b/d:e.height;a._.viewportRatio=e}function p(a){a.data.preventDefault(1)}function q(a){var c=a.config,b=CKEDITOR.skinName||a.config.skin,d=c.dialog_backgroundCoverColor||("moono-lisa"== +b?"black":"white"),b=c.dialog_backgroundCoverOpacity,g=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(d,b,g),e=L[c];CKEDITOR.document.getBody().addClass("cke_dialog_open");e?e.show():(g=['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ',CKEDITOR.env.ie6Compat?"absolute":"fixed","; z-index: ",g,"; top: 0px; left: 0px; ","; width: 100%; height: 100%;",CKEDITOR.env.ie6Compat?"":"background-color: "+d,'" class\x3d"cke_dialog_background_cover"\x3e'],CKEDITOR.env.ie6Compat&&(d="\x3chtml\x3e\x3cbody style\x3d\\'background-color:"+ +d+";\\'\x3e\x3c/body\x3e\x3c/html\x3e",g.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'),g.push("void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.write( '"+d+"' );document.close();")+"})())"),g.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')),g.push("\x3c/div\x3e"),e=CKEDITOR.dom.element.createFromHtml(g.join("")), +e.setOpacity(void 0!==b?b:.5),e.on("keydown",p),e.on("keypress",p),e.on("keyup",p),e.appendTo(CKEDITOR.document.getBody()),L[c]=e);a.focusManager.add(e);E=e;CKEDITOR.env.mac&&CKEDITOR.env.webkit||e.focus()}function r(a){CKEDITOR.document.getBody().removeClass("cke_dialog_open");E&&(a.focusManager.remove(E),E.hide())}function x(a){var c=a.data.$.ctrlKey||a.data.$.metaKey,b=a.data.$.altKey,d=a.data.$.shiftKey,g=String.fromCharCode(a.data.$.keyCode);(c=R[(c?"CTRL+":"")+(b?"ALT+":"")+(d?"SHIFT+":"")+ +g])&&c.length&&(c=c[c.length-1],c.keydown&&c.keydown.call(c.uiElement,c.dialog,c.key),a.data.preventDefault())}function t(a){var c=a.data.$.ctrlKey||a.data.$.metaKey,b=a.data.$.altKey,d=a.data.$.shiftKey,g=String.fromCharCode(a.data.$.keyCode);(c=R[(c?"CTRL+":"")+(b?"ALT+":"")+(d?"SHIFT+":"")+g])&&c.length&&(c=c[c.length-1],c.keyup&&(c.keyup.call(c.uiElement,c.dialog,c.key),a.data.preventDefault()))}function z(a,c,b,d,g){(R[b]||(R[b]=[])).push({uiElement:a,dialog:c,key:b,keyup:g||a.accessKeyUp,keydown:d|| +a.accessKeyDown})}function u(a){for(var c in R){for(var b=R[c],d=b.length-1;0<=d;d--)b[d].dialog!=a&&b[d].uiElement!=a||b.splice(d,1);0===b.length&&delete R[c]}}function w(a,c){a._.accessKeyMap[c]&&a.selectPage(a._.accessKeyMap[c])}function B(){}var C=CKEDITOR.tools.cssLength,A,E,F=!1,K=!CKEDITOR.env.ie||CKEDITOR.env.edge,M='\x3cdiv class\x3d"cke_reset_all cke_dialog_container {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" style\x3d"'+(K?"display:flex":"")+'" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog '+ +CKEDITOR.env.cssClass+' cke_{langDir}" style\x3d"'+(K?"margin:auto":"position:absolute")+'" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e'; +CKEDITOR.dialog=function(c,g){function e(){var a=E._.focusList;a.sort(function(a,c){return a.tabIndex!=c.tabIndex?c.tabIndex-a.tabIndex:a.focusIndex-c.focusIndex});for(var c=a.length,b=0;b<c;b++)a[b].focusIndex=b}function m(a){var c=E._.focusList;a=a||0;if(!(1>c.length)){var b=E._.currentFocusIndex;E._.tabBarMode&&0>a&&(b=0);try{c[b].getInputElement().$.blur()}catch(d){}var g=b,e=1<E._.pageCount;do{g+=a;if(e&&!E._.tabBarMode&&(g==c.length||-1==g)){E._.tabBarMode=!0;E._.tabs[E._.currentTabId][0].focus(); +E._.currentFocusIndex=-1;return}g=(g+c.length)%c.length;if(g==b)break}while(a&&!c[g].isFocusable());c[g].focus();"text"==c[g].type&&c[g].select()}}function q(a){if(E==CKEDITOR.dialog._.currentTop){var d=a.data.getKeystroke(),g="rtl"==c.lang.dir,e=[37,38,39,40];z=v=0;if(9==d||d==CKEDITOR.SHIFT+9)m(d==CKEDITOR.SHIFT+9?-1:1),z=1;else if(d==CKEDITOR.ALT+121&&!E._.tabBarMode&&1<E.getPageCount())b(E),z=1;else if(-1!=CKEDITOR.tools.indexOf(e,d)&&E._.tabBarMode)d=-1!=CKEDITOR.tools.indexOf([g?39:37,38],d)? +h.call(E):f.call(E),E.selectPage(d),E._.tabs[d][0].focus(),z=1;else if(13!=d&&32!=d||!E._.tabBarMode)if(13==d)d=a.data.getTarget(),d.is("a","button","select","textarea")||d.is("input")&&"button"==d.$.type||((d=this.getButton("ok"))&&CKEDITOR.tools.setTimeout(d.click,0,d),z=1),v=1;else if(27==d)(d=this.getButton("cancel"))?CKEDITOR.tools.setTimeout(d.click,0,d):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),v=1;else return;else this.selectPage(this._.currentTabId),this._.tabBarMode=!1,this._.currentFocusIndex= +-1,m(1),z=1;t(a)}}function t(a){z?a.data.preventDefault(1):v&&a.data.stopPropagation()}var r=CKEDITOR.dialog._.dialogDefinitions[g],u=CKEDITOR.tools.clone(A),w=c.config.dialog_buttonsOrder||"OS",x=c.lang.dir,p={},z,v;("OS"==w&&CKEDITOR.env.mac||"rtl"==w&&"ltr"==x||"ltr"==w&&"rtl"==x)&&u.buttons.reverse();r=CKEDITOR.tools.extend(r(c),u);r=CKEDITOR.tools.clone(r);r=new d(this,r);u=l(c);this._={editor:c,element:u.element,name:g,model:null,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{}, +buttons:{},accessKeyMap:{},viewportRatio:{width:.5,height:.5},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],currentFocusIndex:0,hasFocus:!1};this.parts=u.parts;CKEDITOR.tools.setTimeout(function(){c.fire("ariaWidget",this.parts.contents)},0,this);u={top:0,visibility:"hidden"};CKEDITOR.env.ie6Compat&&(u.position="absolute");u["rtl"==x?"right":"left"]=0;this.parts.dialog.setStyles(u);CKEDITOR.event.call(this);this.definition=r=CKEDITOR.fire("dialogDefinition", +{name:g,definition:r,dialog:this},c).definition;if(!("removeDialogTabs"in c._)&&c.config.removeDialogTabs){u=c.config.removeDialogTabs.split(";");for(x=0;x<u.length;x++)if(w=u[x].split(":"),2==w.length){var B=w[0];p[B]||(p[B]=[]);p[B].push(w[1])}c._.removeDialogTabs=p}if(c._.removeDialogTabs&&(p=c._.removeDialogTabs[g]))for(x=0;x<p.length;x++)r.removeContents(p[x]);if(r.onLoad)this.on("load",r.onLoad);if(r.onShow)this.on("show",r.onShow);if(r.onHide)this.on("hide",r.onHide);if(r.onOk)this.on("ok", +function(a){c.fire("saveSnapshot");setTimeout(function(){c.fire("saveSnapshot")},0);!1===r.onOk.call(this,a)&&(a.data.hide=!1)});this.state=CKEDITOR.DIALOG_STATE_IDLE;if(r.onCancel)this.on("cancel",function(a){!1===r.onCancel.call(this,a)&&(a.data.hide=!1)});var E=this,C=function(a){var c=E._.contents,b=!1,d;for(d in c)for(var g in c[d])if(b=a.call(this,c[d][g]))return};this.on("ok",function(c){C(function(b){if(b.validate){var d=b.validate(this),g="string"==typeof d||!1===d;g&&(c.data.hide=!1,c.stop()); +a.call(b,!g,"string"==typeof d?d:void 0);return g}})},this,null,0);this.on("cancel",function(a){C(function(b){if(b.isChanged())return c.config.dialog_noConfirmCancel||confirm(c.lang.common.confirmCancel)||(a.data.hide=!1),!0})},this,null,0);this.parts.close.on("click",function(a){!1!==this.fire("cancel",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=m;var K=this._.element;c.focusManager.add(K,1);this.on("show",function(){K.on("keydown",q,this);if(CKEDITOR.env.gecko)K.on("keypress", +t,this)});this.on("hide",function(){K.removeListener("keydown",q);CKEDITOR.env.gecko&&K.removeListener("keypress",t);C(function(a){k.apply(a)})});this.on("iframeAdded",function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on("keydown",q,this,null,0)});this.on("show",function(){e();var a=1<E._.pageCount;c.config.dialog_startupFocusTab&&a?(E._.tabBarMode=!0,E._.tabs[E._.currentTabId][0].focus(),E._.currentFocusIndex=-1):this._.hasFocus||(this._.currentFocusIndex=a?-1:this._.focusList.length- +1,r.onFocus?(a=r.onFocus.call(this))&&a.focus():m(1))},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on("load",function(){var a=this.getElement(),c=a.getFirst();c.remove();c.appendTo(a)},this);n(this);y(this);(new CKEDITOR.dom.text(r.title,CKEDITOR.document)).appendTo(this.parts.title);for(x=0;x<r.contents.length;x++)(p=r.contents[x])&&this.addPage(p);this.parts.tabs.on("click",function(a){var c=a.data.getTarget();c.hasClass("cke_dialog_tab")&&(c=c.$.id,this.selectPage(c.substring(4,c.lastIndexOf("_"))), +b(this),a.data.preventDefault())},this);x=[];p=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:"hbox",className:"cke_dialog_footer_buttons",widths:[],children:r.buttons},x).getChild();this.parts.footer.setHtml(x.join(""));for(x=0;x<p.length;x++)this._.buttons[p[x].id]=p[x]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(a,c){if(!this._.contentSize||this._.contentSize.width!=a||this._.contentSize.height!=c){CKEDITOR.dialog.fire("resize", +{dialog:this,width:a,height:c},this._.editor);this.fire("resize",{width:a,height:c},this._.editor);this.parts.contents.setStyles({width:a+"px",height:c+"px"});if("rtl"==this._.editor.lang.dir&&this._.position){var b=this.parts.dialog.getParent().getClientSize().width;this._.position.x=b-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle("right"),10)}this._.contentSize={width:a,height:c}}},getSize:function(){var a=this._.element.getFirst();return{width:a.$.offsetWidth||0,height:a.$.offsetHeight|| +0}},move:function(a,c,b){var d=this._.element.getFirst(),g="rtl"==this._.editor.lang.dir;CKEDITOR.env.ie&&d.setStyle("zoom","100%");var e=this.parts.dialog.getParent().getClientSize(),f=this.getSize(),h=this._.viewportRatio,n=Math.max(e.width-f.width,0),e=Math.max(e.height-f.height,0);this._.position&&this._.position.x==a&&this._.position.y==c?(a=Math.floor(n*h.width),c=Math.floor(e*h.height)):v(this,a,c);this._.position={x:a,y:c};g&&(a=n-a);c={top:(0<c?c:0)+"px"};c[g?"right":"left"]=(0<a?a:0)+"px"; +d.setStyles(c);b&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var a=this._.element,b=this.definition,d=CKEDITOR.document.getBody(),g=this._.editor.config.baseFloatZIndex;a.getParent()&&a.getParent().equals(d)?a.setStyle("display",K?"flex":"block"):a.appendTo(d);this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight);this.reset();null===this._.currentTabId&& +this.selectPage(this.definition.contents[0].id);null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=g);this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10);this.getElement().setStyle("z-index",CKEDITOR.dialog._.currentZIndex);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,q(this._.editor)):CKEDITOR.dialog._.currentTop!==this&&(this._.parentDialog=CKEDITOR.dialog._.currentTop,d=this._.parentDialog.getElement().getFirst(), +d.$.style.zIndex-=Math.floor(g/2),this._.parentDialog.getElement().setStyle("z-index",d.$.style.zIndex),CKEDITOR.dialog._.currentTop=this);a.on("keydown",x);a.on("keyup",t);this._.hasFocus=!1;for(var e in b.contents)if(b.contents[e]){var a=b.contents[e],g=this._.tabs[a.id],d=a.requiredContent,f=0;if(g){for(var h in this._.contents[a.id]){var n=this._.contents[a.id][h];"hbox"!=n.type&&"vbox"!=n.type&&n.getInputElement()&&(n.requiredContent&&!this._.editor.activeFilter.check(n.requiredContent)?n.disable(): (n.enable(),f++))}!f||d&&!this._.editor.activeFilter.check(d)?g[0].addClass("cke_dialog_tab_disabled"):g[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout();c(this);this.parts.dialog.setStyle("visibility","");this.fireOnce("load",{});CKEDITOR.ui.fire("ready",this);this.fire("show",{});this._.editor.fire("dialogShow",this);this._.parentDialog||this._.editor.focusManager.lock();this.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a= -this.parts.dialog;if(this._.moved||!K){var b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(),d;this._.moved&&this._.position?(d=this._.position.x,b=this._.position.y):(d=(c.width-b.width)/2,b=(c.height-b.height)/2);CKEDITOR.env.ie6Compat||(a.setStyle("position","absolute"),a.removeStyle("margin"));d=Math.floor(d);b=Math.floor(b);this.move(d,b)}},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,this._.contents[b][c]);return this},reset:function(){var a= -function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})},commitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{});this._.editor.fire("dialogHide",this);this.selectPage(this._.tabIdList[0]); -var a=this._.element;a.setStyle("display","none");this.parts.dialog.setStyle("visibility","hidden");for(q(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();this._.parentDialog.getElement().removeStyle("z-index");b.setStyle("z-index",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else r(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-= -10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener("keydown",x);a.removeListener("keyup",u);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock();CKEDITOR.env.iOS&&c.window.focus()},0)}delete this._.parentDialog;this.foreach(function(a){a.resetInitValue&&a.resetInitValue()});this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(a){if(!a.requiredContent||this._.editor.filter.check(a.requiredContent)){for(var b=[],c=a.label?' title\x3d"'+CKEDITOR.tools.htmlEncode(a.label)+ -'"':"",d=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||"width: 100%;"},b),g=this._.contents[a.id]={},e=d.getChild(),f=0;d=e.shift();)d.notAllowed||"hbox"==d.type||"vbox"==d.type||f++,g[d.id]=d,"function"==typeof d.getChild&&e.push.apply(e,d.getChild());f||(a.hidden=!0);b=CKEDITOR.dom.element.createFromHtml(b.join(""));b.setAttribute("role","tabpanel");b.setStyle("min-height", -"100%");d=CKEDITOR.env;g="cke_"+a.id+"_"+CKEDITOR.tools.getNextNumber();c=CKEDITOR.dom.element.createFromHtml(['\x3ca class\x3d"cke_dialog_tab"',0<this._.pageCount?" cke_last":"cke_first",c,a.hidden?' style\x3d"display:none"':"",' id\x3d"',g,'"',d.gecko&&!d.hc?"":' href\x3d"javascript:void(0)"',' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e',a.label,"\x3c/a\x3e"].join(""));b.setAttribute("aria-labelledby",g);this._.tabs[a.id]=[c,b];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++; -this._.lastTab=c;this.updateStyle();b.setAttribute("name",a.id);b.appendTo(this.parts.contents);c.unselectable();this.parts.tabs.append(c);a.accessKey&&(z(this,this,"CTRL+"+a.accessKey,B,v),this._.accessKeyMap["CTRL+"+a.accessKey]=a.id)}},selectPage:function(a){if(this._.currentTabId!=a&&!this._.tabs[a][0].hasClass("cke_dialog_tab_disabled")&&!1!==this.fire("selectPage",{page:a,currentPage:this._.currentTabId})){for(var b in this._.tabs){var c=this._.tabs[b][0],d=this._.tabs[b][1];b!=a&&(c.removeClass("cke_dialog_tab_selected"), -c.removeAttribute("aria-selected"),d.hide());d.setAttribute("aria-hidden",b!=a)}var g=this._.tabs[a];g[0].addClass("cke_dialog_tab_selected");g[0].setAttribute("aria-selected",!0);CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(e(g[1]),g[1].show(),setTimeout(function(){e(g[1],1)},0)):g[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(a){var b= -this._.tabs[a]&&this._.tabs[a][0];b&&1!=this._.pageCount&&b.isVisible()&&(a==this._.currentTabId&&this.selectPage(h.call(this)),b.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=this._.tabs[a]&&this._.tabs[a][0])a.show(),this._.pageCount++,this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(a,b){var c=this._.contents[a];return c&&c[b]},getValueOf:function(a,b){return this.getContentElement(a,b).getValue()}, -setValueOf:function(a,b,c){return this.getContentElement(a,b).setValue(c)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},enableButton:function(a){return this._.buttons[a].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a, -b){if("undefined"==typeof b)b=this._.focusList.length,this._.focusList.push(new l(this,a,b));else{this._.focusList.splice(b,0,new l(this,a,b));for(var c=b+1;c<this._.focusList.length;c++)this._.focusList[c].focusIndex++}},setState:function(a){if(this.state!=a){this.state=a;if(a==CKEDITOR.DIALOG_STATE_BUSY){if(!this.parts.spinner){var b=this.getParentEditor().lang.dir,c={attributes:{"class":"cke_dialog_spinner"},styles:{"float":"rtl"==b?"right":"left"}};c.styles["margin-"+("rtl"==b?"left":"right")]= -"8px";this.parts.spinner=CKEDITOR.document.createElement("div",c);this.parts.spinner.setHtml("\x26#8987;");this.parts.spinner.appendTo(this.parts.title,1)}this.parts.spinner.show();this.getButton("ok").disable()}else a==CKEDITOR.DIALOG_STATE_IDLE&&(this.parts.spinner&&this.parts.spinner.hide(),this.getButton("ok").enable());this.fire("state",a)}},getModel:function(a){return this._.model?this._.model:this.definition.getModel?this.definition.getModel(a):null},setModel:function(a){this._.model=a},getMode:function(a){if(this.definition.getMode)return this.definition.getMode(a); -a=this.getModel(a);return!a||a instanceof CKEDITOR.dom.element&&!a.getParent()?CKEDITOR.dialog.CREATION_MODE:CKEDITOR.dialog.EDITING_MODE}};CKEDITOR.tools.extend(CKEDITOR.dialog,{CREATION_MODE:0,EDITING_MODE:1,add:function(a,b){this._.dialogDefinitions[a]&&"function"!=typeof b||(this._.dialogDefinitions[a]=b)},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop},isTabEnabled:function(a,b,c){a=a.config.removeDialogTabs;return!(a&&a.match(new RegExp("(?:^|;)"+ -b+":"+c+"(?:$|;)","i")))},okButton:function(){var a=function(a,b){b=b||{};return CKEDITOR.tools.extend({id:"ok",type:"button",label:a.lang.common.ok,"class":"cke_dialog_ui_button_ok",onClick:function(a){a=a.data.dialog;!1!==a.fire("ok",{hide:!0}).hide&&a.hide()}},b,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:"button"},!0)};return a}(),cancelButton:function(){var a=function(a,b){b=b||{};return CKEDITOR.tools.extend({id:"cancel",type:"button", -label:a.lang.common.cancel,"class":"cke_dialog_ui_button_cancel",onClick:function(a){a=a.data.dialog;!1!==a.fire("cancel",{hide:!0}).hide&&a.hide()}},b,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:"button"},!0)};return a}(),addUIElement:function(a,b){this._.uiElementBuilders[a]=b}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype); -A={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]};var C=function(a,b,c){for(var d=0,g;g=a[d];d++)if(g.id==b||c&&g[c]&&(g=C(g[c],b,c)))return g;return null},O=function(a,b,c,d,g){if(c){for(var e=0,f;f=a[e];e++){if(f.id==c)return a.splice(e,0,b),b;if(d&&f[d]&&(f=O(f[d],b,c,d,!0)))return f}if(g)return null}a.push(b);return b},I=function(a,b,c){for(var d=0,g;g=a[d];d++){if(g.id==b)return a.splice(d,1);if(c&&g[c]&&(g=I(g[c], -b,c)))return g}return null};d.prototype={getContents:function(a){return C(this.contents,a)},getButton:function(a){return C(this.buttons,a)},addContents:function(a,b){return O(this.contents,a,b)},addButton:function(a,b){return O(this.buttons,a,b)},removeContents:function(a){I(this.contents,a)},removeButton:function(a){I(this.buttons,a)}};g.prototype={get:function(a){return C(this.elements,a,"children")},add:function(a,b){return O(this.elements,a,b,"children")},remove:function(a){I(this.elements,a, -"children")}};var M={},Q={};(function(){CKEDITOR.ui.dialog={uiElement:function(a,b,c,d,g,e,f){if(!(4>arguments.length)){var h=(d.call?d(b):d)||"div",n=["\x3c",h," "],k=(g&&g.call?g(b):g)||{},l=(e&&e.call?e(b):e)||{},m=(f&&f.call?f.call(this,a,b):f)||"",r=this.domId=l.id||CKEDITOR.tools.getNextId()+"_uiElement";b.requiredContent&&!a.getParentEditor().filter.check(b.requiredContent)&&(k.display="none",this.notAllowed=!0);l.id=r;var q={};b.type&&(q["cke_dialog_ui_"+b.type]=1);b.className&&(q[b.className]= -1);b.disabled&&(q.cke_disabled=1);for(var t=l["class"]&&l["class"].split?l["class"].split(" "):[],r=0;r<t.length;r++)t[r]&&(q[t[r]]=1);t=[];for(r in q)t.push(r);l["class"]=t.join(" ");b.title&&(l.title=b.title);q=(b.style||"").split(";");b.align&&(t=b.align,k["margin-left"]="left"==t?0:"auto",k["margin-right"]="right"==t?0:"auto");for(r in k)q.push(r+":"+k[r]);b.hidden&&q.push("display:none");for(r=q.length-1;0<=r;r--)""===q[r]&&q.splice(r,1);0<q.length&&(l.style=(l.style?l.style+"; ":"")+q.join("; ")); -for(r in l)n.push(r+'\x3d"'+CKEDITOR.tools.htmlEncode(l[r])+'" ');n.push("\x3e",m,"\x3c/",h,"\x3e");c.push(n.join(""));(this._||(this._={})).dialog=a;"boolean"==typeof b.isChanged&&(this.isChanged=function(){return b.isChanged});"function"==typeof b.isChanged&&(this.isChanged=b.isChanged);"function"==typeof b.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(c){a.call(this,b.setValue.call(this,c))}}));"function"==typeof b.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue, -function(a){return function(){return b.getValue.call(this,a.call(this))}}));CKEDITOR.event.implementOn(this);this.registerEvents(b);this.accessKeyUp&&this.accessKeyDown&&b.accessKey&&z(this,a,"CTRL+"+b.accessKey);var u=this;a.on("load",function(){var b=u.getInputElement();if(b){var c=u.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&8>CKEDITOR.env.version?"cke_dialog_ui_focused":"";b.on("focus",function(){a._.tabBarMode=!1;a._.hasFocus=!0;u.fire("focus");c&&this.addClass(c)});b.on("blur",function(){u.fire("blur"); -c&&this.removeClass(c)})}});CKEDITOR.tools.extend(this,b);this.keyboardFocusable&&(this.tabIndex=b.tabIndex||0,this.focusIndex=a._.focusList.push(this)-1,this.on("focus",function(){a._.currentFocusIndex=u.focusIndex}))}},hbox:function(a,b,c,d,g){if(!(4>arguments.length)){this._||(this._={});var e=this._.children=b,f=g&&g.widths||null,h=g&&g.height||null,n,k={role:"presentation"};g&&g.align&&(k.align=g.align);CKEDITOR.ui.dialog.uiElement.call(this,a,g||{type:"hbox"},d,"table",{},k,function(){var a= -['\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e'];for(n=0;n<c.length;n++){var b="cke_dialog_ui_hbox_child",d=[];0===n&&(b="cke_dialog_ui_hbox_first");n==c.length-1&&(b="cke_dialog_ui_hbox_last");a.push('\x3ctd class\x3d"',b,'" role\x3d"presentation" ');f?f[n]&&d.push("width:"+D(f[n])):d.push("width:"+Math.floor(100/c.length)+"%");h&&d.push("height:"+D(h));g&&void 0!==g.padding&&d.push("padding:"+D(g.padding));CKEDITOR.env.ie&&CKEDITOR.env.quirks&&e[n].align&&d.push("text-align:"+e[n].align); -0<d.length&&a.push('style\x3d"'+d.join("; ")+'" ');a.push("\x3e",c[n],"\x3c/td\x3e")}a.push("\x3c/tr\x3e\x3c/tbody\x3e");return a.join("")})}},vbox:function(a,b,c,d,g){if(!(3>arguments.length)){this._||(this._={});var e=this._.children=b,f=g&&g.width||null,h=g&&g.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,g||{type:"vbox"},d,"div",null,{role:"presentation"},function(){var b=['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" '];b.push('style\x3d"');g&&g.expand&&b.push("height:100%;"); -b.push("width:"+D(f||"100%"),";");CKEDITOR.env.webkit&&b.push("float:none;");b.push('"');b.push('align\x3d"',CKEDITOR.tools.htmlEncode(g&&g.align||("ltr"==a.getParentEditor().lang.dir?"left":"right")),'" ');b.push("\x3e\x3ctbody\x3e");for(var d=0;d<c.length;d++){var n=[];b.push('\x3ctr\x3e\x3ctd role\x3d"presentation" ');f&&n.push("width:"+D(f||"100%"));h?n.push("height:"+D(h[d])):g&&g.expand&&n.push("height:"+Math.floor(100/c.length)+"%");g&&void 0!==g.padding&&n.push("padding:"+D(g.padding));CKEDITOR.env.ie&& -CKEDITOR.env.quirks&&e[d].align&&n.push("text-align:"+e[d].align);0<n.length&&b.push('style\x3d"',n.join("; "),'" ');b.push(' class\x3d"cke_dialog_ui_vbox_child"\x3e',c[d],"\x3c/td\x3e\x3c/tr\x3e")}b.push("\x3c/tbody\x3e\x3c/table\x3e");return b.join("")})}}}})();CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(a,b){this.getInputElement().setValue(a); -!b&&this.fire("change",{value:a});return this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var a=this.getInputElement();(a=a.getParent())&&-1==a.$.className.search("cke_dialog_page_contents"););if(!a)return this;a=a.getAttribute("name");this._.dialog._.currentTabId!=a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();return this},registerEvents:function(a){var b= -/^on([A-Z]\w+)/,c,d=function(a,b,c,d){b.on("load",function(){a.getInputElement().on(c,d,a)})},g;for(g in a)if(c=g.match(b))this.eventProcessors[g]?this.eventProcessors[g].call(this,this._.dialog,a[g]):d(this,this._.dialog,c[1].toLowerCase(),a[g]);return this},eventProcessors:{onLoad:function(a,b){a.on("load",b,this)},onShow:function(a,b){a.on("show",b,this)},onHide:function(a,b){a.on("hide",b,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var a=this.getElement(); -this.getInputElement().setAttribute("disabled","true");a.addClass("cke_disabled")},enable:function(){var a=this.getElement();this.getInputElement().removeAttribute("disabled");a.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return this.isEnabled()&&this.isVisible()?!0:!1}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement, -{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2>a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,b,c){for(var d=b.children,g,e=[],f=[],h=0;h<d.length&&(g=d[h]);h++){var n=[];e.push(n);f.push(CKEDITOR.dialog._.uiElementBuilders[g.type].build(a,g,n))}return new CKEDITOR.ui.dialog[b.type](a, -f,e,c,b)}};CKEDITOR.dialog.addUIElement("hbox",a);CKEDITOR.dialog.addUIElement("vbox",a)})();CKEDITOR.dialogCommand=function(a,b){this.dialogName=a;CKEDITOR.tools.extend(this,b,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){var b=this.tabId;a.openDialog(this.dialogName,function(a){b&&a.selectPage(b)})},canUndo:!1,editorFocus:1};(function(){var a=/^([a]|[^a])+$/,b=/^\d*$/,c=/^\d*(?:\.\d+)?$/,d=/^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,g=/^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i, -e=/^(--|-?([a-zA-Z_]|\\))(\\|[a-zA-Z0-9-_])*\s*?:\s*?[^:;]+$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a=arguments;return function(){var b=this&&this.getValue?this.getValue():a[0],c,d=CKEDITOR.VALIDATE_AND,g=[],e;for(e=0;e<a.length;e++)if("function"==typeof a[e])g.push(a[e]);else break;e<a.length&&"string"==typeof a[e]&&(c=a[e],e++);e<a.length&&"number"==typeof a[e]&&(d=a[e]);var f=d==CKEDITOR.VALIDATE_AND?!0:!1;for(e=0;e<g.length;e++)f=d== -CKEDITOR.VALIDATE_AND?f&&g[e](b):f||g[e](b);return f?!0:c}},regex:function(a,b){return function(c){c=this&&this.getValue?this.getValue():c;return a.test(c)?!0:b}},notEmpty:function(b){return this.regex(a,b)},integer:function(a){return this.regex(b,a)},number:function(a){return this.regex(c,a)},cssLength:function(a){return this.functions(function(a){return g.test(CKEDITOR.tools.trim(a))},a)},htmlLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){a= -CKEDITOR.tools.trim(a).split(";");""===a[a.length-1]&&a.pop();return CKEDITOR.tools.array.every(a,function(a){return e.test(CKEDITOR.tools.trim(a))})},a)},equals:function(a,b){return this.functions(function(b){return b==a},b)},notEqual:function(a,b){return this.functions(function(b){return b!=a},b)}};CKEDITOR.on("instanceDestroyed",function(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var b;b=CKEDITOR.dialog._.currentTop;)b.hide();for(var c in M)M[c].remove();M={}}a=a.editor._.storedDialogs; -for(var d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,b,c){var d=null,g=CKEDITOR.dialog._.dialogDefinitions[a];null===CKEDITOR.dialog._.currentTop&&t(this);if("function"==typeof g)g=this._.storedDialogs||(this._.storedDialogs={}),d=g[a]||(g[a]=new CKEDITOR.dialog(this,a)),d.setModel(c),b&&b.call(d,d),d.show();else{if("failed"==g)throw r(this),Error('[CKEDITOR.dialog.openDialog] Dialog "'+a+'" failed when loading definition.');"string"==typeof g&& -CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(g),function(){"function"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]="failed");this.openDialog(a,b,c)},this,0,1)}CKEDITOR.skin.loadPart("dialog");if(d)d.once("hide",function(){d.setModel(null)},null,null,999);return d}});CKEDITOR.plugins.add("dialog",{requires:"dialogui",init:function(a){F||(CKEDITOR.document.appendStyleSheet(this.path+"styles/dialog.css"),F=!0);a.on("doubleclick",function(b){b.data.dialog&&a.openDialog(b.data.dialog)}, -null,null,999)}})}(),function(){CKEDITOR.plugins.add("a11yhelp",{requires:"dialog",availableLangs:{af:1,ar:1,az:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,en:1,"en-au":1,"en-gb":1,eo:1,es:1,"es-mx":1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,"fr-ca":1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,"pt-br":1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,"sr-latn":1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,"zh-cn":1},init:function(b){var h=this;b.addCommand("a11yHelp", -{exec:function(){var f=b.langCode,f=h.availableLangs[f]?f:h.availableLangs[f.replace(/-.*/,"")]?f.replace(/-.*/,""):"en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(h.path+"dialogs/lang/"+f+".js"),function(){b.lang.a11yhelp=h.langEntries[f];b.openDialog("a11yHelp")})},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:!1});b.setKeystroke(CKEDITOR.ALT+48,"a11yHelp");CKEDITOR.dialog.add("a11yHelp",this.path+"dialogs/a11yhelp.js");b.on("ariaEditorHelpLabel",function(f){f.data.label=b.lang.common.editorHelp})}})}(), -CKEDITOR.plugins.add("about",{requires:"dialog",init:function(b){var h=b.addCommand("about",new CKEDITOR.dialogCommand("about"));h.modes={wysiwyg:1,source:1};h.canUndo=!1;h.readOnly=1;b.ui.addButton&&b.ui.addButton("About",{label:b.lang.about.dlgTitle,command:"about",toolbar:"about"});CKEDITOR.dialog.add("about",this.path+"dialogs/about.js")}}),"use strict",function(){function b(b){function f(){m=b.document;k=m[CKEDITOR.env.ie?"getBody":"getDocumentElement"]();l=CKEDITOR.env.quirks?m.getBody():m.getDocumentElement(); -var a=CKEDITOR.env.quirks?l:l.findOne("body");a&&(a.setStyle("height","auto"),a.setStyle("min-height",CKEDITOR.env.safari?"0%":"auto"));c=CKEDITOR.dom.element.createFromHtml('\x3cspan style\x3d"margin:0;padding:0;border:0;clear:both;width:1px;height:1px;display:block;"\x3e'+(CKEDITOR.env.webkit?"\x26nbsp;":"")+"\x3c/span\x3e",m)}function e(){y&&l.setStyle("overflow-y","hidden");var e=b.window.getViewPaneSize().height,f;k.append(c);f=c.getDocumentPosition(m).y+c.$.offsetHeight;c.remove();f+=d;f=Math.max(f, -g);f=Math.min(f,n);f!=e&&a!=f&&(f=b.fire("autoGrow",{currentHeight:e,newHeight:f}).newHeight,e="border-box"===b.container.getComputedStyle("box-sizing"),e=b.container.getSize("width",e),b.resize(e,f,!0),a=f);y||(f<n&&l.$.scrollHeight>l.$.clientHeight?l.setStyle("overflow-y","hidden"):l.removeStyle("overflow-y"))}var a,m,k,l,c,d=b.config.autoGrow_bottomSpace||0,g=void 0!==b.config.autoGrow_minHeight?b.config.autoGrow_minHeight:200,n=b.config.autoGrow_maxHeight||Infinity,y=!b.config.autoGrow_maxHeight; -b.addCommand("autogrow",{exec:e,modes:{wysiwyg:1},readOnly:1,canUndo:!1,editorFocus:!1});var w={contentDom:1,key:1,selectionChange:1,insertElement:1,mode:1},p;for(p in w)b.on(p,function(c){"wysiwyg"==c.editor.mode&&setTimeout(function(){var c=b.getCommand("maximize");!b.window||c&&c.state==CKEDITOR.TRISTATE_ON?a=null:(e(),y||e())},100)});b.on("afterCommandExec",function(a){"maximize"==a.data.name&&"wysiwyg"==a.editor.mode&&(a.data.command.state==CKEDITOR.TRISTATE_ON?l.removeStyle("overflow-y"):e())}); +this.parts.dialog;if(this._.moved||!K){var c=this.getSize(),b=CKEDITOR.document.getWindow().getViewPaneSize(),d;this._.moved&&this._.position?(d=this._.position.x,c=this._.position.y):(d=(b.width-c.width)/2,c=(b.height-c.height)/2);CKEDITOR.env.ie6Compat||(a.setStyle("position","absolute"),a.removeStyle("margin"));d=Math.floor(d);c=Math.floor(c);this.move(d,c)}},foreach:function(a){for(var c in this._.contents)for(var b in this._.contents[c])a.call(this,this._.contents[c][b]);return this},reset:function(){var a= +function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),setupContent:function(){var a=arguments;this.foreach(function(c){c.setup&&c.setup.apply(c,a)})},commitContent:function(){var a=arguments;this.foreach(function(c){CKEDITOR.env.ie&&this._.currentFocusIndex==c.focusIndex&&c.getInputElement().$.blur();c.commit&&c.commit.apply(c,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{});this._.editor.fire("dialogHide",this);this.selectPage(this._.tabIdList[0]); +var a=this._.element;a.setStyle("display","none");this.parts.dialog.setStyle("visibility","hidden");for(u(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var c=this._.parentDialog.getElement().getFirst();this._.parentDialog.getElement().removeStyle("z-index");c.setStyle("z-index",parseInt(c.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else r(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-= +10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener("keydown",x);a.removeListener("keyup",t);var b=this._.editor;b.focus();setTimeout(function(){b.focusManager.unlock();CKEDITOR.env.iOS&&b.window.focus()},0)}delete this._.parentDialog;this.foreach(function(a){a.resetInitValue&&a.resetInitValue()});this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(a){if(!a.requiredContent||this._.editor.filter.check(a.requiredContent)){for(var c=[],b=a.label?' title\x3d"'+CKEDITOR.tools.htmlEncode(a.label)+ +'"':"",d=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||"width: 100%;"},c),g=this._.contents[a.id]={},e=d.getChild(),f=0;d=e.shift();)d.notAllowed||"hbox"==d.type||"vbox"==d.type||f++,g[d.id]=d,"function"==typeof d.getChild&&e.push.apply(e,d.getChild());f||(a.hidden=!0);c=CKEDITOR.dom.element.createFromHtml(c.join(""));c.setAttribute("role","tabpanel");c.setStyle("min-height", +"100%");d=CKEDITOR.env;g="cke_"+a.id+"_"+CKEDITOR.tools.getNextNumber();b=CKEDITOR.dom.element.createFromHtml(['\x3ca class\x3d"cke_dialog_tab"',0<this._.pageCount?" cke_last":"cke_first",b,a.hidden?' style\x3d"display:none"':"",' id\x3d"',g,'"',d.gecko&&!d.hc?"":' href\x3d"javascript:void(0)"',' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e',a.label,"\x3c/a\x3e"].join(""));c.setAttribute("aria-labelledby",g);this._.tabs[a.id]=[b,c];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++; +this._.lastTab=b;this.updateStyle();c.setAttribute("name",a.id);c.appendTo(this.parts.contents);b.unselectable();this.parts.tabs.append(b);a.accessKey&&(z(this,this,"CTRL+"+a.accessKey,B,w),this._.accessKeyMap["CTRL+"+a.accessKey]=a.id)}},selectPage:function(a){if(this._.currentTabId!=a&&!this._.tabs[a][0].hasClass("cke_dialog_tab_disabled")&&!1!==this.fire("selectPage",{page:a,currentPage:this._.currentTabId})){for(var c in this._.tabs){var b=this._.tabs[c][0],d=this._.tabs[c][1];c!=a&&(b.removeClass("cke_dialog_tab_selected"), +b.removeAttribute("aria-selected"),d.hide());d.setAttribute("aria-hidden",c!=a)}var g=this._.tabs[a];g[0].addClass("cke_dialog_tab_selected");g[0].setAttribute("aria-selected",!0);CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?(e(g[1]),g[1].show(),setTimeout(function(){e(g[1],1)},0)):g[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(a){var c= +this._.tabs[a]&&this._.tabs[a][0];c&&1!=this._.pageCount&&c.isVisible()&&(a==this._.currentTabId&&this.selectPage(h.call(this)),c.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=this._.tabs[a]&&this._.tabs[a][0])a.show(),this._.pageCount++,this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(a,c){var b=this._.contents[a];return b&&b[c]},getValueOf:function(a,c){return this.getContentElement(a,c).getValue()}, +setValueOf:function(a,c,b){return this.getContentElement(a,c).setValue(b)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},enableButton:function(a){return this._.buttons[a].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a, +c){if("undefined"==typeof c)c=this._.focusList.length,this._.focusList.push(new m(this,a,c));else{this._.focusList.splice(c,0,new m(this,a,c));for(var b=c+1;b<this._.focusList.length;b++)this._.focusList[b].focusIndex++}},setState:function(a){if(this.state!=a){this.state=a;if(a==CKEDITOR.DIALOG_STATE_BUSY){if(!this.parts.spinner){var c=this.getParentEditor().lang.dir,b={attributes:{"class":"cke_dialog_spinner"},styles:{"float":"rtl"==c?"right":"left"}};b.styles["margin-"+("rtl"==c?"left":"right")]= +"8px";this.parts.spinner=CKEDITOR.document.createElement("div",b);this.parts.spinner.setHtml("\x26#8987;");this.parts.spinner.appendTo(this.parts.title,1)}this.parts.spinner.show();this.getButton("ok")&&this.getButton("ok").disable()}else a==CKEDITOR.DIALOG_STATE_IDLE&&(this.parts.spinner&&this.parts.spinner.hide(),this.getButton("ok")&&this.getButton("ok").enable());this.fire("state",a)}},getModel:function(a){return this._.model?this._.model:this.definition.getModel?this.definition.getModel(a):null}, +setModel:function(a){this._.model=a},getMode:function(a){if(this.definition.getMode)return this.definition.getMode(a);a=this.getModel(a);return!a||a instanceof CKEDITOR.dom.element&&!a.getParent()?CKEDITOR.dialog.CREATION_MODE:CKEDITOR.dialog.EDITING_MODE}};CKEDITOR.tools.extend(CKEDITOR.dialog,{CREATION_MODE:0,EDITING_MODE:1,add:function(a,c){this._.dialogDefinitions[a]&&"function"!=typeof c||(this._.dialogDefinitions[a]=c)},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop}, +isTabEnabled:function(a,c,b){a=a.config.removeDialogTabs;return!(a&&a.match(new RegExp("(?:^|;)"+c+":"+b+"(?:$|;)","i")))},okButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"ok",type:"button",label:a.lang.common.ok,"class":"cke_dialog_ui_button_ok",onClick:function(a){a=a.data.dialog;!1!==a.fire("ok",{hide:!0}).hide&&a.hide()}},c,!0)};a.type="button";a.override=function(c){return CKEDITOR.tools.extend(function(b){return a(b,c)},{type:"button"},!0)};return a}(),cancelButton:function(){var a= +function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"cancel",type:"button",label:a.lang.common.cancel,"class":"cke_dialog_ui_button_cancel",onClick:function(a){a=a.data.dialog;!1!==a.fire("cancel",{hide:!0}).hide&&a.hide()}},c,!0)};a.type="button";a.override=function(c){return CKEDITOR.tools.extend(function(b){return a(b,c)},{type:"button"},!0)};return a}(),addUIElement:function(a,c){this._.uiElementBuilders[a]=c}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null}; +CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);A={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]};var D=function(a,c,b){for(var d=0,g;g=a[d];d++)if(g.id==c||b&&g[b]&&(g=D(g[b],c,b)))return g;return null},N=function(a,c,b,d,g){if(b){for(var e=0,f;f=a[e];e++){if(f.id==b)return a.splice(e,0,c),c;if(d&&f[d]&&(f=N(f[d],c,b,d,!0)))return f}if(g)return null}a.push(c);return c}, +I=function(a,c,b){for(var d=0,g;g=a[d];d++){if(g.id==c)return a.splice(d,1);if(b&&g[b]&&(g=I(g[b],c,b)))return g}return null};d.prototype={getContents:function(a){return D(this.contents,a)},getButton:function(a){return D(this.buttons,a)},addContents:function(a,c){return N(this.contents,a,c)},addButton:function(a,c){return N(this.buttons,a,c)},removeContents:function(a){I(this.contents,a)},removeButton:function(a){I(this.buttons,a)}};g.prototype={get:function(a){return D(this.elements,a,"children")}, +add:function(a,c){return N(this.elements,a,c,"children")},remove:function(a){I(this.elements,a,"children")}};var L={},R={};(function(){CKEDITOR.ui.dialog={uiElement:function(a,c,b,d,g,e,f){if(!(4>arguments.length)){var h=(d.call?d(c):d)||"div",n=["\x3c",h," "],k=(g&&g.call?g(c):g)||{},l=(e&&e.call?e(c):e)||{},m=(f&&f.call?f.call(this,a,c):f)||"",r=this.domId=l.id||CKEDITOR.tools.getNextId()+"_uiElement";c.requiredContent&&!a.getParentEditor().filter.check(c.requiredContent)&&(k.display="none",this.notAllowed= +!0);l.id=r;var q={};c.type&&(q["cke_dialog_ui_"+c.type]=1);c.className&&(q[c.className]=1);c.disabled&&(q.cke_disabled=1);for(var t=l["class"]&&l["class"].split?l["class"].split(" "):[],r=0;r<t.length;r++)t[r]&&(q[t[r]]=1);t=[];for(r in q)t.push(r);l["class"]=t.join(" ");c.title&&(l.title=c.title);q=(c.style||"").split(";");c.align&&(t=c.align,k["margin-left"]="left"==t?0:"auto",k["margin-right"]="right"==t?0:"auto");for(r in k)q.push(r+":"+k[r]);c.hidden&&q.push("display:none");for(r=q.length-1;0<= +r;r--)""===q[r]&&q.splice(r,1);0<q.length&&(l.style=(l.style?l.style+"; ":"")+q.join("; "));for(r in l)n.push(r+'\x3d"'+CKEDITOR.tools.htmlEncode(l[r])+'" ');n.push("\x3e",m,"\x3c/",h,"\x3e");b.push(n.join(""));(this._||(this._={})).dialog=a;"boolean"==typeof c.isChanged&&(this.isChanged=function(){return c.isChanged});"function"==typeof c.isChanged&&(this.isChanged=c.isChanged);"function"==typeof c.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(b){a.call(this, +c.setValue.call(this,b))}}));"function"==typeof c.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(a){return function(){return c.getValue.call(this,a.call(this))}}));CKEDITOR.event.implementOn(this);this.registerEvents(c);this.accessKeyUp&&this.accessKeyDown&&c.accessKey&&z(this,a,"CTRL+"+c.accessKey);var u=this;a.on("load",function(){var c=u.getInputElement();if(c){var b=u.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&8>CKEDITOR.env.version?"cke_dialog_ui_focused":"";c.on("focus", +function(){a._.tabBarMode=!1;a._.hasFocus=!0;u.fire("focus");b&&this.addClass(b)});c.on("blur",function(){u.fire("blur");b&&this.removeClass(b)})}});CKEDITOR.tools.extend(this,c);this.keyboardFocusable&&(this.tabIndex=c.tabIndex||0,this.focusIndex=a._.focusList.push(this)-1,this.on("focus",function(){a._.currentFocusIndex=u.focusIndex}))}},hbox:function(a,c,b,d,g){if(!(4>arguments.length)){this._||(this._={});var e=this._.children=c,f=g&&g.widths||null,h=g&&g.height||null,n,k={role:"presentation"}; +g&&g.align&&(k.align=g.align);CKEDITOR.ui.dialog.uiElement.call(this,a,g||{type:"hbox"},d,"table",{},k,function(){var a=['\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e'];for(n=0;n<b.length;n++){var c="cke_dialog_ui_hbox_child",d=[];0===n&&(c="cke_dialog_ui_hbox_first");n==b.length-1&&(c="cke_dialog_ui_hbox_last");a.push('\x3ctd class\x3d"',c,'" role\x3d"presentation" ');f?f[n]&&d.push("width:"+C(f[n])):d.push("width:"+Math.floor(100/b.length)+"%");h&&d.push("height:"+C(h));g&&void 0!==g.padding&& +d.push("padding:"+C(g.padding));CKEDITOR.env.ie&&CKEDITOR.env.quirks&&e[n].align&&d.push("text-align:"+e[n].align);0<d.length&&a.push('style\x3d"'+d.join("; ")+'" ');a.push("\x3e",b[n],"\x3c/td\x3e")}a.push("\x3c/tr\x3e\x3c/tbody\x3e");return a.join("")})}},vbox:function(a,c,b,d,g){if(!(3>arguments.length)){this._||(this._={});var e=this._.children=c,f=g&&g.width||null,h=g&&g.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,g||{type:"vbox"},d,"div",null,{role:"presentation"},function(){var c= +['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" '];c.push('style\x3d"');g&&g.expand&&c.push("height:100%;");c.push("width:"+C(f||"100%"),";");CKEDITOR.env.webkit&&c.push("float:none;");c.push('"');c.push('align\x3d"',CKEDITOR.tools.htmlEncode(g&&g.align||("ltr"==a.getParentEditor().lang.dir?"left":"right")),'" ');c.push("\x3e\x3ctbody\x3e");for(var d=0;d<b.length;d++){var n=[];c.push('\x3ctr\x3e\x3ctd role\x3d"presentation" ');f&&n.push("width:"+C(f||"100%"));h?n.push("height:"+ +C(h[d])):g&&g.expand&&n.push("height:"+Math.floor(100/b.length)+"%");g&&void 0!==g.padding&&n.push("padding:"+C(g.padding));CKEDITOR.env.ie&&CKEDITOR.env.quirks&&e[d].align&&n.push("text-align:"+e[d].align);0<n.length&&c.push('style\x3d"',n.join("; "),'" ');c.push(' class\x3d"cke_dialog_ui_vbox_child"\x3e',b[d],"\x3c/td\x3e\x3c/tr\x3e")}c.push("\x3c/tbody\x3e\x3c/table\x3e");return c.join("")})}}}})();CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)}, +getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(a,c){this.getInputElement().setValue(a);!c&&this.fire("change",{value:a});return this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var a=this.getInputElement();(a=a.getParent())&&-1==a.$.className.search("cke_dialog_page_contents"););if(!a)return this;a=a.getAttribute("name");this._.dialog._.currentTabId!= +a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();return this},registerEvents:function(a){var c=/^on([A-Z]\w+)/,b,d=function(a,c,b,d){c.on("load",function(){a.getInputElement().on(b,d,a)})},g;for(g in a)if(b=g.match(c))this.eventProcessors[g]?this.eventProcessors[g].call(this,this._.dialog,a[g]):d(this,this._.dialog,b[1].toLowerCase(),a[g]);return this},eventProcessors:{onLoad:function(a,c){a.on("load",c,this)},onShow:function(a,c){a.on("show", +c,this)},onHide:function(a,c){a.on("hide",c,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var a=this.getElement();this.getInputElement().setAttribute("disabled","true");a.addClass("cke_disabled")},enable:function(){var a=this.getElement();this.getInputElement().removeAttribute("disabled");a.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()}, +isFocusable:function(){return this.isEnabled()&&this.isVisible()?!0:!1}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2>a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a, +c,b){for(var d=c.children,g,e=[],f=[],h=0;h<d.length&&(g=d[h]);h++){var n=[];e.push(n);f.push(CKEDITOR.dialog._.uiElementBuilders[g.type].build(a,g,n))}return new CKEDITOR.ui.dialog[c.type](a,f,e,b,c)}};CKEDITOR.dialog.addUIElement("hbox",a);CKEDITOR.dialog.addUIElement("vbox",a)})();CKEDITOR.dialogCommand=function(a,c){this.dialogName=a;CKEDITOR.tools.extend(this,c,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){var c=this.tabId;a.openDialog(this.dialogName,function(a){c&&a.selectPage(c)})}, +canUndo:!1,editorFocus:1};(function(){var a=/^([a]|[^a])+$/,c=/^\d*$/,b=/^\d*(?:\.\d+)?$/,d=/^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,g=/^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i,e=/^(--|-?([a-zA-Z_]|\\))(\\|[a-zA-Z0-9-_])*\s*?:\s*?[^:;]+$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a=arguments;return function(){var c=this&&this.getValue?this.getValue():a[0],b,d=CKEDITOR.VALIDATE_AND,g=[],e;for(e=0;e<a.length;e++)if("function"==typeof a[e])g.push(a[e]); +else break;e<a.length&&"string"==typeof a[e]&&(b=a[e],e++);e<a.length&&"number"==typeof a[e]&&(d=a[e]);var f=d==CKEDITOR.VALIDATE_AND?!0:!1;for(e=0;e<g.length;e++)f=d==CKEDITOR.VALIDATE_AND?f&&g[e](c):f||g[e](c);return f?!0:b}},regex:function(a,c){return function(b){b=this&&this.getValue?this.getValue():b;return a.test(b)?!0:c}},notEmpty:function(c){return this.regex(a,c)},integer:function(a){return this.regex(c,a)},number:function(a){return this.regex(b,a)},cssLength:function(a){return this.functions(function(a){return g.test(CKEDITOR.tools.trim(a))}, +a)},htmlLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){a=CKEDITOR.tools.trim(a).split(";");""===a[a.length-1]&&a.pop();return CKEDITOR.tools.array.every(a,function(a){return e.test(CKEDITOR.tools.trim(a))})},a)},equals:function(a,c){return this.functions(function(c){return c==a},c)},notEqual:function(a,c){return this.functions(function(c){return c!=a},c)}};CKEDITOR.on("instanceDestroyed",function(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var c;c= +CKEDITOR.dialog._.currentTop;)c.hide();for(var b in L)L[b].remove();L={}}a=a.editor._.storedDialogs;for(var d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,c,b){var d=null,g=CKEDITOR.dialog._.dialogDefinitions[a];null===CKEDITOR.dialog._.currentTop&&q(this);if("function"==typeof g)g=this._.storedDialogs||(this._.storedDialogs={}),d=g[a]||(g[a]=new CKEDITOR.dialog(this,a)),d.setModel(b),c&&c.call(d,d),d.show();else{if("failed"==g)throw r(this),Error('[CKEDITOR.dialog.openDialog] Dialog "'+ +a+'" failed when loading definition.');"string"==typeof g&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(g),function(){"function"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]="failed");this.openDialog(a,c,b)},this,0,1)}CKEDITOR.skin.loadPart("dialog");if(d)d.once("hide",function(){d.setModel(null)},null,null,999);return d}});CKEDITOR.plugins.add("dialog",{requires:"dialogui",init:function(a){F||(CKEDITOR.document.appendStyleSheet(this.path+"styles/dialog.css"), +F=!0);a.on("doubleclick",function(c){c.data.dialog&&a.openDialog(c.data.dialog)},null,null,999)}})}(),function(){CKEDITOR.plugins.add("a11yhelp",{requires:"dialog",availableLangs:{af:1,ar:1,az:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,en:1,"en-au":1,"en-gb":1,eo:1,es:1,"es-mx":1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,"fr-ca":1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,"pt-br":1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,"sr-latn":1,sv:1,th:1, +tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,"zh-cn":1},init:function(b){var h=this;b.addCommand("a11yHelp",{exec:function(){var f=b.langCode,f=h.availableLangs[f]?f:h.availableLangs[f.replace(/-.*/,"")]?f.replace(/-.*/,""):"en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(h.path+"dialogs/lang/"+f+".js"),function(){b.lang.a11yhelp=h.langEntries[f];b.openDialog("a11yHelp")})},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:!1});b.setKeystroke(CKEDITOR.ALT+48,"a11yHelp");CKEDITOR.dialog.add("a11yHelp",this.path+"dialogs/a11yhelp.js"); +b.on("ariaEditorHelpLabel",function(f){f.data.label=b.lang.common.editorHelp})}})}(),CKEDITOR.plugins.add("about",{requires:"dialog",init:function(b){var h=b.addCommand("about",new CKEDITOR.dialogCommand("about"));h.modes={wysiwyg:1,source:1};h.canUndo=!1;h.readOnly=1;b.ui.addButton&&b.ui.addButton("About",{label:b.lang.about.dlgTitle,command:"about",toolbar:"about"});CKEDITOR.dialog.add("about",this.path+"dialogs/about.js")}}),"use strict",function(){function b(b){function f(){k=b.document;l=k[CKEDITOR.env.ie? +"getBody":"getDocumentElement"]();m=CKEDITOR.env.quirks?k.getBody():k.getDocumentElement();var a=CKEDITOR.env.quirks?m:m.findOne("body");a&&(a.setStyle("height","auto"),a.setStyle("min-height",CKEDITOR.env.safari?"0%":"auto"));c=CKEDITOR.dom.element.createFromHtml('\x3cspan style\x3d"margin:0;padding:0;border:0;clear:both;width:1px;height:1px;display:block;"\x3e'+(CKEDITOR.env.webkit?"\x26nbsp;":"")+"\x3c/span\x3e",k)}function e(){y&&m.setStyle("overflow-y","hidden");var e=b.window.getViewPaneSize().height, +f;l.append(c);f=c.getDocumentPosition(k).y+c.$.offsetHeight;c.remove();f+=d;f=Math.max(f,g);f=Math.min(f,n);f!=e&&a!=f&&(f=b.fire("autoGrow",{currentHeight:e,newHeight:f}).newHeight,b.resize(null,f,!0),a=f);y||(f<n&&m.$.scrollHeight>m.$.clientHeight?m.setStyle("overflow-y","hidden"):m.removeStyle("overflow-y"))}var a,k,l,m,c,d=b.config.autoGrow_bottomSpace||0,g=void 0!==b.config.autoGrow_minHeight?b.config.autoGrow_minHeight:200,n=b.config.autoGrow_maxHeight||Infinity,y=!b.config.autoGrow_maxHeight; +b.addCommand("autogrow",{exec:e,modes:{wysiwyg:1},readOnly:1,canUndo:!1,editorFocus:!1});var v={contentDom:1,key:1,selectionChange:1,insertElement:1,mode:1},p;for(p in v)b.on(p,function(c){"wysiwyg"==c.editor.mode&&setTimeout(function(){var c=b.getCommand("maximize");!b.window||c&&c.state==CKEDITOR.TRISTATE_ON?a=null:(e(),y||e())},100)});b.on("afterCommandExec",function(a){"maximize"==a.data.name&&"wysiwyg"==a.editor.mode&&(a.data.command.state==CKEDITOR.TRISTATE_ON?m.removeStyle("overflow-y"):e())}); b.on("contentDom",f);f();b.config.autoGrow_onStartup&&b.editable().isVisible()&&b.execCommand("autogrow")}CKEDITOR.plugins.add("autogrow",{init:function(h){if(h.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE)h.on("instanceReady",function(){h.editable().isInline()?h.ui.space("contents").setStyle("height","auto"):b(h)})}})}(),CKEDITOR.plugins.add("basicstyles",{init:function(b){var h=0,f=function(a,f,c,d){if(d){d=new CKEDITOR.style(d);var g=e[c];g.unshift(d);b.attachStyleStateChange(d,function(a){!b.readOnly&& b.getCommand(c).setState(a)});b.addCommand(c,new CKEDITOR.styleCommand(d,{contentForms:g}));b.ui.addButton&&b.ui.addButton(a,{label:f,command:c,toolbar:"basicstyles,"+(h+=10)})}},e={bold:["strong","b",["span",function(a){a=a.styles["font-weight"];return"bold"==a||700<=+a}]],italic:["em","i",["span",function(a){return"italic"==a.styles["font-style"]}]],underline:["u",["span",function(a){return"underline"==a.styles["text-decoration"]}]],strike:["s","strike",["span",function(a){return"line-through"== -a.styles["text-decoration"]}]],subscript:["sub"],superscript:["sup"]},a=b.config,m=b.lang.basicstyles;f("Bold",m.bold,"bold",a.coreStyles_bold);f("Italic",m.italic,"italic",a.coreStyles_italic);f("Underline",m.underline,"underline",a.coreStyles_underline);f("Strike",m.strike,"strike",a.coreStyles_strike);f("Subscript",m.subscript,"subscript",a.coreStyles_subscript);f("Superscript",m.superscript,"superscript",a.coreStyles_superscript);b.setKeystroke([[CKEDITOR.CTRL+66,"bold"],[CKEDITOR.CTRL+73,"italic"], +a.styles["text-decoration"]}]],subscript:["sub"],superscript:["sup"]},a=b.config,k=b.lang.basicstyles;f("Bold",k.bold,"bold",a.coreStyles_bold);f("Italic",k.italic,"italic",a.coreStyles_italic);f("Underline",k.underline,"underline",a.coreStyles_underline);f("Strike",k.strike,"strike",a.coreStyles_strike);f("Subscript",k.subscript,"subscript",a.coreStyles_subscript);f("Superscript",k.superscript,"superscript",a.coreStyles_superscript);b.setKeystroke([[CKEDITOR.CTRL+66,"bold"],[CKEDITOR.CTRL+73,"italic"], [CKEDITOR.CTRL+85,"underline"]])}}),CKEDITOR.config.coreStyles_bold={element:"strong",overrides:"b"},CKEDITOR.config.coreStyles_italic={element:"em",overrides:"i"},CKEDITOR.config.coreStyles_underline={element:"u"},CKEDITOR.config.coreStyles_strike={element:"s",overrides:"strike"},CKEDITOR.config.coreStyles_subscript={element:"sub"},CKEDITOR.config.coreStyles_superscript={element:"sup"},function(){var b={exec:function(b){var f=b.getCommand("blockquote").state,e=b.getSelection(),a=e&&e.getRanges()[0]; -if(a){var m=e.createBookmarks();if(CKEDITOR.env.ie){var k=m[0].startNode,l=m[0].endNode,c;if(k&&"blockquote"==k.getParent().getName())for(c=k;c=c.getNext();)if(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()){k.move(c,!0);break}if(l&&"blockquote"==l.getParent().getName())for(c=l;c=c.getPrevious();)if(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()){l.move(c);break}}var d=a.createIterator();d.enlargeBr=b.config.enterMode!=CKEDITOR.ENTER_BR;if(f==CKEDITOR.TRISTATE_OFF){for(k=[];f=d.getNextParagraph();)k.push(f); -1>k.length&&(f=b.document.createElement(b.config.enterMode==CKEDITOR.ENTER_P?"p":"div"),l=m.shift(),a.insertNode(f),f.append(new CKEDITOR.dom.text("",b.document)),a.moveToBookmark(l),a.selectNodeContents(f),a.collapse(!0),l=a.createBookmark(),k.push(f),m.unshift(l));c=k[0].getParent();a=[];for(l=0;l<k.length;l++)f=k[l],c=c.getCommonAncestor(f.getParent());for(f={table:1,tbody:1,tr:1,ol:1,ul:1};f[c.getName()];)c=c.getParent();for(l=null;0<k.length;){for(f=k.shift();!f.getParent().equals(c);)f=f.getParent(); -f.equals(l)||a.push(f);l=f}for(;0<a.length;)if(f=a.shift(),"blockquote"==f.getName()){for(l=new CKEDITOR.dom.documentFragment(b.document);f.getFirst();)l.append(f.getFirst().remove()),k.push(l.getLast());l.replace(f)}else k.push(f);a=b.document.createElement("blockquote");for(a.insertBefore(k[0]);0<k.length;)f=k.shift(),a.append(f)}else if(f==CKEDITOR.TRISTATE_ON){l=[];for(c={};f=d.getNextParagraph();){for(k=a=null;f.getParent();){if("blockquote"==f.getParent().getName()){a=f.getParent();k=f;break}f= -f.getParent()}a&&k&&!k.getCustomData("blockquote_moveout")&&(l.push(k),CKEDITOR.dom.element.setMarker(c,k,"blockquote_moveout",!0))}CKEDITOR.dom.element.clearAllMarkers(c);f=[];k=[];for(c={};0<l.length;)d=l.shift(),a=d.getParent(),d.getPrevious()?d.getNext()?(d.breakParent(d.getParent()),k.push(d.getNext())):d.remove().insertAfter(a):d.remove().insertBefore(a),a.getCustomData("blockquote_processed")||(k.push(a),CKEDITOR.dom.element.setMarker(c,a,"blockquote_processed",!0)),f.push(d);CKEDITOR.dom.element.clearAllMarkers(c); -for(l=k.length-1;0<=l;l--){a=k[l];a:{c=a;for(var d=0,g=c.getChildCount(),n=void 0;d<g&&(n=c.getChild(d));d++)if(n.type==CKEDITOR.NODE_ELEMENT&&n.isBlockBoundary()){c=!1;break a}c=!0}c&&a.remove()}if(b.config.enterMode==CKEDITOR.ENTER_BR)for(a=!0;f.length;)if(d=f.shift(),"div"==d.getName()){l=new CKEDITOR.dom.documentFragment(b.document);!a||!d.getPrevious()||d.getPrevious().type==CKEDITOR.NODE_ELEMENT&&d.getPrevious().isBlockBoundary()||l.append(b.document.createElement("br"));for(a=d.getNext()&& -!(d.getNext().type==CKEDITOR.NODE_ELEMENT&&d.getNext().isBlockBoundary());d.getFirst();)d.getFirst().remove().appendTo(l);a&&l.append(b.document.createElement("br"));l.replace(d);a=!1}}e.selectBookmarks(m);b.focus()}},refresh:function(b,f){this.setState(b.elementPath(f.block||f.blockLimit).contains("blockquote",1)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)},context:"blockquote",allowedContent:"blockquote",requiredContent:"blockquote"};CKEDITOR.plugins.add("blockquote",{init:function(h){h.blockless|| +if(a){var k=e.createBookmarks();if(CKEDITOR.env.ie){var l=k[0].startNode,m=k[0].endNode,c;if(l&&"blockquote"==l.getParent().getName())for(c=l;c=c.getNext();)if(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()){l.move(c,!0);break}if(m&&"blockquote"==m.getParent().getName())for(c=m;c=c.getPrevious();)if(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()){m.move(c);break}}var d=a.createIterator();d.enlargeBr=b.config.enterMode!=CKEDITOR.ENTER_BR;if(f==CKEDITOR.TRISTATE_OFF){for(l=[];f=d.getNextParagraph();)l.push(f); +1>l.length&&(f=b.document.createElement(b.config.enterMode==CKEDITOR.ENTER_P?"p":"div"),m=k.shift(),a.insertNode(f),f.append(new CKEDITOR.dom.text("",b.document)),a.moveToBookmark(m),a.selectNodeContents(f),a.collapse(!0),m=a.createBookmark(),l.push(f),k.unshift(m));c=l[0].getParent();a=[];for(m=0;m<l.length;m++)f=l[m],c=c.getCommonAncestor(f.getParent());for(f={table:1,tbody:1,tr:1,ol:1,ul:1};f[c.getName()];)c=c.getParent();for(m=null;0<l.length;){for(f=l.shift();!f.getParent().equals(c);)f=f.getParent(); +f.equals(m)||a.push(f);m=f}for(;0<a.length;)if(f=a.shift(),"blockquote"==f.getName()){for(m=new CKEDITOR.dom.documentFragment(b.document);f.getFirst();)m.append(f.getFirst().remove()),l.push(m.getLast());m.replace(f)}else l.push(f);a=b.document.createElement("blockquote");for(a.insertBefore(l[0]);0<l.length;)f=l.shift(),a.append(f)}else if(f==CKEDITOR.TRISTATE_ON){m=[];for(c={};f=d.getNextParagraph();){for(l=a=null;f.getParent();){if("blockquote"==f.getParent().getName()){a=f.getParent();l=f;break}f= +f.getParent()}a&&l&&!l.getCustomData("blockquote_moveout")&&(m.push(l),CKEDITOR.dom.element.setMarker(c,l,"blockquote_moveout",!0))}CKEDITOR.dom.element.clearAllMarkers(c);f=[];l=[];for(c={};0<m.length;)d=m.shift(),a=d.getParent(),d.getPrevious()?d.getNext()?(d.breakParent(d.getParent()),l.push(d.getNext())):d.remove().insertAfter(a):d.remove().insertBefore(a),a.getCustomData("blockquote_processed")||(l.push(a),CKEDITOR.dom.element.setMarker(c,a,"blockquote_processed",!0)),f.push(d);CKEDITOR.dom.element.clearAllMarkers(c); +for(m=l.length-1;0<=m;m--){a=l[m];a:{c=a;for(var d=0,g=c.getChildCount(),n=void 0;d<g&&(n=c.getChild(d));d++)if(n.type==CKEDITOR.NODE_ELEMENT&&n.isBlockBoundary()){c=!1;break a}c=!0}c&&a.remove()}if(b.config.enterMode==CKEDITOR.ENTER_BR)for(a=!0;f.length;)if(d=f.shift(),"div"==d.getName()){m=new CKEDITOR.dom.documentFragment(b.document);!a||!d.getPrevious()||d.getPrevious().type==CKEDITOR.NODE_ELEMENT&&d.getPrevious().isBlockBoundary()||m.append(b.document.createElement("br"));for(a=d.getNext()&& +!(d.getNext().type==CKEDITOR.NODE_ELEMENT&&d.getNext().isBlockBoundary());d.getFirst();)d.getFirst().remove().appendTo(m);a&&m.append(b.document.createElement("br"));m.replace(d);a=!1}}e.selectBookmarks(k);b.focus()}},refresh:function(b,f){this.setState(b.elementPath(f.block||f.blockLimit).contains("blockquote",1)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)},context:"blockquote",allowedContent:"blockquote",requiredContent:"blockquote"};CKEDITOR.plugins.add("blockquote",{init:function(h){h.blockless|| (h.addCommand("blockquote",b),h.ui.addButton&&h.ui.addButton("Blockquote",{label:h.lang.blockquote.toolbar,command:"blockquote",toolbar:"blocks,10"}))}})}(),"use strict",function(){function b(b,e){CKEDITOR.tools.extend(this,e,{editor:b,id:"cke-"+CKEDITOR.tools.getUniqueId(),area:b._.notificationArea});e.type||(this.type="info");this.element=this._createElement();b.plugins.clipboard&&CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(this.element)}function h(b){var e=this;this.editor=b;this.notifications= [];this.element=this._createElement();this._uiBuffer=CKEDITOR.tools.eventsBuffer(10,this._layout,this);this._changeBuffer=CKEDITOR.tools.eventsBuffer(500,this._layout,this);b.on("destroy",function(){e._removeListeners();e.element.remove()})}CKEDITOR.plugins.add("notification",{init:function(b){function e(a){var b=new CKEDITOR.dom.element("div");b.setStyles({position:"fixed","margin-left":"-9999px"});b.setAttributes({"aria-live":"assertive","aria-atomic":"true"});b.setText(a);CKEDITOR.document.getBody().append(b); -setTimeout(function(){b.remove()},100)}b._.notificationArea=new h(b);b.showNotification=function(a,e,h){var l,c;"progress"==e?l=h:c=h;a=new CKEDITOR.plugins.notification(b,{message:a,type:e,progress:l,duration:c});a.show();return a};b.on("key",function(a){if(27==a.data.keyCode){var h=b._.notificationArea.notifications;h.length&&(e(b.lang.notification.closed),h[h.length-1].hide(),a.cancel())}})}});b.prototype={show:function(){!1!==this.editor.fire("notificationShow",{notification:this})&&(this.area.add(this), -this._hideAfterTimeout())},update:function(b){var e=!0;!1===this.editor.fire("notificationUpdate",{notification:this,options:b})&&(e=!1);var a=this.element,h=a.findOne(".cke_notification_message"),k=a.findOne(".cke_notification_progress"),l=b.type;a.removeAttribute("role");b.progress&&"progress"!=this.type&&(l="progress");l&&(a.removeClass(this._getClass()),a.removeAttribute("aria-label"),this.type=l,a.addClass(this._getClass()),a.setAttribute("aria-label",this.type),"progress"!=this.type||k?"progress"!= -this.type&&k&&k.remove():(k=this._createProgressElement(),k.insertBefore(h)));void 0!==b.message&&(this.message=b.message,h.setHtml(this.message));void 0!==b.progress&&(this.progress=b.progress,k&&k.setStyle("width",this._getPercentageProgress()));e&&b.important&&(a.setAttribute("role","alert"),this.isVisible()||this.area.add(this));this.duration=b.duration;this._hideAfterTimeout()},hide:function(){!1!==this.editor.fire("notificationHide",{notification:this})&&this.area.remove(this)},isVisible:function(){return 0<= +setTimeout(function(){b.remove()},100)}b._.notificationArea=new h(b);b.showNotification=function(a,e,h){var m,c;"progress"==e?m=h:c=h;a=new CKEDITOR.plugins.notification(b,{message:a,type:e,progress:m,duration:c});a.show();return a};b.on("key",function(a){if(27==a.data.keyCode){var h=b._.notificationArea.notifications;h.length&&(e(b.lang.notification.closed),h[h.length-1].hide(),a.cancel())}})}});b.prototype={show:function(){!1!==this.editor.fire("notificationShow",{notification:this})&&(this.area.add(this), +this._hideAfterTimeout())},update:function(b){var e=!0;!1===this.editor.fire("notificationUpdate",{notification:this,options:b})&&(e=!1);var a=this.element,h=a.findOne(".cke_notification_message"),l=a.findOne(".cke_notification_progress"),m=b.type;a.removeAttribute("role");b.progress&&"progress"!=this.type&&(m="progress");m&&(a.removeClass(this._getClass()),a.removeAttribute("aria-label"),this.type=m,a.addClass(this._getClass()),a.setAttribute("aria-label",this.type),"progress"!=this.type||l?"progress"!= +this.type&&l&&l.remove():(l=this._createProgressElement(),l.insertBefore(h)));void 0!==b.message&&(this.message=b.message,h.setHtml(this.message));void 0!==b.progress&&(this.progress=b.progress,l&&l.setStyle("width",this._getPercentageProgress()));e&&b.important&&(a.setAttribute("role","alert"),this.isVisible()||this.area.add(this));this.duration=b.duration;this._hideAfterTimeout()},hide:function(){!1!==this.editor.fire("notificationHide",{notification:this})&&this.area.remove(this)},isVisible:function(){return 0<= CKEDITOR.tools.indexOf(this.area.notifications,this)},_createElement:function(){var b=this,e,a,h=this.editor.lang.common.close;e=new CKEDITOR.dom.element("div");e.addClass("cke_notification");e.addClass(this._getClass());e.setAttributes({id:this.id,role:"alert","aria-label":this.type});"progress"==this.type&&e.append(this._createProgressElement());a=new CKEDITOR.dom.element("p");a.addClass("cke_notification_message");a.setHtml(this.message);e.append(a);a=CKEDITOR.dom.element.createFromHtml('\x3ca class\x3d"cke_notification_close" href\x3d"javascript:void(0)" title\x3d"'+ h+'" role\x3d"button" tabindex\x3d"-1"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e');e.append(a);a.on("click",function(){b.editor.focus();b.hide()});return e},_getClass:function(){return"progress"==this.type?"cke_notification_info":"cke_notification_"+this.type},_createProgressElement:function(){var b=new CKEDITOR.dom.element("span");b.addClass("cke_notification_progress");b.setStyle("width",this._getPercentageProgress());return b},_getPercentageProgress:function(){return Math.round(100* (this.progress||0))+"%"},_hideAfterTimeout:function(){var b=this,e;this._hideTimeoutId&&clearTimeout(this._hideTimeoutId);if("number"==typeof this.duration)e=this.duration;else if("info"==this.type||"success"==this.type)e="number"==typeof this.editor.config.notification_duration?this.editor.config.notification_duration:5E3;e&&(b._hideTimeoutId=setTimeout(function(){b.hide()},e))}};h.prototype={add:function(b){this.notifications.push(b);this.element.append(b.element);1==this.element.getChildCount()&& (CKEDITOR.document.getBody().append(this.element),this._attachListeners());this._layout()},remove:function(b){var e=CKEDITOR.tools.indexOf(this.notifications,b);0>e||(this.notifications.splice(e,1),b.element.remove(),this.element.getChildCount()||(this._removeListeners(),this.element.remove()))},_createElement:function(){var b=this.editor,e=b.config,a=new CKEDITOR.dom.element("div");a.addClass("cke_notifications_area");a.setAttribute("id","cke_notifications_area_"+b.name);a.setStyle("z-index",e.baseFloatZIndex- 2);return a},_attachListeners:function(){var b=CKEDITOR.document.getWindow(),e=this.editor;b.on("scroll",this._uiBuffer.input);b.on("resize",this._uiBuffer.input);e.on("change",this._changeBuffer.input);e.on("floatingSpaceLayout",this._layout,this,null,20);e.on("blur",this._layout,this,null,20)},_removeListeners:function(){var b=CKEDITOR.document.getWindow(),e=this.editor;b.removeListener("scroll",this._uiBuffer.input);b.removeListener("resize",this._uiBuffer.input);e.removeListener("change",this._changeBuffer.input); -e.removeListener("floatingSpaceLayout",this._layout);e.removeListener("blur",this._layout)},_layout:function(){function b(){e.setStyle("left",x(u+h.width-n-y))}var e=this.element,a=this.editor,h=a.ui.contentsElement.getClientRect(),k=a.ui.contentsElement.getDocumentPosition(),l,c,d=e.getClientRect(),g,n=this._notificationWidth,y=this._notificationMargin;g=CKEDITOR.document.getWindow();var w=g.getScrollPosition(),p=g.getViewPaneSize(),t=CKEDITOR.document.getBody(),r=t.getDocumentPosition(),x=CKEDITOR.tools.cssLength; -n&&y||(g=this.element.getChild(0),n=this._notificationWidth=g.getClientRect().width,y=this._notificationMargin=parseInt(g.getComputedStyle("margin-left"),10)+parseInt(g.getComputedStyle("margin-right"),10));a.toolbar&&(l=a.ui.space(a.config.toolbarLocation),c=l.getClientRect());l&&l.isVisible()&&c.bottom>h.top&&c.bottom<h.bottom-d.height?e.setStyles({position:"fixed",top:x(c.bottom)}):0<h.top?e.setStyles({position:"absolute",top:x(k.y)}):k.y+h.height-d.height>w.y?e.setStyles({position:"fixed",top:0}): -e.setStyles({position:"absolute",top:x(k.y+h.height-d.height)});var u="fixed"==e.getStyle("position")?h.left:"static"!=t.getComputedStyle("position")?k.x-r.x:k.x;h.width<n+y?k.x+n+y>w.x+p.width?b():e.setStyle("left",x(u)):k.x+n+y>w.x+p.width?e.setStyle("left",x(u)):k.x+h.width/2+n/2+y>w.x+p.width?e.setStyle("left",x(u-k.x+w.x+p.width-n-y)):0>h.left+h.width-n-y?b():0>h.left+h.width/2-n/2?e.setStyle("left",x(u-k.x+w.x)):e.setStyle("left",x(u+h.width/2-n/2-y/2))}};CKEDITOR.plugins.notification=b}(), +e.removeListener("floatingSpaceLayout",this._layout);e.removeListener("blur",this._layout)},_layout:function(){function b(){e.setStyle("left",x(t+h.width-n-y))}var e=this.element,a=this.editor,h=a.ui.contentsElement.getClientRect(),l=a.ui.contentsElement.getDocumentPosition(),m,c,d=e.getClientRect(),g,n=this._notificationWidth,y=this._notificationMargin;g=CKEDITOR.document.getWindow();var v=g.getScrollPosition(),p=g.getViewPaneSize(),q=CKEDITOR.document.getBody(),r=q.getDocumentPosition(),x=CKEDITOR.tools.cssLength; +n&&y||(g=this.element.getChild(0),n=this._notificationWidth=g.getClientRect().width,y=this._notificationMargin=parseInt(g.getComputedStyle("margin-left"),10)+parseInt(g.getComputedStyle("margin-right"),10));a.toolbar&&(m=a.ui.space(a.config.toolbarLocation),c=m.getClientRect());m&&m.isVisible()&&c.bottom>h.top&&c.bottom<h.bottom-d.height?e.setStyles({position:"fixed",top:x(c.bottom)}):0<h.top?e.setStyles({position:"absolute",top:x(l.y)}):l.y+h.height-d.height>v.y?e.setStyles({position:"fixed",top:0}): +e.setStyles({position:"absolute",top:x(l.y+h.height-d.height)});var t="fixed"==e.getStyle("position")?h.left:"static"!=q.getComputedStyle("position")?l.x-r.x:l.x;h.width<n+y?l.x+n+y>v.x+p.width?b():e.setStyle("left",x(t)):l.x+n+y>v.x+p.width?e.setStyle("left",x(t)):l.x+h.width/2+n/2+y>v.x+p.width?e.setStyle("left",x(t-l.x+v.x+p.width-n-y)):0>h.left+h.width-n-y?b():0>h.left+h.width/2-n/2?e.setStyle("left",x(t-l.x+v.x)):e.setStyle("left",x(t+h.width/2-n/2-y/2))}};CKEDITOR.plugins.notification=b}(), function(){var b='\x3ca id\x3d"{id}" class\x3d"cke_button cke_button__{name} cke_button_{state} {cls}"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href\x3d\"javascript:void('{titleJs}')\"")+' title\x3d"{title}" tabindex\x3d"-1" hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasArrow}" aria-disabled\x3d"{ariaDisabled}"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(b+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(b+= ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var h="";CKEDITOR.env.ie&&(h='return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26');var b=b+(' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" onclick\x3d"'+h+'CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{style}"')+ '\x3e\x26nbsp;\x3c/span\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_button_label cke_button__{name}_label" aria-hidden\x3d"false"\x3e{label}\x3c/span\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_button_label" aria-hidden\x3d"false"\x3e{ariaShortcutSpace}{ariaShortcut}\x3c/span\x3e{arrowHtml}\x3c/a\x3e',f=CKEDITOR.addTemplate("buttonArrow",'\x3cspan class\x3d"cke_button_arrow"\x3e'+(CKEDITOR.env.hc?"\x26#9660;":"")+"\x3c/span\x3e"),e=CKEDITOR.addTemplate("button",b);CKEDITOR.plugins.add("button", -{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON="button";CKEDITOR.ui.button=function(a){CKEDITOR.tools.extend(this,a,{title:a.label,click:a.click||function(b){b.execCommand(a.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(a){return new CKEDITOR.ui.button(a)}};CKEDITOR.ui.button.prototype={render:function(a,b){function h(){var b=a.mode;b&&(b=this.modes[b]?void 0!==l[b]?l[b]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED, -b=a.readOnly&&!this.readOnly?CKEDITOR.TRISTATE_DISABLED:b,this.setState(b),this.refresh&&this.refresh())}var l=null,c=CKEDITOR.env,d=this._.id=CKEDITOR.tools.getNextId(),g="",n=this.command,y,w,p;this._.editor=a;var t={id:d,button:this,editor:a,focus:function(){CKEDITOR.document.getById(d).focus()},execute:function(){this.button.click(a)},attach:function(a){this.button.attach(a)}},r=CKEDITOR.tools.addFunction(function(a){if(t.onkey)return a=new CKEDITOR.dom.event(a),!1!==t.onkey(t,a.getKeystroke())}), -x=CKEDITOR.tools.addFunction(function(a){var b;t.onfocus&&(b=!1!==t.onfocus(t,new CKEDITOR.dom.event(a)));return b}),u=0;t.clickFn=y=CKEDITOR.tools.addFunction(function(){u&&(a.unlockSelection(1),u=0);t.execute();c.iOS&&a.focus()});this.modes?(l={},a.on("beforeModeUnload",function(){a.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(l[a.mode]=this._.state)},this),a.on("activeFilterChange",h,this),a.on("mode",h,this),!this.readOnly&&a.on("readOnly",h,this)):n&&(n=a.getCommand(n))&&(n.on("state",function(){this.setState(n.state)}, -this),g+=n.state==CKEDITOR.TRISTATE_ON?"on":n.state==CKEDITOR.TRISTATE_DISABLED?"disabled":"off");var z;if(this.directional)a.on("contentDirChanged",function(b){var c=CKEDITOR.document.getById(this._.id),d=c.getFirst();b=b.data;b!=a.lang.dir?c.addClass("cke_"+b):c.removeClass("cke_ltr").removeClass("cke_rtl");d.setAttribute("style",CKEDITOR.skin.getIconStyle(z,"rtl"==b,this.icon,this.iconOffset))},this);n?(w=a.getCommandKeystroke(n))&&(p=CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard,w)): -g+="off";w=this.name||this.command;var q=null,v=this.icon;z=w;this.icon&&!/\./.test(this.icon)?(z=this.icon,v=null):(this.icon&&(q=this.icon),CKEDITOR.env.hidpi&&this.iconHiDpi&&(q=this.iconHiDpi));q?(CKEDITOR.skin.addIcon(q,q),v=null):q=z;g={id:d,name:w,iconName:z,label:this.label,cls:(this.hasArrow?"cke_button_expandable ":"")+(this.className||""),state:g,ariaDisabled:"disabled"==g?"true":"false",title:this.title+(p?" ("+p.display+")":""),ariaShortcutSpace:p?"\x26nbsp;":"",ariaShortcut:p?a.lang.common.keyboardShortcut+ -" "+p.aria:"",titleJs:c.gecko&&!c.hc?"":(this.title||"").replace("'",""),hasArrow:"string"===typeof this.hasArrow&&this.hasArrow||(this.hasArrow?"true":"false"),keydownFn:r,focusFn:x,clickFn:y,style:CKEDITOR.skin.getIconStyle(q,"rtl"==a.lang.dir,v,this.iconOffset),arrowHtml:this.hasArrow?f.output():""};e.output(g,b);if(this.onRender)this.onRender();return t},setState:function(a){if(this._.state==a)return!1;this._.state=a;var b=CKEDITOR.document.getById(this._.id);return b?(b.setState(a,"cke_button"), +{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON="button";CKEDITOR.ui.button=function(a){CKEDITOR.tools.extend(this,a,{title:a.label,click:a.click||function(b){b.execCommand(a.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(a){return new CKEDITOR.ui.button(a)}};CKEDITOR.ui.button.prototype={render:function(a,b){function h(){var c=a.mode;c&&(c=this.modes[c]?void 0!==m[c]?m[c]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED, +c=a.readOnly&&!this.readOnly?CKEDITOR.TRISTATE_DISABLED:c,this.setState(c),this.refresh&&this.refresh())}var m=null,c=CKEDITOR.env,d=this._.id=CKEDITOR.tools.getNextId(),g="",n=this.command,y,v,p;this._.editor=a;var q={id:d,button:this,editor:a,focus:function(){CKEDITOR.document.getById(d).focus()},execute:function(){this.button.click(a)},attach:function(a){this.button.attach(a)}},r=CKEDITOR.tools.addFunction(function(a){if(q.onkey)return a=new CKEDITOR.dom.event(a),!1!==q.onkey(q,a.getKeystroke())}), +x=CKEDITOR.tools.addFunction(function(a){var c;q.onfocus&&(c=!1!==q.onfocus(q,new CKEDITOR.dom.event(a)));return c}),t=0;q.clickFn=y=CKEDITOR.tools.addFunction(function(){t&&(a.unlockSelection(1),t=0);q.execute();c.iOS&&a.focus()});this.modes?(m={},a.on("beforeModeUnload",function(){a.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(m[a.mode]=this._.state)},this),a.on("activeFilterChange",h,this),a.on("mode",h,this),!this.readOnly&&a.on("readOnly",h,this)):n&&(n=a.getCommand(n))&&(n.on("state",function(){this.setState(n.state)}, +this),g+=n.state==CKEDITOR.TRISTATE_ON?"on":n.state==CKEDITOR.TRISTATE_DISABLED?"disabled":"off");var z;if(this.directional)a.on("contentDirChanged",function(c){var b=CKEDITOR.document.getById(this._.id),d=b.getFirst();c=c.data;c!=a.lang.dir?b.addClass("cke_"+c):b.removeClass("cke_ltr").removeClass("cke_rtl");d.setAttribute("style",CKEDITOR.skin.getIconStyle(z,"rtl"==c,this.icon,this.iconOffset))},this);n?(v=a.getCommandKeystroke(n))&&(p=CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard,v)): +g+="off";v=this.name||this.command;var u=null,w=this.icon;z=v;this.icon&&!/\./.test(this.icon)?(z=this.icon,w=null):(this.icon&&(u=this.icon),CKEDITOR.env.hidpi&&this.iconHiDpi&&(u=this.iconHiDpi));u?(CKEDITOR.skin.addIcon(u,u),w=null):u=z;g={id:d,name:v,iconName:z,label:this.label,cls:(this.hasArrow?"cke_button_expandable ":"")+(this.className||""),state:g,ariaDisabled:"disabled"==g?"true":"false",title:this.title+(p?" ("+p.display+")":""),ariaShortcutSpace:p?"\x26nbsp;":"",ariaShortcut:p?a.lang.common.keyboardShortcut+ +" "+p.aria:"",titleJs:c.gecko&&!c.hc?"":(this.title||"").replace("'",""),hasArrow:"string"===typeof this.hasArrow&&this.hasArrow||(this.hasArrow?"true":"false"),keydownFn:r,focusFn:x,clickFn:y,style:CKEDITOR.skin.getIconStyle(u,"rtl"==a.lang.dir,w,this.iconOffset),arrowHtml:this.hasArrow?f.output():""};e.output(g,b);if(this.onRender)this.onRender();return q},setState:function(a){if(this._.state==a)return!1;this._.state=a;var b=CKEDITOR.document.getById(this._.id);return b?(b.setState(a,"cke_button"), b.setAttribute("aria-disabled",a==CKEDITOR.TRISTATE_DISABLED),this.hasArrow?b.setAttribute("aria-expanded",a==CKEDITOR.TRISTATE_ON):a===CKEDITOR.TRISTATE_ON?b.setAttribute("aria-pressed",!0):b.removeAttribute("aria-pressed"),!0):!1},getState:function(){return this._.state},toFeature:function(a){if(this._.feature)return this._.feature;var b=this;this.allowedContent||this.requiredContent||!this.command||(b=a.getCommand(this.command)||b);return this._.feature=b}};CKEDITOR.ui.prototype.addButton=function(a, -b){this.add(a,CKEDITOR.UI_BUTTON,b)}}(),function(){function b(a){function b(){for(var c=e(),d=CKEDITOR.tools.clone(a.config.toolbarGroups)||h(a),g=0;g<d.length;g++){var m=d[g];if("/"!=m){"string"==typeof m&&(m=d[g]={name:m});var t,r=m.groups;if(r)for(var x=0;x<r.length;x++)t=r[x],(t=c[t])&&f(m,t);(t=c[m.name])&&f(m,t)}}return d}function e(){var b={},c,d,g;for(c in a.ui.items)d=a.ui.items[c],g=d.toolbar||"others",g=g.split(","),d=g[0],g=parseInt(g[1]||-1,10),b[d]||(b[d]=[]),b[d].push({name:c,order:g}); -for(d in b)b[d]=b[d].sort(function(a,b){return a.order==b.order?0:0>b.order?-1:0>a.order?1:a.order<b.order?-1:1});return b}function f(b,c){if(c.length){b.items?b.items.push(a.ui.create("-")):b.items=[];for(var g;g=c.shift();)g="string"==typeof g?g:g.name,d&&-1!=CKEDITOR.tools.indexOf(d,g)||(g=a.ui.create(g))&&a.addFeature(g)&&b.items.push(g)}}function c(a){var b=[],c,d,g;for(c=0;c<a.length;++c)d=a[c],g={},"/"==d?b.push(d):CKEDITOR.tools.isArray(d)?(f(g,CKEDITOR.tools.clone(d)),b.push(g)):d.items&& -(f(g,CKEDITOR.tools.clone(d.items)),g.name=d.name,b.push(g));return b}var d=a.config.removeButtons,d=d&&d.split(","),g=a.config.toolbar;"string"==typeof g&&(g=a.config["toolbar_"+g]);return a.toolbar=g?c(g):b()}function h(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:"document",groups:["mode","document","doctools"]},{name:"clipboard",groups:["clipboard","undo"]},{name:"editing",groups:["find","selection","spellchecker"]},{name:"forms"},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]}, +b){this.add(a,CKEDITOR.UI_BUTTON,b)}}(),function(){function b(a){function b(){for(var c=e(),d=CKEDITOR.tools.clone(a.config.toolbarGroups)||h(a),g=0;g<d.length;g++){var k=d[g];if("/"!=k){"string"==typeof k&&(k=d[g]={name:k});var q,r=k.groups;if(r)for(var x=0;x<r.length;x++)q=r[x],(q=c[q])&&f(k,q);(q=c[k.name])&&f(k,q)}}return d}function e(){var c={},b,d,g;for(b in a.ui.items)d=a.ui.items[b],g=d.toolbar||"others",g=g.split(","),d=g[0],g=parseInt(g[1]||-1,10),c[d]||(c[d]=[]),c[d].push({name:b,order:g}); +for(d in c)c[d]=c[d].sort(function(a,c){return a.order==c.order?0:0>c.order?-1:0>a.order?1:a.order<c.order?-1:1});return c}function f(c,b){if(b.length){c.items?c.items.push(a.ui.create("-")):c.items=[];for(var g;g=b.shift();)g="string"==typeof g?g:g.name,d&&-1!=CKEDITOR.tools.indexOf(d,g)||(g=a.ui.create(g))&&a.addFeature(g)&&c.items.push(g)}}function c(a){var c=[],b,d,g;for(b=0;b<a.length;++b)d=a[b],g={},"/"==d?c.push(d):CKEDITOR.tools.isArray(d)?(f(g,CKEDITOR.tools.clone(d)),c.push(g)):d.items&& +(f(g,CKEDITOR.tools.clone(d.items)),g.name=d.name,c.push(g));return c}var d=a.config.removeButtons,d=d&&d.split(","),g=a.config.toolbar;"string"==typeof g&&(g=a.config["toolbar_"+g]);return a.toolbar=g?c(g):b()}function h(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:"document",groups:["mode","document","doctools"]},{name:"clipboard",groups:["clipboard","undo"]},{name:"editing",groups:["find","selection","spellchecker"]},{name:"forms"},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]}, {name:"paragraph",groups:["list","indent","blocks","align","bidi"]},{name:"links"},{name:"insert"},"/",{name:"styles"},{name:"colors"},{name:"tools"},{name:"others"},{name:"about"}])}var f=function(){this.toolbars=[];this.focusCommandExecuted=!1};f.prototype.focus=function(){for(var a=0,b;b=this.toolbars[a++];)for(var e=0,f;f=b.items[e++];)if(f.focus){f.focus();return}};var e={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(a){a.toolbox&&(a.toolbox.focusCommandExecuted=!0,CKEDITOR.env.ie||CKEDITOR.env.air? -setTimeout(function(){a.toolbox.focus()},100):a.toolbox.focus())}};CKEDITOR.plugins.add("toolbar",{requires:"button",init:function(a){var h,k=function(b,c){var d,g="rtl"==a.lang.dir,e=a.config.toolbarGroupCycling,f=g?37:39,g=g?39:37,e=void 0===e||e;switch(c){case 9:case CKEDITOR.SHIFT+9:for(;!d||!d.items.length;)if(d=9==c?(d?d.next:b.toolbar.next)||a.toolbox.toolbars[0]:(d?d.previous:b.toolbar.previous)||a.toolbox.toolbars[a.toolbox.toolbars.length-1],d.items.length)for(b=d.items[h?d.items.length- -1:0];b&&!b.focus;)(b=h?b.previous:b.next)||(d=0);b&&b.focus();return!1;case f:d=b;do d=d.next,!d&&e&&(d=b.toolbar.items[0]);while(d&&!d.focus);d?d.focus():k(b,9);return!1;case 40:return b.button&&b.button.hasArrow?b.execute():k(b,40==c?f:g),!1;case g:case 38:d=b;do d=d.previous,!d&&e&&(d=b.toolbar.items[b.toolbar.items.length-1]);while(d&&!d.focus);d?d.focus():(h=1,k(b,CKEDITOR.SHIFT+9),h=0);return!1;case 27:return a.focus(),!1;case 13:case 32:return b.execute(),!1}return!0};a.on("uiSpace",function(e){if(e.data.space== +setTimeout(function(){a.toolbox.focus()},100):a.toolbox.focus())}};CKEDITOR.plugins.add("toolbar",{requires:"button",init:function(a){var h,l=function(b,c){var d,g="rtl"==a.lang.dir,e=a.config.toolbarGroupCycling,f=g?37:39,g=g?39:37,e=void 0===e||e;switch(c){case 9:case CKEDITOR.SHIFT+9:for(;!d||!d.items.length;)if(d=9==c?(d?d.next:b.toolbar.next)||a.toolbox.toolbars[0]:(d?d.previous:b.toolbar.previous)||a.toolbox.toolbars[a.toolbox.toolbars.length-1],d.items.length)for(b=d.items[h?d.items.length- +1:0];b&&!b.focus;)(b=h?b.previous:b.next)||(d=0);b&&b.focus();return!1;case f:d=b;do d=d.next,!d&&e&&(d=b.toolbar.items[0]);while(d&&!d.focus);d?d.focus():l(b,9);return!1;case 40:return b.button&&b.button.hasArrow?b.execute():l(b,40==c?f:g),!1;case g:case 38:d=b;do d=d.previous,!d&&e&&(d=b.toolbar.items[b.toolbar.items.length-1]);while(d&&!d.focus);d?d.focus():(h=1,l(b,CKEDITOR.SHIFT+9),h=0);return!1;case 27:return a.focus(),!1;case 13:case 32:return b.execute(),!1}return!0};a.on("uiSpace",function(e){if(e.data.space== a.config.toolbarLocation){e.removeListener();a.toolbox=new f;var c=CKEDITOR.tools.getNextId(),d=['\x3cspan id\x3d"',c,'" class\x3d"cke_voice_label"\x3e',a.lang.toolbar.toolbars,"\x3c/span\x3e",'\x3cspan id\x3d"'+a.ui.spaceId("toolbox")+'" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"',c,'" onmousedown\x3d"return false;"\x3e'],c=!1!==a.config.toolbarStartupExpanded,g,h;a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&d.push('\x3cspan class\x3d"cke_toolbox_main"'+ -(c?"\x3e":' style\x3d"display:none"\x3e'));for(var m=a.toolbox.toolbars,w=b(a),p=w.length,t=0;t<p;t++){var r,x=0,u,z=w[t],q="/"!==z&&("/"===w[t+1]||t==p-1),v;if(z)if(g&&(d.push("\x3c/span\x3e"),h=g=0),"/"===z)d.push('\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e');else{v=z.items||z;for(var B=0;B<v.length;B++){var D=v[B],A;if(D){var E=function(b){b=b.render(a,d);F=x.items.push(b)-1;0<F&&(b.previous=x.items[F-1],b.previous.next=b);b.toolbar=x;b.onkey=k;b.onfocus=function(){a.toolbox.focusCommandExecuted|| -a.focus()}};if(D.type==CKEDITOR.UI_SEPARATOR)h=g&&D;else{A=!1!==D.canGroup;if(!x){r=CKEDITOR.tools.getNextId();x={id:r,items:[]};u=z.name&&(a.lang.toolbar.toolbarGroups[z.name]||z.name);d.push('\x3cspan id\x3d"',r,'" class\x3d"cke_toolbar'+(q?' cke_toolbar_last"':'"'),u?' aria-labelledby\x3d"'+r+'_label"':"",' role\x3d"toolbar"\x3e');u&&d.push('\x3cspan id\x3d"',r,'_label" class\x3d"cke_voice_label"\x3e',u,"\x3c/span\x3e");d.push('\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e');var F=m.push(x)- -1;0<F&&(x.previous=m[F-1],x.previous.next=x)}A?g||(d.push('\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e'),g=1):g&&(d.push("\x3c/span\x3e"),g=0);h&&(E(h),h=0);E(D)}}}g&&(d.push("\x3c/span\x3e"),h=g=0);x&&d.push('\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e')}}a.config.toolbarCanCollapse&&d.push("\x3c/span\x3e");if(a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var K=CKEDITOR.tools.addFunction(function(){a.execCommand("toolbarCollapse")}); -a.on("destroy",function(){CKEDITOR.tools.removeFunction(K)});a.addCommand("toolbarCollapse",{readOnly:1,exec:function(a){var b=a.ui.space("toolbar_collapser"),c=b.getPrevious(),d=a.ui.space("contents"),g=c.getParent(),e=parseInt(d.$.style.height,10),f=g.$.offsetHeight,h=b.hasClass("cke_toolbox_collapser_min");h?(c.show(),b.removeClass("cke_toolbox_collapser_min"),b.setAttribute("title",a.lang.toolbar.toolbarCollapse)):(c.hide(),b.addClass("cke_toolbox_collapser_min"),b.setAttribute("title",a.lang.toolbar.toolbarExpand)); -b.getFirst().setText(h?"â–²":"â—€");d.setStyle("height",e-(g.$.offsetHeight-f)+"px");a.fire("resize",{outerHeight:a.container.$.offsetHeight,contentsHeight:d.$.offsetHeight,outerWidth:a.container.$.offsetWidth})},modes:{wysiwyg:1,source:1}});a.setKeystroke(CKEDITOR.ALT+(CKEDITOR.env.ie||CKEDITOR.env.webkit?189:109),"toolbarCollapse");d.push('\x3ca title\x3d"'+(c?a.lang.toolbar.toolbarCollapse:a.lang.toolbar.toolbarExpand)+'" id\x3d"'+a.ui.spaceId("toolbar_collapser")+'" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser'); -c||d.push(" cke_toolbox_collapser_min");d.push('" onclick\x3d"CKEDITOR.tools.callFunction('+K+')"\x3e','\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e',"\x3c/a\x3e")}d.push("\x3c/span\x3e");e.data.html+=d.join("")}});a.on("destroy",function(){if(this.toolbox){var a,b=0,d,g,e;for(a=this.toolbox.toolbars;b<a.length;b++)for(g=a[b].items,d=0;d<g.length;d++)e=g[d],e.clickFn&&CKEDITOR.tools.removeFunction(e.clickFn),e.keyDownFn&&CKEDITOR.tools.removeFunction(e.keyDownFn)}});a.on("uiReady",function(){var b= -a.ui.space("toolbox");b&&a.focusManager.add(b,1)});a.addCommand("toolbarFocus",e);a.setKeystroke(CKEDITOR.ALT+121,"toolbarFocus");a.ui.add("-",CKEDITOR.UI_SEPARATOR,{});a.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,b){b.push('\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e');return{}}}}})}});CKEDITOR.ui.prototype.addToolbarGroup=function(a,b,e){var f=h(this.editor),c=0===b,d={name:a};if(e){if(e=CKEDITOR.tools.search(f,function(a){return a.name== -e})){!e.groups&&(e.groups=[]);if(b&&(b=CKEDITOR.tools.indexOf(e.groups,b),0<=b)){e.groups.splice(b+1,0,a);return}c?e.groups.splice(0,0,a):e.groups.push(a);return}b=null}b&&(b=CKEDITOR.tools.indexOf(f,function(a){return a.name==b}));c?f.splice(0,0,a):"number"==typeof b?f.splice(b+1,0,d):f.push(a)}}(),CKEDITOR.UI_SEPARATOR="separator",CKEDITOR.config.toolbarLocation="top","use strict",function(){function b(a,b,c){b.type||(b.type="auto");if(c&&!1===a.fire("beforePaste",b)||!b.dataValue&&b.dataTransfer.isEmpty())return!1; -b.dataValue||(b.dataValue="");if(CKEDITOR.env.gecko&&"drop"==b.method&&a.toolbox)a.once("afterPaste",function(){a.toolbox.focus()});return a.fire("paste",b)}function h(a){function c(){var b=a.editable();if(CKEDITOR.plugins.clipboard.isCustomCopyCutSupported){var d=function(b){a.getSelection().isCollapsed()||(a.readOnly&&"cut"==b.name||A.initPasteDataTransfer(b,a),b.data.preventDefault())};b.on("copy",d);b.on("cut",d);b.on("cut",function(){a.readOnly||a.extractSelectedHtml()},null,null,999)}b.on(A.mainPasteEvent, -function(a){"beforepaste"==A.mainPasteEvent&&E||v(a)});"beforepaste"==A.mainPasteEvent&&(b.on("paste",function(a){F||(f(),a.data.preventDefault(),v(a),k("paste"))}),b.on("contextmenu",h,null,null,0),b.on("beforepaste",function(a){!a.data||a.data.$.ctrlKey||a.data.$.shiftKey||h()},null,null,0));b.on("beforecut",function(){!E&&l(a)});var e;b.attachListener(CKEDITOR.env.ie?b:a.document.getDocumentElement(),"mouseup",function(){e=setTimeout(B,0)});a.on("destroy",function(){clearTimeout(e)});b.on("keyup", -B)}function d(b){return{type:b,canUndo:"cut"==b,startDisabled:!0,fakeKeystroke:"cut"==b?CKEDITOR.CTRL+88:CKEDITOR.CTRL+67,exec:function(){"cut"==this.type&&l();var b;var c=this.type;if(CKEDITOR.env.ie)b=k(c);else try{b=a.document.$.execCommand(c,!1,null)}catch(d){b=!1}b||a.showNotification(a.lang.clipboard[this.type+"Error"]);return b}}}function e(){return{canUndo:!1,async:!0,fakeKeystroke:CKEDITOR.CTRL+86,exec:function(a,c){function d(c,f){f="undefined"!==typeof f?f:!0;c?(c.method="paste",c.dataTransfer|| +(c?"\x3e":' style\x3d"display:none"\x3e'));for(var k=a.toolbox.toolbars,v=b(a),p=v.length,q=0;q<p;q++){var r,x=0,t,z=v[q],u="/"!==z&&("/"===v[q+1]||q==p-1),w;if(z)if(g&&(d.push("\x3c/span\x3e"),h=g=0),"/"===z)d.push('\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e');else{w=z.items||z;for(var B=0;B<w.length;B++){var C=w[B],A;if(C){var E=function(c){c=c.render(a,d);F=x.items.push(c)-1;0<F&&(c.previous=x.items[F-1],c.previous.next=c);c.toolbar=x;c.onkey=l;c.onfocus=function(){a.toolbox.focusCommandExecuted|| +a.focus()}};if(C.type==CKEDITOR.UI_SEPARATOR)h=g&&C;else{A=!1!==C.canGroup;if(!x){r=CKEDITOR.tools.getNextId();x={id:r,items:[]};t=z.name&&(a.lang.toolbar.toolbarGroups[z.name]||z.name);d.push('\x3cspan id\x3d"',r,'" class\x3d"cke_toolbar'+(u?' cke_toolbar_last"':'"'),t?' aria-labelledby\x3d"'+r+'_label"':"",' role\x3d"toolbar"\x3e');t&&d.push('\x3cspan id\x3d"',r,'_label" class\x3d"cke_voice_label"\x3e',t,"\x3c/span\x3e");d.push('\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e');var F=k.push(x)- +1;0<F&&(x.previous=k[F-1],x.previous.next=x)}A?g||(d.push('\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e'),g=1):g&&(d.push("\x3c/span\x3e"),g=0);h&&(E(h),h=0);E(C)}}}g&&(d.push("\x3c/span\x3e"),h=g=0);x&&d.push('\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e')}}a.config.toolbarCanCollapse&&d.push("\x3c/span\x3e");if(a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var K=CKEDITOR.tools.addFunction(function(){a.execCommand("toolbarCollapse")}); +a.on("destroy",function(){CKEDITOR.tools.removeFunction(K)});a.addCommand("toolbarCollapse",{readOnly:1,exec:function(a){var c=a.ui.space("toolbar_collapser"),b=c.getPrevious(),d=a.ui.space("contents"),g=b.getParent(),e=parseInt(d.$.style.height,10),f=g.$.offsetHeight,h=c.hasClass("cke_toolbox_collapser_min");h?(b.show(),c.removeClass("cke_toolbox_collapser_min"),c.setAttribute("title",a.lang.toolbar.toolbarCollapse)):(b.hide(),c.addClass("cke_toolbox_collapser_min"),c.setAttribute("title",a.lang.toolbar.toolbarExpand)); +c.getFirst().setText(h?"â–²":"â—€");d.setStyle("height",e-(g.$.offsetHeight-f)+"px");a.fire("resize",{outerHeight:a.container.$.offsetHeight,contentsHeight:d.$.offsetHeight,outerWidth:a.container.$.offsetWidth})},modes:{wysiwyg:1,source:1}});a.setKeystroke(CKEDITOR.ALT+(CKEDITOR.env.ie||CKEDITOR.env.webkit?189:109),"toolbarCollapse");d.push('\x3ca title\x3d"'+(c?a.lang.toolbar.toolbarCollapse:a.lang.toolbar.toolbarExpand)+'" id\x3d"'+a.ui.spaceId("toolbar_collapser")+'" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser'); +c||d.push(" cke_toolbox_collapser_min");d.push('" onclick\x3d"CKEDITOR.tools.callFunction('+K+')"\x3e','\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e',"\x3c/a\x3e")}d.push("\x3c/span\x3e");e.data.html+=d.join("")}});a.on("destroy",function(){if(this.toolbox){var a,c=0,b,g,e;for(a=this.toolbox.toolbars;c<a.length;c++)for(g=a[c].items,b=0;b<g.length;b++)e=g[b],e.clickFn&&CKEDITOR.tools.removeFunction(e.clickFn),e.keyDownFn&&CKEDITOR.tools.removeFunction(e.keyDownFn)}});a.on("uiReady",function(){var b= +a.ui.space("toolbox");b&&a.focusManager.add(b,1)});a.addCommand("toolbarFocus",e);a.setKeystroke(CKEDITOR.ALT+121,"toolbarFocus");a.ui.add("-",CKEDITOR.UI_SEPARATOR,{});a.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,c){c.push('\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e');return{}}}}})}});CKEDITOR.ui.prototype.addToolbarGroup=function(a,b,e){var f=h(this.editor),c=0===b,d={name:a};if(e){if(e=CKEDITOR.tools.search(f,function(a){return a.name== +e})){!e.groups&&(e.groups=[]);if(b&&(b=CKEDITOR.tools.indexOf(e.groups,b),0<=b)){e.groups.splice(b+1,0,a);return}c?e.groups.splice(0,0,a):e.groups.push(a);return}b=null}b&&(b=CKEDITOR.tools.indexOf(f,function(a){return a.name==b}));c?f.splice(0,0,a):"number"==typeof b?f.splice(b+1,0,d):f.push(a)}}(),CKEDITOR.UI_SEPARATOR="separator",CKEDITOR.config.toolbarLocation="top","use strict",function(){function b(a,c,b){c.type||(c.type="auto");if(b&&!1===a.fire("beforePaste",c)||!c.dataValue&&c.dataTransfer.isEmpty())return!1; +c.dataValue||(c.dataValue="");if(CKEDITOR.env.gecko&&"drop"==c.method&&a.toolbox)a.once("afterPaste",function(){a.toolbox.focus()});return a.fire("paste",c)}function h(a){function c(){var b=a.editable();if(CKEDITOR.plugins.clipboard.isCustomCopyCutSupported){var d=function(c){a.getSelection().isCollapsed()||(a.readOnly&&"cut"==c.name||A.initPasteDataTransfer(c,a),c.data.preventDefault())};b.on("copy",d);b.on("cut",d);b.on("cut",function(){a.readOnly||a.extractSelectedHtml()},null,null,999)}b.on(A.mainPasteEvent, +function(a){"beforepaste"==A.mainPasteEvent&&E||w(a)});"beforepaste"==A.mainPasteEvent&&(b.on("paste",function(a){F||(f(),a.data.preventDefault(),w(a),l("paste"))}),b.on("contextmenu",h,null,null,0),b.on("beforepaste",function(a){!a.data||a.data.$.ctrlKey||a.data.$.shiftKey||h()},null,null,0));b.on("beforecut",function(){!E&&k(a)});var e;b.attachListener(CKEDITOR.env.ie?b:a.document.getDocumentElement(),"mouseup",function(){e=setTimeout(B,0)});a.on("destroy",function(){clearTimeout(e)});b.on("keyup", +B)}function d(c){return{type:c,canUndo:"cut"==c,startDisabled:!0,fakeKeystroke:"cut"==c?CKEDITOR.CTRL+88:CKEDITOR.CTRL+67,exec:function(){"cut"==this.type&&k();var c;var b=this.type;if(CKEDITOR.env.ie)c=l(b);else try{c=a.document.$.execCommand(b,!1,null)}catch(d){c=!1}c||a.showNotification(a.lang.clipboard[this.type+"Error"]);return c}}}function e(){return{canUndo:!1,async:!0,fakeKeystroke:CKEDITOR.CTRL+86,exec:function(a,c){function d(c,f){f="undefined"!==typeof f?f:!0;c?(c.method="paste",c.dataTransfer|| (c.dataTransfer=A.initPasteDataTransfer()),b(a,c,f)):e&&!a._.forcePasteDialog&&a.showNotification(n,"info",a.config.clipboard_notificationDuration);a._.forcePasteDialog=!1;a.fire("afterCommandExec",{name:"paste",command:g,returnValue:!!c})}c="undefined"!==typeof c&&null!==c?c:{};var g=this,e="undefined"!==typeof c.notification?c.notification:!0,f=c.type,h=CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard,a.getCommandKeystroke(this)),n="string"===typeof e?e:a.lang.clipboard.pasteNotification.replace(/%1/, -'\x3ckbd aria-label\x3d"'+h.aria+'"\x3e'+h.display+"\x3c/kbd\x3e"),h="string"===typeof c?c:c.dataValue;f&&!0!==a.config.forcePasteAsPlainText&&"allow-word"!==a.config.forcePasteAsPlainText?a._.nextPasteType=f:delete a._.nextPasteType;"string"===typeof h?d({dataValue:h}):a.getClipboardData(d)}}}function f(){F=1;setTimeout(function(){F=0},100)}function h(){E=1;setTimeout(function(){E=0},10)}function k(b){var c=a.document,d=c.getBody(),e=!1,f=function(){e=!0};d.on(b,f);7<CKEDITOR.env.version?c.$.execCommand(b): -c.$.selection.createRange().execCommand(b);d.removeListener(b,f);return e}function l(){if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks){var b=a.getSelection(),c,d,e;b.getType()==CKEDITOR.SELECTION_ELEMENT&&(c=b.getSelectedElement())&&(d=b.getRanges()[0],e=a.document.createText(""),e.insertBefore(c),d.setStartBefore(e),d.setEndAfter(c),b.selectRanges([d]),setTimeout(function(){c.getParent()&&(e.remove(),b.selectElement(c))},0))}}function m(b,c){var d=a.document,e=a.editable(),f=function(a){a.cancel()},h; -if(!d.getById("cke_pastebin")){var n=a.getSelection(),k=n.createBookmarks();CKEDITOR.env.ie&&n.root.fire("selectionchange");var l=new CKEDITOR.dom.element(!CKEDITOR.env.webkit&&!e.is("body")||CKEDITOR.env.ie?"div":"body",d);l.setAttributes({id:"cke_pastebin","data-cke-temp":"1"});var r=0,d=d.getWindow();CKEDITOR.env.webkit?(e.append(l),l.addClass("cke_editable"),e.is("body")||(r="static"!=e.getComputedStyle("position")?e:CKEDITOR.dom.element.get(e.$.offsetParent),r=r.getDocumentPosition().y)):e.getAscendant(CKEDITOR.env.ie? -"body":"html",1).append(l);l.setStyles({position:"absolute",top:d.getScrollPosition().y-r+10+"px",width:"1px",height:Math.max(1,d.getViewPaneSize().height-20)+"px",overflow:"hidden",margin:0,padding:0});CKEDITOR.env.safari&&l.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select","text"));(r=l.getParent().isReadOnly())?(l.setOpacity(0),l.setAttribute("contenteditable",!0)):l.setStyle("ltr"==a.config.contentsLangDirection?"left":"right","-10000px");a.on("selectionChange",f,null,null,0);if(CKEDITOR.env.webkit|| -CKEDITOR.env.gecko)h=e.once("blur",f,null,null,-100);r&&l.focus();r=new CKEDITOR.dom.range(l);r.selectNodeContents(l);var q=r.select();CKEDITOR.env.ie&&(h=e.once("blur",function(){a.lockSelection(q)}));var u=CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function(){CKEDITOR.env.webkit&&(CKEDITOR.document.getBody().$.scrollTop=u);h&&h.removeListener();CKEDITOR.env.ie&&e.focus();n.selectBookmarks(k);l.remove();var b;CKEDITOR.env.webkit&&(b=l.getFirst())&&b.is&&b.hasClass("Apple-style-span")&& -(l=b);a.removeListener("selectionChange",f);c(l.getHtml())},0)}}function z(){if("paste"==A.mainPasteEvent)return a.fire("beforePaste",{type:"auto",method:"paste"}),!1;a.focus();f();var b=a.focusManager;b.lock();if(a.editable().fire(A.mainPasteEvent)&&!k("paste"))return b.unlock(),!1;b.unlock();return!0}function q(b){if("wysiwyg"==a.mode)switch(b.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:b=a.editable();f();"paste"==A.mainPasteEvent&&b.fire("beforepaste");break;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+ -46:a.fire("saveSnapshot"),setTimeout(function(){a.fire("saveSnapshot")},50)}}function v(c){var d={type:"auto",method:"paste",dataTransfer:A.initPasteDataTransfer(c)};d.dataTransfer.cacheData();var e=!1!==a.fire("beforePaste",d);e&&A.canClipboardApiBeTrusted(d.dataTransfer,a)?(c.data.preventDefault(),setTimeout(function(){b(a,d)},0)):m(c,function(c){d.dataValue=c.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig,"");e&&b(a,d)})}function B(){if("wysiwyg"==a.mode){var b=D("paste");a.getCommand("cut").setState(D("cut")); -a.getCommand("copy").setState(D("copy"));a.getCommand("paste").setState(b);a.fire("pasteState",b)}}function D(b){var c=a.getSelection(),c=c&&c.getRanges()[0];if((a.readOnly||c&&c.checkReadOnly())&&b in{paste:1,cut:1})return CKEDITOR.TRISTATE_DISABLED;if("paste"==b)return CKEDITOR.TRISTATE_OFF;b=a.getSelection();c=b.getRanges();return b.getType()==CKEDITOR.SELECTION_NONE||1==c.length&&c[0].collapsed?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_OFF}var A=CKEDITOR.plugins.clipboard,E=0,F=0;(function(){a.on("key", -q);a.on("contentDom",c);a.on("selectionChange",B);if(a.contextMenu){a.contextMenu.addListener(function(){return{cut:D("cut"),copy:D("copy"),paste:D("paste")}});var b=null;a.on("menuShow",function(){b&&(b.removeListener(),b=null);var c=a.contextMenu.findItemByCommandName("paste");c&&c.element&&(b=c.element.on("touchend",function(){a._.forcePasteDialog=!0}))})}if(a.ui.addButton)a.once("instanceReady",function(){a._.pasteButtons&&CKEDITOR.tools.array.forEach(a._.pasteButtons,function(b){if(b=a.ui.get(b))if(b= -CKEDITOR.document.getById(b._.id))b.on("touchend",function(){a._.forcePasteDialog=!0})})})})();(function(){function b(c,d,e,f,h){var n=a.lang.clipboard[d];a.addCommand(d,e);a.ui.addButton&&a.ui.addButton(c,{label:n,command:d,toolbar:"clipboard,"+f});a.addMenuItems&&a.addMenuItem(d,{label:n,command:d,group:"clipboard",order:h})}b("Cut","cut",d("cut"),10,1);b("Copy","copy",d("copy"),20,4);b("Paste","paste",e(),30,8);a._.pasteButtons||(a._.pasteButtons=[]);a._.pasteButtons.push("Paste")})();a.getClipboardData= -function(b,c){function d(a){a.removeListener();a.cancel();c(a.data)}function e(a){a.removeListener();a.cancel();c({type:h,dataValue:a.data.dataValue,dataTransfer:a.data.dataTransfer,method:"paste"})}var f=!1,h="auto";c||(c=b,b=null);a.on("beforePaste",function(a){a.removeListener();f=!0;h=a.data.type},null,null,1E3);a.on("paste",d,null,null,0);!1===z()&&(a.removeListener("paste",d),a._.forcePasteDialog&&f&&a.fire("pasteDialog")?(a.on("pasteDialogCommit",e),a.on("dialogHide",function(a){a.removeListener(); -a.data.removeListener("pasteDialogCommit",e);a.data._.committed||c(null)})):c(null))}}function f(a){if(CKEDITOR.env.webkit){if(!a.match(/^[^<]*$/g)&&!a.match(/^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi))return"html"}else if(CKEDITOR.env.ie){if(!a.match(/^([^<]|<br( ?\/)?>)*$/gi)&&!a.match(/^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi))return"html"}else if(CKEDITOR.env.gecko){if(!a.match(/^([^<]|<br( ?\/)?>)*$/gi))return"html"}else return"html";return"htmlifiedtext"}function e(a,b){function c(a){return CKEDITOR.tools.repeat("\x3c/p\x3e\x3cp\x3e", -~~(a/2))+(1==a%2?"\x3cbr\x3e":"")}b=b.replace(/(?!\u3000)\s+/g," ").replace(/> +</g,"\x3e\x3c").replace(/<br ?\/>/gi,"\x3cbr\x3e");b=b.replace(/<\/?[A-Z]+>/g,function(a){return a.toLowerCase()});if(b.match(/^[^<]$/))return b;CKEDITOR.env.webkit&&-1<b.indexOf("\x3cdiv\x3e")&&(b=b.replace(/^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g,"\x3cbr\x3e").replace(/^(<div>(<br>|)<\/div>){2}(?!$)/g,"\x3cdiv\x3e\x3c/div\x3e"),b.match(/<div>(<br>|)<\/div>/)&&(b="\x3cp\x3e"+b.replace(/(<div>(<br>|)<\/div>)+/g, -function(a){return c(a.split("\x3c/div\x3e\x3cdiv\x3e").length+1)})+"\x3c/p\x3e"),b=b.replace(/<\/div><div>/g,"\x3cbr\x3e"),b=b.replace(/<\/?div>/g,""));CKEDITOR.env.gecko&&a.enterMode!=CKEDITOR.ENTER_BR&&(CKEDITOR.env.gecko&&(b=b.replace(/^<br><br>$/,"\x3cbr\x3e")),-1<b.indexOf("\x3cbr\x3e\x3cbr\x3e")&&(b="\x3cp\x3e"+b.replace(/(<br>){2,}/g,function(a){return c(a.length/4)})+"\x3c/p\x3e"));return k(a,b)}function a(a){function b(){var a={},c;for(c in CKEDITOR.dtd)"$"!=c.charAt(0)&&"div"!=c&&"span"!= -c&&(a[c]=1);return a}var c={};return{get:function(d){return"plain-text"==d?c.plainText||(c.plainText=new CKEDITOR.filter(a,"br")):"semantic-content"==d?((d=c.semanticContent)||(d=new CKEDITOR.filter(a,{}),d.allow({$1:{elements:b(),attributes:!0,styles:!1,classes:!1}}),d=c.semanticContent=d),d):d?new CKEDITOR.filter(a,d):null}}}function m(a,b,c){b=CKEDITOR.htmlParser.fragment.fromHtml(b);var d=new CKEDITOR.htmlParser.basicWriter;c.applyTo(b,!0,!1,a.activeEnterMode);b.writeHtml(d);return d.getHtml()} -function k(a,b){a.enterMode==CKEDITOR.ENTER_BR?b=b.replace(/(<\/p><p>)+/g,function(a){return CKEDITOR.tools.repeat("\x3cbr\x3e",a.length/7*2)}).replace(/<\/?p>/g,""):a.enterMode==CKEDITOR.ENTER_DIV&&(b=b.replace(/<(\/)?p>/g,"\x3c$1div\x3e"));return b}function l(a){a.data.preventDefault();a.data.$.dataTransfer.dropEffect="none"}function c(a){var c=CKEDITOR.plugins.clipboard;a.on("contentDom",function(){function d(c,e,f){e.select();b(a,{dataTransfer:f,method:"drop"},1);f.sourceEditor.fire("saveSnapshot"); -f.sourceEditor.editable().extractHtmlFromRange(c);f.sourceEditor.getSelection().selectRanges([c]);f.sourceEditor.fire("saveSnapshot")}function e(d,f){d.select();b(a,{dataTransfer:f,method:"drop"},1);c.resetDragDataTransfer()}function f(b,c,d){var e={$:b.data.$,target:b.data.getTarget()};c&&(e.dragRange=c);d&&(e.dropRange=d);!1===a.fire(b.name,e)&&b.data.preventDefault()}function h(a){a.type!=CKEDITOR.NODE_ELEMENT&&(a=a.getParent());return a.getChildCount()}var k=a.editable(),l=CKEDITOR.plugins.clipboard.getDropTarget(a), -m=a.ui.space("top"),z=a.ui.space("bottom");c.preventDefaultDropOnElement(m);c.preventDefaultDropOnElement(z);k.attachListener(l,"dragstart",f);k.attachListener(a,"dragstart",c.resetDragDataTransfer,c,null,1);k.attachListener(a,"dragstart",function(b){c.initDragDataTransfer(b,a)},null,null,2);k.attachListener(a,"dragstart",function(){var b=c.dragRange=a.getSelection().getRanges()[0];CKEDITOR.env.ie&&10>CKEDITOR.env.version&&(c.dragStartContainerChildCount=b?h(b.startContainer):null,c.dragEndContainerChildCount= -b?h(b.endContainer):null)},null,null,100);k.attachListener(l,"dragend",f);k.attachListener(a,"dragend",c.initDragDataTransfer,c,null,1);k.attachListener(a,"dragend",c.resetDragDataTransfer,c,null,100);k.attachListener(l,"dragover",function(a){if(CKEDITOR.env.edge)a.data.preventDefault();else{var b=a.data.getTarget();b&&b.is&&b.is("html")?a.data.preventDefault():CKEDITOR.env.ie&&CKEDITOR.plugins.clipboard.isFileApiSupported&&a.data.$.dataTransfer.types.contains("Files")&&a.data.preventDefault()}}); -k.attachListener(l,"drop",function(b){if(!b.data.$.defaultPrevented&&(b.data.preventDefault(),!a.readOnly)){var d=b.data.getTarget();if(!d.isReadOnly()||d.type==CKEDITOR.NODE_ELEMENT&&d.is("html")){var d=c.getRangeAtDropPosition(b,a),e=c.dragRange;d&&f(b,e,d)}}},null,null,9999);k.attachListener(a,"drop",c.initDragDataTransfer,c,null,1);k.attachListener(a,"drop",function(b){if(b=b.data){var f=b.dropRange,h=b.dragRange,k=b.dataTransfer;k.getTransferType(a)==CKEDITOR.DATA_TRANSFER_INTERNAL?setTimeout(function(){c.internalDrop(h, -f,k,a)},0):k.getTransferType(a)==CKEDITOR.DATA_TRANSFER_CROSS_EDITORS?d(h,f,k):e(f,k)}},null,null,9999)})}var d;CKEDITOR.plugins.add("clipboard",{requires:"dialog,notification,toolbar",init:function(b){function d(a){if(!a||t===a.id)return!1;var b=a.getTypes(),b=1===b.length&&"Files"===b[0];a=1===a.getFilesCount();return b&&a}var k,l=a(b);b.config.forcePasteAsPlainText?k="plain-text":b.config.pasteFilter?k=b.config.pasteFilter:!CKEDITOR.env.webkit||"pasteFilter"in b.config||(k="semantic-content"); -b.pasteFilter=l.get(k);h(b);c(b);CKEDITOR.dialog.add("paste",CKEDITOR.getUrl(this.path+"dialogs/paste.js"));if(CKEDITOR.env.gecko){var p=["image/png","image/jpeg","image/gif"],t;b.on("paste",function(a){var c=a.data,e=c.dataTransfer;if(!c.dataValue&&"paste"==c.method&&d(e)&&(e=e.getFile(0),-1!=CKEDITOR.tools.indexOf(p,e.type))){var f=new FileReader;f.addEventListener("load",function(){a.data.dataValue='\x3cimg src\x3d"'+f.result+'" /\x3e';b.fire("paste",a.data)},!1);f.addEventListener("abort",function(){b.fire("paste", -a.data)},!1);f.addEventListener("error",function(){b.fire("paste",a.data)},!1);f.readAsDataURL(e);t=c.dataTransfer.id;a.stop()}},null,null,1)}b.on("paste",function(a){a.data.dataTransfer||(a.data.dataTransfer=new CKEDITOR.plugins.clipboard.dataTransfer);if(!a.data.dataValue){var c=a.data.dataTransfer,d=c.getData("text/html");if(d)a.data.dataValue=d,a.data.type="html";else if(d=c.getData("text/plain"))a.data.dataValue=b.editable().transformPlainTextToHtml(d),a.data.type="text"}},null,null,1);b.on("paste", -function(a){var b=a.data.dataValue,c=CKEDITOR.dtd.$block;-1<b.indexOf("Apple-")&&(b=b.replace(/<span class="Apple-converted-space"> <\/span>/gi," "),"html"!=a.data.type&&(b=b.replace(/<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi,function(a,b){return b.replace(/\t/g,"\x26nbsp;\x26nbsp; \x26nbsp;")})),-1<b.indexOf('\x3cbr class\x3d"Apple-interchange-newline"\x3e')&&(a.data.startsWithEOL=1,a.data.preSniffing="html",b=b.replace(/<br class="Apple-interchange-newline">/,"")),b=b.replace(/(<[^>]+) class="Apple-[^"]*"/gi, -"$1"));if(b.match(/^<[^<]+cke_(editable|contents)/i)){var d,g,e=new CKEDITOR.dom.element("div");for(e.setHtml(b);1==e.getChildCount()&&(d=e.getFirst())&&d.type==CKEDITOR.NODE_ELEMENT&&(d.hasClass("cke_editable")||d.hasClass("cke_contents"));)e=g=d;g&&(b=g.getHtml().replace(/<br>$/i,""))}CKEDITOR.env.ie?b=b.replace(/^ (?: |\r\n)?<(\w+)/g,function(b,d){return d.toLowerCase()in c?(a.data.preSniffing="html","\x3c"+d):b}):CKEDITOR.env.webkit?b=b.replace(/<\/(\w+)><div><br><\/div>$/,function(b,d){return d in -c?(a.data.endsWithEOL=1,"\x3c/"+d+"\x3e"):b}):CKEDITOR.env.gecko&&(b=b.replace(/(\s)<br>$/,"$1"));a.data.dataValue=b},null,null,3);b.on("paste",function(a){a=a.data;var c=b._.nextPasteType||a.type,d=a.dataValue,h,k=b.config.clipboard_defaultContentType||"html",n=a.dataTransfer.getTransferType(b)==CKEDITOR.DATA_TRANSFER_EXTERNAL,t=!0===b.config.forcePasteAsPlainText;h="html"==c||"html"==a.preSniffing?"html":f(d);delete b._.nextPasteType;"htmlifiedtext"==h&&(d=e(b.config,d));if("text"==c&&"html"==h)d= -m(b,d,l.get("plain-text"));else if(n&&b.pasteFilter&&!a.dontFilter||t)d=m(b,d,b.pasteFilter);a.startsWithEOL&&(d='\x3cbr data-cke-eol\x3d"1"\x3e'+d);a.endsWithEOL&&(d+='\x3cbr data-cke-eol\x3d"1"\x3e');"auto"==c&&(c="html"==h||"html"==k?"html":"text");a.type=c;a.dataValue=d;delete a.preSniffing;delete a.startsWithEOL;delete a.endsWithEOL},null,null,6);b.on("paste",function(a){a=a.data;a.dataValue&&(b.insertHtml(a.dataValue,a.type,a.range),setTimeout(function(){b.fire("afterPaste")},0))},null,null, -1E3);b.on("pasteDialog",function(a){setTimeout(function(){b.openDialog("paste",a.data)},0)})}});CKEDITOR.plugins.clipboard={isCustomCopyCutSupported:CKEDITOR.env.ie&&16>CKEDITOR.env.version||CKEDITOR.env.iOS&&605>CKEDITOR.env.version?!1:!0,isCustomDataTypesSupported:!CKEDITOR.env.ie||16<=CKEDITOR.env.version,isFileApiSupported:!CKEDITOR.env.ie||9<CKEDITOR.env.version,mainPasteEvent:CKEDITOR.env.ie&&!CKEDITOR.env.edge?"beforepaste":"paste",addPasteButton:function(a,b,c){a.ui.addButton&&(a.ui.addButton(b, -c),a._.pasteButtons||(a._.pasteButtons=[]),a._.pasteButtons.push(b))},canClipboardApiBeTrusted:function(a,b){return a.getTransferType(b)!=CKEDITOR.DATA_TRANSFER_EXTERNAL||CKEDITOR.env.chrome&&!a.isEmpty()||CKEDITOR.env.gecko&&(a.getData("text/html")||a.getFilesCount())||CKEDITOR.env.safari&&603<=CKEDITOR.env.version&&!CKEDITOR.env.iOS||CKEDITOR.env.iOS&&605<=CKEDITOR.env.version||CKEDITOR.env.edge&&16<=CKEDITOR.env.version?!0:!1},getDropTarget:function(a){var b=a.editable();return CKEDITOR.env.ie&& -9>CKEDITOR.env.version||b.isInline()?b:a.document},fixSplitNodesAfterDrop:function(a,b,c,d){function e(a,c,d){var g=a;g.type==CKEDITOR.NODE_TEXT&&(g=a.getParent());if(g.equals(c)&&d!=c.getChildCount())return a=b.startContainer.getChild(b.startOffset-1),c=b.startContainer.getChild(b.startOffset),a&&a.type==CKEDITOR.NODE_TEXT&&c&&c.type==CKEDITOR.NODE_TEXT&&(d=a.getLength(),a.setText(a.getText()+c.getText()),c.remove(),b.setStart(a,d),b.collapse(!0)),!0}var f=b.startContainer;"number"==typeof d&&"number"== -typeof c&&f.type==CKEDITOR.NODE_ELEMENT&&(e(a.startContainer,f,c)||e(a.endContainer,f,d))},isDropRangeAffectedByDragRange:function(a,b){var c=b.startContainer,d=b.endOffset;return a.endContainer.equals(c)&&a.endOffset<=d||a.startContainer.getParent().equals(c)&&a.startContainer.getIndex()<d||a.endContainer.getParent().equals(c)&&a.endContainer.getIndex()<d?!0:!1},internalDrop:function(a,c,d,e){var f=CKEDITOR.plugins.clipboard,h=e.editable(),k,l;e.fire("saveSnapshot");e.fire("lockSnapshot",{dontUpdate:1}); -CKEDITOR.env.ie&&10>CKEDITOR.env.version&&this.fixSplitNodesAfterDrop(a,c,f.dragStartContainerChildCount,f.dragEndContainerChildCount);(l=this.isDropRangeAffectedByDragRange(a,c))||(k=a.createBookmark(!1));f=c.clone().createBookmark(!1);l&&(k=a.createBookmark(!1));a=k.startNode;c=k.endNode;l=f.startNode;c&&a.getPosition(l)&CKEDITOR.POSITION_PRECEDING&&c.getPosition(l)&CKEDITOR.POSITION_FOLLOWING&&l.insertBefore(a);a=e.createRange();a.moveToBookmark(k);h.extractHtmlFromRange(a,1);c=e.createRange(); -f.startNode.getCommonAncestor(h)||(f=e.getSelection().createBookmarks()[0]);c.moveToBookmark(f);b(e,{dataTransfer:d,method:"drop",range:c},1);e.fire("unlockSnapshot")},getRangeAtDropPosition:function(a,b){var c=a.data.$,d=c.clientX,e=c.clientY,f=b.getSelection(!0).getRanges()[0],h=b.createRange();if(a.data.testRange)return a.data.testRange;if(document.caretRangeFromPoint&&b.document.$.caretRangeFromPoint(d,e))c=b.document.$.caretRangeFromPoint(d,e),h.setStart(CKEDITOR.dom.node(c.startContainer),c.startOffset), -h.collapse(!0);else if(c.rangeParent)h.setStart(CKEDITOR.dom.node(c.rangeParent),c.rangeOffset),h.collapse(!0);else{if(CKEDITOR.env.ie&&8<CKEDITOR.env.version&&f&&b.editable().hasFocus)return f;if(document.body.createTextRange){b.focus();c=b.document.getBody().$.createTextRange();try{for(var k=!1,l=0;20>l&&!k;l++){if(!k)try{c.moveToPoint(d,e-l),k=!0}catch(m){}if(!k)try{c.moveToPoint(d,e+l),k=!0}catch(q){}}if(k){var v="cke-temp-"+(new Date).getTime();c.pasteHTML('\x3cspan id\x3d"'+v+'"\x3e​\x3c/span\x3e'); -var B=b.document.getById(v);h.moveToPosition(B,CKEDITOR.POSITION_BEFORE_START);B.remove()}else{var D=b.document.$.elementFromPoint(d,e),A=new CKEDITOR.dom.element(D),E;if(A.equals(b.editable())||"html"==A.getName())return f&&f.startContainer&&!f.startContainer.equals(b.editable())?f:null;E=A.getClientRect();d<E.left?h.setStartAt(A,CKEDITOR.POSITION_AFTER_START):h.setStartAt(A,CKEDITOR.POSITION_BEFORE_END);h.collapse(!0)}}catch(F){return null}}else return null}return h},initDragDataTransfer:function(a, -b){var c=a.data.$?a.data.$.dataTransfer:null,d=new this.dataTransfer(c,b);"dragstart"===a.name&&d.storeId();c?this.dragData&&d.id==this.dragData.id?d=this.dragData:this.dragData=d:this.dragData?d=this.dragData:this.dragData=d;a.data.dataTransfer=d},resetDragDataTransfer:function(){this.dragData=null},initPasteDataTransfer:function(a,b){if(this.isCustomCopyCutSupported){if(a&&a.data&&a.data.$){var c=a.data.$.clipboardData,d=new this.dataTransfer(c,b);"copy"!==a.name&&"cut"!==a.name||d.storeId();this.copyCutData&& -d.id==this.copyCutData.id?(d=this.copyCutData,d.$=c):this.copyCutData=d;return d}return new this.dataTransfer(null,b)}return new this.dataTransfer(CKEDITOR.env.edge&&a&&a.data.$&&a.data.$.clipboardData||null,b)},preventDefaultDropOnElement:function(a){a&&a.on("dragover",l)}};d=CKEDITOR.plugins.clipboard.isCustomDataTypesSupported?"cke/id":"Text";CKEDITOR.plugins.clipboard.dataTransfer=function(a,b){a&&(this.$=a);this._={metaRegExp:/^<meta.*?>/i,fragmentRegExp:/\s*\x3c!--StartFragment--\x3e|\x3c!--EndFragment--\x3e\s*/g, -data:{},files:[],nativeHtmlCache:"",normalizeType:function(a){a=a.toLowerCase();return"text"==a||"text/plain"==a?"Text":"url"==a?"URL":a}};this._.fallbackDataTransfer=new CKEDITOR.plugins.clipboard.fallbackDataTransfer(this);this.id=this.getData(d);this.id||(this.id="Text"==d?"":"cke-"+CKEDITOR.tools.getUniqueId());b&&(this.sourceEditor=b,this.setData("text/html",b.getSelectedHtml(1)),"Text"==d||this.getData("text/plain")||this.setData("text/plain",b.getSelection().getSelectedText()))};CKEDITOR.DATA_TRANSFER_INTERNAL= -1;CKEDITOR.DATA_TRANSFER_CROSS_EDITORS=2;CKEDITOR.DATA_TRANSFER_EXTERNAL=3;CKEDITOR.plugins.clipboard.dataTransfer.prototype={getData:function(a,b){a=this._.normalizeType(a);var c="text/html"==a&&b?this._.nativeHtmlCache:this._.data[a];if(void 0===c||null===c||""===c){if(this._.fallbackDataTransfer.isRequired())c=this._.fallbackDataTransfer.getData(a,b);else try{c=this.$.getData(a)||""}catch(d){c=""}"text/html"!=a||b||(c=this._stripHtml(c))}"Text"==a&&CKEDITOR.env.gecko&&this.getFilesCount()&&"file://"== -c.substring(0,7)&&(c="");if("string"===typeof c)var e=c.indexOf("\x3c/html\x3e"),c=-1!==e?c.substring(0,e+7):c;return c},setData:function(a,b){a=this._.normalizeType(a);"text/html"==a?(this._.data[a]=this._stripHtml(b),this._.nativeHtmlCache=b):this._.data[a]=b;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported||"URL"==a||"Text"==a)if("Text"==d&&"Text"==a&&(this.id=b),this._.fallbackDataTransfer.isRequired())this._.fallbackDataTransfer.setData(a,b);else try{this.$.setData(a,b)}catch(c){}},storeId:function(){"Text"!== -d&&this.setData(d,this.id)},getTransferType:function(a){return this.sourceEditor?this.sourceEditor==a?CKEDITOR.DATA_TRANSFER_INTERNAL:CKEDITOR.DATA_TRANSFER_CROSS_EDITORS:CKEDITOR.DATA_TRANSFER_EXTERNAL},cacheData:function(){function a(c){c=b._.normalizeType(c);var d=b.getData(c);"text/html"==c&&(b._.nativeHtmlCache=b.getData(c,!0),d=b._stripHtml(d));d&&(b._.data[c]=d)}if(this.$){var b=this,c,d;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){if(this.$.types)for(c=0;c<this.$.types.length;c++)a(this.$.types[c])}else a("Text"), -a("URL");d=this._getImageFromClipboard();if(this.$&&this.$.files||d){this._.files=[];if(this.$.files&&this.$.files.length)for(c=0;c<this.$.files.length;c++)this._.files.push(this.$.files[c]);0===this._.files.length&&d&&this._.files.push(d)}}},getFilesCount:function(){return this._.files.length?this._.files.length:this.$&&this.$.files&&this.$.files.length?this.$.files.length:this._getImageFromClipboard()?1:0},getFile:function(a){return this._.files.length?this._.files[a]:this.$&&this.$.files&&this.$.files.length? -this.$.files[a]:0===a?this._getImageFromClipboard():void 0},isEmpty:function(){var a={},b;if(this.getFilesCount())return!1;CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(this._.data),function(b){a[b]=1});if(this.$)if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){if(this.$.types)for(var c=0;c<this.$.types.length;c++)a[this.$.types[c]]=1}else a.Text=1,a.URL=1;"Text"!=d&&(a[d]=0);for(b in a)if(a[b]&&""!==this.getData(b))return!1;return!0},getTypes:function(){return this.$&&this.$.types? -[].slice.call(this.$.types):[]},_getImageFromClipboard:function(){var a;try{if(this.$&&this.$.items&&this.$.items[0]&&(a=this.$.items[0].getAsFile())&&a.type)return a}catch(b){}},_stripHtml:function(a){function b(a){var c=new CKEDITOR.htmlParser,d,g;c.onTagOpen=function(a){"body"===a&&(d=c._.htmlPartsRegex.lastIndex)};c.onTagClose=function(a){"body"===a&&(g=c._.htmlPartsRegex.lastIndex)};c.parse(a);return"number"!==typeof d||"number"!==typeof g?a:a.substring(d,g).replace(/<\/body\s*>$/gi,"")}a&&a.length&& -(a=b(a),a=a.replace(this._.metaRegExp,""),a=a.replace(this._.fragmentRegExp,""));return a}};CKEDITOR.plugins.clipboard.fallbackDataTransfer=function(a){this._dataTransfer=a;this._customDataFallbackType="text/html"};CKEDITOR.plugins.clipboard.fallbackDataTransfer._isCustomMimeTypeSupported=null;CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes=[];CKEDITOR.plugins.clipboard.fallbackDataTransfer.prototype={isRequired:function(){var a=CKEDITOR.plugins.clipboard.fallbackDataTransfer,b=this._dataTransfer.$; -if(null===a._isCustomMimeTypeSupported)if(b){a._isCustomMimeTypeSupported=!1;if(CKEDITOR.env.edge&&17<=CKEDITOR.env.version)return!0;try{b.setData("cke/mimetypetest","cke test value"),a._isCustomMimeTypeSupported="cke test value"===b.getData("cke/mimetypetest"),b.clearData("cke/mimetypetest")}catch(c){}}else return!1;return!a._isCustomMimeTypeSupported},getData:function(a,b){var c=this._getData(this._customDataFallbackType,!0);if(b)return c;var c=this._extractDataComment(c),d=null,d=a===this._customDataFallbackType? -c.content:c.data&&c.data[a]?c.data[a]:this._getData(a,!0);return null!==d?d:""},setData:function(a,b){var c=a===this._customDataFallbackType;c&&(b=this._applyDataComment(b,this._getFallbackTypeData()));var d=b,e=this._dataTransfer.$;try{e.setData(a,d),c&&(this._dataTransfer._.nativeHtmlCache=d)}catch(f){if(this._isUnsupportedMimeTypeError(f)){c=CKEDITOR.plugins.clipboard.fallbackDataTransfer;-1===CKEDITOR.tools.indexOf(c._customTypes,a)&&c._customTypes.push(a);var c=this._getFallbackTypeContent(), -h=this._getFallbackTypeData();h[a]=d;try{d=this._applyDataComment(c,h),e.setData(this._customDataFallbackType,d),this._dataTransfer._.nativeHtmlCache=d}catch(k){d=""}}}return d},_getData:function(a,b){var c=this._dataTransfer._.data;if(!b&&c[a])return c[a];try{return this._dataTransfer.$.getData(a)}catch(d){return null}},_getFallbackTypeContent:function(){var a=this._dataTransfer._.data[this._customDataFallbackType];a||(a=this._extractDataComment(this._getData(this._customDataFallbackType,!0)).content); -return a},_getFallbackTypeData:function(){var a=CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes,b=this._extractDataComment(this._getData(this._customDataFallbackType,!0)).data||{},c=this._dataTransfer._.data;CKEDITOR.tools.array.forEach(a,function(a){void 0!==c[a]?b[a]=c[a]:void 0!==b[a]&&(b[a]=b[a])},this);return b},_isUnsupportedMimeTypeError:function(a){return a.message&&-1!==a.message.search(/element not found/gi)},_extractDataComment:function(a){var b={data:null,content:a||""};if(a&& -16<a.length){var c;(c=/\x3c!--cke-data:(.*?)--\x3e/g.exec(a))&&c[1]&&(b.data=JSON.parse(decodeURIComponent(c[1])),b.content=a.replace(c[0],""))}return b},_applyDataComment:function(a,b){var c="";b&&CKEDITOR.tools.object.keys(b).length&&(c="\x3c!--cke-data:"+encodeURIComponent(JSON.stringify(b))+"--\x3e");return c+(a&&a.length?a:"")}}}(),CKEDITOR.config.clipboard_notificationDuration=1E4,function(){CKEDITOR.plugins.add("panel",{beforeInit:function(b){b.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}}); -CKEDITOR.UI_PANEL="panel";CKEDITOR.ui.panel=function(b,a){a&&CKEDITOR.tools.extend(this,a);CKEDITOR.tools.extend(this,{className:"",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=b;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(b){return new CKEDITOR.ui.panel(b)}};var b=CKEDITOR.addTemplate("panel",'\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e'), -h=CKEDITOR.addTemplate("panel-frame",'\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e'),f=CKEDITOR.addTemplate("panel-frame-inner",'\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e');CKEDITOR.ui.panel.prototype={render:function(e, -a){var m={editorId:e.id,id:this.id,langCode:e.langCode,dir:e.lang.dir,cls:this.className,frame:"",env:CKEDITOR.env.cssClass,"z-index":e.config.baseFloatZIndex+1};this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+"_frame"),b=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&b.setStyles({overflow:"scroll","-webkit-overflow-scrolling":"touch"});b=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded=!0;if(this.onLoad)this.onLoad()}, -this));a.write(f.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:"window.parent.CKEDITOR.tools.callFunction("+b+");"},m)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on("keydown",function(a){var b=a.data.getKeystroke(),c=this.document.getById(this.id).getAttribute("dir");if("input"!==a.data.getTarget().getName()||37!==b&&39!==b)this._.onKeyDown&&!1===this._.onKeyDown(b)?"input"===a.data.getTarget().getName()&&32===b||a.data.preventDefault():(27==b||b==("rtl"==c?39:37))&& -this.onEscape&&!1===this.onEscape(b)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(b)}else a=this.document.getById(this.id);this._.holder=a}return a};if(this.isFramed){var k=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie&&!CKEDITOR.env.edge?"javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())":"";m.frame=h.output({id:this.id+"_frame",src:k})}k=b.output(m);a&& -a.push(k);return k},addBlock:function(b,a){a=this._.blocks[b]=a instanceof CKEDITOR.ui.panel.block?a:new CKEDITOR.ui.panel.block(this.getHolderElement(),a);this._.currentBlock||this.showBlock(b);return a},getBlock:function(b){return this._.blocks[b]},showBlock:function(b){b=this._.blocks[b];var a=this._.currentBlock,f=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+"_frame");a&&a.hide();this._.currentBlock=b;CKEDITOR.fire("ariaWidget",f);b._.focusIndex=-1;this._.onKeyDown= -b.onKeyDown&&CKEDITOR.tools.bind(b.onKeyDown,b);b.show();return b},destroy:function(){this.element&&this.element.remove()}};CKEDITOR.ui.panel.block=CKEDITOR.tools.createClass({$:function(b,a){this.element=b.append(b.getDocument().createElement("div",{attributes:{tabindex:-1,"class":"cke_panel_block"},styles:{display:"none"}}));a&&CKEDITOR.tools.extend(this,a);this.element.setAttributes({role:this.attributes.role||"presentation","aria-label":this.attributes["aria-label"],title:this.attributes.title|| -this.attributes["aria-label"]});this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()},_:{markItem:function(b){-1!=b&&(b=this._.getItems().getItem(this._.focusIndex=b),CKEDITOR.env.webkit&&b.getDocument().getWindow().focus(),b.focus(),this.onMark&&this.onMark(b))},markFirstDisplayed:function(b){for(var a=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&"none"==a.getStyle("display")},f=this._.getItems(),h,l,c=f.count()-1;0<=c;c--)if(h=f.getItem(c),h.getAscendant(a)||(l=h,this._.focusIndex= -c),"true"==h.getAttribute("aria-selected")){l=h;this._.focusIndex=c;break}l&&(b&&b(),CKEDITOR.env.webkit&&l.getDocument().getWindow().focus(),l.focus(),this.onMark&&this.onMark(l))},getItems:function(){return this.element.find("a,input")}},proto:{show:function(){this.element.setStyle("display","")},hide:function(){this.onHide&&!0===this.onHide.call(this)||this.element.setStyle("display","none")},onKeyDown:function(b,a){var f=this.keys[b];switch(f){case "next":for(var h=this._.focusIndex,f=this._.getItems(), -l;l=f.getItem(++h);)if(l.getAttribute("_cke_focus")&&l.$.offsetWidth){this._.focusIndex=h;l.focus(!0);break}return l||a?!1:(this._.focusIndex=-1,this.onKeyDown(b,1));case "prev":h=this._.focusIndex;for(f=this._.getItems();0<h&&(l=f.getItem(--h));){if(l.getAttribute("_cke_focus")&&l.$.offsetWidth){this._.focusIndex=h;l.focus(!0);break}l=null}return l||a?!1:(this._.focusIndex=f.count(),this.onKeyDown(b,1));case "click":case "mouseup":return h=this._.focusIndex,(l=0<=h&&this._.getItems().getItem(h))&& -l.fireEventHandler(f,{button:CKEDITOR.tools.normalizeMouseButton(CKEDITOR.MOUSE_BUTTON_LEFT,!0)}),!1}return!0}}})}(),CKEDITOR.plugins.add("floatpanel",{requires:"panel"}),function(){function b(b,e,a,m,k){k=CKEDITOR.tools.genKey(e.getUniqueId(),a.getUniqueId(),b.lang.dir,b.uiColor||"",m.css||"",k||"");var l=h[k];l||(l=h[k]=new CKEDITOR.ui.panel(e,m),l.element=a.append(CKEDITOR.dom.element.createFromHtml(l.render(b),e)),l.element.setStyles({display:"none",position:"absolute"}));return l}var h={};CKEDITOR.ui.floatPanel= -CKEDITOR.tools.createClass({$:function(f,e,a,h){function k(){g.hide()}a.forceIFrame=1;a.toolbarRelated&&f.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&(e=CKEDITOR.document.getById("cke_"+f.name));var l=e.getDocument();h=b(f,l,e,a,h||0);var c=h.element,d=c.getFirst(),g=this;c.disableContextMenu();this.element=c;this._={editor:f,panel:h,parentElement:e,definition:a,document:l,iframe:d,children:[],dir:f.lang.dir,showBlockParams:null,markFirst:void 0!==a.markFirst?a.markFirst:!0};f.on("mode",k);f.on("resize", -k);l.getWindow().on("resize",function(){this.reposition()},this)},proto:{addBlock:function(b,e){return this._.panel.addBlock(b,e)},addListBlock:function(b,e){return this._.panel.addListBlock(b,e)},getBlock:function(b){return this._.panel.getBlock(b)},showBlock:function(b,e,a,h,k,l){var c=this._.panel,d=c.showBlock(b);this._.showBlockParams=[].slice.call(arguments);this.allowBlur(!1);var g=this._.editor.editable();this._.returnFocus=g.hasFocus?g:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement); -this._.hideTimeout=0;var n=this.element,g=this._.iframe,g=CKEDITOR.env.ie&&!CKEDITOR.env.edge?g:new CKEDITOR.dom.window(g.$.contentWindow),y=n.getDocument(),w=this._.parentElement.getPositionedAncestor(),p=e.getDocumentPosition(y),y=w?w.getDocumentPosition(y):{x:0,y:0},t="rtl"==this._.dir,r=p.x+(h||0)-y.x,x=p.y+(k||0)-y.y;!t||1!=a&&4!=a?t||2!=a&&3!=a||(r+=e.$.offsetWidth-1):r+=e.$.offsetWidth;if(3==a||4==a)x+=e.$.offsetHeight-1;this._.panel._.offsetParentId=e.getId();n.setStyles({top:x+"px",left:0, -display:""});n.setOpacity(0);n.getFirst().removeStyle("width");this._.editor.focusManager.add(g);this._.blurSet||(CKEDITOR.event.useCapture=!0,g.on("blur",function(a){function b(){delete this._.returnFocus;this.hide()}this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&&this.visible&&!this._.activeChild&&(CKEDITOR.env.iOS?this._.hideTimeout||(this._.hideTimeout=CKEDITOR.tools.setTimeout(b,0,this)):b.call(this))},this),g.on("focus",function(){this._.focused=!0;this.hideChild();this.allowBlur(!0)}, +'\x3ckbd aria-label\x3d"'+h.aria+'"\x3e'+h.display+"\x3c/kbd\x3e"),h="string"===typeof c?c:c.dataValue;f&&!0!==a.config.forcePasteAsPlainText&&"allow-word"!==a.config.forcePasteAsPlainText?a._.nextPasteType=f:delete a._.nextPasteType;"string"===typeof h?d({dataValue:h}):a.getClipboardData(d)}}}function f(){F=1;setTimeout(function(){F=0},100)}function h(){E=1;setTimeout(function(){E=0},10)}function l(c){var b=a.document,d=b.getBody(),e=!1,f=function(){e=!0};d.on(c,f);7<CKEDITOR.env.version?b.$.execCommand(c): +b.$.selection.createRange().execCommand(c);d.removeListener(c,f);return e}function k(){if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks){var c=a.getSelection(),b,d,e;c.getType()==CKEDITOR.SELECTION_ELEMENT&&(b=c.getSelectedElement())&&(d=c.getRanges()[0],e=a.document.createText(""),e.insertBefore(b),d.setStartBefore(e),d.setEndAfter(b),c.selectRanges([d]),setTimeout(function(){b.getParent()&&(e.remove(),c.selectElement(b))},0))}}function m(c,b){var d=a.document,e=a.editable(),f=function(a){a.cancel()},h; +if(!d.getById("cke_pastebin")){var n=a.getSelection(),l=n.createBookmarks();CKEDITOR.env.ie&&n.root.fire("selectionchange");var k=new CKEDITOR.dom.element(!CKEDITOR.env.webkit&&!e.is("body")||CKEDITOR.env.ie?"div":"body",d);k.setAttributes({id:"cke_pastebin","data-cke-temp":"1"});var r=0,d=d.getWindow();CKEDITOR.env.webkit?(e.append(k),k.addClass("cke_editable"),e.is("body")||(r="static"!=e.getComputedStyle("position")?e:CKEDITOR.dom.element.get(e.$.offsetParent),r=r.getDocumentPosition().y)):e.getAscendant(CKEDITOR.env.ie? +"body":"html",1).append(k);k.setStyles({position:"absolute",top:d.getScrollPosition().y-r+10+"px",width:"1px",height:Math.max(1,d.getViewPaneSize().height-20)+"px",overflow:"hidden",margin:0,padding:0});CKEDITOR.env.safari&&k.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select","text"));(r=k.getParent().isReadOnly())?(k.setOpacity(0),k.setAttribute("contenteditable",!0)):k.setStyle("ltr"==a.config.contentsLangDirection?"left":"right","-10000px");a.on("selectionChange",f,null,null,0);if(CKEDITOR.env.webkit|| +CKEDITOR.env.gecko)h=e.once("blur",f,null,null,-100);r&&k.focus();r=new CKEDITOR.dom.range(k);r.selectNodeContents(k);var t=r.select();CKEDITOR.env.ie&&(h=e.once("blur",function(){a.lockSelection(t)}));var q=CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function(){CKEDITOR.env.webkit&&(CKEDITOR.document.getBody().$.scrollTop=q);h&&h.removeListener();CKEDITOR.env.ie&&e.focus();n.selectBookmarks(l);k.remove();var c;CKEDITOR.env.webkit&&(c=k.getFirst())&&c.is&&c.hasClass("Apple-style-span")&& +(k=c);a.removeListener("selectionChange",f);b(k.getHtml())},0)}}function z(){if("paste"==A.mainPasteEvent)return a.fire("beforePaste",{type:"auto",method:"paste"}),!1;a.focus();f();var c=a.focusManager;c.lock();if(a.editable().fire(A.mainPasteEvent)&&!l("paste"))return c.unlock(),!1;c.unlock();return!0}function u(c){if("wysiwyg"==a.mode)switch(c.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:c=a.editable();f();"paste"==A.mainPasteEvent&&c.fire("beforepaste");break;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+ +46:a.fire("saveSnapshot"),setTimeout(function(){a.fire("saveSnapshot")},50)}}function w(c){var d={type:"auto",method:"paste",dataTransfer:A.initPasteDataTransfer(c)};d.dataTransfer.cacheData();var e=!1!==a.fire("beforePaste",d);e&&A.canClipboardApiBeTrusted(d.dataTransfer,a)?(c.data.preventDefault(),setTimeout(function(){b(a,d)},0)):m(c,function(c){d.dataValue=c.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig,"");e&&b(a,d)})}function B(){if("wysiwyg"==a.mode){var c=C("paste");a.getCommand("cut").setState(C("cut")); +a.getCommand("copy").setState(C("copy"));a.getCommand("paste").setState(c);a.fire("pasteState",c)}}function C(c){var b=a.getSelection(),b=b&&b.getRanges()[0];if((a.readOnly||b&&b.checkReadOnly())&&c in{paste:1,cut:1})return CKEDITOR.TRISTATE_DISABLED;if("paste"==c)return CKEDITOR.TRISTATE_OFF;c=a.getSelection();b=c.getRanges();return c.getType()==CKEDITOR.SELECTION_NONE||1==b.length&&b[0].collapsed?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_OFF}var A=CKEDITOR.plugins.clipboard,E=0,F=0;(function(){a.on("key", +u);a.on("contentDom",c);a.on("selectionChange",B);if(a.contextMenu){a.contextMenu.addListener(function(){return{cut:C("cut"),copy:C("copy"),paste:C("paste")}});var b=null;a.on("menuShow",function(){b&&(b.removeListener(),b=null);var c=a.contextMenu.findItemByCommandName("paste");c&&c.element&&(b=c.element.on("touchend",function(){a._.forcePasteDialog=!0}))})}if(a.ui.addButton)a.once("instanceReady",function(){a._.pasteButtons&&CKEDITOR.tools.array.forEach(a._.pasteButtons,function(c){if(c=a.ui.get(c))if(c= +CKEDITOR.document.getById(c._.id))c.on("touchend",function(){a._.forcePasteDialog=!0})})})})();(function(){function c(b,d,e,f,h){var n=a.lang.clipboard[d];a.addCommand(d,e);a.ui.addButton&&a.ui.addButton(b,{label:n,command:d,toolbar:"clipboard,"+f});a.addMenuItems&&a.addMenuItem(d,{label:n,command:d,group:"clipboard",order:h})}c("Cut","cut",d("cut"),10,1);c("Copy","copy",d("copy"),20,4);c("Paste","paste",e(),30,8);a._.pasteButtons||(a._.pasteButtons=[]);a._.pasteButtons.push("Paste")})();a.getClipboardData= +function(c,b){function d(a){a.removeListener();a.cancel();b(a.data)}function e(a){a.removeListener();a.cancel();b({type:h,dataValue:a.data.dataValue,dataTransfer:a.data.dataTransfer,method:"paste"})}var f=!1,h="auto";b||(b=c,c=null);a.on("beforePaste",function(a){a.removeListener();f=!0;h=a.data.type},null,null,1E3);a.on("paste",d,null,null,0);!1===z()&&(a.removeListener("paste",d),a._.forcePasteDialog&&f&&a.fire("pasteDialog")?(a.on("pasteDialogCommit",e),a.on("dialogHide",function(a){a.removeListener(); +a.data.removeListener("pasteDialogCommit",e);a.data._.committed||b(null)})):b(null))}}function f(a){if(CKEDITOR.env.webkit){if(!a.match(/^[^<]*$/g)&&!a.match(/^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi))return"html"}else if(CKEDITOR.env.ie){if(!a.match(/^([^<]|<br( ?\/)?>)*$/gi)&&!a.match(/^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi))return"html"}else if(CKEDITOR.env.gecko){if(!a.match(/^([^<]|<br( ?\/)?>)*$/gi))return"html"}else return"html";return"htmlifiedtext"}function e(a,c){function b(a){return CKEDITOR.tools.repeat("\x3c/p\x3e\x3cp\x3e", +~~(a/2))+(1==a%2?"\x3cbr\x3e":"")}c=c.replace(/(?!\u3000)\s+/g," ").replace(/> +</g,"\x3e\x3c").replace(/<br ?\/>/gi,"\x3cbr\x3e");c=c.replace(/<\/?[A-Z]+>/g,function(a){return a.toLowerCase()});if(c.match(/^[^<]$/))return c;CKEDITOR.env.webkit&&-1<c.indexOf("\x3cdiv\x3e")&&(c=c.replace(/^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g,"\x3cbr\x3e").replace(/^(<div>(<br>|)<\/div>){2}(?!$)/g,"\x3cdiv\x3e\x3c/div\x3e"),c.match(/<div>(<br>|)<\/div>/)&&(c="\x3cp\x3e"+c.replace(/(<div>(<br>|)<\/div>)+/g, +function(a){return b(a.split("\x3c/div\x3e\x3cdiv\x3e").length+1)})+"\x3c/p\x3e"),c=c.replace(/<\/div><div>/g,"\x3cbr\x3e"),c=c.replace(/<\/?div>/g,""));CKEDITOR.env.gecko&&a.enterMode!=CKEDITOR.ENTER_BR&&(CKEDITOR.env.gecko&&(c=c.replace(/^<br><br>$/,"\x3cbr\x3e")),-1<c.indexOf("\x3cbr\x3e\x3cbr\x3e")&&(c="\x3cp\x3e"+c.replace(/(<br>){2,}/g,function(a){return b(a.length/4)})+"\x3c/p\x3e"));return l(a,c)}function a(a){function c(){var a={},b;for(b in CKEDITOR.dtd)"$"!=b.charAt(0)&&"div"!=b&&"span"!= +b&&(a[b]=1);return a}var b={};return{get:function(d){return"plain-text"==d?b.plainText||(b.plainText=new CKEDITOR.filter(a,"br")):"semantic-content"==d?((d=b.semanticContent)||(d=new CKEDITOR.filter(a,{}),d.allow({$1:{elements:c(),attributes:!0,styles:!1,classes:!1}}),d=b.semanticContent=d),d):d?new CKEDITOR.filter(a,d):null}}}function k(a,c,b){c=CKEDITOR.htmlParser.fragment.fromHtml(c);var d=new CKEDITOR.htmlParser.basicWriter;b.applyTo(c,!0,!1,a.activeEnterMode);c.writeHtml(d);return d.getHtml()} +function l(a,c){a.enterMode==CKEDITOR.ENTER_BR?c=c.replace(/(<\/p><p>)+/g,function(a){return CKEDITOR.tools.repeat("\x3cbr\x3e",a.length/7*2)}).replace(/<\/?p>/g,""):a.enterMode==CKEDITOR.ENTER_DIV&&(c=c.replace(/<(\/)?p>/g,"\x3c$1div\x3e"));return c}function m(a){a.data.preventDefault();a.data.$.dataTransfer.dropEffect="none"}function c(a){var c=CKEDITOR.plugins.clipboard;a.on("contentDom",function(){function d(c,e,f){e.select();b(a,{dataTransfer:f,method:"drop"},1);f.sourceEditor.fire("saveSnapshot"); +f.sourceEditor.editable().extractHtmlFromRange(c);f.sourceEditor.getSelection().selectRanges([c]);f.sourceEditor.fire("saveSnapshot")}function e(d,f){d.select();b(a,{dataTransfer:f,method:"drop"},1);c.resetDragDataTransfer()}function f(c,b,d){var e={$:c.data.$,target:c.data.getTarget()};b&&(e.dragRange=b);d&&(e.dropRange=d);!1===a.fire(c.name,e)&&c.data.preventDefault()}function h(a){a.type!=CKEDITOR.NODE_ELEMENT&&(a=a.getParent());return a.getChildCount()}var l=a.editable(),k=CKEDITOR.plugins.clipboard.getDropTarget(a), +m=a.ui.space("top"),z=a.ui.space("bottom");c.preventDefaultDropOnElement(m);c.preventDefaultDropOnElement(z);l.attachListener(k,"dragstart",f);l.attachListener(a,"dragstart",c.resetDragDataTransfer,c,null,1);l.attachListener(a,"dragstart",function(b){c.initDragDataTransfer(b,a)},null,null,2);l.attachListener(a,"dragstart",function(){var b=c.dragRange=a.getSelection().getRanges()[0];CKEDITOR.env.ie&&10>CKEDITOR.env.version&&(c.dragStartContainerChildCount=b?h(b.startContainer):null,c.dragEndContainerChildCount= +b?h(b.endContainer):null)},null,null,100);l.attachListener(k,"dragend",f);l.attachListener(a,"dragend",c.initDragDataTransfer,c,null,1);l.attachListener(a,"dragend",c.resetDragDataTransfer,c,null,100);l.attachListener(k,"dragover",function(a){if(CKEDITOR.env.edge)a.data.preventDefault();else{var c=a.data.getTarget();c&&c.is&&c.is("html")?a.data.preventDefault():CKEDITOR.env.ie&&CKEDITOR.plugins.clipboard.isFileApiSupported&&a.data.$.dataTransfer.types.contains("Files")&&a.data.preventDefault()}}); +l.attachListener(k,"drop",function(b){if(!b.data.$.defaultPrevented&&(b.data.preventDefault(),!a.readOnly)){var d=b.data.getTarget();if(!d.isReadOnly()||d.type==CKEDITOR.NODE_ELEMENT&&d.is("html")){var d=c.getRangeAtDropPosition(b,a),e=c.dragRange;d&&f(b,e,d)}}},null,null,9999);l.attachListener(a,"drop",c.initDragDataTransfer,c,null,1);l.attachListener(a,"drop",function(b){if(b=b.data){var f=b.dropRange,h=b.dragRange,l=b.dataTransfer;l.getTransferType(a)==CKEDITOR.DATA_TRANSFER_INTERNAL?setTimeout(function(){c.internalDrop(h, +f,l,a)},0):l.getTransferType(a)==CKEDITOR.DATA_TRANSFER_CROSS_EDITORS?d(h,f,l):e(f,l)}},null,null,9999)})}var d;CKEDITOR.plugins.add("clipboard",{requires:"dialog,notification,toolbar",init:function(b){function d(a){a=CKEDITOR.tools.array.map(a,function(a){return a.split("/")[1].toUpperCase()}).join(", ");return b.lang.clipboard.fileFormatNotSupportedNotification.replace(/\${formats\}/g,a)}function l(a,c){return CKEDITOR.env.ie&&a.data.fileTransferCancel||!(CKEDITOR.env.ie||c&&x!==c.id)?!1:c.isFileTransfer()&& +1===c.getFilesCount()}var m,p=a(b);b.config.forcePasteAsPlainText?m="plain-text":b.config.pasteFilter?m=b.config.pasteFilter:!CKEDITOR.env.webkit||"pasteFilter"in b.config||(m="semantic-content");b.pasteFilter=p.get(m);h(b);c(b);CKEDITOR.dialog.add("paste",CKEDITOR.getUrl(this.path+"dialogs/paste.js"));if((CKEDITOR.plugins.clipboard.isCustomDataTypesSupported||CKEDITOR.plugins.clipboard.isFileApiSupported)&&b.config.clipboard_handleImages){var q=["image/png","image/jpeg","image/gif"],r=d(q),x;b.on("paste", +function(a){var c=a.data,d=c.dataTransfer;if(!c.dataValue&&l(a,d))if(d=d.getFile(0),-1===CKEDITOR.tools.indexOf(q,d.type))b.showNotification(r,"info",b.config.clipboard_notificationDuration);else{var e=new FileReader;e.addEventListener("load",function(){a.data.dataValue='\x3cimg src\x3d"'+e.result+'" /\x3e';b.fire("paste",a.data)},!1);e.addEventListener("abort",function(){CKEDITOR.env.ie&&(a.data.fileTransferCancel=!0);b.fire("paste",a.data)},!1);e.addEventListener("error",function(){CKEDITOR.env.ie&& +(a.data.fileTransferCancel=!0);b.fire("paste",a.data)},!1);e.readAsDataURL(d);x=c.dataTransfer.id;a.stop()}},null,null,1)}b.on("paste",function(a){a.data.dataTransfer||(a.data.dataTransfer=new CKEDITOR.plugins.clipboard.dataTransfer);if(!a.data.dataValue){var c=a.data.dataTransfer,d=c.getData("text/html");if(d)a.data.dataValue=d,a.data.type="html";else if(d=c.getData("text/plain"))a.data.dataValue=b.editable().transformPlainTextToHtml(d),a.data.type="text"}},null,null,1);b.on("paste",function(a){var c= +a.data.dataValue,b=CKEDITOR.dtd.$block;-1<c.indexOf("Apple-")&&(c=c.replace(/<span class="Apple-converted-space"> <\/span>/gi," "),"html"!=a.data.type&&(c=c.replace(/<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi,function(a,c){return c.replace(/\t/g,"\x26nbsp;\x26nbsp; \x26nbsp;")})),-1<c.indexOf('\x3cbr class\x3d"Apple-interchange-newline"\x3e')&&(a.data.startsWithEOL=1,a.data.preSniffing="html",c=c.replace(/<br class="Apple-interchange-newline">/,"")),c=c.replace(/(<[^>]+) class="Apple-[^"]*"/gi, +"$1"));if(c.match(/^<[^<]+cke_(editable|contents)/i)){var d,g,e=new CKEDITOR.dom.element("div");for(e.setHtml(c);1==e.getChildCount()&&(d=e.getFirst())&&d.type==CKEDITOR.NODE_ELEMENT&&(d.hasClass("cke_editable")||d.hasClass("cke_contents"));)e=g=d;g&&(c=g.getHtml().replace(/<br>$/i,""))}CKEDITOR.env.ie?c=c.replace(/^ (?: |\r\n)?<(\w+)/g,function(c,d){return d.toLowerCase()in b?(a.data.preSniffing="html","\x3c"+d):c}):CKEDITOR.env.webkit?c=c.replace(/<\/(\w+)><div><br><\/div>$/,function(c,d){return d in +b?(a.data.endsWithEOL=1,"\x3c/"+d+"\x3e"):c}):CKEDITOR.env.gecko&&(c=c.replace(/(\s)<br>$/,"$1"));a.data.dataValue=c},null,null,3);b.on("paste",function(a){a=a.data;var c=b._.nextPasteType||a.type,d=a.dataValue,h,l=b.config.clipboard_defaultContentType||"html",n=a.dataTransfer.getTransferType(b)==CKEDITOR.DATA_TRANSFER_EXTERNAL,m=!0===b.config.forcePasteAsPlainText;h="html"==c||"html"==a.preSniffing?"html":f(d);delete b._.nextPasteType;"htmlifiedtext"==h&&(d=e(b.config,d));if("text"==c&&"html"==h)d= +k(b,d,p.get("plain-text"));else if(n&&b.pasteFilter&&!a.dontFilter||m)d=k(b,d,b.pasteFilter);a.startsWithEOL&&(d='\x3cbr data-cke-eol\x3d"1"\x3e'+d);a.endsWithEOL&&(d+='\x3cbr data-cke-eol\x3d"1"\x3e');"auto"==c&&(c="html"==h||"html"==l?"html":"text");a.type=c;a.dataValue=d;delete a.preSniffing;delete a.startsWithEOL;delete a.endsWithEOL},null,null,6);b.on("paste",function(a){a=a.data;a.dataValue&&(b.insertHtml(a.dataValue,a.type,a.range),setTimeout(function(){b.fire("afterPaste")},0))},null,null, +1E3);b.on("pasteDialog",function(a){setTimeout(function(){b.openDialog("paste",a.data)},0)})}});CKEDITOR.plugins.clipboard={isCustomCopyCutSupported:CKEDITOR.env.ie&&16>CKEDITOR.env.version||CKEDITOR.env.iOS&&605>CKEDITOR.env.version?!1:!0,isCustomDataTypesSupported:!CKEDITOR.env.ie||16<=CKEDITOR.env.version,isFileApiSupported:!CKEDITOR.env.ie||9<CKEDITOR.env.version,mainPasteEvent:CKEDITOR.env.ie&&!CKEDITOR.env.edge?"beforepaste":"paste",addPasteButton:function(a,c,b){a.ui.addButton&&(a.ui.addButton(c, +b),a._.pasteButtons||(a._.pasteButtons=[]),a._.pasteButtons.push(c))},canClipboardApiBeTrusted:function(a,c){return a.getTransferType(c)!=CKEDITOR.DATA_TRANSFER_EXTERNAL||CKEDITOR.env.chrome&&!a.isEmpty()||CKEDITOR.env.gecko&&(a.getData("text/html")||a.getFilesCount())||CKEDITOR.env.safari&&603<=CKEDITOR.env.version&&!CKEDITOR.env.iOS||CKEDITOR.env.iOS&&605<=CKEDITOR.env.version||CKEDITOR.env.edge&&16<=CKEDITOR.env.version?!0:!1},getDropTarget:function(a){var c=a.editable();return CKEDITOR.env.ie&& +9>CKEDITOR.env.version||c.isInline()?c:a.document},fixSplitNodesAfterDrop:function(a,c,b,d){function e(a,b,d){var g=a;g.type==CKEDITOR.NODE_TEXT&&(g=a.getParent());if(g.equals(b)&&d!=b.getChildCount())return a=c.startContainer.getChild(c.startOffset-1),b=c.startContainer.getChild(c.startOffset),a&&a.type==CKEDITOR.NODE_TEXT&&b&&b.type==CKEDITOR.NODE_TEXT&&(d=a.getLength(),a.setText(a.getText()+b.getText()),b.remove(),c.setStart(a,d),c.collapse(!0)),!0}var f=c.startContainer;"number"==typeof d&&"number"== +typeof b&&f.type==CKEDITOR.NODE_ELEMENT&&(e(a.startContainer,f,b)||e(a.endContainer,f,d))},isDropRangeAffectedByDragRange:function(a,c){var b=c.startContainer,d=c.endOffset;return a.endContainer.equals(b)&&a.endOffset<=d||a.startContainer.getParent().equals(b)&&a.startContainer.getIndex()<d||a.endContainer.getParent().equals(b)&&a.endContainer.getIndex()<d?!0:!1},internalDrop:function(a,c,d,e){var f=CKEDITOR.plugins.clipboard,h=e.editable(),l,k;e.fire("saveSnapshot");e.fire("lockSnapshot",{dontUpdate:1}); +CKEDITOR.env.ie&&10>CKEDITOR.env.version&&this.fixSplitNodesAfterDrop(a,c,f.dragStartContainerChildCount,f.dragEndContainerChildCount);(k=this.isDropRangeAffectedByDragRange(a,c))||(l=a.createBookmark(!1));f=c.clone().createBookmark(!1);k&&(l=a.createBookmark(!1));a=l.startNode;c=l.endNode;k=f.startNode;c&&a.getPosition(k)&CKEDITOR.POSITION_PRECEDING&&c.getPosition(k)&CKEDITOR.POSITION_FOLLOWING&&k.insertBefore(a);a=e.createRange();a.moveToBookmark(l);h.extractHtmlFromRange(a,1);c=e.createRange(); +f.startNode.getCommonAncestor(h)||(f=e.getSelection().createBookmarks()[0]);c.moveToBookmark(f);b(e,{dataTransfer:d,method:"drop",range:c},1);e.fire("unlockSnapshot")},getRangeAtDropPosition:function(a,c){var b=a.data.$,d=b.clientX,e=b.clientY,f=c.getSelection(!0).getRanges()[0],h=c.createRange();if(a.data.testRange)return a.data.testRange;if(document.caretRangeFromPoint&&c.document.$.caretRangeFromPoint(d,e))b=c.document.$.caretRangeFromPoint(d,e),h.setStart(CKEDITOR.dom.node(b.startContainer),b.startOffset), +h.collapse(!0);else if(b.rangeParent)h.setStart(CKEDITOR.dom.node(b.rangeParent),b.rangeOffset),h.collapse(!0);else{if(CKEDITOR.env.ie&&8<CKEDITOR.env.version&&f&&c.editable().hasFocus)return f;if(document.body.createTextRange){c.focus();b=c.document.getBody().$.createTextRange();try{for(var l=!1,k=0;20>k&&!l;k++){if(!l)try{b.moveToPoint(d,e-k),l=!0}catch(m){}if(!l)try{b.moveToPoint(d,e+k),l=!0}catch(u){}}if(l){var w="cke-temp-"+(new Date).getTime();b.pasteHTML('\x3cspan id\x3d"'+w+'"\x3e​\x3c/span\x3e'); +var B=c.document.getById(w);h.moveToPosition(B,CKEDITOR.POSITION_BEFORE_START);B.remove()}else{var C=c.document.$.elementFromPoint(d,e),A=new CKEDITOR.dom.element(C),E;if(A.equals(c.editable())||"html"==A.getName())return f&&f.startContainer&&!f.startContainer.equals(c.editable())?f:null;E=A.getClientRect();d<E.left?h.setStartAt(A,CKEDITOR.POSITION_AFTER_START):h.setStartAt(A,CKEDITOR.POSITION_BEFORE_END);h.collapse(!0)}}catch(F){return null}}else return null}return h},initDragDataTransfer:function(a, +c){var b=a.data.$?a.data.$.dataTransfer:null,d=new this.dataTransfer(b,c);"dragstart"===a.name&&d.storeId();b?this.dragData&&d.id==this.dragData.id?d=this.dragData:this.dragData=d:this.dragData?d=this.dragData:this.dragData=d;a.data.dataTransfer=d},resetDragDataTransfer:function(){this.dragData=null},initPasteDataTransfer:function(a,c){if(this.isCustomCopyCutSupported){if(a&&a.data&&a.data.$){var b=a.data.$.clipboardData,d=new this.dataTransfer(b,c);"copy"!==a.name&&"cut"!==a.name||d.storeId();this.copyCutData&& +d.id==this.copyCutData.id?(d=this.copyCutData,d.$=b):this.copyCutData=d;return d}return new this.dataTransfer(null,c)}return new this.dataTransfer(CKEDITOR.env.edge&&a&&a.data.$&&a.data.$.clipboardData||null,c)},preventDefaultDropOnElement:function(a){a&&a.on("dragover",m)}};d=CKEDITOR.plugins.clipboard.isCustomDataTypesSupported?"cke/id":"Text";CKEDITOR.plugins.clipboard.dataTransfer=function(a,c){a&&(this.$=a);this._={metaRegExp:/^<meta.*?>/i,fragmentRegExp:/\s*\x3c!--StartFragment--\x3e|\x3c!--EndFragment--\x3e\s*/g, +types:[],data:{},files:[],nativeHtmlCache:"",normalizeType:function(a){a=a.toLowerCase();return"text"==a||"text/plain"==a?"Text":"url"==a?"URL":"files"===a?"Files":a}};this._.fallbackDataTransfer=new CKEDITOR.plugins.clipboard.fallbackDataTransfer(this);this.id=this.getData(d);this.id||(this.id="Text"==d?"":"cke-"+CKEDITOR.tools.getUniqueId());c&&(this.sourceEditor=c,this.setData("text/html",c.getSelectedHtml(1)),"Text"==d||this.getData("text/plain")||this.setData("text/plain",c.getSelection().getSelectedText()))}; +CKEDITOR.DATA_TRANSFER_INTERNAL=1;CKEDITOR.DATA_TRANSFER_CROSS_EDITORS=2;CKEDITOR.DATA_TRANSFER_EXTERNAL=3;CKEDITOR.plugins.clipboard.dataTransfer.prototype={getData:function(a,c){a=this._.normalizeType(a);var b="text/html"==a&&c?this._.nativeHtmlCache:this._.data[a];if(void 0===b||null===b||""===b){if(this._.fallbackDataTransfer.isRequired())b=this._.fallbackDataTransfer.getData(a,c);else try{b=this.$.getData(a)||""}catch(d){b=""}"text/html"!=a||c||(b=this._stripHtml(b))}"Text"==a&&CKEDITOR.env.gecko&& +this.getFilesCount()&&"file://"==b.substring(0,7)&&(b="");if("string"===typeof b)var e=b.indexOf("\x3c/html\x3e"),b=-1!==e?b.substring(0,e+7):b;return b},setData:function(a,c){a=this._.normalizeType(a);"text/html"==a?(this._.data[a]=this._stripHtml(c),this._.nativeHtmlCache=c):this._.data[a]=c;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported||"URL"==a||"Text"==a)if("Text"==d&&"Text"==a&&(this.id=c),this._.fallbackDataTransfer.isRequired())this._.fallbackDataTransfer.setData(a,c);else try{this.$.setData(a, +c)}catch(b){}},storeId:function(){"Text"!==d&&this.setData(d,this.id)},getTransferType:function(a){return this.sourceEditor?this.sourceEditor==a?CKEDITOR.DATA_TRANSFER_INTERNAL:CKEDITOR.DATA_TRANSFER_CROSS_EDITORS:CKEDITOR.DATA_TRANSFER_EXTERNAL},cacheData:function(){function a(b){b=c._.normalizeType(b);var d=c.getData(b);"text/html"==b&&(c._.nativeHtmlCache=c.getData(b,!0),d=c._stripHtml(d));d&&(c._.data[b]=d);c._.types.push(b)}if(this.$){var c=this,b,d,e;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){if(this.$.types)for(b= +0;b<this.$.types.length;b++)a(this.$.types[b])}else a("Text"),a("URL");d=this._getImageFromClipboard();if((e=this.$&&this.$.files||null)||d){this._.files=[];if(e&&e.length)for(b=0;b<e.length;b++)this._.files.push(e[b]);0===this._.files.length&&d&&this._.files.push(d)}}},getFilesCount:function(){if(this._.files.length)return this._.files.length;var a=this.$&&this.$.files||null;return a&&a.length?a.length:this._getImageFromClipboard()?1:0},getFile:function(a){if(this._.files.length)return this._.files[a]; +var c=this.$&&this.$.files||null;return c&&c.length?c[a]:0===a?this._getImageFromClipboard():void 0},isFileTransfer:function(){var a=this.getTypes(),a=CKEDITOR.tools.array.filter(a,function(a){return"application/x-moz-file"!==a});return 1===a.length&&"files"===a[0].toLowerCase()},isEmpty:function(){var a={},c;if(this.getFilesCount())return!1;CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(this._.data),function(c){a[c]=1});if(this.$)if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){if(this.$.types)for(var b= +0;b<this.$.types.length;b++)a[this.$.types[b]]=1}else a.Text=1,a.URL=1;"Text"!=d&&(a[d]=0);for(c in a)if(a[c]&&""!==this.getData(c))return!1;return!0},getTypes:function(){return 0<this._.types.length?this._.types:this.$&&this.$.types?[].slice.call(this.$.types):[]},_getImageFromClipboard:function(){var a;try{if(this.$&&this.$.items&&this.$.items[0]&&(a=this.$.items[0].getAsFile())&&a.type)return a}catch(c){}},_stripHtml:function(a){function c(a){var b=new CKEDITOR.htmlParser,d,g;b.onTagOpen=function(a){"body"=== +a&&(d=b._.htmlPartsRegex.lastIndex)};b.onTagClose=function(a){"body"===a&&(g=b._.htmlPartsRegex.lastIndex)};b.parse(a);return"number"!==typeof d||"number"!==typeof g?a:a.substring(d,g).replace(/<\/body\s*>$/gi,"")}a&&a.length&&(a=c(a),a=a.replace(this._.metaRegExp,""),a=a.replace(this._.fragmentRegExp,""));return a}};CKEDITOR.plugins.clipboard.fallbackDataTransfer=function(a){this._dataTransfer=a;this._customDataFallbackType="text/html"};CKEDITOR.plugins.clipboard.fallbackDataTransfer._isCustomMimeTypeSupported= +null;CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes=[];CKEDITOR.plugins.clipboard.fallbackDataTransfer.prototype={isRequired:function(){var a=CKEDITOR.plugins.clipboard.fallbackDataTransfer,c=this._dataTransfer.$;if(null===a._isCustomMimeTypeSupported)if(c){a._isCustomMimeTypeSupported=!1;if(CKEDITOR.env.edge&&17<=CKEDITOR.env.version)return!0;try{c.setData("cke/mimetypetest","cke test value"),a._isCustomMimeTypeSupported="cke test value"===c.getData("cke/mimetypetest"),c.clearData("cke/mimetypetest")}catch(b){}}else return!1; +return!a._isCustomMimeTypeSupported},getData:function(a,c){var b=this._getData(this._customDataFallbackType,!0);if(c)return b;var b=this._extractDataComment(b),d=null,d=a===this._customDataFallbackType?b.content:b.data&&b.data[a]?b.data[a]:this._getData(a,!0);return null!==d?d:""},setData:function(a,c){var b=a===this._customDataFallbackType;b&&(c=this._applyDataComment(c,this._getFallbackTypeData()));var d=c,e=this._dataTransfer.$;try{e.setData(a,d),b&&(this._dataTransfer._.nativeHtmlCache=d)}catch(f){if(this._isUnsupportedMimeTypeError(f)){b= +CKEDITOR.plugins.clipboard.fallbackDataTransfer;-1===CKEDITOR.tools.indexOf(b._customTypes,a)&&b._customTypes.push(a);var b=this._getFallbackTypeContent(),h=this._getFallbackTypeData();h[a]=d;try{d=this._applyDataComment(b,h),e.setData(this._customDataFallbackType,d),this._dataTransfer._.nativeHtmlCache=d}catch(l){d=""}}}return d},_getData:function(a,c){var b=this._dataTransfer._.data;if(!c&&b[a])return b[a];try{return this._dataTransfer.$.getData(a)}catch(d){return null}},_getFallbackTypeContent:function(){var a= +this._dataTransfer._.data[this._customDataFallbackType];a||(a=this._extractDataComment(this._getData(this._customDataFallbackType,!0)).content);return a},_getFallbackTypeData:function(){var a=CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes,c=this._extractDataComment(this._getData(this._customDataFallbackType,!0)).data||{},b=this._dataTransfer._.data;CKEDITOR.tools.array.forEach(a,function(a){void 0!==b[a]?c[a]=b[a]:void 0!==c[a]&&(c[a]=c[a])},this);return c},_isUnsupportedMimeTypeError:function(a){return a.message&& +-1!==a.message.search(/element not found/gi)},_extractDataComment:function(a){var c={data:null,content:a||""};if(a&&16<a.length){var b;(b=/\x3c!--cke-data:(.*?)--\x3e/g.exec(a))&&b[1]&&(c.data=JSON.parse(decodeURIComponent(b[1])),c.content=a.replace(b[0],""))}return c},_applyDataComment:function(a,c){var b="";c&&CKEDITOR.tools.object.keys(c).length&&(b="\x3c!--cke-data:"+encodeURIComponent(JSON.stringify(c))+"--\x3e");return b+(a&&a.length?a:"")}}}(),CKEDITOR.config.clipboard_notificationDuration= +1E4,CKEDITOR.config.clipboard_handleImages=!0,function(){CKEDITOR.plugins.add("panel",{beforeInit:function(b){b.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}});CKEDITOR.UI_PANEL="panel";CKEDITOR.ui.panel=function(b,a){a&&CKEDITOR.tools.extend(this,a);CKEDITOR.tools.extend(this,{className:"",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=b;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(b){return new CKEDITOR.ui.panel(b)}}; +var b=CKEDITOR.addTemplate("panel",'\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e'),h=CKEDITOR.addTemplate("panel-frame",'\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e'),f=CKEDITOR.addTemplate("panel-frame-inner",'\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e'); +CKEDITOR.ui.panel.prototype={render:function(e,a){var k={editorId:e.id,id:this.id,langCode:e.langCode,dir:e.lang.dir,cls:this.className,frame:"",env:CKEDITOR.env.cssClass,"z-index":e.config.baseFloatZIndex+1};this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+"_frame"),c=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&c.setStyles({overflow:"scroll","-webkit-overflow-scrolling":"touch"});c=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded= +!0;if(this.onLoad)this.onLoad()},this));a.write(f.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:"window.parent.CKEDITOR.tools.callFunction("+c+");"},k)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on("keydown",function(a){var c=a.data.getKeystroke(),b=this.document.getById(this.id).getAttribute("dir");if("input"!==a.data.getTarget().getName()||37!==c&&39!==c)this._.onKeyDown&&!1===this._.onKeyDown(c)?"input"===a.data.getTarget().getName()&&32===c||a.data.preventDefault(): +(27==c||c==("rtl"==b?39:37))&&this.onEscape&&!1===this.onEscape(c)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(c)}else a=this.document.getById(this.id);this._.holder=a}return a};if(this.isFramed){var l=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie&&!CKEDITOR.env.edge?"javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())":"";k.frame=h.output({id:this.id+"_frame", +src:l})}l=b.output(k);a&&a.push(l);return l},addBlock:function(b,a){a=this._.blocks[b]=a instanceof CKEDITOR.ui.panel.block?a:new CKEDITOR.ui.panel.block(this.getHolderElement(),a);this._.currentBlock||this.showBlock(b);return a},getBlock:function(b){return this._.blocks[b]},showBlock:function(b){b=this._.blocks[b];var a=this._.currentBlock,f=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+"_frame");a&&a.hide();this._.currentBlock=b;CKEDITOR.fire("ariaWidget",f);b._.focusIndex= +-1;this._.onKeyDown=b.onKeyDown&&CKEDITOR.tools.bind(b.onKeyDown,b);b.show();return b},destroy:function(){this.element&&this.element.remove()}};CKEDITOR.ui.panel.block=CKEDITOR.tools.createClass({$:function(b,a){this.element=b.append(b.getDocument().createElement("div",{attributes:{tabindex:-1,"class":"cke_panel_block"},styles:{display:"none"}}));a&&CKEDITOR.tools.extend(this,a);this.element.setAttributes({role:this.attributes.role||"presentation","aria-label":this.attributes["aria-label"],title:this.attributes.title|| +this.attributes["aria-label"]});this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()},_:{markItem:function(b){-1!=b&&(b=this._.getItems().getItem(this._.focusIndex=b),CKEDITOR.env.webkit&&b.getDocument().getWindow().focus(),b.focus(),this.onMark&&this.onMark(b))},markFirstDisplayed:function(b){for(var a=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&"none"==a.getStyle("display")},f=this._.getItems(),h,m,c=f.count()-1;0<=c;c--)if(h=f.getItem(c),h.getAscendant(a)||(m=h,this._.focusIndex= +c),"true"==h.getAttribute("aria-selected")){m=h;this._.focusIndex=c;break}m&&(b&&b(),CKEDITOR.env.webkit&&m.getDocument().getWindow().focus(),m.focus(),this.onMark&&this.onMark(m))},getItems:function(){return this.element.find("a,input")}},proto:{show:function(){this.element.setStyle("display","")},hide:function(){this.onHide&&!0===this.onHide.call(this)||this.element.setStyle("display","none")},onKeyDown:function(b,a){var f=this.keys[b];switch(f){case "next":for(var h=this._.focusIndex,f=this._.getItems(), +m;m=f.getItem(++h);)if(m.getAttribute("_cke_focus")&&m.$.offsetWidth){this._.focusIndex=h;m.focus(!0);break}return m||a?!1:(this._.focusIndex=-1,this.onKeyDown(b,1));case "prev":h=this._.focusIndex;for(f=this._.getItems();0<h&&(m=f.getItem(--h));){if(m.getAttribute("_cke_focus")&&m.$.offsetWidth){this._.focusIndex=h;m.focus(!0);break}m=null}return m||a?!1:(this._.focusIndex=f.count(),this.onKeyDown(b,1));case "click":case "mouseup":return h=this._.focusIndex,(m=0<=h&&this._.getItems().getItem(h))&& +m.fireEventHandler(f,{button:CKEDITOR.tools.normalizeMouseButton(CKEDITOR.MOUSE_BUTTON_LEFT,!0)}),!1}return!0}}})}(),CKEDITOR.plugins.add("floatpanel",{requires:"panel"}),function(){function b(b,e,a,k,l){l=CKEDITOR.tools.genKey(e.getUniqueId(),a.getUniqueId(),b.lang.dir,b.uiColor||"",k.css||"",l||"");var m=h[l];m||(m=h[l]=new CKEDITOR.ui.panel(e,k),m.element=a.append(CKEDITOR.dom.element.createFromHtml(m.render(b),e)),m.element.setStyles({display:"none",position:"absolute"}));return m}var h={};CKEDITOR.ui.floatPanel= +CKEDITOR.tools.createClass({$:function(f,e,a,h){function l(){g.hide()}a.forceIFrame=1;a.toolbarRelated&&f.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&(e=CKEDITOR.document.getById("cke_"+f.name));var m=e.getDocument();h=b(f,m,e,a,h||0);var c=h.element,d=c.getFirst(),g=this;c.disableContextMenu();this.element=c;this._={editor:f,panel:h,parentElement:e,definition:a,document:m,iframe:d,children:[],dir:f.lang.dir,showBlockParams:null,markFirst:void 0!==a.markFirst?a.markFirst:!0};f.on("mode",l);f.on("resize", +l);m.getWindow().on("resize",function(){this.reposition()},this)},proto:{addBlock:function(b,e){return this._.panel.addBlock(b,e)},addListBlock:function(b,e){return this._.panel.addListBlock(b,e)},getBlock:function(b){return this._.panel.getBlock(b)},showBlock:function(b,e,a,h,l,m){var c=this._.panel,d=c.showBlock(b);this._.showBlockParams=[].slice.call(arguments);this.allowBlur(!1);var g=this._.editor.editable();this._.returnFocus=g.hasFocus?g:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement); +this._.hideTimeout=0;var n=this.element,g=this._.iframe,g=CKEDITOR.env.ie&&!CKEDITOR.env.edge?g:new CKEDITOR.dom.window(g.$.contentWindow),y=n.getDocument(),v=this._.parentElement.getPositionedAncestor(),p=e.getDocumentPosition(y),y=v?v.getDocumentPosition(y):{x:0,y:0},q="rtl"==this._.dir,r=p.x+(h||0)-y.x,x=p.y+(l||0)-y.y;!q||1!=a&&4!=a?q||2!=a&&3!=a||(r+=e.$.offsetWidth-1):r+=e.$.offsetWidth;if(3==a||4==a)x+=e.$.offsetHeight-1;this._.panel._.offsetParentId=e.getId();n.setStyles({top:x+"px",left:0, +display:""});n.setOpacity(0);n.getFirst().removeStyle("width");this._.editor.focusManager.add(g);this._.blurSet||(CKEDITOR.event.useCapture=!0,g.on("blur",function(a){function c(){delete this._.returnFocus;this.hide()}this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&&this.visible&&!this._.activeChild&&(CKEDITOR.env.iOS?this._.hideTimeout||(this._.hideTimeout=CKEDITOR.tools.setTimeout(c,0,this)):c.call(this))},this),g.on("focus",function(){this._.focused=!0;this.hideChild();this.allowBlur(!0)}, this),CKEDITOR.env.iOS&&(g.on("touchstart",function(){clearTimeout(this._.hideTimeout)},this),g.on("touchend",function(){this._.hideTimeout=0;this.focus()},this)),CKEDITOR.event.useCapture=!1,this._.blurSet=1);c.onEscape=CKEDITOR.tools.bind(function(a){if(this.onEscape&&!1===this.onEscape(a))return!1},this);CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.tools.bind(function(){var a=n;a.removeStyle("width");if(d.autoSize){var b=d.element.getDocument(),b=(CKEDITOR.env.webkit||CKEDITOR.env.edge? -d.element:b.getBody()).$.scrollWidth;CKEDITOR.env.ie&&CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetWidth||0)-(a.$.clientWidth||0)+3);a.setStyle("width",b+10+"px");b=d.element.$.scrollHeight;CKEDITOR.env.ie&&CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetHeight||0)-(a.$.clientHeight||0)+3);a.setStyle("height",b+"px");c._.currentBlock.element.setStyle("display","none").removeStyle("display")}else a.removeStyle("height");t&&(r-=n.$.offsetWidth);n.setStyle("left",r+"px");var b=c.element.getWindow(),a=n.$.getBoundingClientRect(), -b=b.getViewPaneSize(),g=a.width||a.right-a.left,e=a.height||a.bottom-a.top,f=t?a.right:b.width-a.left,h=t?b.width-a.right:a.left;t?f<g&&(r=h>g?r+g:b.width>g?r-a.left:r-a.right+b.width):f<g&&(r=h>g?r-g:b.width>g?r-a.right+b.width:r-a.left);g=a.top;b.height-a.top<e&&(x=g>e?x-e:b.height>e?x-a.bottom+b.height:x-a.top);CKEDITOR.env.ie&&!CKEDITOR.env.edge&&((b=a=n.$.offsetParent&&new CKEDITOR.dom.element(n.$.offsetParent))&&"html"==b.getName()&&(b=b.getDocument().getBody()),b&&"rtl"==b.getComputedStyle("direction")&& -(r=CKEDITOR.env.ie8Compat?r-2*n.getDocument().getDocumentElement().$.scrollLeft:r-(a.$.scrollWidth-a.$.clientWidth)));var a=n.getFirst(),k;(k=a.getCustomData("activePanel"))&&k.onHide&&k.onHide.call(this,1);a.setCustomData("activePanel",this);n.setStyles({top:x+"px",left:r+"px"});n.setOpacity(1);l&&l()},this);c.isLoaded?a():c.onLoad=a;CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.env.webkit&&CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();d.element.focus();CKEDITOR.env.webkit&& +d.element:b.getBody()).$.scrollWidth;CKEDITOR.env.ie&&CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetWidth||0)-(a.$.clientWidth||0)+3);a.setStyle("width",b+10+"px");b=d.element.$.scrollHeight;CKEDITOR.env.ie&&CKEDITOR.env.quirks&&0<b&&(b+=(a.$.offsetHeight||0)-(a.$.clientHeight||0)+3);a.setStyle("height",b+"px");c._.currentBlock.element.setStyle("display","none").removeStyle("display")}else a.removeStyle("height");q&&(r-=n.$.offsetWidth);n.setStyle("left",r+"px");var b=c.element.getWindow(),a=n.$.getBoundingClientRect(), +b=b.getViewPaneSize(),g=a.width||a.right-a.left,e=a.height||a.bottom-a.top,f=q?a.right:b.width-a.left,h=q?b.width-a.right:a.left;q?f<g&&(r=h>g?r+g:b.width>g?r-a.left:r-a.right+b.width):f<g&&(r=h>g?r-g:b.width>g?r-a.right+b.width:r-a.left);g=a.top;b.height-a.top<e&&(x=g>e?x-e:b.height>e?x-a.bottom+b.height:x-a.top);CKEDITOR.env.ie&&!CKEDITOR.env.edge&&((b=a=n.$.offsetParent&&new CKEDITOR.dom.element(n.$.offsetParent))&&"html"==b.getName()&&(b=b.getDocument().getBody()),b&&"rtl"==b.getComputedStyle("direction")&& +(r=CKEDITOR.env.ie8Compat?r-2*n.getDocument().getDocumentElement().$.scrollLeft:r-(a.$.scrollWidth-a.$.clientWidth)));var a=n.getFirst(),l;(l=a.getCustomData("activePanel"))&&l.onHide&&l.onHide.call(this,1);a.setCustomData("activePanel",this);n.setStyles({top:x+"px",left:r+"px"});n.setOpacity(1);m&&m()},this);c.isLoaded?a():c.onLoad=a;CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.env.webkit&&CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();d.element.focus();CKEDITOR.env.webkit&& (CKEDITOR.document.getBody().$.scrollTop=a);this.allowBlur(!0);this._.markFirst&&(CKEDITOR.env.ie?CKEDITOR.tools.setTimeout(function(){d.markFirstDisplayed?d.markFirstDisplayed():d._.markFirstDisplayed()},0):d.markFirstDisplayed?d.markFirstDisplayed():d._.markFirstDisplayed());this._.editor.fire("panelShow",this)},0,this)},CKEDITOR.env.air?200:0,this);this.visible=1;this.onShow&&this.onShow.call(this)},reposition:function(){var b=this._.showBlockParams;this.visible&&this._.showBlockParams&&(this.hide(), this.showBlock.apply(this,b))},focus:function(){if(CKEDITOR.env.webkit){var b=CKEDITOR.document.getActive();b&&!b.equals(this._.iframe)&&b.$.blur()}(this._.lastFocused||this._.iframe.getFrameDocument().getWindow()).focus()},blur:function(){var b=this._.iframe.getFrameDocument().getActive();b&&b.is("a")&&(this._.lastFocused=b)},hide:function(b){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur(); -this.element.setStyle("display","none");this.visible=0;this.element.getFirst().removeCustomData("activePanel");if(b=b&&this._.returnFocus)CKEDITOR.env.webkit&&b.type&&b.getWindow().$.focus(),b.focus();delete this._.lastFocused;this._.showBlockParams=null;this._.editor.fire("panelHide",this)}},allowBlur:function(b){var e=this._.panel;void 0!==b&&(e.allowBlur=b);return e.allowBlur},showAsChild:function(b,e,a,h,k,l){if(this._.activeChild!=b||b._.panel._.offsetParentId!=a.getId())this.hideChild(),b.onHide= -CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=b,this._.focused=!1,b.showBlock(e,a,h,k,l),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&setTimeout(function(){b.element.getChild(0).$.style.cssText+=""},100)},hideChild:function(b){var e=this._.activeChild;e&&(delete e.onHide,delete this._.activeChild,e.hide(),b&&this.focus())}}});CKEDITOR.on("instanceDestroyed",function(){var b=CKEDITOR.tools.isEmpty(CKEDITOR.instances), +this.element.setStyle("display","none");this.visible=0;this.element.getFirst().removeCustomData("activePanel");if(b=b&&this._.returnFocus)CKEDITOR.env.webkit&&b.type&&b.getWindow().$.focus(),b.focus();delete this._.lastFocused;this._.showBlockParams=null;this._.editor.fire("panelHide",this)}},allowBlur:function(b){var e=this._.panel;void 0!==b&&(e.allowBlur=b);return e.allowBlur},showAsChild:function(b,e,a,h,l,m){if(this._.activeChild!=b||b._.panel._.offsetParentId!=a.getId())this.hideChild(),b.onHide= +CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=b,this._.focused=!1,b.showBlock(e,a,h,l,m),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&setTimeout(function(){b.element.getChild(0).$.style.cssText+=""},100)},hideChild:function(b){var e=this._.activeChild;e&&(delete e.onHide,delete this._.activeChild,e.hide(),b&&this.focus())}}});CKEDITOR.on("instanceDestroyed",function(){var b=CKEDITOR.tools.isEmpty(CKEDITOR.instances), e;for(e in h){var a=h[e];b?a.destroy():a.element.hide()}b&&(h={})})}(),CKEDITOR.plugins.add("menu",{requires:"floatpanel",beforeInit:function(b){for(var h=b.config.menu_groups.split(","),f=b._.menuGroups={},e=b._.menuItems={},a=0;a<h.length;a++)f[h[a]]=a+1;b.addMenuGroup=function(a,b){f[a]=b||100};b.addMenuItem=function(a,b){f[b.group]&&(e[a]=new CKEDITOR.menuItem(this,a,b))};b.addMenuItems=function(a){for(var b in a)this.addMenuItem(b,a[b])};b.getMenuItem=function(a){return e[a]};b.removeMenuItem= -function(a){delete e[a]}}}),function(){function b(a){a.sort(function(a,b){return a.group<b.group?-1:a.group>b.group?1:a.order<b.order?-1:a.order>b.order?1:0})}var h='\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1" _cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-label\x3d"{attrLabel}" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked} draggable\x3d"false"', +function(a){delete e[a]}}}),function(){function b(a){a.sort(function(a,c){return a.group<c.group?-1:a.group>c.group?1:a.order<c.order?-1:a.order>c.order?1:0})}var h='\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1" _cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-label\x3d"{attrLabel}" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked} draggable\x3d"false"', f="";CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(h+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(h+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;" ondragstart\x3d"return false;"');CKEDITOR.env.ie&&(f='return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26');var h=h+(' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" onclick\x3d"'+f+'CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e')+ '\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{shortcutHtml}{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_voice_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e\x3c/span\x3e',e=CKEDITOR.addTemplate("menuItem",h),a=CKEDITOR.addTemplate("menuArrow", -'\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e'),m=CKEDITOR.addTemplate("menuShortcut",'\x3cspan class\x3d"cke_menubutton_label cke_menubutton_shortcut"\x3e{shortcut}\x3c/span\x3e');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath("editor")],level:this._.level- +'\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e'),k=CKEDITOR.addTemplate("menuShortcut",'\x3cspan class\x3d"cke_menubutton_label cke_menubutton_shortcut"\x3e{shortcut}\x3c/span\x3e');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath("editor")],level:this._.level- 1,block:{}}),d=c.block.attributes=c.attributes||{};!d.role&&(d.role="menu");this._.panelDefinition=c},_:{onShow:function(){var a=this.editor.getSelection(),b=a&&a.getStartElement(),c=this.editor.elementPath(),d=this._.listeners;this.removeAll();for(var g=0;g<d.length;g++){var e=d[g](b,a,c);if(e)for(var f in e){var h=this.editor.getMenuItem(f);!h||h.command&&!this.editor.getCommand(h.command).state||(h.state=e[f],this.add(h))}}},onClick:function(a){this.hide();if(a.onClick)a.onClick();else a.command&& this.editor.execCommand(a.command)},onEscape:function(a){var b=this.parent;b?b._.panel.hideChild(1):27==a&&this.hide(1);return!1},onHide:function(){this.onHide&&this.onHide()},showSubMenu:function(a){var b=this._.subMenu,c=this.items[a];if(c=c.getItems&&c.getItems()){b?b.removeAll():(b=this._.subMenu=new CKEDITOR.menu(this.editor,CKEDITOR.tools.extend({},this._.definition,{level:this._.level+1},!0)),b.parent=this,b._.onClick=CKEDITOR.tools.bind(this._.onClick,this));for(var d in c){var g=this.editor.getMenuItem(d); -g&&(g.state=c[d],b.add(g))}var e=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+String(a));setTimeout(function(){b.show(e,2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(a,e,c,d){if(!this.parent&&(this._.onShow(),!this.items.length))return;e=e||("rtl"==this.editor.lang.dir?2:1);var g=this.items,f=this.editor,h=this._.panel,m=this._.element;if(!h){h=this._.panel= -new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level);h.onEscape=CKEDITOR.tools.bind(function(a){if(!1===this._.onEscape(a))return!1},this);h.onShow=function(){h._.panel.getHolderElement().getParent().addClass("cke").addClass("cke_reset_all")};h.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);m=h.addBlock(this.id,this._.panelDefinition.block);m.autoSize=!0;var p=m.keys;p[40]="next";p[9]="next";p[38]="prev";p[CKEDITOR.SHIFT+ -9]="prev";p["rtl"==f.lang.dir?37:39]=CKEDITOR.env.ie?"mouseup":"click";p[32]=CKEDITOR.env.ie?"mouseup":"click";CKEDITOR.env.ie&&(p[13]="mouseup");m=this._.element=m.element;p=m.getDocument();p.getBody().setStyle("overflow","hidden");p.getElementsByTag("html").getItem(0).setStyle("overflow","hidden");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,f.config.menu_subMenuDelay||400,this,[a])}, -this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this);this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var b=this.items[a];if(b.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(b.getItems)this._.showSubMenu(a);else this._.onClick(b)},this)}b(g);for(var p=f.elementPath(),p=['\x3cdiv class\x3d"cke_menu'+(p&&p.direction()!=f.lang.dir?" cke_mixed_dir_content":"")+'" role\x3d"presentation"\x3e'],t=g.length,r=t&&g[0].group,x=0;x<t;x++){var u= -g[x];r!=u.group&&(p.push('\x3cdiv class\x3d"cke_menuseparator" role\x3d"separator"\x3e\x3c/div\x3e'),r=u.group);u.render(this,x,p)}p.push("\x3c/div\x3e");m.setHtml(p.join(""));CKEDITOR.ui.fire("ready",this);this.parent?this.parent._.panel.showAsChild(h,this.id,a,e,c,d):h.showBlock(this.id,a,e,c,d);f.fire("menuShow",[h])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)},findItemByCommandName:function(a){var b=CKEDITOR.tools.array.filter(this.items, -function(b){return a===b.command});return b.length?(b=b[0],{item:b,element:this._.element.findOne("."+b.className)}):null}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){CKEDITOR.tools.extend(this,c,{order:0,className:"cke_menubutton__"+b});this.group=a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(b,f,c){var d=b.id+String(f),g="undefined"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,h="",y=this.editor,w,p,t=g==CKEDITOR.TRISTATE_ON?"on":g==CKEDITOR.TRISTATE_DISABLED? -"disabled":"off";this.role in{menuitemcheckbox:1,menuitemradio:1}&&(h=' aria-checked\x3d"'+(g==CKEDITOR.TRISTATE_ON?"true":"false")+'"');var r=this.getItems,x="\x26#"+("rtl"==this.editor.lang.dir?"9668":"9658")+";",u=this.name;this.icon&&!/\./.test(this.icon)&&(u=this.icon);this.command&&(w=y.getCommand(this.command),(w=y.getCommandKeystroke(w))&&(p=CKEDITOR.tools.keystrokeToString(y.lang.common.keyboard,w)));w=CKEDITOR.tools.htmlEncodeAttr(this.label);b={id:d,name:this.name,iconName:u,label:this.label, -attrLabel:w,cls:this.className||"",state:t,hasPopup:r?"true":"false",disabled:g==CKEDITOR.TRISTATE_DISABLED,title:w+(p?" ("+p.display+")":""),ariaShortcut:p?y.lang.common.keyboardShortcut+" "+p.aria:"",href:"javascript:void('"+(w||"").replace("'")+"')",hoverFn:b._.itemOverFn,moveOutFn:b._.itemOutFn,clickFn:b._.itemClickFn,index:f,iconStyle:CKEDITOR.skin.getIconStyle(u,"rtl"==this.editor.lang.dir,u==this.icon?null:this.icon,this.iconOffset),shortcutHtml:p?m.output({shortcut:p.display}):"",arrowHtml:r? -a.output({label:x}):"",role:this.role?this.role:"menuitem",ariaChecked:h};e.output(b,c)}}})}(),CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div",CKEDITOR.plugins.add("contextmenu",{requires:"menu",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(b){this.base.call(this,b,{panel:{css:b.config.contextmenu_contentsCss, +g&&(g.state=c[d],b.add(g))}var e=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+String(a));setTimeout(function(){b.show(e,2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(a,e,c,d){if(!this.parent&&(this._.onShow(),!this.items.length))return;e=e||("rtl"==this.editor.lang.dir?2:1);var g=this.items,f=this.editor,h=this._.panel,k=this._.element;if(!h){h=this._.panel= +new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level);h.onEscape=CKEDITOR.tools.bind(function(a){if(!1===this._.onEscape(a))return!1},this);h.onShow=function(){h._.panel.getHolderElement().getParent().addClass("cke").addClass("cke_reset_all")};h.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);k=h.addBlock(this.id,this._.panelDefinition.block);k.autoSize=!0;var p=k.keys;p[40]="next";p[9]="next";p[38]="prev";p[CKEDITOR.SHIFT+ +9]="prev";p["rtl"==f.lang.dir?37:39]=CKEDITOR.env.ie?"mouseup":"click";p[32]=CKEDITOR.env.ie?"mouseup":"click";CKEDITOR.env.ie&&(p[13]="mouseup");k=this._.element=k.element;p=k.getDocument();p.getBody().setStyle("overflow","hidden");p.getElementsByTag("html").getItem(0).setStyle("overflow","hidden");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,f.config.menu_subMenuDelay||400,this,[a])}, +this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this);this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var c=this.items[a];if(c.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(c.getItems)this._.showSubMenu(a);else this._.onClick(c)},this)}b(g);for(var p=f.elementPath(),p=['\x3cdiv class\x3d"cke_menu'+(p&&p.direction()!=f.lang.dir?" cke_mixed_dir_content":"")+'" role\x3d"presentation"\x3e'],q=g.length,r=q&&g[0].group,x=0;x<q;x++){var t= +g[x];r!=t.group&&(p.push('\x3cdiv class\x3d"cke_menuseparator" role\x3d"separator"\x3e\x3c/div\x3e'),r=t.group);t.render(this,x,p)}p.push("\x3c/div\x3e");k.setHtml(p.join(""));CKEDITOR.ui.fire("ready",this);this.parent?this.parent._.panel.showAsChild(h,this.id,a,e,c,d):h.showBlock(this.id,a,e,c,d);f.fire("menuShow",[h])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)},findItemByCommandName:function(a){var b=CKEDITOR.tools.array.filter(this.items, +function(c){return a===c.command});return b.length?(b=b[0],{item:b,element:this._.element.findOne("."+b.className)}):null}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){CKEDITOR.tools.extend(this,c,{order:0,className:"cke_menubutton__"+b});this.group=a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(b,f,c){var d=b.id+String(f),g="undefined"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,h="",y=this.editor,v,p,q=g==CKEDITOR.TRISTATE_ON?"on":g==CKEDITOR.TRISTATE_DISABLED? +"disabled":"off";this.role in{menuitemcheckbox:1,menuitemradio:1}&&(h=' aria-checked\x3d"'+(g==CKEDITOR.TRISTATE_ON?"true":"false")+'"');var r=this.getItems,x="\x26#"+("rtl"==this.editor.lang.dir?"9668":"9658")+";",t=this.name;this.icon&&!/\./.test(this.icon)&&(t=this.icon);this.command&&(v=y.getCommand(this.command),(v=y.getCommandKeystroke(v))&&(p=CKEDITOR.tools.keystrokeToString(y.lang.common.keyboard,v)));v=CKEDITOR.tools.htmlEncodeAttr(this.label);b={id:d,name:this.name,iconName:t,label:this.label, +attrLabel:v,cls:this.className||"",state:q,hasPopup:r?"true":"false",disabled:g==CKEDITOR.TRISTATE_DISABLED,title:v+(p?" ("+p.display+")":""),ariaShortcut:p?y.lang.common.keyboardShortcut+" "+p.aria:"",href:"javascript:void('"+(v||"").replace("'")+"')",hoverFn:b._.itemOverFn,moveOutFn:b._.itemOutFn,clickFn:b._.itemClickFn,index:f,iconStyle:CKEDITOR.skin.getIconStyle(t,"rtl"==this.editor.lang.dir,t==this.icon?null:this.icon,this.iconOffset),shortcutHtml:p?k.output({shortcut:p.display}):"",arrowHtml:r? +a.output({label:x}):"",role:this.role?this.role:"menuitem",ariaChecked:h};e.output(b,c)}}})}(),CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div",CKEDITOR.plugins.add("contextmenu",{requires:"menu",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(b){this.base.call(this,b,{panel:{css:b.config.contextmenu_contentsCss, className:"cke_menu_panel",attributes:{"aria-label":b.lang.contextmenu.options}}})},proto:{addTarget:function(b,h){function f(){a=!1}var e,a;b.on("contextmenu",function(b){b=b.data;var f=CKEDITOR.env.webkit?e:CKEDITOR.env.mac?b.$.metaKey:b.$.ctrlKey;if(!h||!f)if(b.preventDefault(),!a){if(CKEDITOR.env.mac&&CKEDITOR.env.webkit){var f=this.editor,c=(new CKEDITOR.dom.elementPath(b.getTarget(),f.editable())).contains(function(a){return a.hasAttribute("contenteditable")},!0);c&&"false"==c.getAttribute("contenteditable")&& -f.getSelection().fake(c)}var c=b.getTarget().getDocument(),d=b.getTarget().getDocument().getDocumentElement(),f=!c.equals(CKEDITOR.document),c=c.getWindow().getScrollPosition(),g=f?b.$.clientX:b.$.pageX||c.x+b.$.clientX,n=f?b.$.clientY:b.$.pageY||c.y+b.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(d,null,g,n)},CKEDITOR.env.ie?200:0,this)}},this);if(CKEDITOR.env.webkit){var m=function(){e=0};b.on("keydown",function(a){e=CKEDITOR.env.mac?a.data.$.metaKey:a.data.$.ctrlKey});b.on("keyup",m); -b.on("contextmenu",m)}CKEDITOR.env.gecko&&!CKEDITOR.env.mac&&(b.on("keydown",function(b){b.data.$.shiftKey&&121===b.data.$.keyCode&&(a=!0)},null,null,0),b.on("keyup",f),b.on("contextmenu",f))},open:function(b,h,f,e){!1!==this.editor.config.enableContextMenu&&this.editor.getSelection().getType()!==CKEDITOR.SELECTION_NONE&&(this.editor.focus(),b=b||CKEDITOR.document.getDocumentElement(),this.editor.selectionChange(1),this.show(b,h,f,e))}}})},beforeInit:function(b){var h=b.contextMenu=new CKEDITOR.plugins.contextMenu(b); +f.getSelection().fake(c)}var c=b.getTarget().getDocument(),d=b.getTarget().getDocument().getDocumentElement(),f=!c.equals(CKEDITOR.document),c=c.getWindow().getScrollPosition(),g=f?b.$.clientX:b.$.pageX||c.x+b.$.clientX,k=f?b.$.clientY:b.$.pageY||c.y+b.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(d,null,g,k)},CKEDITOR.env.ie?200:0,this)}},this);if(CKEDITOR.env.webkit){var k=function(){e=0};b.on("keydown",function(a){e=CKEDITOR.env.mac?a.data.$.metaKey:a.data.$.ctrlKey});b.on("keyup",k); +b.on("contextmenu",k)}CKEDITOR.env.gecko&&!CKEDITOR.env.mac&&(b.on("keydown",function(b){b.data.$.shiftKey&&121===b.data.$.keyCode&&(a=!0)},null,null,0),b.on("keyup",f),b.on("contextmenu",f))},open:function(b,h,f,e){!1!==this.editor.config.enableContextMenu&&this.editor.getSelection().getType()!==CKEDITOR.SELECTION_NONE&&(this.editor.focus(),b=b||CKEDITOR.document.getDocumentElement(),this.editor.selectionChange(1),this.show(b,h,f,e))}}})},beforeInit:function(b){var h=b.contextMenu=new CKEDITOR.plugins.contextMenu(b); b.on("contentDom",function(){h.addTarget(b.editable(),!1!==b.config.browserContextMenuOnCtrl)});b.addCommand("contextMenu",{exec:function(b){var e=0,a=0,h=b.getSelection().getRanges(),h=h[h.length-1].getClientRects(b.editable().isInline());if(h=h[h.length-1])e=h["rtl"===b.lang.dir?"left":"right"],a=h.bottom;b.contextMenu.open(b.document.getBody().getParent(),null,e,a)}});b.setKeystroke(CKEDITOR.SHIFT+121,"contextMenu");b.setKeystroke(CKEDITOR.CTRL+CKEDITOR.SHIFT+121,"contextMenu")}}),function(){function b(a, -b){function f(b){b=g.list[b];var c;b.equals(a.editable())||"true"==b.getAttribute("contenteditable")?(c=a.createRange(),c.selectNodeContents(b),c=c.select()):(c=a.getSelection(),c.selectElement(b));CKEDITOR.env.ie&&a.fire("selectionChange",{selection:c,path:new CKEDITOR.dom.elementPath(b)});a.focus()}function l(){d&&d.setHtml('\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e');delete g.list}var c=a.ui.spaceId("path"),d,g=a._.elementsPath,n=g.idBase;b.html+='\x3cspan id\x3d"'+c+'_label" class\x3d"cke_voice_label"\x3e'+ -a.lang.elementspath.eleLabel+'\x3c/span\x3e\x3cspan id\x3d"'+c+'" class\x3d"cke_path" role\x3d"group" aria-labelledby\x3d"'+c+'_label"\x3e\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e\x3c/span\x3e';a.on("uiReady",function(){var b=a.ui.space("path");b&&a.focusManager.add(b,1)});g.onClick=f;var y=CKEDITOR.tools.addFunction(f),w=CKEDITOR.tools.addFunction(function(b,c){var d=g.idBase,e;c=new CKEDITOR.dom.event(c);e="rtl"==a.lang.dir;switch(c.getKeystroke()){case e?39:37:case 9:return(e= -CKEDITOR.document.getById(d+(b+1)))||(e=CKEDITOR.document.getById(d+"0")),e.focus(),!1;case e?37:39:case CKEDITOR.SHIFT+9:return(e=CKEDITOR.document.getById(d+(b-1)))||(e=CKEDITOR.document.getById(d+(g.list.length-1))),e.focus(),!1;case 27:return a.focus(),!1;case 13:case 32:return f(b),!1}return!0});a.on("selectionChange",function(b){for(var f=[],h=g.list=[],k=[],l=g.filters,m=!0,q=b.data.path.elements,v=q.length;v--;){var B=q[v],D=0;b=B.data("cke-display-name")?B.data("cke-display-name"):B.data("cke-real-element-type")? -B.data("cke-real-element-type"):B.getName();(m=B.hasAttribute("contenteditable")?"true"==B.getAttribute("contenteditable"):m)||B.hasAttribute("contenteditable")||(D=1);for(var A=0;A<l.length;A++){var E=l[A](B,b);if(!1===E){D=1;break}b=E||b}D||(h.unshift(B),k.unshift(b))}h=h.length;for(l=0;l<h;l++)b=k[l],m=a.lang.elementspath.eleTitle.replace(/%1/,b),b=e.output({id:n+l,label:m,text:b,jsTitle:"javascript:void('"+b+"')",index:l,keyDownFn:w,clickFn:y}),f.unshift(b);d||(d=CKEDITOR.document.getById(c)); -k=d;k.setHtml(f.join("")+'\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e');a.fire("elementsPathUpdate",{space:k})});a.on("readOnly",l);a.on("contentDomUnload",l);a.addCommand("elementsPathFocus",h.toolbarFocus);a.setKeystroke(CKEDITOR.ALT+122,"elementsPathFocus")}var h={toolbarFocus:{editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+"0"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}}},f="";CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(f+=' onkeypress\x3d"return false;"'); +b){function f(b){b=g.list[b];var c;b.equals(a.editable())||"true"==b.getAttribute("contenteditable")?(c=a.createRange(),c.selectNodeContents(b),c=c.select()):(c=a.getSelection(),c.selectElement(b));CKEDITOR.env.ie&&a.fire("selectionChange",{selection:c,path:new CKEDITOR.dom.elementPath(b)});a.focus()}function m(){d&&d.setHtml('\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e');delete g.list}var c=a.ui.spaceId("path"),d,g=a._.elementsPath,n=g.idBase;b.html+='\x3cspan id\x3d"'+c+'_label" class\x3d"cke_voice_label"\x3e'+ +a.lang.elementspath.eleLabel+'\x3c/span\x3e\x3cspan id\x3d"'+c+'" class\x3d"cke_path" role\x3d"group" aria-labelledby\x3d"'+c+'_label"\x3e\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e\x3c/span\x3e';a.on("uiReady",function(){var b=a.ui.space("path");b&&a.focusManager.add(b,1)});g.onClick=f;var y=CKEDITOR.tools.addFunction(f),v=CKEDITOR.tools.addFunction(function(b,c){var d=g.idBase,e;c=new CKEDITOR.dom.event(c);e="rtl"==a.lang.dir;switch(c.getKeystroke()){case e?39:37:case 9:return(e= +CKEDITOR.document.getById(d+(b+1)))||(e=CKEDITOR.document.getById(d+"0")),e.focus(),!1;case e?37:39:case CKEDITOR.SHIFT+9:return(e=CKEDITOR.document.getById(d+(b-1)))||(e=CKEDITOR.document.getById(d+(g.list.length-1))),e.focus(),!1;case 27:return a.focus(),!1;case 13:case 32:return f(b),!1}return!0});a.on("selectionChange",function(b){for(var f=[],h=g.list=[],k=[],l=g.filters,m=!0,u=b.data.path.elements,w=u.length;w--;){var B=u[w],C=0;b=B.data("cke-display-name")?B.data("cke-display-name"):B.data("cke-real-element-type")? +B.data("cke-real-element-type"):B.getName();(m=B.hasAttribute("contenteditable")?"true"==B.getAttribute("contenteditable"):m)||B.hasAttribute("contenteditable")||(C=1);for(var A=0;A<l.length;A++){var E=l[A](B,b);if(!1===E){C=1;break}b=E||b}C||(h.unshift(B),k.unshift(b))}h=h.length;for(l=0;l<h;l++)b=k[l],m=a.lang.elementspath.eleTitle.replace(/%1/,b),b=e.output({id:n+l,label:m,text:b,jsTitle:"javascript:void('"+b+"')",index:l,keyDownFn:v,clickFn:y}),f.unshift(b);d||(d=CKEDITOR.document.getById(c)); +k=d;k.setHtml(f.join("")+'\x3cspan class\x3d"cke_path_empty"\x3e\x26nbsp;\x3c/span\x3e');a.fire("elementsPathUpdate",{space:k})});a.on("readOnly",m);a.on("contentDomUnload",m);a.addCommand("elementsPathFocus",h.toolbarFocus);a.setKeystroke(CKEDITOR.ALT+122,"elementsPathFocus")}var h={toolbarFocus:{editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+"0"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}}},f="";CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(f+=' onkeypress\x3d"return false;"'); CKEDITOR.env.gecko&&(f+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var e=CKEDITOR.addTemplate("pathItem",'\x3ca id\x3d"{id}" href\x3d"{jsTitle}" tabindex\x3d"-1" class\x3d"cke_path_item" title\x3d"{label}"'+f+' hidefocus\x3d"true" draggable\x3d"false" ondragstart\x3d"return false;" onkeydown\x3d"return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );" onclick\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;" role\x3d"button" aria-label\x3d"{label}"\x3e{text}\x3c/a\x3e'); -CKEDITOR.plugins.add("elementspath",{init:function(a){a._.elementsPath={idBase:"cke_elementspath_"+CKEDITOR.tools.getNextNumber()+"_",filters:[]};a.on("uiSpace",function(e){"bottom"==e.data.space&&b(a,e.data)})}})}(),function(){function b(a,b,c){c=a.config.forceEnterMode||c;if("wysiwyg"==a.mode){b||(b=a.activeEnterMode);var e=a.elementPath();e&&!e.isContextFor("p")&&(b=CKEDITOR.ENTER_BR,c=1);a.fire("saveSnapshot");b==CKEDITOR.ENTER_BR?k(a,b,null,c):l(a,b,null,c);a.fire("saveSnapshot")}}function h(a){a= +CKEDITOR.plugins.add("elementspath",{init:function(a){a._.elementsPath={idBase:"cke_elementspath_"+CKEDITOR.tools.getNextNumber()+"_",filters:[]};a.on("uiSpace",function(e){"bottom"==e.data.space&&b(a,e.data)})}})}(),function(){function b(a,b,c){c=a.config.forceEnterMode||c;if("wysiwyg"==a.mode){b||(b=a.activeEnterMode);var e=a.elementPath();e&&!e.isContextFor("p")&&(b=CKEDITOR.ENTER_BR,c=1);a.fire("saveSnapshot");b==CKEDITOR.ENTER_BR?l(a,b,null,c):m(a,b,null,c);a.fire("saveSnapshot")}}function h(a){a= a.getSelection().getRanges(!0);for(var b=a.length-1;0<b;b--)a[b].deleteContents();return a[0]}function f(a){var b=a.startContainer.getAscendant(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&"true"==a.getAttribute("contenteditable")},!0);if(a.root.equals(b))return a;b=new CKEDITOR.dom.range(b);b.moveToRange(a);return b}CKEDITOR.plugins.add("enterkey",{init:function(a){a.addCommand("enter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(a){b(a)}});a.addCommand("shiftEnter",{modes:{wysiwyg:1},editorFocus:!1, -exec:function(a){b(a,a.activeShiftEnterMode,1)}});a.setKeystroke([[13,"enter"],[CKEDITOR.SHIFT+13,"shiftEnter"]])}});var e=CKEDITOR.dom.walker.whitespaces(),a=CKEDITOR.dom.walker.bookmark(),m,k,l,c;CKEDITOR.plugins.enterkey={enterBlock:function(b,g,l,m){function w(a){var b;if(a===CKEDITOR.ENTER_BR||-1===CKEDITOR.tools.indexOf(["td","th"],x.lastElement.getName())||1!==x.lastElement.getChildCount())return!1;a=x.lastElement.getChild(0).clone(!0);(b=a.getBogus())&&b.remove();return a.getText().length? -!1:!0}if(l=l||h(b)){l=f(l);var p=l.document,t=l.checkStartOfBlock(),r=l.checkEndOfBlock(),x=b.elementPath(l.startContainer),u=x.block,z=g==CKEDITOR.ENTER_DIV?"div":"p",q;if(u&&t&&r){t=u.getParent();if(t.is("li")&&1<t.getChildCount()){p=new CKEDITOR.dom.element("li");q=b.createRange();p.insertAfter(t);u.remove();q.setStart(p,0);b.getSelection().selectRanges([q]);return}if(u.is("li")||u.getParent().is("li")){u.is("li")||(u=u.getParent(),t=u.getParent());q=t.getParent();l=!u.hasPrevious();var v=!u.hasNext(); -m=b.getSelection();var z=m.createBookmarks(),B=u.getDirection(1),r=u.getAttribute("class"),D=u.getAttribute("style"),A=q.getDirection(1)!=B;b=b.enterMode!=CKEDITOR.ENTER_BR||A||D||r;if(q.is("li"))l||v?(l&&v&&t.remove(),u[v?"insertAfter":"insertBefore"](q)):u.breakParent(q);else{if(b)if(x.block.is("li")?(q=p.createElement(g==CKEDITOR.ENTER_P?"p":"div"),A&&q.setAttribute("dir",B),D&&q.setAttribute("style",D),r&&q.setAttribute("class",r),u.moveChildren(q)):q=x.block,l||v)q[l?"insertBefore":"insertAfter"](t); -else u.breakParent(t),q.insertAfter(t);else if(u.appendBogus(!0),l||v)for(;p=u[l?"getFirst":"getLast"]();)p[l?"insertBefore":"insertAfter"](t);else for(u.breakParent(t);p=u.getLast();)p.insertAfter(t);u.remove()}m.selectBookmarks(z);return}if(u&&u.getParent().is("blockquote")){u.breakParent(u.getParent());u.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1))||u.getPrevious().remove();u.getNext().getFirst(CKEDITOR.dom.walker.invisible(1))||u.getNext().remove();l.moveToElementEditStart(u);l.select(); -return}}else if(u&&u.is("pre")&&!r){k(b,g,l,m);return}if(D=l.splitBlock(z)){b=D.previousBlock;u=D.nextBlock;t=D.wasStartOfBlock;r=D.wasEndOfBlock;u?(v=u.getParent(),v.is("li")&&(u.breakParent(v),u.move(u.getNext(),1))):b&&(v=b.getParent())&&v.is("li")&&(b.breakParent(v),v=b.getNext(),l.moveToElementEditStart(v),b.move(b.getPrevious()));if(t||r)if(w(g))l.moveToElementEditStart(l.getTouchedStartNode());else{if(b){if(b.is("li")||!c.test(b.getName())&&!b.is("pre"))q=b.clone()}else u&&(q=u.clone());q? -m&&!q.is("li")&&q.renameNode(z):v&&v.is("li")?q=v:(q=p.createElement(z),b&&(B=b.getDirection())&&q.setAttribute("dir",B));if(p=D.elementPath)for(g=0,m=p.elements.length;g<m;g++){z=p.elements[g];if(z.equals(p.block)||z.equals(p.blockLimit))break;CKEDITOR.dtd.$removeEmpty[z.getName()]&&(z=z.clone(),q.moveChildren(z),q.append(z))}q.appendBogus();q.getParent()||l.insertNode(q);q.is("li")&&q.removeAttribute("value");!CKEDITOR.env.ie||!t||r&&b.getChildCount()||(l.moveToElementEditStart(r?b:q),l.select()); -l.moveToElementEditStart(t&&!r?u:q)}else u.is("li")&&(q=l.clone(),q.selectNodeContents(u),q=new CKEDITOR.dom.walker(q),q.evaluator=function(b){return!(a(b)||e(b)||b.type==CKEDITOR.NODE_ELEMENT&&b.getName()in CKEDITOR.dtd.$inline&&!(b.getName()in CKEDITOR.dtd.$empty))},(v=q.next())&&v.type==CKEDITOR.NODE_ELEMENT&&v.is("ul","ol")&&(CKEDITOR.env.needsBrFiller?p.createElement("br"):p.createText(" ")).insertBefore(v)),u&&l.moveToElementEditStart(u);l.select();l.scrollIntoView()}}},enterBr:function(a,b, -e,f){if(e=e||h(a)){var k=e.document,m=e.checkEndOfBlock(),t=new CKEDITOR.dom.elementPath(a.getSelection().getStartElement()),r=t.block,x=r&&t.block.getName();f||"li"!=x?(!f&&m&&c.test(x)?(m=r.getDirection())?(k=k.createElement("div"),k.setAttribute("dir",m),k.insertAfter(r),e.setStart(k,0)):(k.createElement("br").insertAfter(r),CKEDITOR.env.gecko&&k.createText("").insertAfter(r),e.setStartAt(r.getNext(),CKEDITOR.env.ie?CKEDITOR.POSITION_BEFORE_START:CKEDITOR.POSITION_AFTER_START)):(a="pre"==x&&CKEDITOR.env.ie&& -8>CKEDITOR.env.version?k.createText("\r"):k.createElement("br"),e.deleteContents(),e.insertNode(a),CKEDITOR.env.needsBrFiller?(k.createText("").insertAfter(a),m&&(r||t.blockLimit).appendBogus(),a.getNext().$.nodeValue="",e.setStartAt(a.getNext(),CKEDITOR.POSITION_AFTER_START)):e.setStartAt(a,CKEDITOR.POSITION_AFTER_END)),e.collapse(!0),e.select(),e.scrollIntoView()):l(a,b,e,f)}}};m=CKEDITOR.plugins.enterkey;k=m.enterBr;l=m.enterBlock;c=/^h[1-6]$/}(),function(){function b(b,f){var e={},a=[],m={nbsp:" ", -shy:"Â",gt:"\x3e",lt:"\x3c",amp:"\x26",apos:"'",quot:'"'};b=b.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(b,c){var h=f?"\x26"+c+";":m[c];e[h]=f?m[c]:"\x26"+c+";";a.push(h);return""});b=b.replace(/,$/,"");if(!f&&b){b=b.split(",");var k=document.createElement("div"),l;k.innerHTML="\x26"+b.join(";\x26")+";";l=k.innerHTML;k=null;for(k=0;k<l.length;k++){var c=l.charAt(k);e[c]="\x26"+b[k]+";";a.push(c)}}e.regex=a.join(f?"|":"");return e}CKEDITOR.plugins.add("entities",{afterInit:function(h){function f(a){return c[a]} -function e(b){return"force"!=a.entities_processNumerical&&k[b]?k[b]:"\x26#"+b.charCodeAt(0)+";"}var a=h.config;if(h=(h=h.dataProcessor)&&h.htmlFilter){var m=[];!1!==a.basicEntities&&m.push("nbsp,gt,lt,amp");a.entities&&(m.length&&m.push("quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro"), -a.entities_latin&&m.push("Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml"),a.entities_greek&&m.push("Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv"), -a.entities_additional&&m.push(a.entities_additional));var k=b(m.join(",")),l=k.regex?"["+k.regex+"]":"a^";delete k.regex;a.entities&&a.entities_processNumerical&&(l="[^ -~]|"+l);var l=new RegExp(l,"g"),c=b("nbsp,gt,lt,amp,shy",!0),d=new RegExp(c.regex,"g");h.addRules({text:function(a){return a.replace(d,f).replace(l,e)}},{applyToAll:!0,excludeNestedEditable:!0})}}})}(),CKEDITOR.config.basicEntities=!0,CKEDITOR.config.entities=!0,CKEDITOR.config.entities_latin=!0,CKEDITOR.config.entities_greek=!0, -CKEDITOR.config.entities_additional="#39",CKEDITOR.plugins.add("popup"),CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{popup:function(b,h,f,e){h=h||"80%";f=f||"70%";"string"==typeof h&&1<h.length&&"%"==h.substr(h.length-1,1)&&(h=parseInt(window.screen.width*parseInt(h,10)/100,10));"string"==typeof f&&1<f.length&&"%"==f.substr(f.length-1,1)&&(f=parseInt(window.screen.height*parseInt(f,10)/100,10));640>h&&(h=640);420>f&&(f=420);var a=parseInt((window.screen.height-f)/2,10),m=parseInt((window.screen.width- -h)/2,10);e=(e||"location\x3dno,menubar\x3dno,toolbar\x3dno,dependent\x3dyes,minimizable\x3dno,modal\x3dyes,alwaysRaised\x3dyes,resizable\x3dyes,scrollbars\x3dyes")+",width\x3d"+h+",height\x3d"+f+",top\x3d"+a+",left\x3d"+m;var k=window.open("",null,e,!0);if(!k)return!1;try{-1==navigator.userAgent.toLowerCase().indexOf(" chrome/")&&(k.moveTo(m,a),k.resizeTo(h,f)),k.focus(),k.location.href=b}catch(l){window.open(b,null,e,!0)}return!0}}),"use strict",function(){function b(a){this.editor=a;this.loaders= +exec:function(a){b(a,a.activeShiftEnterMode,1)}});a.setKeystroke([[13,"enter"],[CKEDITOR.SHIFT+13,"shiftEnter"]])}});var e=CKEDITOR.dom.walker.whitespaces(),a=CKEDITOR.dom.walker.bookmark(),k,l,m,c;CKEDITOR.plugins.enterkey={enterBlock:function(b,g,k,m){function v(a){var b;if(a===CKEDITOR.ENTER_BR||-1===CKEDITOR.tools.indexOf(["td","th"],x.lastElement.getName())||1!==x.lastElement.getChildCount())return!1;a=x.lastElement.getChild(0).clone(!0);(b=a.getBogus())&&b.remove();return a.getText().length? +!1:!0}if(k=k||h(b)){k=f(k);var p=k.document,q=k.checkStartOfBlock(),r=k.checkEndOfBlock(),x=b.elementPath(k.startContainer),t=x.block,z=g==CKEDITOR.ENTER_DIV?"div":"p",u;if(t&&q&&r){q=t.getParent();if(q.is("li")&&1<q.getChildCount()){p=new CKEDITOR.dom.element("li");u=b.createRange();p.insertAfter(q);t.remove();u.setStart(p,0);b.getSelection().selectRanges([u]);return}if(t.is("li")||t.getParent().is("li")){t.is("li")||(t=t.getParent(),q=t.getParent());u=q.getParent();k=!t.hasPrevious();var w=!t.hasNext(); +m=b.getSelection();var z=m.createBookmarks(),B=t.getDirection(1),r=t.getAttribute("class"),C=t.getAttribute("style"),A=u.getDirection(1)!=B;b=b.enterMode!=CKEDITOR.ENTER_BR||A||C||r;if(u.is("li"))k||w?(k&&w&&q.remove(),t[w?"insertAfter":"insertBefore"](u)):t.breakParent(u);else{if(b)if(x.block.is("li")?(u=p.createElement(g==CKEDITOR.ENTER_P?"p":"div"),A&&u.setAttribute("dir",B),C&&u.setAttribute("style",C),r&&u.setAttribute("class",r),t.moveChildren(u)):u=x.block,k||w)u[k?"insertBefore":"insertAfter"](q); +else t.breakParent(q),u.insertAfter(q);else if(t.appendBogus(!0),k||w)for(;p=t[k?"getFirst":"getLast"]();)p[k?"insertBefore":"insertAfter"](q);else for(t.breakParent(q);p=t.getLast();)p.insertAfter(q);t.remove()}m.selectBookmarks(z);return}if(t&&t.getParent().is("blockquote")){t.breakParent(t.getParent());t.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1))||t.getPrevious().remove();t.getNext().getFirst(CKEDITOR.dom.walker.invisible(1))||t.getNext().remove();k.moveToElementEditStart(t);k.select(); +return}}else if(t&&t.is("pre")&&!r){l(b,g,k,m);return}if(C=k.splitBlock(z)){b=C.previousBlock;t=C.nextBlock;q=C.wasStartOfBlock;r=C.wasEndOfBlock;t?(w=t.getParent(),w.is("li")&&(t.breakParent(w),t.move(t.getNext(),1))):b&&(w=b.getParent())&&w.is("li")&&(b.breakParent(w),w=b.getNext(),k.moveToElementEditStart(w),b.move(b.getPrevious()));if(q||r)if(v(g))k.moveToElementEditStart(k.getTouchedStartNode());else{if(b){if(b.is("li")||!c.test(b.getName())&&!b.is("pre"))u=b.clone()}else t&&(u=t.clone());u? +m&&!u.is("li")&&u.renameNode(z):w&&w.is("li")?u=w:(u=p.createElement(z),b&&(B=b.getDirection())&&u.setAttribute("dir",B));if(p=C.elementPath)for(g=0,m=p.elements.length;g<m;g++){z=p.elements[g];if(z.equals(p.block)||z.equals(p.blockLimit))break;CKEDITOR.dtd.$removeEmpty[z.getName()]&&(z=z.clone(),u.moveChildren(z),u.append(z))}u.appendBogus();u.getParent()||k.insertNode(u);u.is("li")&&u.removeAttribute("value");!CKEDITOR.env.ie||!q||r&&b.getChildCount()||(k.moveToElementEditStart(r?b:u),k.select()); +k.moveToElementEditStart(q&&!r?t:u)}else t.is("li")&&(u=k.clone(),u.selectNodeContents(t),u=new CKEDITOR.dom.walker(u),u.evaluator=function(b){return!(a(b)||e(b)||b.type==CKEDITOR.NODE_ELEMENT&&b.getName()in CKEDITOR.dtd.$inline&&!(b.getName()in CKEDITOR.dtd.$empty))},(w=u.next())&&w.type==CKEDITOR.NODE_ELEMENT&&w.is("ul","ol")&&(CKEDITOR.env.needsBrFiller?p.createElement("br"):p.createText(" ")).insertBefore(w)),t&&k.moveToElementEditStart(t);k.select();k.scrollIntoView()}}},enterBr:function(a,b, +e,f){if(e=e||h(a)){var k=e.document,l=e.checkEndOfBlock(),q=new CKEDITOR.dom.elementPath(a.getSelection().getStartElement()),r=q.block,x=r&&q.block.getName();f||"li"!=x?(!f&&l&&c.test(x)?(l=r.getDirection())?(k=k.createElement("div"),k.setAttribute("dir",l),k.insertAfter(r),e.setStart(k,0)):(k.createElement("br").insertAfter(r),CKEDITOR.env.gecko&&k.createText("").insertAfter(r),e.setStartAt(r.getNext(),CKEDITOR.env.ie?CKEDITOR.POSITION_BEFORE_START:CKEDITOR.POSITION_AFTER_START)):(a="pre"==x&&CKEDITOR.env.ie&& +8>CKEDITOR.env.version?k.createText("\r"):k.createElement("br"),e.deleteContents(),e.insertNode(a),CKEDITOR.env.needsBrFiller?(k.createText("").insertAfter(a),l&&(r||q.blockLimit).appendBogus(),a.getNext().$.nodeValue="",e.setStartAt(a.getNext(),CKEDITOR.POSITION_AFTER_START)):e.setStartAt(a,CKEDITOR.POSITION_AFTER_END)),e.collapse(!0),e.select(),e.scrollIntoView()):m(a,b,e,f)}}};k=CKEDITOR.plugins.enterkey;l=k.enterBr;m=k.enterBlock;c=/^h[1-6]$/}(),function(){function b(b,f){var e={},a=[],k={nbsp:" ", +shy:"Â",gt:"\x3e",lt:"\x3c",amp:"\x26",apos:"'",quot:'"'};b=b.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(b,c){var h=f?"\x26"+c+";":k[c];e[h]=f?k[c]:"\x26"+c+";";a.push(h);return""});b=b.replace(/,$/,"");if(!f&&b){b=b.split(",");var l=document.createElement("div"),m;l.innerHTML="\x26"+b.join(";\x26")+";";m=l.innerHTML;l=null;for(l=0;l<m.length;l++){var c=m.charAt(l);e[c]="\x26"+b[l]+";";a.push(c)}}e.regex=a.join(f?"|":"");return e}CKEDITOR.plugins.add("entities",{afterInit:function(h){function f(a){return c[a]} +function e(b){return"force"!=a.entities_processNumerical&&l[b]?l[b]:"\x26#"+b.charCodeAt(0)+";"}var a=h.config;if(h=(h=h.dataProcessor)&&h.htmlFilter){var k=[];!1!==a.basicEntities&&k.push("nbsp,gt,lt,amp");a.entities&&(k.length&&k.push("quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro"), +a.entities_latin&&k.push("Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml"),a.entities_greek&&k.push("Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv"), +a.entities_additional&&k.push(a.entities_additional));var l=b(k.join(",")),m=l.regex?"["+l.regex+"]":"a^";delete l.regex;a.entities&&a.entities_processNumerical&&(m="[^ -~]|"+m);var m=new RegExp(m,"g"),c=b("nbsp,gt,lt,amp,shy",!0),d=new RegExp(c.regex,"g");h.addRules({text:function(a){return a.replace(d,f).replace(m,e)}},{applyToAll:!0,excludeNestedEditable:!0})}}})}(),CKEDITOR.config.basicEntities=!0,CKEDITOR.config.entities=!0,CKEDITOR.config.entities_latin=!0,CKEDITOR.config.entities_greek=!0, +CKEDITOR.config.entities_additional="#39",CKEDITOR.plugins.add("popup"),CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{popup:function(b,h,f,e){h=h||"80%";f=f||"70%";"string"==typeof h&&1<h.length&&"%"==h.substr(h.length-1,1)&&(h=parseInt(window.screen.width*parseInt(h,10)/100,10));"string"==typeof f&&1<f.length&&"%"==f.substr(f.length-1,1)&&(f=parseInt(window.screen.height*parseInt(f,10)/100,10));640>h&&(h=640);420>f&&(f=420);var a=parseInt((window.screen.height-f)/2,10),k=parseInt((window.screen.width- +h)/2,10);e=(e||"location\x3dno,menubar\x3dno,toolbar\x3dno,dependent\x3dyes,minimizable\x3dno,modal\x3dyes,alwaysRaised\x3dyes,resizable\x3dyes,scrollbars\x3dyes")+",width\x3d"+h+",height\x3d"+f+",top\x3d"+a+",left\x3d"+k;var l=window.open("",null,e,!0);if(!l)return!1;try{-1==navigator.userAgent.toLowerCase().indexOf(" chrome/")&&(l.moveTo(k,a),l.resizeTo(h,f)),l.focus(),l.location.href=b}catch(m){window.open(b,null,e,!0)}return!0}}),"use strict",function(){function b(a){this.editor=a;this.loaders= []}function h(a,b,e){var h=a.config.fileTools_defaultFileName;this.editor=a;this.lang=a.lang;"string"===typeof b?(this.data=b,this.file=f(this.data),this.loaded=this.total=this.file.size):(this.data=null,this.file=b,this.total=this.file.size,this.loaded=0);e?this.fileName=e:this.file.name?this.fileName=this.file.name:(a=this.file.type.split("/"),h&&(a[0]=h),this.fileName=a.join("."));this.uploaded=0;this.responseData=this.uploadTotal=null;this.status="created";this.abort=function(){this.changeStatus("abort")}} function f(a){var b=a.match(e)[1];a=a.replace(e,"");a=atob(a);var f=[],h,c,d,g;for(h=0;h<a.length;h+=512){c=a.slice(h,h+512);d=Array(c.length);for(g=0;g<c.length;g++)d[g]=c.charCodeAt(g);c=new Uint8Array(d);f.push(c)}return new Blob(f,{type:b})}CKEDITOR.plugins.add("filetools",{beforeInit:function(a){a.uploadRepository=new b(a);a.on("fileUploadRequest",function(a){var b=a.data.fileLoader;b.xhr.open("POST",b.uploadUrl,!0);a.data.requestData.upload={file:b.file,name:b.fileName}},null,null,5);a.on("fileUploadRequest", function(b){var e=b.data.fileLoader,f=new FormData;b=b.data.requestData;var c=a.config.fileTools_requestHeaders,d,g;for(g in b){var h=b[g];"object"===typeof h&&h.file?f.append(g,h.file,h.name):f.append(g,h)}f.append("ckCsrfToken",CKEDITOR.tools.getCsrfToken());if(c)for(d in c)e.xhr.setRequestHeader(d,c[d]);e.xhr.send(f)},null,null,999);a.on("fileUploadResponse",function(a){var b=a.data.fileLoader,e=b.xhr,c=a.data;try{var d=JSON.parse(e.responseText);d.error&&d.error.message&&(c.message=d.error.message); @@ -826,26 +835,26 @@ if(d.uploaded)for(var g in d)c[g]=d[g];else a.cancel()}catch(f){c.message=b.lang b){var e=this;this.once("loaded",function(f){f.cancel();e.once("update",function(a){a.cancel()},null,null,0);e.upload(a,b)},null,null,0);this.load()},load:function(){var a=this,b=this.reader=new FileReader;a.changeStatus("loading");this.abort=function(){a.reader.abort()};b.onabort=function(){a.changeStatus("abort")};b.onerror=function(){a.message=a.lang.filetools.loadError;a.changeStatus("error")};b.onprogress=function(b){a.loaded=b.loaded;a.update()};b.onload=function(){a.loaded=a.total;a.data=b.result; a.changeStatus("loaded")};b.readAsDataURL(this.file)},upload:function(a,b){var e=b||{};a?(this.uploadUrl=a,this.xhr=new XMLHttpRequest,this.attachRequestListeners(),this.editor.fire("fileUploadRequest",{fileLoader:this,requestData:e})&&this.changeStatus("uploading")):(this.message=this.lang.filetools.noUrlError,this.changeStatus("error"))},attachRequestListeners:function(){function a(){"error"!=e.status&&(e.message=e.lang.filetools.networkError,e.changeStatus("error"))}function b(){"abort"!=e.status&& e.changeStatus("abort")}var e=this,f=this.xhr;e.abort=function(){f.abort();b()};f.onerror=a;f.onabort=b;f.upload?(f.upload.onprogress=function(a){a.lengthComputable&&(e.uploadTotal||(e.uploadTotal=a.total),e.uploaded=a.loaded,e.update())},f.upload.onerror=a,f.upload.onabort=b):(e.uploadTotal=e.total,e.update());f.onload=function(){e.update();if("abort"!=e.status)if(e.uploaded=e.uploadTotal,200>f.status||299<f.status)e.message=e.lang.filetools["httpError"+f.status],e.message||(e.message=e.lang.filetools.httpError.replace("%1", -f.status)),e.changeStatus("error");else{for(var a={fileLoader:e},b=["message","fileName","url"],g=e.editor.fire("fileUploadResponse",a),h=0;h<b.length;h++){var m=b[h];"string"===typeof a[m]&&(e[m]=a[m])}e.responseData=a;delete e.responseData.fileLoader;!1===g?e.changeStatus("error"):e.changeStatus("uploaded")}}},changeStatus:function(a){this.status=a;if("error"==a||"abort"==a||"loaded"==a||"uploaded"==a)this.abort=function(){};this.fire(a);this.update()},update:function(){this.fire("update")},isFinished:function(){return!!this.status.match(/^(?:loaded|uploaded|error|abort)$/)}}; +f.status)),e.changeStatus("error");else{for(var a={fileLoader:e},b=["message","fileName","url"],g=e.editor.fire("fileUploadResponse",a),h=0;h<b.length;h++){var k=b[h];"string"===typeof a[k]&&(e[k]=a[k])}e.responseData=a;delete e.responseData.fileLoader;!1===g?e.changeStatus("error"):e.changeStatus("uploaded")}}},changeStatus:function(a){this.status=a;if("error"==a||"abort"==a||"loaded"==a||"uploaded"==a)this.abort=function(){};this.fire(a);this.update()},update:function(){this.fire("update")},isFinished:function(){return!!this.status.match(/^(?:loaded|uploaded|error|abort)$/)}}; CKEDITOR.event.implementOn(b.prototype);CKEDITOR.event.implementOn(h.prototype);var e=/^data:(\S*?);base64,/;CKEDITOR.fileTools||(CKEDITOR.fileTools={});CKEDITOR.tools.extend(CKEDITOR.fileTools,{uploadRepository:b,fileLoader:h,getUploadUrl:function(a,b){var e=CKEDITOR.tools.capitalize;return b&&a[b+"UploadUrl"]?a[b+"UploadUrl"]:a.uploadUrl?a.uploadUrl:b&&a["filebrowser"+e(b,1)+"UploadUrl"]?a["filebrowser"+e(b,1)+"UploadUrl"]+"\x26responseType\x3djson":a.filebrowserUploadUrl?a.filebrowserUploadUrl+ "\x26responseType\x3djson":null},isTypeSupported:function(a,b){return!!a.type.match(b)},isFileUploadSupported:"function"===typeof FileReader&&"function"===typeof(new FileReader).readAsDataURL&&"function"===typeof FormData&&"function"===typeof(new FormData).append&&"function"===typeof XMLHttpRequest&&"function"===typeof Blob})}(),function(){function b(a,b){var c=[];if(b)for(var d in b)c.push(d+"\x3d"+encodeURIComponent(b[d]));else return a;return a+(-1!=a.indexOf("?")?"\x26":"?")+c.join("\x26")}function h(a){return!a.match(/command=QuickUpload/)|| a.match(/(\?|&)responseType=json/)?a:b(a,{responseType:"json"})}function f(a){a+="";return a.charAt(0).toUpperCase()+a.substr(1)}function e(){var a=this.getDialog(),c=a.getParentEditor();c._.filebrowserSe=this;var d=c.config["filebrowser"+f(a.getName())+"WindowWidth"]||c.config.filebrowserWindowWidth||"80%",a=c.config["filebrowser"+f(a.getName())+"WindowHeight"]||c.config.filebrowserWindowHeight||"70%",e=this.filebrowser.params||{};e.CKEditor=c.name;e.CKEditorFuncNum=c._.filebrowserFn;e.langCode|| -(e.langCode=c.langCode);e=b(this.filebrowser.url,e);c.popup(e,d,a,c.config.filebrowserWindowFeatures||c.config.fileBrowserWindowFeatures)}function a(a){var b=new CKEDITOR.dom.element(a.$.form);b&&((a=b.$.elements.ckCsrfToken)?a=new CKEDITOR.dom.element(a):(a=new CKEDITOR.dom.element("input"),a.setAttributes({name:"ckCsrfToken",type:"hidden"}),b.append(a)),a.setAttribute("value",CKEDITOR.tools.getCsrfToken()))}function m(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=this;return a.getContentElement(this["for"][0], -this["for"][1]).getInputElement().$.value&&a.getContentElement(this["for"][0],this["for"][1]).getAction()?!0:!1}function k(a,c,d){var e=d.params||{};e.CKEditor=a.name;e.CKEditorFuncNum=a._.filebrowserFn;e.langCode||(e.langCode=a.langCode);c.action=b(d.url,e);c.filebrowser=d}function l(b,d,w,p){if(p&&p.length)for(var t,r=p.length;r--;)if(t=p[r],"hbox"!=t.type&&"vbox"!=t.type&&"fieldset"!=t.type||l(b,d,w,t.children),t.filebrowser)if("string"==typeof t.filebrowser&&(t.filebrowser={action:"fileButton"== -t.type?"QuickUpload":"Browse",target:t.filebrowser}),"Browse"==t.filebrowser.action){var x=t.filebrowser.url;void 0===x&&(x=b.config["filebrowser"+f(d)+"BrowseUrl"],void 0===x&&(x=b.config.filebrowserBrowseUrl));x&&(t.onClick=e,t.filebrowser.url=x,t.hidden=!1)}else if("QuickUpload"==t.filebrowser.action&&t["for"]&&(x=t.filebrowser.url,void 0===x&&(x=b.config["filebrowser"+f(d)+"UploadUrl"],void 0===x&&(x=b.config.filebrowserUploadUrl)),x)){var u=t.onClick;t.onClick=function(d){var e=d.sender,f=e.getDialog().getContentElement(this["for"][0], -this["for"][1]).getInputElement(),k=CKEDITOR.fileTools&&CKEDITOR.fileTools.isFileUploadSupported;if(u&&!1===u.call(e,d))return!1;if(m.call(e,d)){if("form"!==b.config.filebrowserUploadMethod&&k)return d=b.uploadRepository.create(f.$.files[0]),d.on("uploaded",function(a){var b=a.sender.responseData;g.call(a.sender.editor,b.url,b.message)}),d.on("error",c.bind(this)),d.on("abort",c.bind(this)),d.loadAndUpload(h(x)),"xhr";a(f);return!0}return!1};t.filebrowser.url=x;t.hidden=!1;k(b,w.getContents(t["for"][0]).get(t["for"][1]), -t.filebrowser)}}function c(a){var b={};try{b=JSON.parse(a.sender.xhr.response)||{}}catch(c){}this.enable();alert(b.error?b.error.message:a.sender.message)}function d(a,b,c){if(-1!==c.indexOf(";")){c=c.split(";");for(var e=0;e<c.length;e++)if(d(a,b,c[e]))return!0;return!1}return(a=a.getContents(b).get(c).filebrowser)&&a.url}function g(a,b){var c=this._.filebrowserSe.getDialog(),d=this._.filebrowserSe["for"],e=this._.filebrowserSe.filebrowser.onSelect;d&&c.getContentElement(d[0],d[1]).reset();if("function"!= +(e.langCode=c.langCode);e=b(this.filebrowser.url,e);c.popup(e,d,a,c.config.filebrowserWindowFeatures||c.config.fileBrowserWindowFeatures)}function a(a){var b=new CKEDITOR.dom.element(a.$.form);b&&((a=b.$.elements.ckCsrfToken)?a=new CKEDITOR.dom.element(a):(a=new CKEDITOR.dom.element("input"),a.setAttributes({name:"ckCsrfToken",type:"hidden"}),b.append(a)),a.setAttribute("value",CKEDITOR.tools.getCsrfToken()))}function k(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=this;return a.getContentElement(this["for"][0], +this["for"][1]).getInputElement().$.value&&a.getContentElement(this["for"][0],this["for"][1]).getAction()?!0:!1}function l(a,c,d){var e=d.params||{};e.CKEditor=a.name;e.CKEditorFuncNum=a._.filebrowserFn;e.langCode||(e.langCode=a.langCode);c.action=b(d.url,e);c.filebrowser=d}function m(b,d,v,p){if(p&&p.length)for(var q,r=p.length;r--;)if(q=p[r],"hbox"!=q.type&&"vbox"!=q.type&&"fieldset"!=q.type||m(b,d,v,q.children),q.filebrowser)if("string"==typeof q.filebrowser&&(q.filebrowser={action:"fileButton"== +q.type?"QuickUpload":"Browse",target:q.filebrowser}),"Browse"==q.filebrowser.action){var x=q.filebrowser.url;void 0===x&&(x=b.config["filebrowser"+f(d)+"BrowseUrl"],void 0===x&&(x=b.config.filebrowserBrowseUrl));x&&(q.onClick=e,q.filebrowser.url=x,q.hidden=!1)}else if("QuickUpload"==q.filebrowser.action&&q["for"]&&(x=q.filebrowser.url,void 0===x&&(x=b.config["filebrowser"+f(d)+"UploadUrl"],void 0===x&&(x=b.config.filebrowserUploadUrl)),x)){var t=q.onClick;q.onClick=function(d){var e=d.sender,f=e.getDialog().getContentElement(this["for"][0], +this["for"][1]).getInputElement(),l=CKEDITOR.fileTools&&CKEDITOR.fileTools.isFileUploadSupported;if(t&&!1===t.call(e,d))return!1;if(k.call(e,d)){if("form"!==b.config.filebrowserUploadMethod&&l)return d=b.uploadRepository.create(f.$.files[0]),d.on("uploaded",function(a){var b=a.sender.responseData;g.call(a.sender.editor,b.url,b.message)}),d.on("error",c.bind(this)),d.on("abort",c.bind(this)),d.loadAndUpload(h(x)),"xhr";a(f);return!0}return!1};q.filebrowser.url=x;q.hidden=!1;l(b,v.getContents(q["for"][0]).get(q["for"][1]), +q.filebrowser)}}function c(a){var b={};try{b=JSON.parse(a.sender.xhr.response)||{}}catch(c){}this.enable();alert(b.error?b.error.message:a.sender.message)}function d(a,b,c){if(-1!==c.indexOf(";")){c=c.split(";");for(var e=0;e<c.length;e++)if(d(a,b,c[e]))return!0;return!1}return(a=a.getContents(b).get(c).filebrowser)&&a.url}function g(a,b){var c=this._.filebrowserSe.getDialog(),d=this._.filebrowserSe["for"],e=this._.filebrowserSe.filebrowser.onSelect;d&&c.getContentElement(d[0],d[1]).reset();if("function"!= typeof b||!1!==b.call(this._.filebrowserSe))if(!e||!1!==e.call(this._.filebrowserSe,a,b))if("string"==typeof b&&b&&alert(b),a&&(d=this._.filebrowserSe,c=d.getDialog(),d=d.filebrowser.target||null))if(d=d.split(":"),e=c.getContentElement(d[0],d[1]))e.setValue(a),c.selectPage(d[0])}CKEDITOR.plugins.add("filebrowser",{requires:"popup,filetools",init:function(a){a._.filebrowserFn=CKEDITOR.tools.addFunction(g,a);a.on("destroy",function(){CKEDITOR.tools.removeFunction(this._.filebrowserFn)})}});CKEDITOR.on("dialogDefinition", -function(a){if(a.editor.plugins.filebrowser)for(var b=a.data.definition,c,e=0;e<b.contents.length;++e)if(c=b.contents[e])l(a.editor,a.data.name,b,c.elements),c.hidden&&c.filebrowser&&(c.hidden=!d(b,c.id,c.filebrowser))})}(),function(){function b(b){var a=b.config,m=b.fire("uiSpace",{space:"top",html:""}).html,k=function(){function d(a,b,e){c.setStyle(b,f(e));c.setStyle("position",a)}function g(a){var b=m.getDocumentPosition();switch(a){case "top":d("absolute","top",b.y-u-v);break;case "pin":d("fixed", -"top",D);break;case "bottom":d("absolute","top",b.y+(r.height||r.bottom-r.top)+v)}l=a}var l,m,t,r,x,u,z,q=a.floatSpaceDockedOffsetX||0,v=a.floatSpaceDockedOffsetY||0,B=a.floatSpacePinnedOffsetX||0,D=a.floatSpacePinnedOffsetY||0;return function(d){if(m=b.editable()){var n=d&&"focus"==d.name;n&&c.show();b.fire("floatingSpaceLayout",{show:n});c.removeStyle("left");c.removeStyle("right");t=c.getClientRect();r=m.getClientRect();x=h.getViewPaneSize();u=t.height;z="pageXOffset"in h.$?h.$.pageXOffset:CKEDITOR.document.$.documentElement.scrollLeft; -l?(u+v<=r.top?g("top"):u+v>x.height-r.bottom?g("pin"):g("bottom"),d=x.width/2,d=a.floatSpacePreferRight?"right":0<r.left&&r.right<x.width&&r.width>t.width?"rtl"==a.contentsLangDirection?"right":"left":d-r.left>r.right-d?"left":"right",t.width>x.width?(d="left",n=0):(n="left"==d?0<r.left?r.left:0:r.right<x.width?x.width-r.right:0,n+t.width>x.width&&(d="left"==d?"right":"left",n=0)),c.setStyle(d,f(("pin"==l?B:q)+n+("pin"==l?0:"left"==d?z:-z)))):(l="pin",g("pin"),k(d))}}}();if(m){var l=new CKEDITOR.template('\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} '+ -CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko?" ":"")+'" lang\x3d"{langCode}" role\x3d"application" style\x3d"{style}"'+(b.title?' aria-labelledby\x3d"cke_{name}_arialbl"':" ")+"\x3e"+(b.title?'\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e':" ")+'\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{topId}" class\x3d"cke_top" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e'),c=CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml(l.output({content:m, -id:b.id,langDir:b.lang.dir,langCode:b.langCode,name:b.name,style:"display:none;z-index:"+(a.baseFloatZIndex-1),topId:b.ui.spaceId("top"),voiceLabel:b.title}))),d=CKEDITOR.tools.eventsBuffer(500,k),g=CKEDITOR.tools.eventsBuffer(100,k);c.unselectable();c.on("mousedown",function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()});b.on("focus",function(a){k(a);b.on("change",d.input);h.on("scroll",g.input);h.on("resize",g.input)});b.on("blur",function(){c.hide();b.removeListener("change", +function(a){if(a.editor.plugins.filebrowser)for(var b=a.data.definition,c,e=0;e<b.contents.length;++e)if(c=b.contents[e])m(a.editor,a.data.name,b,c.elements),c.hidden&&c.filebrowser&&(c.hidden=!d(b,c.id,c.filebrowser))})}(),function(){function b(b){var a=b.config,k=b.fire("uiSpace",{space:"top",html:""}).html,l=function(){function d(a,b,e){c.setStyle(b,f(e));c.setStyle("position",a)}function g(a){var b=m.getDocumentPosition();switch(a){case "top":d("absolute","top",b.y-t-w);break;case "pin":d("fixed", +"top",C);break;case "bottom":d("absolute","top",b.y+(r.height||r.bottom-r.top)+w)}k=a}var k,m,q,r,x,t,z,u=a.floatSpaceDockedOffsetX||0,w=a.floatSpaceDockedOffsetY||0,B=a.floatSpacePinnedOffsetX||0,C=a.floatSpacePinnedOffsetY||0;return function(d){if(m=b.editable()){var n=d&&"focus"==d.name;n&&c.show();b.fire("floatingSpaceLayout",{show:n});c.removeStyle("left");c.removeStyle("right");q=c.getClientRect();r=m.getClientRect();x=h.getViewPaneSize();t=q.height;z="pageXOffset"in h.$?h.$.pageXOffset:CKEDITOR.document.$.documentElement.scrollLeft; +k?(t+w<=r.top?g("top"):t+w>x.height-r.bottom?g("pin"):g("bottom"),d=x.width/2,d=a.floatSpacePreferRight?"right":0<r.left&&r.right<x.width&&r.width>q.width?"rtl"==a.contentsLangDirection?"right":"left":d-r.left>r.right-d?"left":"right",q.width>x.width?(d="left",n=0):(n="left"==d?0<r.left?r.left:0:r.right<x.width?x.width-r.right:0,n+q.width>x.width&&(d="left"==d?"right":"left",n=0)),c.setStyle(d,f(("pin"==k?B:u)+n+("pin"==k?0:"left"==d?z:-z)))):(k="pin",g("pin"),l(d))}}}();if(k){var m=new CKEDITOR.template('\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} '+ +CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko?" ":"")+'" lang\x3d"{langCode}" role\x3d"application" style\x3d"{style}"'+(b.title?' aria-labelledby\x3d"cke_{name}_arialbl"':" ")+"\x3e"+(b.title?'\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e':" ")+'\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{topId}" class\x3d"cke_top" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e'),c=CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml(m.output({content:k, +id:b.id,langDir:b.lang.dir,langCode:b.langCode,name:b.name,style:"display:none;z-index:"+(a.baseFloatZIndex-1),topId:b.ui.spaceId("top"),voiceLabel:b.title}))),d=CKEDITOR.tools.eventsBuffer(500,l),g=CKEDITOR.tools.eventsBuffer(100,l);c.unselectable();c.on("mousedown",function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()});b.on("focus",function(a){l(a);b.on("change",d.input);h.on("scroll",g.input);h.on("resize",g.input)});b.on("blur",function(){c.hide();b.removeListener("change", d.input);h.removeListener("scroll",g.input);h.removeListener("resize",g.input)});b.on("destroy",function(){h.removeListener("scroll",g.input);h.removeListener("resize",g.input);c.clearCustomData();c.remove()});b.focusManager.hasFocus&&c.show();b.focusManager.add(c,1)}}var h=CKEDITOR.document.getWindow(),f=CKEDITOR.tools.cssLength;CKEDITOR.plugins.add("floatingspace",{init:function(e){e.on("loaded",function(){b(this)},null,null,20)}})}(),CKEDITOR.plugins.add("listblock",{requires:"panel",onLoad:function(){var b= CKEDITOR.addTemplate("panel-list",'\x3cul role\x3d"presentation" class\x3d"cke_panel_list"\x3e{items}\x3c/ul\x3e'),h=CKEDITOR.addTemplate("panel-list-item",'\x3cli id\x3d"{id}" class\x3d"cke_panel_listItem" role\x3dpresentation\x3e\x3ca id\x3d"{id}_option" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"{title}" draggable\x3d"false" ondragstart\x3d"return false;" href\x3d"javascript:void(\'{val}\')" onclick\x3d"{onclick}CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;" role\x3d"option"\x3e{text}\x3c/a\x3e\x3c/li\x3e'), f=CKEDITOR.addTemplate("panel-list-group",'\x3ch1 id\x3d"{id}" draggable\x3d"false" ondragstart\x3d"return false;" class\x3d"cke_panel_grouptitle" role\x3d"presentation" \x3e{label}\x3c/h1\x3e'),e=/\'/g;CKEDITOR.ui.panel.prototype.addListBlock=function(a,b){return this.addBlock(a,new CKEDITOR.ui.listBlock(this.getHolderElement(),b))};CKEDITOR.ui.listBlock=CKEDITOR.tools.createClass({base:CKEDITOR.ui.panel.block,$:function(a,b){b=b||{};var e=b.attributes||(b.attributes={});(this.multiSelect=!!b.multiSelect)&& (e["aria-multiselectable"]=!0);!e.role&&(e.role="listbox");this.base.apply(this,arguments);this.element.setAttribute("role",e.role);e=this.keys;e[40]="next";e[9]="next";e[38]="prev";e[CKEDITOR.SHIFT+9]="prev";e[32]=CKEDITOR.env.ie?"mouseup":"click";CKEDITOR.env.ie&&(e[13]="mouseup");this._.pendingHtml=[];this._.pendingList=[];this._.items={};this._.groups={}},_:{close:function(){if(this._.started){var a=b.output({items:this._.pendingList.join("")});this._.pendingList=[];this._.pendingHtml.push(a); -delete this._.started}},getClick:function(){this._.click||(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);if(this.onClick)this.onClick(a,b)},this));return this._.click}},proto:{add:function(a,b,f){var l=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=l;var c;c=CKEDITOR.tools.htmlEncodeAttr(a).replace(e,"\\'");a={id:l,val:c,onclick:CKEDITOR.env.ie?'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26': +delete this._.started}},getClick:function(){this._.click||(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);if(this.onClick)this.onClick(a,b)},this));return this._.click}},proto:{add:function(a,b,f){var m=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=m;var c;c=CKEDITOR.tools.htmlEncodeAttr(a).replace(e,"\\'");a={id:m,val:c,onclick:CKEDITOR.env.ie?'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26': "",clickFn:this._.getClick(),title:CKEDITOR.tools.htmlEncodeAttr(f||a),text:b||a};this._.pendingList.push(h.output(a))},startGroup:function(a){this._.close();var b=CKEDITOR.tools.getNextId();this._.groups[a]=b;this._.pendingHtml.push(f.output({id:b,label:a}))},commit:function(){this._.close();this.element.appendHtml(this._.pendingHtml.join(""));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a= this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle("display","none"),b&&"ul"==b.getName()&&b.setStyle("display","none"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle("display","none")},showAll:function(){var a=this._.items,b=this._.groups,e=this.element.getDocument(),f;for(f in a)e.getById(a[f]).setStyle("display","");for(var c in b)a=e.getById(b[c]),f=a.getNext(),a.setStyle("display",""),f&&"ul"==f.getName()&&f.setStyle("display", "")},mark:function(a){this.multiSelect||this.unmarkAll();a=this._.items[a];var b=this.element.getDocument().getById(a);b.addClass("cke_selected");this.element.getDocument().getById(a+"_option").setAttribute("aria-selected",!0);this.onMark&&this.onMark(b)},markFirstDisplayed:function(){var a=this;this._.markFirstDisplayed(function(){a.multiSelect||a.unmarkAll()})},unmark:function(a){var b=this.element.getDocument();a=this._.items[a];var e=b.getById(a);e.removeClass("cke_selected");b.getById(a+"_option").removeAttribute("aria-selected"); @@ -854,15 +863,15 @@ b.getItem(++f);){if(a.equals(e)){this._.focusIndex=f;break}}else this.element.fo (CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href\x3d\"javascript:void('{titleJs}')\"")+' hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"listbox"',h="";CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(b+=' onkeypress\x3d"return false;"');CKEDITOR.env.gecko&&(b+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');CKEDITOR.env.ie&&(h='return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26');var b=b+(' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" onclick\x3d"'+ h+'CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e'+(CKEDITOR.env.hc?"\x26#9660;":CKEDITOR.env.air?"\x26nbsp;":"")+"\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e"),f=CKEDITOR.addTemplate("combo",b);CKEDITOR.UI_RICHCOMBO="richcombo";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(b){CKEDITOR.tools.extend(this, b,{canGroup:!1,title:b.label,modes:{wysiwyg:1},editorFocus:1});b=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=b.parent&&b.parent.getDocument()||CKEDITOR.document;b.className="cke_combopanel";b.block={multiSelect:b.multiSelect,attributes:b.attributes};b.toolbarRelated=!0;this._={panelDefinition:b,items:{},listeners:[]}},proto:{renderHtml:function(b){var a=[];this.render(b,a);return a.join("")},render:function(b,a){function h(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var a= -this.modes[b.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;b.readOnly&&!this.readOnly&&(a=CKEDITOR.TRISTATE_DISABLED);this.setState(a);this.setValue("");a!=CKEDITOR.TRISTATE_DISABLED&&this.refresh&&this.refresh()}}var k=CKEDITOR.env,l,c,d="cke_"+this.id,g=CKEDITOR.tools.addFunction(function(a){c&&(b.unlockSelection(1),c=0);l.execute(a)},this),n=this;l={id:d,combo:this,focus:function(){CKEDITOR.document.getById(d).getChild(1).focus()},execute:function(a){var c=n._;if(c.state!=CKEDITOR.TRISTATE_DISABLED)if(n.createPanel(b), +this.modes[b.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;b.readOnly&&!this.readOnly&&(a=CKEDITOR.TRISTATE_DISABLED);this.setState(a);this.setValue("");a!=CKEDITOR.TRISTATE_DISABLED&&this.refresh&&this.refresh()}}var l=CKEDITOR.env,m,c,d="cke_"+this.id,g=CKEDITOR.tools.addFunction(function(a){c&&(b.unlockSelection(1),c=0);m.execute(a)},this),n=this;m={id:d,combo:this,focus:function(){CKEDITOR.document.getById(d).getChild(1).focus()},execute:function(a){var c=n._;if(c.state!=CKEDITOR.TRISTATE_DISABLED)if(n.createPanel(b), c.on)c.panel.hide();else{n.commit();var d=n.getValue();d?c.list.mark(d):c.list.unmarkAll();c.panel.showBlock(n.id,new CKEDITOR.dom.element(a),4)}},clickFn:g};this._.listeners.push(b.on("activeFilterChange",h,this));this._.listeners.push(b.on("mode",h,this));this._.listeners.push(b.on("selectionChange",h,this));!this.readOnly&&this._.listeners.push(b.on("readOnly",h,this));var y=CKEDITOR.tools.addFunction(function(a,b){a=new CKEDITOR.dom.event(a);var c=a.getKeystroke();switch(c){case 13:case 32:case 40:CKEDITOR.tools.callFunction(g, -b);break;default:l.onkey(l,c)}a.preventDefault()}),w=CKEDITOR.tools.addFunction(function(){l.onfocus&&l.onfocus()});c=0;l.keyDownFn=y;k={id:d,name:this.name||this.command,label:this.label,title:this.title,cls:this.className||"",titleJs:k.gecko&&!k.hc?"":(this.title||"").replace("'",""),keydownFn:y,focusFn:w,clickFn:g};f.output(k,a);if(this.onRender)this.onRender();return l},createPanel:function(b){if(!this._.panel){var a=this._.panelDefinition,f=this._.panelDefinition.block,h=a.parent||CKEDITOR.document.getBody(), -l="cke_combopanel__"+this.name,c=new CKEDITOR.ui.floatPanel(b,h,a),a=c.addListBlock(this.id,f),d=this;c.onShow=function(){this.element.addClass(l);d.setState(CKEDITOR.TRISTATE_ON);d._.on=1;d.editorFocus&&!b.focusManager.hasFocus&&b.focus();if(d.onOpen)d.onOpen()};c.onHide=function(a){this.element.removeClass(l);d.setState(d.modes&&d.modes[b.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);d._.on=0;if(!a&&d.onClose)d.onClose()};c.onEscape=function(){c.hide(1)};a.onClick=function(a,b){d.onClick&& +b);break;default:m.onkey(m,c)}a.preventDefault()}),v=CKEDITOR.tools.addFunction(function(){m.onfocus&&m.onfocus()});c=0;m.keyDownFn=y;l={id:d,name:this.name||this.command,label:this.label,title:this.title,cls:this.className||"",titleJs:l.gecko&&!l.hc?"":(this.title||"").replace("'",""),keydownFn:y,focusFn:v,clickFn:g};f.output(l,a);if(this.onRender)this.onRender();return m},createPanel:function(b){if(!this._.panel){var a=this._.panelDefinition,f=this._.panelDefinition.block,h=a.parent||CKEDITOR.document.getBody(), +m="cke_combopanel__"+this.name,c=new CKEDITOR.ui.floatPanel(b,h,a),a=c.addListBlock(this.id,f),d=this;c.onShow=function(){this.element.addClass(m);d.setState(CKEDITOR.TRISTATE_ON);d._.on=1;d.editorFocus&&!b.focusManager.hasFocus&&b.focus();if(d.onOpen)d.onOpen()};c.onHide=function(a){this.element.removeClass(m);d.setState(d.modes&&d.modes[b.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);d._.on=0;if(!a&&d.onClose)d.onClose()};c.onEscape=function(){c.hide(1)};a.onClick=function(a,b){d.onClick&& d.onClick.call(d,a,b);c.hide()};this._.panel=c;this._.list=a;c.getBlock(this.id).onHide=function(){d._.on=0;d.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(b,a){this._.value=b;var f=this.document.getById("cke_"+this.id+"_text");f&&(b||a?f.removeClass("cke_combo_inlinelabel"):(a=this.label,f.addClass("cke_combo_inlinelabel")),f.setText("undefined"!=typeof a?a:b));var f="undefined"!=typeof a?a:b,h=this.label,f=f===h?f:f+", "+h;(h=this.document.getById("cke_"+this.id+"_label"))&& h.setText(f)},getValue:function(){return this._.value||""},unmarkAll:function(){this._.list.unmarkAll()},mark:function(b){this._.list.mark(b)},hideItem:function(b){this._.list.hideItem(b)},hideGroup:function(b){this._.list.hideGroup(b)},showAll:function(){this._.list.showAll()},add:function(b,a,f){this._.items[b]=f||b;this._.list.add(b,a,f)},startGroup:function(b){this._.list.startGroup(b)},commit:function(){this._.committed||(this._.list.commit(),this._.committed=1,CKEDITOR.ui.fire("ready",this)); this._.committed=1},setState:function(b){if(this._.state!=b){var a=this.document.getById("cke_"+this.id),f=a.getElementsByTag("a").getItem(0);a.setState(b,"cke_combo");b==CKEDITOR.TRISTATE_DISABLED?a.setAttribute("aria-disabled",!0):a.removeAttribute("aria-disabled");f&&f.setAttribute("aria-expanded",b==CKEDITOR.TRISTATE_ON);this._.state=b}},getState:function(){return this._.state},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(this._.lastState)},disable:function(){this._.state!= CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))},destroy:function(){CKEDITOR.tools.array.forEach(this._.listeners,function(b){b.removeListener()});this._.listeners=[]},select:function(b){if(!CKEDITOR.tools.isEmpty(this._.items))for(var a in this._.items)if(b({value:a,text:this._.items[a]})){this.setValue(a);break}}},statics:{handler:{create:function(b){return new CKEDITOR.ui.richCombo(b)}}}});CKEDITOR.ui.prototype.addRichCombo=function(b,a){this.add(b, -CKEDITOR.UI_RICHCOMBO,a)}}(),CKEDITOR.plugins.add("format",{requires:"richcombo",init:function(b){if(!b.blockless){for(var h=b.config,f=b.lang.format,e=h.format_tags.split(";"),a={},m=0,k=[],l=0;l<e.length;l++){var c=e[l],d=new CKEDITOR.style(h["format_"+c]);if(!b.filter.customConfig||b.filter.check(d))m++,a[c]=d,a[c]._.enterMode=b.config.enterMode,k.push(d)}0!==m&&b.ui.addRichCombo("Format",{label:f.label,title:f.panelTitle,toolbar:"styles,20",allowedContent:k,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(h.contentsCss), +CKEDITOR.UI_RICHCOMBO,a)}}(),CKEDITOR.plugins.add("format",{requires:"richcombo",init:function(b){if(!b.blockless){for(var h=b.config,f=b.lang.format,e=h.format_tags.split(";"),a={},k=0,l=[],m=0;m<e.length;m++){var c=e[m],d=new CKEDITOR.style(h["format_"+c]);if(!b.filter.customConfig||b.filter.check(d))k++,a[c]=d,a[c]._.enterMode=b.config.enterMode,l.push(d)}0!==k&&b.ui.addRichCombo("Format",{label:f.label,title:f.panelTitle,toolbar:"styles,20",allowedContent:l,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(h.contentsCss), multiSelect:!1,attributes:{"aria-label":f.panelTitle}},init:function(){this.startGroup(f.panelTitle);for(var b in a){var c=f["tag_"+b];this.add(b,a[b].buildPreview(c),c)}},onClick:function(c){b.focus();b.fire("saveSnapshot");c=a[c];var d=b.elementPath();b.fire("stylesRemove",{type:CKEDITOR.STYLE_BLOCK});c.checkActive(d,b)||b.applyStyle(c);setTimeout(function(){b.fire("saveSnapshot")},0)},onRender:function(){b.on("selectionChange",function(c){var d=this.getValue();c=c.data.path;this.refresh();for(var e in a)if(a[e].checkActive(c, b)){e!=d&&this.setValue(e,b.lang.format["tag_"+e]);return}this.setValue("")},this)},onOpen:function(){this.showAll();for(var c in a)b.activeFilter.check(a[c])||this.hideItem(c)},refresh:function(){var c=b.elementPath();if(c){if(c.isContextFor("p"))for(var d in a)if(b.activeFilter.check(a[d]))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}}})}}}),CKEDITOR.config.format_tags="p;h1;h2;h3;h4;h5;h6;pre;address;div",CKEDITOR.config.format_p={element:"p"},CKEDITOR.config.format_div={element:"div"},CKEDITOR.config.format_pre= {element:"pre"},CKEDITOR.config.format_address={element:"address"},CKEDITOR.config.format_h1={element:"h1"},CKEDITOR.config.format_h2={element:"h2"},CKEDITOR.config.format_h3={element:"h3"},CKEDITOR.config.format_h4={element:"h4"},CKEDITOR.config.format_h5={element:"h5"},CKEDITOR.config.format_h6={element:"h6"},function(){var b={canUndo:!1,exec:function(b){var f=b.document.createElement("hr");b.insertElement(f)},allowedContent:"hr",requiredContent:"hr"};CKEDITOR.plugins.add("horizontalrule",{init:function(h){h.blockless|| @@ -873,10 +882,10 @@ f.breakAfterClose&&(this._.needsSpace=f.needsSpace)):(this._.output.push("\x3e") this._.indent?this.indentation():h&&h.breakBeforeClose&&(this.lineBreak(),this.indentation());this._.output.push("\x3c/",b,"\x3e");"pre"==b&&(this._.inPre=0);h&&h.breakAfterClose&&(this.lineBreak(),this._.needsSpace=h.needsSpace);this._.afterCloser=1},text:function(b){this._.indent&&(this.indentation(),!this._.inPre&&(b=CKEDITOR.tools.ltrim(b)));this._.output.push(b)},comment:function(b){this._.indent&&this.indentation();this._.output.push("\x3c!--",b,"--\x3e")},lineBreak:function(){!this._.inPre&& 0<this._.output.length&&this._.output.push(this.lineBreakChars);this._.indent=1},indentation:function(){!this._.inPre&&this._.indentation&&this._.output.push(this._.indentation);this._.indent=0},reset:function(){this._.output=[];this._.indent=0;this._.indentation="";this._.afterCloser=0;this._.inPre=0;this._.needsSpace=0},setRules:function(b,h){var f=this._.rules[b];f?CKEDITOR.tools.extend(f,h,!0):this._.rules[b]=h}}}),"use strict",function(){function b(a,b){CKEDITOR.tools.extend(this,{editor:a,editable:a.editable(), doc:a.document,win:a.window},b,!0);this.inline=this.editable.isInline();this.inline||(this.frame=this.win.getFrame());this.target=this[this.inline?"editable":"doc"]}function h(a,b){CKEDITOR.tools.extend(this,b,{editor:a},!0)}function f(b,d){var e=b.editable();CKEDITOR.tools.extend(this,{editor:b,editable:e,inline:e.isInline(),doc:b.document,win:b.window,container:CKEDITOR.document.getBody(),winTop:CKEDITOR.document.getWindow()},d,!0);this.hidden={};this.visible={};this.inline||(this.frame=this.win.getFrame()); -this.queryViewport();var f=CKEDITOR.tools.bind(this.queryViewport,this),h=CKEDITOR.tools.bind(this.hideVisible,this),k=CKEDITOR.tools.bind(this.removeAll,this);e.attachListener(this.winTop,"resize",f);e.attachListener(this.winTop,"scroll",f);e.attachListener(this.winTop,"resize",h);e.attachListener(this.win,"scroll",h);e.attachListener(this.inline?e:this.frame,"mouseout",function(a){var b=a.data.$.clientX;a=a.data.$.clientY;this.queryViewport();(b<=this.rect.left||b>=this.rect.right||a<=this.rect.top|| -a>=this.rect.bottom)&&this.hideVisible();(0>=b||b>=this.winTopPane.width||0>=a||a>=this.winTopPane.height)&&this.hideVisible()},this);e.attachListener(b,"resize",f);e.attachListener(b,"mode",k);b.on("destroy",k);this.lineTpl=(new CKEDITOR.template('\x3cdiv data-cke-lineutils-line\x3d"1" class\x3d"cke_reset_all" style\x3d"{lineStyle}"\x3e\x3cspan style\x3d"{tipLeftStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3cspan style\x3d"{tipRightStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3c/div\x3e')).output({lineStyle:CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({}, -m,this.lineStyle,!0)),tipLeftStyle:CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({},a,{left:"0px","border-left-color":"red","border-width":"6px 0 6px 6px"},this.tipCss,this.tipLeftStyle,!0)),tipRightStyle:CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({},a,{right:"0px","border-right-color":"red","border-width":"6px 6px 6px 0"},this.tipCss,this.tipRightStyle,!0))})}function e(a){var b;if(b=a&&a.type==CKEDITOR.NODE_ELEMENT)b=!(k[a.getComputedStyle("float")]||k[a.getAttribute("align")]);return b&& -!l[a.getComputedStyle("position")]}CKEDITOR.plugins.add("lineutils");CKEDITOR.LINEUTILS_BEFORE=1;CKEDITOR.LINEUTILS_AFTER=2;CKEDITOR.LINEUTILS_INSIDE=4;b.prototype={start:function(a){var b=this,e=this.editor,f=this.doc,h,k,l,m,r=CKEDITOR.tools.eventsBuffer(50,function(){e.readOnly||"wysiwyg"!=e.mode||(b.relations={},(k=f.$.elementFromPoint(l,m))&&k.nodeType&&(h=new CKEDITOR.dom.element(k),b.traverseSearch(h),isNaN(l+m)||b.pixelSearch(h,l,m),a&&a(b.relations,l,m)))});this.listener=this.editable.attachListener(this.target, +this.queryViewport();var f=CKEDITOR.tools.bind(this.queryViewport,this),h=CKEDITOR.tools.bind(this.hideVisible,this),l=CKEDITOR.tools.bind(this.removeAll,this);e.attachListener(this.winTop,"resize",f);e.attachListener(this.winTop,"scroll",f);e.attachListener(this.winTop,"resize",h);e.attachListener(this.win,"scroll",h);e.attachListener(this.inline?e:this.frame,"mouseout",function(a){var b=a.data.$.clientX;a=a.data.$.clientY;this.queryViewport();(b<=this.rect.left||b>=this.rect.right||a<=this.rect.top|| +a>=this.rect.bottom)&&this.hideVisible();(0>=b||b>=this.winTopPane.width||0>=a||a>=this.winTopPane.height)&&this.hideVisible()},this);e.attachListener(b,"resize",f);e.attachListener(b,"mode",l);b.on("destroy",l);this.lineTpl=(new CKEDITOR.template('\x3cdiv data-cke-lineutils-line\x3d"1" class\x3d"cke_reset_all" style\x3d"{lineStyle}"\x3e\x3cspan style\x3d"{tipLeftStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3cspan style\x3d"{tipRightStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3c/div\x3e')).output({lineStyle:CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({}, +k,this.lineStyle,!0)),tipLeftStyle:CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({},a,{left:"0px","border-left-color":"red","border-width":"6px 0 6px 6px"},this.tipCss,this.tipLeftStyle,!0)),tipRightStyle:CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({},a,{right:"0px","border-right-color":"red","border-width":"6px 6px 6px 0"},this.tipCss,this.tipRightStyle,!0))})}function e(a){var b;if(b=a&&a.type==CKEDITOR.NODE_ELEMENT)b=!(l[a.getComputedStyle("float")]||l[a.getAttribute("align")]);return b&& +!m[a.getComputedStyle("position")]}CKEDITOR.plugins.add("lineutils");CKEDITOR.LINEUTILS_BEFORE=1;CKEDITOR.LINEUTILS_AFTER=2;CKEDITOR.LINEUTILS_INSIDE=4;b.prototype={start:function(a){var b=this,e=this.editor,f=this.doc,h,k,l,m,r=CKEDITOR.tools.eventsBuffer(50,function(){e.readOnly||"wysiwyg"!=e.mode||(b.relations={},(k=f.$.elementFromPoint(l,m))&&k.nodeType&&(h=new CKEDITOR.dom.element(k),b.traverseSearch(h),isNaN(l+m)||b.pixelSearch(h,l,m),a&&a(b.relations,l,m)))});this.listener=this.editable.attachListener(this.target, "mousemove",function(a){l=a.data.$.clientX;m=a.data.$.clientY;r.input()});this.editable.attachListener(this.inline?this.editable:this.frame,"mouseout",function(){r.reset()})},stop:function(){this.listener&&this.listener.removeListener()},getRange:function(){var a={};a[CKEDITOR.LINEUTILS_BEFORE]=CKEDITOR.POSITION_BEFORE_START;a[CKEDITOR.LINEUTILS_AFTER]=CKEDITOR.POSITION_AFTER_END;a[CKEDITOR.LINEUTILS_INSIDE]=CKEDITOR.POSITION_AFTER_START;return function(b){var e=this.editor.createRange();e.moveToPosition(this.relations[b.uid].element, a[b.type]);return e}}(),store:function(){function a(b,c,e){var f=b.getUniqueId();f in e?e[f].type|=c:e[f]={element:b,type:c}}return function(b,g){var f;g&CKEDITOR.LINEUTILS_AFTER&&e(f=b.getNext())&&f.isVisible()&&(a(f,CKEDITOR.LINEUTILS_BEFORE,this.relations),g^=CKEDITOR.LINEUTILS_AFTER);g&CKEDITOR.LINEUTILS_INSIDE&&e(f=b.getFirst())&&f.isVisible()&&(a(f,CKEDITOR.LINEUTILS_BEFORE,this.relations),g^=CKEDITOR.LINEUTILS_INSIDE);a(b,g,this.relations)}}(),traverseSearch:function(a){var b,g,f;do if(f=a.$["data-cke-expando"], !(f&&f in this.relations)){if(a.equals(this.editable))break;if(e(a))for(b in this.lookups)(g=this.lookups[b](a))&&this.store(a,g)}while((!a||a.type!=CKEDITOR.NODE_ELEMENT||"true"!=a.getAttribute("contenteditable"))&&(a=a.getParent()))},pixelSearch:function(){function a(c,f,h,k,l){for(var m=0,r;l(h);){h+=k;if(25==++m)break;if(r=this.doc.$.elementFromPoint(f,h))if(r==c)m=0;else if(b(c,r)&&(m=0,e(r=new CKEDITOR.dom.element(r))))return r}}var b=CKEDITOR.env.ie||CKEDITOR.env.webkit?function(a,b){return a.contains(b)}: @@ -884,230 +893,233 @@ function(a,b){return!!(a.compareDocumentPosition(b)&16)};return function(b,d,f){ greedySearch:function(){this.relations={};for(var a=this.editable.getElementsByTag("*"),b=0,g,f,h;g=a.getItem(b++);)if(!g.equals(this.editable)&&g.type==CKEDITOR.NODE_ELEMENT&&(g.hasAttribute("contenteditable")||!g.isReadOnly())&&e(g)&&g.isVisible())for(h in this.lookups)(f=this.lookups[h](g))&&this.store(g,f);return this.relations}};h.prototype={locate:function(){function a(b,c){var f=b.element[c===CKEDITOR.LINEUTILS_BEFORE?"getPrevious":"getNext"]();return f&&e(f)?(b.siblingRect=f.getClientRect(), c==CKEDITOR.LINEUTILS_BEFORE?(b.siblingRect.bottom+b.elementRect.top)/2:(b.elementRect.bottom+b.siblingRect.top)/2):c==CKEDITOR.LINEUTILS_BEFORE?b.elementRect.top:b.elementRect.bottom}return function(b){var e;this.locations={};for(var f in b)e=b[f],e.elementRect=e.element.getClientRect(),e.type&CKEDITOR.LINEUTILS_BEFORE&&this.store(f,CKEDITOR.LINEUTILS_BEFORE,a(e,CKEDITOR.LINEUTILS_BEFORE)),e.type&CKEDITOR.LINEUTILS_AFTER&&this.store(f,CKEDITOR.LINEUTILS_AFTER,a(e,CKEDITOR.LINEUTILS_AFTER)),e.type& CKEDITOR.LINEUTILS_INSIDE&&this.store(f,CKEDITOR.LINEUTILS_INSIDE,(e.elementRect.top+e.elementRect.bottom)/2);return this.locations}}(),sort:function(){var a,b,e,f;return function(h,k){a=this.locations;b=[];for(var l in a)for(var m in a[l])if(e=Math.abs(h-a[l][m]),b.length){for(f=0;f<b.length;f++)if(e<b[f].dist){b.splice(f,0,{uid:+l,type:m,dist:e});break}f==b.length&&b.push({uid:+l,type:m,dist:e})}else b.push({uid:+l,type:m,dist:e});return"undefined"!=typeof k?b.slice(0,k):b}}(),store:function(a, -b,e){this.locations[a]||(this.locations[a]={});this.locations[a][b]=e}};var a={display:"block",width:"0px",height:"0px","border-color":"transparent","border-style":"solid",position:"absolute",top:"-6px"},m={height:"0px","border-top":"1px dashed red",position:"absolute","z-index":9999};f.prototype={removeAll:function(){for(var a in this.hidden)this.hidden[a].remove(),delete this.hidden[a];for(a in this.visible)this.visible[a].remove(),delete this.visible[a]},hideLine:function(a){var b=a.getUniqueId(); +b,e){this.locations[a]||(this.locations[a]={});this.locations[a][b]=e}};var a={display:"block",width:"0px",height:"0px","border-color":"transparent","border-style":"solid",position:"absolute",top:"-6px"},k={height:"0px","border-top":"1px dashed red",position:"absolute","z-index":9999};f.prototype={removeAll:function(){for(var a in this.hidden)this.hidden[a].remove(),delete this.hidden[a];for(a in this.visible)this.visible[a].remove(),delete this.visible[a]},hideLine:function(a){var b=a.getUniqueId(); a.hide();this.hidden[b]=a;delete this.visible[b]},showLine:function(a){var b=a.getUniqueId();a.show();this.visible[b]=a;delete this.hidden[b]},hideVisible:function(){for(var a in this.visible)this.hideLine(this.visible[a])},placeLine:function(a,b){var e,f,h;if(e=this.getStyle(a.uid,a.type)){for(h in this.visible)if(this.visible[h].getCustomData("hash")!==this.hash){f=this.visible[h];break}if(!f)for(h in this.hidden)if(this.hidden[h].getCustomData("hash")!==this.hash){this.showLine(f=this.hidden[h]); break}f||this.showLine(f=this.addLine());f.setCustomData("hash",this.hash);this.visible[f.getUniqueId()]=f;f.setStyles(e);b&&b(f)}},getStyle:function(a,b){var e=this.relations[a],f=this.locations[a][b],h={};h.width=e.siblingRect?Math.max(e.siblingRect.width,e.elementRect.width):e.elementRect.width;h.top=this.inline?f+this.winTopScroll.y-this.rect.relativeY:this.rect.top+this.winTopScroll.y+f;if(h.top-this.winTopScroll.y<this.rect.top||h.top-this.winTopScroll.y>this.rect.bottom)return!1;this.inline? h.left=e.elementRect.left-this.rect.relativeX:(0<e.elementRect.left?h.left=this.rect.left+e.elementRect.left:(h.width+=e.elementRect.left,h.left=this.rect.left),0<(e=h.left+h.width-(this.rect.left+this.winPane.width))&&(h.width-=e));h.left+=this.winTopScroll.x;for(var k in h)h[k]=CKEDITOR.tools.cssLength(h[k]);return h},addLine:function(){var a=CKEDITOR.dom.element.createFromHtml(this.lineTpl);a.appendTo(this.container);return a},prepare:function(a,b){this.relations=a;this.locations=b;this.hash=Math.random()}, cleanup:function(){var a,b;for(b in this.visible)a=this.visible[b],a.getCustomData("hash")!==this.hash&&this.hideLine(a)},queryViewport:function(){this.winPane=this.win.getViewPaneSize();this.winTopScroll=this.winTop.getScrollPosition();this.winTopPane=this.winTop.getViewPaneSize();this.rect=this.getClientRect(this.inline?this.editable:this.frame)},getClientRect:function(a){a=a.getClientRect();var b=this.container.getDocumentPosition(),e=this.container.getComputedStyle("position");a.relativeX=a.relativeY= -0;"static"!=e&&(a.relativeY=b.y,a.relativeX=b.x,a.top-=a.relativeY,a.bottom-=a.relativeY,a.left-=a.relativeX,a.right-=a.relativeX);return a}};var k={left:1,right:1,center:1},l={absolute:1,fixed:1};CKEDITOR.plugins.lineutils={finder:b,locator:h,liner:f}}(),function(){function b(b){return b.getName&&!b.hasAttribute("data-cke-temp")}CKEDITOR.plugins.add("widgetselection",{init:function(b){if(CKEDITOR.env.webkit){var f=CKEDITOR.plugins.widgetselection;b.on("contentDom",function(b){b=b.editor;var a=b.editable(); +0;"static"!=e&&(a.relativeY=b.y,a.relativeX=b.x,a.top-=a.relativeY,a.bottom-=a.relativeY,a.left-=a.relativeX,a.right-=a.relativeX);return a}};var l={left:1,right:1,center:1},m={absolute:1,fixed:1};CKEDITOR.plugins.lineutils={finder:b,locator:h,liner:f}}(),function(){function b(b){return b.getName&&!b.hasAttribute("data-cke-temp")}CKEDITOR.plugins.add("widgetselection",{init:function(b){if(CKEDITOR.env.webkit){var f=CKEDITOR.plugins.widgetselection;b.on("contentDom",function(b){b=b.editor;var a=b.editable(); a.attachListener(a,"keydown",function(b){b.data.getKeystroke()==CKEDITOR.CTRL+65&&CKEDITOR.tools.setTimeout(function(){f.addFillers(a)||f.removeFillers(a)},0)},null,null,-1);b.on("selectionCheck",function(a){f.removeFillers(a.editor.editable())});b.on("paste",function(a){a.data.dataValue=f.cleanPasteData(a.data.dataValue)});"selectall"in b.plugins&&f.addSelectAllIntegration(b)})}}});CKEDITOR.plugins.widgetselection={startFiller:null,endFiller:null,fillerAttribute:"data-cke-filler-webkit",fillerContent:"\x26nbsp;", fillerTagName:"div",addFillers:function(h){var f=h.editor;if(!this.isWholeContentSelected(h)&&0<h.getChildCount()){var e=h.getFirst(b),a=h.getLast(b);e&&e.type==CKEDITOR.NODE_ELEMENT&&!e.isEditable()&&(this.startFiller=this.createFiller(),h.append(this.startFiller,1));a&&a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable()&&(this.endFiller=this.createFiller(!0),h.append(this.endFiller,0));if(this.hasFiller(h))return f=f.createRange(),f.selectNodeContents(h),f.select(),!0}return!1},removeFillers:function(b){if(this.hasFiller(b)&& !this.isWholeContentSelected(b)){var f=b.findOne(this.fillerTagName+"["+this.fillerAttribute+"\x3dstart]"),e=b.findOne(this.fillerTagName+"["+this.fillerAttribute+"\x3dend]");this.startFiller&&f&&this.startFiller.equals(f)?this.removeFiller(this.startFiller,b):this.startFiller=f;this.endFiller&&e&&this.endFiller.equals(e)?this.removeFiller(this.endFiller,b):this.endFiller=e}},cleanPasteData:function(b){b&&b.length&&(b=b.replace(this.createFillerRegex(),"").replace(this.createFillerRegex(!0),"")); return b},isWholeContentSelected:function(b){var f=b.editor.getSelection().getRanges()[0];return!f||f&&f.collapsed?!1:(f=f.clone(),f.enlarge(CKEDITOR.ENLARGE_ELEMENT),!!(f&&b&&f.startContainer&&f.endContainer&&0===f.startOffset&&f.endOffset===b.getChildCount()&&f.startContainer.equals(b)&&f.endContainer.equals(b)))},hasFiller:function(b){return 0<b.find(this.fillerTagName+"["+this.fillerAttribute+"]").count()},createFiller:function(b){var f=new CKEDITOR.dom.element(this.fillerTagName);f.setHtml(this.fillerContent); -f.setAttribute(this.fillerAttribute,b?"end":"start");f.setAttribute("data-cke-temp",1);f.setStyles({display:"block",width:0,height:0,padding:0,border:0,margin:0,position:"absolute",top:0,left:"-9999px",opacity:0,overflow:"hidden"});return f},removeFiller:function(b,f){if(b){var e=f.editor,a=f.editor.getSelection().getRanges()[0].startPath(),m=e.createRange(),k,l;a.contains(b)&&(k=b.getHtml(),l=!0);a="start"==b.getAttribute(this.fillerAttribute);b.remove();k&&0<k.length&&k!=this.fillerContent?(f.insertHtmlIntoRange(k, -e.getSelection().getRanges()[0]),m.setStartAt(f.getChild(f.getChildCount()-1),CKEDITOR.POSITION_BEFORE_END),e.getSelection().selectRanges([m])):l&&(a?m.setStartAt(f.getFirst().getNext(),CKEDITOR.POSITION_AFTER_START):m.setEndAt(f.getLast().getPrevious(),CKEDITOR.POSITION_BEFORE_END),f.editor.getSelection().selectRanges([m]))}},createFillerRegex:function(b){var f=this.createFiller(b).getOuterHtml().replace(/style="[^"]*"/gi,'style\x3d"[^"]*"').replace(/>[^<]*</gi,"\x3e[^\x3c]*\x3c");return new RegExp((b? -"":"^")+f+(b?"$":""))},addSelectAllIntegration:function(b){var f=this;b.editable().attachListener(b,"beforeCommandExec",function(e){var a=b.editable();"selectAll"==e.data.name&&a&&f.addFillers(a)},null,null,9999)}}}(),"use strict",function(){function b(a){this.editor=a;this.registered={};this.instances={};this.selected=[];this.widgetHoldingFocusedEditable=this.focused=null;this._={nextId:0,upcasts:[],upcastCallbacks:[],filters:{}};E(this);A(this);this.on("checkWidgets",k);this.editor.on("contentDomInvalidated", -this.checkWidgets,this);D(this);q(this);v(this);z(this);B(this)}function h(a,b,c,d,e){var f=a.editor;CKEDITOR.tools.extend(this,d,{editor:f,id:b,inline:"span"==c.getParent().getName(),element:c,data:CKEDITOR.tools.extend({},"function"==typeof d.defaults?d.defaults():d.defaults),dataReady:!1,inited:!1,ready:!1,edit:h.prototype.edit,focusedEditable:null,definition:d,repository:a,draggable:!1!==d.draggable,_:{downcastFn:d.downcast&&"string"==typeof d.downcast?d.downcasts[d.downcast]:d.downcast}},!0); -a.fire("instanceCreated",this);G(this,d);this.init&&this.init();this.inited=!0;(a=this.element.data("cke-widget-data"))&&this.setData(JSON.parse(decodeURIComponent(a)));e&&this.setData(e);this.data.classes||this.setData("classes",this.getClasses());this.dataReady=!0;ca(this);this.fire("data",this.data);this.isInited()&&f.editable().contains(this.wrapper)&&(this.ready=!0,this.fire("ready"))}function f(a,b,c){CKEDITOR.dom.element.call(this,b.$);this.editor=a;this._={};b=this.filter=c.filter;CKEDITOR.dtd[this.getName()].p? +f.setAttribute(this.fillerAttribute,b?"end":"start");f.setAttribute("data-cke-temp",1);f.setStyles({display:"block",width:0,height:0,padding:0,border:0,margin:0,position:"absolute",top:0,left:"-9999px",opacity:0,overflow:"hidden"});return f},removeFiller:function(b,f){if(b){var e=f.editor,a=f.editor.getSelection().getRanges()[0].startPath(),k=e.createRange(),l,m;a.contains(b)&&(l=b.getHtml(),m=!0);a="start"==b.getAttribute(this.fillerAttribute);b.remove();l&&0<l.length&&l!=this.fillerContent?(f.insertHtmlIntoRange(l, +e.getSelection().getRanges()[0]),k.setStartAt(f.getChild(f.getChildCount()-1),CKEDITOR.POSITION_BEFORE_END),e.getSelection().selectRanges([k])):m&&(a?k.setStartAt(f.getFirst().getNext(),CKEDITOR.POSITION_AFTER_START):k.setEndAt(f.getLast().getPrevious(),CKEDITOR.POSITION_BEFORE_END),f.editor.getSelection().selectRanges([k]))}},createFillerRegex:function(b){var f=this.createFiller(b).getOuterHtml().replace(/style="[^"]*"/gi,'style\x3d"[^"]*"').replace(/>[^<]*</gi,"\x3e[^\x3c]*\x3c");return new RegExp((b? +"":"^")+f+(b?"$":""))},addSelectAllIntegration:function(b){var f=this;b.editable().attachListener(b,"beforeCommandExec",function(e){var a=b.editable();"selectAll"==e.data.name&&a&&f.addFillers(a)},null,null,9999)}}}(),"use strict",function(){function b(a){this.editor=a;this.registered={};this.instances={};this.selected=[];this.widgetHoldingFocusedEditable=this.focused=null;this._={nextId:0,upcasts:[],upcastCallbacks:[],filters:{}};E(this);A(this);this.on("checkWidgets",l);this.editor.on("contentDomInvalidated", +this.checkWidgets,this);C(this);u(this);w(this);z(this);B(this)}function h(a,b,c,d,e){var g=a.editor;CKEDITOR.tools.extend(this,d,{editor:g,id:b,inline:"span"==c.getParent().getName(),element:c,data:CKEDITOR.tools.extend({},"function"==typeof d.defaults?d.defaults():d.defaults),dataReady:!1,inited:!1,ready:!1,edit:h.prototype.edit,focusedEditable:null,definition:d,repository:a,draggable:!1!==d.draggable,_:{downcastFn:d.downcast&&"string"==typeof d.downcast?d.downcasts[d.downcast]:d.downcast}},!0); +a.fire("instanceCreated",this);O(this,d);this.init&&this.init();this.inited=!0;(a=this.element.data("cke-widget-data"))&&this.setData(JSON.parse(decodeURIComponent(a)));e&&this.setData(e);this.data.classes||this.setData("classes",this.getClasses());this.dataReady=!0;Z(this);this.fire("data",this.data);this.isInited()&&g.editable().contains(this.wrapper)&&(this.ready=!0,this.fire("ready"))}function f(a,b,c){CKEDITOR.dom.element.call(this,b.$);this.editor=a;this._={};b=this.filter=c.filter;CKEDITOR.dtd[this.getName()].p? (this.enterMode=b?b.getAllowedEnterMode(a.enterMode):a.enterMode,this.shiftEnterMode=b?b.getAllowedEnterMode(a.shiftEnterMode,!0):a.shiftEnterMode):this.enterMode=this.shiftEnterMode=CKEDITOR.ENTER_BR}function e(a,b){a.addCommand(b.name,{exec:function(a,c){function d(){a.widgets.finalizeCreation(h)}var e=a.widgets.focused;if(e&&e.name==b.name)e.edit();else if(b.insert)b.insert({editor:a,commandData:c});else if(b.template){var e="function"==typeof b.defaults?b.defaults():b.defaults,e=CKEDITOR.dom.element.createFromHtml(b.template.output(e), -a.document),f,g=a.widgets.wrapElement(e,b.name),h=new CKEDITOR.dom.documentFragment(g.getDocument());h.append(g);(f=a.widgets.initOn(e,b,c&&c.startupData))?(e=f.once("edit",function(b){if(b.data.dialog)f.once("dialog",function(b){b=b.data;var c,e;c=b.once("ok",d,null,null,20);e=b.once("cancel",function(b){b.data&&!1===b.data.hide||a.widgets.destroy(f,!0)});b.once("hide",function(){c.removeListener();e.removeListener()})});else d()},null,null,999),f.edit(),e.removeListener()):d()}},allowedContent:b.allowedContent, -requiredContent:b.requiredContent,contentForms:b.contentForms,contentTransformations:b.contentTransformations})}function a(a,b){function c(a,d){var e=b.upcast.split(","),f,g;for(g=0;g<e.length;g++)if(f=e[g],f===a.name)return b.upcasts[f].call(this,a,d);return!1}function d(b,c,e){var f=CKEDITOR.tools.getIndex(a._.upcasts,function(a){return a[2]>e});0>f&&(f=a._.upcasts.length);a._.upcasts.splice(f,0,[CKEDITOR.tools.bind(b,c),c.name,e])}var e=b.upcast,f=b.upcastPriority||10;e&&("string"==typeof e?d(c, -b,f):d(e,b,f))}function m(a,b){a.focused=null;if(b.isInited()){var c=b.editor.checkDirty();a.fire("widgetBlurred",{widget:b});b.setFocused(!1);!c&&b.editor.resetDirty()}}function k(a){a=a.data;if("wysiwyg"==this.editor.mode){var b=this.editor.editable(),c=this.instances,d,e,f,g;if(b){for(d in c)c[d].isReady()&&!b.contains(c[d].wrapper)&&this.destroy(c[d],!0);if(a&&a.initOnlyNew)c=this.initOnAll();else{var k=b.find(".cke_widget_wrapper"),c=[];d=0;for(e=k.count();d<e;d++){f=k.getItem(d);if(g=!this.getByElement(f, -!0)){a:{g=t;for(var l=f;l=l.getParent();)if(g(l)){g=!0;break a}g=!1}g=!g}g&&b.contains(f)&&(f.addClass("cke_widget_new"),c.push(this.initOn(f.getFirst(h.isDomWidgetElement))))}}a&&a.focusInited&&1==c.length&&c[0].focus()}}}function l(a){if("undefined"!=typeof a.attributes&&a.attributes["data-widget"]){var b=c(a),e=d(a),f=!1;b&&b.value&&b.value.match(/^\s/g)&&(b.parent.attributes["data-cke-white-space-first"]=1,b.value=b.value.replace(/^\s/g,"\x26nbsp;"),f=!0);e&&e.value&&e.value.match(/\s$/g)&&(e.parent.attributes["data-cke-white-space-last"]= -1,e.value=e.value.replace(/\s$/g,"\x26nbsp;"),f=!0);f&&(a.attributes["data-cke-widget-white-space"]=1)}}function c(a){return a.find(function(a){return 3===a.type},!0).shift()}function d(a){return a.find(function(a){return 3===a.type},!0).pop()}function g(a,b,c){if(!c.allowedContent&&!c.disallowedContent)return null;var d=this._.filters[a];d||(this._.filters[a]=d={});a=d[b];a||(a=c.allowedContent?new CKEDITOR.filter(c.allowedContent):this.editor.filter.clone(),d[b]=a,c.disallowedContent&&a.disallow(c.disallowedContent)); -return a}function n(a){var b=[],c=a._.upcasts,d=a._.upcastCallbacks;return{toBeWrapped:b,iterator:function(a){var e,f,g,k,l;if("data-cke-widget-wrapper"in a.attributes)return(a=a.getFirst(h.isParserWidgetElement))&&b.push([a]),!1;if("data-widget"in a.attributes)return b.push([a]),!1;if(l=c.length){if(a.attributes["data-cke-widget-upcasted"])return!1;k=0;for(e=d.length;k<e;++k)if(!1===d[k](a))return;for(k=0;k<l;++k)if(e=c[k],g={},f=e[0](a,g))return f instanceof CKEDITOR.htmlParser.element&&(a=f),a.attributes["data-cke-widget-data"]= -encodeURIComponent(JSON.stringify(g)),a.attributes["data-cke-widget-upcasted"]=1,b.push([a,e[1]]),!1}}}}function y(a,b){return{tabindex:-1,contenteditable:"false","data-cke-widget-wrapper":1,"data-cke-filter":"off","class":"cke_widget_wrapper cke_widget_new cke_widget_"+(a?"inline":"block")+(b?" cke_widget_"+b:"")}}function w(a,b,c){if(a.type==CKEDITOR.NODE_ELEMENT){var d=CKEDITOR.dtd[a.name];if(d&&!d[c.name]){var d=a.split(b),e=a.parent;b=d.getIndex();a.children.length||(--b,a.remove());d.children.length|| -d.remove();return w(e,b,c)}}a.add(c,b)}function p(a,b){return"boolean"==typeof a.inline?a.inline:!!CKEDITOR.dtd.$inline[b]}function t(a){return a.hasAttribute("data-cke-temp")}function r(a,b,c,d){var e=a.editor;e.fire("lockSnapshot");c?(d=c.data("cke-widget-editable"),d=b.editables[d],a.widgetHoldingFocusedEditable=b,b.focusedEditable=d,c.addClass("cke_widget_editable_focused"),d.filter&&e.setActiveFilter(d.filter),e.setActiveEnterMode(d.enterMode,d.shiftEnterMode)):(d||b.focusedEditable.removeClass("cke_widget_editable_focused"), -b.focusedEditable=null,a.widgetHoldingFocusedEditable=null,e.setActiveFilter(null),e.setActiveEnterMode(null,null));e.fire("unlockSnapshot")}function x(a){a.contextMenu&&a.contextMenu.addListener(function(b){if(b=a.widgets.getByElement(b,!0))return b.fire("contextMenu",{})})}function u(a,b){return CKEDITOR.tools.trim(b)}function z(a){var b=a.editor,c=CKEDITOR.plugins.lineutils;b.on("dragstart",function(c){var d=c.data.target;h.isDomDragHandler(d)&&(d=a.getByElement(d),c.data.dataTransfer.setData("cke/widget-id", -d.id),b.focus(),d.focus())});b.on("drop",function(c){function d(a,b){return a&&b?a.wrapper.equals(b.wrapper)||a.wrapper.contains(b.wrapper):!1}var e=c.data.dataTransfer,f=e.getData("cke/widget-id"),g=e.getTransferType(b),e=b.createRange(),h=function(a){a=a.getBoundaryNodes().startNode;a.type!==CKEDITOR.NODE_ELEMENT&&(a=a.getParent());return b.widgets.getByElement(a)}(c.data.dropRange);if(""!==f&&g===CKEDITOR.DATA_TRANSFER_CROSS_EDITORS)c.cancel();else if(g==CKEDITOR.DATA_TRANSFER_INTERNAL)if(""=== -f&&0<b.widgets.selected.length)c.data.dataTransfer.setData("text/html",H(b));else if(f=a.instances[f])d(f,h)?c.cancel():(e.setStartBefore(f.wrapper),e.setEndAfter(f.wrapper),c.data.dragRange=e,delete CKEDITOR.plugins.clipboard.dragStartContainerChildCount,delete CKEDITOR.plugins.clipboard.dragEndContainerChildCount,c.data.dataTransfer.setData("text/html",f.getClipboardHtml()),b.widgets.destroy(f,!0))});b.on("contentDom",function(){var d=b.editable();CKEDITOR.tools.extend(a,{finder:new c.finder(b, +a.document),g,f=a.widgets.wrapElement(e,b.name),h=new CKEDITOR.dom.documentFragment(f.getDocument());h.append(f);(g=a.widgets.initOn(e,b,c&&c.startupData))?(e=g.once("edit",function(b){if(b.data.dialog)g.once("dialog",function(b){b=b.data;var c,e;c=b.once("ok",d,null,null,20);e=b.once("cancel",function(b){b.data&&!1===b.data.hide||a.widgets.destroy(g,!0)});b.once("hide",function(){c.removeListener();e.removeListener()})});else d()},null,null,999),g.edit(),e.removeListener()):d()}},allowedContent:b.allowedContent, +requiredContent:b.requiredContent,contentForms:b.contentForms,contentTransformations:b.contentTransformations})}function a(a,b){function c(a,d){var e=b.upcast.split(","),g,f;for(f=0;f<e.length;f++)if(g=e[f],g===a.name)return b.upcasts[g].call(this,a,d);return!1}function d(b,c,e){var g=CKEDITOR.tools.getIndex(a._.upcasts,function(a){return a[2]>e});0>g&&(g=a._.upcasts.length);a._.upcasts.splice(g,0,[CKEDITOR.tools.bind(b,c),c.name,e])}var e=b.upcast,g=b.upcastPriority||10;e&&("string"==typeof e?d(c, +b,g):d(e,b,g))}function k(a,b){a.focused=null;if(b.isInited()){var c=b.editor.checkDirty();a.fire("widgetBlurred",{widget:b});b.setFocused(!1);!c&&b.editor.resetDirty()}}function l(a){a=a.data;if("wysiwyg"==this.editor.mode){var b=this.editor.editable(),c=this.instances,d,e,g,f;if(b){for(d in c)c[d].isReady()&&!b.contains(c[d].wrapper)&&this.destroy(c[d],!0);if(a&&a.initOnlyNew)c=this.initOnAll();else{var k=b.find(".cke_widget_wrapper"),c=[];d=0;for(e=k.count();d<e;d++){g=k.getItem(d);if(f=!this.getByElement(g, +!0)){a:{f=q;for(var l=g;l=l.getParent();)if(f(l)){f=!0;break a}f=!1}f=!f}f&&b.contains(g)&&(g.addClass("cke_widget_new"),c.push(this.initOn(g.getFirst(h.isDomWidgetElement))))}}a&&a.focusInited&&1==c.length&&c[0].focus()}}}function m(a){if("undefined"!=typeof a.attributes&&a.attributes["data-widget"]){var b=c(a),e=d(a),g=!1;b&&b.value&&b.value.match(/^\s/g)&&(b.parent.attributes["data-cke-white-space-first"]=1,b.value=b.value.replace(/^\s/g,"\x26nbsp;"),g=!0);e&&e.value&&e.value.match(/\s$/g)&&(e.parent.attributes["data-cke-white-space-last"]= +1,e.value=e.value.replace(/\s$/g,"\x26nbsp;"),g=!0);g&&(a.attributes["data-cke-widget-white-space"]=1)}}function c(a){return a.find(function(a){return 3===a.type},!0).shift()}function d(a){return a.find(function(a){return 3===a.type},!0).pop()}function g(a,b,c){if(!c.allowedContent&&!c.disallowedContent)return null;var d=this._.filters[a];d||(this._.filters[a]=d={});a=d[b];a||(a=c.allowedContent?new CKEDITOR.filter(c.allowedContent):this.editor.filter.clone(),d[b]=a,c.disallowedContent&&a.disallow(c.disallowedContent)); +return a}function n(a){var b=[],c=a._.upcasts,d=a._.upcastCallbacks;return{toBeWrapped:b,iterator:function(a){var e,g,f,k,l;if("data-cke-widget-wrapper"in a.attributes)return(a=a.getFirst(h.isParserWidgetElement))&&b.push([a]),!1;if("data-widget"in a.attributes)return b.push([a]),!1;if(l=c.length){if(a.attributes["data-cke-widget-upcasted"])return!1;k=0;for(e=d.length;k<e;++k)if(!1===d[k](a))return;for(k=0;k<l;++k)if(e=c[k],f={},g=e[0](a,f))return g instanceof CKEDITOR.htmlParser.element&&(a=g),a.attributes["data-cke-widget-data"]= +encodeURIComponent(JSON.stringify(f)),a.attributes["data-cke-widget-upcasted"]=1,b.push([a,e[1]]),!1}}}}function y(a,b){return{tabindex:-1,contenteditable:"false","data-cke-widget-wrapper":1,"data-cke-filter":"off","class":"cke_widget_wrapper cke_widget_new cke_widget_"+(a?"inline":"block")+(b?" cke_widget_"+b:"")}}function v(a,b,c){if(a.type==CKEDITOR.NODE_ELEMENT){var d=CKEDITOR.dtd[a.name];if(d&&!d[c.name]){var d=a.split(b),e=a.parent;b=d.getIndex();a.children.length||(--b,a.remove());d.children.length|| +d.remove();return v(e,b,c)}}a.add(c,b)}function p(a,b){return"boolean"==typeof a.inline?a.inline:!!CKEDITOR.dtd.$inline[b]}function q(a){return a.hasAttribute("data-cke-temp")}function r(a,b,c,d){var e=a.editor;e.fire("lockSnapshot");c?(d=c.data("cke-widget-editable"),d=b.editables[d],a.widgetHoldingFocusedEditable=b,b.focusedEditable=d,c.addClass("cke_widget_editable_focused"),d.filter&&e.setActiveFilter(d.filter),e.setActiveEnterMode(d.enterMode,d.shiftEnterMode)):(d||b.focusedEditable.removeClass("cke_widget_editable_focused"), +b.focusedEditable=null,a.widgetHoldingFocusedEditable=null,e.setActiveFilter(null),e.setActiveEnterMode(null,null));e.fire("unlockSnapshot")}function x(a){a.contextMenu&&a.contextMenu.addListener(function(b){if(b=a.widgets.getByElement(b,!0))return b.fire("contextMenu",{})})}function t(a,b){return CKEDITOR.tools.trim(b)}function z(a){var b=a.editor,c=CKEDITOR.plugins.lineutils;b.on("dragstart",function(c){var d=c.data.target;h.isDomDragHandler(d)&&(d=a.getByElement(d),c.data.dataTransfer.setData("cke/widget-id", +d.id),b.focus(),d.focus())});b.on("drop",function(c){function d(a,b){return a&&b?a.wrapper.equals(b.wrapper)||a.wrapper.contains(b.wrapper):!1}var e=c.data.dataTransfer,g=e.getData("cke/widget-id"),f=e.getTransferType(b),e=b.createRange(),h=function(a){a=a.getBoundaryNodes().startNode;a.type!==CKEDITOR.NODE_ELEMENT&&(a=a.getParent());return b.widgets.getByElement(a)}(c.data.dropRange);if(""!==g&&f===CKEDITOR.DATA_TRANSFER_CROSS_EDITORS)c.cancel();else if(f==CKEDITOR.DATA_TRANSFER_INTERNAL)if(""=== +g&&0<b.widgets.selected.length)c.data.dataTransfer.setData("text/html",G(b));else if(g=a.instances[g])d(g,h)?c.cancel():(e.setStartBefore(g.wrapper),e.setEndAfter(g.wrapper),c.data.dragRange=e,delete CKEDITOR.plugins.clipboard.dragStartContainerChildCount,delete CKEDITOR.plugins.clipboard.dragEndContainerChildCount,c.data.dataTransfer.setData("text/html",g.getClipboardHtml()),b.widgets.destroy(g,!0))});b.on("contentDom",function(){var d=b.editable();CKEDITOR.tools.extend(a,{finder:new c.finder(b, {lookups:{"default":function(b){if(!b.is(CKEDITOR.dtd.$listItem)&&b.is(CKEDITOR.dtd.$block)&&!h.isDomNestedEditable(b)&&!a._.draggedWidget.wrapper.contains(b)){var c=h.getNestedEditable(d,b);if(c){b=a._.draggedWidget;if(a.getByElement(c)==b)return;c=CKEDITOR.filter.instances[c.data("cke-filter")];b=b.requiredContent;if(c&&b&&!c.check(b))return}return CKEDITOR.LINEUTILS_BEFORE|CKEDITOR.LINEUTILS_AFTER}}}}),locator:new c.locator(b),liner:new c.liner(b,{lineStyle:{cursor:"move !important","border-top-color":"#666"}, -tipLeftStyle:{"border-left-color":"#666"},tipRightStyle:{"border-right-color":"#666"}})},!0)})}function q(a){var b=a.editor;b.on("contentDom",function(){var c=b.editable(),d=c.isInline()?c:b.document,e,f;c.attachListener(d,"mousedown",function(c){var d=c.data.getTarget();e=d instanceof CKEDITOR.dom.element?a.getByElement(d):null;f=0;e&&(e.inline&&d.type==CKEDITOR.NODE_ELEMENT&&d.hasAttribute("data-cke-widget-drag-handler")?(f=1,a.focused!=e&&b.getSelection().removeAllRanges()):h.getNestedEditable(e.wrapper, -d)?e=null:(c.data.preventDefault(),CKEDITOR.env.ie||e.focus()))});c.attachListener(d,"mouseup",function(){f&&e&&e.wrapper&&(f=0,e.focus())});CKEDITOR.env.ie&&c.attachListener(d,"mouseup",function(){setTimeout(function(){e&&e.wrapper&&c.contains(e.wrapper)&&(e.focus(),e=null)})})});b.on("doubleclick",function(b){var c=a.getByElement(b.data.element);if(c&&!h.getNestedEditable(c.wrapper,b.data.element))return c.fire("doubleclick",{element:b.data.element})},null,null,1)}function v(a){a.editor.on("key", +tipLeftStyle:{"border-left-color":"#666"},tipRightStyle:{"border-right-color":"#666"}})},!0)})}function u(a){var b=a.editor;b.on("contentDom",function(){var c=b.editable(),d=c.isInline()?c:b.document,e,g;c.attachListener(d,"mousedown",function(c){var d=c.data.getTarget();e=d instanceof CKEDITOR.dom.element?a.getByElement(d):null;g=0;e&&(e.inline&&d.type==CKEDITOR.NODE_ELEMENT&&d.hasAttribute("data-cke-widget-drag-handler")?(g=1,a.focused!=e&&b.getSelection().removeAllRanges()):h.getNestedEditable(e.wrapper, +d)?e=null:(c.data.preventDefault(),CKEDITOR.env.ie||e.focus()))});c.attachListener(d,"mouseup",function(){g&&e&&e.wrapper&&(g=0,e.focus())});CKEDITOR.env.ie&&c.attachListener(d,"mouseup",function(){setTimeout(function(){e&&e.wrapper&&c.contains(e.wrapper)&&(e.focus(),e=null)})})});b.on("doubleclick",function(b){var c=a.getByElement(b.data.element);if(c&&!h.getNestedEditable(c.wrapper,b.data.element))return c.fire("doubleclick",{element:b.data.element})},null,null,1)}function w(a){a.editor.on("key", function(b){var c=a.focused,d=a.widgetHoldingFocusedEditable,e;c?e=c.fire("key",{keyCode:b.data.keyCode}):d&&(c=b.data.keyCode,b=d.focusedEditable,c==CKEDITOR.CTRL+65?(c=b.getBogus(),d=d.editor.createRange(),d.selectNodeContents(b),c&&d.setEndAt(c,CKEDITOR.POSITION_BEFORE_START),d.select(),e=!1):8==c||46==c?(e=d.editor.getSelection().getRanges(),d=e[0],e=!(1==e.length&&d.collapsed&&d.checkBoundaryOfElement(b,CKEDITOR[8==c?"START":"END"]))):e=void 0);return e},null,null,1)}function B(a){function b(d){1> -a.selected.length||O(c,"cut"===d.name)}var c=a.editor;c.on("contentDom",function(){var a=c.editable();a.attachListener(a,"copy",b);a.attachListener(a,"cut",b)})}function D(a){function b(){var a=e.getSelection();if(a&&(a=a.getRanges()[0])&&!a.collapsed){var d=c(a.startContainer),f=c(a.endContainer);!d&&f?(a.setEndBefore(f.wrapper),a.select()):d&&!f&&(a.setStartAfter(d.wrapper),a.select())}}function c(a){return a?a.type==CKEDITOR.NODE_TEXT?c(a.getParent()):e.widgets.getByElement(a):null}function d(){a.fire("checkSelection")} +a.selected.length||I(c,"cut"===d.name)}var c=a.editor;c.on("contentDom",function(){var a=c.editable();a.attachListener(a,"copy",b);a.attachListener(a,"cut",b)})}function C(a){function b(){var a=e.getSelection();if(a&&(a=a.getRanges()[0])&&!a.collapsed){var d=c(a.startContainer),g=c(a.endContainer);!d&&g?(a.setEndBefore(g.wrapper),a.select()):d&&!g&&(a.setStartAfter(d.wrapper),a.select())}}function c(a){return a?a.type==CKEDITOR.NODE_TEXT?c(a.getParent()):e.widgets.getByElement(a):null}function d(){a.fire("checkSelection")} var e=a.editor;e.on("selectionCheck",d);e.on("contentDom",function(){e.editable().attachListener(e,"key",function(){setTimeout(d,10)})});if(!CKEDITOR.env.ie)a.on("checkSelection",b);a.on("checkSelection",a.checkSelection,a);e.on("selectionChange",function(b){var c=(b=h.getNestedEditable(e.editable(),b.data.selection.getStartElement()))&&a.getByElement(b),d=a.widgetHoldingFocusedEditable;d?d===c&&d.focusedEditable.equals(b)||(r(a,d,null),c&&b&&r(a,c,b)):c&&b&&r(a,c,b)});e.on("dataReady",function(){F(a).commit()}); -e.on("blur",function(){var b;(b=a.focused)&&m(a,b);(b=a.widgetHoldingFocusedEditable)&&r(a,b,null)})}function A(a){var b=a.editor,e={};b.on("toDataFormat",function(b){var f=CKEDITOR.tools.getNextNumber(),g=[];b.data.downcastingSessionId=f;e[f]=g;b.data.dataValue.forEach(function(b){var e=b.attributes,f;if("data-cke-widget-white-space"in e){f=c(b);var k=d(b);f.parent.attributes["data-cke-white-space-first"]&&(f.value=f.value.replace(/^ /g," "));k.parent.attributes["data-cke-white-space-last"]&& -(k.value=k.value.replace(/ $/g," "))}if("data-cke-widget-id"in e){if(e=a.instances[e["data-cke-widget-id"]])f=b.getFirst(h.isParserWidgetElement),g.push({wrapper:b,element:f,widget:e,editables:{}}),"1"!=f.attributes["data-cke-widget-keep-attr"]&&delete f.attributes["data-widget"]}else if("data-cke-widget-editable"in e)return 0<g.length&&(g[g.length-1].editables[e["data-cke-widget-editable"]]=b),!1},CKEDITOR.NODE_ELEMENT,!0)},null,null,8);b.on("toDataFormat",function(a){if(a.data.downcastingSessionId)for(var b= -e[a.data.downcastingSessionId],c,d,f,g,h,k;c=b.shift();){d=c.widget;f=c.element;g=d._.downcastFn&&d._.downcastFn.call(d,f);a.data.widgetsCopy&&d.getClipboardHtml&&(g=CKEDITOR.htmlParser.fragment.fromHtml(d.getClipboardHtml()),g=g.children[0]);for(k in c.editables)h=c.editables[k],delete h.attributes.contenteditable,h.setHtml(d.editables[k].getData());g||(g=f);c.wrapper.replaceWith(g)}},null,null,13);b.on("contentDomUnload",function(){a.destroyAll(!0)})}function E(a){var b=a.editor,c,d;b.on("toHtml", -function(b){var d=n(a),e;for(b.data.dataValue.forEach(d.iterator,CKEDITOR.NODE_ELEMENT,!0);e=d.toBeWrapped.pop();){var f=e[0],g=f.parent;g.type==CKEDITOR.NODE_ELEMENT&&g.attributes["data-cke-widget-wrapper"]&&g.replaceWith(f);a.wrapElement(e[0],e[1])}c=b.data.protectedWhitespaces?3==b.data.dataValue.children.length&&h.isParserWidgetWrapper(b.data.dataValue.children[1]):1==b.data.dataValue.children.length&&h.isParserWidgetWrapper(b.data.dataValue.children[0])},null,null,8);b.on("dataReady",function(){if(d)for(var c= -b.editable().find(".cke_widget_wrapper"),e,f,g=0,k=c.count();g<k;++g)e=c.getItem(g),f=e.getFirst(h.isDomWidgetElement),f.type==CKEDITOR.NODE_ELEMENT&&f.data("widget")?(f.replace(e),a.wrapElement(f)):e.remove();d=0;a.destroyAll(!0);a.initOnAll()});b.on("loadSnapshot",function(b){/data-cke-widget/.test(b.data)&&(d=1);a.destroyAll(!0)},null,null,9);b.on("paste",function(a){a=a.data;a.dataValue=a.dataValue.replace(U,u);a.range&&(a=h.getNestedEditable(b.editable(),a.range.startContainer))&&(a=CKEDITOR.filter.instances[a.data("cke-filter")])&& -b.setActiveFilter(a)});b.on("afterInsertHtml",function(d){d.data.intoRange?a.checkWidgets({initOnlyNew:!0}):(b.fire("lockSnapshot"),a.checkWidgets({initOnlyNew:!0,focusInited:c}),b.fire("unlockSnapshot"))})}function F(a){var b=a.selected,c=[],d=b.slice(0),e=null;return{select:function(a){0>CKEDITOR.tools.indexOf(b,a)&&c.push(a);a=CKEDITOR.tools.indexOf(d,a);0<=a&&d.splice(a,1);return this},focus:function(a){e=a;return this},commit:function(){var f=a.focused!==e,g,h;a.editor.fire("lockSnapshot");for(f&& -(g=a.focused)&&m(a,g);g=d.pop();)b.splice(CKEDITOR.tools.indexOf(b,g),1),g.isInited()&&(h=g.editor.checkDirty(),g.setSelected(!1),!h&&g.editor.resetDirty());f&&e&&(h=a.editor.checkDirty(),a.focused=e,a.fire("widgetFocused",{widget:e}),e.setFocused(!0),!h&&a.editor.resetDirty());for(;g=c.pop();)b.push(g),g.setSelected(!0);a.editor.fire("unlockSnapshot")}}}function K(a){a&&a.addFilterRule(function(a){return a.replace(/\s*cke_widget_selected/g,"").replace(/\s*cke_widget_focused/g,"")})}function L(a, -b,c){var d=0;b=I(b);var e=a.data.classes||{},f;if(b){for(e=CKEDITOR.tools.clone(e);f=b.pop();)c?e[f]||(d=e[f]=1):e[f]&&(delete e[f],d=1);d&&a.setData("classes",e)}}function C(a){a.cancel()}function O(a,b){var c=a.widgets.focused,d,e,f;ga.hasCopyBin(a)||(e=new ga(a,{beforeDestroy:function(){!b&&c&&c.focus();f&&a.getSelection().selectBookmarks(f);d&&CKEDITOR.plugins.widgetselection.addFillers(a.editable())},afterDestroy:function(){b&&!a.readOnly&&(c?a.widgets.del(c):a.extractSelectedHtml(),a.fire("saveSnapshot"))}}), -c||(d=CKEDITOR.env.webkit&&CKEDITOR.plugins.widgetselection.isWholeContentSelected(a.editable()),f=a.getSelection().createBookmarks(!0)),e.handle(H(a)))}function I(a){return(a=(a=a.getDefinition().attributes)&&a["class"])?a.split(/\s+/):null}function M(){var a=CKEDITOR.document.getActive(),b=this.editor,c=b.editable();(c.isInline()?c:b.document.getWindow().getFrame()).equals(a)&&b.focusManager.focus(c)}function Q(){CKEDITOR.env.gecko&&this.editor.unlockSelection();CKEDITOR.env.webkit||(this.editor.forceNextSelectionCheck(), -this.editor.selectionChange(1))}function H(a){var b=a.getSelectedHtml(!0);if(a.widgets.focused)return a.widgets.focused.getClipboardHtml();a.once("toDataFormat",function(a){a.data.widgetsCopy=!0},null,null,-1);return a.dataProcessor.toDataFormat(b)}function G(a,b){P(a);Y(a);T(a);X(a);S(a);aa(a);ba(a);if(CKEDITOR.env.ie&&9>CKEDITOR.env.version)a.wrapper.on("dragstart",function(b){var c=b.data.getTarget();h.getNestedEditable(a,c)||a.inline&&h.isDomDragHandler(c)||b.data.preventDefault()});a.wrapper.removeClass("cke_widget_new"); -a.element.addClass("cke_widget_element");a.on("key",function(b){b=b.data.keyCode;if(13==b)a.edit();else{if(b==CKEDITOR.CTRL+67||b==CKEDITOR.CTRL+88){O(a.editor,b==CKEDITOR.CTRL+88);return}if(b in V||CKEDITOR.CTRL&b||CKEDITOR.ALT&b)return}return!1},null,null,999);a.on("doubleclick",function(b){a.edit()&&b.cancel()});if(b.data)a.on("data",b.data);if(b.edit)a.on("edit",b.edit)}function P(a){(a.wrapper=a.element.getParent()).setAttribute("data-cke-widget-id",a.id)}function Y(a,b){a.partSelectors||(a.partSelectors= -a.parts);if(a.parts){var c={},d,e;for(e in a.partSelectors)b||!a.parts[e]||"string"==typeof a.parts[e]?(d=a.wrapper.findOne(a.partSelectors[e]),c[e]=d):c[e]=a.parts[e];a.parts=c}}function T(a){var b=a.editables,c,d;a.editables={};if(a.editables)for(c in b)d=b[c],a.initEditable(c,"string"==typeof d?{selector:d}:d)}function X(a){if(!0===a.mask)da(a);else if(a.mask){var b=new CKEDITOR.tools.buffers.throttle(250,J,a),c=CKEDITOR.env.gecko?300:0,d,e;a.on("focus",function(){b.input();d=a.editor.on("change", -b.input);e=a.on("blur",function(){d.removeListener();e.removeListener()})});a.editor.on("instanceReady",function(){setTimeout(function(){b.input()},c)});a.editor.on("mode",function(){setTimeout(function(){b.input()},c)});if(CKEDITOR.env.gecko){var f=a.element.find("img");CKEDITOR.tools.array.forEach(f.toArray(),function(a){a.on("load",function(){b.input()})})}for(var g in a.editables)a.editables[g].on("focus",function(){a.editor.on("change",b.input);e&&e.removeListener()}),a.editables[g].on("blur", -function(){a.editor.removeListener("change",b.input)});b.input()}}function da(a){var b=a.wrapper.findOne(".cke_widget_mask");b||(b=new CKEDITOR.dom.element("img",a.editor.document),b.setAttributes({src:CKEDITOR.tools.transparentImageData,"class":"cke_reset cke_widget_mask"}),a.wrapper.append(b));a.mask=b}function J(){if(this.wrapper){this.maskPart=this.maskPart||this.mask;var a=this.parts[this.maskPart],b;if(a&&"string"!=typeof a){b=this.wrapper.findOne(".cke_widget_partial_mask");b||(b=new CKEDITOR.dom.element("img", -this.editor.document),b.setAttributes({src:CKEDITOR.tools.transparentImageData,"class":"cke_reset cke_widget_partial_mask"}),this.wrapper.append(b));this.mask=b;var c=b.$,d=a.$,e=!(c.offsetTop==d.offsetTop&&c.offsetLeft==d.offsetLeft);if(c.offsetWidth!=d.offsetWidth||c.offsetHeight!=d.offsetHeight||e)c=a.getParent(),d=CKEDITOR.plugins.widget.isDomWidget(c),b.setStyles({top:a.$.offsetTop+(d?0:c.$.offsetTop)+"px",left:a.$.offsetLeft+(d?0:c.$.offsetLeft)+"px",width:a.$.offsetWidth+"px",height:a.$.offsetHeight+ -"px"})}}}function S(a){if(a.draggable){var b=a.editor,c=a.wrapper.getLast(h.isDomDragHandlerContainer),d;c?d=c.findOne("img"):(c=new CKEDITOR.dom.element("span",b.document),c.setAttributes({"class":"cke_reset cke_widget_drag_handler_container",style:"background:rgba(220,220,220,0.5);background-image:url("+b.plugins.widget.path+"images/handle.png);display:none;"}),d=new CKEDITOR.dom.element("img",b.document),d.setAttributes({"class":"cke_reset cke_widget_drag_handler","data-cke-widget-drag-handler":"1", -src:CKEDITOR.tools.transparentImageData,width:15,title:b.lang.widget.move,height:15,role:"presentation"}),a.inline&&d.setAttribute("draggable","true"),c.append(d),a.wrapper.append(c));a.wrapper.on("dragover",function(a){a.data.preventDefault()});a.wrapper.on("mouseenter",a.updateDragHandlerPosition,a);setTimeout(function(){a.on("data",a.updateDragHandlerPosition,a)},50);if(!a.inline&&(d.on("mousedown",W,a),CKEDITOR.env.ie&&9>CKEDITOR.env.version))d.on("dragstart",function(a){a.data.preventDefault(!0)}); -a.dragHandlerContainer=c}}function W(a){function b(){var c;for(r.reset();c=h.pop();)c.removeListener();var d=k;c=a.sender;var e=this.repository.finder,f=this.repository.liner,g=this.editor,l=this.editor.editable();CKEDITOR.tools.isEmpty(f.visible)||(d=e.getRange(d[0]),this.focus(),g.fire("drop",{dropRange:d,target:d.startContainer}));l.removeClass("cke_widget_dragging");f.hideVisible();g.fire("dragend",{target:c})}if(CKEDITOR.tools.getMouseButton(a)===CKEDITOR.MOUSE_BUTTON_LEFT){var c=this.repository.finder, -d=this.repository.locator,e=this.repository.liner,f=this.editor,g=f.editable(),h=[],k=[],l,m;this.repository._.draggedWidget=this;var n=c.greedySearch(),r=CKEDITOR.tools.eventsBuffer(50,function(){l=d.locate(n);k=d.sort(m,1);k.length&&(e.prepare(n,l),e.placeLine(k[0]),e.cleanup())});g.addClass("cke_widget_dragging");h.push(g.on("mousemove",function(a){m=a.data.$.clientY;r.input()}));f.fire("dragstart",{target:a.sender});h.push(f.document.once("mouseup",b,this));g.isInline()||h.push(CKEDITOR.document.once("mouseup", -b,this))}}function aa(a){var b=null;a.on("data",function(){var a=this.data.classes,c;if(b!=a){for(c in b)a&&a[c]||this.removeClass(c);for(c in a)this.addClass(c);b=a}})}function ba(a){a.on("data",function(){if(a.wrapper){var b=this.getLabel?this.getLabel():this.editor.lang.widget.label.replace(/%1/,this.pathName||this.element.getName());a.wrapper.setAttribute("role","region");a.wrapper.setAttribute("aria-label",b)}},null,null,9999)}function ca(a){a.element.data("cke-widget-data",encodeURIComponent(JSON.stringify(a.data)))} -function Z(){function a(){}function b(a,c,d){return d&&this.checkElement(a)?(a=d.widgets.getByElement(a,!0))&&a.checkStyleActive(this):!1}function c(a){function b(a,c,d){for(var e=a.length,f=0;f<e;){if(c.call(d,a[f],f,a))return a[f];f++}}function e(a){function b(a,c){var d=CKEDITOR.tools.object.keys(a),e=CKEDITOR.tools.object.keys(c);if(d.length!==e.length)return!1;for(var f in a)if(("object"!==typeof a[f]||"object"!==typeof c[f]||!b(a[f],c[f]))&&a[f]!==c[f])return!1;return!0}return function(c){return b(a.getDefinition(), -c.getDefinition())}}var f=a.widget,g;d[f]||(d[f]={});for(var h=0,k=a.group.length;h<k;h++)g=a.group[h],d[f][g]||(d[f][g]=[]),g=d[f][g],b(g,e(a))||g.push(a)}var d={};CKEDITOR.style.addCustomHandler({type:"widget",setup:function(a){this.widget=a.widget;(this.group="string"==typeof a.group?[a.group]:a.group)&&c(this)},apply:function(a){var b;a instanceof CKEDITOR.editor&&this.checkApplicable(a.elementPath(),a)&&(b=a.widgets.focused,this.group&&this.removeStylesFromSameGroup(a),b.applyStyle(this))},remove:function(a){a instanceof -CKEDITOR.editor&&this.checkApplicable(a.elementPath(),a)&&a.widgets.focused.removeStyle(this)},removeStylesFromSameGroup:function(a){var b=!1,c,e;if(!(a instanceof CKEDITOR.editor))return!1;e=a.elementPath();if(this.checkApplicable(e,a))for(var f=0,g=this.group.length;f<g;f++){c=d[this.widget][this.group[f]];for(var h=0;h<c.length;h++)c[h]!==this&&c[h].checkActive(e,a)&&(a.widgets.focused.removeStyle(c[h]),b=!0)}return b},checkActive:function(a,b){return this.checkElementMatch(a.lastElement,0,b)}, -checkApplicable:function(a,b){return b instanceof CKEDITOR.editor?this.checkElement(a.lastElement):!1},checkElementMatch:b,checkElementRemovable:b,checkElement:function(a){return h.isDomWidgetWrapper(a)?(a=a.getFirst(h.isDomWidgetElement))&&a.data("widget")==this.widget:!1},buildPreview:function(a){return a||this._.definition.name},toAllowedContentRules:function(a){if(!a)return null;a=a.widgets.registered[this.widget];var b,c={};if(!a)return null;if(a.styleableElements){b=this.getClassesArray();if(!b)return null; -c[a.styleableElements]={classes:b,propertiesOnly:!0};return c}return a.styleToAllowedContentRules?a.styleToAllowedContentRules(this):null},getClassesArray:function(){var a=this._.definition.attributes&&this._.definition.attributes["class"];return a?CKEDITOR.tools.trim(a).split(/\s+/):null},applyToRange:a,removeFromRange:a,applyToObject:a})}CKEDITOR.plugins.add("widget",{requires:"lineutils,clipboard,widgetselection",onLoad:function(){void 0!==CKEDITOR.document.$.querySelectorAll&&(CKEDITOR.addCss('.cke_widget_wrapper{position:relative;outline:none}.cke_widget_inline{display:inline-block}.cke_widget_wrapper:hover\x3e.cke_widget_element{outline:2px solid #ffd25c;cursor:default}.cke_widget_wrapper:hover .cke_widget_editable{outline:2px solid #ffd25c}.cke_widget_wrapper.cke_widget_focused\x3e.cke_widget_element,.cke_widget_wrapper .cke_widget_editable.cke_widget_editable_focused{outline:2px solid #47a4f5}.cke_widget_editable{cursor:text}.cke_widget_drag_handler_container{position:absolute;width:15px;height:0;display:block;opacity:0.75;transition:height 0s 0.2s;line-height:0}.cke_widget_wrapper:hover\x3e.cke_widget_drag_handler_container{height:15px;transition:none}.cke_widget_drag_handler_container:hover{opacity:1}.cke_editable[contenteditable\x3d"false"] .cke_widget_drag_handler_container{display:none;}img.cke_widget_drag_handler{cursor:move;width:15px;height:15px;display:inline-block}.cke_widget_mask{position:absolute;top:0;left:0;width:100%;height:100%;display:block}.cke_widget_partial_mask{position:absolute;display:block}.cke_editable.cke_widget_dragging, .cke_editable.cke_widget_dragging *{cursor:move !important}'), -Z())},beforeInit:function(a){void 0!==CKEDITOR.document.$.querySelectorAll&&(a.widgets=new b(a))},afterInit:function(a){if(void 0!==CKEDITOR.document.$.querySelectorAll){var b=a.widgets.registered,c,d,e;for(d in b)c=b[d],(e=c.button)&&a.ui.addButton&&a.ui.addButton(CKEDITOR.tools.capitalize(c.name,!0),{label:e,command:c.name,toolbar:"insert,10"});x(a);K(a.undoManager)}}});b.prototype={MIN_SELECTION_CHECK_INTERVAL:500,add:function(b,c){var d=this.editor;c=CKEDITOR.tools.prototypedCopy(c);c.name=b; -c._=c._||{};d.fire("widgetDefinition",c);c.template&&(c.template=new CKEDITOR.template(c.template));e(d,c);a(this,c);this.registered[b]=c;if(c.dialog&&d.plugins.dialog)var f=CKEDITOR.on("dialogDefinition",function(a){a=a.data.definition;var b=a.dialog;a.getMode||b.getName()!==c.dialog||(a.getMode=function(){var a=b.getModel(d);return a&&a instanceof CKEDITOR.plugins.widget&&a.ready?CKEDITOR.dialog.EDITING_MODE:CKEDITOR.dialog.CREATION_MODE});f.removeListener()});return c},addUpcastCallback:function(a){this._.upcastCallbacks.push(a)}, +e.on("blur",function(){var b;(b=a.focused)&&k(a,b);(b=a.widgetHoldingFocusedEditable)&&r(a,b,null)})}function A(a){var b=a.editor,e={};b.on("toDataFormat",function(b){var g=CKEDITOR.tools.getNextNumber(),f=[];b.data.downcastingSessionId=g;e[g]=f;b.data.dataValue.forEach(function(b){var e=b.attributes,g;if("data-cke-widget-white-space"in e){g=c(b);var k=d(b);g.parent.attributes["data-cke-white-space-first"]&&(g.value=g.value.replace(/^ /g," "));k.parent.attributes["data-cke-white-space-last"]&& +(k.value=k.value.replace(/ $/g," "))}if("data-cke-widget-id"in e){if(e=a.instances[e["data-cke-widget-id"]])g=b.getFirst(h.isParserWidgetElement),f.push({wrapper:b,element:g,widget:e,editables:{}}),"1"!=g.attributes["data-cke-widget-keep-attr"]&&delete g.attributes["data-widget"]}else if("data-cke-widget-editable"in e)return 0<f.length&&(f[f.length-1].editables[e["data-cke-widget-editable"]]=b),!1},CKEDITOR.NODE_ELEMENT,!0)},null,null,8);b.on("toDataFormat",function(a){if(a.data.downcastingSessionId)for(var b= +e[a.data.downcastingSessionId],c,d,g,f,h,k;c=b.shift();){d=c.widget;g=c.element;f=d._.downcastFn&&d._.downcastFn.call(d,g);a.data.widgetsCopy&&d.getClipboardHtml&&(f=CKEDITOR.htmlParser.fragment.fromHtml(d.getClipboardHtml()),f=f.children[0]);for(k in c.editables)h=c.editables[k],delete h.attributes.contenteditable,h.setHtml(d.editables[k].getData());f||(f=g);c.wrapper.replaceWith(f)}},null,null,13);b.on("contentDomUnload",function(){a.destroyAll(!0)})}function E(a){var b=a.editor,c,d;b.on("toHtml", +function(b){var d=n(a),e;for(b.data.dataValue.forEach(d.iterator,CKEDITOR.NODE_ELEMENT,!0);e=d.toBeWrapped.pop();){var g=e[0],f=g.parent;f.type==CKEDITOR.NODE_ELEMENT&&f.attributes["data-cke-widget-wrapper"]&&f.replaceWith(g);a.wrapElement(e[0],e[1])}c=b.data.protectedWhitespaces?3==b.data.dataValue.children.length&&h.isParserWidgetWrapper(b.data.dataValue.children[1]):1==b.data.dataValue.children.length&&h.isParserWidgetWrapper(b.data.dataValue.children[0])},null,null,8);b.on("dataReady",function(){if(d)for(var c= +b.editable().find(".cke_widget_wrapper"),e,g,f=0,k=c.count();f<k;++f)e=c.getItem(f),g=e.getFirst(h.isDomWidgetElement),g.type==CKEDITOR.NODE_ELEMENT&&g.data("widget")?(g.replace(e),a.wrapElement(g)):e.remove();d=0;a.destroyAll(!0);a.initOnAll()});b.on("loadSnapshot",function(b){/data-cke-widget/.test(b.data)&&(d=1);a.destroyAll(!0)},null,null,9);b.on("paste",function(a){a=a.data;a.dataValue=a.dataValue.replace(V,t);a.range&&(a=h.getNestedEditable(b.editable(),a.range.startContainer))&&(a=CKEDITOR.filter.instances[a.data("cke-filter")])&& +b.setActiveFilter(a)});b.on("afterInsertHtml",function(d){d.data.intoRange?a.checkWidgets({initOnlyNew:!0}):(b.fire("lockSnapshot"),a.checkWidgets({initOnlyNew:!0,focusInited:c}),b.fire("unlockSnapshot"))})}function F(a){var b=a.selected,c=[],d=b.slice(0),e=null;return{select:function(a){0>CKEDITOR.tools.indexOf(b,a)&&c.push(a);a=CKEDITOR.tools.indexOf(d,a);0<=a&&d.splice(a,1);return this},focus:function(a){e=a;return this},commit:function(){var g=a.focused!==e,f,h;a.editor.fire("lockSnapshot");for(g&& +(f=a.focused)&&k(a,f);f=d.pop();)b.splice(CKEDITOR.tools.indexOf(b,f),1),f.isInited()&&(h=f.editor.checkDirty(),f.setSelected(!1),!h&&f.editor.resetDirty());g&&e&&(h=a.editor.checkDirty(),a.focused=e,a.fire("widgetFocused",{widget:e}),e.setFocused(!0),!h&&a.editor.resetDirty());for(;f=c.pop();)b.push(f),f.setSelected(!0);a.editor.fire("unlockSnapshot")}}}function K(a){a&&a.addFilterRule(function(a){return a.replace(/\s*cke_widget_selected/g,"").replace(/\s*cke_widget_focused/g,"")})}function M(a, +b,c){var d=0;b=L(b);var e=a.data.classes||{},g;if(b){for(e=CKEDITOR.tools.clone(e);g=b.pop();)c?e[g]||(d=e[g]=1):e[g]&&(delete e[g],d=1);d&&a.setData("classes",e)}}function D(a){a.cancel()}function N(a,b){var c=function(a){return a==CKEDITOR.ENTER_BR?"br":a==CKEDITOR.ENTER_DIV?"div":"p"}(a.editor.config.enterMode),d=new CKEDITOR.dom.element(c);"br"!==c&&d.appendBogus();"after"===b?d.insertAfter(a.wrapper):d.insertBefore(a.wrapper);(function(b){var c=a.editor.createRange();c.setStart(b,0);a.editor.getSelection().selectRanges([c])})(d)} +function I(a,b){var c=a.widgets.focused,d,e,g;P.hasCopyBin(a)||(e=new P(a,{beforeDestroy:function(){!b&&c&&c.focus();g&&a.getSelection().selectBookmarks(g);d&&CKEDITOR.plugins.widgetselection.addFillers(a.editable())},afterDestroy:function(){b&&!a.readOnly&&(c?a.widgets.del(c):a.extractSelectedHtml(),a.fire("saveSnapshot"))}}),c||(d=CKEDITOR.env.webkit&&CKEDITOR.plugins.widgetselection.isWholeContentSelected(a.editable()),g=a.getSelection().createBookmarks(!0)),e.handle(G(a)))}function L(a){return(a= +(a=a.getDefinition().attributes)&&a["class"])?a.split(/\s+/):null}function R(){var a=CKEDITOR.document.getActive(),b=this.editor,c=b.editable();(c.isInline()?c:b.document.getWindow().getFrame()).equals(a)&&b.focusManager.focus(c)}function H(){CKEDITOR.env.gecko&&this.editor.unlockSelection();CKEDITOR.env.webkit||(this.editor.forceNextSelectionCheck(),this.editor.selectionChange(1))}function G(a){var b=a.getSelectedHtml(!0);if(a.widgets.focused)return a.widgets.focused.getClipboardHtml();a.once("toDataFormat", +function(a){a.data.widgetsCopy=!0},null,null,-1);return a.dataProcessor.toDataFormat(b)}function O(a,b){var c=a.editor.config.widget_keystrokeInsertLineBefore,d=a.editor.config.widget_keystrokeInsertLineAfter;Y(a);S(a);X(a);ca(a);W(a);ba(a);da(a);if(CKEDITOR.env.ie&&9>CKEDITOR.env.version)a.wrapper.on("dragstart",function(b){var c=b.data.getTarget();h.getNestedEditable(a,c)||a.inline&&h.isDomDragHandler(c)||b.data.preventDefault()});a.wrapper.removeClass("cke_widget_new");a.element.addClass("cke_widget_element"); +a.on("key",function(b){b=b.data.keyCode;if(b==c)N(a,"before"),a.editor.fire("saveSnapshot");else if(b==d)N(a,"after"),a.editor.fire("saveSnapshot");else if(13==b)a.edit();else{if(b==CKEDITOR.CTRL+67||b==CKEDITOR.CTRL+88){I(a.editor,b==CKEDITOR.CTRL+88);return}if(b in ha||CKEDITOR.CTRL&b||CKEDITOR.ALT&b)return}return!1},null,null,999);a.on("doubleclick",function(b){a.edit()&&b.cancel()});if(b.data)a.on("data",b.data);if(b.edit)a.on("edit",b.edit)}function Y(a){(a.wrapper=a.element.getParent()).setAttribute("data-cke-widget-id", +a.id)}function S(a,b){a.partSelectors||(a.partSelectors=a.parts);if(a.parts){var c={},d,e;for(e in a.partSelectors)b||!a.parts[e]||"string"==typeof a.parts[e]?(d=a.wrapper.findOne(a.partSelectors[e]),c[e]=d):c[e]=a.parts[e];a.parts=c}}function X(a){var b=a.editables,c,d;a.editables={};if(a.editables)for(c in b)d=b[c],a.initEditable(c,"string"==typeof d?{selector:d}:d)}function ca(a){if(!0===a.mask)J(a);else if(a.mask){var b=new CKEDITOR.tools.buffers.throttle(250,T,a),c=CKEDITOR.env.gecko?300:0,d, +e;a.on("focus",function(){b.input();d=a.editor.on("change",b.input);e=a.on("blur",function(){d.removeListener();e.removeListener()})});a.editor.on("instanceReady",function(){setTimeout(function(){b.input()},c)});a.editor.on("mode",function(){setTimeout(function(){b.input()},c)});if(CKEDITOR.env.gecko){var g=a.element.find("img");CKEDITOR.tools.array.forEach(g.toArray(),function(a){a.on("load",function(){b.input()})})}for(var f in a.editables)a.editables[f].on("focus",function(){a.editor.on("change", +b.input);e&&e.removeListener()}),a.editables[f].on("blur",function(){a.editor.removeListener("change",b.input)});b.input()}}function J(a){var b=a.wrapper.findOne(".cke_widget_mask");b||(b=new CKEDITOR.dom.element("img",a.editor.document),b.setAttributes({src:CKEDITOR.tools.transparentImageData,"class":"cke_reset cke_widget_mask"}),a.wrapper.append(b));a.mask=b}function T(){if(this.wrapper){this.maskPart=this.maskPart||this.mask;var a=this.parts[this.maskPart],b;if(a&&"string"!=typeof a){b=this.wrapper.findOne(".cke_widget_partial_mask"); +b||(b=new CKEDITOR.dom.element("img",this.editor.document),b.setAttributes({src:CKEDITOR.tools.transparentImageData,"class":"cke_reset cke_widget_partial_mask"}),this.wrapper.append(b));this.mask=b;var c=b.$,d=a.$,e=!(c.offsetTop==d.offsetTop&&c.offsetLeft==d.offsetLeft);if(c.offsetWidth!=d.offsetWidth||c.offsetHeight!=d.offsetHeight||e)c=a.getParent(),d=CKEDITOR.plugins.widget.isDomWidget(c),b.setStyles({top:a.$.offsetTop+(d?0:c.$.offsetTop)+"px",left:a.$.offsetLeft+(d?0:c.$.offsetLeft)+"px",width:a.$.offsetWidth+ +"px",height:a.$.offsetHeight+"px"})}}}function W(a){if(a.draggable){var b=a.editor,c=a.wrapper.getLast(h.isDomDragHandlerContainer),d;c?d=c.findOne("img"):(c=new CKEDITOR.dom.element("span",b.document),c.setAttributes({"class":"cke_reset cke_widget_drag_handler_container",style:"background:rgba(220,220,220,0.5);background-image:url("+b.plugins.widget.path+"images/handle.png);display:none;"}),d=new CKEDITOR.dom.element("img",b.document),d.setAttributes({"class":"cke_reset cke_widget_drag_handler", +"data-cke-widget-drag-handler":"1",src:CKEDITOR.tools.transparentImageData,width:15,title:b.lang.widget.move,height:15,role:"presentation"}),a.inline&&d.setAttribute("draggable","true"),c.append(d),a.wrapper.append(c));a.wrapper.on("dragover",function(a){a.data.preventDefault()});a.wrapper.on("mouseenter",a.updateDragHandlerPosition,a);setTimeout(function(){a.on("data",a.updateDragHandlerPosition,a)},50);if(!a.inline&&(d.on("mousedown",aa,a),CKEDITOR.env.ie&&9>CKEDITOR.env.version))d.on("dragstart", +function(a){a.data.preventDefault(!0)});a.dragHandlerContainer=c}}function aa(a){function b(){var c;for(r.reset();c=h.pop();)c.removeListener();var d=k;c=a.sender;var e=this.repository.finder,g=this.repository.liner,f=this.editor,l=this.editor.editable();CKEDITOR.tools.isEmpty(g.visible)||(d=e.getRange(d[0]),this.focus(),f.fire("drop",{dropRange:d,target:d.startContainer}));l.removeClass("cke_widget_dragging");g.hideVisible();f.fire("dragend",{target:c})}if(CKEDITOR.tools.getMouseButton(a)===CKEDITOR.MOUSE_BUTTON_LEFT){var c= +this.repository.finder,d=this.repository.locator,e=this.repository.liner,g=this.editor,f=g.editable(),h=[],k=[],l,m;this.repository._.draggedWidget=this;var n=c.greedySearch(),r=CKEDITOR.tools.eventsBuffer(50,function(){l=d.locate(n);k=d.sort(m,1);k.length&&(e.prepare(n,l),e.placeLine(k[0]),e.cleanup())});f.addClass("cke_widget_dragging");h.push(f.on("mousemove",function(a){m=a.data.$.clientY;r.input()}));g.fire("dragstart",{target:a.sender});h.push(g.document.once("mouseup",b,this));f.isInline()|| +h.push(CKEDITOR.document.once("mouseup",b,this))}}function ba(a){var b=null;a.on("data",function(){var a=this.data.classes,c;if(b!=a){for(c in b)a&&a[c]||this.removeClass(c);for(c in a)this.addClass(c);b=a}})}function da(a){a.on("data",function(){if(a.wrapper){var b=this.getLabel?this.getLabel():this.editor.lang.widget.label.replace(/%1/,this.pathName||this.element.getName());a.wrapper.setAttribute("role","region");a.wrapper.setAttribute("aria-label",b)}},null,null,9999)}function Z(a){a.element.data("cke-widget-data", +encodeURIComponent(JSON.stringify(a.data)))}function U(){function a(){}function b(a,c,d){return d&&this.checkElement(a)?(a=d.widgets.getByElement(a,!0))&&a.checkStyleActive(this):!1}function c(a){function b(a,c,d){for(var e=a.length,g=0;g<e;){if(c.call(d,a[g],g,a))return a[g];g++}}function e(a){function b(a,c){var d=CKEDITOR.tools.object.keys(a),e=CKEDITOR.tools.object.keys(c);if(d.length!==e.length)return!1;for(var g in a)if(("object"!==typeof a[g]||"object"!==typeof c[g]||!b(a[g],c[g]))&&a[g]!== +c[g])return!1;return!0}return function(c){return b(a.getDefinition(),c.getDefinition())}}var g=a.widget,f;d[g]||(d[g]={});for(var h=0,k=a.group.length;h<k;h++)f=a.group[h],d[g][f]||(d[g][f]=[]),f=d[g][f],b(f,e(a))||f.push(a)}var d={};CKEDITOR.style.addCustomHandler({type:"widget",setup:function(a){this.widget=a.widget;(this.group="string"==typeof a.group?[a.group]:a.group)&&c(this)},apply:function(a){var b;a instanceof CKEDITOR.editor&&this.checkApplicable(a.elementPath(),a)&&(b=a.widgets.focused, +this.group&&this.removeStylesFromSameGroup(a),b.applyStyle(this))},remove:function(a){a instanceof CKEDITOR.editor&&this.checkApplicable(a.elementPath(),a)&&a.widgets.focused.removeStyle(this)},removeStylesFromSameGroup:function(a){var b=!1,c,e;if(!(a instanceof CKEDITOR.editor))return!1;e=a.elementPath();if(this.checkApplicable(e,a))for(var g=0,f=this.group.length;g<f;g++){c=d[this.widget][this.group[g]];for(var h=0;h<c.length;h++)c[h]!==this&&c[h].checkActive(e,a)&&(a.widgets.focused.removeStyle(c[h]), +b=!0)}return b},checkActive:function(a,b){return this.checkElementMatch(a.lastElement,0,b)},checkApplicable:function(a,b){return b instanceof CKEDITOR.editor?this.checkElement(a.lastElement):!1},checkElementMatch:b,checkElementRemovable:b,checkElement:function(a){return h.isDomWidgetWrapper(a)?(a=a.getFirst(h.isDomWidgetElement))&&a.data("widget")==this.widget:!1},buildPreview:function(a){return a||this._.definition.name},toAllowedContentRules:function(a){if(!a)return null;a=a.widgets.registered[this.widget]; +var b,c={};if(!a)return null;if(a.styleableElements){b=this.getClassesArray();if(!b)return null;c[a.styleableElements]={classes:b,propertiesOnly:!0};return c}return a.styleToAllowedContentRules?a.styleToAllowedContentRules(this):null},getClassesArray:function(){var a=this._.definition.attributes&&this._.definition.attributes["class"];return a?CKEDITOR.tools.trim(a).split(/\s+/):null},applyToRange:a,removeFromRange:a,applyToObject:a})}CKEDITOR.plugins.add("widget",{requires:"lineutils,clipboard,widgetselection", +onLoad:function(){void 0!==CKEDITOR.document.$.querySelectorAll&&(CKEDITOR.addCss('.cke_widget_wrapper{position:relative;outline:none}.cke_widget_inline{display:inline-block}.cke_widget_wrapper:hover\x3e.cke_widget_element{outline:2px solid #ffd25c;cursor:default}.cke_widget_wrapper:hover .cke_widget_editable{outline:2px solid #ffd25c}.cke_widget_wrapper.cke_widget_focused\x3e.cke_widget_element,.cke_widget_wrapper .cke_widget_editable.cke_widget_editable_focused{outline:2px solid #47a4f5}.cke_widget_editable{cursor:text}.cke_widget_drag_handler_container{position:absolute;width:15px;height:0;display:block;opacity:0.75;transition:height 0s 0.2s;line-height:0}.cke_widget_wrapper:hover\x3e.cke_widget_drag_handler_container{height:15px;transition:none}.cke_widget_drag_handler_container:hover{opacity:1}.cke_editable[contenteditable\x3d"false"] .cke_widget_drag_handler_container{display:none;}img.cke_widget_drag_handler{cursor:move;width:15px;height:15px;display:inline-block}.cke_widget_mask{position:absolute;top:0;left:0;width:100%;height:100%;display:block}.cke_widget_partial_mask{position:absolute;display:block}.cke_editable.cke_widget_dragging, .cke_editable.cke_widget_dragging *{cursor:move !important}'), +U())},beforeInit:function(a){void 0!==CKEDITOR.document.$.querySelectorAll&&(a.widgets=new b(a))},afterInit:function(a){if(void 0!==CKEDITOR.document.$.querySelectorAll){var b=a.widgets.registered,c,d,e;for(d in b)c=b[d],(e=c.button)&&a.ui.addButton&&a.ui.addButton(CKEDITOR.tools.capitalize(c.name,!0),{label:e,command:c.name,toolbar:"insert,10"});x(a);K(a.undoManager)}}});b.prototype={MIN_SELECTION_CHECK_INTERVAL:500,add:function(b,c){var d=this.editor;c=CKEDITOR.tools.prototypedCopy(c);c.name=b; +c._=c._||{};d.fire("widgetDefinition",c);c.template&&(c.template=new CKEDITOR.template(c.template));e(d,c);a(this,c);this.registered[b]=c;if(c.dialog&&d.plugins.dialog)var g=CKEDITOR.on("dialogDefinition",function(a){a=a.data.definition;var b=a.dialog;a.getMode||b.getName()!==c.dialog||(a.getMode=function(){var a=b.getModel(d);return a&&a instanceof CKEDITOR.plugins.widget&&a.ready?CKEDITOR.dialog.EDITING_MODE:CKEDITOR.dialog.CREATION_MODE});g.removeListener()});return c},addUpcastCallback:function(a){this._.upcastCallbacks.push(a)}, checkSelection:function(){if(this.editor.getSelection()){var a=this.editor.getSelection(),b=a.getSelectedElement(),c=F(this),d;if(b&&(d=this.getByElement(b,!0)))return c.focus(d).select(d).commit();a=a.getRanges()[0];if(!a||a.collapsed)return c.commit();a=new CKEDITOR.dom.walker(a);for(a.evaluator=h.isDomWidgetWrapper;b=a.next();)c.select(this.getByElement(b));c.commit()}},checkWidgets:function(a){this.fire("checkWidgets",CKEDITOR.tools.copy(a||{}))},del:function(a){if(this.focused===a){var b=a.editor, -c=b.createRange(),d;(d=c.moveToClosestEditablePosition(a.wrapper,!0))||(d=c.moveToClosestEditablePosition(a.wrapper,!1));d&&b.getSelection().selectRanges([c])}a.wrapper.remove();this.destroy(a,!0)},destroy:function(a,b){this.widgetHoldingFocusedEditable===a&&r(this,a,null,b);a.destroy(b);delete this.instances[a.id];this.fire("instanceDestroyed",a)},destroyAll:function(a,b){var c,d,e=this.instances;if(b&&!a){d=b.find(".cke_widget_wrapper");for(var e=d.count(),f=0;f<e;++f)(c=this.getByElement(d.getItem(f), +c=b.createRange(),d;(d=c.moveToClosestEditablePosition(a.wrapper,!0))||(d=c.moveToClosestEditablePosition(a.wrapper,!1));d&&b.getSelection().selectRanges([c])}a.wrapper.remove();this.destroy(a,!0)},destroy:function(a,b){this.widgetHoldingFocusedEditable===a&&r(this,a,null,b);a.destroy(b);delete this.instances[a.id];this.fire("instanceDestroyed",a)},destroyAll:function(a,b){var c,d,e=this.instances;if(b&&!a){d=b.find(".cke_widget_wrapper");for(var e=d.count(),g=0;g<e;++g)(c=this.getByElement(d.getItem(g), !0))&&this.destroy(c)}else for(d in e)c=e[d],this.destroy(c,a)},finalizeCreation:function(a){(a=a.getFirst())&&h.isDomWidgetWrapper(a)&&(this.editor.insertElement(a),a=this.getByElement(a),a.ready=!0,a.fire("ready"),a.focus())},getByElement:function(){function a(c){return c.is(b)&&c.data("cke-widget-id")}var b={div:1,span:1};return function(b,c){if(!b)return null;var d=a(b);if(!c&&!d){var e=this.editor.editable();do b=b.getParent();while(b&&!b.equals(e)&&!(d=a(b)))}return this.instances[d]||null}}(), initOn:function(a,b,c){b?"string"==typeof b&&(b=this.registered[b]):b=this.registered[a.data("widget")];if(!b)return null;var d=this.wrapElement(a,b.name);return d?d.hasClass("cke_widget_new")?(a=new h(this,this._.nextId++,a,b,c),a.isInited()?this.instances[a.id]=a:null):this.getByElement(a):null},initOnAll:function(a){a=(a||this.editor.editable()).find(".cke_widget_new");for(var b=[],c,d=a.count();d--;)(c=this.initOn(a.getItem(d).getFirst(h.isDomWidgetElement)))&&b.push(c);return b},onWidget:function(a){var b= Array.prototype.slice.call(arguments);b.shift();for(var c in this.instances){var d=this.instances[c];d.name==a&&d.on.apply(d,b)}this.on("instanceCreated",function(c){c=c.data;c.name==a&&c.on.apply(c,b)})},parseElementClasses:function(a){if(!a)return null;a=CKEDITOR.tools.trim(a).split(/\s+/);for(var b,c={},d=0;b=a.pop();)-1==b.indexOf("cke_")&&(c[b]=d=1);return d?c:null},wrapElement:function(a,b){var c=null,d,e;if(a instanceof CKEDITOR.dom.element){b=b||a.data("widget");d=this.registered[b];if(!d)return null; -if((c=a.getParent())&&c.type==CKEDITOR.NODE_ELEMENT&&c.data("cke-widget-wrapper"))return c;a.hasAttribute("data-cke-widget-keep-attr")||a.data("cke-widget-keep-attr",a.data("widget")?1:0);a.data("widget",b);(e=p(d,a.getName()))&&l(a);c=new CKEDITOR.dom.element(e?"span":"div",a.getDocument());c.setAttributes(y(e,b));c.data("cke-display-name",d.pathName?d.pathName:a.getName());a.getParent(!0)&&c.replace(a);a.appendTo(c)}else if(a instanceof CKEDITOR.htmlParser.element){b=b||a.attributes["data-widget"]; -d=this.registered[b];if(!d)return null;if((c=a.parent)&&c.type==CKEDITOR.NODE_ELEMENT&&c.attributes["data-cke-widget-wrapper"])return c;"data-cke-widget-keep-attr"in a.attributes||(a.attributes["data-cke-widget-keep-attr"]=a.attributes["data-widget"]?1:0);b&&(a.attributes["data-widget"]=b);(e=p(d,a.name))&&l(a);c=new CKEDITOR.htmlParser.element(e?"span":"div",y(e,b));c.attributes["data-cke-display-name"]=d.pathName?d.pathName:a.name;d=a.parent;var f;d&&(f=a.getIndex(),a.remove());c.add(a);d&&w(d, -f,c)}return c},_tests_createEditableFilter:g};CKEDITOR.event.implementOn(b.prototype);h.prototype={addClass:function(a){this.element.addClass(a);this.wrapper.addClass(h.WRAPPER_CLASS_PREFIX+a)},applyStyle:function(a){L(this,a,1)},checkStyleActive:function(a){a=I(a);var b;if(!a)return!1;for(;b=a.pop();)if(!this.hasClass(b))return!1;return!0},destroy:function(a){this.fire("destroy");if(this.editables)for(var b in this.editables)this.destroyEditable(b,a);a||("0"==this.element.data("cke-widget-keep-attr")&& -this.element.removeAttribute("data-widget"),this.element.removeAttributes(["data-cke-widget-data","data-cke-widget-keep-attr"]),this.element.removeClass("cke_widget_element"),this.element.replace(this.wrapper));this.wrapper=null},destroyEditable:function(a,b){var c=this.editables[a],d=!0;c.removeListener("focus",Q);c.removeListener("blur",M);this.editor.focusManager.remove(c);if(c.filter){for(var e in this.repository.instances){var f=this.repository.instances[e];f.editables&&(f=f.editables[a])&&f!== -c&&c.filter===f.filter&&(d=!1)}d&&(c.filter.destroy(),(d=this.repository._.filters[this.name])&&delete d[a])}b||(this.repository.destroyAll(!1,c),c.removeClass("cke_widget_editable"),c.removeClass("cke_widget_editable_focused"),c.removeAttributes(["contenteditable","data-cke-widget-editable","data-cke-enter-mode"]));delete this.editables[a]},edit:function(){var a={dialog:this.dialog},b=this;if(!1===this.fire("edit",a)||!a.dialog)return!1;this.editor.openDialog(a.dialog,function(a){var c,d;!1!==b.fire("dialog", +if((c=a.getParent())&&c.type==CKEDITOR.NODE_ELEMENT&&c.data("cke-widget-wrapper"))return c;a.hasAttribute("data-cke-widget-keep-attr")||a.data("cke-widget-keep-attr",a.data("widget")?1:0);a.data("widget",b);(e=p(d,a.getName()))&&m(a);c=new CKEDITOR.dom.element(e?"span":"div",a.getDocument());c.setAttributes(y(e,b));c.data("cke-display-name",d.pathName?d.pathName:a.getName());a.getParent(!0)&&c.replace(a);a.appendTo(c)}else if(a instanceof CKEDITOR.htmlParser.element){b=b||a.attributes["data-widget"]; +d=this.registered[b];if(!d)return null;if((c=a.parent)&&c.type==CKEDITOR.NODE_ELEMENT&&c.attributes["data-cke-widget-wrapper"])return c;"data-cke-widget-keep-attr"in a.attributes||(a.attributes["data-cke-widget-keep-attr"]=a.attributes["data-widget"]?1:0);b&&(a.attributes["data-widget"]=b);(e=p(d,a.name))&&m(a);c=new CKEDITOR.htmlParser.element(e?"span":"div",y(e,b));c.attributes["data-cke-display-name"]=d.pathName?d.pathName:a.name;d=a.parent;var g;d&&(g=a.getIndex(),a.remove());c.add(a);d&&v(d, +g,c)}return c},_tests_createEditableFilter:g};CKEDITOR.event.implementOn(b.prototype);h.prototype={addClass:function(a){this.element.addClass(a);this.wrapper.addClass(h.WRAPPER_CLASS_PREFIX+a)},applyStyle:function(a){M(this,a,1)},checkStyleActive:function(a){a=L(a);var b;if(!a)return!1;for(;b=a.pop();)if(!this.hasClass(b))return!1;return!0},destroy:function(a){this.fire("destroy");if(this.editables)for(var b in this.editables)this.destroyEditable(b,a);a||("0"==this.element.data("cke-widget-keep-attr")&& +this.element.removeAttribute("data-widget"),this.element.removeAttributes(["data-cke-widget-data","data-cke-widget-keep-attr"]),this.element.removeClass("cke_widget_element"),this.element.replace(this.wrapper));this.wrapper=null},destroyEditable:function(a,b){var c=this.editables[a],d=!0;c.removeListener("focus",H);c.removeListener("blur",R);this.editor.focusManager.remove(c);if(c.filter){for(var e in this.repository.instances){var g=this.repository.instances[e];g.editables&&(g=g.editables[a])&&g!== +c&&c.filter===g.filter&&(d=!1)}d&&(c.filter.destroy(),(d=this.repository._.filters[this.name])&&delete d[a])}b||(this.repository.destroyAll(!1,c),c.removeClass("cke_widget_editable"),c.removeClass("cke_widget_editable_focused"),c.removeAttributes(["contenteditable","data-cke-widget-editable","data-cke-enter-mode"]));delete this.editables[a]},edit:function(){var a={dialog:this.dialog},b=this;if(!1===this.fire("edit",a)||!a.dialog)return!1;this.editor.openDialog(a.dialog,function(a){var c,d;!1!==b.fire("dialog", a)&&(c=a.on("show",function(){a.setupContent(b)}),d=a.on("ok",function(){var c,d=b.on("data",function(a){c=1;a.cancel()},null,null,0);b.editor.fire("saveSnapshot");a.commitContent(b);d.removeListener();c&&(b.fire("data",b.data),b.editor.fire("saveSnapshot"))}),a.once("hide",function(){c.removeListener();d.removeListener()}))},b);return!0},getClasses:function(){return this.repository.parseElementClasses(this.element.getAttribute("class"))},getClipboardHtml:function(){var a=this.editor.createRange(); a.setStartBefore(this.wrapper);a.setEndAfter(this.wrapper);return this.editor.editable().getHtmlFromRange(a).getHtml()},hasClass:function(a){return this.element.hasClass(a)},initEditable:function(a,b){var c=this._findOneNotNested(b.selector);return c&&c.is(CKEDITOR.dtd.$editable)?(c=new f(this.editor,c,{filter:g.call(this.repository,this.name,a,b)}),this.editables[a]=c,c.setAttributes({contenteditable:"true","data-cke-widget-editable":a,"data-cke-enter-mode":c.enterMode}),c.filter&&c.data("cke-filter", -c.filter.id),c.addClass("cke_widget_editable"),c.removeClass("cke_widget_editable_focused"),b.pathName&&c.data("cke-display-name",b.pathName),this.editor.focusManager.add(c),c.on("focus",Q,this),CKEDITOR.env.ie&&c.on("blur",M,this),c._.initialSetData=!0,c.setData(c.getHtml()),!0):!1},_findOneNotNested:function(a){a=this.wrapper.find(a);for(var b,c,d=0;d<a.count();d++)if(b=a.getItem(d),c=b.getAscendant(h.isDomWidgetWrapper),this.wrapper.equals(c))return b;return null},isInited:function(){return!(!this.wrapper|| -!this.inited)},isReady:function(){return this.isInited()&&this.ready},focus:function(){var a=this.editor.getSelection();if(a){var b=this.editor.checkDirty();a.fake(this.wrapper);!b&&this.editor.resetDirty()}this.editor.focus()},refreshMask:function(){X(this)},refreshParts:function(a){Y(this,"undefined"!==typeof a?a:!0)},removeClass:function(a){this.element.removeClass(a);this.wrapper.removeClass(h.WRAPPER_CLASS_PREFIX+a)},removeStyle:function(a){L(this,a,0)},setData:function(a,b){var c=this.data, -d=0;if("string"==typeof a)c[a]!==b&&(c[a]=b,d=1);else{var e=a;for(a in e)c[a]!==e[a]&&(d=1,c[a]=e[a])}d&&this.dataReady&&(ca(this),this.fire("data",c));return this},setFocused:function(a){this.wrapper[a?"addClass":"removeClass"]("cke_widget_focused");this.fire(a?"focus":"blur");return this},setSelected:function(a){this.wrapper[a?"addClass":"removeClass"]("cke_widget_selected");this.fire(a?"select":"deselect");return this},updateDragHandlerPosition:function(){var a=this.editor,b=this.element.$,c=this._.dragHandlerOffset, +c.filter.id),c.addClass("cke_widget_editable"),c.removeClass("cke_widget_editable_focused"),b.pathName&&c.data("cke-display-name",b.pathName),this.editor.focusManager.add(c),c.on("focus",H,this),CKEDITOR.env.ie&&c.on("blur",R,this),c._.initialSetData=!0,c.setData(c.getHtml()),!0):!1},_findOneNotNested:function(a){a=this.wrapper.find(a);for(var b,c,d=0;d<a.count();d++)if(b=a.getItem(d),c=b.getAscendant(h.isDomWidgetWrapper),this.wrapper.equals(c))return b;return null},isInited:function(){return!(!this.wrapper|| +!this.inited)},isReady:function(){return this.isInited()&&this.ready},focus:function(){var a=this.editor.getSelection();if(a){var b=this.editor.checkDirty();a.fake(this.wrapper);!b&&this.editor.resetDirty()}this.editor.focus()},refreshMask:function(){ca(this)},refreshParts:function(a){S(this,"undefined"!==typeof a?a:!0)},removeClass:function(a){this.element.removeClass(a);this.wrapper.removeClass(h.WRAPPER_CLASS_PREFIX+a)},removeStyle:function(a){M(this,a,0)},setData:function(a,b){var c=this.data, +d=0;if("string"==typeof a)c[a]!==b&&(c[a]=b,d=1);else{var e=a;for(a in e)c[a]!==e[a]&&(d=1,c[a]=e[a])}d&&this.dataReady&&(Z(this),this.fire("data",c));return this},setFocused:function(a){this.wrapper[a?"addClass":"removeClass"]("cke_widget_focused");this.fire(a?"focus":"blur");return this},setSelected:function(a){this.wrapper[a?"addClass":"removeClass"]("cke_widget_selected");this.fire(a?"select":"deselect");return this},updateDragHandlerPosition:function(){var a=this.editor,b=this.element.$,c=this._.dragHandlerOffset, b={x:b.offsetLeft,y:b.offsetTop-15};c&&b.x==c.x&&b.y==c.y||(c=a.checkDirty(),a.fire("lockSnapshot"),this.dragHandlerContainer.setStyles({top:b.y+"px",left:b.x+"px"}),this.dragHandlerContainer.removeStyle("display"),a.fire("unlockSnapshot"),!c&&a.resetDirty(),this._.dragHandlerOffset=b)}};CKEDITOR.event.implementOn(h.prototype);h.getNestedEditable=function(a,b){return!b||b.equals(a)?null:h.isDomNestedEditable(b)?b:h.getNestedEditable(a,b.getParent())};h.isDomDragHandler=function(a){return a.type== CKEDITOR.NODE_ELEMENT&&a.hasAttribute("data-cke-widget-drag-handler")};h.isDomDragHandlerContainer=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_widget_drag_handler_container")};h.isDomNestedEditable=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("data-cke-widget-editable")};h.isDomWidgetElement=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("data-widget")};h.isDomWidgetWrapper=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("data-cke-widget-wrapper")}; h.isDomWidget=function(a){return a?this.isDomWidgetWrapper(a)||this.isDomWidgetElement(a):!1};h.isParserWidgetElement=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&!!a.attributes["data-widget"]};h.isParserWidgetWrapper=function(a){return a.type==CKEDITOR.NODE_ELEMENT&&!!a.attributes["data-cke-widget-wrapper"]};h.WRAPPER_CLASS_PREFIX="cke_widget_wrapper_";f.prototype=CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.dom.element.prototype),{setData:function(a){this._.initialSetData|| -this.editor.widgets.destroyAll(!1,this);this._.initialSetData=!1;a=this.editor.dataProcessor.unprotectRealComments(a);a=this.editor.dataProcessor.unprotectSource(a);a=this.editor.dataProcessor.toHtml(a,{context:this.getName(),filter:this.filter,enterMode:this.enterMode});this.setHtml(a);this.editor.widgets.initOnAll(this)},getData:function(){return this.editor.dataProcessor.toDataFormat(this.getHtml(),{context:this.getName(),filter:this.filter,enterMode:this.enterMode})}});var U=/^(?:<(?:div|span)(?: data-cke-temp="1")?(?: id="cke_copybin")?(?: data-cke-temp="1")?>)?(?:<(?:div|span)(?: style="[^"]+")?>)?<span [^>]*data-cke-copybin-start="1"[^>]*>.?<\/span>([\s\S]+)<span [^>]*data-cke-copybin-end="1"[^>]*>.?<\/span>(?:<\/(?:div|span)>)?(?:<\/(?:div|span)>)?$/i, -V={37:1,38:1,39:1,40:1,8:1,46:1};V[CKEDITOR.SHIFT+121]=1;var ga=CKEDITOR.tools.createClass({$:function(a,b){this._.createCopyBin(a,b);this._.createListeners(b)},_:{createCopyBin:function(a){var b=a.document,c=CKEDITOR.env.edge&&16<=CKEDITOR.env.version,d=!a.blockless&&!CKEDITOR.env.ie||c?"div":"span",c=b.createElement(d),b=b.createElement(d);b.setAttributes({id:"cke_copybin","data-cke-temp":"1"});c.setStyles({position:"absolute",width:"1px",height:"1px",overflow:"hidden"});c.setStyle("ltr"==a.config.contentsLangDirection? -"left":"right","-5000px");this.editor=a;this.copyBin=c;this.container=b},createListeners:function(a){a&&(a.beforeDestroy&&(this.beforeDestroy=a.beforeDestroy),a.afterDestroy&&(this.afterDestroy=a.afterDestroy))}},proto:{handle:function(a){var b=this.copyBin,c=this.editor,d=this.container,e=CKEDITOR.env.ie&&9>CKEDITOR.env.version,f=c.document.getDocumentElement().$,g=c.createRange(),h=this,k=CKEDITOR.env.mac&&CKEDITOR.env.webkit,l=k?100:0,m=window.requestAnimationFrame&&!k?requestAnimationFrame:setTimeout, -n,r,q;b.setHtml('\x3cspan data-cke-copybin-start\x3d"1"\x3e​\x3c/span\x3e'+a+'\x3cspan data-cke-copybin-end\x3d"1"\x3e​\x3c/span\x3e');c.fire("lockSnapshot");d.append(b);c.editable().append(d);n=c.on("selectionChange",C,null,null,0);r=c.widgets.on("checkSelection",C,null,null,0);e&&(q=f.scrollTop);g.selectNodeContents(b);g.select();e&&(f.scrollTop=q);return new CKEDITOR.tools.promise(function(a){m(function(){h.beforeDestroy&&h.beforeDestroy();d.remove();n.removeListener();r.removeListener();c.fire("unlockSnapshot"); -h.afterDestroy&&h.afterDestroy();a()},l)})}},statics:{hasCopyBin:function(a){return!!ga.getCopyBin(a)},getCopyBin:function(a){return a.document.getById("cke_copybin")}}});CKEDITOR.plugins.widget=h;h.repository=b;h.nestedEditable=f}(),"use strict",function(){function b(a){function b(){this.deflated||(a.widgets.focused==this.widget&&(this.focused=!0),a.widgets.destroy(this.widget),this.deflated=!0)}function c(){var b=a.editable(),d=a.document;if(this.deflated)this.widget=a.widgets.initOn(this.element, -"image",this.widget.data),this.widget.inline&&!(new CKEDITOR.dom.elementPath(this.widget.wrapper,b)).block&&(b=d.createElement(a.activeEnterMode==CKEDITOR.ENTER_P?"p":"div"),b.replace(this.widget.wrapper),this.widget.wrapper.move(b)),this.focused&&(this.widget.focus(),delete this.focused),delete this.deflated;else{var f=this.widget,b=e,d=f.wrapper,g=f.data.align,f=f.data.hasCaption;if(b){for(var h=3;h--;)d.removeClass(b[h]);"center"==g?f&&d.addClass(b[1]):"none"!=g&&d.addClass(b[w[g]])}else"center"== -g?(f?d.setStyle("text-align","center"):d.removeStyle("text-align"),d.removeStyle("float")):("none"==g?d.removeStyle("float"):d.setStyle("float",g),d.removeStyle("text-align"))}}var e=a.config.image2_alignClasses,k=a.config.image2_captionedClass;return{allowedContent:d(a),requiredContent:"img[src,alt]",features:g(a),styleableElements:"img figure",contentTransformations:[["img[width]: sizeToAttribute"]],editables:{caption:{selector:"figcaption",allowedContent:"br em strong sub sup u s; a[!href,target]"}}, -parts:{image:"img",caption:"figcaption"},dialog:"image2",template:'\x3cimg alt\x3d"" src\x3d"" /\x3e',data:function(){var d=this.features;this.data.hasCaption&&!a.filter.checkFeature(d.caption)&&(this.data.hasCaption=!1);"none"==this.data.align||a.filter.checkFeature(d.align)||(this.data.align="none");this.shiftState({widget:this,element:this.element,oldData:this.oldData,newData:this.data,deflate:b,inflate:c});this.data.link?this.parts.link||(this.parts.link=this.parts.image.getParent()):this.parts.link&& -delete this.parts.link;this.parts.image.setAttributes({src:this.data.src,"data-cke-saved-src":this.data.src,alt:this.data.alt});if(this.oldData&&!this.oldData.hasCaption&&this.data.hasCaption)for(var e in this.data.classes)this.parts.image.removeClass(e);if(a.filter.checkFeature(d.dimension)){d=this.data;d={width:d.width,height:d.height};e=this.parts.image;for(var f in d)d[f]?e.setAttribute(f,d[f]):e.removeAttribute(f)}this.oldData=CKEDITOR.tools.extend({},this.data)},init:function(){var b=CKEDITOR.plugins.image2, -c=this.parts.image,d={hasCaption:!!this.parts.caption,src:c.getAttribute("src"),alt:c.getAttribute("alt")||"",width:c.getAttribute("width")||"",height:c.getAttribute("height")||"",lock:this.ready?b.checkHasNaturalRatio(c):!0},f=c.getAscendant("a");f&&this.wrapper.contains(f)&&(this.parts.link=f);d.align||(c=d.hasCaption?this.element:c,e?(c.hasClass(e[0])?d.align="left":c.hasClass(e[2])&&(d.align="right"),d.align?c.removeClass(e[w[d.align]]):d.align="none"):(d.align=c.getStyle("float")||"none",c.removeStyle("float"))); -a.plugins.link&&this.parts.link&&(d.link=b.getLinkAttributesParser()(a,this.parts.link),(c=d.link.advanced)&&c.advCSSClasses&&(c.advCSSClasses=CKEDITOR.tools.trim(c.advCSSClasses.replace(/cke_\S+/,""))));this.wrapper[(d.hasCaption?"remove":"add")+"Class"]("cke_image_nocaption");this.setData(d);a.filter.checkFeature(this.features.dimension)&&!0!==a.config.image2_disableResizer&&m(this);this.shiftState=b.stateShifter(this.editor);this.on("contextMenu",function(a){a.data.image=CKEDITOR.TRISTATE_OFF; -if(this.parts.link||this.wrapper.getAscendant("a"))a.data.link=a.data.unlink=CKEDITOR.TRISTATE_OFF})},addClass:function(a){n(this).addClass(a)},hasClass:function(a){return n(this).hasClass(a)},removeClass:function(a){n(this).removeClass(a)},getClasses:function(){var a=new RegExp("^("+[].concat(k,e).join("|")+")$");return function(){var b=this.repository.parseElementClasses(n(this).getAttribute("class")),c;for(c in b)a.test(c)&&delete b[c];return b}}(),upcast:h(a),downcast:f(a),getLabel:function(){return this.editor.lang.widget.label.replace(/%1/, -(this.data.alt||"")+" "+this.pathName)}}}function h(b){var c=e(b),d=b.config.image2_captionedClass;return function(b,e){var f={width:1,height:1},g=b.name,h;if(!b.attributes["data-cke-realelement"]&&(c(b)?("div"==g&&(h=b.getFirst("figure"))&&(b.replaceWith(h),b=h),e.align="center",h=b.getFirst("img")||b.getFirst("a").getFirst("img")):"figure"==g&&b.hasClass(d)?h=b.find(function(a){return"img"===a.name&&-1!==CKEDITOR.tools.array.indexOf(["figure","a"],a.parent.name)},!0)[0]:a(b)&&(h="a"==b.name?b.children[0]: -b),h)){for(var k in f)(f=h.attributes[k])&&f.match(p)&&delete h.attributes[k];return b}}}function f(a){var b=a.config.image2_alignClasses;return function(a){var c="a"==a.name?a.getFirst():a,d=c.attributes,e=this.data.align;if(!this.inline){var f=a.getFirst("span");f&&f.replaceWith(f.getFirst({img:1,a:1}))}e&&"none"!=e&&(f=CKEDITOR.tools.parseCssText(d.style||""),"center"==e&&"figure"==a.name?a=a.wrapWith(new CKEDITOR.htmlParser.element("div",b?{"class":b[1]}:{style:"text-align:center"})):e in{left:1, -right:1}&&(b?c.addClass(b[w[e]]):f["float"]=e),b||CKEDITOR.tools.isEmpty(f)||(d.style=CKEDITOR.tools.writeCssText(f)));return a}}function e(b){var c=b.config.image2_captionedClass,d=b.config.image2_alignClasses,e={figure:1,a:1,img:1};return function(f){if(!(f.name in{div:1,p:1}))return!1;var g=f.children;if(1!==g.length)return!1;g=g[0];if(!(g.name in e))return!1;if("p"==f.name){if(!a(g))return!1}else if("figure"==g.name){if(!g.hasClass(c))return!1}else if(b.enterMode==CKEDITOR.ENTER_P||!a(g))return!1; -return(d?f.hasClass(d[1]):"center"==CKEDITOR.tools.parseCssText(f.attributes.style||"",!0)["text-align"])?!0:!1}}function a(a){return"img"==a.name?!0:"a"==a.name?1==a.children.length&&a.getFirst("img"):!1}function m(a){var b=a.editor,c=b.editable(),d=b.document,e=a.resizer=d.createElement("span");e.addClass("cke_image_resizer");e.setAttribute("title",b.lang.image2.resizer);e.append(new CKEDITOR.dom.text("​",d));if(a.inline)a.wrapper.append(e);else{var f=a.parts.link||a.parts.image,g=f.getParent(), -h=d.createElement("span");h.addClass("cke_image_resizer_wrapper");h.append(f);h.append(e);a.element.append(h,!0);g.is("span")&&g.remove()}e.on("mousedown",function(f){function g(a,b,c){var e=CKEDITOR.document,f=[];d.equals(e)||f.push(e.on(a,b));f.push(d.on(a,b));if(c)for(a=f.length;a--;)c.push(f.pop())}function h(){T=p+n*J;X=Math.round(T/B)}function k(){X=y-S;T=Math.round(X*B)}var l=a.parts.image,m=function(){var a=b.config.image2_maxSize,c;if(!a)return null;a=CKEDITOR.tools.copy(a);c=CKEDITOR.plugins.image2.getNatural(l); -a.width=Math.max("natural"===a.width?c.width:a.width,15);a.height=Math.max("natural"===a.height?c.height:a.height,15);return a}(),n="right"==a.data.align?-1:1,q=f.data.$.screenX,v=f.data.$.screenY,p=l.$.clientWidth,y=l.$.clientHeight,B=p/y,w=[],P="cke_image_s"+(~n?"e":"w"),Y,T,X,da,J,S,W;b.fire("saveSnapshot");g("mousemove",function(a){Y=a.data.$;J=Y.screenX-q;S=v-Y.screenY;W=Math.abs(J/S);1==n?0>=J?0>=S?h():W>=B?h():k():0>=S?W>=B?k():h():k():0>=J?0>=S?W>=B?k():h():k():0>=S?h():W>=B?h():k();a=m&& -(T>m.width||X>m.height);15>T||15>X||a||(da={width:T,height:X},l.setAttributes(da))},w);g("mouseup",function(){for(var d;d=w.pop();)d.removeListener();c.removeClass(P);e.removeClass("cke_image_resizing");da&&(a.setData(da),b.fire("saveSnapshot"));da=!1},w);c.addClass(P);e.addClass("cke_image_resizing")});a.on("data",function(){e["right"==a.data.align?"addClass":"removeClass"]("cke_image_resizer_left")})}function k(a){var b=[],d;return function(e){var f=a.getCommand("justify"+e);if(f){b.push(function(){f.refresh(a, -a.elementPath())});if(e in{right:1,left:1,center:1})f.on("exec",function(d){var f=c(a);if(f){f.setData("align",e);for(f=b.length;f--;)b[f]();d.cancel()}});f.on("refresh",function(b){var f=c(a),g={right:1,left:1,center:1};f&&(void 0===d&&(d=a.filter.checkFeature(a.widgets.registered.image.features.align)),d?this.setState(f.data.align==e?CKEDITOR.TRISTATE_ON:e in g?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED):this.setState(CKEDITOR.TRISTATE_DISABLED),b.cancel())})}}}function l(a){if(a.plugins.link){var b= -CKEDITOR.on("dialogDefinition",function(b){b=b.data;if("link"==b.name){b=b.definition;var d=b.onShow,e=b.onOk;b.onShow=function(){var b=c(a),e=this.getContentElement("info","linkDisplayText").getElement().getParent().getParent();b&&(b.inline?!b.wrapper.getAscendant("a"):1)?(this.setupContent(b.data.link||{}),e.hide()):(e.show(),d.apply(this,arguments))};b.onOk=function(){var b=c(a);if(b&&(b.inline?!b.wrapper.getAscendant("a"):1)){var d={};this.commitContent(d);b.setData("link",d)}else e.apply(this, -arguments)}}});a.on("destroy",function(){b.removeListener()});a.getCommand("unlink").on("exec",function(b){var d=c(a);d&&d.parts.link&&(d.setData("link",null),this.refresh(a,a.elementPath()),b.cancel())});a.getCommand("unlink").on("refresh",function(b){var d=c(a);d&&(this.setState(d.data.link||d.wrapper.getAscendant("a")?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),b.cancel())})}}function c(a){return(a=a.widgets.focused)&&"image"==a.name?a:null}function d(a){var b=a.config.image2_alignClasses; -a={div:{match:e(a)},p:{match:e(a)},img:{attributes:"!src,alt,width,height"},figure:{classes:"!"+a.config.image2_captionedClass},figcaption:!0};b?(a.div.classes=b[1],a.p.classes=a.div.classes,a.img.classes=b[0]+","+b[2],a.figure.classes+=","+a.img.classes):(a.div.styles="text-align",a.p.styles="text-align",a.img.styles="float",a.figure.styles="float,display");return a}function g(a){a=a.config.image2_alignClasses;return{dimension:{requiredContent:"img[width,height]"},align:{requiredContent:"img"+(a? -"("+a[0]+")":"{float}")},caption:{requiredContent:"figcaption"}}}function n(a){return a.data.hasCaption?a.element:a.parts.image}var y=new CKEDITOR.template('\x3cfigure class\x3d"{captionedClass}"\x3e\x3cimg alt\x3d"" src\x3d"" /\x3e\x3cfigcaption\x3e{captionPlaceholder}\x3c/figcaption\x3e\x3c/figure\x3e'),w={left:0,center:1,right:2},p=/^\s*(\d+\%)\s*$/i;CKEDITOR.plugins.add("image2",{requires:"widget,dialog",icons:"image",hidpi:!0,onLoad:function(){CKEDITOR.addCss('.cke_image_nocaption{line-height:0}.cke_editable.cke_image_sw, .cke_editable.cke_image_sw *{cursor:sw-resize !important}.cke_editable.cke_image_se, .cke_editable.cke_image_se *{cursor:se-resize !important}.cke_image_resizer{display:none;position:absolute;width:10px;height:10px;bottom:-5px;right:-5px;background:#000;outline:1px solid #fff;line-height:0;cursor:se-resize;}.cke_image_resizer_wrapper{position:relative;display:inline-block;line-height:0;}.cke_image_resizer.cke_image_resizer_left{right:auto;left:-5px;cursor:sw-resize;}.cke_widget_wrapper:hover .cke_image_resizer,.cke_image_resizer.cke_image_resizing{display:block}.cke_editable[contenteditable\x3d"false"] .cke_image_resizer{display:none;}.cke_widget_wrapper\x3ea{display:inline-block}')}, +this.editor.widgets.destroyAll(!1,this);this._.initialSetData=!1;a=this.editor.dataProcessor.unprotectRealComments(a);a=this.editor.dataProcessor.unprotectSource(a);a=this.editor.dataProcessor.toHtml(a,{context:this.getName(),filter:this.filter,enterMode:this.enterMode});this.setHtml(a);this.editor.widgets.initOnAll(this)},getData:function(){return this.editor.dataProcessor.toDataFormat(this.getHtml(),{context:this.getName(),filter:this.filter,enterMode:this.enterMode})}});var V=/^(?:<(?:div|span)(?: data-cke-temp="1")?(?: id="cke_copybin")?(?: data-cke-temp="1")?>)?(?:<(?:div|span)(?: style="[^"]+")?>)?<span [^>]*data-cke-copybin-start="1"[^>]*>.?<\/span>([\s\S]+)<span [^>]*data-cke-copybin-end="1"[^>]*>.?<\/span>(?:<\/(?:div|span)>)?(?:<\/(?:div|span)>)?$/i, +ha={37:1,38:1,39:1,40:1,8:1,46:1};ha[CKEDITOR.SHIFT+121]=1;var P=CKEDITOR.tools.createClass({$:function(a,b){this._.createCopyBin(a,b);this._.createListeners(b)},_:{createCopyBin:function(a){var b=a.document,c=CKEDITOR.env.edge&&16<=CKEDITOR.env.version,d=!a.blockless&&!CKEDITOR.env.ie||c?"div":"span",c=b.createElement(d),b=b.createElement(d);b.setAttributes({id:"cke_copybin","data-cke-temp":"1"});c.setStyles({position:"absolute",width:"1px",height:"1px",overflow:"hidden"});c.setStyle("ltr"==a.config.contentsLangDirection? +"left":"right","-5000px");this.editor=a;this.copyBin=c;this.container=b},createListeners:function(a){a&&(a.beforeDestroy&&(this.beforeDestroy=a.beforeDestroy),a.afterDestroy&&(this.afterDestroy=a.afterDestroy))}},proto:{handle:function(a){var b=this.copyBin,c=this.editor,d=this.container,e=CKEDITOR.env.ie&&9>CKEDITOR.env.version,g=c.document.getDocumentElement().$,f=c.createRange(),h=this,k=CKEDITOR.env.mac&&CKEDITOR.env.webkit,l=k?100:0,m=window.requestAnimationFrame&&!k?requestAnimationFrame:setTimeout, +n,r,t;b.setHtml('\x3cspan data-cke-copybin-start\x3d"1"\x3e​\x3c/span\x3e'+a+'\x3cspan data-cke-copybin-end\x3d"1"\x3e​\x3c/span\x3e');c.fire("lockSnapshot");d.append(b);c.editable().append(d);n=c.on("selectionChange",D,null,null,0);r=c.widgets.on("checkSelection",D,null,null,0);e&&(t=g.scrollTop);f.selectNodeContents(b);f.select();e&&(g.scrollTop=t);return new CKEDITOR.tools.promise(function(a){m(function(){h.beforeDestroy&&h.beforeDestroy();d.remove();n.removeListener();r.removeListener();c.fire("unlockSnapshot"); +h.afterDestroy&&h.afterDestroy();a()},l)})}},statics:{hasCopyBin:function(a){return!!P.getCopyBin(a)},getCopyBin:function(a){return a.document.getById("cke_copybin")}}});CKEDITOR.plugins.widget=h;h.repository=b;h.nestedEditable=f}(),CKEDITOR.config.widget_keystrokeInsertLineBefore=CKEDITOR.SHIFT+CKEDITOR.ALT+13,CKEDITOR.config.widget_keystrokeInsertLineAfter=CKEDITOR.SHIFT+13,"use strict",function(){function b(a){function b(){this.deflated||(a.widgets.focused==this.widget&&(this.focused=!0),a.widgets.destroy(this.widget), +this.deflated=!0)}function c(){var b=a.editable(),d=a.document;if(this.deflated)this.widget=a.widgets.initOn(this.element,"image",this.widget.data),this.widget.inline&&!(new CKEDITOR.dom.elementPath(this.widget.wrapper,b)).block&&(b=d.createElement(a.activeEnterMode==CKEDITOR.ENTER_P?"p":"div"),b.replace(this.widget.wrapper),this.widget.wrapper.move(b)),this.focused&&(this.widget.focus(),delete this.focused),delete this.deflated;else{var g=this.widget,b=e,d=g.wrapper,f=g.data.align,g=g.data.hasCaption; +if(b){for(var h=3;h--;)d.removeClass(b[h]);"center"==f?g&&d.addClass(b[1]):"none"!=f&&d.addClass(b[v[f]])}else"center"==f?(g?d.setStyle("text-align","center"):d.removeStyle("text-align"),d.removeStyle("float")):("none"==f?d.removeStyle("float"):d.setStyle("float",f),d.removeStyle("text-align"))}}var e=a.config.image2_alignClasses,l=a.config.image2_captionedClass;return{allowedContent:d(a),requiredContent:"img[src,alt]",features:g(a),styleableElements:"img figure",contentTransformations:[["img[width]: sizeToAttribute"]], +editables:{caption:{selector:"figcaption",allowedContent:"br em strong sub sup u s; a[!href,target]"}},parts:{image:"img",caption:"figcaption"},dialog:"image2",template:'\x3cimg alt\x3d"" src\x3d"" /\x3e',data:function(){var d=this.features;this.data.hasCaption&&!a.filter.checkFeature(d.caption)&&(this.data.hasCaption=!1);"none"==this.data.align||a.filter.checkFeature(d.align)||(this.data.align="none");this.shiftState({widget:this,element:this.element,oldData:this.oldData,newData:this.data,deflate:b, +inflate:c});this.data.link?this.parts.link||(this.parts.link=this.parts.image.getParent()):this.parts.link&&delete this.parts.link;this.parts.image.setAttributes({src:this.data.src,"data-cke-saved-src":this.data.src,alt:this.data.alt});if(this.oldData&&!this.oldData.hasCaption&&this.data.hasCaption)for(var e in this.data.classes)this.parts.image.removeClass(e);if(a.filter.checkFeature(d.dimension)){d=this.data;d={width:d.width,height:d.height};e=this.parts.image;for(var g in d)d[g]?e.setAttribute(g, +d[g]):e.removeAttribute(g)}this.oldData=CKEDITOR.tools.extend({},this.data)},init:function(){var b=CKEDITOR.plugins.image2,c=this.parts.image,d={hasCaption:!!this.parts.caption,src:c.getAttribute("src"),alt:c.getAttribute("alt")||"",width:c.getAttribute("width")||"",height:c.getAttribute("height")||"",lock:this.ready?b.checkHasNaturalRatio(c):!0},g=c.getAscendant("a");g&&this.wrapper.contains(g)&&(this.parts.link=g);d.align||(c=d.hasCaption?this.element:c,e?(c.hasClass(e[0])?d.align="left":c.hasClass(e[2])&& +(d.align="right"),d.align?c.removeClass(e[v[d.align]]):d.align="none"):(d.align=c.getStyle("float")||"none",c.removeStyle("float")));a.plugins.link&&this.parts.link&&(d.link=b.getLinkAttributesParser()(a,this.parts.link),(c=d.link.advanced)&&c.advCSSClasses&&(c.advCSSClasses=CKEDITOR.tools.trim(c.advCSSClasses.replace(/cke_\S+/,""))));this.wrapper[(d.hasCaption?"remove":"add")+"Class"]("cke_image_nocaption");this.setData(d);a.filter.checkFeature(this.features.dimension)&&!0!==a.config.image2_disableResizer&& +k(this);this.shiftState=b.stateShifter(this.editor);this.on("contextMenu",function(a){a.data.image=CKEDITOR.TRISTATE_OFF;if(this.parts.link||this.wrapper.getAscendant("a"))a.data.link=a.data.unlink=CKEDITOR.TRISTATE_OFF})},addClass:function(a){n(this).addClass(a)},hasClass:function(a){return n(this).hasClass(a)},removeClass:function(a){n(this).removeClass(a)},getClasses:function(){var a=new RegExp("^("+[].concat(l,e).join("|")+")$");return function(){var b=this.repository.parseElementClasses(n(this).getAttribute("class")), +c;for(c in b)a.test(c)&&delete b[c];return b}}(),upcast:h(a),downcast:f(a),getLabel:function(){return this.editor.lang.widget.label.replace(/%1/,(this.data.alt||"")+" "+this.pathName)}}}function h(b){var c=e(b),d=b.config.image2_captionedClass;return function(b,e){var g={width:1,height:1},f=b.name,h;if(!b.attributes["data-cke-realelement"]&&(c(b)?("div"==f&&(h=b.getFirst("figure"))&&(b.replaceWith(h),b=h),e.align="center",h=b.getFirst("img")||b.getFirst("a").getFirst("img")):"figure"==f&&b.hasClass(d)? +h=b.find(function(a){return"img"===a.name&&-1!==CKEDITOR.tools.array.indexOf(["figure","a"],a.parent.name)},!0)[0]:a(b)&&(h="a"==b.name?b.children[0]:b),h)){for(var k in g)(g=h.attributes[k])&&g.match(p)&&delete h.attributes[k];return b}}}function f(a){var b=a.config.image2_alignClasses;return function(a){var c="a"==a.name?a.getFirst():a,d=c.attributes,e=this.data.align;if(!this.inline){var g=a.getFirst("span");g&&g.replaceWith(g.getFirst({img:1,a:1}))}e&&"none"!=e&&(g=CKEDITOR.tools.parseCssText(d.style|| +""),"center"==e&&"figure"==a.name?a=a.wrapWith(new CKEDITOR.htmlParser.element("div",b?{"class":b[1]}:{style:"text-align:center"})):e in{left:1,right:1}&&(b?c.addClass(b[v[e]]):g["float"]=e),b||CKEDITOR.tools.isEmpty(g)||(d.style=CKEDITOR.tools.writeCssText(g)));return a}}function e(b){var c=b.config.image2_captionedClass,d=b.config.image2_alignClasses,e={figure:1,a:1,img:1};return function(g){if(!(g.name in{div:1,p:1}))return!1;var f=g.children;if(1!==f.length)return!1;f=f[0];if(!(f.name in e))return!1; +if("p"==g.name){if(!a(f))return!1}else if("figure"==f.name){if(!f.hasClass(c))return!1}else if(b.enterMode==CKEDITOR.ENTER_P||!a(f))return!1;return(d?g.hasClass(d[1]):"center"==CKEDITOR.tools.parseCssText(g.attributes.style||"",!0)["text-align"])?!0:!1}}function a(a){return"img"==a.name?!0:"a"==a.name?1==a.children.length&&a.getFirst("img"):!1}function k(a){var b=a.editor,c=b.editable(),d=b.document,e=a.resizer=d.createElement("span");e.addClass("cke_image_resizer");e.setAttribute("title",b.lang.image2.resizer); +e.append(new CKEDITOR.dom.text("​",d));if(a.inline)a.wrapper.append(e);else{var g=a.parts.link||a.parts.image,f=g.getParent(),h=d.createElement("span");h.addClass("cke_image_resizer_wrapper");h.append(g);h.append(e);a.element.append(h,!0);f.is("span")&&f.remove()}e.on("mousedown",function(g){function f(a,b,c){var e=CKEDITOR.document,g=[];d.equals(e)||g.push(e.on(a,b));g.push(d.on(a,b));if(c)for(a=g.length;a--;)c.push(g.pop())}function h(){S=B+n*J;X=Math.round(S/y)}function k(){X=p-T;S=Math.round(X* +y)}var l=a.parts.image,m=function(){var a=b.config.image2_maxSize,c;if(!a)return null;a=CKEDITOR.tools.copy(a);c=CKEDITOR.plugins.image2.getNatural(l);a.width=Math.max("natural"===a.width?c.width:a.width,15);a.height=Math.max("natural"===a.height?c.height:a.height,15);return a}(),n="right"==a.data.align?-1:1,u=g.data.$.screenX,w=g.data.$.screenY,B=l.$.clientWidth,p=l.$.clientHeight,y=B/p,v=[],O="cke_image_s"+(~n?"e":"w"),Y,S,X,ca,J,T,W;b.fire("saveSnapshot");f("mousemove",function(a){Y=a.data.$;J= +Y.screenX-u;T=w-Y.screenY;W=Math.abs(J/T);1==n?0>=J?0>=T?h():W>=y?h():k():0>=T?W>=y?k():h():k():0>=J?0>=T?W>=y?k():h():k():0>=T?h():W>=y?h():k();a=m&&(S>m.width||X>m.height);15>S||15>X||a||(ca={width:S,height:X},l.setAttributes(ca))},v);f("mouseup",function(){for(var d;d=v.pop();)d.removeListener();c.removeClass(O);e.removeClass("cke_image_resizing");ca&&(a.setData(ca),b.fire("saveSnapshot"));ca=!1},v);c.addClass(O);e.addClass("cke_image_resizing")});a.on("data",function(){e["right"==a.data.align? +"addClass":"removeClass"]("cke_image_resizer_left")})}function l(a){var b=[],d;return function(e){var g=a.getCommand("justify"+e);if(g){b.push(function(){g.refresh(a,a.elementPath())});if(e in{right:1,left:1,center:1})g.on("exec",function(d){var g=c(a);if(g){g.setData("align",e);for(g=b.length;g--;)b[g]();d.cancel()}});g.on("refresh",function(b){var g=c(a),f={right:1,left:1,center:1};g&&(void 0===d&&(d=a.filter.checkFeature(a.widgets.registered.image.features.align)),d?this.setState(g.data.align== +e?CKEDITOR.TRISTATE_ON:e in f?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED):this.setState(CKEDITOR.TRISTATE_DISABLED),b.cancel())})}}}function m(a){if(a.plugins.link){var b=CKEDITOR.on("dialogDefinition",function(b){b=b.data;if("link"==b.name){b=b.definition;var d=b.onShow,e=b.onOk;b.onShow=function(){var b=c(a),e=this.getContentElement("info","linkDisplayText").getElement().getParent().getParent();b&&(b.inline?!b.wrapper.getAscendant("a"):1)?(this.setupContent(b.data.link||{}),e.hide()):(e.show(), +d.apply(this,arguments))};b.onOk=function(){var b=c(a);if(b&&(b.inline?!b.wrapper.getAscendant("a"):1)){var d={};this.commitContent(d);b.setData("link",d)}else e.apply(this,arguments)}}});a.on("destroy",function(){b.removeListener()});a.getCommand("unlink").on("exec",function(b){var d=c(a);d&&d.parts.link&&(d.setData("link",null),this.refresh(a,a.elementPath()),b.cancel())});a.getCommand("unlink").on("refresh",function(b){var d=c(a);d&&(this.setState(d.data.link||d.wrapper.getAscendant("a")?CKEDITOR.TRISTATE_OFF: +CKEDITOR.TRISTATE_DISABLED),b.cancel())})}}function c(a){return(a=a.widgets.focused)&&"image"==a.name?a:null}function d(a){var b=a.config.image2_alignClasses;a={div:{match:e(a)},p:{match:e(a)},img:{attributes:"!src,alt,width,height"},figure:{classes:"!"+a.config.image2_captionedClass},figcaption:!0};b?(a.div.classes=b[1],a.p.classes=a.div.classes,a.img.classes=b[0]+","+b[2],a.figure.classes+=","+a.img.classes):(a.div.styles="text-align",a.p.styles="text-align",a.img.styles="float",a.figure.styles= +"float,display");return a}function g(a){a=a.config.image2_alignClasses;return{dimension:{requiredContent:"img[width,height]"},align:{requiredContent:"img"+(a?"("+a[0]+")":"{float}")},caption:{requiredContent:"figcaption"}}}function n(a){return a.data.hasCaption?a.element:a.parts.image}var y=new CKEDITOR.template('\x3cfigure class\x3d"{captionedClass}"\x3e\x3cimg alt\x3d"" src\x3d"" /\x3e\x3cfigcaption\x3e{captionPlaceholder}\x3c/figcaption\x3e\x3c/figure\x3e'),v={left:0,center:1,right:2},p=/^\s*(\d+\%)\s*$/i; +CKEDITOR.plugins.add("image2",{requires:"widget,dialog",icons:"image",hidpi:!0,onLoad:function(){CKEDITOR.addCss('.cke_image_nocaption{line-height:0}.cke_editable.cke_image_sw, .cke_editable.cke_image_sw *{cursor:sw-resize !important}.cke_editable.cke_image_se, .cke_editable.cke_image_se *{cursor:se-resize !important}.cke_image_resizer{display:none;position:absolute;width:10px;height:10px;bottom:-5px;right:-5px;background:#000;outline:1px solid #fff;line-height:0;cursor:se-resize;}.cke_image_resizer_wrapper{position:relative;display:inline-block;line-height:0;}.cke_image_resizer.cke_image_resizer_left{right:auto;left:-5px;cursor:sw-resize;}.cke_widget_wrapper:hover .cke_image_resizer,.cke_image_resizer.cke_image_resizing{display:block}.cke_editable[contenteditable\x3d"false"] .cke_image_resizer{display:none;}.cke_widget_wrapper\x3ea{display:inline-block}')}, init:function(a){if(!a.plugins.detectConflict("image2",["easyimage"])){var c=a.config,d=a.lang.image2,e=b(a);c.filebrowserImage2BrowseUrl=c.filebrowserImageBrowseUrl;c.filebrowserImage2UploadUrl=c.filebrowserImageUploadUrl;e.pathName=d.pathName;e.editables.caption.pathName=d.pathNameCaption;a.widgets.add("image",e);a.ui.addButton&&a.ui.addButton("Image",{label:a.lang.common.image,command:"image",toolbar:"insert,10"});a.contextMenu&&(a.addMenuGroup("image",10),a.addMenuItem("image",{label:d.menu,command:"image", -group:"image"}));CKEDITOR.dialog.add("image2",this.path+"dialogs/image2.js")}},afterInit:function(a){var b={left:1,right:1,center:1,block:1},c=k(a),d;for(d in b)c(d);l(a)}});CKEDITOR.plugins.image2={stateShifter:function(a){function b(a,f){var g={};e?g.attributes={"class":e[1]}:g.styles={"text-align":"center"};g=d.createElement(a.activeEnterMode==CKEDITOR.ENTER_P?"p":"div",g);c(g,f);f.move(g);return g}function c(b,d){if(d.getParent()){var e=a.createRange();e.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START); -d.remove();g.insertElementIntoRange(b,e)}else b.replace(d)}var d=a.document,e=a.config.image2_alignClasses,f=a.config.image2_captionedClass,g=a.editable(),h=["hasCaption","align","link"],k={align:function(c,d,f){var g=c.element;c.changed.align?c.newData.hasCaption||("center"==f&&(c.deflate(),c.element=b(a,g)),c.changed.hasCaption||"center"!=d||"center"==f||(c.deflate(),d=g.findOne("a,img"),d.replace(g),c.element=d)):"center"==f&&c.changed.hasCaption&&!c.newData.hasCaption&&(c.deflate(),c.element= -b(a,g));!e&&g.is("figure")&&("center"==f?g.setStyle("display","inline-block"):g.removeStyle("display"))},hasCaption:function(b,e,g){b.changed.hasCaption&&(e=b.element.is({img:1,a:1})?b.element:b.element.findOne("a,img"),b.deflate(),g?(g=CKEDITOR.dom.element.createFromHtml(y.output({captionedClass:f,captionPlaceholder:a.lang.image2.captionPlaceholder}),d),c(g,b.element),e.replace(g.findOne("img")),b.element=g):(e.replace(b.element),b.element=e))},link:function(b,c,e){if(b.changed.link){var f=b.element.is("img")? -b.element:b.element.findOne("img"),g=b.element.is("a")?b.element:b.element.findOne("a"),h=b.element.is("a")&&!e||b.element.is("img")&&e,k;h&&b.deflate();e?(c||(k=d.createElement("a",{attributes:{href:b.newData.link.url}}),k.replace(f),f.move(k)),e=CKEDITOR.plugins.image2.getLinkAttributesGetter()(a,e),CKEDITOR.tools.isEmpty(e.set)||(k||g).setAttributes(e.set),e.removed.length&&(k||g).removeAttributes(e.removed)):(e=g.findOne("img"),e.replace(g),k=e);h&&(b.element=k)}}};return function(a){var b,c; +group:"image"}));CKEDITOR.dialog.add("image2",this.path+"dialogs/image2.js")}},afterInit:function(a){var b={left:1,right:1,center:1,block:1},c=l(a),d;for(d in b)c(d);m(a)}});CKEDITOR.plugins.image2={stateShifter:function(a){function b(a,g){var f={};e?f.attributes={"class":e[1]}:f.styles={"text-align":"center"};f=d.createElement(a.activeEnterMode==CKEDITOR.ENTER_P?"p":"div",f);c(f,g);g.move(f);return f}function c(b,d){if(d.getParent()){var e=a.createRange();e.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START); +d.remove();f.insertElementIntoRange(b,e)}else b.replace(d)}var d=a.document,e=a.config.image2_alignClasses,g=a.config.image2_captionedClass,f=a.editable(),h=["hasCaption","align","link"],k={align:function(c,d,g){var f=c.element;c.changed.align?c.newData.hasCaption||("center"==g&&(c.deflate(),c.element=b(a,f)),c.changed.hasCaption||"center"!=d||"center"==g||(c.deflate(),d=f.findOne("a,img"),d.replace(f),c.element=d)):"center"==g&&c.changed.hasCaption&&!c.newData.hasCaption&&(c.deflate(),c.element= +b(a,f));!e&&f.is("figure")&&("center"==g?f.setStyle("display","inline-block"):f.removeStyle("display"))},hasCaption:function(b,e,f){b.changed.hasCaption&&(e=b.element.is({img:1,a:1})?b.element:b.element.findOne("a,img"),b.deflate(),f?(f=CKEDITOR.dom.element.createFromHtml(y.output({captionedClass:g,captionPlaceholder:a.lang.image2.captionPlaceholder}),d),c(f,b.element),e.replace(f.findOne("img")),b.element=f):(e.replace(b.element),b.element=e))},link:function(b,c,e){if(b.changed.link){var g=b.element.is("img")? +b.element:b.element.findOne("img"),f=b.element.is("a")?b.element:b.element.findOne("a"),h=b.element.is("a")&&!e||b.element.is("img")&&e,k;h&&b.deflate();e?(c||(k=d.createElement("a",{attributes:{href:b.newData.link.url}}),k.replace(g),g.move(k)),e=CKEDITOR.plugins.image2.getLinkAttributesGetter()(a,e),CKEDITOR.tools.isEmpty(e.set)||(k||f).setAttributes(e.set),e.removed.length&&(k||f).removeAttributes(e.removed)):(e=f.findOne("img"),e.replace(f),k=e);h&&(b.element=k)}}};return function(a){var b,c; a.changed={};for(c=0;c<h.length;c++)b=h[c],a.changed[b]=a.oldData?a.oldData[b]!==a.newData[b]:!1;for(c=0;c<h.length;c++)b=h[c],k[b](a,a.oldData?a.oldData[b]:null,a.newData[b]);a.inflate()}},checkHasNaturalRatio:function(a){var b=a.$;a=this.getNatural(a);return Math.round(b.clientWidth/a.width*a.height)==b.clientHeight||Math.round(b.clientHeight/a.height*a.width)==b.clientWidth},getNatural:function(a){if(a.$.naturalWidth)a={width:a.$.naturalWidth,height:a.$.naturalHeight};else{var b=new Image;b.src= -a.getAttribute("src");a={width:b.width,height:b.height}}return a},getLinkAttributesGetter:function(){return CKEDITOR.plugins.link.getLinkAttributes},getLinkAttributesParser:function(){return CKEDITOR.plugins.link.parseLinkAttributes}}}(),CKEDITOR.config.image2_captionedClass="image",function(){function b(b,a){var m,k;a.on("refresh",function(a){var b=[h],d;for(d in a.data.states)b.push(a.data.states[d]);this.setState(CKEDITOR.tools.search(b,f)?f:h)},a,null,100);a.on("exec",function(a){m=b.getSelection(); -k=m.createBookmarks(1);a.data||(a.data={});a.data.done=!1},a,null,0);a.on("exec",function(){b.forceNextSelectionCheck();m.selectBookmarks(k)},a,null,100)}var h=CKEDITOR.TRISTATE_DISABLED,f=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indent",{init:function(e){var a=CKEDITOR.plugins.indent.genericDefinition;b(e,e.addCommand("indent",new a(!0)));b(e,e.addCommand("outdent",new a));e.ui.addButton&&(e.ui.addButton("Indent",{label:e.lang.indent.indent,command:"indent",directional:!0,toolbar:"indent,20"}), +a.getAttribute("src");a={width:b.width,height:b.height}}return a},getLinkAttributesGetter:function(){return CKEDITOR.plugins.link.getLinkAttributes},getLinkAttributesParser:function(){return CKEDITOR.plugins.link.parseLinkAttributes}}}(),CKEDITOR.config.image2_captionedClass="image",function(){function b(b,a){var k,l;a.on("refresh",function(a){var b=[h],d;for(d in a.data.states)b.push(a.data.states[d]);this.setState(CKEDITOR.tools.search(b,f)?f:h)},a,null,100);a.on("exec",function(a){k=b.getSelection(); +l=k.createBookmarks(1);a.data||(a.data={});a.data.done=!1},a,null,0);a.on("exec",function(){b.forceNextSelectionCheck();k.selectBookmarks(l)},a,null,100)}var h=CKEDITOR.TRISTATE_DISABLED,f=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indent",{init:function(e){var a=CKEDITOR.plugins.indent.genericDefinition;b(e,e.addCommand("indent",new a(!0)));b(e,e.addCommand("outdent",new a));e.ui.addButton&&(e.ui.addButton("Indent",{label:e.lang.indent.indent,command:"indent",directional:!0,toolbar:"indent,20"}), e.ui.addButton("Outdent",{label:e.lang.indent.outdent,command:"outdent",directional:!0,toolbar:"indent,10"}));e.on("dirChanged",function(a){var b=e.createRange(),f=a.data.node;b.setStartBefore(f);b.setEndAfter(f);for(var c=new CKEDITOR.dom.walker(b),d;d=c.next();)if(d.type==CKEDITOR.NODE_ELEMENT)if(!d.equals(f)&&d.getDirection())b.setStartAfter(d),c=new CKEDITOR.dom.walker(b);else{var g=e.config.indentClasses;if(g)for(var h="ltr"==a.data.dir?["_rtl",""]:["","_rtl"],y=0;y<g.length;y++)d.hasClass(g[y]+ h[0])&&(d.removeClass(g[y]+h[0]),d.addClass(g[y]+h[1]));g=d.getStyle("margin-right");h=d.getStyle("margin-left");g?d.setStyle("margin-left",g):d.removeStyle("margin-left");h?d.setStyle("margin-right",h):d.removeStyle("margin-right")}})}});CKEDITOR.plugins.indent={genericDefinition:function(b){this.isIndent=!!b;this.startDisabled=!this.isIndent},specificDefinition:function(b,a,f){this.name=a;this.editor=b;this.jobs={};this.enterBr=b.config.enterMode==CKEDITOR.ENTER_BR;this.isIndent=!!f;this.relatedGlobal= f?"indent":"outdent";this.indentKey=f?9:CKEDITOR.SHIFT+9;this.database={}},registerCommands:function(b,a){b.on("pluginsLoaded",function(){for(var b in a)(function(a,b){var c=a.getCommand(b.relatedGlobal),d;for(d in b.jobs)c.on("exec",function(c){c.data.done||(a.fire("lockSnapshot"),b.execJob(a,d)&&(c.data.done=!0),a.fire("unlockSnapshot"),CKEDITOR.dom.element.clearAllMarkers(b.database))},this,null,d),c.on("refresh",function(c){c.data.states||(c.data.states={});c.data.states[b.name+"@"+d]=b.refreshJob(a, d,c.data.path)},this,null,d);a.addFeature(b)})(this,a[b])})}};CKEDITOR.plugins.indent.genericDefinition.prototype={context:"p",exec:function(){}};CKEDITOR.plugins.indent.specificDefinition.prototype={execJob:function(b,a){var f=this.jobs[a];if(f.state!=h)return f.exec.call(this,b)},refreshJob:function(b,a,f){a=this.jobs[a];b.activeFilter.checkFeature(this)?a.state=a.refresh.call(this,b,f):a.state=h;return a.state},getContext:function(b){return b.contains(this.context)}}}(),function(){function b(a){function b(c){for(var h= -m.startContainer,u=m.endContainer;h&&!h.getParent().equals(c);)h=h.getParent();for(;u&&!u.getParent().equals(c);)u=u.getParent();if(!h||!u)return!1;for(var t=[],q=!1;!q;)h.equals(u)&&(q=!0),t.push(h),h=h.getNext();if(1>t.length)return!1;h=c.getParents(!0);for(u=0;u<h.length;u++)if(h[u].getName&&k[h[u].getName()]){c=h[u];break}for(var h=d.isIndent?1:-1,u=t[0],t=t[t.length-1],q=CKEDITOR.plugins.list.listToArray(c,e),v=q[t.getCustomData("listarray_index")].indent,u=u.getCustomData("listarray_index");u<= -t.getCustomData("listarray_index");u++)if(q[u].indent+=h,0<h){for(var p=q[u].parent,D=u-1;0<=D;D--)if(q[D].indent===h){p=q[D].parent;break}q[u].parent=new CKEDITOR.dom.element(p.getName(),p.getDocument())}for(u=t.getCustomData("listarray_index")+1;u<q.length&&q[u].indent>v;u++)q[u].indent+=h;h=CKEDITOR.plugins.list.arrayToList(q,e,null,a.config.enterMode,c.getDirection());if(!d.isIndent){var A;if((A=c.getParent())&&A.is("li"))for(var t=h.listNode.getChildren(),E=[],w,u=t.count()-1;0<=u;u--)(w=t.getItem(u))&& -w.is&&w.is("li")&&E.push(w)}h&&h.listNode.replace(c);if(E&&E.length)for(u=0;u<E.length;u++){for(w=c=E[u];(w=w.getNext())&&w.is&&w.getName()in k;)CKEDITOR.env.needsNbspFiller&&!c.getFirst(f)&&c.append(m.document.createText(" ")),c.append(w);c.insertAfter(A)}h&&a.fire("contentDomInvalidated");return!0}for(var d=this,e=this.database,k=this.context,m,w=a.getSelection(),w=(w&&w.getRanges()).createIterator();m=w.getNextRange();){for(var p=m.getCommonAncestor();p&&(p.type!=CKEDITOR.NODE_ELEMENT||!k[p.getName()]);){if(a.editable().equals(p)){p= -!1;break}p=p.getParent()}p||(p=m.startPath().contains(k))&&m.setEndAt(p,CKEDITOR.POSITION_BEFORE_END);if(!p){var t=m.getEnclosedNode();t&&t.type==CKEDITOR.NODE_ELEMENT&&t.getName()in k&&(m.setStartAt(t,CKEDITOR.POSITION_AFTER_START),m.setEndAt(t,CKEDITOR.POSITION_BEFORE_END),p=t)}p&&m.startContainer.type==CKEDITOR.NODE_ELEMENT&&m.startContainer.getName()in k&&(t=new CKEDITOR.dom.walker(m),t.evaluator=h,m.startContainer=t.next());p&&m.endContainer.type==CKEDITOR.NODE_ELEMENT&&m.endContainer.getName()in -k&&(t=new CKEDITOR.dom.walker(m),t.evaluator=h,m.endContainer=t.previous());if(p)return b(p)}return 0}function h(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.is("li")}function f(b){return e(b)&&a(b)}var e=CKEDITOR.dom.walker.whitespaces(!0),a=CKEDITOR.dom.walker.bookmark(!1,!0),m=CKEDITOR.TRISTATE_DISABLED,k=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentlist",{requires:"indent",init:function(a){function c(a){d.specificDefinition.apply(this,arguments);this.requiredContent=["ul","ol"];a.on("key", -function(b){var c=a.elementPath();if("wysiwyg"==a.mode&&b.data.keyCode==this.indentKey&&c){var d=this.getContext(c);!d||this.isIndent&&CKEDITOR.plugins.indentList.firstItemInPath(this.context,c,d)||(a.execCommand(this.relatedGlobal),b.cancel())}},this);this.jobs[this.isIndent?10:30]={refresh:this.isIndent?function(a,b){var c=this.getContext(b),d=CKEDITOR.plugins.indentList.firstItemInPath(this.context,b,c);return c&&this.isIndent&&!d?k:m}:function(a,b){return!this.getContext(b)||this.isIndent?m:k}, +l.startContainer,t=l.endContainer;h&&!h.getParent().equals(c);)h=h.getParent();for(;t&&!t.getParent().equals(c);)t=t.getParent();if(!h||!t)return!1;for(var q=[],u=!1;!u;)h.equals(t)&&(u=!0),q.push(h),h=h.getNext();if(1>q.length)return!1;h=c.getParents(!0);for(t=0;t<h.length;t++)if(h[t].getName&&k[h[t].getName()]){c=h[t];break}for(var h=d.isIndent?1:-1,t=q[0],q=q[q.length-1],u=CKEDITOR.plugins.list.listToArray(c,e),w=u[q.getCustomData("listarray_index")].indent,t=t.getCustomData("listarray_index");t<= +q.getCustomData("listarray_index");t++)if(u[t].indent+=h,0<h){for(var p=u[t].parent,C=t-1;0<=C;C--)if(u[C].indent===h){p=u[C].parent;break}u[t].parent=new CKEDITOR.dom.element(p.getName(),p.getDocument())}for(t=q.getCustomData("listarray_index")+1;t<u.length&&u[t].indent>w;t++)u[t].indent+=h;h=CKEDITOR.plugins.list.arrayToList(u,e,null,a.config.enterMode,c.getDirection());if(!d.isIndent){var A;if((A=c.getParent())&&A.is("li"))for(var q=h.listNode.getChildren(),E=[],v,t=q.count()-1;0<=t;t--)(v=q.getItem(t))&& +v.is&&v.is("li")&&E.push(v)}h&&h.listNode.replace(c);if(E&&E.length)for(t=0;t<E.length;t++){for(v=c=E[t];(v=v.getNext())&&v.is&&v.getName()in k;)CKEDITOR.env.needsNbspFiller&&!c.getFirst(f)&&c.append(l.document.createText(" ")),c.append(v);c.insertAfter(A)}h&&a.fire("contentDomInvalidated");return!0}for(var d=this,e=this.database,k=this.context,l,v=a.getSelection(),v=(v&&v.getRanges()).createIterator();l=v.getNextRange();){for(var p=l.getCommonAncestor();p&&(p.type!=CKEDITOR.NODE_ELEMENT||!k[p.getName()]);){if(a.editable().equals(p)){p= +!1;break}p=p.getParent()}p||(p=l.startPath().contains(k))&&l.setEndAt(p,CKEDITOR.POSITION_BEFORE_END);if(!p){var q=l.getEnclosedNode();q&&q.type==CKEDITOR.NODE_ELEMENT&&q.getName()in k&&(l.setStartAt(q,CKEDITOR.POSITION_AFTER_START),l.setEndAt(q,CKEDITOR.POSITION_BEFORE_END),p=q)}p&&l.startContainer.type==CKEDITOR.NODE_ELEMENT&&l.startContainer.getName()in k&&(q=new CKEDITOR.dom.walker(l),q.evaluator=h,l.startContainer=q.next());p&&l.endContainer.type==CKEDITOR.NODE_ELEMENT&&l.endContainer.getName()in +k&&(q=new CKEDITOR.dom.walker(l),q.evaluator=h,l.endContainer=q.previous());if(p)return b(p)}return 0}function h(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.is("li")}function f(b){return e(b)&&a(b)}var e=CKEDITOR.dom.walker.whitespaces(!0),a=CKEDITOR.dom.walker.bookmark(!1,!0),k=CKEDITOR.TRISTATE_DISABLED,l=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentlist",{requires:"indent",init:function(a){function c(a){d.specificDefinition.apply(this,arguments);this.requiredContent=["ul","ol"];a.on("key", +function(b){var c=a.elementPath();if("wysiwyg"==a.mode&&b.data.keyCode==this.indentKey&&c){var d=this.getContext(c);!d||this.isIndent&&CKEDITOR.plugins.indentList.firstItemInPath(this.context,c,d)||(a.execCommand(this.relatedGlobal),b.cancel())}},this);this.jobs[this.isIndent?10:30]={refresh:this.isIndent?function(a,b){var c=this.getContext(b),d=CKEDITOR.plugins.indentList.firstItemInPath(this.context,b,c);return c&&this.isIndent&&!d?l:k}:function(a,b){return!this.getContext(b)||this.isIndent?k:l}, exec:CKEDITOR.tools.bind(b,this)}}var d=CKEDITOR.plugins.indent;d.registerCommands(a,{indentlist:new c(a,"indentlist",!0),outdentlist:new c(a,"outdentlist")});CKEDITOR.tools.extend(c.prototype,d.specificDefinition.prototype,{context:{ol:1,ul:1}})}});CKEDITOR.plugins.indentList={};CKEDITOR.plugins.indentList.firstItemInPath=function(a,b,d){var e=b.contains(h);d||(d=b.contains(a));return d&&e&&e.equals(d.getFirst(h))}}(),function(){function b(b,a){a=void 0===a||a;var f;if(a)f=b.getComputedStyle("text-align"); else{for(;!b.hasAttribute||!b.hasAttribute("align")&&!b.getStyle("text-align");){f=b.getParent();if(!f)break;b=f}f=b.getStyle("text-align")||b.getAttribute("align")||""}f&&(f=f.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i,""));!f&&a&&(f="rtl"==b.getComputedStyle("direction")?"right":"left");return f}function h(b,a,f){this.editor=b;this.name=a;this.value=f;this.context="p";a=b.config.justifyClasses;var h=b.config.enterMode==CKEDITOR.ENTER_P?"p":"div";if(a){switch(f){case "left":this.cssClassName= a[0];break;case "center":this.cssClassName=a[1];break;case "right":this.cssClassName=a[2];break;case "justify":this.cssClassName=a[3]}this.cssClassRegex=new RegExp("(?:^|\\s+)(?:"+a.join("|")+")(?\x3d$|\\s)");this.requiredContent=h+"("+this.cssClassName+")"}else this.requiredContent=h+"{text-align}";this.allowedContent={"caption div h1 h2 h3 h4 h5 h6 p pre td th li":{propertiesOnly:!0,styles:this.cssClassName?null:"text-align",classes:this.cssClassName||null}};b.config.enterMode==CKEDITOR.ENTER_BR&& -(this.allowedContent.div=!0)}function f(b){var a=b.editor,f=a.createRange();f.setStartBefore(b.data.node);f.setEndAfter(b.data.node);for(var h=new CKEDITOR.dom.walker(f),l;l=h.next();)if(l.type==CKEDITOR.NODE_ELEMENT)if(!l.equals(b.data.node)&&l.getDirection())f.setStartAfter(l),h=new CKEDITOR.dom.walker(f);else{var c=a.config.justifyClasses;c&&(l.hasClass(c[0])?(l.removeClass(c[0]),l.addClass(c[2])):l.hasClass(c[2])&&(l.removeClass(c[2]),l.addClass(c[0])));c=l.getStyle("text-align");"left"==c?l.setStyle("text-align", -"right"):"right"==c&&l.setStyle("text-align","left")}}h.prototype={exec:function(e){var a=e.getSelection(),f=e.config.enterMode;if(a){for(var h=a.createBookmarks(),l=a.getRanges(),c=this.cssClassName,d,g,n=e.config.useComputedState,n=void 0===n||n,y=l.length-1;0<=y;y--)for(d=l[y].createIterator(),d.enlargeBr=f!=CKEDITOR.ENTER_BR;g=d.getNextParagraph(f==CKEDITOR.ENTER_P?"p":"div");)if(!g.isReadOnly()){var w=g.getName(),p;p=e.activeFilter.check(w+"{text-align}");if((w=e.activeFilter.check(w+"("+c+")"))|| -p){g.removeAttribute("align");g.removeStyle("text-align");var t=c&&(g.$.className=CKEDITOR.tools.ltrim(g.$.className.replace(this.cssClassRegex,""))),r=this.state==CKEDITOR.TRISTATE_OFF&&(!n||b(g,!0)!=this.value);c&&w?r?g.addClass(c):t||g.removeAttribute("class"):r&&p&&g.setStyle("text-align",this.value)}}e.focus();e.forceNextSelectionCheck();a.selectBookmarks(h)}},refresh:function(e,a){var f=a.block||a.blockLimit,h=f.getName(),l=f.equals(e.editable()),h=this.cssClassName?e.activeFilter.check(h+"("+ -this.cssClassName+")"):e.activeFilter.check(h+"{text-align}");l&&!CKEDITOR.dtd.$list[a.lastElement.getName()]?this.setState(CKEDITOR.TRISTATE_OFF):!l&&h?this.setState(b(f,this.editor.config.useComputedState)==this.value?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)}};CKEDITOR.plugins.add("justify",{init:function(b){if(!b.blockless){var a=new h(b,"justifyleft","left"),m=new h(b,"justifycenter","center"),k=new h(b,"justifyright","right"),l=new h(b,"justifyblock", -"justify");b.addCommand("justifyleft",a);b.addCommand("justifycenter",m);b.addCommand("justifyright",k);b.addCommand("justifyblock",l);b.ui.addButton&&(b.ui.addButton("JustifyLeft",{label:b.lang.common.alignLeft,command:"justifyleft",toolbar:"align,10"}),b.ui.addButton("JustifyCenter",{label:b.lang.common.center,command:"justifycenter",toolbar:"align,20"}),b.ui.addButton("JustifyRight",{label:b.lang.common.alignRight,command:"justifyright",toolbar:"align,30"}),b.ui.addButton("JustifyBlock",{label:b.lang.common.justify, +(this.allowedContent.div=!0)}function f(b){var a=b.editor,f=a.createRange();f.setStartBefore(b.data.node);f.setEndAfter(b.data.node);for(var h=new CKEDITOR.dom.walker(f),m;m=h.next();)if(m.type==CKEDITOR.NODE_ELEMENT)if(!m.equals(b.data.node)&&m.getDirection())f.setStartAfter(m),h=new CKEDITOR.dom.walker(f);else{var c=a.config.justifyClasses;c&&(m.hasClass(c[0])?(m.removeClass(c[0]),m.addClass(c[2])):m.hasClass(c[2])&&(m.removeClass(c[2]),m.addClass(c[0])));c=m.getStyle("text-align");"left"==c?m.setStyle("text-align", +"right"):"right"==c&&m.setStyle("text-align","left")}}h.prototype={exec:function(e){var a=e.getSelection(),f=e.config.enterMode;if(a){for(var h=a.createBookmarks(),m=a.getRanges(),c=this.cssClassName,d,g,n=e.config.useComputedState,n=void 0===n||n,y=m.length-1;0<=y;y--)for(d=m[y].createIterator(),d.enlargeBr=f!=CKEDITOR.ENTER_BR;g=d.getNextParagraph(f==CKEDITOR.ENTER_P?"p":"div");)if(!g.isReadOnly()){var v=g.getName(),p;p=e.activeFilter.check(v+"{text-align}");if((v=e.activeFilter.check(v+"("+c+")"))|| +p){g.removeAttribute("align");g.removeStyle("text-align");var q=c&&(g.$.className=CKEDITOR.tools.ltrim(g.$.className.replace(this.cssClassRegex,""))),r=this.state==CKEDITOR.TRISTATE_OFF&&(!n||b(g,!0)!=this.value);c&&v?r?g.addClass(c):q||g.removeAttribute("class"):r&&p&&g.setStyle("text-align",this.value)}}e.focus();e.forceNextSelectionCheck();a.selectBookmarks(h)}},refresh:function(e,a){var f=a.block||a.blockLimit,h=f.getName(),m=f.equals(e.editable()),h=this.cssClassName?e.activeFilter.check(h+"("+ +this.cssClassName+")"):e.activeFilter.check(h+"{text-align}");m&&!CKEDITOR.dtd.$list[a.lastElement.getName()]?this.setState(CKEDITOR.TRISTATE_OFF):!m&&h?this.setState(b(f,this.editor.config.useComputedState)==this.value?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)}};CKEDITOR.plugins.add("justify",{init:function(b){if(!b.blockless){var a=new h(b,"justifyleft","left"),k=new h(b,"justifycenter","center"),l=new h(b,"justifyright","right"),m=new h(b,"justifyblock", +"justify");b.addCommand("justifyleft",a);b.addCommand("justifycenter",k);b.addCommand("justifyright",l);b.addCommand("justifyblock",m);b.ui.addButton&&(b.ui.addButton("JustifyLeft",{label:b.lang.common.alignLeft,command:"justifyleft",toolbar:"align,10"}),b.ui.addButton("JustifyCenter",{label:b.lang.common.center,command:"justifycenter",toolbar:"align,20"}),b.ui.addButton("JustifyRight",{label:b.lang.common.alignRight,command:"justifyright",toolbar:"align,30"}),b.ui.addButton("JustifyBlock",{label:b.lang.common.justify, command:"justifyblock",toolbar:"align,40"}));b.on("dirChanged",f)}}})}(),CKEDITOR.plugins.add("menubutton",{requires:"button,menu",onLoad:function(){var b=function(b){var f=this._,e=f.menu;f.state!==CKEDITOR.TRISTATE_DISABLED&&(f.on&&e?e.hide():(f.previousState=f.state,e||(e=f.menu=new CKEDITOR.menu(b,{panel:{className:"cke_menu_panel",attributes:{"aria-label":b.lang.common.options}}}),e.onHide=CKEDITOR.tools.bind(function(){var a=this.command?b.getCommand(this.command).modes:this.modes;this.setState(!a|| a[b.mode]?f.previousState:CKEDITOR.TRISTATE_DISABLED);f.on=0},this),this.onMenu&&e.addListener(this.onMenu)),this.setState(CKEDITOR.TRISTATE_ON),f.on=1,setTimeout(function(){e.show(CKEDITOR.document.getById(f.id),4)},0)))};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(h){delete h.panel;this.base(h);this.hasArrow="menu";this.click=b},statics:{handler:{create:function(b){return new CKEDITOR.ui.menuButton(b)}}}})},beforeInit:function(b){b.ui.addHandler(CKEDITOR.UI_MENUBUTTON, -CKEDITOR.ui.menuButton.handler)}}),CKEDITOR.UI_MENUBUTTON="menubutton","use strict",function(){CKEDITOR.plugins.add("language",{requires:"menubutton",init:function(b){var h=b.config.language_list||["ar:Arabic:rtl","fr:French","es:Spanish"],f=this,e=b.lang.language,a={},m,k,l,c;b.addCommand("language",{allowedContent:"span[!lang,!dir]",requiredContent:"span[lang,dir]",contextSensitive:!0,exec:function(b,c){var e=a["language_"+c];if(e)b[e.style.checkActive(b.elementPath(),b)?"removeStyle":"applyStyle"](e.style)}, -refresh:function(a){this.setState(f.getCurrentLangElement(a)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)}});for(c=0;c<h.length;c++)m=h[c].split(":"),k=m[0],l="language_"+k,a[l]={label:m[1],langId:k,group:"language",order:c,ltr:"rtl"!=(""+m[2]).toLowerCase(),onClick:function(){b.execCommand("language",this.langId)},role:"menuitemcheckbox"},a[l].style=new CKEDITOR.style({element:"span",attributes:{lang:k,dir:a[l].ltr?"ltr":"rtl"}});a.language_remove={label:e.remove,group:"language_remove",state:CKEDITOR.TRISTATE_DISABLED, +CKEDITOR.ui.menuButton.handler)}}),CKEDITOR.UI_MENUBUTTON="menubutton","use strict",function(){CKEDITOR.plugins.add("language",{requires:"menubutton",init:function(b){var h=b.config.language_list||["ar:Arabic:rtl","fr:French","es:Spanish"],f=this,e=b.lang.language,a={},k,l,m,c;b.addCommand("language",{allowedContent:"span[!lang,!dir]",requiredContent:"span[lang,dir]",contextSensitive:!0,exec:function(b,c){var e=a["language_"+c];if(e)b[e.style.checkActive(b.elementPath(),b)?"removeStyle":"applyStyle"](e.style)}, +refresh:function(a){this.setState(f.getCurrentLangElement(a)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)}});for(c=0;c<h.length;c++)k=h[c].split(":"),l=k[0],m="language_"+l,a[m]={label:k[1],langId:l,group:"language",order:c,ltr:"rtl"!=(""+k[2]).toLowerCase(),onClick:function(){b.execCommand("language",this.langId)},role:"menuitemcheckbox"},a[m].style=new CKEDITOR.style({element:"span",attributes:{lang:l,dir:a[m].ltr?"ltr":"rtl"}});a.language_remove={label:e.remove,group:"language_remove",state:CKEDITOR.TRISTATE_DISABLED, order:a.length,onClick:function(){var a=f.getCurrentLangElement(b);a&&b.execCommand("language",a.getAttribute("lang"))}};b.addMenuGroup("language",1);b.addMenuGroup("language_remove");b.addMenuItems(a);b.ui.add("Language",CKEDITOR.UI_MENUBUTTON,{label:e.button,allowedContent:"span[!lang,!dir]",requiredContent:"span[lang,dir]",toolbar:"bidi,30",command:"language",onMenu:function(){var c={},e=f.getCurrentLangElement(b),h;for(h in a)c[h]=CKEDITOR.TRISTATE_OFF;c.language_remove=e?CKEDITOR.TRISTATE_OFF: CKEDITOR.TRISTATE_DISABLED;e&&(c["language_"+e.getAttribute("lang")]=CKEDITOR.TRISTATE_ON);return c}});b.addRemoveFormatFilter&&b.addRemoveFormatFilter(function(a){return!(a.is("span")&&a.getAttribute("dir")&&a.getAttribute("lang"))})},getCurrentLangElement:function(b){var h=b.elementPath();b=h&&h.elements;var f;if(h)for(var e=0;e<b.length;e++)h=b[e],!f&&"span"==h.getName()&&h.hasAttribute("dir")&&h.hasAttribute("lang")&&(f=h);return f}})}(),function(){function b(a,b,c,d){for(var e=CKEDITOR.plugins.list.listToArray(b.root, -c),f=[],g=0;g<b.contents.length;g++){var h=b.contents[g];(h=h.getAscendant("li",!0))&&!h.getCustomData("list_item_processed")&&(f.push(h),CKEDITOR.dom.element.setMarker(c,h,"list_item_processed",!0))}for(var h=b.root.getDocument(),k,l,g=0;g<f.length;g++){var m=f[g].getCustomData("listarray_index");k=e[m].parent;k.is(this.type)||(l=h.createElement(this.type),k.copyAttributes(l,{start:1,type:1}),l.removeStyle("list-style-type"),e[m].parent=l)}c=CKEDITOR.plugins.list.arrayToList(e,c,null,a.config.enterMode); -for(var n,e=c.listNode.getChildCount(),g=0;g<e&&(n=c.listNode.getChild(g));g++)n.getName()==this.type&&d.push(n);c.listNode.replace(b.root);a.fire("contentDomInvalidated")}function h(a,b,c){var d=b.contents,e=b.root.getDocument(),f=[];if(1==d.length&&d[0].equals(b.root)){var g=e.createElement("div");d[0].moveChildren&&d[0].moveChildren(g);d[0].append(g);d[0]=g}b=b.contents[0].getParent();for(g=0;g<d.length;g++)b=b.getCommonAncestor(d[g].getParent());a=a.config.useComputedState;var h,k;a=void 0=== -a||a;for(g=0;g<d.length;g++)for(var l=d[g],m;m=l.getParent();){if(m.equals(b)){f.push(l);!k&&l.getDirection()&&(k=1);l=l.getDirection(a);null!==h&&(h=h&&h!=l?null:l);break}l=m}if(!(1>f.length)){d=f[f.length-1].getNext();g=e.createElement(this.type);for(c.push(g);f.length;)c=f.shift(),a=e.createElement("li"),l=c,l.is("pre")||p.test(l.getName())||"false"==l.getAttribute("contenteditable")?c.appendTo(a):(c.copyAttributes(a),h&&c.getDirection()&&(a.removeStyle("direction"),a.removeAttribute("dir")),c.moveChildren(a), -c.remove()),a.appendTo(g);h&&k&&g.setAttribute("dir",h);d?g.insertBefore(d):g.appendTo(b)}}function f(a,b,c){function d(c){if(!(!(l=k[c?"getFirst":"getLast"]())||l.is&&l.isBlockBoundary()||!(m=b.root[c?"getPrevious":"getNext"](CKEDITOR.dom.walker.invisible(!0)))||m.is&&m.isBlockBoundary({br:1})))a.document.createElement("br")[c?"insertBefore":"insertAfter"](l)}for(var e=CKEDITOR.plugins.list.listToArray(b.root,c),f=[],g=0;g<b.contents.length;g++){var h=b.contents[g];(h=h.getAscendant("li",!0))&&!h.getCustomData("list_item_processed")&& -(f.push(h),CKEDITOR.dom.element.setMarker(c,h,"list_item_processed",!0))}h=null;for(g=0;g<f.length;g++)h=f[g].getCustomData("listarray_index"),e[h].indent=-1;for(g=h+1;g<e.length;g++)if(e[g].indent>e[g-1].indent+1){f=e[g-1].indent+1-e[g].indent;for(h=e[g].indent;e[g]&&e[g].indent>=h;)e[g].indent+=f,g++;g--}var k=CKEDITOR.plugins.list.arrayToList(e,c,null,a.config.enterMode,b.root.getAttribute("dir")).listNode,l,m;d(!0);d();k.replace(b.root);a.fire("contentDomInvalidated")}function e(a,b){this.name= -a;this.context=this.type=b;this.allowedContent=b+" li";this.requiredContent=b}function a(a,b,c,d){for(var e,f;e=a[d?"getLast":"getFirst"](t);)(f=e.getDirection(1))!==b.getDirection(1)&&e.setAttribute("dir",f),e.remove(),c?e[d?"insertBefore":"insertAfter"](c):b.append(e,d),c=e}function m(b){function c(d){var e=b[d?"getPrevious":"getNext"](y);e&&e.type==CKEDITOR.NODE_ELEMENT&&e.is(b.getName())&&(a(b,e,null,!d),b.remove(),b=e)}c();c(1)}function k(a){return a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in -CKEDITOR.dtd.$block||a.getName()in CKEDITOR.dtd.$listItem)&&CKEDITOR.dtd[a.getName()]["#"]}function l(b,d,e){b.fire("saveSnapshot");e.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var f=e.extractContents();d.trim(!1,!0);var g=d.createBookmark(),h=new CKEDITOR.dom.elementPath(d.startContainer),k=h.block,h=h.lastElement.getAscendant("li",1)||k,l=new CKEDITOR.dom.elementPath(e.startContainer),n=l.contains(CKEDITOR.dtd.$listItem),l=l.contains(CKEDITOR.dtd.$list);k?(k=k.getBogus())&&k.remove():l&&(k=l.getPrevious(y))&& -w(k)&&k.remove();(k=f.getLast())&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("br")&&k.remove();(k=d.startContainer.getChild(d.startOffset))?f.insertBefore(k):d.startContainer.append(f);n&&(f=c(n))&&(h.contains(n)?(a(f,n.getParent(),n),f.remove()):h.append(f));for(;e.checkStartOfBlock()&&e.checkEndOfBlock();){l=e.startPath();f=l.block;if(!f)break;f.is("li")&&(h=f.getParent(),f.equals(h.getLast(y))&&f.equals(h.getFirst(y))&&(f=h));e.moveToPosition(f,CKEDITOR.POSITION_BEFORE_START);f.remove()}e=e.clone();f= -b.editable();e.setEndAt(f,CKEDITOR.POSITION_BEFORE_END);e=new CKEDITOR.dom.walker(e);e.evaluator=function(a){return y(a)&&!w(a)};(e=e.next())&&e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in CKEDITOR.dtd.$list&&m(e);d.moveToBookmark(g);d.select();b.fire("saveSnapshot")}function c(a){return(a=a.getLast(y))&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in d?a:null}var d={ol:1,ul:1},g=CKEDITOR.dom.walker.whitespaces(),n=CKEDITOR.dom.walker.bookmark(),y=function(a){return!(g(a)||n(a))},w=CKEDITOR.dom.walker.bogus(); -CKEDITOR.plugins.list={listToArray:function(a,b,c,e,f){if(!d[a.getName()])return[];e||(e=0);c||(c=[]);for(var g=0,h=a.getChildCount();g<h;g++){var k=a.getChild(g);k.type==CKEDITOR.NODE_ELEMENT&&k.getName()in CKEDITOR.dtd.$list&&CKEDITOR.plugins.list.listToArray(k,b,c,e+1);if("li"==k.$.nodeName.toLowerCase()){var l={parent:a,indent:e,element:k,contents:[]};f?l.grandparent=f:(l.grandparent=a.getParent(),l.grandparent&&"li"==l.grandparent.$.nodeName.toLowerCase()&&(l.grandparent=l.grandparent.getParent())); -b&&CKEDITOR.dom.element.setMarker(b,k,"listarray_index",c.length);c.push(l);for(var m=0,n=k.getChildCount(),t;m<n;m++)t=k.getChild(m),t.type==CKEDITOR.NODE_ELEMENT&&d[t.getName()]?CKEDITOR.plugins.list.listToArray(t,b,c,e+1,l.grandparent):l.contents.push(t)}}return c},arrayToList:function(a,b,c,e,f){c||(c=0);if(!a||a.length<c+1)return null;for(var g,h=a[c].parent.getDocument(),k=new CKEDITOR.dom.documentFragment(h),l=null,m=c,t=Math.max(a[c].indent,0),p=null,w,C,O=e==CKEDITOR.ENTER_P?"p":"div";;){var I= -a[m];g=I.grandparent;w=I.element.getDirection(1);if(I.indent==t){l&&a[m].parent.getName()==l.getName()||(l=a[m].parent.clone(!1,1),f&&l.setAttribute("dir",f),k.append(l));p=l.append(I.element.clone(0,1));w!=l.getDirection(1)&&p.setAttribute("dir",w);for(g=0;g<I.contents.length;g++)p.append(I.contents[g].clone(1,1));m++}else if(I.indent==Math.max(t,0)+1)I=a[m-1].element.getDirection(1),m=CKEDITOR.plugins.list.arrayToList(a,null,m,e,I!=w?w:null),!p.getChildCount()&&CKEDITOR.env.needsNbspFiller&&7>= -h.$.documentMode&&p.append(h.createText(" ")),p.append(m.listNode),m=m.nextIndex;else if(-1==I.indent&&!c&&g){d[g.getName()]?(p=I.element.clone(!1,!0),w!=g.getDirection(1)&&p.setAttribute("dir",w)):p=new CKEDITOR.dom.documentFragment(h);var l=g.getDirection(1)!=w,M=I.element,Q=M.getAttribute("class"),H=M.getAttribute("style"),G=p.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(e!=CKEDITOR.ENTER_BR||l||H||Q),P,Y=I.contents.length,T;for(g=0;g<Y;g++)if(P=I.contents[g],n(P)&&1<Y)G?T=P.clone(1,1):p.append(P.clone(1, -1));else if(P.type==CKEDITOR.NODE_ELEMENT&&P.isBlockBoundary()){l&&!P.getDirection()&&P.setAttribute("dir",w);C=P;var X=M.getAttribute("style");X&&C.setAttribute("style",X.replace(/([^;])$/,"$1;")+(C.getAttribute("style")||""));Q&&P.addClass(Q);C=null;T&&(p.append(T),T=null);p.append(P.clone(1,1))}else G?(C||(C=h.createElement(O),p.append(C),l&&C.setAttribute("dir",w)),H&&C.setAttribute("style",H),Q&&C.setAttribute("class",Q),T&&(C.append(T),T=null),C.append(P.clone(1,1))):p.append(P.clone(1,1)); -T&&((C||p).append(T),T=null);p.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&m!=a.length-1&&(CKEDITOR.env.needsBrFiller&&(w=p.getLast())&&w.type==CKEDITOR.NODE_ELEMENT&&w.is("br")&&w.remove(),(w=p.getLast(y))&&w.type==CKEDITOR.NODE_ELEMENT&&w.is(CKEDITOR.dtd.$block)||p.append(h.createElement("br")));w=p.$.nodeName.toLowerCase();"div"!=w&&"p"!=w||p.appendBogus();k.append(p);l=null;m++}else return null;C=null;if(a.length<=m||Math.max(a[m].indent,0)<t)break}if(b)for(a=k.getFirst();a;){if(a.type==CKEDITOR.NODE_ELEMENT&& -(CKEDITOR.dom.element.clearMarkers(b,a),a.getName()in CKEDITOR.dtd.$listItem&&(c=a,h=f=e=void 0,e=c.getDirection()))){for(f=c.getParent();f&&!(h=f.getDirection());)f=f.getParent();e==h&&c.removeAttribute("dir")}a=a.getNextSourceNode()}return{listNode:k,nextIndex:m}}};var p=/^h[1-6]$/,t=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);e.prototype={exec:function(a){function c(a){return d[a.root.getName()]&&!e(a.root,[CKEDITOR.NODE_COMMENT])}function e(a,b){return CKEDITOR.tools.array.filter(a.getChildren().toArray(), -function(a){return-1===CKEDITOR.tools.array.indexOf(b,a.type)}).length}function g(a){var b=!0;if(0===a.getChildCount())return!1;a.forEach(function(a){if(a.type!==CKEDITOR.NODE_COMMENT)return b=!1},null,!0);return b}this.refresh(a,a.elementPath());var k=a.config,l=a.getSelection(),n=l&&l.getRanges();if(this.state==CKEDITOR.TRISTATE_OFF){var t=a.editable();if(t.getFirst(y)){var p=1==n.length&&n[0];(k=p&&p.getEnclosedNode())&&k.is&&this.type==k.getName()&&this.setState(CKEDITOR.TRISTATE_ON)}else k.enterMode== -CKEDITOR.ENTER_BR?t.appendBogus():n[0].fixBlock(1,k.enterMode==CKEDITOR.ENTER_P?"p":"div"),l.selectRanges(n)}for(var k=l.createBookmarks(!0),t=[],w={},n=n.createIterator(),F=0;(p=n.getNextRange())&&++F;){var K=p.getBoundaryNodes(),L=K.startNode,C=K.endNode;L.type==CKEDITOR.NODE_ELEMENT&&"td"==L.getName()&&p.setStartAt(K.startNode,CKEDITOR.POSITION_AFTER_START);C.type==CKEDITOR.NODE_ELEMENT&&"td"==C.getName()&&p.setEndAt(K.endNode,CKEDITOR.POSITION_BEFORE_END);p=p.createIterator();for(p.forceBrBreak= -this.state==CKEDITOR.TRISTATE_OFF;K=p.getNextParagraph();)if(!K.getCustomData("list_block")&&!g(K)){CKEDITOR.dom.element.setMarker(w,K,"list_block",1);for(var O=a.elementPath(K),L=O.elements,C=0,O=O.blockLimit,I,M=L.length-1;0<=M&&(I=L[M]);M--)if(d[I.getName()]&&O.contains(I)){O.removeCustomData("list_group_object_"+F);(L=I.getCustomData("list_group_object"))?L.contents.push(K):(L={root:I,contents:[K]},t.push(L),CKEDITOR.dom.element.setMarker(w,I,"list_group_object",L));C=1;break}C||(C=O,C.getCustomData("list_group_object_"+ -F)?C.getCustomData("list_group_object_"+F).contents.push(K):(L={root:C,contents:[K]},CKEDITOR.dom.element.setMarker(w,C,"list_group_object_"+F,L),t.push(L)))}}for(I=[];0<t.length;)L=t.shift(),this.state==CKEDITOR.TRISTATE_OFF?c(L)||(d[L.root.getName()]?b.call(this,a,L,w,I):h.call(this,a,L,I)):this.state==CKEDITOR.TRISTATE_ON&&d[L.root.getName()]&&!c(L)&&f.call(this,a,L,w);for(M=0;M<I.length;M++)m(I[M]);CKEDITOR.dom.element.clearAllMarkers(w);l.selectBookmarks(k);a.focus()},refresh:function(a,b){var c= +c),g=[],f=0;f<b.contents.length;f++){var h=b.contents[f];(h=h.getAscendant("li",!0))&&!h.getCustomData("list_item_processed")&&(g.push(h),CKEDITOR.dom.element.setMarker(c,h,"list_item_processed",!0))}for(var h=b.root.getDocument(),k,l,f=0;f<g.length;f++){var m=g[f].getCustomData("listarray_index");k=e[m].parent;k.is(this.type)||(l=h.createElement(this.type),k.copyAttributes(l,{start:1,type:1}),l.removeStyle("list-style-type"),e[m].parent=l)}c=CKEDITOR.plugins.list.arrayToList(e,c,null,a.config.enterMode); +for(var n,e=c.listNode.getChildCount(),f=0;f<e&&(n=c.listNode.getChild(f));f++)n.getName()==this.type&&d.push(n);c.listNode.replace(b.root);a.fire("contentDomInvalidated")}function h(a,b,c){var d=b.contents,e=b.root.getDocument(),g=[];if(1==d.length&&d[0].equals(b.root)){var f=e.createElement("div");d[0].moveChildren&&d[0].moveChildren(f);d[0].append(f);d[0]=f}b=b.contents[0].getParent();for(f=0;f<d.length;f++)b=b.getCommonAncestor(d[f].getParent());a=a.config.useComputedState;var h,k;a=void 0=== +a||a;for(f=0;f<d.length;f++)for(var l=d[f],m;m=l.getParent();){if(m.equals(b)){g.push(l);!k&&l.getDirection()&&(k=1);l=l.getDirection(a);null!==h&&(h=h&&h!=l?null:l);break}l=m}if(!(1>g.length)){d=g[g.length-1].getNext();f=e.createElement(this.type);for(c.push(f);g.length;)c=g.shift(),a=e.createElement("li"),l=c,l.is("pre")||p.test(l.getName())||"false"==l.getAttribute("contenteditable")?c.appendTo(a):(c.copyAttributes(a),h&&c.getDirection()&&(a.removeStyle("direction"),a.removeAttribute("dir")),c.moveChildren(a), +c.remove()),a.appendTo(f);h&&k&&f.setAttribute("dir",h);d?f.insertBefore(d):f.appendTo(b)}}function f(a,b,c){function d(c){if(!(!(l=k[c?"getFirst":"getLast"]())||l.is&&l.isBlockBoundary()||!(m=b.root[c?"getPrevious":"getNext"](CKEDITOR.dom.walker.invisible(!0)))||m.is&&m.isBlockBoundary({br:1})))a.document.createElement("br")[c?"insertBefore":"insertAfter"](l)}for(var e=CKEDITOR.plugins.list.listToArray(b.root,c),g=[],f=0;f<b.contents.length;f++){var h=b.contents[f];(h=h.getAscendant("li",!0))&&!h.getCustomData("list_item_processed")&& +(g.push(h),CKEDITOR.dom.element.setMarker(c,h,"list_item_processed",!0))}h=null;for(f=0;f<g.length;f++)h=g[f].getCustomData("listarray_index"),e[h].indent=-1;for(f=h+1;f<e.length;f++)if(e[f].indent>e[f-1].indent+1){g=e[f-1].indent+1-e[f].indent;for(h=e[f].indent;e[f]&&e[f].indent>=h;)e[f].indent+=g,f++;f--}var k=CKEDITOR.plugins.list.arrayToList(e,c,null,a.config.enterMode,b.root.getAttribute("dir")).listNode,l,m;d(!0);d();k.replace(b.root);a.fire("contentDomInvalidated")}function e(a,b){this.name= +a;this.context=this.type=b;this.allowedContent=b+" li";this.requiredContent=b}function a(a,b,c,d){for(var e,g;e=a[d?"getLast":"getFirst"](q);)(g=e.getDirection(1))!==b.getDirection(1)&&e.setAttribute("dir",g),e.remove(),c?e[d?"insertBefore":"insertAfter"](c):b.append(e,d),c=e}function k(b){function c(d){var e=b[d?"getPrevious":"getNext"](y);e&&e.type==CKEDITOR.NODE_ELEMENT&&e.is(b.getName())&&(a(b,e,null,!d),b.remove(),b=e)}c();c(1)}function l(a){return a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in +CKEDITOR.dtd.$block||a.getName()in CKEDITOR.dtd.$listItem)&&CKEDITOR.dtd[a.getName()]["#"]}function m(b,d,e){b.fire("saveSnapshot");e.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var g=e.extractContents();d.trim(!1,!0);var f=d.createBookmark(),h=new CKEDITOR.dom.elementPath(d.startContainer),l=h.block,h=h.lastElement.getAscendant("li",1)||l,m=new CKEDITOR.dom.elementPath(e.startContainer),n=m.contains(CKEDITOR.dtd.$listItem),m=m.contains(CKEDITOR.dtd.$list);l?(l=l.getBogus())&&l.remove():m&&(l=m.getPrevious(y))&& +v(l)&&l.remove();(l=g.getLast())&&l.type==CKEDITOR.NODE_ELEMENT&&l.is("br")&&l.remove();(l=d.startContainer.getChild(d.startOffset))?g.insertBefore(l):d.startContainer.append(g);n&&(g=c(n))&&(h.contains(n)?(a(g,n.getParent(),n),g.remove()):h.append(g));for(;e.checkStartOfBlock()&&e.checkEndOfBlock();){m=e.startPath();g=m.block;if(!g)break;g.is("li")&&(h=g.getParent(),g.equals(h.getLast(y))&&g.equals(h.getFirst(y))&&(g=h));e.moveToPosition(g,CKEDITOR.POSITION_BEFORE_START);g.remove()}e=e.clone();g= +b.editable();e.setEndAt(g,CKEDITOR.POSITION_BEFORE_END);e=new CKEDITOR.dom.walker(e);e.evaluator=function(a){return y(a)&&!v(a)};(e=e.next())&&e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in CKEDITOR.dtd.$list&&k(e);d.moveToBookmark(f);d.select();b.fire("saveSnapshot")}function c(a){return(a=a.getLast(y))&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in d?a:null}var d={ol:1,ul:1},g=CKEDITOR.dom.walker.whitespaces(),n=CKEDITOR.dom.walker.bookmark(),y=function(a){return!(g(a)||n(a))},v=CKEDITOR.dom.walker.bogus(); +CKEDITOR.plugins.list={listToArray:function(a,b,c,e,g){if(!d[a.getName()])return[];e||(e=0);c||(c=[]);for(var f=0,h=a.getChildCount();f<h;f++){var k=a.getChild(f);k.type==CKEDITOR.NODE_ELEMENT&&k.getName()in CKEDITOR.dtd.$list&&CKEDITOR.plugins.list.listToArray(k,b,c,e+1);if("li"==k.$.nodeName.toLowerCase()){var l={parent:a,indent:e,element:k,contents:[]};g?l.grandparent=g:(l.grandparent=a.getParent(),l.grandparent&&"li"==l.grandparent.$.nodeName.toLowerCase()&&(l.grandparent=l.grandparent.getParent())); +b&&CKEDITOR.dom.element.setMarker(b,k,"listarray_index",c.length);c.push(l);for(var m=0,n=k.getChildCount(),q;m<n;m++)q=k.getChild(m),q.type==CKEDITOR.NODE_ELEMENT&&d[q.getName()]?CKEDITOR.plugins.list.listToArray(q,b,c,e+1,l.grandparent):l.contents.push(q)}}return c},arrayToList:function(a,b,c,e,g){c||(c=0);if(!a||a.length<c+1)return null;for(var f,h=a[c].parent.getDocument(),k=new CKEDITOR.dom.documentFragment(h),l=null,m=c,q=Math.max(a[c].indent,0),p=null,v,D,N=e==CKEDITOR.ENTER_P?"p":"div";;){var I= +a[m];f=I.grandparent;v=I.element.getDirection(1);if(I.indent==q){l&&a[m].parent.getName()==l.getName()||(l=a[m].parent.clone(!1,1),g&&l.setAttribute("dir",g),k.append(l));p=l.append(I.element.clone(0,1));v!=l.getDirection(1)&&p.setAttribute("dir",v);for(f=0;f<I.contents.length;f++)p.append(I.contents[f].clone(1,1));m++}else if(I.indent==Math.max(q,0)+1)I=a[m-1].element.getDirection(1),m=CKEDITOR.plugins.list.arrayToList(a,null,m,e,I!=v?v:null),!p.getChildCount()&&CKEDITOR.env.needsNbspFiller&&7>= +h.$.documentMode&&p.append(h.createText(" ")),p.append(m.listNode),m=m.nextIndex;else if(-1==I.indent&&!c&&f){d[f.getName()]?(p=I.element.clone(!1,!0),v!=f.getDirection(1)&&p.setAttribute("dir",v)):p=new CKEDITOR.dom.documentFragment(h);var l=f.getDirection(1)!=v,L=I.element,R=L.getAttribute("class"),H=L.getAttribute("style"),G=p.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(e!=CKEDITOR.ENTER_BR||l||H||R),O,Y=I.contents.length,S;for(f=0;f<Y;f++)if(O=I.contents[f],n(O)&&1<Y)G?S=O.clone(1,1):p.append(O.clone(1, +1));else if(O.type==CKEDITOR.NODE_ELEMENT&&O.isBlockBoundary()){l&&!O.getDirection()&&O.setAttribute("dir",v);D=O;var X=L.getAttribute("style");X&&D.setAttribute("style",X.replace(/([^;])$/,"$1;")+(D.getAttribute("style")||""));R&&O.addClass(R);D=null;S&&(p.append(S),S=null);p.append(O.clone(1,1))}else G?(D||(D=h.createElement(N),p.append(D),l&&D.setAttribute("dir",v)),H&&D.setAttribute("style",H),R&&D.setAttribute("class",R),S&&(D.append(S),S=null),D.append(O.clone(1,1))):p.append(O.clone(1,1)); +S&&((D||p).append(S),S=null);p.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&m!=a.length-1&&(CKEDITOR.env.needsBrFiller&&(v=p.getLast())&&v.type==CKEDITOR.NODE_ELEMENT&&v.is("br")&&v.remove(),(v=p.getLast(y))&&v.type==CKEDITOR.NODE_ELEMENT&&v.is(CKEDITOR.dtd.$block)||p.append(h.createElement("br")));v=p.$.nodeName.toLowerCase();"div"!=v&&"p"!=v||p.appendBogus();k.append(p);l=null;m++}else return null;D=null;if(a.length<=m||Math.max(a[m].indent,0)<q)break}if(b)for(a=k.getFirst();a;){if(a.type==CKEDITOR.NODE_ELEMENT&& +(CKEDITOR.dom.element.clearMarkers(b,a),a.getName()in CKEDITOR.dtd.$listItem&&(c=a,h=g=e=void 0,e=c.getDirection()))){for(g=c.getParent();g&&!(h=g.getDirection());)g=g.getParent();e==h&&c.removeAttribute("dir")}a=a.getNextSourceNode()}return{listNode:k,nextIndex:m}}};var p=/^h[1-6]$/,q=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);e.prototype={exec:function(a){function c(a){return d[a.root.getName()]&&!e(a.root,[CKEDITOR.NODE_COMMENT])}function e(a,b){return CKEDITOR.tools.array.filter(a.getChildren().toArray(), +function(a){return-1===CKEDITOR.tools.array.indexOf(b,a.type)}).length}function g(a){var b=!0;if(0===a.getChildCount())return!1;a.forEach(function(a){if(a.type!==CKEDITOR.NODE_COMMENT)return b=!1},null,!0);return b}this.refresh(a,a.elementPath());var l=a.config,m=a.getSelection(),n=m&&m.getRanges();if(this.state==CKEDITOR.TRISTATE_OFF){var q=a.editable();if(q.getFirst(y)){var p=1==n.length&&n[0];(l=p&&p.getEnclosedNode())&&l.is&&this.type==l.getName()&&this.setState(CKEDITOR.TRISTATE_ON)}else l.enterMode== +CKEDITOR.ENTER_BR?q.appendBogus():n[0].fixBlock(1,l.enterMode==CKEDITOR.ENTER_P?"p":"div"),m.selectRanges(n)}for(var l=m.createBookmarks(!0),q=[],v={},n=n.createIterator(),F=0;(p=n.getNextRange())&&++F;){var K=p.getBoundaryNodes(),M=K.startNode,D=K.endNode;M.type==CKEDITOR.NODE_ELEMENT&&"td"==M.getName()&&p.setStartAt(K.startNode,CKEDITOR.POSITION_AFTER_START);D.type==CKEDITOR.NODE_ELEMENT&&"td"==D.getName()&&p.setEndAt(K.endNode,CKEDITOR.POSITION_BEFORE_END);p=p.createIterator();for(p.forceBrBreak= +this.state==CKEDITOR.TRISTATE_OFF;K=p.getNextParagraph();)if(!K.getCustomData("list_block")&&!g(K)){CKEDITOR.dom.element.setMarker(v,K,"list_block",1);for(var N=a.elementPath(K),M=N.elements,D=0,N=N.blockLimit,I,L=M.length-1;0<=L&&(I=M[L]);L--)if(d[I.getName()]&&N.contains(I)){N.removeCustomData("list_group_object_"+F);(M=I.getCustomData("list_group_object"))?M.contents.push(K):(M={root:I,contents:[K]},q.push(M),CKEDITOR.dom.element.setMarker(v,I,"list_group_object",M));D=1;break}D||(D=N,D.getCustomData("list_group_object_"+ +F)?D.getCustomData("list_group_object_"+F).contents.push(K):(M={root:D,contents:[K]},CKEDITOR.dom.element.setMarker(v,D,"list_group_object_"+F,M),q.push(M)))}}for(I=[];0<q.length;)M=q.shift(),this.state==CKEDITOR.TRISTATE_OFF?c(M)||(d[M.root.getName()]?b.call(this,a,M,v,I):h.call(this,a,M,I)):this.state==CKEDITOR.TRISTATE_ON&&d[M.root.getName()]&&!c(M)&&f.call(this,a,M,v);for(L=0;L<I.length;L++)k(I[L]);CKEDITOR.dom.element.clearAllMarkers(v);m.selectBookmarks(l);a.focus()},refresh:function(a,b){var c= b.contains(d,1),e=b.blockLimit||b.root;c&&e.contains(c)?this.setState(c.is(this.type)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.plugins.add("list",{requires:"indentlist",init:function(a){a.blockless||(a.addCommand("numberedlist",new e("numberedlist","ol")),a.addCommand("bulletedlist",new e("bulletedlist","ul")),a.ui.addButton&&(a.ui.addButton("NumberedList",{label:a.lang.list.numberedlist,command:"numberedlist",directional:!0,toolbar:"list,10"}),a.ui.addButton("BulletedList", -{label:a.lang.list.bulletedlist,command:"bulletedlist",directional:!0,toolbar:"list,20"})),a.on("key",function(b){var e=b.data.domEvent.getKey(),f;if("wysiwyg"==a.mode&&e in{8:1,46:1}){var g=a.getSelection().getRanges()[0],h=g&&g.startPath();if(g&&g.collapsed){var m=8==e,n=a.editable(),t=new CKEDITOR.dom.walker(g.clone());t.evaluator=function(a){return y(a)&&!w(a)};t.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&&a.is("table"))};e=g.clone();if(m){var p;(p=h.contains(d))&&g.checkBoundaryOfElement(p, -CKEDITOR.START)&&(p=p.getParent())&&p.is("li")&&(p=c(p))?(f=p,p=p.getPrevious(y),e.moveToPosition(p&&w(p)?p:f,CKEDITOR.POSITION_BEFORE_START)):(t.range.setStartAt(n,CKEDITOR.POSITION_AFTER_START),t.range.setEnd(g.startContainer,g.startOffset),(p=t.previous())&&p.type==CKEDITOR.NODE_ELEMENT&&(p.getName()in d||p.is("li"))&&(p.is("li")||(t.range.selectNodeContents(p),t.reset(),t.evaluator=k,p=t.previous()),f=p,e.moveToElementEditEnd(f),e.moveToPosition(e.endPath().block,CKEDITOR.POSITION_BEFORE_END))); -if(f)l(a,e,g),b.cancel();else{var F=h.contains(d);F&&g.checkBoundaryOfElement(F,CKEDITOR.START)&&(f=F.getFirst(y),g.checkBoundaryOfElement(f,CKEDITOR.START)&&(p=F.getPrevious(y),c(f)?p&&(g.moveToElementEditEnd(p),g.select()):a.execCommand("outdent"),b.cancel()))}}else if(f=h.contains("li")){if(t.range.setEndAt(n,CKEDITOR.POSITION_BEFORE_END),m=(n=f.getLast(y))&&k(n)?n:f,h=0,(p=t.next())&&p.type==CKEDITOR.NODE_ELEMENT&&p.getName()in d&&p.equals(n)?(h=1,p=t.next()):g.checkBoundaryOfElement(m,CKEDITOR.END)&& -(h=2),h&&p){g=g.clone();g.moveToElementEditStart(p);if(1==h&&(e.optimize(),!e.startContainer.equals(f))){for(f=e.startContainer;f.is(CKEDITOR.dtd.$inline);)F=f,f=f.getParent();F&&e.moveToPosition(F,CKEDITOR.POSITION_AFTER_END)}2==h&&(e.moveToPosition(e.endPath().block,CKEDITOR.POSITION_BEFORE_END),g.endPath().block&&g.moveToPosition(g.endPath().block,CKEDITOR.POSITION_AFTER_START));l(a,e,g);b.cancel()}}else t.range.setEndAt(n,CKEDITOR.POSITION_BEFORE_END),(p=t.next())&&p.type==CKEDITOR.NODE_ELEMENT&& -p.is(d)&&(p=p.getFirst(y),h.block&&g.checkStartOfBlock()&&g.checkEndOfBlock()?(h.block.remove(),g.moveToElementEditStart(p),g.select()):c(p)?(g.moveToElementEditStart(p),g.select()):(g=g.clone(),g.moveToElementEditStart(p),l(a,e,g)),b.cancel());setTimeout(function(){a.selectionChange(1)})}}}))}})}(),"use strict",function(){function b(a,b,c){return n(b)&&n(c)&&c.equals(b.getNext(function(a){return!(U(a)||V(a)||y(a))}))}function h(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slice(2))}function f(a){var b= -a.element;if(b&&n(b)&&(b=b.getAscendant(a.triggers,!0))&&a.editable.contains(b)){var c=k(b);if("true"==c.getAttribute("contenteditable"))return b;if(c.is(a.triggers))return c}return null}function e(a,b,c){q(a,b);q(a,c);a=b.size.bottom;c=c.size.top;return a&&c?0|(a+c)/2:a||c}function a(a,b,c){return b=b[c?"getPrevious":"getNext"](function(b){return b&&b.type==CKEDITOR.NODE_TEXT&&!U(b)||n(b)&&!y(b)&&!g(a,b)})}function m(a,b,c){return a>b&&a<c}function k(a,b){if(a.data("cke-editable"))return null;for(b|| -(a=a.getParent());a&&!a.data("cke-editable");){if(a.hasAttribute("contenteditable"))return a;a=a.getParent()}return null}function l(a){var b=a.doc,d=F('\x3cspan contenteditable\x3d"false" data-cke-magic-line\x3d"1" style\x3d"'+aa+"position:absolute;border-top:1px dashed "+a.boxColor+'"\x3e\x3c/span\x3e',b),e=CKEDITOR.getUrl(this.path+"images/"+(K.hidpi?"hidpi/":"")+"icon"+(a.rtl?"-rtl":"")+".png");A(d,{attach:function(){this.wrap.getParent()||this.wrap.appendTo(a.editable,!0);return this},lineChildren:[A(F('\x3cspan title\x3d"'+ -a.editor.lang.magicline.title+'" contenteditable\x3d"false"\x3e\x26#8629;\x3c/span\x3e',b),{base:aa+"height:17px;width:17px;"+(a.rtl?"left":"right")+":17px;background:url("+e+") center no-repeat "+a.boxColor+";cursor:pointer;"+(K.hc?"font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;":"")+(K.hidpi?"background-size: 9px 10px;":""),looks:["top:-8px; border-radius: 2px;","top:-17px; border-radius: 2px 2px 0px 0px;","top:-1px; border-radius: 0px 0px 2px 2px;"]}),A(F(ca,b),{base:ba+ -"left:0px;border-left-color:"+a.boxColor+";",looks:["border-width:8px 0 8px 8px;top:-8px","border-width:8px 0 0 8px;top:-8px","border-width:0 0 8px 8px;top:0px"]}),A(F(ca,b),{base:ba+"right:0px;border-right-color:"+a.boxColor+";",looks:["border-width:8px 8px 8px 0;top:-8px","border-width:8px 8px 0 0;top:-8px","border-width:0 8px 8px 0;top:0px"]})],detach:function(){this.wrap.getParent()&&this.wrap.remove();return this},mouseNear:function(){q(a,this);var b=a.holdDistance,c=this.size;return c&&m(a.mouse.y, -c.top-b,c.bottom+b)&&m(a.mouse.x,c.left-b,c.right+b)?!0:!1},place:function(){var b=a.view,c=a.editable,d=a.trigger,e=d.upper,f=d.lower,g=e||f,h=g.getParent(),k={};this.trigger=d;e&&q(a,e,!0);f&&q(a,f,!0);q(a,h,!0);a.inInlineMode&&v(a,!0);h.equals(c)?(k.left=b.scroll.x,k.right=-b.scroll.x,k.width=""):(k.left=g.size.left-g.size.margin.left+b.scroll.x-(a.inInlineMode?b.editable.left+b.editable.border.left:0),k.width=g.size.outerWidth+g.size.margin.left+g.size.margin.right+b.scroll.x,k.right="");e&&f? -k.top=e.size.margin.bottom===f.size.margin.top?0|e.size.bottom+e.size.margin.bottom/2:e.size.margin.bottom<f.size.margin.top?e.size.bottom+e.size.margin.bottom:e.size.bottom+e.size.margin.bottom-f.size.margin.top:e?f||(k.top=e.size.bottom+e.size.margin.bottom):k.top=f.size.top-f.size.margin.top;d.is(G)||m(k.top,b.scroll.y-15,b.scroll.y+5)?(k.top=a.inInlineMode?0:b.scroll.y,this.look(G)):d.is(P)||m(k.top,b.pane.bottom-5,b.pane.bottom+15)?(k.top=a.inInlineMode?b.editable.height+b.editable.padding.top+ -b.editable.padding.bottom:b.pane.bottom-1,this.look(P)):(a.inInlineMode&&(k.top-=b.editable.top+b.editable.border.top),this.look(Y));a.inInlineMode&&(k.top--,k.top+=b.editable.scroll.top,k.left+=b.editable.scroll.left);for(var l in k)k[l]=CKEDITOR.tools.cssLength(k[l]);this.setStyles(k)},look:function(a){if(this.oldLook!=a){for(var b=this.lineChildren.length,c;b--;)(c=this.lineChildren[b]).setAttribute("style",c.base+c.looks[0|a/2]);this.oldLook=a}},wrap:new E("span",a.doc)});for(b=d.lineChildren.length;b--;)d.lineChildren[b].appendTo(d); -d.look(Y);d.appendTo(d.wrap);d.unselectable();d.lineChildren[0].on("mouseup",function(b){d.detach();c(a,function(b){var c=a.line.trigger;b[c.is(I)?"insertBefore":"insertAfter"](c.is(I)?c.lower:c.upper)},!0);a.editor.focus();K.ie||a.enterMode==CKEDITOR.ENTER_BR||a.hotNode.scrollIntoView();b.data.preventDefault(!0)});d.on("mousedown",function(a){a.data.preventDefault(!0)});a.line=d}function c(a,b,c){var d=new CKEDITOR.dom.range(a.doc),e=a.editor,f;K.ie&&a.enterMode==CKEDITOR.ENTER_BR?f=a.doc.createText(T): -(f=(f=k(a.element,!0))&&f.data("cke-enter-mode")||a.enterMode,f=new E(O[f],a.doc),f.is("br")||a.doc.createText(T).appendTo(f));c&&e.fire("saveSnapshot");b(f);d.moveToPosition(f,CKEDITOR.POSITION_AFTER_START);e.getSelection().selectRanges([d]);a.hotNode=f;c&&e.fire("saveSnapshot")}function d(b,d){return{canUndo:!0,modes:{wysiwyg:1},exec:function(){function e(a){var f=K.ie&&9>K.version?" ":T,g=b.hotNode&&b.hotNode.getText()==f&&b.element.equals(b.hotNode)&&b.lastCmdDirection===!!d;c(b,function(c){g&& -b.hotNode&&b.hotNode.remove();c[d?"insertAfter":"insertBefore"](a);c.setAttributes({"data-cke-magicline-hot":1,"data-cke-magicline-dir":!!d});b.lastCmdDirection=!!d});K.ie||b.enterMode==CKEDITOR.ENTER_BR||b.hotNode.scrollIntoView();b.line.detach()}return function(c){c=c.getSelection().getStartElement();var g;c=c.getAscendant(S,1);if(!t(b,c)&&c&&!c.equals(b.editable)&&!c.contains(b.editable)){(g=k(c))&&"false"==g.getAttribute("contenteditable")&&(c=g);b.element=c;g=a(b,c,!d);var h;n(g)&&g.is(b.triggers)&& -g.is(J)&&(!a(b,g,!d)||(h=a(b,g,!d))&&n(h)&&h.is(b.triggers))?e(g):(h=f(b,c),n(h)&&(a(b,h,!d)?(c=a(b,h,!d))&&n(c)&&c.is(b.triggers)&&e(h):e(h)))}}}()}}function g(a,b){if(!b||b.type!=CKEDITOR.NODE_ELEMENT||!b.$)return!1;var c=a.line;return c.wrap.equals(b)||c.wrap.contains(b)}function n(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.$}function y(a){if(!n(a))return!1;var b;(b=w(a))||(n(a)?(b={left:1,right:1,center:1},b=!(!b[a.getComputedStyle("float")]&&!b[a.getAttribute("align")])):b=!1);return b}function w(a){return!!{absolute:1, -fixed:1}[a.getComputedStyle("position")]}function p(a,b){return n(b)?b.is(a.triggers):null}function t(a,b){if(!b)return!1;for(var c=b.getParents(1),d=c.length;d--;)for(var e=a.tabuList.length;e--;)if(c[d].hasAttribute(a.tabuList[e]))return!0;return!1}function r(a,b,c){b=b[c?"getLast":"getFirst"](function(b){return a.isRelevant(b)&&!b.is(da)});if(!b)return!1;q(a,b);return c?b.size.top>a.mouse.y:b.size.bottom<a.mouse.y}function x(a){var b=a.editable,c=a.mouse,d=a.view,e=a.triggerOffset;v(a);var f=c.y> -(a.inInlineMode?d.editable.top+d.editable.height/2:Math.min(d.editable.height,d.pane.height)/2),b=b[f?"getLast":"getFirst"](function(a){return!(U(a)||V(a))});if(!b)return null;g(a,b)&&(b=a.line.wrap[f?"getPrevious":"getNext"](function(a){return!(U(a)||V(a))}));if(!n(b)||y(b)||!p(a,b))return null;q(a,b);return!f&&0<=b.size.top&&m(c.y,0,b.size.top+e)?(a=a.inInlineMode||0===d.scroll.y?G:Y,new h([null,b,I,H,a])):f&&b.size.bottom<=d.pane.height&&m(c.y,b.size.bottom-e,d.pane.height)?(a=a.inInlineMode|| -m(b.size.bottom,d.pane.height-e,d.pane.height)?P:Y,new h([b,null,M,H,a])):null}function u(b){var c=b.mouse,d=b.view,e=b.triggerOffset,g=f(b);if(!g)return null;q(b,g);var e=Math.min(e,0|g.size.outerHeight/2),k=[],l,t;if(m(c.y,g.size.top-1,g.size.top+e))t=!1;else if(m(c.y,g.size.bottom-e,g.size.bottom+1))t=!0;else return null;if(y(g)||r(b,g,t)||g.getParent().is(X))return null;var u=a(b,g,!t);if(u){if(u&&u.type==CKEDITOR.NODE_TEXT)return null;if(n(u)){if(y(u)||!p(b,u)||u.getParent().is(X))return null; -k=[u,g][t?"reverse":"concat"]().concat([Q,H])}}else g.equals(b.editable[t?"getLast":"getFirst"](b.isRelevant))?(v(b),t&&m(c.y,g.size.bottom-e,d.pane.height)&&m(g.size.bottom,d.pane.height-e,d.pane.height)?l=P:m(c.y,0,g.size.top+e)&&(l=G)):l=Y,k=[null,g][t?"reverse":"concat"]().concat([t?M:I,H,l,g.equals(b.editable[t?"getLast":"getFirst"](b.isRelevant))?t?P:G:Y]);return 0 in k?new h(k):null}function z(a,b,c,d){for(var e=b.getDocumentPosition(),f={},g={},h={},k={},l=N.length;l--;)f[N[l]]=parseInt(b.getComputedStyle.call(b, -"border-"+N[l]+"-width"),10)||0,h[N[l]]=parseInt(b.getComputedStyle.call(b,"padding-"+N[l]),10)||0,g[N[l]]=parseInt(b.getComputedStyle.call(b,"margin-"+N[l]),10)||0;c&&!d||B(a,d);k.top=e.y-(c?0:a.view.scroll.y);k.left=e.x-(c?0:a.view.scroll.x);k.outerWidth=b.$.offsetWidth;k.outerHeight=b.$.offsetHeight;k.height=k.outerHeight-(h.top+h.bottom+f.top+f.bottom);k.width=k.outerWidth-(h.left+h.right+f.left+f.right);k.bottom=k.top+k.outerHeight;k.right=k.left+k.outerWidth;a.inInlineMode&&(k.scroll={top:b.$.scrollTop, -left:b.$.scrollLeft});return A({border:f,padding:h,margin:g,ignoreScroll:c},k,!0)}function q(a,b,c){if(!n(b))return b.size=null;if(!b.size)b.size={};else if(b.size.ignoreScroll==c&&b.size.date>new Date-W)return null;return A(b.size,z(a,b,c),{date:+new Date},!0)}function v(a,b){a.view.editable=z(a,a.editable,b,!0)}function B(a,b){a.view||(a.view={});var c=a.view;if(!(!b&&c&&c.date>new Date-W)){var d=a.win,c=d.getScrollPosition(),d=d.getViewPaneSize();A(a.view,{scroll:{x:c.x,y:c.y,width:a.doc.$.documentElement.scrollWidth- -d.width,height:a.doc.$.documentElement.scrollHeight-d.height},pane:{width:d.width,height:d.height,bottom:d.height+c.y},date:+new Date},!0)}}function D(a,b,c,d){for(var e=d,f=d,g=0,k=!1,l=!1,m=a.view.pane.height,n=a.mouse;n.y+g<m&&0<n.y-g;){k||(k=b(e,d));l||(l=b(f,d));!k&&0<n.y-g&&(e=c(a,{x:n.x,y:n.y-g}));!l&&n.y+g<m&&(f=c(a,{x:n.x,y:n.y+g}));if(k&&l)break;g+=2}return new h([e,f,null,null])}CKEDITOR.plugins.add("magicline",{init:function(b){var e=b.config,k=e.magicline_triggerOffset||30,m={editor:b, -enterMode:e.enterMode,triggerOffset:k,holdDistance:0|k*(e.magicline_holdDistance||.5),boxColor:e.magicline_color||"#ff0000",rtl:"rtl"==e.contentsLangDirection,tabuList:["data-cke-hidden-sel"].concat(e.magicline_tabuList||[]),triggers:e.magicline_everywhere?S:{table:1,hr:1,div:1,ul:1,ol:1,dl:1,form:1,blockquote:1}},r,q,p;m.isRelevant=function(a){return n(a)&&!g(m,a)&&!y(a)};b.on("contentDom",function(){var k=b.editable(),n=b.document,y=b.window;A(m,{editable:k,inInlineMode:k.isInline(),doc:n,win:y, -hotNode:null},!0);m.boundary=m.inInlineMode?m.editable:m.doc.getDocumentElement();k.is(C.$inline)||(m.inInlineMode&&!w(k)&&k.setStyles({position:"relative",top:null,left:null}),l.call(this,m),B(m),k.attachListener(b,"beforeUndoImage",function(){m.line.detach()}),k.attachListener(b,"beforeGetData",function(){m.line.wrap.getParent()&&(m.line.detach(),b.once("getData",function(){m.line.attach()},null,null,1E3))},null,null,0),k.attachListener(m.inInlineMode?n:n.getWindow().getFrame(),"mouseout",function(a){if("wysiwyg"== -b.mode)if(m.inInlineMode){var c=a.data.$.clientX;a=a.data.$.clientY;B(m);v(m,!0);var d=m.view.editable,e=m.view.scroll;c>d.left-e.x&&c<d.right-e.x&&a>d.top-e.y&&a<d.bottom-e.y||(clearTimeout(p),p=null,m.line.detach())}else clearTimeout(p),p=null,m.line.detach()}),k.attachListener(k,"keyup",function(){m.hiddenMode=0}),k.attachListener(k,"keydown",function(a){if("wysiwyg"==b.mode)switch(a.data.getKeystroke()){case 2228240:case 16:m.hiddenMode=1,m.line.detach()}}),k.attachListener(m.inInlineMode?k:n, -"mousemove",function(a){q=!0;if("wysiwyg"==b.mode&&!b.readOnly&&!p){var c={x:a.data.$.clientX,y:a.data.$.clientY};p=setTimeout(function(){m.mouse=c;p=m.trigger=null;B(m);q&&!m.hiddenMode&&b.focusManager.hasFocus&&!m.line.mouseNear()&&(m.element=Z(m,!0))&&((m.trigger=x(m)||u(m)||ga(m))&&!t(m,m.trigger.upper||m.trigger.lower)?m.line.attach().place():(m.trigger=null,m.line.detach()),q=!1)},30)}}),k.attachListener(y,"scroll",function(){"wysiwyg"==b.mode&&(m.line.detach(),K.webkit&&(m.hiddenMode=1,clearTimeout(r), -r=setTimeout(function(){m.mouseDown||(m.hiddenMode=0)},50)))}),k.attachListener(L?n:y,"mousedown",function(){"wysiwyg"==b.mode&&(m.line.detach(),m.hiddenMode=1,m.mouseDown=1)}),k.attachListener(L?n:y,"mouseup",function(){m.hiddenMode=0;m.mouseDown=0}),b.addCommand("accessPreviousSpace",d(m)),b.addCommand("accessNextSpace",d(m,!0)),b.setKeystroke([[e.magicline_keystrokePrevious,"accessPreviousSpace"],[e.magicline_keystrokeNext,"accessNextSpace"]]),b.on("loadSnapshot",function(){var a,c,d,e;for(e in{p:1, -br:1,div:1})for(a=b.document.getElementsByTag(e),d=a.count();d--;)if((c=a.getItem(d)).data("cke-magicline-hot")){m.hotNode=c;m.lastCmdDirection="true"===c.data("cke-magicline-dir")?!0:!1;return}}),b._.magiclineBackdoor={accessFocusSpace:c,boxTrigger:h,isLine:g,getAscendantTrigger:f,getNonEmptyNeighbour:a,getSize:z,that:m,triggerEdge:u,triggerEditable:x,triggerExpand:ga})},this)}});var A=CKEDITOR.tools.extend,E=CKEDITOR.dom.element,F=E.createFromHtml,K=CKEDITOR.env,L=CKEDITOR.env.ie&&9>CKEDITOR.env.version, -C=CKEDITOR.dtd,O={},I=128,M=64,Q=32,H=16,G=4,P=2,Y=1,T=" ",X=C.$listItem,da=C.$tableContent,J=A({},C.$nonEditable,C.$empty),S=C.$block,W=100,aa="width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;",ba=aa+"border-color:transparent;display:block;border-style:solid;",ca="\x3cspan\x3e"+T+"\x3c/span\x3e";O[CKEDITOR.ENTER_BR]="br";O[CKEDITOR.ENTER_P]="p";O[CKEDITOR.ENTER_DIV]="div";h.prototype={set:function(a,b,c){this.properties= +{label:a.lang.list.bulletedlist,command:"bulletedlist",directional:!0,toolbar:"list,20"})),a.on("key",function(b){var e=b.data.domEvent.getKey(),g;if("wysiwyg"==a.mode&&e in{8:1,46:1}){var f=a.getSelection().getRanges()[0],h=f&&f.startPath();if(f&&f.collapsed){var k=8==e,n=a.editable(),q=new CKEDITOR.dom.walker(f.clone());q.evaluator=function(a){return y(a)&&!v(a)};q.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&&a.is("table"))};e=f.clone();if(k){var p;(p=h.contains(d))&&f.checkBoundaryOfElement(p, +CKEDITOR.START)&&(p=p.getParent())&&p.is("li")&&(p=c(p))?(g=p,p=p.getPrevious(y),e.moveToPosition(p&&v(p)?p:g,CKEDITOR.POSITION_BEFORE_START)):(q.range.setStartAt(n,CKEDITOR.POSITION_AFTER_START),q.range.setEnd(f.startContainer,f.startOffset),(p=q.previous())&&p.type==CKEDITOR.NODE_ELEMENT&&(p.getName()in d||p.is("li"))&&(p.is("li")||(q.range.selectNodeContents(p),q.reset(),q.evaluator=l,p=q.previous()),g=p,e.moveToElementEditEnd(g),e.moveToPosition(e.endPath().block,CKEDITOR.POSITION_BEFORE_END))); +if(g)m(a,e,f),b.cancel();else{var F=h.contains(d);F&&f.checkBoundaryOfElement(F,CKEDITOR.START)&&(g=F.getFirst(y),f.checkBoundaryOfElement(g,CKEDITOR.START)&&(p=F.getPrevious(y),c(g)?p&&(f.moveToElementEditEnd(p),f.select()):a.execCommand("outdent"),b.cancel()))}}else if(g=h.contains("li")){if(q.range.setEndAt(n,CKEDITOR.POSITION_BEFORE_END),k=(n=g.getLast(y))&&l(n)?n:g,h=0,(p=q.next())&&p.type==CKEDITOR.NODE_ELEMENT&&p.getName()in d&&p.equals(n)?(h=1,p=q.next()):f.checkBoundaryOfElement(k,CKEDITOR.END)&& +(h=2),h&&p){f=f.clone();f.moveToElementEditStart(p);if(1==h&&(e.optimize(),!e.startContainer.equals(g))){for(g=e.startContainer;g.is(CKEDITOR.dtd.$inline);)F=g,g=g.getParent();F&&e.moveToPosition(F,CKEDITOR.POSITION_AFTER_END)}2==h&&(e.moveToPosition(e.endPath().block,CKEDITOR.POSITION_BEFORE_END),f.endPath().block&&f.moveToPosition(f.endPath().block,CKEDITOR.POSITION_AFTER_START));m(a,e,f);b.cancel()}}else q.range.setEndAt(n,CKEDITOR.POSITION_BEFORE_END),(p=q.next())&&p.type==CKEDITOR.NODE_ELEMENT&& +p.is(d)&&(p=p.getFirst(y),h.block&&f.checkStartOfBlock()&&f.checkEndOfBlock()?(h.block.remove(),f.moveToElementEditStart(p),f.select()):c(p)?(f.moveToElementEditStart(p),f.select()):(f=f.clone(),f.moveToElementEditStart(p),m(a,e,f)),b.cancel());setTimeout(function(){a.selectionChange(1)})}}}))}})}(),"use strict",function(){function b(a,b,c){return n(b)&&n(c)&&c.equals(b.getNext(function(a){return!(U(a)||V(a)||y(a))}))}function h(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slice(2))}function f(a){var b= +a.element;if(b&&n(b)&&(b=b.getAscendant(a.triggers,!0))&&a.editable.contains(b)){var c=l(b);if("true"==c.getAttribute("contenteditable"))return b;if(c.is(a.triggers))return c}return null}function e(a,b,c){u(a,b);u(a,c);a=b.size.bottom;c=c.size.top;return a&&c?0|(a+c)/2:a||c}function a(a,b,c){return b=b[c?"getPrevious":"getNext"](function(b){return b&&b.type==CKEDITOR.NODE_TEXT&&!U(b)||n(b)&&!y(b)&&!g(a,b)})}function k(a,b,c){return a>b&&a<c}function l(a,b){if(a.data("cke-editable"))return null;for(b|| +(a=a.getParent());a&&!a.data("cke-editable");){if(a.hasAttribute("contenteditable"))return a;a=a.getParent()}return null}function m(a){var b=a.doc,d=F('\x3cspan contenteditable\x3d"false" data-cke-magic-line\x3d"1" style\x3d"'+aa+"position:absolute;border-top:1px dashed "+a.boxColor+'"\x3e\x3c/span\x3e',b),e=CKEDITOR.getUrl(this.path+"images/"+(K.hidpi?"hidpi/":"")+"icon"+(a.rtl?"-rtl":"")+".png");A(d,{attach:function(){this.wrap.getParent()||this.wrap.appendTo(a.editable,!0);return this},lineChildren:[A(F('\x3cspan title\x3d"'+ +a.editor.lang.magicline.title+'" contenteditable\x3d"false"\x3e\x26#8629;\x3c/span\x3e',b),{base:aa+"height:17px;width:17px;"+(a.rtl?"left":"right")+":17px;background:url("+e+") center no-repeat "+a.boxColor+";cursor:pointer;"+(K.hc?"font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;":"")+(K.hidpi?"background-size: 9px 10px;":""),looks:["top:-8px; border-radius: 2px;","top:-17px; border-radius: 2px 2px 0px 0px;","top:-1px; border-radius: 0px 0px 2px 2px;"]}),A(F(da,b),{base:ba+ +"left:0px;border-left-color:"+a.boxColor+";",looks:["border-width:8px 0 8px 8px;top:-8px","border-width:8px 0 0 8px;top:-8px","border-width:0 0 8px 8px;top:0px"]}),A(F(da,b),{base:ba+"right:0px;border-right-color:"+a.boxColor+";",looks:["border-width:8px 8px 8px 0;top:-8px","border-width:8px 8px 0 0;top:-8px","border-width:0 8px 8px 0;top:0px"]})],detach:function(){this.wrap.getParent()&&this.wrap.remove();return this},mouseNear:function(){u(a,this);var b=a.holdDistance,c=this.size;return c&&k(a.mouse.y, +c.top-b,c.bottom+b)&&k(a.mouse.x,c.left-b,c.right+b)?!0:!1},place:function(){var b=a.view,c=a.editable,d=a.trigger,e=d.upper,g=d.lower,f=e||g,h=f.getParent(),l={};this.trigger=d;e&&u(a,e,!0);g&&u(a,g,!0);u(a,h,!0);a.inInlineMode&&w(a,!0);h.equals(c)?(l.left=b.scroll.x,l.right=-b.scroll.x,l.width=""):(l.left=f.size.left-f.size.margin.left+b.scroll.x-(a.inInlineMode?b.editable.left+b.editable.border.left:0),l.width=f.size.outerWidth+f.size.margin.left+f.size.margin.right+b.scroll.x,l.right="");e&&g? +l.top=e.size.margin.bottom===g.size.margin.top?0|e.size.bottom+e.size.margin.bottom/2:e.size.margin.bottom<g.size.margin.top?e.size.bottom+e.size.margin.bottom:e.size.bottom+e.size.margin.bottom-g.size.margin.top:e?g||(l.top=e.size.bottom+e.size.margin.bottom):l.top=g.size.top-g.size.margin.top;d.is(G)||k(l.top,b.scroll.y-15,b.scroll.y+5)?(l.top=a.inInlineMode?0:b.scroll.y,this.look(G)):d.is(O)||k(l.top,b.pane.bottom-5,b.pane.bottom+15)?(l.top=a.inInlineMode?b.editable.height+b.editable.padding.top+ +b.editable.padding.bottom:b.pane.bottom-1,this.look(O)):(a.inInlineMode&&(l.top-=b.editable.top+b.editable.border.top),this.look(Y));a.inInlineMode&&(l.top--,l.top+=b.editable.scroll.top,l.left+=b.editable.scroll.left);for(var m in l)l[m]=CKEDITOR.tools.cssLength(l[m]);this.setStyles(l)},look:function(a){if(this.oldLook!=a){for(var b=this.lineChildren.length,c;b--;)(c=this.lineChildren[b]).setAttribute("style",c.base+c.looks[0|a/2]);this.oldLook=a}},wrap:new E("span",a.doc)});for(b=d.lineChildren.length;b--;)d.lineChildren[b].appendTo(d); +d.look(Y);d.appendTo(d.wrap);d.unselectable();d.lineChildren[0].on("mouseup",function(b){d.detach();c(a,function(b){var c=a.line.trigger;b[c.is(I)?"insertBefore":"insertAfter"](c.is(I)?c.lower:c.upper)},!0);a.editor.focus();K.ie||a.enterMode==CKEDITOR.ENTER_BR||a.hotNode.scrollIntoView();b.data.preventDefault(!0)});d.on("mousedown",function(a){a.data.preventDefault(!0)});a.line=d}function c(a,b,c){var d=new CKEDITOR.dom.range(a.doc),e=a.editor,g;K.ie&&a.enterMode==CKEDITOR.ENTER_BR?g=a.doc.createText(S): +(g=(g=l(a.element,!0))&&g.data("cke-enter-mode")||a.enterMode,g=new E(N[g],a.doc),g.is("br")||a.doc.createText(S).appendTo(g));c&&e.fire("saveSnapshot");b(g);d.moveToPosition(g,CKEDITOR.POSITION_AFTER_START);e.getSelection().selectRanges([d]);a.hotNode=g;c&&e.fire("saveSnapshot")}function d(b,d){return{canUndo:!0,modes:{wysiwyg:1},exec:function(){function e(a){var g=K.ie&&9>K.version?" ":S,f=b.hotNode&&b.hotNode.getText()==g&&b.element.equals(b.hotNode)&&b.lastCmdDirection===!!d;c(b,function(c){f&& +b.hotNode&&b.hotNode.remove();c[d?"insertAfter":"insertBefore"](a);c.setAttributes({"data-cke-magicline-hot":1,"data-cke-magicline-dir":!!d});b.lastCmdDirection=!!d});K.ie||b.enterMode==CKEDITOR.ENTER_BR||b.hotNode.scrollIntoView();b.line.detach()}return function(c){c=c.getSelection().getStartElement();var g;c=c.getAscendant(T,1);if(!q(b,c)&&c&&!c.equals(b.editable)&&!c.contains(b.editable)){(g=l(c))&&"false"==g.getAttribute("contenteditable")&&(c=g);b.element=c;g=a(b,c,!d);var h;n(g)&&g.is(b.triggers)&& +g.is(J)&&(!a(b,g,!d)||(h=a(b,g,!d))&&n(h)&&h.is(b.triggers))?e(g):(h=f(b,c),n(h)&&(a(b,h,!d)?(c=a(b,h,!d))&&n(c)&&c.is(b.triggers)&&e(h):e(h)))}}}()}}function g(a,b){if(!b||b.type!=CKEDITOR.NODE_ELEMENT||!b.$)return!1;var c=a.line;return c.wrap.equals(b)||c.wrap.contains(b)}function n(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.$}function y(a){if(!n(a))return!1;var b;(b=v(a))||(n(a)?(b={left:1,right:1,center:1},b=!(!b[a.getComputedStyle("float")]&&!b[a.getAttribute("align")])):b=!1);return b}function v(a){return!!{absolute:1, +fixed:1}[a.getComputedStyle("position")]}function p(a,b){return n(b)?b.is(a.triggers):null}function q(a,b){if(!b)return!1;for(var c=b.getParents(1),d=c.length;d--;)for(var e=a.tabuList.length;e--;)if(c[d].hasAttribute(a.tabuList[e]))return!0;return!1}function r(a,b,c){b=b[c?"getLast":"getFirst"](function(b){return a.isRelevant(b)&&!b.is(ca)});if(!b)return!1;u(a,b);return c?b.size.top>a.mouse.y:b.size.bottom<a.mouse.y}function x(a){var b=a.editable,c=a.mouse,d=a.view,e=a.triggerOffset;w(a);var f=c.y> +(a.inInlineMode?d.editable.top+d.editable.height/2:Math.min(d.editable.height,d.pane.height)/2),b=b[f?"getLast":"getFirst"](function(a){return!(U(a)||V(a))});if(!b)return null;g(a,b)&&(b=a.line.wrap[f?"getPrevious":"getNext"](function(a){return!(U(a)||V(a))}));if(!n(b)||y(b)||!p(a,b))return null;u(a,b);return!f&&0<=b.size.top&&k(c.y,0,b.size.top+e)?(a=a.inInlineMode||0===d.scroll.y?G:Y,new h([null,b,I,H,a])):f&&b.size.bottom<=d.pane.height&&k(c.y,b.size.bottom-e,d.pane.height)?(a=a.inInlineMode|| +k(b.size.bottom,d.pane.height-e,d.pane.height)?O:Y,new h([b,null,L,H,a])):null}function t(b){var c=b.mouse,d=b.view,e=b.triggerOffset,g=f(b);if(!g)return null;u(b,g);var e=Math.min(e,0|g.size.outerHeight/2),l=[],m,q;if(k(c.y,g.size.top-1,g.size.top+e))q=!1;else if(k(c.y,g.size.bottom-e,g.size.bottom+1))q=!0;else return null;if(y(g)||r(b,g,q)||g.getParent().is(X))return null;var t=a(b,g,!q);if(t){if(t&&t.type==CKEDITOR.NODE_TEXT)return null;if(n(t)){if(y(t)||!p(b,t)||t.getParent().is(X))return null; +l=[t,g][q?"reverse":"concat"]().concat([R,H])}}else g.equals(b.editable[q?"getLast":"getFirst"](b.isRelevant))?(w(b),q&&k(c.y,g.size.bottom-e,d.pane.height)&&k(g.size.bottom,d.pane.height-e,d.pane.height)?m=O:k(c.y,0,g.size.top+e)&&(m=G)):m=Y,l=[null,g][q?"reverse":"concat"]().concat([q?L:I,H,m,g.equals(b.editable[q?"getLast":"getFirst"](b.isRelevant))?q?O:G:Y]);return 0 in l?new h(l):null}function z(a,b,c,d){for(var e=b.getDocumentPosition(),g={},f={},h={},l={},k=P.length;k--;)g[P[k]]=parseInt(b.getComputedStyle.call(b, +"border-"+P[k]+"-width"),10)||0,h[P[k]]=parseInt(b.getComputedStyle.call(b,"padding-"+P[k]),10)||0,f[P[k]]=parseInt(b.getComputedStyle.call(b,"margin-"+P[k]),10)||0;c&&!d||B(a,d);l.top=e.y-(c?0:a.view.scroll.y);l.left=e.x-(c?0:a.view.scroll.x);l.outerWidth=b.$.offsetWidth;l.outerHeight=b.$.offsetHeight;l.height=l.outerHeight-(h.top+h.bottom+g.top+g.bottom);l.width=l.outerWidth-(h.left+h.right+g.left+g.right);l.bottom=l.top+l.outerHeight;l.right=l.left+l.outerWidth;a.inInlineMode&&(l.scroll={top:b.$.scrollTop, +left:b.$.scrollLeft});return A({border:g,padding:h,margin:f,ignoreScroll:c},l,!0)}function u(a,b,c){if(!n(b))return b.size=null;if(!b.size)b.size={};else if(b.size.ignoreScroll==c&&b.size.date>new Date-W)return null;return A(b.size,z(a,b,c),{date:+new Date},!0)}function w(a,b){a.view.editable=z(a,a.editable,b,!0)}function B(a,b){a.view||(a.view={});var c=a.view;if(!(!b&&c&&c.date>new Date-W)){var d=a.win,c=d.getScrollPosition(),d=d.getViewPaneSize();A(a.view,{scroll:{x:c.x,y:c.y,width:a.doc.$.documentElement.scrollWidth- +d.width,height:a.doc.$.documentElement.scrollHeight-d.height},pane:{width:d.width,height:d.height,bottom:d.height+c.y},date:+new Date},!0)}}function C(a,b,c,d){for(var e=d,g=d,f=0,l=!1,k=!1,m=a.view.pane.height,n=a.mouse;n.y+f<m&&0<n.y-f;){l||(l=b(e,d));k||(k=b(g,d));!l&&0<n.y-f&&(e=c(a,{x:n.x,y:n.y-f}));!k&&n.y+f<m&&(g=c(a,{x:n.x,y:n.y+f}));if(l&&k)break;f+=2}return new h([e,g,null,null])}CKEDITOR.plugins.add("magicline",{init:function(b){var e=b.config,l=e.magicline_triggerOffset||30,k={editor:b, +enterMode:e.enterMode,triggerOffset:l,holdDistance:0|l*(e.magicline_holdDistance||.5),boxColor:e.magicline_color||"#ff0000",rtl:"rtl"==e.contentsLangDirection,tabuList:["data-cke-hidden-sel"].concat(e.magicline_tabuList||[]),triggers:e.magicline_everywhere?T:{table:1,hr:1,div:1,ul:1,ol:1,dl:1,form:1,blockquote:1}},r,u,p;k.isRelevant=function(a){return n(a)&&!g(k,a)&&!y(a)};b.on("contentDom",function(){var l=b.editable(),n=b.document,y=b.window;A(k,{editable:l,inInlineMode:l.isInline(),doc:n,win:y, +hotNode:null},!0);k.boundary=k.inInlineMode?k.editable:k.doc.getDocumentElement();l.is(D.$inline)||(k.inInlineMode&&!v(l)&&l.setStyles({position:"relative",top:null,left:null}),m.call(this,k),B(k),l.attachListener(b,"beforeUndoImage",function(){k.line.detach()}),l.attachListener(b,"beforeGetData",function(){k.line.wrap.getParent()&&(k.line.detach(),b.once("getData",function(){k.line.attach()},null,null,1E3))},null,null,0),l.attachListener(k.inInlineMode?n:n.getWindow().getFrame(),"mouseout",function(a){if("wysiwyg"== +b.mode)if(k.inInlineMode){var c=a.data.$.clientX;a=a.data.$.clientY;B(k);w(k,!0);var d=k.view.editable,e=k.view.scroll;c>d.left-e.x&&c<d.right-e.x&&a>d.top-e.y&&a<d.bottom-e.y||(clearTimeout(p),p=null,k.line.detach())}else clearTimeout(p),p=null,k.line.detach()}),l.attachListener(l,"keyup",function(){k.hiddenMode=0}),l.attachListener(l,"keydown",function(a){if("wysiwyg"==b.mode)switch(a.data.getKeystroke()){case 2228240:case 16:k.hiddenMode=1,k.line.detach()}}),l.attachListener(k.inInlineMode?l:n, +"mousemove",function(a){u=!0;if("wysiwyg"==b.mode&&!b.readOnly&&!p){var c={x:a.data.$.clientX,y:a.data.$.clientY};p=setTimeout(function(){k.mouse=c;p=k.trigger=null;B(k);u&&!k.hiddenMode&&b.focusManager.hasFocus&&!k.line.mouseNear()&&(k.element=Z(k,!0))&&((k.trigger=x(k)||t(k)||ha(k))&&!q(k,k.trigger.upper||k.trigger.lower)?k.line.attach().place():(k.trigger=null,k.line.detach()),u=!1)},30)}}),l.attachListener(y,"scroll",function(){"wysiwyg"==b.mode&&(k.line.detach(),K.webkit&&(k.hiddenMode=1,clearTimeout(r), +r=setTimeout(function(){k.mouseDown||(k.hiddenMode=0)},50)))}),l.attachListener(M?n:y,"mousedown",function(){"wysiwyg"==b.mode&&(k.line.detach(),k.hiddenMode=1,k.mouseDown=1)}),l.attachListener(M?n:y,"mouseup",function(){k.hiddenMode=0;k.mouseDown=0}),b.addCommand("accessPreviousSpace",d(k)),b.addCommand("accessNextSpace",d(k,!0)),b.setKeystroke([[e.magicline_keystrokePrevious,"accessPreviousSpace"],[e.magicline_keystrokeNext,"accessNextSpace"]]),b.on("loadSnapshot",function(){var a,c,d,e;for(e in{p:1, +br:1,div:1})for(a=b.document.getElementsByTag(e),d=a.count();d--;)if((c=a.getItem(d)).data("cke-magicline-hot")){k.hotNode=c;k.lastCmdDirection="true"===c.data("cke-magicline-dir")?!0:!1;return}}),b._.magiclineBackdoor={accessFocusSpace:c,boxTrigger:h,isLine:g,getAscendantTrigger:f,getNonEmptyNeighbour:a,getSize:z,that:k,triggerEdge:t,triggerEditable:x,triggerExpand:ha})},this)}});var A=CKEDITOR.tools.extend,E=CKEDITOR.dom.element,F=E.createFromHtml,K=CKEDITOR.env,M=CKEDITOR.env.ie&&9>CKEDITOR.env.version, +D=CKEDITOR.dtd,N={},I=128,L=64,R=32,H=16,G=4,O=2,Y=1,S=" ",X=D.$listItem,ca=D.$tableContent,J=A({},D.$nonEditable,D.$empty),T=D.$block,W=100,aa="width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;",ba=aa+"border-color:transparent;display:block;border-style:solid;",da="\x3cspan\x3e"+S+"\x3c/span\x3e";N[CKEDITOR.ENTER_BR]="br";N[CKEDITOR.ENTER_P]="p";N[CKEDITOR.ENTER_DIV]="div";h.prototype={set:function(a,b,c){this.properties= a+b+(c||Y);return this},is:function(a){return(this.properties&a)==a}};var Z=function(){function a(b,c){var d=b.$.elementFromPoint(c.x,c.y);return d&&d.nodeType?new CKEDITOR.dom.element(d):null}return function(b,c,d){if(!b.mouse)return null;var e=b.doc,f=b.line.wrap;d=d||b.mouse;var h=a(e,d);c&&g(b,h)&&(f.hide(),h=a(e,d),f.show());return!h||h.type!=CKEDITOR.NODE_ELEMENT||!h.$||K.ie&&9>K.version&&!b.boundary.equals(h)&&!b.boundary.contains(h)?null:h}}(),U=CKEDITOR.dom.walker.whitespaces(),V=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_COMMENT), -ga=function(){function a(d){var f=d.element,g,h,k;if(!n(f)||f.contains(d.editable)||f.isReadOnly())return null;k=D(d,function(a,b){return!b.equals(a)},function(a,b){return Z(a,!0,b)},f);g=k.upper;h=k.lower;if(b(d,g,h))return k.set(Q,8);if(g&&f.contains(g))for(;!g.getParent().equals(f);)g=g.getParent();else g=f.getFirst(function(a){return c(d,a)});if(h&&f.contains(h))for(;!h.getParent().equals(f);)h=h.getParent();else h=f.getLast(function(a){return c(d,a)});if(!g||!h)return null;q(d,g);q(d,h);if(!m(d.mouse.y, -g.size.top,h.size.bottom))return null;for(var f=Number.MAX_VALUE,l,r,t,u;h&&!h.equals(g)&&(r=g.getNext(d.isRelevant));)l=Math.abs(e(d,g,r)-d.mouse.y),l<f&&(f=l,t=g,u=r),g=r,q(d,g);if(!t||!u||!m(d.mouse.y,t.size.top,u.size.bottom))return null;k.upper=t;k.lower=u;return k.set(Q,8)}function c(a,b){return!(b&&b.type==CKEDITOR.NODE_TEXT||V(b)||y(b)||g(a,b)||b.type==CKEDITOR.NODE_ELEMENT&&b.$&&b.is("br"))}return function(c){var d=a(c),e;if(e=d){e=d.upper;var f=d.lower;e=!e||!f||y(f)||y(e)||f.equals(e)|| -e.equals(f)||f.contains(e)||e.contains(f)?!1:p(c,e)&&p(c,f)&&b(c,e,f)?!0:!1}return e?d:null}}(),N=["top","left","right","bottom"]}(),CKEDITOR.config.magicline_keystrokePrevious=CKEDITOR.CTRL+CKEDITOR.SHIFT+51,CKEDITOR.config.magicline_keystrokeNext=CKEDITOR.CTRL+CKEDITOR.SHIFT+52,function(){function b(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())return[];for(var b=[],e=["style","className"],c=0;c<e.length;c++){var d=a.$.elements.namedItem(e[c]);d&&(d=new CKEDITOR.dom.element(d),b.push([d, +ha=function(){function a(d){var g=d.element,f,h,l;if(!n(g)||g.contains(d.editable)||g.isReadOnly())return null;l=C(d,function(a,b){return!b.equals(a)},function(a,b){return Z(a,!0,b)},g);f=l.upper;h=l.lower;if(b(d,f,h))return l.set(R,8);if(f&&g.contains(f))for(;!f.getParent().equals(g);)f=f.getParent();else f=g.getFirst(function(a){return c(d,a)});if(h&&g.contains(h))for(;!h.getParent().equals(g);)h=h.getParent();else h=g.getLast(function(a){return c(d,a)});if(!f||!h)return null;u(d,f);u(d,h);if(!k(d.mouse.y, +f.size.top,h.size.bottom))return null;for(var g=Number.MAX_VALUE,m,q,r,t;h&&!h.equals(f)&&(q=f.getNext(d.isRelevant));)m=Math.abs(e(d,f,q)-d.mouse.y),m<g&&(g=m,r=f,t=q),f=q,u(d,f);if(!r||!t||!k(d.mouse.y,r.size.top,t.size.bottom))return null;l.upper=r;l.lower=t;return l.set(R,8)}function c(a,b){return!(b&&b.type==CKEDITOR.NODE_TEXT||V(b)||y(b)||g(a,b)||b.type==CKEDITOR.NODE_ELEMENT&&b.$&&b.is("br"))}return function(c){var d=a(c),e;if(e=d){e=d.upper;var g=d.lower;e=!e||!g||y(g)||y(e)||g.equals(e)|| +e.equals(g)||g.contains(e)||e.contains(g)?!1:p(c,e)&&p(c,g)&&b(c,e,g)?!0:!1}return e?d:null}}(),P=["top","left","right","bottom"]}(),CKEDITOR.config.magicline_keystrokePrevious=CKEDITOR.CTRL+CKEDITOR.SHIFT+51,CKEDITOR.config.magicline_keystrokeNext=CKEDITOR.CTRL+CKEDITOR.SHIFT+52,function(){function b(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())return[];for(var b=[],e=["style","className"],c=0;c<e.length;c++){var d=a.$.elements.namedItem(e[c]);d&&(d=new CKEDITOR.dom.element(d),b.push([d, d.nextSibling]),d.remove())}return b}function h(a,b){if(a&&a.type==CKEDITOR.NODE_ELEMENT&&"form"==a.getName()&&0<b.length)for(var e=b.length-1;0<=e;e--){var c=b[e][0],d=b[e][1];d?c.insertBefore(d):c.appendTo(a)}}function f(a,e){var f=b(a),c={},d=a.$;e||(c["class"]=d.className||"",d.className="");c.inline=d.style.cssText||"";e||(d.style.cssText="position: static; overflow: visible");h(f);return c}function e(a,e){var f=b(a),c=a.$;"class"in e&&(c.className=e["class"]);"inline"in e&&(c.style.cssText= -e.inline);h(f)}function a(a){if(!a.editable().isInline()){var b=CKEDITOR.instances,e;for(e in b){var c=b[e];"wysiwyg"!=c.mode||c.readOnly||(c=c.document.getBody(),c.setAttribute("contentEditable",!1),c.setAttribute("contentEditable",!0))}a.editable().hasFocus&&(a.toolbox.focus(),a.focus())}}CKEDITOR.plugins.add("maximize",{init:function(b){function h(){var a=d.getViewPaneSize();b.resize(a.width,a.height,null,!0)}if(b.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var l=b.lang,c=CKEDITOR.document,d=c.getWindow(), -g,n,y,w=CKEDITOR.TRISTATE_OFF;b.addCommand("maximize",{modes:{wysiwyg:!CKEDITOR.env.iOS,source:!CKEDITOR.env.iOS},readOnly:1,editorFocus:!1,exec:function(){var p=b.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}),t=b.ui.space("contents");if("wysiwyg"==b.mode){var r=b.getSelection();g=r&&r.getRanges();n=d.getScrollPosition()}else{var x=b.editable().$;g=!CKEDITOR.env.ie&&[x.selectionStart,x.selectionEnd];n=[x.scrollLeft,x.scrollTop]}if(this.state==CKEDITOR.TRISTATE_OFF){d.on("resize", -h);y=d.getScrollPosition();for(r=b.container;r=r.getParent();)r.setCustomData("maximize_saved_styles",f(r)),r.setStyle("z-index",b.config.baseFloatZIndex-5);t.setCustomData("maximize_saved_styles",f(t,!0));p.setCustomData("maximize_saved_styles",f(p,!0));t={overflow:CKEDITOR.env.webkit?"":"hidden",width:0,height:0};c.getDocumentElement().setStyles(t);!CKEDITOR.env.gecko&&c.getDocumentElement().setStyle("position","fixed");CKEDITOR.env.gecko&&CKEDITOR.env.quirks||c.getBody().setStyles(t);CKEDITOR.env.ie? -setTimeout(function(){d.$.scrollTo(0,0)},0):d.$.scrollTo(0,0);p.setStyle("position",CKEDITOR.env.gecko&&CKEDITOR.env.quirks?"fixed":"absolute");p.$.offsetLeft;p.setStyles({"z-index":b.config.baseFloatZIndex-5,left:"0px",top:"0px"});p.addClass("cke_maximized");h();t=p.getDocumentPosition();p.setStyles({left:-1*t.x+"px",top:-1*t.y+"px"});CKEDITOR.env.gecko&&a(b)}else if(this.state==CKEDITOR.TRISTATE_ON){d.removeListener("resize",h);for(var r=[t,p],u=0;u<r.length;u++)e(r[u],r[u].getCustomData("maximize_saved_styles")), -r[u].removeCustomData("maximize_saved_styles");for(r=b.container;r=r.getParent();)e(r,r.getCustomData("maximize_saved_styles")),r.removeCustomData("maximize_saved_styles");CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(y.x,y.y)},0):d.$.scrollTo(y.x,y.y);p.removeClass("cke_maximized");CKEDITOR.env.webkit&&(p.setStyle("display","inline"),setTimeout(function(){p.setStyle("display","block")},0));b.fire("resize",{outerHeight:b.container.$.offsetHeight,contentsHeight:t.$.offsetHeight,outerWidth:b.container.$.offsetWidth})}this.toggleState(); -if(r=this.uiItems[0])t=this.state==CKEDITOR.TRISTATE_OFF?l.maximize.maximize:l.maximize.minimize,r=CKEDITOR.document.getById(r._.id),r.getChild(1).setHtml(t),r.setAttribute("title",t),r.setAttribute("href",'javascript:void("'+t+'");');"wysiwyg"==b.mode?g?(CKEDITOR.env.gecko&&a(b),b.getSelection().selectRanges(g),(x=b.getSelection().getStartElement())&&x.scrollIntoView(!0)):d.$.scrollTo(n.x,n.y):(g&&(x.selectionStart=g[0],x.selectionEnd=g[1]),x.scrollLeft=n[0],x.scrollTop=n[1]);g=n=null;w=this.state; -b.fire("maximize",this.state)},canUndo:!1});b.ui.addButton&&b.ui.addButton("Maximize",{label:l.maximize.maximize,command:"maximize",toolbar:"tools,10"});b.on("mode",function(){var a=b.getCommand("maximize");a.setState(a.state==CKEDITOR.TRISTATE_DISABLED?CKEDITOR.TRISTATE_DISABLED:w)},null,null,100)}}})}(),function(){CKEDITOR.plugins.add("xml",{});CKEDITOR.xml=function(b){var h=null;if("object"==typeof b)h=b;else if(b=(b||"").replace(/ /g," "),"ActiveXObject"in window){try{h=new ActiveXObject("MSXML2.DOMDocument")}catch(f){try{h= -new ActiveXObject("Microsoft.XmlDom")}catch(e){}}h&&(h.async=!1,h.resolveExternals=!1,h.validateOnParse=!1,h.loadXML(b))}else window.DOMParser&&(h=(new DOMParser).parseFromString(b,"text/xml"));this.baseXml=h};CKEDITOR.xml.prototype={selectSingleNode:function(b,h){var f=this.baseXml;if(h||(h=f)){if("selectSingleNode"in h)return h.selectSingleNode(b);if(f.evaluate)return(f=f.evaluate(b,h,null,9,null))&&f.singleNodeValue||null}return null},selectNodes:function(b,h){var f=this.baseXml,e=[];if(h||(h= -f)){if("selectNodes"in h)return h.selectNodes(b);if(f.evaluate&&(f=f.evaluate(b,h,null,5,null)))for(var a;a=f.iterateNext();)e.push(a)}return e},getInnerXml:function(b,h){var f=this.selectSingleNode(b,h),e=[];if(f)for(f=f.firstChild;f;)f.xml?e.push(f.xml):window.XMLSerializer&&e.push((new XMLSerializer).serializeToString(f)),f=f.nextSibling;return e.length?e.join(""):null}}}(),function(){CKEDITOR.plugins.add("ajax",{requires:"xml"});CKEDITOR.ajax=function(){function b(){if(!CKEDITOR.env.ie||"file:"!= -location.protocol)try{return new XMLHttpRequest}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(b){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}return null}function h(a,b){if(4!=a.readyState||!(200<=a.status&&300>a.status||304==a.status||0===a.status||1223==a.status))return null;switch(b){case "text":return a.responseText;case "xml":var e=a.responseXML;return new CKEDITOR.xml(e&&e.firstChild?e:a.responseText);case "arraybuffer":return a.response;default:return null}} -function f(a,e,f){var l=!!e,c=b();if(!c)return null;l&&"text"!==f&&"xml"!==f&&(c.responseType=f);c.open("GET",a,l);l&&(c.onreadystatechange=function(){4==c.readyState&&(e(h(c,f)),c=null)});c.send(null);return l?"":h(c,f)}function e(a,e,f,l,c){var d=b();if(!d)return null;d.open("POST",a,!0);d.onreadystatechange=function(){4==d.readyState&&(l&&l(h(d,c)),d=null)};d.setRequestHeader("Content-type",f||"application/x-www-form-urlencoded; charset\x3dUTF-8");d.send(e)}return{load:function(a,b,e){return f(a, -b,e||"text")},post:function(a,b,f,h){return e(a,b,f,h,"text")},loadXml:function(a,b){return f(a,b,"xml")},loadText:function(a,b){return f(a,b,"text")},loadBinary:function(a,b){return f(a,b,"arraybuffer")}}}()}(),function(){function b(a,b){return CKEDITOR.tools.array.filter(a,function(a){return a.canHandle(b)}).sort(function(a,b){return a.priority===b.priority?0:a.priority-b.priority})}function h(a,b){var c=a.shift();c&&c.handle(b,function(){h(a,b)})}function f(a){var b=CKEDITOR.tools.array.reduce(a, -function(a,b){return CKEDITOR.tools.array.isArray(b.filters)?a.concat(b.filters):a},[]);return CKEDITOR.tools.array.filter(b,function(a,d){return CKEDITOR.tools.array.indexOf(b,a)===d})}function e(b,e){var c=0,d,f;if(!CKEDITOR.tools.array.isArray(b)||0===b.length)return!0;d=CKEDITOR.tools.array.filter(b,function(b){return-1===CKEDITOR.tools.array.indexOf(a,b)});if(0<d.length)for(f=0;f<d.length;f++)(function(b){CKEDITOR.scriptLoader.queue(b,function(f){f&&a.push(b);++c===d.length&&e()})})(d[f]);return 0=== -d.length}var a=[],m=CKEDITOR.tools.createClass({$:function(){this.handlers=[]},proto:{register:function(a){"number"!==typeof a.priority&&(a.priority=10);this.handlers.push(a)},addPasteListener:function(a){a.on("paste",function(l){var c=b(this.handlers,l),d;if(0!==c.length){d=f(c);d=e(d,function(){return a.fire("paste",l.data)});if(!d)return l.cancel();h(c,l)}},this,null,3)}}});CKEDITOR.plugins.add("pastetools",{requires:["clipboard","ajax"],beforeInit:function(a){a.pasteTools=new m;a.pasteTools.addPasteListener(a)}}); -CKEDITOR.plugins.pastetools={filters:{},loadFilters:e,createFilter:function(a){var b=CKEDITOR.tools.array.isArray(a.rules)?a.rules:[a.rules],c=a.additionalTransforms;return function(a,e){var f=new CKEDITOR.htmlParser.basicWriter,h=new CKEDITOR.htmlParser.filter,k;c&&(a=c(a,e));CKEDITOR.tools.array.forEach(b,function(b){h.addRules(b(a,e,h))});k=CKEDITOR.htmlParser.fragment.fromHtml(a);h.applyTo(k);k.writeHtml(f);return f.getHtml()}},getClipboardData:function(a,b){var c;return CKEDITOR.plugins.clipboard.isCustomDataTypesSupported|| -"text/html"===b?(c=a.dataTransfer.getData(b,!0))||"text/html"!==b?c:a.dataValue:null},getConfigValue:function(a,b){if(a&&a.config){var c=CKEDITOR.tools,d=a.config,e=c.object.keys(d),f=["pasteTools_"+b,"pasteFromWord_"+b,"pasteFromWord"+c.capitalize(b,!0)],f=c.array.find(f,function(a){return-1!==c.array.indexOf(e,a)});return d[f]}},getContentGeneratorName:function(a){if((a=/<meta\s+name=["']?generator["']?\s+content=["']?(\w+)/gi.exec(a))&&a.length)return a=a[1].toLowerCase(),0===a.indexOf("microsoft")? -"microsoft":0===a.indexOf("libreoffice")?"libreoffice":"unknown"}};CKEDITOR.pasteFilters=CKEDITOR.plugins.pastetools.filters}(),function(){CKEDITOR.plugins.add("pastefromgdocs",{requires:"pastetools",init:function(b){var h=CKEDITOR.plugins.getPath("pastetools"),f=this.path;b.pasteTools.register({filters:[CKEDITOR.getUrl(h+"filter/common.js"),CKEDITOR.getUrl(f+"filter/default.js")],canHandle:function(b){return/id=(\"|\')?docs\-internal\-guid\-/.test(b.data.dataValue)},handle:function(e,a){var f=e.data, -h=CKEDITOR.plugins.pastetools.getClipboardData(f,"text/html");f.dontFilter=!0;f.dataValue=CKEDITOR.pasteFilters.gdocs(h,b);!0===b.config.forcePasteAsPlainText&&(f.type="text");a()}})}})}(),function(){CKEDITOR.plugins.add("pastefromlibreoffice",{requires:"pastetools",isSupportedEnvironment:function(){var b=CKEDITOR.env.ie&&11>=CKEDITOR.env.version;return!(CKEDITOR.env.webkit&&!CKEDITOR.env.chrome)&&!b},init:function(b){if(this.isSupportedEnvironment()){var h=CKEDITOR.plugins.getPath("pastetools"), -f=this.path;b.pasteTools.register({priority:100,filters:[CKEDITOR.getUrl(h+"filter/common.js"),CKEDITOR.getUrl(h+"filter/image.js"),CKEDITOR.getUrl(f+"filter/default.js")],canHandle:function(b){b=b.data;return(b=b.dataTransfer.getData("text/html",!0)||b.dataValue)?"libreoffice"===CKEDITOR.plugins.pastetools.getContentGeneratorName(b):!1},handle:function(e,a){var f=e.data,h=f.dataValue||CKEDITOR.plugins.pastetools.getClipboardData(f,"text/html");f.dontFilter=!0;h=CKEDITOR.pasteFilters.image(h,b,CKEDITOR.plugins.pastetools.getClipboardData(f, -"text/rtf"));f.dataValue=CKEDITOR.pasteFilters.libreoffice(h,b);!0===b.config.forcePasteAsPlainText&&(f.type="text");a()}})}}})}(),function(){CKEDITOR.plugins.add("pastefromword",{requires:"pastetools",init:function(b){var h=0,f=CKEDITOR.plugins.getPath("pastetools"),e=this.path,a=void 0===b.config.pasteFromWord_inlineImages?!0:b.config.pasteFromWord_inlineImages,f=[CKEDITOR.getUrl(f+"filter/common.js"),CKEDITOR.getUrl(f+"filter/image.js"),CKEDITOR.getUrl(e+"filter/default.js")];b.addCommand("pastefromword", -{canUndo:!1,async:!0,exec:function(a,b){h=1;a.execCommand("paste",{type:"html",notification:b&&"undefined"!==typeof b.notification?b.notification:!0})}});CKEDITOR.plugins.clipboard.addPasteButton(b,"PasteFromWord",{label:b.lang.pastefromword.toolbar,command:"pastefromword",toolbar:"clipboard,50"});b.pasteTools.register({filters:b.config.pasteFromWordCleanupFile?[b.config.pasteFromWordCleanupFile]:f,canHandle:function(a){a=CKEDITOR.plugins.pastetools.getClipboardData(a.data,"text/html");var b=CKEDITOR.plugins.pastetools.getContentGeneratorName(a), -e=/(class="?Mso|style=["'][^"]*?\bmso\-|w:WordDocument|<o:\w+>|<\/font>)/,b=b?"microsoft"===b:e.test(a);return a&&(h||b)},handle:function(e,f){var l=e.data,c=CKEDITOR.plugins.pastetools.getClipboardData(l,"text/html"),d=CKEDITOR.plugins.pastetools.getClipboardData(l,"text/rtf"),c={dataValue:c,dataTransfer:{"text/rtf":d}};if(!1!==b.fire("pasteFromWord",c)||h){l.dontFilter=!0;if(h||!b.config.pasteFromWordPromptCleanup||confirm(b.lang.pastefromword.confirmCleanup))c.dataValue=CKEDITOR.cleanWord(c.dataValue, -b),CKEDITOR.plugins.clipboard.isCustomDataTypesSupported&&a&&CKEDITOR.pasteFilters.image&&(c.dataValue=CKEDITOR.pasteFilters.image(c.dataValue,b,d)),b.fire("afterPasteFromWord",c),l.dataValue=c.dataValue,!0===b.config.forcePasteAsPlainText?l.type="text":CKEDITOR.plugins.clipboard.isCustomCopyCutSupported||"allow-word"!==b.config.forcePasteAsPlainText||(l.type="html");h=0;f()}}})}})}(),function(){var b={canUndo:!1,async:!0,exec:function(b,f){var e=b.lang,a=CKEDITOR.tools.keystrokeToString(e.common.keyboard, -b.getCommandKeystroke(CKEDITOR.env.ie?b.commands.paste:this)),m=f&&"undefined"!==typeof f.notification?f.notification:!f||!f.from||"keystrokeHandler"===f.from&&CKEDITOR.env.ie,e=m&&"string"===typeof m?m:e.pastetext.pasteNotification.replace(/%1/,'\x3ckbd aria-label\x3d"'+a.aria+'"\x3e'+a.display+"\x3c/kbd\x3e");b.execCommand("paste",{type:"text",notification:m?e:!1})}};CKEDITOR.plugins.add("pastetext",{requires:"clipboard",init:function(h){var f=CKEDITOR.env.safari?CKEDITOR.CTRL+CKEDITOR.ALT+CKEDITOR.SHIFT+ -86:CKEDITOR.CTRL+CKEDITOR.SHIFT+86;h.addCommand("pastetext",b);h.setKeystroke(f,"pastetext");CKEDITOR.plugins.clipboard.addPasteButton(h,"PasteText",{label:h.lang.pastetext.button,command:"pastetext",toolbar:"clipboard,40"});if(h.config.forcePasteAsPlainText)h.on("beforePaste",function(b){"html"!=b.data.type&&(b.data.type="text")});h.on("pasteState",function(b){h.getCommand("pastetext").setState(b.data)})}})}(),CKEDITOR.plugins.add("removeformat",{init:function(b){b.addCommand("removeFormat",CKEDITOR.plugins.removeformat.commands.removeformat); -b.ui.addButton&&b.ui.addButton("RemoveFormat",{label:b.lang.removeformat.toolbar,command:"removeFormat",toolbar:"cleanup,10"})}}),CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(b){for(var h=b._.removeFormatRegex||(b._.removeFormatRegex=new RegExp("^(?:"+b.config.removeFormatTags.replace(/,/g,"|")+")$","i")),f=b._.removeAttributes||(b._.removeAttributes=b.config.removeFormatAttributes.split(",")),e=CKEDITOR.plugins.removeformat.filter,a=b.getSelection().getRanges(),m=a.createIterator(), -k=function(a){return a.type==CKEDITOR.NODE_ELEMENT},l;l=m.getNextRange();){l.enlarge(CKEDITOR.ENLARGE_INLINE);var c=l.createBookmark(),d=c.startNode,g=c.endNode,n=function(a){for(var c=b.elementPath(a),d=c.elements,f=1,g;(g=d[f])&&!g.equals(c.block)&&!g.equals(c.blockLimit);f++)h.test(g.getName())&&e(b,g)&&a.breakParent(g)};n(d);if(g)for(n(g),d=d.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);d&&!d.equals(g);)if(d.isReadOnly()){if(d.getPosition(g)&CKEDITOR.POSITION_CONTAINS)break;d=d.getNext(k)}else n= -d.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),"img"==d.getName()&&d.data("cke-realelement")||!e(b,d)||(h.test(d.getName())?d.remove(1):(d.removeAttributes(f),b.fire("removeFormatCleanup",d))),d=n;l.moveToBookmark(c)}b.forceNextSelectionCheck();b.getSelection().selectRanges(a)}}},filter:function(b,h){for(var f=b._.removeFormatFilters||[],e=0;e<f.length;e++)if(!1===f[e](h))return!1;return!0}},CKEDITOR.editor.prototype.addRemoveFormatFilter=function(b){this._.removeFormatFilters||(this._.removeFormatFilters= -[]);this._.removeFormatFilters.push(b)},CKEDITOR.config.removeFormatTags="b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var",CKEDITOR.config.removeFormatAttributes="class,style,lang,width,height,align,hspace,valign",function(){function b(b,e,a){var m,k;if(a="string"==typeof a?CKEDITOR.document.getById(a):new CKEDITOR.dom.element(a))if(m=b.fire("uiSpace",{space:e,html:""}).html)b.on("uiSpace",function(a){a.data.space==e&&a.cancel()},null,null,1),k=a.append(CKEDITOR.dom.element.createFromHtml(h.output({id:b.id, -name:b.name,langDir:b.lang.dir,langCode:b.langCode,space:e,spaceId:b.ui.spaceId(e),content:m}))),a.getCustomData("cke_hasshared")?k.hide():a.setCustomData("cke_hasshared",1),k.unselectable(),k.on("mousedown",function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()}),b.focusManager.add(k,1),b.on("focus",function(){for(var b=0,c,d=a.getChildren();c=d.getItem(b);b++)c.type==CKEDITOR.NODE_ELEMENT&&!c.equals(k)&&c.hasClass("cke_shared")&&c.hide();k.show()}),b.on("destroy",function(){k.remove()})} -var h=CKEDITOR.addTemplate("sharedcontainer",'\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_shared cke_detached cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko?" ":"")+'" lang\x3d"{langCode}" role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{spaceId}" class\x3d"cke_{space}" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e');CKEDITOR.plugins.add("sharedspace",{init:function(f){f.on("loaded", -function(){var e=f.config.sharedSpaces;if(e)for(var a in e)b(f,a,e[a])},null,null,9)}})}(),function(){var b={readOnly:1,preserveState:!0,editorFocus:!1,exec:function(b){this.toggleState();this.refresh(b)},refresh:function(b){if(b.document){var f=this.state!=CKEDITOR.TRISTATE_ON||b.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&!b.focusManager.hasFocus?"removeClass":"attachClass";b.editable()[f]("cke_show_blocks")}}};CKEDITOR.plugins.add("showblocks",{onLoad:function(){var b="p div pre address blockquote h1 h2 h3 h4 h5 h6".split(" "), -f,e,a,m,k=CKEDITOR.getUrl(this.path),l=!(CKEDITOR.env.ie&&9>CKEDITOR.env.version),c=l?":not([contenteditable\x3dfalse]):not(.cke_show_blocks_off)":"",d,g;for(f=e=a=m="";d=b.pop();)g=b.length?",":"",f+=".cke_show_blocks "+d+c+g,a+=".cke_show_blocks.cke_contents_ltr "+d+c+g,m+=".cke_show_blocks.cke_contents_rtl "+d+c+g,e+=".cke_show_blocks "+d+c+"{background-image:url("+CKEDITOR.getUrl(k+"images/block_"+d+".png")+")}";CKEDITOR.addCss((f+"{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px}").concat(e, -a+"{background-position:top left;padding-left:8px}",m+"{background-position:top right;padding-right:8px}"));l||CKEDITOR.addCss(".cke_show_blocks [contenteditable\x3dfalse],.cke_show_blocks .cke_show_blocks_off{border:none;padding-top:0;background-image:none}.cke_show_blocks.cke_contents_rtl [contenteditable\x3dfalse],.cke_show_blocks.cke_contents_rtl .cke_show_blocks_off{padding-right:0}.cke_show_blocks.cke_contents_ltr [contenteditable\x3dfalse],.cke_show_blocks.cke_contents_ltr .cke_show_blocks_off{padding-left:0}")}, +e.inline);h(f)}function a(a){if(!a.editable().isInline()){var b=CKEDITOR.instances,e;for(e in b){var c=b[e];"wysiwyg"!=c.mode||c.readOnly||(c=c.document.getBody(),c.setAttribute("contentEditable",!1),c.setAttribute("contentEditable",!0))}a.editable().hasFocus&&(a.toolbox.focus(),a.focus())}}CKEDITOR.plugins.add("maximize",{init:function(b){function h(){var a=d.getViewPaneSize();b.resize(a.width,a.height,null,!0)}if(b.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var m=b.lang,c=CKEDITOR.document,d=c.getWindow(), +g,n,y,v=CKEDITOR.TRISTATE_OFF;b.addCommand("maximize",{modes:{wysiwyg:!CKEDITOR.env.iOS,source:!CKEDITOR.env.iOS},readOnly:1,editorFocus:!1,exec:function(){var p=b.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}),q=b.ui.space("contents");if("wysiwyg"==b.mode){var r=b.getSelection();g=r&&r.getRanges();n=d.getScrollPosition()}else{var x=b.editable().$;g=!CKEDITOR.env.ie&&[x.selectionStart,x.selectionEnd];n=[x.scrollLeft,x.scrollTop]}if(this.state==CKEDITOR.TRISTATE_OFF){d.on("resize", +h);y=d.getScrollPosition();for(r=b.container;r=r.getParent();)r.setCustomData("maximize_saved_styles",f(r)),r.setStyle("z-index",b.config.baseFloatZIndex-5);q.setCustomData("maximize_saved_styles",f(q,!0));p.setCustomData("maximize_saved_styles",f(p,!0));q={overflow:CKEDITOR.env.webkit?"":"hidden",width:0,height:0};c.getDocumentElement().setStyles(q);!CKEDITOR.env.gecko&&c.getDocumentElement().setStyle("position","fixed");CKEDITOR.env.gecko&&CKEDITOR.env.quirks||c.getBody().setStyles(q);CKEDITOR.env.ie? +setTimeout(function(){d.$.scrollTo(0,0)},0):d.$.scrollTo(0,0);p.setStyle("position",CKEDITOR.env.gecko&&CKEDITOR.env.quirks?"fixed":"absolute");p.$.offsetLeft;p.setStyles({"z-index":b.config.baseFloatZIndex-5,left:"0px",top:"0px"});p.addClass("cke_maximized");h();q=p.getDocumentPosition();p.setStyles({left:-1*q.x+"px",top:-1*q.y+"px"});CKEDITOR.env.gecko&&a(b)}else if(this.state==CKEDITOR.TRISTATE_ON){d.removeListener("resize",h);for(var r=[q,p],t=0;t<r.length;t++)e(r[t],r[t].getCustomData("maximize_saved_styles")), +r[t].removeCustomData("maximize_saved_styles");for(r=b.container;r=r.getParent();)e(r,r.getCustomData("maximize_saved_styles")),r.removeCustomData("maximize_saved_styles");CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(y.x,y.y)},0):d.$.scrollTo(y.x,y.y);p.removeClass("cke_maximized");CKEDITOR.env.webkit&&(p.setStyle("display","inline"),setTimeout(function(){p.setStyle("display","block")},0));b.fire("resize",{outerHeight:b.container.$.offsetHeight,contentsHeight:q.$.offsetHeight,outerWidth:b.container.$.offsetWidth})}this.toggleState(); +if(r=this.uiItems[0])q=this.state==CKEDITOR.TRISTATE_OFF?m.maximize.maximize:m.maximize.minimize,r=CKEDITOR.document.getById(r._.id),r.getChild(1).setHtml(q),r.setAttribute("title",q),r.setAttribute("href",'javascript:void("'+q+'");');"wysiwyg"==b.mode?g?(CKEDITOR.env.gecko&&a(b),b.getSelection().selectRanges(g),(x=b.getSelection().getStartElement())&&x.scrollIntoView(!0)):d.$.scrollTo(n.x,n.y):(g&&(x.selectionStart=g[0],x.selectionEnd=g[1]),x.scrollLeft=n[0],x.scrollTop=n[1]);g=n=null;v=this.state; +b.fire("maximize",this.state)},canUndo:!1});b.ui.addButton&&b.ui.addButton("Maximize",{label:m.maximize.maximize,command:"maximize",toolbar:"tools,10"});b.on("mode",function(){var a=b.getCommand("maximize");a.setState(a.state==CKEDITOR.TRISTATE_DISABLED?CKEDITOR.TRISTATE_DISABLED:v)},null,null,100);if(b.config.maximize_historyIntegration)d.on(b.config.maximize_historyIntegration===CKEDITOR.HISTORY_NATIVE?"popstate":"hashchange",function(){var a=b.getCommand("maximize");a.state===CKEDITOR.TRISTATE_ON&& +a.exec()})}}});CKEDITOR.config.maximize_historyIntegration=CKEDITOR.HISTORY_NATIVE}(),function(){CKEDITOR.plugins.add("xml",{});CKEDITOR.xml=function(b){var h=null;if("object"==typeof b)h=b;else if(b=(b||"").replace(/ /g," "),"ActiveXObject"in window){try{h=new ActiveXObject("MSXML2.DOMDocument")}catch(f){try{h=new ActiveXObject("Microsoft.XmlDom")}catch(e){}}h&&(h.async=!1,h.resolveExternals=!1,h.validateOnParse=!1,h.loadXML(b))}else window.DOMParser&&(h=(new DOMParser).parseFromString(b,"text/xml")); +this.baseXml=h};CKEDITOR.xml.prototype={selectSingleNode:function(b,h){var f=this.baseXml;if(h||(h=f)){if("selectSingleNode"in h)return h.selectSingleNode(b);if(f.evaluate)return(f=f.evaluate(b,h,null,9,null))&&f.singleNodeValue||null}return null},selectNodes:function(b,h){var f=this.baseXml,e=[];if(h||(h=f)){if("selectNodes"in h)return h.selectNodes(b);if(f.evaluate&&(f=f.evaluate(b,h,null,5,null)))for(var a;a=f.iterateNext();)e.push(a)}return e},getInnerXml:function(b,h){var f=this.selectSingleNode(b, +h),e=[];if(f)for(f=f.firstChild;f;)f.xml?e.push(f.xml):window.XMLSerializer&&e.push((new XMLSerializer).serializeToString(f)),f=f.nextSibling;return e.length?e.join(""):null}}}(),function(){CKEDITOR.plugins.add("ajax",{requires:"xml"});CKEDITOR.ajax=function(){function b(){if(!CKEDITOR.env.ie||"file:"!=location.protocol)try{return new XMLHttpRequest}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(b){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}return null}function h(a, +b){if(4!=a.readyState||!(200<=a.status&&300>a.status||304==a.status||0===a.status||1223==a.status))return null;switch(b){case "text":return a.responseText;case "xml":var e=a.responseXML;return new CKEDITOR.xml(e&&e.firstChild?e:a.responseText);case "arraybuffer":return a.response;default:return null}}function f(a,e,f){var m=!!e,c=b();if(!c)return null;m&&"text"!==f&&"xml"!==f&&(c.responseType=f);c.open("GET",a,m);m&&(c.onreadystatechange=function(){4==c.readyState&&(e(h(c,f)),c=null)});c.send(null); +return m?"":h(c,f)}function e(a,e,f,m,c){var d=b();if(!d)return null;d.open("POST",a,!0);d.onreadystatechange=function(){4==d.readyState&&(m&&m(h(d,c)),d=null)};d.setRequestHeader("Content-type",f||"application/x-www-form-urlencoded; charset\x3dUTF-8");d.send(e)}return{load:function(a,b,e){return f(a,b,e||"text")},post:function(a,b,f,h){return e(a,b,f,h,"text")},loadXml:function(a,b){return f(a,b,"xml")},loadText:function(a,b){return f(a,b,"text")},loadBinary:function(a,b){return f(a,b,"arraybuffer")}}}()}(), +function(){function b(a,b){return CKEDITOR.tools.array.filter(a,function(a){return a.canHandle(b)}).sort(function(a,b){return a.priority===b.priority?0:a.priority-b.priority})}function h(a,b){var c=a.shift();c&&c.handle(b,function(){h(a,b)})}function f(a){var b=CKEDITOR.tools.array.reduce(a,function(a,b){return CKEDITOR.tools.array.isArray(b.filters)?a.concat(b.filters):a},[]);return CKEDITOR.tools.array.filter(b,function(a,d){return CKEDITOR.tools.array.indexOf(b,a)===d})}function e(b,e){var c=0, +d,g;if(!CKEDITOR.tools.array.isArray(b)||0===b.length)return!0;d=CKEDITOR.tools.array.filter(b,function(b){return-1===CKEDITOR.tools.array.indexOf(a,b)});if(0<d.length)for(g=0;g<d.length;g++)(function(b){CKEDITOR.scriptLoader.queue(b,function(g){g&&a.push(b);++c===d.length&&e()})})(d[g]);return 0===d.length}var a=[],k=CKEDITOR.tools.createClass({$:function(){this.handlers=[]},proto:{register:function(a){"number"!==typeof a.priority&&(a.priority=10);this.handlers.push(a)},addPasteListener:function(a){a.on("paste", +function(k){var c=b(this.handlers,k),d;if(0!==c.length){d=f(c);d=e(d,function(){return a.fire("paste",k.data)});if(!d)return k.cancel();h(c,k)}},this,null,3)}}});CKEDITOR.plugins.add("pastetools",{requires:["clipboard","ajax"],beforeInit:function(a){a.pasteTools=new k;a.pasteTools.addPasteListener(a)}});CKEDITOR.plugins.pastetools={filters:{},loadFilters:e,createFilter:function(a){var b=CKEDITOR.tools.array.isArray(a.rules)?a.rules:[a.rules],c=a.additionalTransforms;return function(a,e){var f=new CKEDITOR.htmlParser.basicWriter, +h=new CKEDITOR.htmlParser.filter,k;c&&(a=c(a,e));CKEDITOR.tools.array.forEach(b,function(b){h.addRules(b(a,e,h))});k=CKEDITOR.htmlParser.fragment.fromHtml(a);h.applyTo(k);k.writeHtml(f);return f.getHtml()}},getClipboardData:function(a,b){var c;return CKEDITOR.plugins.clipboard.isCustomDataTypesSupported||"text/html"===b?(c=a.dataTransfer.getData(b,!0))||"text/html"!==b?c:a.dataValue:null},getConfigValue:function(a,b){if(a&&a.config){var c=CKEDITOR.tools,d=a.config,e=c.object.keys(d),f=["pasteTools_"+ +b,"pasteFromWord_"+b,"pasteFromWord"+c.capitalize(b,!0)],f=c.array.find(f,function(a){return-1!==c.array.indexOf(e,a)});return d[f]}},getContentGeneratorName:function(a){if((a=/<meta\s+name=["']?generator["']?\s+content=["']?(\w+)/gi.exec(a))&&a.length)return a=a[1].toLowerCase(),0===a.indexOf("microsoft")?"microsoft":0===a.indexOf("libreoffice")?"libreoffice":"unknown"}};CKEDITOR.pasteFilters=CKEDITOR.plugins.pastetools.filters}(),function(){CKEDITOR.plugins.add("pastefromgdocs",{requires:"pastetools", +init:function(b){var h=CKEDITOR.plugins.getPath("pastetools"),f=this.path;b.pasteTools.register({filters:[CKEDITOR.getUrl(h+"filter/common.js"),CKEDITOR.getUrl(f+"filter/default.js")],canHandle:function(b){return/id=(\"|\')?docs\-internal\-guid\-/.test(b.data.dataValue)},handle:function(e,a){var f=e.data,h=CKEDITOR.plugins.pastetools.getClipboardData(f,"text/html");f.dontFilter=!0;f.dataValue=CKEDITOR.pasteFilters.gdocs(h,b);!0===b.config.forcePasteAsPlainText&&(f.type="text");a()}})}})}(),function(){CKEDITOR.plugins.add("pastefromlibreoffice", +{requires:"pastetools",isSupportedEnvironment:function(){var b=CKEDITOR.env.ie&&11>=CKEDITOR.env.version;return!(CKEDITOR.env.webkit&&!CKEDITOR.env.chrome)&&!b},init:function(b){if(this.isSupportedEnvironment()){var h=CKEDITOR.plugins.getPath("pastetools"),f=this.path;b.pasteTools.register({priority:100,filters:[CKEDITOR.getUrl(h+"filter/common.js"),CKEDITOR.getUrl(h+"filter/image.js"),CKEDITOR.getUrl(f+"filter/default.js")],canHandle:function(b){b=b.data;return(b=b.dataTransfer.getData("text/html", +!0)||b.dataValue)?"libreoffice"===CKEDITOR.plugins.pastetools.getContentGeneratorName(b):!1},handle:function(e,a){var f=e.data,h=f.dataValue||CKEDITOR.plugins.pastetools.getClipboardData(f,"text/html");f.dontFilter=!0;h=CKEDITOR.pasteFilters.image(h,b,CKEDITOR.plugins.pastetools.getClipboardData(f,"text/rtf"));f.dataValue=CKEDITOR.pasteFilters.libreoffice(h,b);!0===b.config.forcePasteAsPlainText&&(f.type="text");a()}})}}})}(),function(){CKEDITOR.plugins.add("pastefromword",{requires:"pastetools", +init:function(b){var h=0,f=CKEDITOR.plugins.getPath("pastetools"),e=this.path,a=void 0===b.config.pasteFromWord_inlineImages?!0:b.config.pasteFromWord_inlineImages,f=[CKEDITOR.getUrl(f+"filter/common.js"),CKEDITOR.getUrl(f+"filter/image.js"),CKEDITOR.getUrl(e+"filter/default.js")];b.addCommand("pastefromword",{canUndo:!1,async:!0,exec:function(a,b){h=1;a.execCommand("paste",{type:"html",notification:b&&"undefined"!==typeof b.notification?b.notification:!0})}});CKEDITOR.plugins.clipboard.addPasteButton(b, +"PasteFromWord",{label:b.lang.pastefromword.toolbar,command:"pastefromword",toolbar:"clipboard,50"});b.pasteTools.register({filters:b.config.pasteFromWordCleanupFile?[b.config.pasteFromWordCleanupFile]:f,canHandle:function(a){a=CKEDITOR.plugins.pastetools.getClipboardData(a.data,"text/html");var b=CKEDITOR.plugins.pastetools.getContentGeneratorName(a),e=/(class="?Mso|style=["'][^"]*?\bmso\-|w:WordDocument|<o:\w+>|<\/font>)/,b=b?"microsoft"===b:e.test(a);return a&&(h||b)},handle:function(e,f){var m= +e.data,c=CKEDITOR.plugins.pastetools.getClipboardData(m,"text/html"),d=CKEDITOR.plugins.pastetools.getClipboardData(m,"text/rtf"),c={dataValue:c,dataTransfer:{"text/rtf":d}};if(!1!==b.fire("pasteFromWord",c)||h){m.dontFilter=!0;if(h||!b.config.pasteFromWordPromptCleanup||confirm(b.lang.pastefromword.confirmCleanup))c.dataValue=CKEDITOR.cleanWord(c.dataValue,b),CKEDITOR.plugins.clipboard.isCustomDataTypesSupported&&a&&CKEDITOR.pasteFilters.image&&(c.dataValue=CKEDITOR.pasteFilters.image(c.dataValue, +b,d)),b.fire("afterPasteFromWord",c),m.dataValue=c.dataValue,!0===b.config.forcePasteAsPlainText?m.type="text":CKEDITOR.plugins.clipboard.isCustomCopyCutSupported||"allow-word"!==b.config.forcePasteAsPlainText||(m.type="html");h=0;f()}}})}})}(),function(){var b={canUndo:!1,async:!0,exec:function(b,f){var e=b.lang,a=CKEDITOR.tools.keystrokeToString(e.common.keyboard,b.getCommandKeystroke(CKEDITOR.env.ie?b.commands.paste:this)),k=f&&"undefined"!==typeof f.notification?f.notification:!f||!f.from||"keystrokeHandler"=== +f.from&&CKEDITOR.env.ie,e=k&&"string"===typeof k?k:e.pastetext.pasteNotification.replace(/%1/,'\x3ckbd aria-label\x3d"'+a.aria+'"\x3e'+a.display+"\x3c/kbd\x3e");b.execCommand("paste",{type:"text",notification:k?e:!1})}};CKEDITOR.plugins.add("pastetext",{requires:"clipboard",init:function(h){var f=CKEDITOR.env.safari?CKEDITOR.CTRL+CKEDITOR.ALT+CKEDITOR.SHIFT+86:CKEDITOR.CTRL+CKEDITOR.SHIFT+86;h.addCommand("pastetext",b);h.setKeystroke(f,"pastetext");CKEDITOR.plugins.clipboard.addPasteButton(h,"PasteText", +{label:h.lang.pastetext.button,command:"pastetext",toolbar:"clipboard,40"});if(h.config.forcePasteAsPlainText)h.on("beforePaste",function(b){"html"!=b.data.type&&(b.data.type="text")});h.on("pasteState",function(b){h.getCommand("pastetext").setState(b.data)})}})}(),CKEDITOR.plugins.add("removeformat",{init:function(b){b.addCommand("removeFormat",CKEDITOR.plugins.removeformat.commands.removeformat);b.ui.addButton&&b.ui.addButton("RemoveFormat",{label:b.lang.removeformat.toolbar,command:"removeFormat", +toolbar:"cleanup,10"})}}),CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(b){for(var h=b._.removeFormatRegex||(b._.removeFormatRegex=new RegExp("^(?:"+b.config.removeFormatTags.replace(/,/g,"|")+")$","i")),f=b._.removeAttributes||(b._.removeAttributes=b.config.removeFormatAttributes.split(",")),e=CKEDITOR.plugins.removeformat.filter,a=b.getSelection().getRanges(),k=a.createIterator(),l=function(a){return a.type==CKEDITOR.NODE_ELEMENT},m;m=k.getNextRange();){m.enlarge(CKEDITOR.ENLARGE_INLINE); +var c=m.createBookmark(),d=c.startNode,g=c.endNode,n=function(a){for(var c=b.elementPath(a),d=c.elements,g=1,f;(f=d[g])&&!f.equals(c.block)&&!f.equals(c.blockLimit);g++)h.test(f.getName())&&e(b,f)&&a.breakParent(f)};n(d);if(g)for(n(g),d=d.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);d&&!d.equals(g);)if(d.isReadOnly()){if(d.getPosition(g)&CKEDITOR.POSITION_CONTAINS)break;d=d.getNext(l)}else n=d.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),"img"==d.getName()&&d.data("cke-realelement")||!e(b,d)||(h.test(d.getName())? +d.remove(1):(d.removeAttributes(f),b.fire("removeFormatCleanup",d))),d=n;m.moveToBookmark(c)}b.forceNextSelectionCheck();b.getSelection().selectRanges(a)}}},filter:function(b,h){for(var f=b._.removeFormatFilters||[],e=0;e<f.length;e++)if(!1===f[e](h))return!1;return!0}},CKEDITOR.editor.prototype.addRemoveFormatFilter=function(b){this._.removeFormatFilters||(this._.removeFormatFilters=[]);this._.removeFormatFilters.push(b)},CKEDITOR.config.removeFormatTags="b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var", +CKEDITOR.config.removeFormatAttributes="class,style,lang,width,height,align,hspace,valign",function(){function b(b,e,a){var k,l;if(a="string"==typeof a?CKEDITOR.document.getById(a):new CKEDITOR.dom.element(a))if(k=b.fire("uiSpace",{space:e,html:""}).html)b.on("uiSpace",function(a){a.data.space==e&&a.cancel()},null,null,1),l=a.append(CKEDITOR.dom.element.createFromHtml(h.output({id:b.id,name:b.name,langDir:b.lang.dir,langCode:b.langCode,space:e,spaceId:b.ui.spaceId(e),content:k}))),a.getCustomData("cke_hasshared")? +l.hide():a.setCustomData("cke_hasshared",1),l.unselectable(),l.on("mousedown",function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()}),b.focusManager.add(l,1),b.on("focus",function(){for(var b=0,c,d=a.getChildren();c=d.getItem(b);b++)c.type==CKEDITOR.NODE_ELEMENT&&!c.equals(l)&&c.hasClass("cke_shared")&&c.hide();l.show()}),b.on("destroy",function(){l.remove()})}var h=CKEDITOR.addTemplate("sharedcontainer",'\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_shared cke_detached cke_{langDir} '+ +CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko?" ":"")+'" lang\x3d"{langCode}" role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{spaceId}" class\x3d"cke_{space}" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e');CKEDITOR.plugins.add("sharedspace",{init:function(f){f.on("loaded",function(){var e=f.config.sharedSpaces;if(e)for(var a in e)b(f,a,e[a])},null,null,9)}})}(),function(){var b={readOnly:1,preserveState:!0,editorFocus:!1, +exec:function(b){this.toggleState();this.refresh(b)},refresh:function(b){if(b.document){var f=this.state!=CKEDITOR.TRISTATE_ON||b.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&!b.focusManager.hasFocus?"removeClass":"attachClass";b.editable()[f]("cke_show_blocks")}}};CKEDITOR.plugins.add("showblocks",{onLoad:function(){var b="p div pre address blockquote h1 h2 h3 h4 h5 h6".split(" "),f,e,a,k,l=CKEDITOR.getUrl(this.path),m=!(CKEDITOR.env.ie&&9>CKEDITOR.env.version),c=m?":not([contenteditable\x3dfalse]):not(.cke_show_blocks_off)": +"",d,g;for(f=e=a=k="";d=b.pop();)g=b.length?",":"",f+=".cke_show_blocks "+d+c+g,a+=".cke_show_blocks.cke_contents_ltr "+d+c+g,k+=".cke_show_blocks.cke_contents_rtl "+d+c+g,e+=".cke_show_blocks "+d+c+"{background-image:url("+CKEDITOR.getUrl(l+"images/block_"+d+".png")+")}";CKEDITOR.addCss((f+"{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px}").concat(e,a+"{background-position:top left;padding-left:8px}",k+"{background-position:top right;padding-right:8px}"));m||CKEDITOR.addCss(".cke_show_blocks [contenteditable\x3dfalse],.cke_show_blocks .cke_show_blocks_off{border:none;padding-top:0;background-image:none}.cke_show_blocks.cke_contents_rtl [contenteditable\x3dfalse],.cke_show_blocks.cke_contents_rtl .cke_show_blocks_off{padding-right:0}.cke_show_blocks.cke_contents_ltr [contenteditable\x3dfalse],.cke_show_blocks.cke_contents_ltr .cke_show_blocks_off{padding-left:0}")}, init:function(h){function f(){e.refresh(h)}if(!h.blockless){var e=h.addCommand("showblocks",b);e.canUndo=!1;h.config.startupOutlineBlocks&&e.setState(CKEDITOR.TRISTATE_ON);h.ui.addButton&&h.ui.addButton("ShowBlocks",{label:h.lang.showblocks.toolbar,command:"showblocks",toolbar:"tools,20"});h.on("mode",function(){e.state!=CKEDITOR.TRISTATE_DISABLED&&e.refresh(h)});h.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&(h.on("focus",f),h.on("blur",f));h.on("contentDom",function(){e.state!=CKEDITOR.TRISTATE_DISABLED&& e.refresh(h)})}}})}(),function(){var b={preserveState:!0,editorFocus:!1,readOnly:1,exec:function(b){this.toggleState();this.refresh(b)},refresh:function(b){if(b.document){var f=this.state==CKEDITOR.TRISTATE_ON?"attachClass":"removeClass";b.editable()[f]("cke_show_borders")}}};CKEDITOR.plugins.add("showborders",{modes:{wysiwyg:1},onLoad:function(){var b;b=(CKEDITOR.env.ie6Compat?[".%1 table.%2,",".%1 table.%2 td, .%1 table.%2 th","{","border : #d3d3d3 1px dotted","}"]:".%1 table.%2,;.%1 table.%2 \x3e tr \x3e td, .%1 table.%2 \x3e tr \x3e th,;.%1 table.%2 \x3e tbody \x3e tr \x3e td, .%1 table.%2 \x3e tbody \x3e tr \x3e th,;.%1 table.%2 \x3e thead \x3e tr \x3e td, .%1 table.%2 \x3e thead \x3e tr \x3e th,;.%1 table.%2 \x3e tfoot \x3e tr \x3e td, .%1 table.%2 \x3e tfoot \x3e tr \x3e th;{;border : #d3d3d3 1px dotted;}".split(";")).join("").replace(/%2/g, "cke_show_border").replace(/%1/g,"cke_show_borders ");CKEDITOR.addCss(b)},init:function(h){var f=h.addCommand("showborders",b);f.canUndo=!1;!1!==h.config.startupShowBorders&&f.setState(CKEDITOR.TRISTATE_ON);h.on("mode",function(){f.state!=CKEDITOR.TRISTATE_DISABLED&&f.refresh(h)},null,null,100);h.on("contentDom",function(){f.state!=CKEDITOR.TRISTATE_DISABLED&&f.refresh(h)});h.on("removeFormatCleanup",function(b){b=b.data;h.getCommand("showborders").state==CKEDITOR.TRISTATE_ON&&b.is("table")&&(!b.hasAttribute("border")|| @@ -1121,95 +1133,97 @@ this.remove()}}})}(),CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiw b.ui.addButton&&b.ui.addButton("Sourcedialog",{label:b.lang.sourcedialog.toolbar,command:"sourcedialog",toolbar:"mode,10"})}}),CKEDITOR.plugins.add("specialchar",{availableLangs:{af:1,ar:1,az:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,"de-ch":1,el:1,en:1,"en-au":1,"en-ca":1,"en-gb":1,eo:1,es:1,"es-mx":1,et:1,eu:1,fa:1,fi:1,fr:1,"fr-ca":1,gl:1,he:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,"pt-br":1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,"sr-latn":1,sv:1,th:1,tr:1,tt:1,ug:1, uk:1,vi:1,zh:1,"zh-cn":1},requires:"dialog",init:function(b){var h=this;CKEDITOR.dialog.add("specialchar",this.path+"dialogs/specialchar.js");b.addCommand("specialchar",{exec:function(){var f=b.langCode,f=h.availableLangs[f]?f:h.availableLangs[f.replace(/-.*/,"")]?f.replace(/-.*/,""):"en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(h.path+"dialogs/lang/"+f+".js"),function(){CKEDITOR.tools.extend(b.lang.specialchar,h.langEntries[f]);b.openDialog("specialchar")})},modes:{wysiwyg:1},canUndo:!1});b.ui.addButton&& b.ui.addButton("SpecialChar",{label:b.lang.specialchar.toolbar,command:"specialchar",toolbar:"insert,50"})}}),CKEDITOR.config.specialChars="! \x26quot; # $ % \x26amp; ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; \x26lt; \x3d \x26gt; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x26euro; \x26lsquo; \x26rsquo; \x26ldquo; \x26rdquo; \x26ndash; \x26mdash; \x26iexcl; \x26cent; \x26pound; \x26curren; \x26yen; \x26brvbar; \x26sect; \x26uml; \x26copy; \x26ordf; \x26laquo; \x26not; \x26reg; \x26macr; \x26deg; \x26sup2; \x26sup3; \x26acute; \x26micro; \x26para; \x26middot; \x26cedil; \x26sup1; \x26ordm; \x26raquo; \x26frac14; \x26frac12; \x26frac34; \x26iquest; \x26Agrave; \x26Aacute; \x26Acirc; \x26Atilde; \x26Auml; \x26Aring; \x26AElig; \x26Ccedil; \x26Egrave; \x26Eacute; \x26Ecirc; \x26Euml; \x26Igrave; \x26Iacute; \x26Icirc; \x26Iuml; \x26ETH; \x26Ntilde; \x26Ograve; \x26Oacute; \x26Ocirc; \x26Otilde; \x26Ouml; \x26times; \x26Oslash; \x26Ugrave; \x26Uacute; \x26Ucirc; \x26Uuml; \x26Yacute; \x26THORN; \x26szlig; \x26agrave; \x26aacute; \x26acirc; \x26atilde; \x26auml; \x26aring; \x26aelig; \x26ccedil; \x26egrave; \x26eacute; \x26ecirc; \x26euml; \x26igrave; \x26iacute; \x26icirc; \x26iuml; \x26eth; \x26ntilde; \x26ograve; \x26oacute; \x26ocirc; \x26otilde; \x26ouml; \x26divide; \x26oslash; \x26ugrave; \x26uacute; \x26ucirc; \x26uuml; \x26yacute; \x26thorn; \x26yuml; \x26OElig; \x26oelig; \x26#372; \x26#374 \x26#373 \x26#375; \x26sbquo; \x26#8219; \x26bdquo; \x26hellip; \x26trade; \x26#9658; \x26bull; \x26rarr; \x26rArr; \x26hArr; \x26diams; \x26asymp;".split(" "), -function(){CKEDITOR.plugins.add("stylescombo",{requires:"richcombo",init:function(b){var h=b.config,f=b.lang.stylescombo,e={},a=[],m=[];b.on("stylesSet",function(f){if(f=f.data.styles){for(var l,c,d,g=0,n=f.length;g<n;g++)(l=f[g],b.blockless&&l.element in CKEDITOR.dtd.$block||"string"==typeof l.type&&!CKEDITOR.style.customHandlers[l.type]||(c=l.name,l=new CKEDITOR.style(l),b.filter.customConfig&&!b.filter.check(l)))||(l._name=c,l._.enterMode=h.enterMode,l._.type=d=l.assignedTo||l.type,l._.weight= -g+1E3*(d==CKEDITOR.STYLE_OBJECT?1:d==CKEDITOR.STYLE_BLOCK?2:3),e[c]=l,a.push(l),m.push(l));a.sort(function(a,b){return a._.weight-b._.weight})}});b.on("stylesRemove",function(a){a=a.data&&a.data.type;var f=void 0===a,c;for(c in e){var d=e[c];(f||d.type===a)&&b.removeStyle(d)}});b.ui.addRichCombo("Styles",{label:f.label,title:f.panelTitle,toolbar:"styles,10",allowedContent:m,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(h.contentsCss),multiSelect:!0,attributes:{"aria-label":f.panelTitle}},init:function(){var b, +function(){CKEDITOR.plugins.add("stylescombo",{requires:"richcombo",init:function(b){var h=b.config,f=b.lang.stylescombo,e={},a=[],k=[];b.on("stylesSet",function(f){if(f=f.data.styles){for(var m,c,d,g=0,n=f.length;g<n;g++)(m=f[g],b.blockless&&m.element in CKEDITOR.dtd.$block||"string"==typeof m.type&&!CKEDITOR.style.customHandlers[m.type]||(c=m.name,m=new CKEDITOR.style(m),b.filter.customConfig&&!b.filter.check(m)))||(m._name=c,m._.enterMode=h.enterMode,m._.type=d=m.assignedTo||m.type,m._.weight= +g+1E3*(d==CKEDITOR.STYLE_OBJECT?1:d==CKEDITOR.STYLE_BLOCK?2:3),e[c]=m,a.push(m),k.push(m));a.sort(function(a,b){return a._.weight-b._.weight})}});b.on("stylesRemove",function(a){a=a.data&&a.data.type;var f=void 0===a,c;for(c in e){var d=e[c];(f||d.type===a)&&b.removeStyle(d)}});b.ui.addRichCombo("Styles",{label:f.label,title:f.panelTitle,toolbar:"styles,10",allowedContent:k,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(h.contentsCss),multiSelect:!0,attributes:{"aria-label":f.panelTitle}},init:function(){var b, e,c,d,g,h;g=0;for(h=a.length;g<h;g++)b=a[g],e=b._name,d=b._.type,d!=c&&(this.startGroup(f["panelTitle"+String(d)]),c=d),this.add(e,b.type==CKEDITOR.STYLE_OBJECT?e:b.buildPreview(),e);this.commit()},onClick:function(a){b.focus();b.fire("saveSnapshot");a=e[a];var f=b.elementPath();if(a.group&&a.removeStylesFromSameGroup(b))b.applyStyle(a);else b[a.checkActive(f,b)?"removeStyle":"applyStyle"](a);b.fire("saveSnapshot")},onRender:function(){b.on("selectionChange",function(a){var f=this.getValue();a=a.data.path.elements; for(var c=0,d=a.length,g;c<d;c++){g=a[c];for(var h in e)if(e[h].checkElementRemovable(g,!0,b)){h!=f&&this.setValue(h);return}}this.setValue("")},this)},onOpen:function(){var a=b.getSelection(),a=a.getSelectedElement()||a.getStartElement()||b.editable(),a=b.elementPath(a),h=[0,0,0,0];this.showAll();this.unmarkAll();for(var c in e){var d=e[c],g=d._.type;d.checkApplicable(a,b,b.activeFilter)?h[g]++:this.hideItem(c);d.checkActive(a,b)&&this.mark(c)}h[CKEDITOR.STYLE_BLOCK]||this.hideGroup(f["panelTitle"+ String(CKEDITOR.STYLE_BLOCK)]);h[CKEDITOR.STYLE_INLINE]||this.hideGroup(f["panelTitle"+String(CKEDITOR.STYLE_INLINE)]);h[CKEDITOR.STYLE_OBJECT]||this.hideGroup(f["panelTitle"+String(CKEDITOR.STYLE_OBJECT)])},refresh:function(){var a=b.elementPath();if(a){for(var f in e)if(e[f].checkApplicable(a,b,b.activeFilter))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}},reset:function(){e={};a=[]}})}})}(),function(){function b(a){return{editorFocus:!1,canUndo:!1,modes:{wysiwyg:1},exec:function(b){if(b.editable().hasFocus){var e= b.getSelection(),f;if(f=(new CKEDITOR.dom.elementPath(e.getCommonAncestor(),e.root)).contains({td:1,th:1},1)){var e=b.createRange(),c=CKEDITOR.tools.tryThese(function(){var b=f.getParent().$.cells[f.$.cellIndex+(a?-1:1)];b.parentNode.parentNode;return b},function(){var b=f.getParent(),b=b.getAscendant("table").$.rows[b.$.rowIndex+(a?-1:1)];return b.cells[a?b.cells.length-1:0]});if(c||a)if(c)c=new CKEDITOR.dom.element(c),e.moveToElementEditStart(c),e.checkStartOfBlock()&&e.checkEndOfBlock()||e.selectNodeContents(c); -else return!0;else{for(var d=f.getAscendant("table").$,c=f.getParent().$.cells,d=new CKEDITOR.dom.element(d.insertRow(-1),b.document),g=0,h=c.length;g<h;g++)d.append((new CKEDITOR.dom.element(c[g],b.document)).clone(!1,!1)).appendBogus();e.moveToElementEditStart(d)}e.select(!0);return!0}}return!1}}}var h={editorFocus:!1,modes:{wysiwyg:1,source:1}},f={exec:function(a){a.container.focusNext(!0,a.tabIndex)}},e={exec:function(a){a.container.focusPrevious(!0,a.tabIndex)}};CKEDITOR.plugins.add("tab",{init:function(a){for(var m= -!1!==a.config.enableTabKeyTools,k=a.config.tabSpaces||0,l="";k--;)l+=" ";if(l)a.on("key",function(b){9==b.data.keyCode&&(a.insertText(l),b.cancel())});if(m)a.on("key",function(b){(9==b.data.keyCode&&a.execCommand("selectNextCell")||b.data.keyCode==CKEDITOR.SHIFT+9&&a.execCommand("selectPreviousCell"))&&b.cancel()});a.addCommand("blur",CKEDITOR.tools.extend(f,h));a.addCommand("blurBack",CKEDITOR.tools.extend(e,h));a.addCommand("selectNextCell",b());a.addCommand("selectPreviousCell",b(!0))}})}(),CKEDITOR.dom.element.prototype.focusNext= -function(b,h){var f=void 0===h?this.getTabIndex():h,e,a,m,k,l,c;if(0>=f)for(l=this.getNextSourceNode(b,CKEDITOR.NODE_ELEMENT);l;){if(l.isVisible()&&0===l.getTabIndex()){m=l;break}l=l.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(l=this.getDocument().getBody().getFirst();l=l.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!e)if(!a&&l.equals(this)){if(a=!0,b){if(!(l=l.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;e=1}}else a&&!this.contains(l)&&(e=1);if(l.isVisible()&&!(0>(c=l.getTabIndex()))){if(e&& -c==f){m=l;break}c>f&&(!m||!k||c<k)?(m=l,k=c):m||0!==c||(m=l,k=c)}}m&&m.focus()},CKEDITOR.dom.element.prototype.focusPrevious=function(b,h){for(var f=void 0===h?this.getTabIndex():h,e,a,m,k=0,l,c=this.getDocument().getBody().getLast();c=c.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!e)if(!a&&c.equals(this)){if(a=!0,b){if(!(c=c.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;e=1}}else a&&!this.contains(c)&&(e=1);if(c.isVisible()&&!(0>(l=c.getTabIndex())))if(0>=f){if(e&&0===l){m=c;break}l> -k&&(m=c,k=l)}else{if(e&&l==f){m=c;break}l<f&&(!m||l>k)&&(m=c,k=l)}}m&&m.focus()},CKEDITOR.plugins.add("table",{requires:"dialog",init:function(b){function h(b){return CKEDITOR.tools.extend(b||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains("table",1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}if(!b.blockless){var f=b.lang.table;b.addCommand("table",new CKEDITOR.dialogCommand("table",{context:"table",allowedContent:"table{width,height,border-collapse}[align,border,cellpadding,cellspacing,summary];caption tbody thead tfoot;th td tr[scope];td{border*,background-color,vertical-align,width,height}[colspan,rowspan];"+ +else return!0;else{for(var d=f.getAscendant("table").$,c=f.getParent().$.cells,d=new CKEDITOR.dom.element(d.insertRow(-1),b.document),g=0,h=c.length;g<h;g++)d.append((new CKEDITOR.dom.element(c[g],b.document)).clone(!1,!1)).appendBogus();e.moveToElementEditStart(d)}e.select(!0);return!0}}return!1}}}var h={editorFocus:!1,modes:{wysiwyg:1,source:1}},f={exec:function(a){a.container.focusNext(!0,a.tabIndex)}},e={exec:function(a){a.container.focusPrevious(!0,a.tabIndex)}};CKEDITOR.plugins.add("tab",{init:function(a){for(var k= +!1!==a.config.enableTabKeyTools,l=a.config.tabSpaces||0,m="";l--;)m+=" ";if(m)a.on("key",function(b){9==b.data.keyCode&&(a.insertText(m),b.cancel())});if(k)a.on("key",function(b){(9==b.data.keyCode&&a.execCommand("selectNextCell")||b.data.keyCode==CKEDITOR.SHIFT+9&&a.execCommand("selectPreviousCell"))&&b.cancel()});a.addCommand("blur",CKEDITOR.tools.extend(f,h));a.addCommand("blurBack",CKEDITOR.tools.extend(e,h));a.addCommand("selectNextCell",b());a.addCommand("selectPreviousCell",b(!0))}})}(),CKEDITOR.dom.element.prototype.focusNext= +function(b,h){var f=void 0===h?this.getTabIndex():h,e,a,k,l,m,c;if(0>=f)for(m=this.getNextSourceNode(b,CKEDITOR.NODE_ELEMENT);m;){if(m.isVisible()&&0===m.getTabIndex()){k=m;break}m=m.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(m=this.getDocument().getBody().getFirst();m=m.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!e)if(!a&&m.equals(this)){if(a=!0,b){if(!(m=m.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;e=1}}else a&&!this.contains(m)&&(e=1);if(m.isVisible()&&!(0>(c=m.getTabIndex()))){if(e&& +c==f){k=m;break}c>f&&(!k||!l||c<l)?(k=m,l=c):k||0!==c||(k=m,l=c)}}k&&k.focus()},CKEDITOR.dom.element.prototype.focusPrevious=function(b,h){for(var f=void 0===h?this.getTabIndex():h,e,a,k,l=0,m,c=this.getDocument().getBody().getLast();c=c.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!e)if(!a&&c.equals(this)){if(a=!0,b){if(!(c=c.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;e=1}}else a&&!this.contains(c)&&(e=1);if(c.isVisible()&&!(0>(m=c.getTabIndex())))if(0>=f){if(e&&0===m){k=c;break}m> +l&&(k=c,l=m)}else{if(e&&m==f){k=c;break}m<f&&(!k||m>l)&&(k=c,l=m)}}k&&k.focus()},CKEDITOR.plugins.add("table",{requires:"dialog",init:function(b){function h(b){return CKEDITOR.tools.extend(b||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains("table",1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}if(!b.blockless){var f=b.lang.table;b.addCommand("table",new CKEDITOR.dialogCommand("table",{context:"table",allowedContent:"table{width,height,border-collapse}[align,border,cellpadding,cellspacing,summary];caption tbody thead tfoot;th td tr[scope];td{border*,background-color,vertical-align,width,height}[colspan,rowspan];"+ (b.plugins.dialogadvtab?"table"+b.plugins.dialogadvtab.allowedContent():""),requiredContent:"table",contentTransformations:[["table{width}: sizeToStyle","table[width]: sizeToAttribute"],["td: splitBorderShorthand"],[{element:"table",right:function(b){if(b.styles){var a;if(b.styles.border)a=CKEDITOR.tools.style.parse.border(b.styles.border);else if(CKEDITOR.env.ie&&8===CKEDITOR.env.version){var f=b.styles;f["border-left"]&&f["border-left"]===f["border-right"]&&f["border-right"]===f["border-top"]&& f["border-top"]===f["border-bottom"]&&(a=CKEDITOR.tools.style.parse.border(f["border-top"]))}a&&a.style&&"solid"===a.style&&a.width&&0!==parseFloat(a.width)&&(b.attributes.border=1);"collapse"==b.styles["border-collapse"]&&(b.attributes.cellspacing=0)}}}]]}));b.addCommand("tableProperties",new CKEDITOR.dialogCommand("tableProperties",h()));b.addCommand("tableDelete",h({exec:function(b){var a=b.elementPath().contains("table",1);if(a){var f=a.getParent(),h=b.editable();1!=f.getChildCount()||f.is("td", "th")||f.equals(h)||(a=f);b=b.createRange();b.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);a.remove();b.select()}}}));b.ui.addButton&&b.ui.addButton("Table",{label:f.toolbar,command:"table",toolbar:"insert,30"});CKEDITOR.dialog.add("table",this.path+"dialogs/table.js");CKEDITOR.dialog.add("tableProperties",this.path+"dialogs/table.js");b.addMenuItems&&b.addMenuItems({table:{label:f.menu,command:"tableProperties",group:"table",order:5},tabledelete:{label:f.deleteTable,command:"tableDelete",group:"table", -order:1}});b.on("doubleclick",function(b){b.data.element.is("table")&&(b.data.dialog="tableProperties")});b.contextMenu&&b.contextMenu.addListener(function(){return{tabledelete:CKEDITOR.TRISTATE_OFF,table:CKEDITOR.TRISTATE_OFF}})}}}),function(){function b(a,b){function c(a){return b?b.contains(a)&&a.getAscendant("table",!0).equals(b):!0}function d(a){var b=/^(?:td|th)$/;0<e.length||a.type!=CKEDITOR.NODE_ELEMENT||!b.test(a.getName())||a.getCustomData("selected_cell")||(CKEDITOR.dom.element.setMarker(f, -a,"selected_cell",!0),e.push(a))}var e=[],f={};if(!a)return e;for(var g=a.getRanges(),h=0;h<g.length;h++){var k=g[h];if(k.collapsed)(k=k.getCommonAncestor().getAscendant({td:1,th:1},!0))&&c(k)&&e.push(k);else{var k=new CKEDITOR.dom.walker(k),l;for(k.guard=d;l=k.next();)l.type==CKEDITOR.NODE_ELEMENT&&l.is(CKEDITOR.dtd.table)||(l=l.getAscendant({td:1,th:1},!0))&&!l.getCustomData("selected_cell")&&c(l)&&(CKEDITOR.dom.element.setMarker(f,l,"selected_cell",!0),e.push(l))}}CKEDITOR.dom.element.clearAllMarkers(f); -return e}function h(a,c){for(var d=p(a)?a:b(a),e=d[0],f=e.getAscendant("table"),e=e.getDocument(),g=d[0].getParent(),h=g.$.rowIndex,d=d[d.length-1],k=d.getParent().$.rowIndex+d.$.rowSpan-1,d=new CKEDITOR.dom.element(f.$.rows[k]),h=c?h:k,g=c?g:d,d=CKEDITOR.tools.buildTableMap(f),f=d[h],h=c?d[h-1]:d[h+1],d=d[0].length,e=e.createElement("tr"),k=0;f[k]&&k<d;k++){var l;1<f[k].rowSpan&&h&&f[k]==h[k]?(l=f[k],l.rowSpan+=1):(l=(new CKEDITOR.dom.element(f[k])).clone(),l.removeAttribute("rowSpan"),l.appendBogus(), -e.append(l),l=l.$);k+=l.colSpan-1}c?e.insertBefore(g):e.insertAfter(g);return e}function f(a){if(a instanceof CKEDITOR.dom.selection){var c=a.getRanges(),d=b(a),e=d[0].getAscendant("table"),g=CKEDITOR.tools.buildTableMap(e),h=d[0].getParent().$.rowIndex,d=d[d.length-1],k=d.getParent().$.rowIndex+d.$.rowSpan-1,d=[];a.reset();for(a=h;a<=k;a++){for(var l=g[a],m=new CKEDITOR.dom.element(e.$.rows[a]),n=0;n<l.length;n++){var p=new CKEDITOR.dom.element(l[n]),w=p.getParent().$.rowIndex;1==p.$.rowSpan?p.remove(): -(--p.$.rowSpan,w==a&&(w=g[a+1],w[n-1]?p.insertAfter(new CKEDITOR.dom.element(w[n-1])):(new CKEDITOR.dom.element(e.$.rows[a+1])).append(p,1)));n+=p.$.colSpan-1}d.push(m)}g=e.$.rows;c[0].moveToPosition(e,CKEDITOR.POSITION_BEFORE_START);h=new CKEDITOR.dom.element(g[k+1]||(0<h?g[h-1]:null)||e.$.parentNode);for(a=d.length;0<=a;a--)f(d[a]);return e.$.parentNode?h:(c[0].select(),null)}a instanceof CKEDITOR.dom.element&&(e=a.getAscendant("table"),1==e.$.rows.length?e.remove():a.remove());return null}function e(a){for(var b= -a.getParent().$.cells,c=0,d=0;d<b.length;d++){var e=b[d],c=c+e.colSpan;if(e==a.$)break}return c-1}function a(a,b){for(var c=b?Infinity:0,d=0;d<a.length;d++){var f=e(a[d]);if(b?f<c:f>c)c=f}return c}function m(c,d){for(var e=p(c)?c:b(c),f=e[0].getAscendant("table"),g=a(e,1),e=a(e),h=d?g:e,k=CKEDITOR.tools.buildTableMap(f),f=[],g=[],e=[],l=k.length,m=0;m<l;m++){var n=d?k[m][h-1]:k[m][h+1];f.push(k[m][h]);g.push(n)}for(m=0;m<l;m++)f[m]&&(1<f[m].colSpan&&g[m]==f[m]?(k=f[m],k.colSpan+=1):(h=new CKEDITOR.dom.element(f[m]), -k=h.clone(),k.removeAttribute("colSpan"),k.appendBogus(),k[d?"insertBefore":"insertAfter"].call(k,h),e.push(k),k=k.$),m+=k.rowSpan-1);return e}function k(a){function c(a){var b=a.getRanges(),d,e;if(1!==b.length)return a;b=b[0];if(b.collapsed||0!==b.endOffset)return a;d=b.endContainer;e=d.getName().toLowerCase();if("td"!==e&&"th"!==e)return a;for((e=d.getPrevious())||(e=d.getParent().getPrevious().getLast());e.type!==CKEDITOR.NODE_TEXT&&"br"!==e.getName().toLowerCase();)if(e=e.getLast(),!e)return a; -b.setEndAt(e,CKEDITOR.POSITION_BEFORE_END);return b.select()}CKEDITOR.env.webkit&&!a.isFake&&(a=c(a));var d=a.getRanges(),e=b(a),f=e[0],g=e[e.length-1],e=f.getAscendant("table"),h=CKEDITOR.tools.buildTableMap(e),k,l,m=[];a.reset();var n=0;for(a=h.length;n<a;n++)for(var p=0,w=h[n].length;p<w;p++)void 0===k&&h[n][p]==f.$&&(k=p),h[n][p]==g.$&&(l=p);for(n=k;n<=l;n++)for(p=0;p<h.length;p++)g=h[p],f=new CKEDITOR.dom.element(e.$.rows[p]),g=new CKEDITOR.dom.element(g[n]),g.$&&(1==g.$.colSpan?g.remove():--g.$.colSpan, -p+=g.$.rowSpan-1,f.$.cells.length||m.push(f));k=h[0].length-1>l?new CKEDITOR.dom.element(h[0][l+1]):k&&-1!==h[0][k-1].cellIndex?new CKEDITOR.dom.element(h[0][k-1]):new CKEDITOR.dom.element(e.$.parentNode);m.length==a&&(d[0].moveToPosition(e,CKEDITOR.POSITION_AFTER_END),d[0].select(),e.remove());return k}function l(a,b){var c=a.getStartElement().getAscendant({td:1,th:1},!0);if(c){var d=c.clone();d.appendBogus();b?d.insertBefore(c):d.insertAfter(c)}}function c(a){if(a instanceof CKEDITOR.dom.selection){var e= -a.getRanges(),f=b(a),g=f[0]&&f[0].getAscendant("table"),h;a:{var k=0;h=f.length-1;for(var l={},m,n;m=f[k++];)CKEDITOR.dom.element.setMarker(l,m,"delete_cell",!0);for(k=0;m=f[k++];)if((n=m.getPrevious())&&!n.getCustomData("delete_cell")||(n=m.getNext())&&!n.getCustomData("delete_cell")){CKEDITOR.dom.element.clearAllMarkers(l);h=n;break a}CKEDITOR.dom.element.clearAllMarkers(l);k=f[0].getParent();(k=k.getPrevious())?h=k.getLast():(k=f[h].getParent(),h=(k=k.getNext())?k.getChild(0):null)}a.reset();for(a= -f.length-1;0<=a;a--)c(f[a]);h?d(h,!0):g&&(e[0].moveToPosition(g,CKEDITOR.POSITION_BEFORE_START),e[0].select(),g.remove())}else a instanceof CKEDITOR.dom.element&&(e=a.getParent(),1==e.getChildCount()?e.remove():a.remove())}function d(a,b){var c=a.getDocument(),d=CKEDITOR.document;CKEDITOR.env.ie&&10==CKEDITOR.env.version&&(d.focus(),c.focus());c=new CKEDITOR.dom.range(c);c["moveToElementEdit"+(b?"End":"Start")](a)||(c.selectNodeContents(a),c.collapse(b?!1:!0));c.select(!0)}function g(a,b,c){a=a[b]; -if("undefined"==typeof c)return a;for(b=0;a&&b<a.length;b++){if(c.is&&a[b]==c.$)return b;if(b==c)return new CKEDITOR.dom.element(a[b])}return c.is?-1:null}function n(a,c,d){var e=b(a),f;if((c?1!=e.length:2>e.length)||(f=a.getCommonAncestor())&&f.type==CKEDITOR.NODE_ELEMENT&&f.is("table"))return!1;a=e[0];f=a.getAscendant("table");var h=CKEDITOR.tools.buildTableMap(f),k=h.length,l=h[0].length,m=a.getParent().$.rowIndex,n=g(h,m,a),p;if(c){var w;try{var y=parseInt(a.getAttribute("rowspan"),10)||1;p=parseInt(a.getAttribute("colspan"), -10)||1;w=h["up"==c?m-y:"down"==c?m+y:m]["left"==c?n-p:"right"==c?n+p:n]}catch(L){return!1}if(!w||a.$==w)return!1;e["up"==c||"left"==c?"unshift":"push"](new CKEDITOR.dom.element(w))}c=a.getDocument();var C=m,y=w=0,O=!d&&new CKEDITOR.dom.documentFragment(c),I=0;for(c=0;c<e.length;c++){p=e[c];var M=p.getParent(),Q=p.getFirst(),H=p.$.colSpan,G=p.$.rowSpan,M=M.$.rowIndex,P=g(h,M,p),I=I+H*G,y=Math.max(y,P-n+H);w=Math.max(w,M-m+G);d||(H=p,(G=H.getBogus())&&G.remove(),H.trim(),p.getChildren().count()&&(M== -C||!Q||Q.isBlockBoundary&&Q.isBlockBoundary({br:1})||(C=O.getLast(CKEDITOR.dom.walker.whitespaces(!0)),!C||C.is&&C.is("br")||O.append("br")),p.moveChildren(O)),c?p.remove():p.setHtml(""));C=M}if(d)return w*y==I;O.moveChildren(a);a.appendBogus();y>=l?a.removeAttribute("rowSpan"):a.$.rowSpan=w;w>=k?a.removeAttribute("colSpan"):a.$.colSpan=y;d=new CKEDITOR.dom.nodeList(f.$.rows);e=d.count();for(c=e-1;0<=c;c--)f=d.getItem(c),f.$.cells.length||(f.remove(),e++);return a}function y(a,c){var d=b(a);if(1< +order:1}});b.on("doubleclick",function(b){b.data.element.is("table")&&(b.data.dialog="tableProperties")});b.contextMenu&&b.contextMenu.addListener(function(){return{tabledelete:CKEDITOR.TRISTATE_OFF,table:CKEDITOR.TRISTATE_OFF}})}}}),function(){function b(a,b){function c(a){return b?b.contains(a)&&a.getAscendant("table",!0).equals(b):!0}function d(a){var b=/^(?:td|th)$/;0<e.length||a.type!=CKEDITOR.NODE_ELEMENT||!b.test(a.getName())||a.getCustomData("selected_cell")||(CKEDITOR.dom.element.setMarker(g, +a,"selected_cell",!0),e.push(a))}var e=[],g={};if(!a)return e;for(var f=a.getRanges(),h=0;h<f.length;h++){var k=f[h];if(k.collapsed)(k=k.getCommonAncestor().getAscendant({td:1,th:1},!0))&&c(k)&&e.push(k);else{var k=new CKEDITOR.dom.walker(k),l;for(k.guard=d;l=k.next();)l.type==CKEDITOR.NODE_ELEMENT&&l.is(CKEDITOR.dtd.table)||(l=l.getAscendant({td:1,th:1},!0))&&!l.getCustomData("selected_cell")&&c(l)&&(CKEDITOR.dom.element.setMarker(g,l,"selected_cell",!0),e.push(l))}}CKEDITOR.dom.element.clearAllMarkers(g); +return e}function h(a,c){for(var d=p(a)?a:b(a),e=d[0],g=e.getAscendant("table"),e=e.getDocument(),f=d[0].getParent(),h=f.$.rowIndex,d=d[d.length-1],k=d.getParent().$.rowIndex+d.$.rowSpan-1,d=new CKEDITOR.dom.element(g.$.rows[k]),h=c?h:k,f=c?f:d,d=CKEDITOR.tools.buildTableMap(g),g=d[h],h=c?d[h-1]:d[h+1],d=d[0].length,e=e.createElement("tr"),k=0;g[k]&&k<d;k++){var l;1<g[k].rowSpan&&h&&g[k]==h[k]?(l=g[k],l.rowSpan+=1):(l=(new CKEDITOR.dom.element(g[k])).clone(),l.removeAttribute("rowSpan"),l.appendBogus(), +e.append(l),l=l.$);k+=l.colSpan-1}c?e.insertBefore(f):e.insertAfter(f);return e}function f(a){if(a instanceof CKEDITOR.dom.selection){var c=a.getRanges(),d=b(a),e=d[0].getAscendant("table"),g=CKEDITOR.tools.buildTableMap(e),h=d[0].getParent().$.rowIndex,d=d[d.length-1],k=d.getParent().$.rowIndex+d.$.rowSpan-1,d=[];a.reset();for(a=h;a<=k;a++){for(var l=g[a],m=new CKEDITOR.dom.element(e.$.rows[a]),n=0;n<l.length;n++){var p=new CKEDITOR.dom.element(l[n]),v=p.getParent().$.rowIndex;1==p.$.rowSpan?p.remove(): +(--p.$.rowSpan,v==a&&(v=g[a+1],v[n-1]?p.insertAfter(new CKEDITOR.dom.element(v[n-1])):(new CKEDITOR.dom.element(e.$.rows[a+1])).append(p,1)));n+=p.$.colSpan-1}d.push(m)}g=e.$.rows;c[0].moveToPosition(e,CKEDITOR.POSITION_BEFORE_START);h=new CKEDITOR.dom.element(g[k+1]||(0<h?g[h-1]:null)||e.$.parentNode);for(a=d.length;0<=a;a--)f(d[a]);return e.$.parentNode?h:(c[0].select(),null)}a instanceof CKEDITOR.dom.element&&(e=a.getAscendant("table"),1==e.$.rows.length?e.remove():a.remove());return null}function e(a){for(var b= +a.getParent().$.cells,c=0,d=0;d<b.length;d++){var e=b[d],c=c+e.colSpan;if(e==a.$)break}return c-1}function a(a,b){for(var c=b?Infinity:0,d=0;d<a.length;d++){var g=e(a[d]);if(b?g<c:g>c)c=g}return c}function k(c,d){for(var e=p(c)?c:b(c),g=e[0].getAscendant("table"),f=a(e,1),e=a(e),h=d?f:e,k=CKEDITOR.tools.buildTableMap(g),g=[],f=[],e=[],l=k.length,m=0;m<l;m++){var n=d?k[m][h-1]:k[m][h+1];g.push(k[m][h]);f.push(n)}for(m=0;m<l;m++)g[m]&&(1<g[m].colSpan&&f[m]==g[m]?(k=g[m],k.colSpan+=1):(h=new CKEDITOR.dom.element(g[m]), +k=h.clone(),k.removeAttribute("colSpan"),k.appendBogus(),k[d?"insertBefore":"insertAfter"].call(k,h),e.push(k),k=k.$),m+=k.rowSpan-1);return e}function l(a){function c(a){var b=a.getRanges(),d,e;if(1!==b.length)return a;b=b[0];if(b.collapsed||0!==b.endOffset)return a;d=b.endContainer;e=d.getName().toLowerCase();if("td"!==e&&"th"!==e)return a;for((e=d.getPrevious())||(e=d.getParent().getPrevious().getLast());e.type!==CKEDITOR.NODE_TEXT&&"br"!==e.getName().toLowerCase();)if(e=e.getLast(),!e)return a; +b.setEndAt(e,CKEDITOR.POSITION_BEFORE_END);return b.select()}CKEDITOR.env.webkit&&!a.isFake&&(a=c(a));var d=a.getRanges(),e=b(a),g=e[0],f=e[e.length-1],e=g.getAscendant("table"),h=CKEDITOR.tools.buildTableMap(e),k,l,m=[];a.reset();var n=0;for(a=h.length;n<a;n++)for(var p=0,v=h[n].length;p<v;p++)void 0===k&&h[n][p]==g.$&&(k=p),h[n][p]==f.$&&(l=p);for(n=k;n<=l;n++)for(p=0;p<h.length;p++)f=h[p],g=new CKEDITOR.dom.element(e.$.rows[p]),f=new CKEDITOR.dom.element(f[n]),f.$&&(1==f.$.colSpan?f.remove():--f.$.colSpan, +p+=f.$.rowSpan-1,g.$.cells.length||m.push(g));k=h[0].length-1>l?new CKEDITOR.dom.element(h[0][l+1]):k&&-1!==h[0][k-1].cellIndex?new CKEDITOR.dom.element(h[0][k-1]):new CKEDITOR.dom.element(e.$.parentNode);m.length==a&&(d[0].moveToPosition(e,CKEDITOR.POSITION_AFTER_END),d[0].select(),e.remove());return k}function m(a,b){var c=a.getStartElement().getAscendant({td:1,th:1},!0);if(c){var d=c.clone();d.appendBogus();b?d.insertBefore(c):d.insertAfter(c)}}function c(a){if(a instanceof CKEDITOR.dom.selection){var e= +a.getRanges(),g=b(a),f=g[0]&&g[0].getAscendant("table"),h;a:{var k=0;h=g.length-1;for(var l={},m,n;m=g[k++];)CKEDITOR.dom.element.setMarker(l,m,"delete_cell",!0);for(k=0;m=g[k++];)if((n=m.getPrevious())&&!n.getCustomData("delete_cell")||(n=m.getNext())&&!n.getCustomData("delete_cell")){CKEDITOR.dom.element.clearAllMarkers(l);h=n;break a}CKEDITOR.dom.element.clearAllMarkers(l);k=g[0].getParent();(k=k.getPrevious())?h=k.getLast():(k=g[h].getParent(),h=(k=k.getNext())?k.getChild(0):null)}a.reset();for(a= +g.length-1;0<=a;a--)c(g[a]);h?d(h,!0):f&&(e[0].moveToPosition(f,CKEDITOR.POSITION_BEFORE_START),e[0].select(),f.remove())}else a instanceof CKEDITOR.dom.element&&(e=a.getParent(),1==e.getChildCount()?e.remove():a.remove())}function d(a,b){var c=a.getDocument(),d=CKEDITOR.document;CKEDITOR.env.ie&&10==CKEDITOR.env.version&&(d.focus(),c.focus());c=new CKEDITOR.dom.range(c);c["moveToElementEdit"+(b?"End":"Start")](a)||(c.selectNodeContents(a),c.collapse(b?!1:!0));c.select(!0)}function g(a,b,c){a=a[b]; +if("undefined"==typeof c)return a;for(b=0;a&&b<a.length;b++){if(c.is&&a[b]==c.$)return b;if(b==c)return new CKEDITOR.dom.element(a[b])}return c.is?-1:null}function n(a,c,d){var e=b(a),f;if((c?1!=e.length:2>e.length)||(f=a.getCommonAncestor())&&f.type==CKEDITOR.NODE_ELEMENT&&f.is("table"))return!1;a=e[0];f=a.getAscendant("table");var h=CKEDITOR.tools.buildTableMap(f),k=h.length,l=h[0].length,m=a.getParent().$.rowIndex,n=g(h,m,a),p;if(c){var v;try{var y=parseInt(a.getAttribute("rowspan"),10)||1;p=parseInt(a.getAttribute("colspan"), +10)||1;v=h["up"==c?m-y:"down"==c?m+y:m]["left"==c?n-p:"right"==c?n+p:n]}catch(M){return!1}if(!v||a.$==v)return!1;e["up"==c||"left"==c?"unshift":"push"](new CKEDITOR.dom.element(v))}c=a.getDocument();var D=m,y=v=0,N=!d&&new CKEDITOR.dom.documentFragment(c),I=0;for(c=0;c<e.length;c++){p=e[c];var L=p.getParent(),R=p.getFirst(),H=p.$.colSpan,G=p.$.rowSpan,L=L.$.rowIndex,O=g(h,L,p),I=I+H*G,y=Math.max(y,O-n+H);v=Math.max(v,L-m+G);d||(H=p,(G=H.getBogus())&&G.remove(),H.trim(),p.getChildren().count()&&(L== +D||!R||R.isBlockBoundary&&R.isBlockBoundary({br:1})||(D=N.getLast(CKEDITOR.dom.walker.whitespaces(!0)),!D||D.is&&D.is("br")||N.append("br")),p.moveChildren(N)),c?p.remove():p.setHtml(""));D=L}if(d)return v*y==I;N.moveChildren(a);a.appendBogus();y>=l?a.removeAttribute("rowSpan"):a.$.rowSpan=v;v>=k?a.removeAttribute("colSpan"):a.$.colSpan=y;d=new CKEDITOR.dom.nodeList(f.$.rows);e=d.count();for(c=e-1;0<=c;c--)f=d.getItem(c),f.$.cells.length||(f.remove(),e++);return a}function y(a,c){var d=b(a);if(1< d.length)return!1;if(c)return!0;var d=d[0],e=d.getParent(),f=e.getAscendant("table"),h=CKEDITOR.tools.buildTableMap(f),k=e.$.rowIndex,l=g(h,k,d),m=d.$.rowSpan,n;if(1<m){n=Math.ceil(m/2);for(var m=Math.floor(m/2),e=k+n,f=new CKEDITOR.dom.element(f.$.rows[e]),h=g(h,e),p,e=d.clone(),k=0;k<h.length;k++)if(p=h[k],p.parentNode==f.$&&k>l){e.insertBefore(new CKEDITOR.dom.element(p));break}else p=null;p||f.append(e)}else for(m=n=1,f=e.clone(),f.insertAfter(e),f.append(e=d.clone()),p=g(h,k),l=0;l<p.length;l++)p[l].rowSpan++; -e.appendBogus();d.$.rowSpan=n;e.$.rowSpan=m;1==n&&d.removeAttribute("rowSpan");1==m&&e.removeAttribute("rowSpan");return e}function w(a,c){var d=b(a);if(1<d.length)return!1;if(c)return!0;var d=d[0],e=d.getParent(),f=e.getAscendant("table"),f=CKEDITOR.tools.buildTableMap(f),h=g(f,e.$.rowIndex,d),k=d.$.colSpan;if(1<k)e=Math.ceil(k/2),k=Math.floor(k/2);else{for(var k=e=1,l=[],m=0;m<f.length;m++){var n=f[m];l.push(n[h]);1<n[h].rowSpan&&(m+=n[h].rowSpan-1)}for(f=0;f<l.length;f++)l[f].colSpan++}f=d.clone(); +e.appendBogus();d.$.rowSpan=n;e.$.rowSpan=m;1==n&&d.removeAttribute("rowSpan");1==m&&e.removeAttribute("rowSpan");return e}function v(a,c){var d=b(a);if(1<d.length)return!1;if(c)return!0;var d=d[0],e=d.getParent(),f=e.getAscendant("table"),f=CKEDITOR.tools.buildTableMap(f),h=g(f,e.$.rowIndex,d),k=d.$.colSpan;if(1<k)e=Math.ceil(k/2),k=Math.floor(k/2);else{for(var k=e=1,l=[],m=0;m<f.length;m++){var n=f[m];l.push(n[h]);1<n[h].rowSpan&&(m+=n[h].rowSpan-1)}for(f=0;f<l.length;f++)l[f].colSpan++}f=d.clone(); f.insertAfter(d);f.appendBogus();d.$.colSpan=e;f.$.colSpan=k;1==e&&d.removeAttribute("colSpan");1==k&&f.removeAttribute("colSpan");return f}var p=CKEDITOR.tools.isArray;CKEDITOR.plugins.tabletools={requires:"table,dialog,contextmenu",init:function(a){function e(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains({td:1,th:1},1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}function g(b,c){var d=a.addCommand(b,c);a.addFeature(d)}var p=a.lang.table, -z=CKEDITOR.tools.style.parse,q="td{width} td{height} td{border-color} td{background-color} td{white-space} td{vertical-align} td{text-align} td[colspan] td[rowspan] th".split(" ");g("cellProperties",new CKEDITOR.dialogCommand("cellProperties",e({allowedContent:"td th{width,height,border-color,background-color,white-space,vertical-align,text-align}[colspan,rowspan]",requiredContent:q,contentTransformations:[[{element:"td",left:function(a){return a.styles.background&&z.background(a.styles.background).color}, +z=CKEDITOR.tools.style.parse,u="td{width} td{height} td{border-color} td{background-color} td{white-space} td{vertical-align} td{text-align} td[colspan] td[rowspan] th".split(" ");g("cellProperties",new CKEDITOR.dialogCommand("cellProperties",e({allowedContent:"td th{width,height,border-color,background-color,white-space,vertical-align,text-align}[colspan,rowspan]",requiredContent:u,contentTransformations:[[{element:"td",left:function(a){return a.styles.background&&z.background(a.styles.background).color}, right:function(a){a.styles["background-color"]=z.background(a.styles.background).color}},{element:"td",check:"td{vertical-align}",left:function(a){return a.attributes&&a.attributes.valign},right:function(a){a.styles["vertical-align"]=a.attributes.valign;delete a.attributes.valign}}],[{element:"tr",check:"td{height}",left:function(a){return a.styles&&a.styles.height},right:function(a){CKEDITOR.tools.array.forEach(a.children,function(b){b.name in{td:1,th:1}&&(b.attributes["cke-row-height"]=a.styles.height)}); delete a.styles.height}}],[{element:"td",check:"td{height}",left:function(a){return(a=a.attributes)&&a["cke-row-height"]},right:function(a){a.styles.height=a.attributes["cke-row-height"];delete a.attributes["cke-row-height"]}}]]})));CKEDITOR.dialog.add("cellProperties",this.path+"dialogs/tableCell.js");g("rowDelete",e({requiredContent:"table",exec:function(a){a=a.getSelection();(a=f(a))&&d(a)}}));g("rowInsertBefore",e({requiredContent:"table",exec:function(a){a=a.getSelection();a=b(a);h(a,!0)}})); -g("rowInsertAfter",e({requiredContent:"table",exec:function(a){a=a.getSelection();a=b(a);h(a)}}));g("columnDelete",e({requiredContent:"table",exec:function(a){a=a.getSelection();(a=k(a))&&d(a,!0)}}));g("columnInsertBefore",e({requiredContent:"table",exec:function(a){a=a.getSelection();a=b(a);m(a,!0)}}));g("columnInsertAfter",e({requiredContent:"table",exec:function(a){a=a.getSelection();a=b(a);m(a)}}));g("cellDelete",e({requiredContent:"table",exec:function(a){a=a.getSelection();c(a)}}));g("cellMerge", +g("rowInsertAfter",e({requiredContent:"table",exec:function(a){a=a.getSelection();a=b(a);h(a)}}));g("columnDelete",e({requiredContent:"table",exec:function(a){a=a.getSelection();(a=l(a))&&d(a,!0)}}));g("columnInsertBefore",e({requiredContent:"table",exec:function(a){a=a.getSelection();a=b(a);k(a,!0)}}));g("columnInsertAfter",e({requiredContent:"table",exec:function(a){a=a.getSelection();a=b(a);k(a)}}));g("cellDelete",e({requiredContent:"table",exec:function(a){a=a.getSelection();c(a)}}));g("cellMerge", e({allowedContent:"td[colspan,rowspan]",requiredContent:"td[colspan,rowspan]",exec:function(a,b){b.cell=n(a.getSelection());d(b.cell,!0)}}));g("cellMergeRight",e({allowedContent:"td[colspan]",requiredContent:"td[colspan]",exec:function(a,b){b.cell=n(a.getSelection(),"right");d(b.cell,!0)}}));g("cellMergeDown",e({allowedContent:"td[rowspan]",requiredContent:"td[rowspan]",exec:function(a,b){b.cell=n(a.getSelection(),"down");d(b.cell,!0)}}));g("cellVerticalSplit",e({allowedContent:"td[rowspan]",requiredContent:"td[rowspan]", -exec:function(a){d(w(a.getSelection()))}}));g("cellHorizontalSplit",e({allowedContent:"td[colspan]",requiredContent:"td[colspan]",exec:function(a){d(y(a.getSelection()))}}));g("cellInsertBefore",e({requiredContent:"table",exec:function(a){a=a.getSelection();l(a,!0)}}));g("cellInsertAfter",e({requiredContent:"table",exec:function(a){a=a.getSelection();l(a)}}));a.addMenuItems&&a.addMenuItems({tablecell:{label:p.cell.menu,group:"tablecell",order:1,getItems:function(){var c=a.getSelection(),d=b(c),c= -{tablecell_insertBefore:CKEDITOR.TRISTATE_OFF,tablecell_insertAfter:CKEDITOR.TRISTATE_OFF,tablecell_delete:CKEDITOR.TRISTATE_OFF,tablecell_merge:n(c,null,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_right:n(c,"right",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_down:n(c,"down",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_vertical:w(c,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_horizontal:y(c,!0)?CKEDITOR.TRISTATE_OFF: -CKEDITOR.TRISTATE_DISABLED};a.filter.check(q)&&(c.tablecell_properties=0<d.length?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);return c}},tablecell_insertBefore:{label:p.cell.insertBefore,group:"tablecell",command:"cellInsertBefore",order:5},tablecell_insertAfter:{label:p.cell.insertAfter,group:"tablecell",command:"cellInsertAfter",order:10},tablecell_delete:{label:p.cell.deleteCell,group:"tablecell",command:"cellDelete",order:15},tablecell_merge:{label:p.cell.merge,group:"tablecell",command:"cellMerge", +exec:function(a){d(v(a.getSelection()))}}));g("cellHorizontalSplit",e({allowedContent:"td[colspan]",requiredContent:"td[colspan]",exec:function(a){d(y(a.getSelection()))}}));g("cellInsertBefore",e({requiredContent:"table",exec:function(a){a=a.getSelection();m(a,!0)}}));g("cellInsertAfter",e({requiredContent:"table",exec:function(a){a=a.getSelection();m(a)}}));a.addMenuItems&&a.addMenuItems({tablecell:{label:p.cell.menu,group:"tablecell",order:1,getItems:function(){var c=a.getSelection(),d=b(c),c= +{tablecell_insertBefore:CKEDITOR.TRISTATE_OFF,tablecell_insertAfter:CKEDITOR.TRISTATE_OFF,tablecell_delete:CKEDITOR.TRISTATE_OFF,tablecell_merge:n(c,null,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_right:n(c,"right",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_down:n(c,"down",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_vertical:v(c,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_horizontal:y(c,!0)?CKEDITOR.TRISTATE_OFF: +CKEDITOR.TRISTATE_DISABLED};a.filter.check(u)&&(c.tablecell_properties=0<d.length?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);return c}},tablecell_insertBefore:{label:p.cell.insertBefore,group:"tablecell",command:"cellInsertBefore",order:5},tablecell_insertAfter:{label:p.cell.insertAfter,group:"tablecell",command:"cellInsertAfter",order:10},tablecell_delete:{label:p.cell.deleteCell,group:"tablecell",command:"cellDelete",order:15},tablecell_merge:{label:p.cell.merge,group:"tablecell",command:"cellMerge", order:16},tablecell_merge_right:{label:p.cell.mergeRight,group:"tablecell",command:"cellMergeRight",order:17},tablecell_merge_down:{label:p.cell.mergeDown,group:"tablecell",command:"cellMergeDown",order:18},tablecell_split_horizontal:{label:p.cell.splitHorizontal,group:"tablecell",command:"cellHorizontalSplit",order:19},tablecell_split_vertical:{label:p.cell.splitVertical,group:"tablecell",command:"cellVerticalSplit",order:20},tablecell_properties:{label:p.cell.title,group:"tablecellproperties",command:"cellProperties", order:21},tablerow:{label:p.row.menu,group:"tablerow",order:1,getItems:function(){return{tablerow_insertBefore:CKEDITOR.TRISTATE_OFF,tablerow_insertAfter:CKEDITOR.TRISTATE_OFF,tablerow_delete:CKEDITOR.TRISTATE_OFF}}},tablerow_insertBefore:{label:p.row.insertBefore,group:"tablerow",command:"rowInsertBefore",order:5},tablerow_insertAfter:{label:p.row.insertAfter,group:"tablerow",command:"rowInsertAfter",order:10},tablerow_delete:{label:p.row.deleteRow,group:"tablerow",command:"rowDelete",order:15}, tablecolumn:{label:p.column.menu,group:"tablecolumn",order:1,getItems:function(){return{tablecolumn_insertBefore:CKEDITOR.TRISTATE_OFF,tablecolumn_insertAfter:CKEDITOR.TRISTATE_OFF,tablecolumn_delete:CKEDITOR.TRISTATE_OFF}}},tablecolumn_insertBefore:{label:p.column.insertBefore,group:"tablecolumn",command:"columnInsertBefore",order:5},tablecolumn_insertAfter:{label:p.column.insertAfter,group:"tablecolumn",command:"columnInsertAfter",order:10},tablecolumn_delete:{label:p.column.deleteColumn,group:"tablecolumn", -command:"columnDelete",order:15}});a.contextMenu&&a.contextMenu.addListener(function(a,b,c){return(a=c.contains({td:1,th:1},1))&&!a.isReadOnly()?{tablecell:CKEDITOR.TRISTATE_OFF,tablerow:CKEDITOR.TRISTATE_OFF,tablecolumn:CKEDITOR.TRISTATE_OFF}:null})},getCellColIndex:e,insertRow:h,insertColumn:m,getSelectedCells:b};CKEDITOR.plugins.add("tabletools",CKEDITOR.plugins.tabletools)}(),CKEDITOR.tools.buildTableMap=function(b,h,f,e,a){b=b.$.rows;f=f||0;e="number"===typeof e?e:b.length-1;a="number"===typeof a? -a:-1;var m=-1,k=[];for(h=h||0;h<=e;h++){m++;!k[m]&&(k[m]=[]);for(var l=-1,c=f;c<=(-1===a?b[h].cells.length-1:a);c++){var d=b[h].cells[c];if(!d)break;for(l++;k[m][l];)l++;for(var g=isNaN(d.colSpan)?1:d.colSpan,d=isNaN(d.rowSpan)?1:d.rowSpan,n=0;n<d&&!(h+n>e);n++){k[m+n]||(k[m+n]=[]);for(var y=0;y<g;y++)k[m+n][l+y]=b[h].cells[c]}l+=g-1;if(-1!==a&&l>=a)break}}return k},function(){function b(a){return CKEDITOR.env.ie?a.$.clientWidth:parseInt(a.getComputedStyle("width"),10)}function h(a,b){var e=a.getComputedStyle("border-"+ +command:"columnDelete",order:15}});a.contextMenu&&a.contextMenu.addListener(function(a,b,c){return(a=c.contains({td:1,th:1},1))&&!a.isReadOnly()?{tablecell:CKEDITOR.TRISTATE_OFF,tablerow:CKEDITOR.TRISTATE_OFF,tablecolumn:CKEDITOR.TRISTATE_OFF}:null})},getCellColIndex:e,insertRow:h,insertColumn:k,getSelectedCells:b};CKEDITOR.plugins.add("tabletools",CKEDITOR.plugins.tabletools)}(),CKEDITOR.tools.buildTableMap=function(b,h,f,e,a){b=b.$.rows;f=f||0;e="number"===typeof e?e:b.length-1;a="number"===typeof a? +a:-1;var k=-1,l=[];for(h=h||0;h<=e;h++){k++;!l[k]&&(l[k]=[]);for(var m=-1,c=f;c<=(-1===a?b[h].cells.length-1:a);c++){var d=b[h].cells[c];if(!d)break;for(m++;l[k][m];)m++;for(var g=isNaN(d.colSpan)?1:d.colSpan,d=isNaN(d.rowSpan)?1:d.rowSpan,n=0;n<d&&!(h+n>e);n++){l[k+n]||(l[k+n]=[]);for(var y=0;y<g;y++)l[k+n][m+y]=b[h].cells[c]}m+=g-1;if(-1!==a&&m>=a)break}}return l},function(){function b(a){return CKEDITOR.env.ie?a.$.clientWidth:parseInt(a.getComputedStyle("width"),10)}function h(a,b){var e=a.getComputedStyle("border-"+ b+"-width"),f={thin:"0px",medium:"1px",thick:"2px"};0>e.indexOf("px")&&(e=e in f&&"none"!=a.getComputedStyle("border-style")?f[e]:0);return parseFloat(e)}function f(a){var b=[],e={},f="rtl"===a.getComputedStyle("direction"),k=CKEDITOR.tools.array.zip((new CKEDITOR.dom.nodeList(a.$.rows)).toArray(),CKEDITOR.tools.buildTableMap(a));CKEDITOR.tools.array.forEach(k,function(k){var l=k[0].$;k=k[1];var m=-1,r=0,y=null;l?(r=new CKEDITOR.dom.element(l),y={height:r.$.offsetHeight,position:r.getDocumentPosition()}): -y=void 0;for(var l=CKEDITOR.env.ie&&!CKEDITOR.env.edge,u="collapse"===a.getComputedStyle("border-collapse"),r=y.height,y=y.position,z=0;z<k.length;z++){var q=new CKEDITOR.dom.element(k[z]),v=k[z+1]&&new CKEDITOR.dom.element(k[z+1]),B,D,A=q.getDocumentPosition().x,m=m+(q.$.colSpan||1);f?D=A+h(q,"left"):B=A+q.$.offsetWidth-h(q,"right");v?(A=v.getDocumentPosition().x,f?B=A+v.$.offsetWidth-h(v,"right"):D=A+h(v,"left")):(A=a.getDocumentPosition().x,f?B=A:D=A+a.$.offsetWidth);q=Math.max(D-B,3);l&&u&&(B-= -q,q=Math.max(D-B,3));q={table:a,index:m,x:B,y:y.y,width:q,height:r,rtl:f};e[m]=e[m]||[];e[m].push(q);q.alignedPillars=e[m];b.push(q)}});return b}function e(a){(a.data||a).preventDefault()}function a(a){function d(){x=0;r.setOpacity(0);z&&f();var a=p.table;setTimeout(function(){a.removeCustomData("_cke_table_pillars")},0);t.removeListener("dragstart",e)}function f(){for(var d=p.rtl,e=d?B.length:v.length,g=0,l=0;l<e;l++){var m=v[l],n=B[l],q=p.table;CKEDITOR.tools.setTimeout(function(b,f,h,l,m,n){b&& -b.setStyle("width",k(Math.max(f+n,1)));h&&h.setStyle("width",k(Math.max(l-n,1)));m&&q.setStyle("width",k(m+n*(d?-1:1)));++g==e&&a.fire("saveSnapshot")},0,this,[m,m&&b(m),n,n&&b(n),(!m||!n)&&b(q)+h(q,"left")+h(q,"right"),z])}}function m(d){e(d);a.fire("saveSnapshot");d=p.index;for(var f=CKEDITOR.tools.buildTableMap(p.table),g=[],h=[],k=Number.MAX_VALUE,l=k,n=p.rtl,q=0,Q=f.length;q<Q;q++){var H=f[q],G=H[d+(n?1:0)],H=H[d+(n?0:1)],G=G&&new CKEDITOR.dom.element(G),H=H&&new CKEDITOR.dom.element(H);G&&H&& -G.equals(H)||(G&&(k=Math.min(k,b(G))),H&&(l=Math.min(l,b(H))),g.push(G),h.push(H))}v=g;B=h;D=p.x-k;A=p.x+l;r.setOpacity(.5);u=parseInt(r.getStyle("left"),10);z=0;x=1;r.on("mousemove",w);t.on("dragstart",e);t.on("mouseup",y,this)}function y(a){a.removeListener();d()}function w(a){q(a.data.getPageOffset().x)}var p,t,r,x,u,z,q,v,B,D,A;t=a.document;r=CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-temp\x3d1 contenteditable\x3dfalse unselectable\x3don style\x3d"position:absolute;cursor:col-resize;filter:alpha(opacity\x3d0);opacity:0;padding:0;background-color:#004;background-image:none;border:0px none;z-index:10000"\x3e\x3c/div\x3e', -t);a.on("destroy",function(){r.remove()});l||t.getDocumentElement().append(r);this.attachTo=function(a){var b,c,d;x||(l&&(t.getBody().append(r),z=0),p=a,b=p.alignedPillars[0],c=p.alignedPillars[p.alignedPillars.length-1],d=b.y,b=c.height+c.y-b.y,r.setStyles({width:k(a.width),height:k(b),left:k(a.x),top:k(d)}),l&&r.setOpacity(.25),r.on("mousedown",m,this),t.getBody().setStyle("cursor","col-resize"),r.show())};q=this.move=function(a,b){if(!p)return 0;if(!(x||a>=p.x&&a<=p.x+p.width&&b>=p.y&&b<=p.y+p.height))return p= -null,x=z=0,t.removeListener("mouseup",y),r.removeListener("mousedown",m),r.removeListener("mousemove",w),t.getBody().setStyle("cursor","auto"),l?r.remove():r.hide(),0;var c=a-Math.round(r.$.offsetWidth/2);if(x){if(c==D||c==A)return 1;c=Math.max(c,D);c=Math.min(c,A);z=c-u}r.setStyle("left",k(c));return 1}}function m(a){var b=a.data.getTarget();if("mouseout"==a.name){if(!b.is("table"))return;for(var e=new CKEDITOR.dom.element(a.data.$.relatedTarget||a.data.$.toElement);e&&e.$&&!e.equals(b)&&!e.is("body");)e= -e.getParent();if(!e||e.equals(b))return}b.getAscendant("table",1).removeCustomData("_cke_table_pillars");a.removeListener()}var k=CKEDITOR.tools.cssLength,l=CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks);CKEDITOR.plugins.add("tableresize",{requires:"tabletools",init:function(b){b.on("contentDom",function(){var d,g=b.editable();g.attachListener(g.isInline()?g:b.document,"mousemove",function(g){g=g.data;var h=g.getTarget();if(h.type==CKEDITOR.NODE_ELEMENT){var k=g.getPageOffset().x, -l=g.getPageOffset().y;if(d&&d.move(k,l))e(g);else if(h.is("table")||h.getAscendant({thead:1,tbody:1,tfoot:1},1))if(g=h.getAscendant("table",1),b.editable().contains(g)){(h=g.getCustomData("_cke_table_pillars"))||(g.setCustomData("_cke_table_pillars",h=f(g)),g.on("mouseout",m),g.on("mousedown",m));a:{g=h;for(var h=0,t=g.length;h<t;h++){var r=g[h];if(k>=r.x&&k<=r.x+r.width&&l>=r.y&&l<=r.y+r.height){k=r;break a}}k=null}k&&(!d&&(d=new a(b)),d.attachTo(k))}}})})}})}(),"use strict",function(){function b(a, -b){return CKEDITOR.tools.array.reduce(b,function(a,b){return b(a)},a)}var h=[CKEDITOR.CTRL+90,CKEDITOR.CTRL+89,CKEDITOR.CTRL+CKEDITOR.SHIFT+90],f={8:1,46:1};CKEDITOR.plugins.add("undo",{init:function(a){function b(a){l.enabled&&!1!==a.data.command.canUndo&&l.save()}function f(){l.enabled=a.readOnly?!1:"wysiwyg"==a.mode;l.onChange()}var l=a.undoManager=new e(a),m=l.editingHandler=new k(l),w=a.addCommand("undo",{exec:function(){l.undo()&&(a.selectionChange(),this.fire("afterUndo"))},startDisabled:!0, -canUndo:!1}),p=a.addCommand("redo",{exec:function(){l.redo()&&(a.selectionChange(),this.fire("afterRedo"))},startDisabled:!0,canUndo:!1});a.setKeystroke([[h[0],"undo"],[h[1],"redo"],[h[2],"redo"]]);l.onChange=function(){w.setState(l.undoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);p.setState(l.redoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)};a.on("beforeCommandExec",b);a.on("afterCommandExec",b);a.on("saveSnapshot",function(a){l.save(a.data&&a.data.contentOnly)});a.on("contentDom", -m.attachListeners,m);a.on("instanceReady",function(){a.fire("saveSnapshot")});a.on("beforeModeUnload",function(){"wysiwyg"==a.mode&&l.save(!0)});a.on("mode",f);a.on("readOnly",f);a.ui.addButton&&(a.ui.addButton("Undo",{label:a.lang.undo.undo,command:"undo",toolbar:"undo,10"}),a.ui.addButton("Redo",{label:a.lang.undo.redo,command:"redo",toolbar:"undo,20"}));a.resetUndo=function(){l.reset();a.fire("saveSnapshot")};a.on("updateSnapshot",function(){l.currentImage&&l.update()});a.on("lockSnapshot",function(a){a= -a.data;l.lock(a&&a.dontUpdate,a&&a.forceUpdate)});a.on("unlockSnapshot",l.unlock,l)}});CKEDITOR.plugins.undo={};var e=CKEDITOR.plugins.undo.UndoManager=function(a){this.strokesRecorded=[0,0];this.locked=null;this.previousKeyGroup=-1;this.limit=a.config.undoStackSize||20;this.strokesLimit=25;this._filterRules=[];this.editor=a;this.reset();CKEDITOR.env.ie&&this.addFilterRule(function(a){return a.replace(/\s+data-cke-expando=".*?"/g,"")})};e.prototype={type:function(a,b){var f=e.getKeyGroup(a),h=this.strokesRecorded[f]+ -1;b=b||h>=this.strokesLimit;this.typing||(this.hasUndo=this.typing=!0,this.hasRedo=!1,this.onChange());b?(h=0,this.editor.fire("saveSnapshot")):this.editor.fire("change");this.strokesRecorded[f]=h;this.previousKeyGroup=f},keyGroupChanged:function(a){return e.getKeyGroup(a)!=this.previousKeyGroup},reset:function(){this.snapshots=[];this.index=-1;this.currentImage=null;this.hasRedo=this.hasUndo=!1;this.locked=null;this.resetType()},resetType:function(){this.strokesRecorded=[0,0];this.typing=!1;this.previousKeyGroup= +y=void 0;for(var l=CKEDITOR.env.ie&&!CKEDITOR.env.edge,t="collapse"===a.getComputedStyle("border-collapse"),r=y.height,y=y.position,z=0;z<k.length;z++){var u=new CKEDITOR.dom.element(k[z]),w=k[z+1]&&new CKEDITOR.dom.element(k[z+1]),B,C,A=u.getDocumentPosition().x,m=m+(u.$.colSpan||1);f?C=A+h(u,"left"):B=A+u.$.offsetWidth-h(u,"right");w?(A=w.getDocumentPosition().x,f?B=A+w.$.offsetWidth-h(w,"right"):C=A+h(w,"left")):(A=a.getDocumentPosition().x,f?B=A:C=A+a.$.offsetWidth);u=Math.max(C-B,3);l&&t&&(B-= +u,u=Math.max(C-B,3));u={table:a,index:m,x:B,y:y.y,width:u,height:r,rtl:f};e[m]=e[m]||[];e[m].push(u);u.alignedPillars=e[m];b.push(u)}});return b}function e(a){(a.data||a).preventDefault()}function a(a){function d(){x=0;r.setOpacity(0);z&&g();var a=p.table;setTimeout(function(){a.removeCustomData("_cke_table_pillars")},0);q.removeListener("dragstart",e)}function g(){for(var d=p.rtl,e=d?B.length:w.length,g=0,f=0;f<e;f++){var k=w[f],m=B[f],n=p.table;CKEDITOR.tools.setTimeout(function(b,f,h,k,m,p){b&& +b.setStyle("width",l(Math.max(f+p,1)));h&&h.setStyle("width",l(Math.max(k-p,1)));m&&n.setStyle("width",l(m+p*(d?-1:1)));++g==e&&a.fire("saveSnapshot")},0,this,[k,k&&b(k),m,m&&b(m),(!k||!m)&&b(n)+h(n,"left")+h(n,"right"),z])}}function f(d){e(d);a.fire("saveSnapshot");d=p.index;for(var g=CKEDITOR.tools.buildTableMap(p.table),h=[],l=[],m=Number.MAX_VALUE,n=m,u=p.rtl,L=0,R=g.length;L<R;L++){var H=g[L],G=H[d+(u?1:0)],H=H[d+(u?0:1)],G=G&&new CKEDITOR.dom.element(G),H=H&&new CKEDITOR.dom.element(H);G&&H&& +G.equals(H)||(G&&(m=Math.min(m,b(G))),H&&(n=Math.min(n,b(H))),h.push(G),l.push(H))}w=h;B=l;C=p.x-m;A=p.x+n;r.setOpacity(.5);t=parseInt(r.getStyle("left"),10);z=0;x=1;r.on("mousemove",v);q.on("dragstart",e);q.on("mouseup",k,this)}function k(a){a.removeListener();d()}function v(a){u(a.data.getPageOffset().x)}var p,q,r,x,t,z,u,w,B,C,A;q=a.document;r=CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-temp\x3d1 contenteditable\x3dfalse unselectable\x3don style\x3d"position:absolute;cursor:col-resize;filter:alpha(opacity\x3d0);opacity:0;padding:0;background-color:#004;background-image:none;border:0px none;z-index:10000"\x3e\x3c/div\x3e', +q);a.on("destroy",function(){r.remove()});m||q.getDocumentElement().append(r);this.attachTo=function(a){var b,c,d;x||(m&&(q.getBody().append(r),z=0),p=a,b=p.alignedPillars[0],c=p.alignedPillars[p.alignedPillars.length-1],d=b.y,b=c.height+c.y-b.y,r.setStyles({width:l(a.width),height:l(b),left:l(a.x),top:l(d)}),m&&r.setOpacity(.25),r.on("mousedown",f,this),q.getBody().setStyle("cursor","col-resize"),r.show())};u=this.move=function(a,b){if(!p)return 0;if(!(x||a>=p.x&&a<=p.x+p.width&&b>=p.y&&b<=p.y+p.height))return p= +null,x=z=0,q.removeListener("mouseup",k),r.removeListener("mousedown",f),r.removeListener("mousemove",v),q.getBody().setStyle("cursor","auto"),m?r.remove():r.hide(),0;var c=a-Math.round(r.$.offsetWidth/2);if(x){if(c==C||c==A)return 1;c=Math.max(c,C);c=Math.min(c,A);z=c-t}r.setStyle("left",l(c));return 1}}function k(a){var b=a.data.getTarget();if("mouseout"==a.name){if(!b.is("table"))return;for(var e=new CKEDITOR.dom.element(a.data.$.relatedTarget||a.data.$.toElement);e&&e.$&&!e.equals(b)&&!e.is("body");)e= +e.getParent();if(!e||e.equals(b))return}b.getAscendant("table",1).removeCustomData("_cke_table_pillars");a.removeListener()}var l=CKEDITOR.tools.cssLength,m=CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks);CKEDITOR.plugins.add("tableresize",{requires:"tabletools",init:function(b){b.on("contentDom",function(){var d,g=b.editable();g.attachListener(g.isInline()?g:b.document,"mousemove",function(g){g=g.data;var h=g.getTarget();if(h.type==CKEDITOR.NODE_ELEMENT){var l=g.getPageOffset().x, +m=g.getPageOffset().y;if(d&&d.move(l,m))e(g);else if(h.is("table")||h.getAscendant({thead:1,tbody:1,tfoot:1},1))if(g=h.getAscendant("table",1),b.editable().contains(g)){(h=g.getCustomData("_cke_table_pillars"))||(g.setCustomData("_cke_table_pillars",h=f(g)),g.on("mouseout",k),g.on("mousedown",k));a:{g=h;for(var h=0,q=g.length;h<q;h++){var r=g[h];if(l>=r.x&&l<=r.x+r.width&&m>=r.y&&m<=r.y+r.height){l=r;break a}}l=null}l&&(!d&&(d=new a(b)),d.attachTo(l))}}})})}})}(),"use strict",function(){function b(a, +b){return CKEDITOR.tools.array.reduce(b,function(a,b){return b(a)},a)}var h=[CKEDITOR.CTRL+90,CKEDITOR.CTRL+89,CKEDITOR.CTRL+CKEDITOR.SHIFT+90],f={8:1,46:1};CKEDITOR.plugins.add("undo",{init:function(a){function b(a){f.enabled&&!1!==a.data.command.canUndo&&f.save()}function g(){f.enabled=a.readOnly?!1:"wysiwyg"==a.mode;f.onChange()}var f=a.undoManager=new e(a),k=f.editingHandler=new l(f),m=a.addCommand("undo",{exec:function(){f.undo()&&(a.selectionChange(),this.fire("afterUndo"))},startDisabled:!0, +canUndo:!1}),p=a.addCommand("redo",{exec:function(){f.redo()&&(a.selectionChange(),this.fire("afterRedo"))},startDisabled:!0,canUndo:!1});a.setKeystroke([[h[0],"undo"],[h[1],"redo"],[h[2],"redo"]]);f.onChange=function(){m.setState(f.undoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);p.setState(f.redoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)};a.on("beforeCommandExec",b);a.on("afterCommandExec",b);a.on("saveSnapshot",function(a){f.save(a.data&&a.data.contentOnly)});a.on("contentDom", +k.attachListeners,k);a.on("instanceReady",function(){a.fire("saveSnapshot")});a.on("beforeModeUnload",function(){"wysiwyg"==a.mode&&f.save(!0)});a.on("mode",g);a.on("readOnly",g);a.ui.addButton&&(a.ui.addButton("Undo",{label:a.lang.undo.undo,command:"undo",toolbar:"undo,10"}),a.ui.addButton("Redo",{label:a.lang.undo.redo,command:"redo",toolbar:"undo,20"}));a.resetUndo=function(){f.reset();a.fire("saveSnapshot")};a.on("updateSnapshot",function(){f.currentImage&&f.update()});a.on("lockSnapshot",function(a){a= +a.data;f.lock(a&&a.dontUpdate,a&&a.forceUpdate)});a.on("unlockSnapshot",f.unlock,f)}});CKEDITOR.plugins.undo={};var e=CKEDITOR.plugins.undo.UndoManager=function(a){this.strokesRecorded=[0,0];this.locked=null;this.previousKeyGroup=-1;this.limit=a.config.undoStackSize||20;this.strokesLimit=25;this._filterRules=[];this.editor=a;this.reset();CKEDITOR.env.ie&&this.addFilterRule(function(a){return a.replace(/\s+data-cke-expando=".*?"/g,"")})};e.prototype={type:function(a,b){var g=e.getKeyGroup(a),f=this.strokesRecorded[g]+ +1;b=b||f>=this.strokesLimit;this.typing||(this.hasUndo=this.typing=!0,this.hasRedo=!1,this.onChange());b?(f=0,this.editor.fire("saveSnapshot")):this.editor.fire("change");this.strokesRecorded[g]=f;this.previousKeyGroup=g},keyGroupChanged:function(a){return e.getKeyGroup(a)!=this.previousKeyGroup},reset:function(){this.snapshots=[];this.index=-1;this.currentImage=null;this.hasRedo=this.hasUndo=!1;this.locked=null;this.resetType()},resetType:function(){this.strokesRecorded=[0,0];this.typing=!1;this.previousKeyGroup= -1},refreshState:function(){this.hasUndo=!!this.getNextImage(!0);this.hasRedo=!!this.getNextImage(!1);this.resetType();this.onChange()},save:function(b,d,e){var f=this.editor;if(this.locked||"ready"!=f.status||"wysiwyg"!=f.mode)return!1;var h=f.editable();if(!h||"ready"!=h.status)return!1;h=this.snapshots;d||(d=new a(f));if(!1===d.contents)return!1;if(this.currentImage)if(d.equalsContent(this.currentImage)){if(b||d.equalsSelection(this.currentImage))return!1}else!1!==e&&f.fire("change");h.splice(this.index+ 1,h.length-this.index-1);h.length==this.limit&&h.shift();this.index=h.push(d)-1;this.currentImage=d;!1!==e&&this.refreshState();return!0},restoreImage:function(a){var b=this.editor,e;a.bookmarks&&(b.focus(),e=b.getSelection());this.locked={level:999};this.editor.loadSnapshot(a.contents);a.bookmarks?e.selectBookmarks(a.bookmarks):CKEDITOR.env.ie&&(e=this.editor.document.getBody().$.createTextRange(),e.collapse(!0),e.select());this.locked=null;this.index=a.index;this.currentImage=this.snapshots[this.index]; this.update();this.refreshState();b.fire("change")},getNextImage:function(a){var b=this.snapshots,e=this.currentImage,f;if(e)if(a)for(f=this.index-1;0<=f;f--){if(a=b[f],!e.equalsContent(a))return a.index=f,a}else for(f=this.index+1;f<b.length;f++)if(a=b[f],!e.equalsContent(a))return a.index=f,a;return null},redoable:function(){return this.enabled&&this.hasRedo},undoable:function(){return this.enabled&&this.hasUndo},undo:function(){if(this.undoable()){this.save(!0);var a=this.getNextImage(!0);if(a)return this.restoreImage(a), !0}return!1},redo:function(){if(this.redoable()&&(this.save(!0),this.redoable())){var a=this.getNextImage(!1);if(a)return this.restoreImage(a),!0}return!1},update:function(b){if(!this.locked){b||(b=new a(this.editor));for(var d=this.index,e=this.snapshots;0<d&&this.currentImage.equalsContent(e[d-1]);)--d;e.splice(d,this.index-d+1,b);this.index=d;this.currentImage=b}},updateSelection:function(a){if(!this.snapshots.length)return!1;var b=this.snapshots,e=b[b.length-1];return e.equalsContent(a)&&!e.equalsSelection(a)? (this.currentImage=b[b.length-1]=a,!0):!1},lock:function(b,d){if(this.locked)this.locked.level++;else if(b)this.locked={level:1};else{var e=null;if(d)e=!0;else{var f=new a(this.editor,!0);this.currentImage&&this.currentImage.equalsContent(f)&&(e=f)}this.locked={update:e,level:1}}},unlock:function(){if(this.locked&&!--this.locked.level){var b=this.locked.update;this.locked=null;if(!0===b)this.update();else if(b){var d=new a(this.editor,!0);b.equalsContent(d)||this.update()}}},addFilterRule:function(a){this._filterRules.push(a)}}; e.navigationKeyCodes={37:1,38:1,39:1,40:1,36:1,35:1,33:1,34:1};e.keyGroups={PRINTABLE:0,FUNCTIONAL:1};e.isNavigationKey=function(a){return!!e.navigationKeyCodes[a]};e.getKeyGroup=function(a){var b=e.keyGroups;return f[a]?b.FUNCTIONAL:b.PRINTABLE};e.getOppositeKeyGroup=function(a){var b=e.keyGroups;return a==b.FUNCTIONAL?b.PRINTABLE:b.FUNCTIONAL};e.ieFunctionalKeysBug=function(a){return CKEDITOR.env.ie&&e.getKeyGroup(a)==e.keyGroups.FUNCTIONAL};var a=CKEDITOR.plugins.undo.Image=function(a,d){this.editor= -a;a.fire("beforeUndoImage");var e=a.getSnapshot();e&&(this.contents=b(e,a.undoManager._filterRules));d||(this.bookmarks=(e=e&&a.getSelection())&&e.createBookmarks2(!0));a.fire("afterUndoImage")},m=/\b(?:href|src|name)="[^"]*?"/gi;a.prototype={equalsContent:function(a){var b=this.contents;a=a.contents;CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)&&(b=b.replace(m,""),a=a.replace(m,""));return b!=a?!1:!0},equalsSelection:function(a){var b=this.bookmarks;a=a.bookmarks;if(b||a){if(!b|| -!a||b.length!=a.length)return!1;for(var e=0;e<b.length;e++){var f=b[e],h=a[e];if(f.startOffset!=h.startOffset||f.endOffset!=h.endOffset||!CKEDITOR.tools.arrayCompare(f.start,h.start)||!CKEDITOR.tools.arrayCompare(f.end,h.end))return!1}}return!0}};var k=CKEDITOR.plugins.undo.NativeEditingHandler=function(a){this.undoManager=a;this.ignoreInputEvent=!1;this.keyEventsStack=new l;this.lastKeydownImage=null};k.prototype={onKeydown:function(b){var d=b.data.getKey();if(229!==d)if(-1<CKEDITOR.tools.indexOf(h, +a;a.fire("beforeUndoImage");var e=a.getSnapshot();e&&(this.contents=b(e,a.undoManager._filterRules));d||(this.bookmarks=(e=e&&a.getSelection())&&e.createBookmarks2(!0));a.fire("afterUndoImage")},k=/\b(?:href|src|name)="[^"]*?"/gi;a.prototype={equalsContent:function(a){var b=this.contents;a=a.contents;CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)&&(b=b.replace(k,""),a=a.replace(k,""));return b!=a?!1:!0},equalsSelection:function(a){var b=this.bookmarks;a=a.bookmarks;if(b||a){if(!b|| +!a||b.length!=a.length)return!1;for(var e=0;e<b.length;e++){var f=b[e],h=a[e];if(f.startOffset!=h.startOffset||f.endOffset!=h.endOffset||!CKEDITOR.tools.arrayCompare(f.start,h.start)||!CKEDITOR.tools.arrayCompare(f.end,h.end))return!1}}return!0}};var l=CKEDITOR.plugins.undo.NativeEditingHandler=function(a){this.undoManager=a;this.ignoreInputEvent=!1;this.keyEventsStack=new m;this.lastKeydownImage=null};l.prototype={onKeydown:function(b){var d=b.data.getKey();if(229!==d)if(-1<CKEDITOR.tools.indexOf(h, b.data.getKeystroke()))b.data.preventDefault();else if(this.keyEventsStack.cleanUp(b),b=this.undoManager,this.keyEventsStack.getLast(d)||this.keyEventsStack.push(d),this.lastKeydownImage=new a(b.editor),e.isNavigationKey(d)||this.undoManager.keyGroupChanged(d))if(b.strokesRecorded[0]||b.strokesRecorded[1])b.save(!1,this.lastKeydownImage,!1),b.resetType()},onInput:function(){if(this.ignoreInputEvent)this.ignoreInputEvent=!1;else{var a=this.keyEventsStack.getLast();a||(a=this.keyEventsStack.push(0)); this.keyEventsStack.increment(a.keyCode);this.keyEventsStack.getTotalInputs()>=this.undoManager.strokesLimit&&(this.undoManager.type(a.keyCode,!0),this.keyEventsStack.resetInputs())}},onKeyup:function(b){var d=this.undoManager;b=b.data.getKey();var f=this.keyEventsStack.getTotalInputs();this.keyEventsStack.remove(b);if(!(e.ieFunctionalKeysBug(b)&&this.lastKeydownImage&&this.lastKeydownImage.equalsContent(new a(d.editor,!0))))if(0<f)d.type(b);else if(e.isNavigationKey(b))this.onNavigationKey(!0)}, onNavigationKey:function(b){var d=this.undoManager;!b&&d.save(!0,null,!1)||d.updateSelection(new a(d.editor));d.resetType()},ignoreInputEventListener:function(){this.ignoreInputEvent=!0},activateInputEventListener:function(){this.ignoreInputEvent=!1},attachListeners:function(){var a=this.undoManager.editor,b=a.editable(),f=this;b.attachListener(b,"keydown",function(a){f.onKeydown(a);if(e.ieFunctionalKeysBug(a.data.getKey()))f.onInput()},null,null,999);b.attachListener(b,CKEDITOR.env.ie?"keypress": -"input",f.onInput,f,null,999);b.attachListener(b,"keyup",f.onKeyup,f,null,999);b.attachListener(b,"paste",f.ignoreInputEventListener,f,null,999);b.attachListener(b,"drop",f.ignoreInputEventListener,f,null,999);a.on("afterPaste",f.activateInputEventListener,f,null,999);b.attachListener(b.isInline()?b:a.document.getDocumentElement(),"click",function(){f.onNavigationKey()},null,null,999);b.attachListener(this.undoManager.editor,"blur",function(){f.keyEventsStack.remove(9)},null,null,999)}};var l=CKEDITOR.plugins.undo.KeyEventsStack= -function(){this.stack=[]};l.prototype={push:function(a){a=this.stack.push({keyCode:a,inputs:0});return this.stack[a-1]},getLastIndex:function(a){if("number"!=typeof a)return this.stack.length-1;for(var b=this.stack.length;b--;)if(this.stack[b].keyCode==a)return b;return-1},getLast:function(a){a=this.getLastIndex(a);return-1!=a?this.stack[a]:null},increment:function(a){this.getLast(a).inputs++},remove:function(a){a=this.getLastIndex(a);-1!=a&&this.stack.splice(a,1)},resetInputs:function(a){if("number"== +"input",f.onInput,f,null,999);b.attachListener(b,"keyup",f.onKeyup,f,null,999);b.attachListener(b,"paste",f.ignoreInputEventListener,f,null,999);b.attachListener(b,"drop",f.ignoreInputEventListener,f,null,999);a.on("afterPaste",f.activateInputEventListener,f,null,999);b.attachListener(b.isInline()?b:a.document.getDocumentElement(),"click",function(){f.onNavigationKey()},null,null,999);b.attachListener(this.undoManager.editor,"blur",function(){f.keyEventsStack.remove(9)},null,null,999)}};var m=CKEDITOR.plugins.undo.KeyEventsStack= +function(){this.stack=[]};m.prototype={push:function(a){a=this.stack.push({keyCode:a,inputs:0});return this.stack[a-1]},getLastIndex:function(a){if("number"!=typeof a)return this.stack.length-1;for(var b=this.stack.length;b--;)if(this.stack[b].keyCode==a)return b;return-1},getLast:function(a){a=this.getLastIndex(a);return-1!=a?this.stack[a]:null},increment:function(a){this.getLast(a).inputs++},remove:function(a){a=this.getLastIndex(a);-1!=a&&this.stack.splice(a,1)},resetInputs:function(a){if("number"== typeof a)this.getLast(a).inputs=0;else for(a=this.stack.length;a--;)this.stack[a].inputs=0},getTotalInputs:function(){for(var a=this.stack.length,b=0;a--;)b+=this.stack[a].inputs;return b},cleanUp:function(a){a=a.data.$;a.ctrlKey||a.metaKey||this.remove(17);a.shiftKey||this.remove(16);a.altKey||this.remove(18)}}}(),function(){function b(a){function b(a){var c=!1;g.attachListener(g,"keydown",function(){var b=f.getBody().getElementsByTag(a);if(!c){for(var d=0;d<b.count();d++)b.getItem(d).setCustomData("retain", !0);c=!0}},null,null,1);g.attachListener(g,"keyup",function(){var b=f.getElementsByTag(a);c&&(1==b.count()&&!b.getItem(0).getCustomData("retain")&&CKEDITOR.tools.isEmpty(b.getItem(0).getAttributes())&&b.getItem(0).remove(1),c=!1)})}var e=this.editor;if(e&&!e.isDetached()){var f=a.document,c=f.body,d=f.getElementById("cke_actscrpt");d&&d.parentNode.removeChild(d);(d=f.getElementById("cke_shimscrpt"))&&d.parentNode.removeChild(d);(d=f.getElementById("cke_basetagscrpt"))&&d.parentNode.removeChild(d); c.contentEditable=!0;CKEDITOR.env.ie&&(c.hideFocus=!0,c.disabled=!0,c.removeAttribute("disabled"));delete this._.isLoadingData;this.$=c;f=new CKEDITOR.dom.document(f);this.setup();this.fixInitialSelection();var g=this;CKEDITOR.env.ie&&!CKEDITOR.env.edge&&f.getDocumentElement().addClass(f.$.compatMode);CKEDITOR.env.ie&&!CKEDITOR.env.edge&&e.enterMode!=CKEDITOR.ENTER_P?b("p"):CKEDITOR.env.edge&&15>CKEDITOR.env.version&&e.enterMode!=CKEDITOR.ENTER_DIV&&b("div");if(CKEDITOR.env.webkit||CKEDITOR.env.ie&& 10<CKEDITOR.env.version)f.getDocumentElement().on("mousedown",function(a){a.data.getTarget().is("html")&&setTimeout(function(){e.editable().focus()})});h(e);try{e.document.$.execCommand("2D-position",!1,!0)}catch(n){}(CKEDITOR.env.gecko||CKEDITOR.env.ie&&"CSS1Compat"==e.document.$.compatMode)&&this.attachListener(this,"keydown",function(a){var b=a.data.getKeystroke();if(33==b||34==b)if(CKEDITOR.env.ie)setTimeout(function(){e.getSelection().scrollIntoView()},0);else if(e.window.$.innerHeight>this.$.offsetHeight){var c= e.createRange();c[33==b?"moveToElementEditStart":"moveToElementEditEnd"](this);c.select();a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(f,"blur",function(){try{f.$.selection.empty()}catch(a){}});CKEDITOR.env.iOS&&this.attachListener(f,"touchend",function(){a.focus()});c=e.document.getElementsByTag("title").getItem(0);c.data("cke-title",c.getText());CKEDITOR.env.ie&&(e.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){"unloaded"==this.status&&(this.status="ready"); e.fire("contentDom");this._.isPendingFocus&&(e.focus(),this._.isPendingFocus=!1);setTimeout(function(){e.fire("dataReady")},0)},0,this)}}function h(a){function b(){var c;a.editable().attachListener(a,"selectionChange",function(){var b=a.getSelection().getSelectedElement();b&&(c&&(c.detachEvent("onresizestart",e),c=null),b.$.attachEvent("onresizestart",e),c=b.$)})}function e(a){a.returnValue=!1}if(CKEDITOR.env.gecko)try{var f=a.document.$;f.execCommand("enableObjectResizing",!1,!a.config.disableObjectResizing); -f.execCommand("enableInlineTableEditing",!1,!a.config.disableNativeTableHandles)}catch(c){}else CKEDITOR.env.ie&&11>CKEDITOR.env.version&&a.config.disableObjectResizing&&b(a)}function f(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}");var b=[],e;for(e in CKEDITOR.dtd.$removeEmpty)b.push("html.CSS1Compat "+e+"[contenteditable\x3dfalse]");a.push(b.join(",")+"{display:inline-block}")}else CKEDITOR.env.gecko&&(a.push("html{height:100% !important}"), -a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"));a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n")}var e;CKEDITOR.plugins.add("wysiwygarea",{init:function(a){a.config.fullPage&&a.addFeature({allowedContent:"html head title; style [media,type]; body (*)[id]; meta link [*]",requiredContent:"body"});a.addMode("wysiwyg",function(b){function f(d){d&&d.removeListener();a.isDestroyed()||a.isDetached()||(a.editable(new e(a, -c.$.contentWindow.document.body)),a.setData(a.getData(1),b))}var h="document.open();"+(CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"")+"document.close();",h=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie&&!CKEDITOR.env.edge?"javascript:void(function(){"+encodeURIComponent(h)+"}())":"",c=CKEDITOR.dom.element.createFromHtml('\x3ciframe src\x3d"'+h+'" frameBorder\x3d"0"\x3e\x3c/iframe\x3e');c.setStyles({width:"100%",height:"100%"});c.addClass("cke_wysiwyg_frame").addClass("cke_reset"); -h=a.ui.space("contents");h.append(c);var d=CKEDITOR.env.ie&&!CKEDITOR.env.edge||CKEDITOR.env.gecko;if(d)c.on("load",f);var g=a.title,n=a.fire("ariaEditorHelpLabel",{}).label;g&&(CKEDITOR.env.ie&&n&&(g+=", "+n),c.setAttribute("title",g));if(n){var g=CKEDITOR.tools.getNextId(),y=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+g+'" class\x3d"cke_voice_label"\x3e'+n+"\x3c/span\x3e");h.append(y,1);c.setAttribute("aria-describedby",g)}a.on("beforeModeUnload",function(a){a.removeListener();y&&y.remove()}); -c.setAttributes({tabIndex:a.tabIndex,allowTransparency:"true"});!d&&f();a.fire("ariaWidget",c)})}});CKEDITOR.editor.prototype.addContentsCss=function(a){var b=this.config,e=b.contentsCss;CKEDITOR.tools.isArray(e)||(b.contentsCss=e?[e]:[]);b.contentsCss.push(a)};e=CKEDITOR.tools.createClass({$:function(){this.base.apply(this,arguments);this._.frameLoadedHandler=CKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(b,0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute("title")}, -base:CKEDITOR.editable,proto:{setData:function(a,b){var e=this.editor;if(b)this.setHtml(a),this.fixInitialSelection(),e.fire("dataReady");else{this._.isLoadingData=!0;e._.dataStore={id:1};var h=e.config,c=h.fullPage,d=h.docType,g=CKEDITOR.tools.buildStyleHtml(f()).replace(/<style>/,'\x3cstyle data-cke-temp\x3d"1"\x3e');c||(g+=CKEDITOR.tools.buildStyleHtml(e.config.contentsCss));var n=h.baseHref?'\x3cbase href\x3d"'+h.baseHref+'" data-cke-temp\x3d"1" /\x3e':"";c&&(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){e.docType= -d=a;return""}).replace(/<\?xml\s[^\?]*\?>/i,function(a){e.xmlDeclaration=a;return""}));a=e.dataProcessor.toHtml(a);c?(/<body[\s|>]/.test(a)||(a="\x3cbody\x3e"+a),/<html[\s|>]/.test(a)||(a="\x3chtml\x3e"+a+"\x3c/html\x3e"),/<head[\s|>]/.test(a)?/<title[\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,"$\x26\x3ctitle\x3e\x3c/title\x3e")):a=a.replace(/<html[^>]*>/,"$\x26\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e"),n&&(a=a.replace(/<head[^>]*?>/,"$\x26"+n)),a=a.replace(/<\/head\s*>/,g+"$\x26"),a= -d+a):a=h.docType+'\x3chtml dir\x3d"'+h.contentsLangDirection+'" lang\x3d"'+(h.contentsLanguage||e.langCode)+'"\x3e\x3chead\x3e\x3ctitle\x3e'+this._.docTitle+"\x3c/title\x3e"+n+g+"\x3c/head\x3e\x3cbody"+(h.bodyId?' id\x3d"'+h.bodyId+'"':"")+(h.bodyClass?' class\x3d"'+h.bodyClass+'"':"")+"\x3e"+a+"\x3c/body\x3e\x3c/html\x3e";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'\x3cbody contenteditable\x3d"true" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/,"$\x26\x3c!-- cke-content-start --\x3e"))); -h='\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"'+(CKEDITOR.env.ie?' defer\x3d"defer" ':"")+"\x3evar wasLoaded\x3d0;function onload(){if(!wasLoaded)window.parent.CKEDITOR.tools.callFunction("+this._.frameLoadedHandler+",window);wasLoaded\x3d1;}"+(CKEDITOR.env.ie?"onload();":'document.addEventListener("DOMContentLoaded", onload, false );')+"\x3c/script\x3e";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(h+='\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e'); -n&&CKEDITOR.env.ie&&10>CKEDITOR.env.version&&(h+='\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e');a=a.replace(/(?=\s*<\/(:?head)>)/,h);this.clearCustomData();this.clearListeners();e.fire("contentDomUnload");var y=this.getDocument();try{y.write(a)}catch(w){setTimeout(function(){y.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();a=this.editor;var b=a.config,e=b.fullPage,f=e&&a.docType,c=e&&a.xmlDeclaration, -d=this.getDocument(),e=e?d.getDocumentElement().getOuterHtml():d.getBody().getHtml();CKEDITOR.env.gecko&&b.enterMode!=CKEDITOR.ENTER_BR&&(e=e.replace(/<br>(?=\s*(:?$|<\/body>))/,""));e=a.dataProcessor.toDataFormat(e);c&&(e=c+"\n"+e);f&&(e=f+"\n"+e);return e},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:e.baseProto.focus.call(this)},detach:function(){var a=this.editor,b=a.document,a=a.container.findOne("iframe.cke_wysiwyg_frame");e.baseProto.detach.call(this);this.clearCustomData(this._.expandoNumber); -b.getDocumentElement().clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);a&&(a.clearCustomData(),(b=a.removeCustomData("onResize"))&&b.removeListener(),a.isDetached()||a.remove())}}})}(),CKEDITOR.config.disableObjectResizing=!1,CKEDITOR.config.disableNativeTableHandles=!0,CKEDITOR.config.disableNativeSpellChecker=!0,CKEDITOR.config.plugins="dialogui,dialog,a11yhelp,about,autogrow,basicstyles,blockquote,notification,button,toolbar,clipboard,panel,floatpanel,menu,contextmenu,elementspath,enterkey,entities,popup,filetools,filebrowser,floatingspace,listblock,richcombo,format,horizontalrule,htmlwriter,lineutils,widgetselection,widget,image2,indent,indentlist,justify,menubutton,language,list,magicline,maximize,xml,ajax,pastetools,pastefromgdocs,pastefromlibreoffice,pastefromword,pastetext,removeformat,sharedspace,showblocks,showborders,sourcearea,sourcedialog,specialchar,stylescombo,tab,table,tabletools,tableresize,undo,wysiwygarea", +f.execCommand("enableInlineTableEditing",!1,!a.config.disableNativeTableHandles)}catch(c){}else CKEDITOR.env.ie&&11>CKEDITOR.env.version&&a.config.disableObjectResizing&&b()}function f(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}");var b=[],e;for(e in CKEDITOR.dtd.$removeEmpty)b.push("html.CSS1Compat "+e+"[contenteditable\x3dfalse]");a.push(b.join(",")+"{display:inline-block}")}else CKEDITOR.env.gecko&&(a.push("html{height:100% !important}"), +a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"));a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n")}var e;CKEDITOR.plugins.add("wysiwygarea",{init:function(a){a.config.fullPage&&a.addFeature({allowedContent:"html head title; style [media,type]; body (*)[id]; meta link [*]",requiredContent:"body"});a.addMode("wysiwyg",function(b){function f(d){d&&d.removeListener();if(!a.isDestroyed()&&!a.isDetached()&& +(a.editable(new e(a,v.getFrameDocument().getBody())),a.setData(a.getData(1),b),z)){if(t)a.on("mode",h,{iframe:v,editor:a,callback:b});a.on("mode",function(){a.status="ready"});c()}}function h(a){a&&a.removeListener();v.on("load",function(){x&&(x=!1,n())})}function c(){u=new MutationObserver(function(a){CKEDITOR.tools.array.forEach(a,d)});u.observe(a.config.observableParent,{childList:!0,subtree:!0})}function d(a){"childList"===a.type&&0!==a.addedNodes.length&&CKEDITOR.tools.array.forEach(a.addedNodes, +g)}function g(b){b.contains&&b.contains(a.container.$)&&(t?x=!0:n())}function n(){var c=a.getData(!1),d;a.editable().preserveIframe=!0;a.editable(null);d=new e(a,v.getFrameDocument().getBody());a.editable(d);a.status="recreating";a.setData(c,{callback:b,internal:!1,noSnapshot:!1})}var y="document.open();"+(CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"")+"document.close();",y=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie&&!CKEDITOR.env.edge?"javascript:void(function(){"+encodeURIComponent(y)+ +"}())":"",v=CKEDITOR.dom.element.createFromHtml('\x3ciframe src\x3d"'+y+'" frameBorder\x3d"0"\x3e\x3c/iframe\x3e');v.setStyles({width:"100%",height:"100%"});v.addClass("cke_wysiwyg_frame").addClass("cke_reset");y=a.ui.space("contents");y.append(v);var p=CKEDITOR.env.ie&&!CKEDITOR.env.edge||CKEDITOR.env.gecko;if(p)v.on("load",f);var q=a.title,r=a.fire("ariaEditorHelpLabel",{}).label,x=!1,t=CKEDITOR.env.ie&&11===CKEDITOR.env.version,z=!!window.MutationObserver,u;q&&(CKEDITOR.env.ie&&r&&(q+=", "+r), +v.setAttribute("title",q));if(r){var q=CKEDITOR.tools.getNextId(),w=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+q+'" class\x3d"cke_voice_label"\x3e'+r+"\x3c/span\x3e");y.append(w,1);v.setAttribute("aria-describedby",q)}a.on("beforeModeUnload",function(a){a.removeListener();w&&w.remove();z&&u.disconnect()});v.setAttributes({tabIndex:a.tabIndex,allowTransparency:"true"});!p&&f();a.fire("ariaWidget",v)})}});CKEDITOR.editor.prototype.addContentsCss=function(a){var b=this.config,e=b.contentsCss; +CKEDITOR.tools.isArray(e)||(b.contentsCss=e?[e]:[]);b.contentsCss.push(a)};e=CKEDITOR.tools.createClass({$:function(){this.base.apply(this,arguments);this._.frameLoadedHandler=CKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(b,0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute("title")},base:CKEDITOR.editable,proto:{preserveIframe:!1,setData:function(a,b){var e=this.editor;if(b)this.setHtml(a),this.fixInitialSelection(),e.fire("dataReady");else{this._.isLoadingData= +!0;e._.dataStore={id:1};var h=e.config,c=h.fullPage,d=h.docType,g=CKEDITOR.tools.buildStyleHtml(f()).replace(/<style>/,'\x3cstyle data-cke-temp\x3d"1"\x3e');c||(g+=CKEDITOR.tools.buildStyleHtml(e.config.contentsCss));var n=h.baseHref?'\x3cbase href\x3d"'+h.baseHref+'" data-cke-temp\x3d"1" /\x3e':"";c&&(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){e.docType=d=a;return""}).replace(/<\?xml\s[^\?]*\?>/i,function(a){e.xmlDeclaration=a;return""}));a=e.dataProcessor.toHtml(a);c?(/<body[\s|>]/.test(a)||(a= +"\x3cbody\x3e"+a),/<html[\s|>]/.test(a)||(a="\x3chtml\x3e"+a+"\x3c/html\x3e"),/<head[\s|>]/.test(a)?/<title[\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,"$\x26\x3ctitle\x3e\x3c/title\x3e")):a=a.replace(/<html[^>]*>/,"$\x26\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e"),n&&(a=a.replace(/<head[^>]*?>/,"$\x26"+n)),a=a.replace(/<\/head\s*>/,g+"$\x26"),a=d+a):a=h.docType+'\x3chtml dir\x3d"'+h.contentsLangDirection+'" lang\x3d"'+(h.contentsLanguage||e.langCode)+'"\x3e\x3chead\x3e\x3ctitle\x3e'+this._.docTitle+ +"\x3c/title\x3e"+n+g+"\x3c/head\x3e\x3cbody"+(h.bodyId?' id\x3d"'+h.bodyId+'"':"")+(h.bodyClass?' class\x3d"'+h.bodyClass+'"':"")+"\x3e"+a+"\x3c/body\x3e\x3c/html\x3e";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'\x3cbody contenteditable\x3d"true" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/,"$\x26\x3c!-- cke-content-start --\x3e")));h='\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"'+(CKEDITOR.env.ie?' defer\x3d"defer" ':"")+"\x3evar wasLoaded\x3d0;function onload(){if(!wasLoaded)window.parent.CKEDITOR \x26\x26 window.parent.CKEDITOR.tools.callFunction("+ +this._.frameLoadedHandler+",window);wasLoaded\x3d1;}"+(CKEDITOR.env.ie?"onload();":'document.addEventListener("DOMContentLoaded", onload, false );')+"\x3c/script\x3e";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(h+='\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e');n&&CKEDITOR.env.ie&&10>CKEDITOR.env.version&&(h+='\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e'); +a=a.replace(/(?=\s*<\/(:?head)>)/,h);this.clearCustomData();this.clearListeners();e.fire("contentDomUnload");var y=this.getDocument();try{y.write(a)}catch(v){setTimeout(function(){y.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();a=this.editor;var b=a.config,e=b.fullPage,f=e&&a.docType,c=e&&a.xmlDeclaration,d=this.getDocument(),e=e?d.getDocumentElement().getOuterHtml():d.getBody().getHtml();CKEDITOR.env.gecko&&b.enterMode!=CKEDITOR.ENTER_BR&&(e=e.replace(/<br>(?=\s*(:?$|<\/body>))/, +""));e=a.dataProcessor.toDataFormat(e);c&&(e=c+"\n"+e);f&&(e=f+"\n"+e);return e},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:e.baseProto.focus.call(this)},detach:function(){if(!this.preserveIframe){var a=this.editor,b=a.document,a=a.container.findOne("iframe.cke_wysiwyg_frame");e.baseProto.detach.call(this);this.clearCustomData(this._.expandoNumber);b.getDocumentElement().clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);a&&(a.clearCustomData(),(b=a.removeCustomData("onResize"))&& +b.removeListener(),a.isDetached()||a.remove())}}}})}(),CKEDITOR.config.disableObjectResizing=!1,CKEDITOR.config.disableNativeTableHandles=!0,CKEDITOR.config.disableNativeSpellChecker=!0,CKEDITOR.config.observableParent=CKEDITOR.document.$,CKEDITOR.config.plugins="dialogui,dialog,a11yhelp,about,autogrow,basicstyles,blockquote,notification,button,toolbar,clipboard,panel,floatpanel,menu,contextmenu,elementspath,enterkey,entities,popup,filetools,filebrowser,floatingspace,listblock,richcombo,format,horizontalrule,htmlwriter,lineutils,widgetselection,widget,image2,indent,indentlist,justify,menubutton,language,list,magicline,maximize,xml,ajax,pastetools,pastefromgdocs,pastefromlibreoffice,pastefromword,pastetext,removeformat,sharedspace,showblocks,showborders,sourcearea,sourcedialog,specialchar,stylescombo,tab,table,tabletools,tableresize,undo,wysiwygarea", CKEDITOR.config.skin="moono-lisa",function(){var b=function(b,f){var e=CKEDITOR.getUrl("plugins/"+f);b=b.split(",");for(var a=0;a<b.length;a++)CKEDITOR.skin.icons[b[a]]={path:e,offset:-b[++a],bgsize:b[++a]}};CKEDITOR.env.hidpi?b("about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,blockquote,168,,copy-rtl,192,,copy,216,,cut-rtl,240,,cut,264,,paste-rtl,288,,paste,312,,horizontalrule,336,,image,360,,indent-rtl,384,,indent,408,,outdent-rtl,432,,outdent,456,,justifyblock,480,,justifycenter,504,,justifyleft,528,,justifyright,552,,language,576,,bulletedlist-rtl,600,,bulletedlist,624,,numberedlist-rtl,648,,numberedlist,672,,maximize,696,,pastefromword-rtl,720,,pastefromword,744,,pastetext-rtl,768,,pastetext,792,,removeformat,816,,showblocks-rtl,840,,showblocks,864,,source-rtl,888,,source,912,,sourcedialog-rtl,936,,sourcedialog,960,,specialchar,984,,table,1008,,redo-rtl,1032,,redo,1056,,undo-rtl,1080,,undo,1104,,simplebox,2256,auto", "icons_hidpi.png"):b("about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,blockquote,168,auto,copy-rtl,192,auto,copy,216,auto,cut-rtl,240,auto,cut,264,auto,paste-rtl,288,auto,paste,312,auto,horizontalrule,336,auto,image,360,auto,indent-rtl,384,auto,indent,408,auto,outdent-rtl,432,auto,outdent,456,auto,justifyblock,480,auto,justifycenter,504,auto,justifyleft,528,auto,justifyright,552,auto,language,576,auto,bulletedlist-rtl,600,auto,bulletedlist,624,auto,numberedlist-rtl,648,auto,numberedlist,672,auto,maximize,696,auto,pastefromword-rtl,720,auto,pastefromword,744,auto,pastetext-rtl,768,auto,pastetext,792,auto,removeformat,816,auto,showblocks-rtl,840,auto,showblocks,864,auto,source-rtl,888,auto,source,912,auto,sourcedialog-rtl,936,auto,sourcedialog,960,auto,specialchar,984,auto,table,1008,auto,redo-rtl,1032,auto,redo,1056,auto,undo-rtl,1080,auto,undo,1104,auto,simplebox,1128,auto", "icons.png")}())})(); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/af.js b/core/assets/vendor/ckeditor/lang/af.js index 910c018b9ade..7be63469b732 100644 --- a/core/assets/vendor/ckeditor/lang/af.js +++ b/core/assets/vendor/ckeditor/lang/af.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['af']={"widget":{"move":"Klik en trek on te beweeg","label":"%1 widget"},"undo":{"redo":"Oordoen","undo":"Ontdoen"},"toolbar":{"toolbarCollapse":"Verklein werkbalk","toolbarExpand":"Vergroot werkbalk","toolbarGroups":{"document":"Dokument","clipboard":"Knipbord/Undo","editing":"Verander","forms":"Vorms","basicstyles":"Eenvoudige Styl","paragraph":"Paragraaf","links":"Skakels","insert":"Toevoeg","styles":"Style","colors":"Kleure","tools":"Gereedskap"},"toolbars":"Werkbalke"},"table":{"border":"Randbreedte","caption":"Naam","cell":{"menu":"Sel","insertBefore":"Voeg sel in voor","insertAfter":"Voeg sel in na","deleteCell":"Verwyder sel","merge":"Voeg selle saam","mergeRight":"Voeg saam na regs","mergeDown":"Voeg saam ondertoe","splitHorizontal":"Splits sel horisontaal","splitVertical":"Splits sel vertikaal","title":"Sel eienskappe","cellType":"Sel tipe","rowSpan":"Omspan rye","colSpan":"Omspan kolomme","wordWrap":"Woord terugloop","hAlign":"Horisontale oplyning","vAlign":"Vertikale oplyning","alignBaseline":"Basislyn","bgColor":"Agtergrondkleur","borderColor":"Randkleur","data":"Inhoud","header":"Opskrif","yes":"Ja","no":"Nee","invalidWidth":"Selbreedte moet 'n getal wees.","invalidHeight":"Selhoogte moet 'n getal wees.","invalidRowSpan":"Omspan rye moet 'n heelgetal wees.","invalidColSpan":"Omspan kolomme moet 'n heelgetal wees.","chooseColor":"Kies"},"cellPad":"Sel-spasie","cellSpace":"Sel-afstand","column":{"menu":"Kolom","insertBefore":"Voeg kolom in voor","insertAfter":"Voeg kolom in na","deleteColumn":"Verwyder kolom"},"columns":"Kolomme","deleteTable":"Verwyder tabel","headers":"Opskrifte","headersBoth":"Beide ","headersColumn":"Eerste kolom","headersNone":"Geen","headersRow":"Eerste ry","heightUnit":"height unit","invalidBorder":"Randbreedte moet 'n getal wees.","invalidCellPadding":"Sel-spasie moet 'n getal wees.","invalidCellSpacing":"Sel-afstand moet 'n getal wees.","invalidCols":"Aantal kolomme moet 'n getal groter as 0 wees.","invalidHeight":"Tabelhoogte moet 'n getal wees.","invalidRows":"Aantal rye moet 'n getal groter as 0 wees.","invalidWidth":"Tabelbreedte moet 'n getal wees.","menu":"Tabel eienskappe","row":{"menu":"Ry","insertBefore":"Voeg ry in voor","insertAfter":"Voeg ry in na","deleteRow":"Verwyder ry"},"rows":"Rye","summary":"Opsomming","title":"Tabel eienskappe","toolbar":"Tabel","widthPc":"persent","widthPx":"piksels","widthUnit":"breedte-eenheid"},"stylescombo":{"label":"Styl","panelTitle":"Vormaat style","panelTitle1":"Blok style","panelTitle2":"Inlyn style","panelTitle3":"Objek style"},"specialchar":{"options":"Spesiale karakter-opsies","title":"Kies spesiale karakter","toolbar":"Voeg spesiaale karakter in"},"sourcedialog":{"toolbar":"Bron","title":"Bron"},"sourcearea":{"toolbar":"Bron"},"showblocks":{"toolbar":"Toon blokke"},"removeformat":{"toolbar":"Verwyder opmaak"},"pastetext":{"button":"Voeg by as eenvoudige teks","pasteNotification":"Druk %1 om by te voeg. Jou leser ondersteun nie byvoeg deur die toolbar knoppie of die konteks kieslys nie","title":"Voeg by as eenvoudige teks"},"pastefromword":{"confirmCleanup":"Die teks wat u wil byvoeg lyk asof dit uit Word gekopiëer is. Wil u dit eers skoonmaak voordat dit bygevoeg word?","error":"Die bygevoegte teks kon nie skoongemaak word nie, weens 'n interne fout","title":"Uit Word byvoeg","toolbar":"Uit Word byvoeg"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimaliseer","minimize":"Minimaliseer"},"magicline":{"title":"Voeg paragraaf hier in"},"list":{"bulletedlist":"Ongenommerde lys","numberedlist":"Genommerde lys"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Vergroot inspring","outdent":"Verklein inspring"},"image2":{"alt":"Alternatiewe teks","btnUpload":"Stuur na bediener","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Afbeelding informasie","lockRatio":"Vaste proporsie","menu":"Afbeelding eienskappe","pathName":"image","pathNameCaption":"caption","resetSize":"Herstel grootte","resizer":"Click and drag to resize","title":"Afbeelding eienskappe","uploadTab":"Oplaai","urlMissing":"Die URL na die afbeelding ontbreek.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Horisontale lyn invoeg"},"format":{"label":"Opmaak","panelTitle":"Opmaak","tag_address":"Adres","tag_div":"Normaal (DIV)","tag_h1":"Opskrif 1","tag_h2":"Opskrif 2","tag_h3":"Opskrif 3","tag_h4":"Opskrif 4","tag_h5":"Opskrif 5","tag_h6":"Opskrif 6","tag_p":"Normaal","tag_pre":"Opgemaak"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elemente-pad","eleTitle":"%1 element"},"contextmenu":{"options":"Konteks Spyskaart-opsies"},"clipboard":{"copy":"Kopiëer","copyError":"U leser se sekuriteitsinstelling belet die kopiëringsaksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+C).","cut":"Uitsnei","cutError":"U leser se sekuriteitsinstelling belet die outomatiese uitsnei-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).","paste":"Byvoeg","pasteNotification":"Druk %1 om by te voeg. You leser ondersteun nie die toolbar knoppie of inoud kieslysie opsie nie. ","pasteArea":"Area byvoeg","pasteMsg":"Voeg jou inhoud in die gebied onder by en druk OK"},"blockquote":{"toolbar":"Sitaatblok"},"basicstyles":{"bold":"Vet","italic":"Skuins","strike":"Deurgestreep","subscript":"Onderskrif","superscript":"Bo-skrif","underline":"Onderstreep"},"about":{"copy":"Kopiereg © $1. Alle regte voorbehou.","dlgTitle":"Meer oor CKEditor 4","moreInfo":"Vir lisensie-informasie, besoek asb. ons webwerf:"},"editor":"Woordverwerker","editorPanel":"Woordverwerkerpaneel","common":{"editorHelp":"Druk op ALT 0 vir hulp","browseServer":"Blaai op bediener","url":"URL","protocol":"Protokol","upload":"Oplaai","uploadSubmit":"Stuur aan die bediener","image":"Beeld","flash":"Flash","form":"Vorm","checkbox":"Merkhokkie","radio":"Radioknoppie","textField":"Teksveld","textarea":"Teksarea","hiddenField":"Versteekteveld","button":"Knop","select":"Keuseveld","imageButton":"Beeldknop","notSet":"<geen instelling>","id":"Id","name":"Naam","langDir":"Skryfrigting","langDirLtr":"Links na regs (LTR)","langDirRtl":"Regs na links (RTL)","langCode":"Taalkode","longDescr":"Lang beskrywing URL","cssClass":"CSS klasse","advisoryTitle":"Aanbevole titel","cssStyle":"Styl","ok":"OK","cancel":"Kanselleer","close":"Sluit","preview":"Voorbeeld","resize":"Skalierung","generalTab":"Algemeen","advancedTab":"Gevorderd","validateNumberFailed":"Hierdie waarde is nie 'n nommer nie.","confirmNewPage":"Alle wysiginge sal verlore gaan. Is jy seker dat jy 'n nuwe bladsy wil laai?","confirmCancel":"Sommige opsies is gewysig. Is jy seker dat jy hierdie dialoogvenster wil sluit?","options":"Opsies","target":"Teiken","targetNew":"Nuwe venster (_blank)","targetTop":"Boonste venster (_top)","targetSelf":"Selfde venster (_self)","targetParent":"Oorspronklike venster (_parent)","langDirLTR":"Links na Regs (LTR)","langDirRTL":"Regs na Links (RTL)","styles":"Styl","cssClasses":"CSS klasse","width":"Breedte","height":"Hoogte","align":"Orienteerung","left":"Links","right":"Regs","center":"Middel","justify":"Eweredig","alignLeft":"Links oplyn","alignRight":"Regs oplyn","alignCenter":"Middel oplyn","alignTop":"Bo","alignMiddle":"Middel","alignBottom":"Onder","alignNone":"Geen","invalidValue":"Ongeldige waarde","invalidHeight":"Hoogte moet 'n getal wees","invalidWidth":"Breedte moet 'n getal wees.","invalidLength":"Die waarde vir die veld \"%1\" moet 'n posetiewe nommer wees met of sonder die meeteenheid (%2).","invalidCssLength":"Die waarde vir die \"%1\" veld moet 'n posetiewe getal wees met of sonder 'n geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","invalidHtmlLength":"Die waarde vir die \"%1\" veld moet 'n posetiewe getal wees met of sonder 'n geldige HTML eenheid (px of %).","invalidInlineStyle":"Ongeldige CSS. Formaat is een of meer sleutel-wert paare, \"naam : wert\" met kommapunte gesky.","cssLengthTooltip":"Voeg 'n getal wert in pixel in, of 'n waarde met geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","unavailable":"%1<span class=\"cke_accessibility\">, nie beskikbaar nie</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Skuif","17":"Ctrl","18":"Alt","32":"Spasie","35":"Einde","36":"Tuis","46":"Verwyder","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Bevel"},"keyboardShortcut":"Sleutel kombenasie","optionDefault":"Verstek"}}; \ No newline at end of file +CKEDITOR.lang['af']={"widget":{"move":"Klik en trek on te beweeg","label":"%1 widget"},"undo":{"redo":"Oordoen","undo":"Ontdoen"},"toolbar":{"toolbarCollapse":"Verklein werkbalk","toolbarExpand":"Vergroot werkbalk","toolbarGroups":{"document":"Dokument","clipboard":"Knipbord/Undo","editing":"Verander","forms":"Vorms","basicstyles":"Eenvoudige Styl","paragraph":"Paragraaf","links":"Skakels","insert":"Toevoeg","styles":"Style","colors":"Kleure","tools":"Gereedskap"},"toolbars":"Werkbalke"},"table":{"border":"Randbreedte","caption":"Naam","cell":{"menu":"Sel","insertBefore":"Voeg sel in voor","insertAfter":"Voeg sel in na","deleteCell":"Verwyder sel","merge":"Voeg selle saam","mergeRight":"Voeg saam na regs","mergeDown":"Voeg saam ondertoe","splitHorizontal":"Splits sel horisontaal","splitVertical":"Splits sel vertikaal","title":"Sel eienskappe","cellType":"Sel tipe","rowSpan":"Omspan rye","colSpan":"Omspan kolomme","wordWrap":"Woord terugloop","hAlign":"Horisontale oplyning","vAlign":"Vertikale oplyning","alignBaseline":"Basislyn","bgColor":"Agtergrondkleur","borderColor":"Randkleur","data":"Inhoud","header":"Opskrif","yes":"Ja","no":"Nee","invalidWidth":"Selbreedte moet 'n getal wees.","invalidHeight":"Selhoogte moet 'n getal wees.","invalidRowSpan":"Omspan rye moet 'n heelgetal wees.","invalidColSpan":"Omspan kolomme moet 'n heelgetal wees.","chooseColor":"Kies"},"cellPad":"Sel-spasie","cellSpace":"Sel-afstand","column":{"menu":"Kolom","insertBefore":"Voeg kolom in voor","insertAfter":"Voeg kolom in na","deleteColumn":"Verwyder kolom"},"columns":"Kolomme","deleteTable":"Verwyder tabel","headers":"Opskrifte","headersBoth":"Beide ","headersColumn":"Eerste kolom","headersNone":"Geen","headersRow":"Eerste ry","heightUnit":"height unit","invalidBorder":"Randbreedte moet 'n getal wees.","invalidCellPadding":"Sel-spasie moet 'n getal wees.","invalidCellSpacing":"Sel-afstand moet 'n getal wees.","invalidCols":"Aantal kolomme moet 'n getal groter as 0 wees.","invalidHeight":"Tabelhoogte moet 'n getal wees.","invalidRows":"Aantal rye moet 'n getal groter as 0 wees.","invalidWidth":"Tabelbreedte moet 'n getal wees.","menu":"Tabel eienskappe","row":{"menu":"Ry","insertBefore":"Voeg ry in voor","insertAfter":"Voeg ry in na","deleteRow":"Verwyder ry"},"rows":"Rye","summary":"Opsomming","title":"Tabel eienskappe","toolbar":"Tabel","widthPc":"persent","widthPx":"piksels","widthUnit":"breedte-eenheid"},"stylescombo":{"label":"Styl","panelTitle":"Vormaat style","panelTitle1":"Blok style","panelTitle2":"Inlyn style","panelTitle3":"Objek style"},"specialchar":{"options":"Spesiale karakter-opsies","title":"Kies spesiale karakter","toolbar":"Voeg spesiaale karakter in"},"sourcedialog":{"toolbar":"Bron","title":"Bron"},"sourcearea":{"toolbar":"Bron"},"showblocks":{"toolbar":"Toon blokke"},"removeformat":{"toolbar":"Verwyder opmaak"},"pastetext":{"button":"Voeg by as eenvoudige teks","pasteNotification":"Druk %1 om by te voeg. Jou leser ondersteun nie byvoeg deur die toolbar knoppie of die konteks kieslys nie","title":"Voeg by as eenvoudige teks"},"pastefromword":{"confirmCleanup":"Die teks wat u wil byvoeg lyk asof dit uit Word gekopiëer is. Wil u dit eers skoonmaak voordat dit bygevoeg word?","error":"Die bygevoegte teks kon nie skoongemaak word nie, weens 'n interne fout","title":"Uit Word byvoeg","toolbar":"Uit Word byvoeg"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimaliseer","minimize":"Minimaliseer"},"magicline":{"title":"Voeg paragraaf hier in"},"list":{"bulletedlist":"Ongenommerde lys","numberedlist":"Genommerde lys"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Vergroot inspring","outdent":"Verklein inspring"},"image2":{"alt":"Alternatiewe teks","btnUpload":"Stuur na bediener","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Afbeelding informasie","lockRatio":"Vaste proporsie","menu":"Afbeelding eienskappe","pathName":"image","pathNameCaption":"caption","resetSize":"Herstel grootte","resizer":"Click and drag to resize","title":"Afbeelding eienskappe","uploadTab":"Oplaai","urlMissing":"Die URL na die afbeelding ontbreek.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Horisontale lyn invoeg"},"format":{"label":"Opmaak","panelTitle":"Opmaak","tag_address":"Adres","tag_div":"Normaal (DIV)","tag_h1":"Opskrif 1","tag_h2":"Opskrif 2","tag_h3":"Opskrif 3","tag_h4":"Opskrif 4","tag_h5":"Opskrif 5","tag_h6":"Opskrif 6","tag_p":"Normaal","tag_pre":"Opgemaak"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elemente-pad","eleTitle":"%1 element"},"contextmenu":{"options":"Konteks Spyskaart-opsies"},"clipboard":{"copy":"Kopiëer","copyError":"U leser se sekuriteitsinstelling belet die kopiëringsaksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+C).","cut":"Uitsnei","cutError":"U leser se sekuriteitsinstelling belet die outomatiese uitsnei-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).","paste":"Byvoeg","pasteNotification":"Druk %1 om by te voeg. You leser ondersteun nie die toolbar knoppie of inoud kieslysie opsie nie. ","pasteArea":"Area byvoeg","pasteMsg":"Voeg jou inhoud in die gebied onder by en druk OK","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Sitaatblok"},"basicstyles":{"bold":"Vet","italic":"Skuins","strike":"Deurgestreep","subscript":"Onderskrif","superscript":"Bo-skrif","underline":"Onderstreep"},"about":{"copy":"Kopiereg © $1. Alle regte voorbehou.","dlgTitle":"Meer oor CKEditor 4","moreInfo":"Vir lisensie-informasie, besoek asb. ons webwerf:"},"editor":"Woordverwerker","editorPanel":"Woordverwerkerpaneel","common":{"editorHelp":"Druk op ALT 0 vir hulp","browseServer":"Blaai op bediener","url":"URL","protocol":"Protokol","upload":"Oplaai","uploadSubmit":"Stuur aan die bediener","image":"Beeld","form":"Vorm","checkbox":"Merkhokkie","radio":"Radioknoppie","textField":"Teksveld","textarea":"Teksarea","hiddenField":"Versteekteveld","button":"Knop","select":"Keuseveld","imageButton":"Beeldknop","notSet":"<geen instelling>","id":"Id","name":"Naam","langDir":"Skryfrigting","langDirLtr":"Links na regs (LTR)","langDirRtl":"Regs na links (RTL)","langCode":"Taalkode","longDescr":"Lang beskrywing URL","cssClass":"CSS klasse","advisoryTitle":"Aanbevole titel","cssStyle":"Styl","ok":"OK","cancel":"Kanselleer","close":"Sluit","preview":"Voorbeeld","resize":"Skalierung","generalTab":"Algemeen","advancedTab":"Gevorderd","validateNumberFailed":"Hierdie waarde is nie 'n nommer nie.","confirmNewPage":"Alle wysiginge sal verlore gaan. Is jy seker dat jy 'n nuwe bladsy wil laai?","confirmCancel":"Sommige opsies is gewysig. Is jy seker dat jy hierdie dialoogvenster wil sluit?","options":"Opsies","target":"Teiken","targetNew":"Nuwe venster (_blank)","targetTop":"Boonste venster (_top)","targetSelf":"Selfde venster (_self)","targetParent":"Oorspronklike venster (_parent)","langDirLTR":"Links na Regs (LTR)","langDirRTL":"Regs na Links (RTL)","styles":"Styl","cssClasses":"CSS klasse","width":"Breedte","height":"Hoogte","align":"Orienteerung","left":"Links","right":"Regs","center":"Middel","justify":"Eweredig","alignLeft":"Links oplyn","alignRight":"Regs oplyn","alignCenter":"Middel oplyn","alignTop":"Bo","alignMiddle":"Middel","alignBottom":"Onder","alignNone":"Geen","invalidValue":"Ongeldige waarde","invalidHeight":"Hoogte moet 'n getal wees","invalidWidth":"Breedte moet 'n getal wees.","invalidLength":"Die waarde vir die veld \"%1\" moet 'n posetiewe nommer wees met of sonder die meeteenheid (%2).","invalidCssLength":"Die waarde vir die \"%1\" veld moet 'n posetiewe getal wees met of sonder 'n geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","invalidHtmlLength":"Die waarde vir die \"%1\" veld moet 'n posetiewe getal wees met of sonder 'n geldige HTML eenheid (px of %).","invalidInlineStyle":"Ongeldige CSS. Formaat is een of meer sleutel-wert paare, \"naam : wert\" met kommapunte gesky.","cssLengthTooltip":"Voeg 'n getal wert in pixel in, of 'n waarde met geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","unavailable":"%1<span class=\"cke_accessibility\">, nie beskikbaar nie</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Skuif","17":"Ctrl","18":"Alt","32":"Spasie","35":"Einde","36":"Tuis","46":"Verwyder","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Bevel"},"keyboardShortcut":"Sleutel kombenasie","optionDefault":"Verstek"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ar.js b/core/assets/vendor/ckeditor/lang/ar.js index eada9eb5a142..af582955df44 100644 --- a/core/assets/vendor/ckeditor/lang/ar.js +++ b/core/assets/vendor/ckeditor/lang/ar.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ar']={"widget":{"move":"إضغط Ùˆ إسØب للتØريك","label":"%1 widget"},"undo":{"redo":"إعادة","undo":"تراجع"},"toolbar":{"toolbarCollapse":"تقليص شريط الأدوت","toolbarExpand":"تمديد شريط الأدوات","toolbarGroups":{"document":"مستند","clipboard":"الØاÙظة/الرجوع","editing":"تØرير","forms":"نماذج","basicstyles":"نمط بسيط","paragraph":"Ùقرة","links":"روابط","insert":"إدراج","styles":"أنماط","colors":"ألوان","tools":"أدوات"},"toolbars":"أشرطة أدوات المØرر"},"table":{"border":"الØدود","caption":"الوصÙ","cell":{"menu":"خلية","insertBefore":"إدراج خلية قبل","insertAfter":"إدراج خلية بعد","deleteCell":"Øذ٠خلية","merge":"دمج خلايا","mergeRight":"دمج لليمين","mergeDown":"دمج للأسÙÙ„","splitHorizontal":"تقسيم الخلية Ø£Ùقياً","splitVertical":"تقسيم الخلية عمودياً","title":"خصائص الخلية","cellType":"نوع الخلية","rowSpan":"امتداد الصÙÙˆÙ","colSpan":"امتداد الأعمدة","wordWrap":"التÙا٠النص","hAlign":"Ù…Øاذاة Ø£Ùقية","vAlign":"Ù…Øاذاة رأسية","alignBaseline":"خط القاعدة","bgColor":"لون الخلÙية","borderColor":"لون الØدود","data":"بيانات","header":"عنوان","yes":"نعم","no":"لا","invalidWidth":"عرض الخلية يجب أن يكون عدداً.","invalidHeight":"ارتÙاع الخلية يجب أن يكون عدداً.","invalidRowSpan":"امتداد الصÙو٠يجب أن يكون عدداً صØÙŠØاً.","invalidColSpan":"امتداد الأعمدة يجب أن يكون عدداً صØÙŠØاً.","chooseColor":"اختر"},"cellPad":"المساÙØ© البادئة","cellSpace":"تباعد الخلايا","column":{"menu":"عمود","insertBefore":"إدراج عمود قبل","insertAfter":"إدراج عمود بعد","deleteColumn":"Øذ٠أعمدة"},"columns":"أعمدة","deleteTable":"Øذ٠الجدول","headers":"العناوين","headersBoth":"كلاهما","headersColumn":"العمود الأول","headersNone":"بدون","headersRow":"الص٠الأول","heightUnit":"height unit","invalidBorder":"Øجم الØد يجب أن يكون عدداً.","invalidCellPadding":"المساÙØ© البادئة يجب أن تكون عدداً","invalidCellSpacing":"المساÙØ© بين الخلايا يجب أن تكون عدداً.","invalidCols":"عدد الأعمدة يجب أن يكون عدداً أكبر من صÙر.","invalidHeight":"ارتÙاع الجدول يجب أن يكون عدداً.","invalidRows":"عدد الصÙو٠يجب أن يكون عدداً أكبر من صÙر.","invalidWidth":"عرض الجدول يجب أن يكون عدداً.","menu":"خصائص الجدول","row":{"menu":"صÙ","insertBefore":"إدراج ص٠قبل","insertAfter":"إدراج ص٠بعد","deleteRow":"Øذ٠صÙÙˆÙ"},"rows":"صÙÙˆÙ","summary":"الخلاصة","title":"خصائص الجدول","toolbar":"جدول","widthPc":"بالمئة","widthPx":"بكسل","widthUnit":"ÙˆØدة العرض"},"stylescombo":{"label":"أنماط","panelTitle":"أنماط التنسيق","panelTitle1":"أنماط الÙقرة","panelTitle2":"أنماط مضمنة","panelTitle3":"أنماط الكائن"},"specialchar":{"options":"خيارات الأØر٠الخاصة","title":"اختر Øر٠خاص","toolbar":"إدراج Øر٠خاص"},"sourcedialog":{"toolbar":"المصدر","title":"المصدر"},"sourcearea":{"toolbar":"المصدر"},"showblocks":{"toolbar":"مخطط تÙصيلي"},"removeformat":{"toolbar":"إزالة التنسيقات"},"pastetext":{"button":"لصق كنص بسيط","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"لصق كنص بسيط"},"pastefromword":{"confirmCleanup":"يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيÙÙ‡ قبل الشروع ÙÙŠ عملية اللصق؟","error":"لم يتم Ù…Ø³Ø Ø§Ù„Ù…Ø¹Ù„ÙˆÙ…Ø§Øª الملصقة لخلل داخلي","title":"لصق من وورد","toolbar":"لصق من وورد"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"تكبير","minimize":"تصغير"},"magicline":{"title":"إدراج Ùقرة هنا"},"list":{"bulletedlist":"ادخال/Øذ٠تعداد نقطي","numberedlist":"ادخال/Øذ٠تعداد رقمي"},"language":{"button":"Øدد اللغة","remove":"Øذ٠اللغة"},"indent":{"indent":"زيادة المساÙØ© البادئة","outdent":"إنقاص المساÙØ© البادئة"},"image2":{"alt":"عنوان الصورة","btnUpload":"أرسلها للخادم","captioned":"صورة ذات اسم","captionPlaceholder":"تسمية","infoTab":"معلومات الصورة","lockRatio":"تناسق الØجم","menu":"خصائص الصورة","pathName":"صورة","pathNameCaption":"تسمية","resetSize":"إستعادة الØجم الأصلي","resizer":"انقر ثم اسØب للتØجيم","title":"خصائص الصورة","uploadTab":"رÙع","urlMissing":"عنوان مصدر الصورة Ù…Ùقود","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"خط Ùاصل"},"format":{"label":"تنسيق","panelTitle":"تنسيق الÙقرة","tag_address":"عنوان","tag_div":"عادي (DIV)","tag_h1":"العنوان 1","tag_h2":"العنوان 2","tag_h3":"العنوان 3","tag_h4":"العنوان 4","tag_h5":"العنوان 5","tag_h6":"العنوان 6","tag_p":"عادي","tag_pre":"منسّق"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"مسار العنصر","eleTitle":"عنصر 1%"},"contextmenu":{"options":"خصائص قائمة السياق"},"clipboard":{"copy":"نسخ","copyError":"الإعدادات الأمنية للمتصÙØ Ø§Ù„Ø°ÙŠ تستخدمه تمنع عمليات النسخ التلقائي. Ùضلاً إستخدم لوØØ© المÙØ§ØªÙŠØ Ù„Ùعل ذلك (Ctrl/Cmd+C).","cut":"قص","cutError":"الإعدادات الأمنية للمتصÙØ Ø§Ù„Ø°ÙŠ تستخدمه تمنع القص التلقائي. Ùضلاً إستخدم لوØØ© المÙØ§ØªÙŠØ Ù„Ùعل ذلك (Ctrl/Cmd+X).","paste":"لصق","pasteNotification":"اضغط %1 للصق. اللصق عن طريق شريط الادوات او القائمة غير مدعوم من المتصÙØ Ø§Ù„Ù…Ø³ØªØ®Ø¯Ù… من قبلك.","pasteArea":"منطقة اللصق","pasteMsg":"الصق المØتوى بداخل المساØØ© المخصصة ادناه ثم اضغط على OK"},"blockquote":{"toolbar":"اقتباس"},"basicstyles":{"bold":"عريض","italic":"مائل","strike":"يتوسطه خط","subscript":"منخÙض","superscript":"مرتÙع","underline":"تسطير"},"about":{"copy":"Øقوق النشر © $1. جميع الØقوق Ù…ØÙوظة.","dlgTitle":"عن CKEditor","moreInfo":"للØصول على معلومات الترخيص ØŒ يرجى زيارة موقعنا:"},"editor":"Ù…Øرر النص الغني","editorPanel":"لائØØ© Ù…Øرر النص المنسق","common":{"editorHelp":"إضغط على ALT + 0 للØصول على المساعدة.","browseServer":"تصÙØ","url":"الرابط","protocol":"البروتوكول","upload":"رÙع","uploadSubmit":"أرسل","image":"صورة","flash":"Ùلاش","form":"نموذج","checkbox":"خانة إختيار","radio":"زر اختيار","textField":"مربع نص","textarea":"مساØØ© نصية","hiddenField":"إدراج Øقل Ø®ÙÙŠ","button":"زر ضغط","select":"اختار","imageButton":"زر صورة","notSet":"<بدون تØديد>","id":"الرقم","name":"إسم","langDir":"إتجاه النص","langDirLtr":"اليسار لليمين (LTR)","langDirRtl":"اليمين لليسار (RTL)","langCode":"رمز اللغة","longDescr":"الوص٠التÙصيلى","cssClass":"Ùئات التنسيق","advisoryTitle":"عنوان التقرير","cssStyle":"نمط","ok":"مواÙÙ‚","cancel":"إلغاء الأمر","close":"أغلق","preview":"استعراض","resize":"تغيير الØجم","generalTab":"عام","advancedTab":"متقدم","validateNumberFailed":"لايوجد نتيجة","confirmNewPage":"ستÙقد أي متغييرات اذا لم تقم بØÙظها اولا. هل أنت متأكد أنك تريد صÙØØ© جديدة؟","confirmCancel":"بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟","options":"خيارات","target":"هد٠الرابط","targetNew":"ناÙذة جديدة","targetTop":"الناÙذة الأعلى","targetSelf":"داخل الناÙذة","targetParent":"الناÙذة الأم","langDirLTR":"اليسار لليمين (LTR)","langDirRTL":"اليمين لليسار (RTL)","styles":"نمط","cssClasses":"Ùئات التنسيق","width":"العرض","height":"الإرتÙاع","align":"Ù…Øاذاة","left":"يسار","right":"يمين","center":"وسط","justify":"ضبط","alignLeft":"Ù…Øاذاة إلى اليسار","alignRight":"Ù…Øاذاة إلى اليمين","alignCenter":"Align Center","alignTop":"أعلى","alignMiddle":"وسط","alignBottom":"أسÙÙ„","alignNone":"None","invalidValue":"قيمة غير Ù…Ùبولة.","invalidHeight":"الارتÙاع يجب أن يكون عدداً.","invalidWidth":"العرض يجب أن يكون عدداً.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"قيمة الخانة المخصصة لـ \"%1\" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام ÙˆØدة CSS قياس مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"قيمة الخانة المخصصة لـ \"%1\" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام ÙˆØدة HTML قياس مقبولة (px or %).","invalidInlineStyle":"قيمة الخانة المخصصة لـ Inline Style يجب أن تختوي على مجموع واØد أو أكثر بالشكل التالي: \"name : value\", Ù…Ùصولة بÙاصلة منقزطة.","cssLengthTooltip":"أدخل رقما للقيمة بالبكسل أو رقما بوØدة CSS مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, غير متاØ</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['ar']={"widget":{"move":"إضغط Ùˆ إسØب للتØريك","label":"%1 widget"},"undo":{"redo":"إعادة","undo":"تراجع"},"toolbar":{"toolbarCollapse":"تقليص شريط الأدوت","toolbarExpand":"تمديد شريط الأدوات","toolbarGroups":{"document":"مستند","clipboard":"الØاÙظة/الرجوع","editing":"تØرير","forms":"نماذج","basicstyles":"نمط بسيط","paragraph":"Ùقرة","links":"روابط","insert":"إدراج","styles":"أنماط","colors":"ألوان","tools":"أدوات"},"toolbars":"أشرطة أدوات المØرر"},"table":{"border":"الØدود","caption":"الوصÙ","cell":{"menu":"خلية","insertBefore":"إدراج خلية قبل","insertAfter":"إدراج خلية بعد","deleteCell":"Øذ٠خلية","merge":"دمج خلايا","mergeRight":"دمج لليمين","mergeDown":"دمج للأسÙÙ„","splitHorizontal":"تقسيم الخلية Ø£Ùقياً","splitVertical":"تقسيم الخلية عمودياً","title":"خصائص الخلية","cellType":"نوع الخلية","rowSpan":"امتداد الصÙÙˆÙ","colSpan":"امتداد الأعمدة","wordWrap":"التÙا٠النص","hAlign":"Ù…Øاذاة Ø£Ùقية","vAlign":"Ù…Øاذاة رأسية","alignBaseline":"خط القاعدة","bgColor":"لون الخلÙية","borderColor":"لون الØدود","data":"بيانات","header":"عنوان","yes":"نعم","no":"لا","invalidWidth":"عرض الخلية يجب أن يكون عدداً.","invalidHeight":"ارتÙاع الخلية يجب أن يكون عدداً.","invalidRowSpan":"امتداد الصÙو٠يجب أن يكون عدداً صØÙŠØاً.","invalidColSpan":"امتداد الأعمدة يجب أن يكون عدداً صØÙŠØاً.","chooseColor":"اختر"},"cellPad":"المساÙØ© البادئة","cellSpace":"تباعد الخلايا","column":{"menu":"عمود","insertBefore":"إدراج عمود قبل","insertAfter":"إدراج عمود بعد","deleteColumn":"Øذ٠أعمدة"},"columns":"أعمدة","deleteTable":"Øذ٠الجدول","headers":"العناوين","headersBoth":"كلاهما","headersColumn":"العمود الأول","headersNone":"بدون","headersRow":"الص٠الأول","heightUnit":"height unit","invalidBorder":"Øجم الØد يجب أن يكون عدداً.","invalidCellPadding":"المساÙØ© البادئة يجب أن تكون عدداً","invalidCellSpacing":"المساÙØ© بين الخلايا يجب أن تكون عدداً.","invalidCols":"عدد الأعمدة يجب أن يكون عدداً أكبر من صÙر.","invalidHeight":"ارتÙاع الجدول يجب أن يكون عدداً.","invalidRows":"عدد الصÙو٠يجب أن يكون عدداً أكبر من صÙر.","invalidWidth":"عرض الجدول يجب أن يكون عدداً.","menu":"خصائص الجدول","row":{"menu":"صÙ","insertBefore":"إدراج ص٠قبل","insertAfter":"إدراج ص٠بعد","deleteRow":"Øذ٠صÙÙˆÙ"},"rows":"صÙÙˆÙ","summary":"الخلاصة","title":"خصائص الجدول","toolbar":"جدول","widthPc":"بالمئة","widthPx":"بكسل","widthUnit":"ÙˆØدة العرض"},"stylescombo":{"label":"أنماط","panelTitle":"أنماط التنسيق","panelTitle1":"أنماط الÙقرة","panelTitle2":"أنماط مضمنة","panelTitle3":"أنماط الكائن"},"specialchar":{"options":"خيارات الأØر٠الخاصة","title":"اختر Øر٠خاص","toolbar":"إدراج Øر٠خاص"},"sourcedialog":{"toolbar":"المصدر","title":"المصدر"},"sourcearea":{"toolbar":"المصدر"},"showblocks":{"toolbar":"مخطط تÙصيلي"},"removeformat":{"toolbar":"إزالة التنسيقات"},"pastetext":{"button":"لصق كنص بسيط","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"لصق كنص بسيط"},"pastefromword":{"confirmCleanup":"يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيÙÙ‡ قبل الشروع ÙÙŠ عملية اللصق؟","error":"لم يتم Ù…Ø³Ø Ø§Ù„Ù…Ø¹Ù„ÙˆÙ…Ø§Øª الملصقة لخلل داخلي","title":"لصق من وورد","toolbar":"لصق من وورد"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"تكبير","minimize":"تصغير"},"magicline":{"title":"إدراج Ùقرة هنا"},"list":{"bulletedlist":"ادخال/Øذ٠تعداد نقطي","numberedlist":"ادخال/Øذ٠تعداد رقمي"},"language":{"button":"Øدد اللغة","remove":"Øذ٠اللغة"},"indent":{"indent":"زيادة المساÙØ© البادئة","outdent":"إنقاص المساÙØ© البادئة"},"image2":{"alt":"عنوان الصورة","btnUpload":"أرسلها للخادم","captioned":"صورة ذات اسم","captionPlaceholder":"تسمية","infoTab":"معلومات الصورة","lockRatio":"تناسق الØجم","menu":"خصائص الصورة","pathName":"صورة","pathNameCaption":"تسمية","resetSize":"إستعادة الØجم الأصلي","resizer":"انقر ثم اسØب للتØجيم","title":"خصائص الصورة","uploadTab":"رÙع","urlMissing":"عنوان مصدر الصورة Ù…Ùقود","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"خط Ùاصل"},"format":{"label":"تنسيق","panelTitle":"تنسيق الÙقرة","tag_address":"عنوان","tag_div":"عادي (DIV)","tag_h1":"العنوان 1","tag_h2":"العنوان 2","tag_h3":"العنوان 3","tag_h4":"العنوان 4","tag_h5":"العنوان 5","tag_h6":"العنوان 6","tag_p":"عادي","tag_pre":"منسّق"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"مسار العنصر","eleTitle":"عنصر 1%"},"contextmenu":{"options":"خصائص قائمة السياق"},"clipboard":{"copy":"نسخ","copyError":"الإعدادات الأمنية للمتصÙØ Ø§Ù„Ø°ÙŠ تستخدمه تمنع عمليات النسخ التلقائي. Ùضلاً إستخدم لوØØ© المÙØ§ØªÙŠØ Ù„Ùعل ذلك (Ctrl/Cmd+C).","cut":"قص","cutError":"الإعدادات الأمنية للمتصÙØ Ø§Ù„Ø°ÙŠ تستخدمه تمنع القص التلقائي. Ùضلاً إستخدم لوØØ© المÙØ§ØªÙŠØ Ù„Ùعل ذلك (Ctrl/Cmd+X).","paste":"لصق","pasteNotification":"اضغط %1 للصق. اللصق عن طريق شريط الادوات او القائمة غير مدعوم من المتصÙØ Ø§Ù„Ù…Ø³ØªØ®Ø¯Ù… من قبلك.","pasteArea":"منطقة اللصق","pasteMsg":"الصق المØتوى بداخل المساØØ© المخصصة ادناه ثم اضغط على OK","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"اقتباس"},"basicstyles":{"bold":"عريض","italic":"مائل","strike":"يتوسطه خط","subscript":"منخÙض","superscript":"مرتÙع","underline":"تسطير"},"about":{"copy":"Øقوق النشر © $1. جميع الØقوق Ù…ØÙوظة.","dlgTitle":"عن CKEditor","moreInfo":"للØصول على معلومات الترخيص ØŒ يرجى زيارة موقعنا:"},"editor":"Ù…Øرر النص الغني","editorPanel":"لائØØ© Ù…Øرر النص المنسق","common":{"editorHelp":"إضغط على ALT + 0 للØصول على المساعدة.","browseServer":"تصÙØ","url":"الرابط","protocol":"البروتوكول","upload":"رÙع","uploadSubmit":"أرسل","image":"صورة","form":"نموذج","checkbox":"خانة إختيار","radio":"زر اختيار","textField":"مربع نص","textarea":"مساØØ© نصية","hiddenField":"إدراج Øقل Ø®ÙÙŠ","button":"زر ضغط","select":"اختار","imageButton":"زر صورة","notSet":"<بدون تØديد>","id":"الرقم","name":"إسم","langDir":"إتجاه النص","langDirLtr":"اليسار لليمين (LTR)","langDirRtl":"اليمين لليسار (RTL)","langCode":"رمز اللغة","longDescr":"الوص٠التÙصيلى","cssClass":"Ùئات التنسيق","advisoryTitle":"عنوان التقرير","cssStyle":"نمط","ok":"مواÙÙ‚","cancel":"إلغاء الأمر","close":"أغلق","preview":"استعراض","resize":"تغيير الØجم","generalTab":"عام","advancedTab":"متقدم","validateNumberFailed":"لايوجد نتيجة","confirmNewPage":"ستÙقد أي متغييرات اذا لم تقم بØÙظها اولا. هل أنت متأكد أنك تريد صÙØØ© جديدة؟","confirmCancel":"بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟","options":"خيارات","target":"هد٠الرابط","targetNew":"ناÙذة جديدة","targetTop":"الناÙذة الأعلى","targetSelf":"داخل الناÙذة","targetParent":"الناÙذة الأم","langDirLTR":"اليسار لليمين (LTR)","langDirRTL":"اليمين لليسار (RTL)","styles":"نمط","cssClasses":"Ùئات التنسيق","width":"العرض","height":"الإرتÙاع","align":"Ù…Øاذاة","left":"يسار","right":"يمين","center":"وسط","justify":"ضبط","alignLeft":"Ù…Øاذاة إلى اليسار","alignRight":"Ù…Øاذاة إلى اليمين","alignCenter":"Align Center","alignTop":"أعلى","alignMiddle":"وسط","alignBottom":"أسÙÙ„","alignNone":"None","invalidValue":"قيمة غير Ù…Ùبولة.","invalidHeight":"الارتÙاع يجب أن يكون عدداً.","invalidWidth":"العرض يجب أن يكون عدداً.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"قيمة الخانة المخصصة لـ \"%1\" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام ÙˆØدة CSS قياس مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"قيمة الخانة المخصصة لـ \"%1\" يجب أن تكون رقما موجبا، باستخدام أو من غير استخدام ÙˆØدة HTML قياس مقبولة (px or %).","invalidInlineStyle":"قيمة الخانة المخصصة لـ Inline Style يجب أن تختوي على مجموع واØد أو أكثر بالشكل التالي: \"name : value\", Ù…Ùصولة بÙاصلة منقزطة.","cssLengthTooltip":"أدخل رقما للقيمة بالبكسل أو رقما بوØدة CSS مقبولة (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, غير متاØ</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/az.js b/core/assets/vendor/ckeditor/lang/az.js index 5783faafca96..b2a25fa1ecfb 100644 --- a/core/assets/vendor/ckeditor/lang/az.js +++ b/core/assets/vendor/ckeditor/lang/az.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['az']={"widget":{"move":"Tıklayın vÉ™ aparın","label":"%1 vidjet"},"undo":{"redo":"TÉ™krar et","undo":"Ä°mtina et"},"toolbar":{"toolbarCollapse":"Paneli gizlÉ™t","toolbarExpand":"Paneli göstÉ™r","toolbarGroups":{"document":"MÉ™tn","clipboard":"MübadilÉ™ buferi/Ä°mtina et","editing":"RedaktÉ™ edilmÉ™si","forms":"Formalar","basicstyles":"Æsas üslublar","paragraph":"Abzas","links":"Link","insert":"ÆlavÉ™ et","styles":"Ãœslublar","colors":"RÉ™nqlÉ™r","tools":"AlÉ™tlÉ™ri"},"toolbars":"Redaktorun panellÉ™ri"},"table":{"border":"SÉ™rhÉ™dlÉ™rin eni","caption":"CÉ™dvÉ™lin baÅŸlığı","cell":{"menu":"Xana","insertBefore":"Burdan É™vvÉ™lÉ™ xanası çək","insertAfter":"Burdan sonra xanası çək","deleteCell":"Xanaları sil","merge":"Xanaları birləşdir","mergeRight":"SaÄŸdan birləşdir","mergeDown":"Soldan birləşdir","splitHorizontal":"Ãœfüqi böl","splitVertical":"Åžaquli böl","title":"Xanaların seçimlÉ™ri","cellType":"Xana növü","rowSpan":"SÉ™tirlÉ™ri birləşdir","colSpan":"Sütunları birləşdir","wordWrap":"SÉ™tirlÉ™rin sınması","hAlign":"Ãœfüqi düzlÉ™ndirmÉ™","vAlign":"Åžaquli düzlÉ™ndirmÉ™","alignBaseline":"MÉ™tn xÉ™tti","bgColor":"Doldurma rÉ™ngi","borderColor":"SÉ™rhÉ™din rÉ™ngi","data":"MÉ™lumatlar","header":"BaÅŸlıq","yes":"BÉ™li","no":"Xeyr","invalidWidth":"Xanasın eni rÉ™qÉ™m olmalıdır.","invalidHeight":"Xanasın hündürlüyü rÉ™qÉ™m olmalıdır.","invalidRowSpan":"Birləşdirdiyiniz sütun xanaların sayı tam vÉ™ müsbÉ™t rÉ™qÉ™m olmalıdır.","invalidColSpan":"Birləşdirdiyiniz sÉ™tir xanaların sayı tam vÉ™ müsbÉ™t rÉ™qÉ™m olmalıdır.","chooseColor":"Seç"},"cellPad":"Xanalardakı kÉ™nar boÅŸluqlar","cellSpace":"Xanalararası interval","column":{"menu":"Sütun","insertBefore":"Sola sütun É™lavÉ™ et","insertAfter":"SaÄŸa sütun É™lavÉ™ et","deleteColumn":"Sütunları sil"},"columns":"Sütunlar","deleteTable":"CÉ™dvÉ™li sil","headers":"BaÅŸlıqlar","headersBoth":"HÉ™r ikisi","headersColumn":"Birinci sütun","headersNone":"yox","headersRow":"Birinci sÉ™tir","heightUnit":"height unit","invalidBorder":"SÉ™rhÉ™dlÉ™rin eni müsbÉ™t rÉ™qÉ™m olmalıdır.","invalidCellPadding":"Xanalardakı kÉ™nar boÅŸluqlar müsbÉ™t rÉ™qÉ™m olmalıdır.","invalidCellSpacing":"Xanalararası interval müsbÉ™t rÉ™qÉ™m olmalıdır.","invalidCols":"Sütunlarin sayı tam vÉ™ müsbÉ™t olmalıdır.","invalidHeight":"CÉ™dvÉ™lin hündürlüyü rÉ™qÉ™m olmalıdır.","invalidRows":"SÉ™tirlÉ™tin sayı tam vÉ™ müsbÉ™t olmalıdır.","invalidWidth":"CÉ™dvÉ™lin eni rÉ™qÉ™m olmalıdır.","menu":"CÉ™dvÉ™l alÉ™tlÉ™ri","row":{"menu":"SÉ™tir","insertBefore":"Yuxarıya sÉ™tir É™lavÉ™ et","insertAfter":"AÅŸağıya sÉ™tir É™lavÉ™ et","deleteRow":"SÉ™tirlÉ™ri sil"},"rows":"SÉ™tirlÉ™r","summary":"XülasÉ™","title":"CÉ™dvÉ™l alÉ™tlÉ™ri","toolbar":"CÉ™dvÉ™l","widthPc":"faiz","widthPx":"piksel","widthUnit":"en vahidi"},"stylescombo":{"label":"Ãœslub","panelTitle":"Format üslubları","panelTitle1":"Blokların üslubları","panelTitle2":"SözlÉ™rin üslubları","panelTitle3":"ObyektlÉ™rin üslubları"},"specialchar":{"options":"Xüsusi simvolların seçimlÉ™ri","title":"Xüsusi simvolu seç","toolbar":"Xüsusi simvolu daxil et"},"sourcedialog":{"toolbar":"MÉ™nbÉ™","title":"MÉ™nbÉ™"},"sourcearea":{"toolbar":"HTML mÉ™nbÉ™yini göstÉ™r"},"showblocks":{"toolbar":"Blokları göstÉ™r"},"removeformat":{"toolbar":"Formatı sil"},"pastetext":{"button":"Yalnız mÉ™tni saxla","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"ÆlavÉ™ edilÉ™n mÉ™tn Word-dan köçürülÉ™nÉ™ oxÅŸayır. TÉ™mizlÉ™mÉ™k istÉ™yirsinizmi?","error":"Daxili sÉ™hvÉ™ görÉ™ É™lavÉ™ edilÉ™n mÉ™lumatların tÉ™mizlÉ™nmÉ™si mümkün deyil","title":"Word-dan É™lavÉ™etmÉ™","toolbar":"Word-dan É™lavÉ™etmÉ™"},"notification":{"closed":"XÉ™bÉ™rdarlıq pÉ™ncÉ™rÉ™si baÄŸlanıb"},"maximize":{"maximize":"AÅŸkarla","minimize":"GizlÉ™t"},"magicline":{"title":"Abzası burada É™lavÉ™ et"},"list":{"bulletedlist":"MarkerlÉ™nmiÅŸ siyahını baÅŸlat/sil","numberedlist":"NömrÉ™lÉ™nmiÅŸ siyahını baÅŸlat/sil"},"language":{"button":"Dilini tÉ™yin et","remove":"Dilini sil"},"indent":{"indent":"Sol boÅŸluqu artır","outdent":"Sol boÅŸluqu azalt"},"image2":{"alt":"Alternativ mÉ™tn","btnUpload":"ServerÉ™ göndÉ™r","captioned":"Altyazı olan ÅŸÉ™kil","captionPlaceholder":"Altyazı","infoTab":"Şəkil haqqında mÉ™lumat","lockRatio":"ÖlçülÉ™rin nisbÉ™ti saxla","menu":"Şəklin seçimlÉ™ri","pathName":"Şəkil","pathNameCaption":"Altyazı","resetSize":"ÖlçülÉ™ri qaytar","resizer":"ÖlçülÉ™r dÉ™yiÅŸmÉ™k üçün tıklayın vÉ™ aparın","title":"Şəklin seçimlÉ™ri","uploadTab":"ServerÉ™ yüklÉ™","urlMissing":"Şəklin ünvanı yanlışdır.","altMissing":"Alternativ mÉ™tn tapılmayıb"},"horizontalrule":{"toolbar":"SÉ™rhÉ™d xÉ™tti yarat"},"format":{"label":"Format","panelTitle":"Abzasın formatı","tag_address":"Ãœnvan","tag_div":"Normal (DIV)","tag_h1":"BaÅŸlıq 1","tag_h2":"BaÅŸlıq 2","tag_h3":"BaÅŸlıq 3","tag_h4":"BaÅŸlıq 4","tag_h5":"BaÅŸlıq 5","tag_h6":"BaÅŸlıq 6","tag_p":"Normal","tag_pre":"Formatı saxla"},"filetools":{"loadError":"Faylını oxumaq mümkün deyil","networkError":"XÉ™ta baÅŸ verdi.","httpError404":"ServerÉ™ göndÉ™rilmÉ™sinin zamanı xÉ™ta baÅŸ verdi (404 - fayl tapılmayıb)","httpError403":"ServerÉ™ göndÉ™rilmÉ™sinin zamanı xÉ™ta baÅŸ verdi (403 - gadaÄŸandır)","httpError":"ServerÉ™ göndÉ™rilmÉ™sinin zamanı xÉ™ta baÅŸ verdi (xÉ™tanın ststusu: %1)","noUrlError":"YüklÉ™mÉ™ linki tÉ™yin edilmÉ™yib","responseError":"Serverin cavabı yanlışdır"},"elementspath":{"eleLabel":"Elementin izlÉ™ri","eleTitle":"%1 element"},"contextmenu":{"options":"ÆlavÉ™ É™mÉ™liyyatlar"},"clipboard":{"copy":"Köçür","copyError":"Avtomatik köçürülmÉ™si mümkün deyil. Ctrl+C basın.","cut":"KÉ™s","cutError":"Avtomatik kÉ™smÉ™ mümkün deyil. Ctrl+X basın.","paste":"ÆlavÉ™ et","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Sitat bloku"},"basicstyles":{"bold":"Qalın","italic":"Kursiv","strike":"ÃœstüxÉ™tli","subscript":"AÅŸağı indeks","superscript":"Yuxarı indeks","underline":"Altdan xÉ™tt"},"about":{"copy":"Copyright © $1. Bütün hüquqlar qorunur.","dlgTitle":"CKEditor haqqında","moreInfo":"Lisenziya informasiyası üçün zÉ™hmÉ™t olmasa saytımızı ziyarÉ™t edin:"},"editor":"MÉ™tn Redaktoru","editorPanel":"MÉ™tn Redaktorun Paneli","common":{"editorHelp":"Yardım üçün ALT 0 düymÉ™lÉ™rini basın","browseServer":"Fayların siyahı","url":"URL","protocol":"Protokol","upload":"ServerÉ™ yüklÉ™","uploadSubmit":"GöndÉ™r","image":"Şəkil","flash":"Flash","form":"Forma","checkbox":"Çekboks","radio":"Radio düymÉ™si","textField":"MÉ™tn xanası","textarea":"MÉ™tn","hiddenField":"Gizli xana","button":"DüymÉ™","select":"Opsiyaların seçilmÉ™si","imageButton":"Şəkil tipli düymÉ™","notSet":"<seçilmÉ™miÅŸ>","id":"Id","name":"Ad","langDir":"Yaziların istiqamÉ™ti","langDirLtr":"Soldan saÄŸa (LTR)","langDirRtl":"SaÄŸdan sola (RTL)","langCode":"Dilin kodu","longDescr":"URL-ın É™traflı izahı","cssClass":"CSS klassları","advisoryTitle":"BaÅŸlıq","cssStyle":"CSS","ok":"TÉ™dbiq et","cancel":"Ä°mtina et","close":"BaÄŸla","preview":"Baxış","resize":"Eni dÉ™yiÅŸ","generalTab":"Æsas","advancedTab":"ÆlavÉ™","validateNumberFailed":"RÉ™qÉ™m deyil.","confirmNewPage":"Yadda saxlanılmamış dÉ™yiÅŸikliklÉ™r itirilÉ™cÉ™k. Davam etmÉ™k istÉ™diyinizÉ™ É™minsinizmi?","confirmCancel":"DÉ™yiÅŸikliklÉ™r edilib. PÉ™ncÉ™rÉ™ni baÄŸlamaq istÉ™yirsizÉ™ É™minsinizmi?","options":"SeçimlÉ™r","target":"HÉ™dÉ™f çərçivÉ™","targetNew":"Yeni pÉ™ncÉ™rÉ™ (_blank)","targetTop":"Æsas pÉ™ncÉ™rÉ™ (_top)","targetSelf":"Carı pÉ™ncÉ™rÉ™ (_self)","targetParent":"Ana pÉ™ncÉ™rÉ™ (_parent)","langDirLTR":"Soldan saÄŸa (LTR)","langDirRTL":"SaÄŸdan sola (RTL)","styles":"Ãœslub","cssClasses":"Ãœslub klası","width":"En","height":"Uzunluq","align":"YerləşmÉ™","left":"Sol","right":"SaÄŸ","center":"MÉ™rkÉ™z","justify":"EninÉ™ görÉ™","alignLeft":"Soldan düzlÉ™ndir","alignRight":"SaÄŸdan düzlÉ™ndir","alignCenter":"MÉ™rkÉ™zÉ™ düzlÉ™ndir","alignTop":"Yuxarı","alignMiddle":"Orta","alignBottom":"AÅŸağı","alignNone":"Yoxdur","invalidValue":"Yanlışdır.","invalidHeight":"Hündürlük rÉ™qÉ™m olmalıdır.","invalidWidth":"En rÉ™qÉ™m olmalıdır.","invalidLength":"\"%1\" xanasına, ölçü vahidinin (%2) göstÉ™rilmÉ™sindÉ™n asılı olmayaraq, müsbÉ™t É™dÉ™d qeyd olunmalıdır.","invalidCssLength":"\"%1\" xanasında göstÉ™rilÉ™n mÉ™zmun tam vÉ™ müsbÉ™t olmalıdır, CSS-dÉ™ olan ölçü vahidlÉ™rin (px, %, in, cm, mm, em, ex, pt, or pc) istifadısinÉ™ icazÉ™ verilir.","invalidHtmlLength":"\"%1\" xanasında göstÉ™rilÉ™n mÉ™zmun tam vÉ™ müsbÉ™t olmalıdır HTML-dÉ™ olan ölçü vahidlÉ™rin (px vÉ™ ya %) istifadısinÉ™ icazÉ™ verilir.","invalidInlineStyle":"Teq içindÉ™ olan üslub \"ad : mÉ™zmun\" ÅŸÉ™klidÉ™, nöqtÉ™-verqül iÅŸarÉ™si ilÉ™ bitmÉ™lidir","cssLengthTooltip":"Piksel sayı vÉ™ ya digÉ™r CSS ölçü vahidlÉ™ri (px, %, in, cm, mm, em, ex, pt, or pc) daxil edin.","unavailable":"%1<span class=\"cke_accessibility\">, mövcud deyil</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"BoÅŸluq","35":"Son","36":"EvÉ™","46":"Sil","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Æmr"},"keyboardShortcut":"Qısayol düymÉ™lÉ™ri","optionDefault":"Standart"}}; \ No newline at end of file +CKEDITOR.lang['az']={"widget":{"move":"Tıklayın vÉ™ aparın","label":"%1 vidjet"},"undo":{"redo":"TÉ™krar et","undo":"Ä°mtina et"},"toolbar":{"toolbarCollapse":"Paneli gizlÉ™t","toolbarExpand":"Paneli göstÉ™r","toolbarGroups":{"document":"MÉ™tn","clipboard":"MübadilÉ™ buferi/Ä°mtina et","editing":"RedaktÉ™ edilmÉ™si","forms":"Formalar","basicstyles":"Æsas üslublar","paragraph":"Abzas","links":"Link","insert":"ÆlavÉ™ et","styles":"Ãœslublar","colors":"RÉ™nqlÉ™r","tools":"AlÉ™tlÉ™ri"},"toolbars":"Redaktorun panellÉ™ri"},"table":{"border":"SÉ™rhÉ™dlÉ™rin eni","caption":"CÉ™dvÉ™lin baÅŸlığı","cell":{"menu":"Xana","insertBefore":"Burdan É™vvÉ™lÉ™ xanası çək","insertAfter":"Burdan sonra xanası çək","deleteCell":"Xanaları sil","merge":"Xanaları birləşdir","mergeRight":"SaÄŸdan birləşdir","mergeDown":"Soldan birləşdir","splitHorizontal":"Ãœfüqi böl","splitVertical":"Åžaquli böl","title":"Xanaların seçimlÉ™ri","cellType":"Xana növü","rowSpan":"SÉ™tirlÉ™ri birləşdir","colSpan":"Sütunları birləşdir","wordWrap":"SÉ™tirlÉ™rin sınması","hAlign":"Ãœfüqi düzlÉ™ndirmÉ™","vAlign":"Åžaquli düzlÉ™ndirmÉ™","alignBaseline":"MÉ™tn xÉ™tti","bgColor":"Doldurma rÉ™ngi","borderColor":"SÉ™rhÉ™din rÉ™ngi","data":"MÉ™lumatlar","header":"BaÅŸlıq","yes":"BÉ™li","no":"Xeyr","invalidWidth":"Xanasın eni rÉ™qÉ™m olmalıdır.","invalidHeight":"Xanasın hündürlüyü rÉ™qÉ™m olmalıdır.","invalidRowSpan":"Birləşdirdiyiniz sütun xanaların sayı tam vÉ™ müsbÉ™t rÉ™qÉ™m olmalıdır.","invalidColSpan":"Birləşdirdiyiniz sÉ™tir xanaların sayı tam vÉ™ müsbÉ™t rÉ™qÉ™m olmalıdır.","chooseColor":"Seç"},"cellPad":"Xanalardakı kÉ™nar boÅŸluqlar","cellSpace":"Xanalararası interval","column":{"menu":"Sütun","insertBefore":"Sola sütun É™lavÉ™ et","insertAfter":"SaÄŸa sütun É™lavÉ™ et","deleteColumn":"Sütunları sil"},"columns":"Sütunlar","deleteTable":"CÉ™dvÉ™li sil","headers":"BaÅŸlıqlar","headersBoth":"HÉ™r ikisi","headersColumn":"Birinci sütun","headersNone":"yox","headersRow":"Birinci sÉ™tir","heightUnit":"height unit","invalidBorder":"SÉ™rhÉ™dlÉ™rin eni müsbÉ™t rÉ™qÉ™m olmalıdır.","invalidCellPadding":"Xanalardakı kÉ™nar boÅŸluqlar müsbÉ™t rÉ™qÉ™m olmalıdır.","invalidCellSpacing":"Xanalararası interval müsbÉ™t rÉ™qÉ™m olmalıdır.","invalidCols":"Sütunlarin sayı tam vÉ™ müsbÉ™t olmalıdır.","invalidHeight":"CÉ™dvÉ™lin hündürlüyü rÉ™qÉ™m olmalıdır.","invalidRows":"SÉ™tirlÉ™tin sayı tam vÉ™ müsbÉ™t olmalıdır.","invalidWidth":"CÉ™dvÉ™lin eni rÉ™qÉ™m olmalıdır.","menu":"CÉ™dvÉ™l alÉ™tlÉ™ri","row":{"menu":"SÉ™tir","insertBefore":"Yuxarıya sÉ™tir É™lavÉ™ et","insertAfter":"AÅŸağıya sÉ™tir É™lavÉ™ et","deleteRow":"SÉ™tirlÉ™ri sil"},"rows":"SÉ™tirlÉ™r","summary":"XülasÉ™","title":"CÉ™dvÉ™l alÉ™tlÉ™ri","toolbar":"CÉ™dvÉ™l","widthPc":"faiz","widthPx":"piksel","widthUnit":"en vahidi"},"stylescombo":{"label":"Ãœslub","panelTitle":"Format üslubları","panelTitle1":"Blokların üslubları","panelTitle2":"SözlÉ™rin üslubları","panelTitle3":"ObyektlÉ™rin üslubları"},"specialchar":{"options":"Xüsusi simvolların seçimlÉ™ri","title":"Xüsusi simvolu seç","toolbar":"Xüsusi simvolu daxil et"},"sourcedialog":{"toolbar":"MÉ™nbÉ™","title":"MÉ™nbÉ™"},"sourcearea":{"toolbar":"HTML mÉ™nbÉ™yini göstÉ™r"},"showblocks":{"toolbar":"Blokları göstÉ™r"},"removeformat":{"toolbar":"Formatı sil"},"pastetext":{"button":"Yalnız mÉ™tni saxla","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"ÆlavÉ™ edilÉ™n mÉ™tn Word-dan köçürülÉ™nÉ™ oxÅŸayır. TÉ™mizlÉ™mÉ™k istÉ™yirsinizmi?","error":"Daxili sÉ™hvÉ™ görÉ™ É™lavÉ™ edilÉ™n mÉ™lumatların tÉ™mizlÉ™nmÉ™si mümkün deyil","title":"Word-dan É™lavÉ™etmÉ™","toolbar":"Word-dan É™lavÉ™etmÉ™"},"notification":{"closed":"XÉ™bÉ™rdarlıq pÉ™ncÉ™rÉ™si baÄŸlanıb"},"maximize":{"maximize":"AÅŸkarla","minimize":"GizlÉ™t"},"magicline":{"title":"Abzası burada É™lavÉ™ et"},"list":{"bulletedlist":"MarkerlÉ™nmiÅŸ siyahını baÅŸlat/sil","numberedlist":"NömrÉ™lÉ™nmiÅŸ siyahını baÅŸlat/sil"},"language":{"button":"Dilini tÉ™yin et","remove":"Dilini sil"},"indent":{"indent":"Sol boÅŸluqu artır","outdent":"Sol boÅŸluqu azalt"},"image2":{"alt":"Alternativ mÉ™tn","btnUpload":"ServerÉ™ göndÉ™r","captioned":"Altyazı olan ÅŸÉ™kil","captionPlaceholder":"Altyazı","infoTab":"Şəkil haqqında mÉ™lumat","lockRatio":"ÖlçülÉ™rin nisbÉ™ti saxla","menu":"Şəklin seçimlÉ™ri","pathName":"Şəkil","pathNameCaption":"Altyazı","resetSize":"ÖlçülÉ™ri qaytar","resizer":"ÖlçülÉ™r dÉ™yiÅŸmÉ™k üçün tıklayın vÉ™ aparın","title":"Şəklin seçimlÉ™ri","uploadTab":"ServerÉ™ yüklÉ™","urlMissing":"Şəklin ünvanı yanlışdır.","altMissing":"Alternativ mÉ™tn tapılmayıb"},"horizontalrule":{"toolbar":"SÉ™rhÉ™d xÉ™tti yarat"},"format":{"label":"Format","panelTitle":"Abzasın formatı","tag_address":"Ãœnvan","tag_div":"Normal (DIV)","tag_h1":"BaÅŸlıq 1","tag_h2":"BaÅŸlıq 2","tag_h3":"BaÅŸlıq 3","tag_h4":"BaÅŸlıq 4","tag_h5":"BaÅŸlıq 5","tag_h6":"BaÅŸlıq 6","tag_p":"Normal","tag_pre":"Formatı saxla"},"filetools":{"loadError":"Faylını oxumaq mümkün deyil","networkError":"XÉ™ta baÅŸ verdi.","httpError404":"ServerÉ™ göndÉ™rilmÉ™sinin zamanı xÉ™ta baÅŸ verdi (404 - fayl tapılmayıb)","httpError403":"ServerÉ™ göndÉ™rilmÉ™sinin zamanı xÉ™ta baÅŸ verdi (403 - gadaÄŸandır)","httpError":"ServerÉ™ göndÉ™rilmÉ™sinin zamanı xÉ™ta baÅŸ verdi (xÉ™tanın ststusu: %1)","noUrlError":"YüklÉ™mÉ™ linki tÉ™yin edilmÉ™yib","responseError":"Serverin cavabı yanlışdır"},"elementspath":{"eleLabel":"Elementin izlÉ™ri","eleTitle":"%1 element"},"contextmenu":{"options":"ÆlavÉ™ É™mÉ™liyyatlar"},"clipboard":{"copy":"Köçür","copyError":"Avtomatik köçürülmÉ™si mümkün deyil. Ctrl+C basın.","cut":"KÉ™s","cutError":"Avtomatik kÉ™smÉ™ mümkün deyil. Ctrl+X basın.","paste":"ÆlavÉ™ et","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Sitat bloku"},"basicstyles":{"bold":"Qalın","italic":"Kursiv","strike":"ÃœstüxÉ™tli","subscript":"AÅŸağı indeks","superscript":"Yuxarı indeks","underline":"Altdan xÉ™tt"},"about":{"copy":"Copyright © $1. Bütün hüquqlar qorunur.","dlgTitle":"CKEditor haqqında","moreInfo":"Lisenziya informasiyası üçün zÉ™hmÉ™t olmasa saytımızı ziyarÉ™t edin:"},"editor":"MÉ™tn Redaktoru","editorPanel":"MÉ™tn Redaktorun Paneli","common":{"editorHelp":"Yardım üçün ALT 0 düymÉ™lÉ™rini basın","browseServer":"Fayların siyahı","url":"URL","protocol":"Protokol","upload":"ServerÉ™ yüklÉ™","uploadSubmit":"GöndÉ™r","image":"Şəkil","form":"Forma","checkbox":"Çekboks","radio":"Radio düymÉ™si","textField":"MÉ™tn xanası","textarea":"MÉ™tn","hiddenField":"Gizli xana","button":"DüymÉ™","select":"Opsiyaların seçilmÉ™si","imageButton":"Şəkil tipli düymÉ™","notSet":"<seçilmÉ™miÅŸ>","id":"Id","name":"Ad","langDir":"Yaziların istiqamÉ™ti","langDirLtr":"Soldan saÄŸa (LTR)","langDirRtl":"SaÄŸdan sola (RTL)","langCode":"Dilin kodu","longDescr":"URL-ın É™traflı izahı","cssClass":"CSS klassları","advisoryTitle":"BaÅŸlıq","cssStyle":"CSS","ok":"TÉ™dbiq et","cancel":"Ä°mtina et","close":"BaÄŸla","preview":"Baxış","resize":"Eni dÉ™yiÅŸ","generalTab":"Æsas","advancedTab":"ÆlavÉ™","validateNumberFailed":"RÉ™qÉ™m deyil.","confirmNewPage":"Yadda saxlanılmamış dÉ™yiÅŸikliklÉ™r itirilÉ™cÉ™k. Davam etmÉ™k istÉ™diyinizÉ™ É™minsinizmi?","confirmCancel":"DÉ™yiÅŸikliklÉ™r edilib. PÉ™ncÉ™rÉ™ni baÄŸlamaq istÉ™yirsizÉ™ É™minsinizmi?","options":"SeçimlÉ™r","target":"HÉ™dÉ™f çərçivÉ™","targetNew":"Yeni pÉ™ncÉ™rÉ™ (_blank)","targetTop":"Æsas pÉ™ncÉ™rÉ™ (_top)","targetSelf":"Carı pÉ™ncÉ™rÉ™ (_self)","targetParent":"Ana pÉ™ncÉ™rÉ™ (_parent)","langDirLTR":"Soldan saÄŸa (LTR)","langDirRTL":"SaÄŸdan sola (RTL)","styles":"Ãœslub","cssClasses":"Ãœslub klası","width":"En","height":"Uzunluq","align":"YerləşmÉ™","left":"Sol","right":"SaÄŸ","center":"MÉ™rkÉ™z","justify":"EninÉ™ görÉ™","alignLeft":"Soldan düzlÉ™ndir","alignRight":"SaÄŸdan düzlÉ™ndir","alignCenter":"MÉ™rkÉ™zÉ™ düzlÉ™ndir","alignTop":"Yuxarı","alignMiddle":"Orta","alignBottom":"AÅŸağı","alignNone":"Yoxdur","invalidValue":"Yanlışdır.","invalidHeight":"Hündürlük rÉ™qÉ™m olmalıdır.","invalidWidth":"En rÉ™qÉ™m olmalıdır.","invalidLength":"\"%1\" xanasına, ölçü vahidinin (%2) göstÉ™rilmÉ™sindÉ™n asılı olmayaraq, müsbÉ™t É™dÉ™d qeyd olunmalıdır.","invalidCssLength":"\"%1\" xanasında göstÉ™rilÉ™n mÉ™zmun tam vÉ™ müsbÉ™t olmalıdır, CSS-dÉ™ olan ölçü vahidlÉ™rin (px, %, in, cm, mm, em, ex, pt, or pc) istifadısinÉ™ icazÉ™ verilir.","invalidHtmlLength":"\"%1\" xanasında göstÉ™rilÉ™n mÉ™zmun tam vÉ™ müsbÉ™t olmalıdır HTML-dÉ™ olan ölçü vahidlÉ™rin (px vÉ™ ya %) istifadısinÉ™ icazÉ™ verilir.","invalidInlineStyle":"Teq içindÉ™ olan üslub \"ad : mÉ™zmun\" ÅŸÉ™klidÉ™, nöqtÉ™-verqül iÅŸarÉ™si ilÉ™ bitmÉ™lidir","cssLengthTooltip":"Piksel sayı vÉ™ ya digÉ™r CSS ölçü vahidlÉ™ri (px, %, in, cm, mm, em, ex, pt, or pc) daxil edin.","unavailable":"%1<span class=\"cke_accessibility\">, mövcud deyil</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"BoÅŸluq","35":"Son","36":"EvÉ™","46":"Sil","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Æmr"},"keyboardShortcut":"Qısayol düymÉ™lÉ™ri","optionDefault":"Standart"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/bg.js b/core/assets/vendor/ckeditor/lang/bg.js index c4a629e9e104..0b2244d8559a 100644 --- a/core/assets/vendor/ckeditor/lang/bg.js +++ b/core/assets/vendor/ckeditor/lang/bg.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['bg']={"widget":{"move":"Кликни и влачи, за да премеÑтиш","label":"%1 приÑтавка"},"undo":{"redo":"Пренаправи","undo":"Отмени"},"toolbar":{"toolbarCollapse":"Свиване на лентата Ñ Ð¸Ð½Ñтрументи","toolbarExpand":"РазширÑване на лентата Ñ Ð¸Ð½Ñтрументи","toolbarGroups":{"document":"Документ","clipboard":"Клипборд/ОтмÑна","editing":"РедакциÑ","forms":"Форми","basicstyles":"Базови Ñтилове","paragraph":"Параграф","links":"Връзки","insert":"Вмъкване","styles":"Стилове","colors":"Цветове","tools":"ИнÑтрументи"},"toolbars":"Ленти Ñ Ð¸Ð½Ñтрументи"},"table":{"border":"Размер на рамката","caption":"Заглавие","cell":{"menu":"Клетка","insertBefore":"Вмъкване на клетка преди","insertAfter":"Вмъкване на клетка Ñлед","deleteCell":"Изтриване на клетки","merge":"Сливане на клетки","mergeRight":"Сливане надÑÑно","mergeDown":"Сливане надолу","splitHorizontal":"РазделÑне клетката хоризонтално","splitVertical":"РазделÑне клетката вертикално","title":"ÐаÑтройки на клетката","cellType":"Тип на клетката","rowSpan":"Редове обединени","colSpan":"Колони обединени","wordWrap":"Ðвто. преноÑ","hAlign":"Хоризонтално подравнÑване","vAlign":"Вертикално подравнÑване","alignBaseline":"Базова линиÑ","bgColor":"Фон","borderColor":"ЦвÑÑ‚ на рамката","data":"Данни","header":"Заглавие","yes":"Да","no":"Ðе","invalidWidth":"Ширината на клетката Ñ‚Ñ€Ñбва да е чиÑло.","invalidHeight":"ВиÑочината на клетката Ñ‚Ñ€Ñбва да е чиÑло.","invalidRowSpan":"Редове обединени Ñ‚Ñ€Ñбва да е цÑло чиÑло.","invalidColSpan":"Колони обединени Ñ‚Ñ€Ñбва да е цÑло чиÑло.","chooseColor":"Изберете"},"cellPad":"ОтделÑне на клетките","cellSpace":"РазÑтоÑние между клетките","column":{"menu":"Колона","insertBefore":"Вмъкване на колона преди","insertAfter":"Вмъкване на колона Ñлед","deleteColumn":"Изтриване на колони"},"columns":"Колони","deleteTable":"Изтриване на таблица","headers":"ЗаглавиÑ","headersBoth":"И двете","headersColumn":"Първа колона","headersNone":"ÐÑма","headersRow":"Първи ред","heightUnit":"height unit","invalidBorder":"Размерът на рамката Ñ‚Ñ€Ñбва да е чиÑло.","invalidCellPadding":"ОтÑтоÑнието на клетките Ñ‚Ñ€Ñбва да е положително чиÑло.","invalidCellSpacing":"Интервалът в клетките Ñ‚Ñ€Ñбва да е положително чиÑло.","invalidCols":"БроÑÑ‚ колони Ñ‚Ñ€Ñбва да е по-голÑм от 0.","invalidHeight":"ВиÑочината на таблицата Ñ‚Ñ€Ñбва да е чиÑло.","invalidRows":"БроÑÑ‚ редове Ñ‚Ñ€Ñбва да е по-голÑм от 0.","invalidWidth":"Ширината на таблицата Ñ‚Ñ€Ñбва да е чиÑло.","menu":"ÐаÑтройки на таблицата","row":{"menu":"Ред","insertBefore":"Вмъкване на ред преди","insertAfter":"Вмъкване на ред Ñлед","deleteRow":"Изтриване на редове"},"rows":"Редове","summary":"Обща информациÑ","title":"ÐаÑтройки на таблицата","toolbar":"Таблица","widthPc":"процент","widthPx":"пикÑела","widthUnit":"единица за ширина"},"stylescombo":{"label":"Стилове","panelTitle":"Стилове за форматиране","panelTitle1":"Блокови Ñтилове","panelTitle2":"Поредови Ñтилове","panelTitle3":"Обектни Ñтилове"},"specialchar":{"options":"Опции за Ñпециален знак","title":"Избор на Ñпециален знак","toolbar":"Вмъкване на Ñпециален знак"},"sourcedialog":{"toolbar":"Източник","title":"Източник"},"sourcearea":{"toolbar":"Код"},"showblocks":{"toolbar":"Показва блокове"},"removeformat":{"toolbar":"Премахване на форматирането"},"pastetext":{"button":"Вмъкни като чиÑÑ‚ текÑÑ‚","pasteNotification":"ÐатиÑнете %1 за да поÑтавите. ВашиÑÑ‚ браузър не поддържа поÑтавÑне Ñ Ð±ÑƒÑ‚Ð¾Ð½ от лентата Ñ Ð¸Ð½Ñтрументи или контекÑтното меню.","title":"Вмъкни като чиÑÑ‚ текÑÑ‚"},"pastefromword":{"confirmCleanup":"ТекÑÑ‚ÑŠÑ‚, който иÑкате да поÑтавите, изглежда е копиран от Word. ИÑкате ли да Ñе почиÑти преди поÑтавÑнето?","error":"Вмъкваните данни не могат да бъдат почиÑтени поради вътрешна грешка","title":"Вмъкни от Word","toolbar":"Вмъкни от Word"},"notification":{"closed":"ИзвеÑтието е затворено."},"maximize":{"maximize":"МакÑимизиране","minimize":"Минимизиране"},"magicline":{"title":"Вмъкнете параграф тук"},"list":{"bulletedlist":"Вмъкване/премахване на точков ÑпиÑък","numberedlist":"Вмъкване/премахване на номериран ÑпиÑък"},"language":{"button":"Задай език","remove":"Премахни език"},"indent":{"indent":"Увеличаване на отÑтъпа","outdent":"ÐамалÑване на отÑтъпа"},"image2":{"alt":"Ðлтернативен текÑÑ‚","btnUpload":"Изпрати на Ñървъра","captioned":"ÐадпиÑано изображение","captionPlaceholder":"ÐадпиÑ","infoTab":"Изображение","lockRatio":"Заключване на Ñъотношението","menu":"ÐаÑтройки на изображението","pathName":"изображение","pathNameCaption":"надпиÑ","resetSize":"Ðулиране на размер","resizer":"Кликни и влачи, за да преоразмериш","title":"ÐаÑтройки на изображението","uploadTab":"Качване","urlMissing":"URL адреÑа на изображението липÑва.","altMissing":"ЛипÑва алтернативен текÑÑ‚."},"horizontalrule":{"toolbar":"Вмъкване на хоризонтална линиÑ"},"format":{"label":"Формат","panelTitle":"Формат на параграф","tag_address":"ÐдреÑ","tag_div":"Ðормален (DIV)","tag_h1":"Заглавие 1","tag_h2":"Заглавие 2","tag_h3":"Заглавие 3","tag_h4":"Заглавие 4","tag_h5":"Заглавие 5","tag_h6":"Заглавие 6","tag_p":"Ðормален","tag_pre":"Форматиран"},"filetools":{"loadError":"Възникна грешка при четене на файла.","networkError":"Възникна мрежова грешка при качването на файла.","httpError404":"Възникна HTTP грешка при качване на файла (404: Файлът не е намерен).","httpError403":"Възникна HTTP грешка при качване на файла (403: Забранено).","httpError":"Възникна HTTP грешка при качване на файла (ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° грешката: %1).","noUrlError":"URL адреÑÑŠÑ‚ за качване не е дефиниран.","responseError":"Ðеправилен отговор на Ñървъра."},"elementspath":{"eleLabel":"Път за елементите","eleTitle":"%1 елемент"},"contextmenu":{"options":"Опции на контекÑтното меню"},"clipboard":{"copy":"Копирай","copyError":"ÐаÑтройките за ÑигурноÑÑ‚ на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°Ð·ÑƒÑŠÑ€ не разрешават на редактора да изпълни дейÑтвиÑта по копиране. За целта използвайте клавиатурата (Ctrl+C).","cut":"Отрежи","cutError":"ÐаÑтройките за ÑигурноÑÑ‚ на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€ не позволÑват на редактора автоматично да изъплни дейÑтвиÑта за отрÑзване. За целта използвайте клавиатурата (Ctrl+X).","paste":"Вмъкни","pasteNotification":"ÐатиÑнете %1 за да вмъкнете. ВашиÑÑ‚ браузър не поддържа поÑтавÑне Ñ Ð±ÑƒÑ‚Ð¾Ð½ от лентата Ñ Ð¸Ð½Ñтрументи или от контекÑтното меню.","pasteArea":"Зона за поÑтавÑне","pasteMsg":"ПоÑтавете Ñъдържанието в зоната отдолу и натиÑнете OK."},"blockquote":{"toolbar":"Блок за цитат"},"basicstyles":{"bold":"Удебелен","italic":"Ðаклонен","strike":"Зачертан текÑÑ‚","subscript":"Долен индекÑ","superscript":"Горен индекÑ","underline":"Подчертан"},"about":{"copy":"ÐвторÑко право © $1. Ð’Ñички права запазени.","dlgTitle":"ОтноÑно CKEditor 4","moreInfo":"За лицензионна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð»Ñ Ð¿Ð¾Ñетете Ñайта ни:"},"editor":"Редактор за форматиран текÑÑ‚","editorPanel":"Панел на текÑÑ‚Ð¾Ð²Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€","common":{"editorHelp":"натиÑнете ALT+0 за помощ","browseServer":"Избор от Ñървъра","url":"URL адреÑ","protocol":"Протокол","upload":"Качване","uploadSubmit":"Изпращане към Ñървъра","image":"Изображение","flash":"Флаш","form":"Форма","checkbox":"Поле за избор","radio":"Радио бутон","textField":"ТекÑтово поле","textarea":"ТекÑтова зона","hiddenField":"Скрито поле","button":"Бутон","select":"Поле за избор","imageButton":"Бутон за изображение","notSet":"<не е избрано>","id":"ID","name":"Име","langDir":"ПоÑока на езика","langDirLtr":"От лÑво надÑÑно (LTR)","langDirRtl":"От дÑÑно налÑво (RTL)","langCode":"Код на езика","longDescr":"Уеб Ð°Ð´Ñ€ÐµÑ Ð·Ð° дълго опиÑание","cssClass":"КлаÑове за CSS","advisoryTitle":"Заглавие","cssStyle":"Стил","ok":"ОК","cancel":"Отказ","close":"Затвори","preview":"Преглед","resize":"Влачете за да оразмерите","generalTab":"Общи","advancedTab":"Разширено","validateNumberFailed":"Тази ÑтойноÑÑ‚ не е чиÑло","confirmNewPage":"Ð’Ñички незапазени промени ще бъдат изгубени. Сигурни ли Ñте, че желаете да заредите нова Ñтраница?","confirmCancel":"ÐÑкои от опциите Ñа променени. Сигурни ли Ñте, че желаете да затворите прозореца?","options":"Опции","target":"Цел","targetNew":"Ðов прозорец (_blank)","targetTop":"Ðай-горниÑÑ‚ прозорец (_top)","targetSelf":"ТекущиÑÑ‚ прозорец (_self)","targetParent":"ГорниÑÑ‚ прозорец (_parent)","langDirLTR":"От лÑво надÑÑно (LTR)","langDirRTL":"От дÑÑно налÑво (RTL)","styles":"Стил","cssClasses":"КлаÑове за CSS","width":"Ширина","height":"ВиÑочина","align":"ПодравнÑване","left":"ЛÑво","right":"ДÑÑно","center":"Център","justify":"ДвуÑтранно","alignLeft":"Подравни лÑво","alignRight":"Подравни дÑÑно","alignCenter":"Подравни център","alignTop":"Горе","alignMiddle":"По Ñредата","alignBottom":"Долу","alignNone":"Без подравнÑване","invalidValue":"Ðевалидна ÑтойноÑÑ‚.","invalidHeight":"ВиÑочината Ñ‚Ñ€Ñбва да е чиÑло.","invalidWidth":"Ширина Ñ‚Ñ€Ñбва да е чиÑло.","invalidLength":"СтойноÑтта на полето \"%1\" Ñ‚Ñ€Ñбва да е положително чиÑло Ñ Ð¸Ð»Ð¸ без валидна мерна единица (%2).","invalidCssLength":"СтойноÑтта на полето \"%1\" Ñ‚Ñ€Ñбва да е положително чиÑло Ñ Ð¸Ð»Ð¸ без валидна CSS мерна единица (px, %, in, cm, mm, em, ex, pt, или pc).","invalidHtmlLength":"СтойноÑтта на полето \"%1\" Ñ‚Ñ€Ñбва да е положително чиÑло Ñ Ð¸Ð»Ð¸ без валидна HTML мерна единица (px или %).","invalidInlineStyle":"СтойноÑтта на Ñтилa Ñ‚Ñ€Ñбва да Ñъдържат една или повече двойки във формат \"name : value\", разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ.","cssLengthTooltip":"Въведете чиÑлена ÑтойноÑÑ‚ в пикÑели или друга валидна CSS единица (px, %, in, cm, mm, em, ex, pt, или pc).","unavailable":"%1<span class=\"cke_accessibility\">, недоÑтъпно</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Клавишна комбинациÑ","optionDefault":"По подразбиране"}}; \ No newline at end of file +CKEDITOR.lang['bg']={"widget":{"move":"Кликни и влачи, за да премеÑтиш","label":"%1 приÑтавка"},"undo":{"redo":"Пренаправи","undo":"Отмени"},"toolbar":{"toolbarCollapse":"Свиване на лентата Ñ Ð¸Ð½Ñтрументи","toolbarExpand":"РазширÑване на лентата Ñ Ð¸Ð½Ñтрументи","toolbarGroups":{"document":"Документ","clipboard":"Клипборд/ОтмÑна","editing":"РедакциÑ","forms":"Форми","basicstyles":"Базови Ñтилове","paragraph":"Параграф","links":"Връзки","insert":"Вмъкване","styles":"Стилове","colors":"Цветове","tools":"ИнÑтрументи"},"toolbars":"Ленти Ñ Ð¸Ð½Ñтрументи"},"table":{"border":"Размер на рамката","caption":"Заглавие","cell":{"menu":"Клетка","insertBefore":"Вмъкване на клетка преди","insertAfter":"Вмъкване на клетка Ñлед","deleteCell":"Изтриване на клетки","merge":"Сливане на клетки","mergeRight":"Сливане надÑÑно","mergeDown":"Сливане надолу","splitHorizontal":"РазделÑне клетката хоризонтално","splitVertical":"РазделÑне клетката вертикално","title":"ÐаÑтройки на клетката","cellType":"Тип на клетката","rowSpan":"Редове обединени","colSpan":"Колони обединени","wordWrap":"Ðвто. преноÑ","hAlign":"Хоризонтално подравнÑване","vAlign":"Вертикално подравнÑване","alignBaseline":"Базова линиÑ","bgColor":"Фон","borderColor":"ЦвÑÑ‚ на рамката","data":"Данни","header":"Заглавие","yes":"Да","no":"Ðе","invalidWidth":"Ширината на клетката Ñ‚Ñ€Ñбва да е чиÑло.","invalidHeight":"ВиÑочината на клетката Ñ‚Ñ€Ñбва да е чиÑло.","invalidRowSpan":"Редове обединени Ñ‚Ñ€Ñбва да е цÑло чиÑло.","invalidColSpan":"Колони обединени Ñ‚Ñ€Ñбва да е цÑло чиÑло.","chooseColor":"Изберете"},"cellPad":"ОтделÑне на клетките","cellSpace":"РазÑтоÑние между клетките","column":{"menu":"Колона","insertBefore":"Вмъкване на колона преди","insertAfter":"Вмъкване на колона Ñлед","deleteColumn":"Изтриване на колони"},"columns":"Колони","deleteTable":"Изтриване на таблица","headers":"ЗаглавиÑ","headersBoth":"И двете","headersColumn":"Първа колона","headersNone":"ÐÑма","headersRow":"Първи ред","heightUnit":"height unit","invalidBorder":"Размерът на рамката Ñ‚Ñ€Ñбва да е чиÑло.","invalidCellPadding":"ОтÑтоÑнието на клетките Ñ‚Ñ€Ñбва да е положително чиÑло.","invalidCellSpacing":"Интервалът в клетките Ñ‚Ñ€Ñбва да е положително чиÑло.","invalidCols":"БроÑÑ‚ колони Ñ‚Ñ€Ñбва да е по-голÑм от 0.","invalidHeight":"ВиÑочината на таблицата Ñ‚Ñ€Ñбва да е чиÑло.","invalidRows":"БроÑÑ‚ редове Ñ‚Ñ€Ñбва да е по-голÑм от 0.","invalidWidth":"Ширината на таблицата Ñ‚Ñ€Ñбва да е чиÑло.","menu":"ÐаÑтройки на таблицата","row":{"menu":"Ред","insertBefore":"Вмъкване на ред преди","insertAfter":"Вмъкване на ред Ñлед","deleteRow":"Изтриване на редове"},"rows":"Редове","summary":"Обща информациÑ","title":"ÐаÑтройки на таблицата","toolbar":"Таблица","widthPc":"процент","widthPx":"пикÑела","widthUnit":"единица за ширина"},"stylescombo":{"label":"Стилове","panelTitle":"Стилове за форматиране","panelTitle1":"Блокови Ñтилове","panelTitle2":"Поредови Ñтилове","panelTitle3":"Обектни Ñтилове"},"specialchar":{"options":"Опции за Ñпециален знак","title":"Избор на Ñпециален знак","toolbar":"Вмъкване на Ñпециален знак"},"sourcedialog":{"toolbar":"Източник","title":"Източник"},"sourcearea":{"toolbar":"Код"},"showblocks":{"toolbar":"Показва блокове"},"removeformat":{"toolbar":"Премахване на форматирането"},"pastetext":{"button":"Вмъкни като чиÑÑ‚ текÑÑ‚","pasteNotification":"ÐатиÑнете %1 за да поÑтавите. ВашиÑÑ‚ браузър не поддържа поÑтавÑне Ñ Ð±ÑƒÑ‚Ð¾Ð½ от лентата Ñ Ð¸Ð½Ñтрументи или контекÑтното меню.","title":"Вмъкни като чиÑÑ‚ текÑÑ‚"},"pastefromword":{"confirmCleanup":"ТекÑÑ‚ÑŠÑ‚, който иÑкате да поÑтавите, изглежда е копиран от Word. ИÑкате ли да Ñе почиÑти преди поÑтавÑнето?","error":"Вмъкваните данни не могат да бъдат почиÑтени поради вътрешна грешка","title":"Вмъкни от Word","toolbar":"Вмъкни от Word"},"notification":{"closed":"ИзвеÑтието е затворено."},"maximize":{"maximize":"МакÑимизиране","minimize":"Минимизиране"},"magicline":{"title":"Вмъкнете параграф тук"},"list":{"bulletedlist":"Вмъкване/премахване на точков ÑпиÑък","numberedlist":"Вмъкване/премахване на номериран ÑпиÑък"},"language":{"button":"Задай език","remove":"Премахни език"},"indent":{"indent":"Увеличаване на отÑтъпа","outdent":"ÐамалÑване на отÑтъпа"},"image2":{"alt":"Ðлтернативен текÑÑ‚","btnUpload":"Изпрати на Ñървъра","captioned":"ÐадпиÑано изображение","captionPlaceholder":"ÐадпиÑ","infoTab":"Изображение","lockRatio":"Заключване на Ñъотношението","menu":"ÐаÑтройки на изображението","pathName":"изображение","pathNameCaption":"надпиÑ","resetSize":"Ðулиране на размер","resizer":"Кликни и влачи, за да преоразмериш","title":"ÐаÑтройки на изображението","uploadTab":"Качване","urlMissing":"URL адреÑа на изображението липÑва.","altMissing":"ЛипÑва алтернативен текÑÑ‚."},"horizontalrule":{"toolbar":"Вмъкване на хоризонтална линиÑ"},"format":{"label":"Формат","panelTitle":"Формат на параграф","tag_address":"ÐдреÑ","tag_div":"Ðормален (DIV)","tag_h1":"Заглавие 1","tag_h2":"Заглавие 2","tag_h3":"Заглавие 3","tag_h4":"Заглавие 4","tag_h5":"Заглавие 5","tag_h6":"Заглавие 6","tag_p":"Ðормален","tag_pre":"Форматиран"},"filetools":{"loadError":"Възникна грешка при четене на файла.","networkError":"Възникна мрежова грешка при качването на файла.","httpError404":"Възникна HTTP грешка при качване на файла (404: Файлът не е намерен).","httpError403":"Възникна HTTP грешка при качване на файла (403: Забранено).","httpError":"Възникна HTTP грешка при качване на файла (ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° грешката: %1).","noUrlError":"URL адреÑÑŠÑ‚ за качване не е дефиниран.","responseError":"Ðеправилен отговор на Ñървъра."},"elementspath":{"eleLabel":"Път за елементите","eleTitle":"%1 елемент"},"contextmenu":{"options":"Опции на контекÑтното меню"},"clipboard":{"copy":"Копирай","copyError":"ÐаÑтройките за ÑигурноÑÑ‚ на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°Ð·ÑƒÑŠÑ€ не разрешават на редактора да изпълни дейÑтвиÑта по копиране. За целта използвайте клавиатурата (Ctrl+C).","cut":"Отрежи","cutError":"ÐаÑтройките за ÑигурноÑÑ‚ на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€ не позволÑват на редактора автоматично да изъплни дейÑтвиÑта за отрÑзване. За целта използвайте клавиатурата (Ctrl+X).","paste":"Вмъкни","pasteNotification":"ÐатиÑнете %1 за да вмъкнете. ВашиÑÑ‚ браузър не поддържа поÑтавÑне Ñ Ð±ÑƒÑ‚Ð¾Ð½ от лентата Ñ Ð¸Ð½Ñтрументи или от контекÑтното меню.","pasteArea":"Зона за поÑтавÑне","pasteMsg":"ПоÑтавете Ñъдържанието в зоната отдолу и натиÑнете OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Блок за цитат"},"basicstyles":{"bold":"Удебелен","italic":"Ðаклонен","strike":"Зачертан текÑÑ‚","subscript":"Долен индекÑ","superscript":"Горен индекÑ","underline":"Подчертан"},"about":{"copy":"ÐвторÑко право © $1. Ð’Ñички права запазени.","dlgTitle":"ОтноÑно CKEditor 4","moreInfo":"За лицензионна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð»Ñ Ð¿Ð¾Ñетете Ñайта ни:"},"editor":"Редактор за форматиран текÑÑ‚","editorPanel":"Панел на текÑÑ‚Ð¾Ð²Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€","common":{"editorHelp":"натиÑнете ALT+0 за помощ","browseServer":"Избор от Ñървъра","url":"URL адреÑ","protocol":"Протокол","upload":"Качване","uploadSubmit":"Изпращане към Ñървъра","image":"Изображение","form":"Форма","checkbox":"Поле за избор","radio":"Радио бутон","textField":"ТекÑтово поле","textarea":"ТекÑтова зона","hiddenField":"Скрито поле","button":"Бутон","select":"Поле за избор","imageButton":"Бутон за изображение","notSet":"<не е избрано>","id":"ID","name":"Име","langDir":"ПоÑока на езика","langDirLtr":"От лÑво надÑÑно (LTR)","langDirRtl":"От дÑÑно налÑво (RTL)","langCode":"Код на езика","longDescr":"Уеб Ð°Ð´Ñ€ÐµÑ Ð·Ð° дълго опиÑание","cssClass":"КлаÑове за CSS","advisoryTitle":"Заглавие","cssStyle":"Стил","ok":"ОК","cancel":"Отказ","close":"Затвори","preview":"Преглед","resize":"Влачете за да оразмерите","generalTab":"Общи","advancedTab":"Разширено","validateNumberFailed":"Тази ÑтойноÑÑ‚ не е чиÑло","confirmNewPage":"Ð’Ñички незапазени промени ще бъдат изгубени. Сигурни ли Ñте, че желаете да заредите нова Ñтраница?","confirmCancel":"ÐÑкои от опциите Ñа променени. Сигурни ли Ñте, че желаете да затворите прозореца?","options":"Опции","target":"Цел","targetNew":"Ðов прозорец (_blank)","targetTop":"Ðай-горниÑÑ‚ прозорец (_top)","targetSelf":"ТекущиÑÑ‚ прозорец (_self)","targetParent":"ГорниÑÑ‚ прозорец (_parent)","langDirLTR":"От лÑво надÑÑно (LTR)","langDirRTL":"От дÑÑно налÑво (RTL)","styles":"Стил","cssClasses":"КлаÑове за CSS","width":"Ширина","height":"ВиÑочина","align":"ПодравнÑване","left":"ЛÑво","right":"ДÑÑно","center":"Център","justify":"ДвуÑтранно","alignLeft":"Подравни лÑво","alignRight":"Подравни дÑÑно","alignCenter":"Подравни център","alignTop":"Горе","alignMiddle":"По Ñредата","alignBottom":"Долу","alignNone":"Без подравнÑване","invalidValue":"Ðевалидна ÑтойноÑÑ‚.","invalidHeight":"ВиÑочината Ñ‚Ñ€Ñбва да е чиÑло.","invalidWidth":"Ширина Ñ‚Ñ€Ñбва да е чиÑло.","invalidLength":"СтойноÑтта на полето \"%1\" Ñ‚Ñ€Ñбва да е положително чиÑло Ñ Ð¸Ð»Ð¸ без валидна мерна единица (%2).","invalidCssLength":"СтойноÑтта на полето \"%1\" Ñ‚Ñ€Ñбва да е положително чиÑло Ñ Ð¸Ð»Ð¸ без валидна CSS мерна единица (px, %, in, cm, mm, em, ex, pt, или pc).","invalidHtmlLength":"СтойноÑтта на полето \"%1\" Ñ‚Ñ€Ñбва да е положително чиÑло Ñ Ð¸Ð»Ð¸ без валидна HTML мерна единица (px или %).","invalidInlineStyle":"СтойноÑтта на Ñтилa Ñ‚Ñ€Ñбва да Ñъдържат една или повече двойки във формат \"name : value\", разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ.","cssLengthTooltip":"Въведете чиÑлена ÑтойноÑÑ‚ в пикÑели или друга валидна CSS единица (px, %, in, cm, mm, em, ex, pt, или pc).","unavailable":"%1<span class=\"cke_accessibility\">, недоÑтъпно</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Клавишна комбинациÑ","optionDefault":"По подразбиране"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/bn.js b/core/assets/vendor/ckeditor/lang/bn.js index d5a9ca52881d..d8476c71250b 100644 --- a/core/assets/vendor/ckeditor/lang/bn.js +++ b/core/assets/vendor/ckeditor/lang/bn.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['bn']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"পà§à¦¨à¦°à¦¾à§Ÿ করি","undo":"আনডà§"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"বরà§à¦¡à¦¾à¦°à§‡à¦° সাইজ","caption":"শীরà§à¦·à¦•","cell":{"menu":"সেল","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"সেল মà§à¦›à§‡ দাও","merge":"সেল জোড়া দাও","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"পৃষà§à¦ তলের রং","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"সেল পà§à¦¯à¦¾à¦¡à¦¿à¦‚","cellSpace":"সেল সà§à¦ªà§‡à¦¸","column":{"menu":"কলাম","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"কলাম মà§à¦›à§‡ দাও"},"columns":"কলাম","deleteTable":"টেবিল ডিলীট কর","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"টেবিল পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿","row":{"menu":"রো","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"রো মà§à¦›à§‡ দাও"},"rows":"রো","summary":"সারাংশ","title":"টেবিল পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿","toolbar":"টেবিলের লেবেল যà§à¦•à§à¦¤ কর","widthPc":"শতকরা","widthPx":"পিকà§à¦¸à§‡à¦²","widthUnit":"width unit"},"stylescombo":{"label":"ধরন","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"বিশেষ কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° বাছাই কর","toolbar":"বিশেষ অকà§à¦·à¦° যà§à¦•à§à¦¤ কর"},"sourcedialog":{"toolbar":"উৎস","title":"সোরà§à¦¸"},"sourcearea":{"toolbar":"উৎস"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"ধরন-পà§à¦°à¦•à§ƒà¦¤à¦¿ অপসারণ করি"},"pastetext":{"button":"সাধারণ টেকà§à¦¸à¦Ÿ হিসেবে পেইসà§à¦Ÿ করি","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"সাদা টেকà§à¦¸à¦Ÿ হিসেবে পেসà§à¦Ÿ কর"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"পেসà§à¦Ÿ (শবà§à¦¦)","toolbar":"পেসà§à¦Ÿ (শবà§à¦¦)"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"বà§à¦²à§‡à¦Ÿà§‡à¦¡ তালিকা পà§à¦°à¦¬à§‡à¦¶/অপসারন করি","numberedlist":"সাংখà§à¦¯à¦¿à¦• লিসà§à¦Ÿà§‡à¦° লেবেল"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"ইনডেনà§à¦Ÿ বাড়াই","outdent":"ইনডেনà§à¦Ÿ কমাও"},"image2":{"alt":"বিকলà§à¦ª টেকà§à¦¸à¦Ÿ","btnUpload":"ইহাকে সারà§à¦à¦¾à¦°à§‡ পà§à¦°à§‡à¦°à¦¨ কর","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"ছবির তথà§à¦¯","lockRatio":"অনà§à¦ªà¦¾à¦¤ লক কর","menu":"ছবির পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿","pathName":"image","pathNameCaption":"caption","resetSize":"সাইজ পূরà§à¦¬à¦¾à¦¬à¦¸à§à¦¥à¦¾à§Ÿ ফিরিয়ে দাও","resizer":"Click and drag to resize","title":"ছবির পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿","uploadTab":"আপলোড","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"অনà§à¦à§‚মিক লাইন যোগ করি"},"format":{"label":"ধরন-পà§à¦°à¦•à§ƒà¦¤à¦¿","panelTitle":"ফনà§à¦Ÿ ফরমেট","tag_address":"ঠিকানা","tag_div":"শীরà§à¦·à¦• (DIV)","tag_h1":"শীরà§à¦·à¦• ১","tag_h2":"শীরà§à¦·à¦• ২","tag_h3":"শীরà§à¦·à¦• ৩","tag_h4":"শীরà§à¦·à¦• ৪","tag_h5":"শীরà§à¦·à¦• ৫","tag_h6":"শীরà§à¦·à¦• ৬","tag_p":"সাধারণ","tag_pre":"ফরà§à¦®à§‡à¦Ÿà§‡à¦¡"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"কপি","copyError":"আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° নিরাপতà§à¦¤à¦¾ সেটিংসমূহ à¦à¦¡à¦¿à¦Ÿà¦°à¦•à§‡ সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿà¦à¦¾à¦¬à§‡ কপি করার পà§à¦°à¦•à§à¦°à¦¿à§Ÿà¦¾ চালনা করার অনà§à¦®à¦¤à¦¿ দেয় না। অনà§à¦—à§à¦°à¦¹à¦ªà§‚রà§à¦¬à¦• à¦à¦‡ কাজের জনà§à¦¯ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ (Ctrl/Cmd+C)।","cut":"কাট","cutError":"আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° সà§à¦°à¦•à§à¦·à¦¾ সেটিংস à¦à¦¡à¦¿à¦Ÿà¦°à¦•à§‡ অটোমেটিক কাট করার অনà§à¦®à¦¤à¦¿ দেয়নি। দয়া করে à¦à¦‡ কাজের জনà§à¦¯ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ (Ctrl/Cmd+X)।","paste":"পেসà§à¦Ÿ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"বোলà§à¦¡","italic":"বাà¦à¦•à¦¾","strike":"সà§à¦Ÿà§à¦°à¦¾à¦‡à¦• থà§à¦°à§","subscript":"অধোলেখ","superscript":"অà¦à¦¿à¦²à§‡à¦–","underline":"আনà§à¦¡à¦¾à¦°à¦²à¦¾à¦‡à¦¨"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"বà§à¦°à¦¾à¦‰à¦œ সারà§à¦à¦¾à¦°","url":"URL","protocol":"পà§à¦°à§‹à¦Ÿà§‹à¦•à¦²","upload":"আপলোড","uploadSubmit":"ইহাকে সারà§à¦à¦¾à¦°à§‡ পà§à¦°à§‡à¦°à¦¨ কর","image":"ছবির লেবেল যà§à¦•à§à¦¤ কর","flash":"ফà§à¦²à¦¾à¦¶ লেবেল যà§à¦•à§à¦¤ কর","form":"ফরà§à¦®","checkbox":"চেক বাকà§à¦¸","radio":"রেডিও বাটন","textField":"টেকà§à¦¸à¦Ÿ ফীলà§à¦¡","textarea":"টেকà§à¦¸à¦Ÿ à¦à¦°à¦¿à§Ÿà¦¾","hiddenField":"গà§à¦ªà§à¦¤ ফীলà§à¦¡","button":"বাটন","select":"বাছাই ফীলà§à¦¡","imageButton":"ছবির বাটন","notSet":"<সেট নেই>","id":"আইডি","name":"নাম","langDir":"à¦à¦¾à¦·à¦¾ লেখার দিক","langDirLtr":"বাম থেকে ডান (LTR)","langDirRtl":"ডান থেকে বাম (RTL)","langCode":"à¦à¦¾à¦·à¦¾ কোড","longDescr":"URL à¦à¦° লমà§à¦¬à¦¾ বরà§à¦£à¦¨à¦¾","cssClass":"সà§à¦Ÿà¦¾à¦‡à¦²-শীট কà§à¦²à¦¾à¦¸","advisoryTitle":"পরামরà§à¦¶ শীরà§à¦·à¦•","cssStyle":"সà§à¦Ÿà¦¾à¦‡à¦²","ok":"ওকে","cancel":"বাতিল","close":"Close","preview":"পà§à¦°à¦¿à¦à¦¿à¦‰","resize":"Resize","generalTab":"General","advancedTab":"à¦à¦¡à¦à¦¾à¦¨à§à¦¸à¦¡","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"টারà§à¦—েট","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"বাম থেকে ডান (LTR)","langDirRTL":"ডান থেকে বাম (RTL)","styles":"সà§à¦Ÿà¦¾à¦‡à¦²","cssClasses":"সà§à¦Ÿà¦¾à¦‡à¦²-শীট কà§à¦²à¦¾à¦¸","width":"পà§à¦°à¦¸à§à¦¥","height":"দৈরà§à¦˜à§à¦¯","align":"à¦à¦²à¦¾à¦‡à¦¨","left":"বামে","right":"ডানে","center":"মাà¦à¦–ানে","justify":"বà§à¦²à¦• জাসà§à¦Ÿà¦¿à¦«à¦¾à¦‡","alignLeft":"বা দিকে ঘেà¦à¦·à¦¾","alignRight":"ডান দিকে ঘেà¦à¦·à¦¾","alignCenter":"Align Center","alignTop":"উপর","alignMiddle":"মধà§à¦¯","alignBottom":"নীচে","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['bn']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"পà§à¦¨à¦°à¦¾à§Ÿ করি","undo":"আনডà§"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"বরà§à¦¡à¦¾à¦°à§‡à¦° সাইজ","caption":"শীরà§à¦·à¦•","cell":{"menu":"সেল","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"সেল মà§à¦›à§‡ দাও","merge":"সেল জোড়া দাও","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"পৃষà§à¦ তলের রং","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"সেল পà§à¦¯à¦¾à¦¡à¦¿à¦‚","cellSpace":"সেল সà§à¦ªà§‡à¦¸","column":{"menu":"কলাম","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"কলাম মà§à¦›à§‡ দাও"},"columns":"কলাম","deleteTable":"টেবিল ডিলীট কর","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"টেবিল পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿","row":{"menu":"রো","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"রো মà§à¦›à§‡ দাও"},"rows":"রো","summary":"সারাংশ","title":"টেবিল পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿","toolbar":"টেবিলের লেবেল যà§à¦•à§à¦¤ কর","widthPc":"শতকরা","widthPx":"পিকà§à¦¸à§‡à¦²","widthUnit":"width unit"},"stylescombo":{"label":"ধরন","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"বিশেষ কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° বাছাই কর","toolbar":"বিশেষ অকà§à¦·à¦° যà§à¦•à§à¦¤ কর"},"sourcedialog":{"toolbar":"উৎস","title":"সোরà§à¦¸"},"sourcearea":{"toolbar":"উৎস"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"ধরন-পà§à¦°à¦•à§ƒà¦¤à¦¿ অপসারণ করি"},"pastetext":{"button":"সাধারণ টেকà§à¦¸à¦Ÿ হিসেবে পেইসà§à¦Ÿ করি","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"সাদা টেকà§à¦¸à¦Ÿ হিসেবে পেসà§à¦Ÿ কর"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"পেসà§à¦Ÿ (শবà§à¦¦)","toolbar":"পেসà§à¦Ÿ (শবà§à¦¦)"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"বà§à¦²à§‡à¦Ÿà§‡à¦¡ তালিকা পà§à¦°à¦¬à§‡à¦¶/অপসারন করি","numberedlist":"সাংখà§à¦¯à¦¿à¦• লিসà§à¦Ÿà§‡à¦° লেবেল"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"ইনডেনà§à¦Ÿ বাড়াই","outdent":"ইনডেনà§à¦Ÿ কমাও"},"image2":{"alt":"বিকলà§à¦ª টেকà§à¦¸à¦Ÿ","btnUpload":"ইহাকে সারà§à¦à¦¾à¦°à§‡ পà§à¦°à§‡à¦°à¦¨ কর","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"ছবির তথà§à¦¯","lockRatio":"অনà§à¦ªà¦¾à¦¤ লক কর","menu":"ছবির পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿","pathName":"image","pathNameCaption":"caption","resetSize":"সাইজ পূরà§à¦¬à¦¾à¦¬à¦¸à§à¦¥à¦¾à§Ÿ ফিরিয়ে দাও","resizer":"Click and drag to resize","title":"ছবির পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿","uploadTab":"আপলোড","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"অনà§à¦à§‚মিক লাইন যোগ করি"},"format":{"label":"ধরন-পà§à¦°à¦•à§ƒà¦¤à¦¿","panelTitle":"ফনà§à¦Ÿ ফরমেট","tag_address":"ঠিকানা","tag_div":"শীরà§à¦·à¦• (DIV)","tag_h1":"শীরà§à¦·à¦• ১","tag_h2":"শীরà§à¦·à¦• ২","tag_h3":"শীরà§à¦·à¦• ৩","tag_h4":"শীরà§à¦·à¦• ৪","tag_h5":"শীরà§à¦·à¦• ৫","tag_h6":"শীরà§à¦·à¦• ৬","tag_p":"সাধারণ","tag_pre":"ফরà§à¦®à§‡à¦Ÿà§‡à¦¡"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"কপি","copyError":"আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° নিরাপতà§à¦¤à¦¾ সেটিংসমূহ à¦à¦¡à¦¿à¦Ÿà¦°à¦•à§‡ সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿà¦à¦¾à¦¬à§‡ কপি করার পà§à¦°à¦•à§à¦°à¦¿à§Ÿà¦¾ চালনা করার অনà§à¦®à¦¤à¦¿ দেয় না। অনà§à¦—à§à¦°à¦¹à¦ªà§‚রà§à¦¬à¦• à¦à¦‡ কাজের জনà§à¦¯ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ (Ctrl/Cmd+C)।","cut":"কাট","cutError":"আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° সà§à¦°à¦•à§à¦·à¦¾ সেটিংস à¦à¦¡à¦¿à¦Ÿà¦°à¦•à§‡ অটোমেটিক কাট করার অনà§à¦®à¦¤à¦¿ দেয়নি। দয়া করে à¦à¦‡ কাজের জনà§à¦¯ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ (Ctrl/Cmd+X)।","paste":"পেসà§à¦Ÿ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"বোলà§à¦¡","italic":"বাà¦à¦•à¦¾","strike":"সà§à¦Ÿà§à¦°à¦¾à¦‡à¦• থà§à¦°à§","subscript":"অধোলেখ","superscript":"অà¦à¦¿à¦²à§‡à¦–","underline":"আনà§à¦¡à¦¾à¦°à¦²à¦¾à¦‡à¦¨"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"বà§à¦°à¦¾à¦‰à¦œ সারà§à¦à¦¾à¦°","url":"URL","protocol":"পà§à¦°à§‹à¦Ÿà§‹à¦•à¦²","upload":"আপলোড","uploadSubmit":"ইহাকে সারà§à¦à¦¾à¦°à§‡ পà§à¦°à§‡à¦°à¦¨ কর","image":"ছবির লেবেল যà§à¦•à§à¦¤ কর","form":"ফরà§à¦®","checkbox":"চেক বাকà§à¦¸","radio":"রেডিও বাটন","textField":"টেকà§à¦¸à¦Ÿ ফীলà§à¦¡","textarea":"টেকà§à¦¸à¦Ÿ à¦à¦°à¦¿à§Ÿà¦¾","hiddenField":"গà§à¦ªà§à¦¤ ফীলà§à¦¡","button":"বাটন","select":"বাছাই ফীলà§à¦¡","imageButton":"ছবির বাটন","notSet":"<সেট নেই>","id":"আইডি","name":"নাম","langDir":"à¦à¦¾à¦·à¦¾ লেখার দিক","langDirLtr":"বাম থেকে ডান (LTR)","langDirRtl":"ডান থেকে বাম (RTL)","langCode":"à¦à¦¾à¦·à¦¾ কোড","longDescr":"URL à¦à¦° লমà§à¦¬à¦¾ বরà§à¦£à¦¨à¦¾","cssClass":"সà§à¦Ÿà¦¾à¦‡à¦²-শীট কà§à¦²à¦¾à¦¸","advisoryTitle":"পরামরà§à¦¶ শীরà§à¦·à¦•","cssStyle":"সà§à¦Ÿà¦¾à¦‡à¦²","ok":"ওকে","cancel":"বাতিল","close":"Close","preview":"পà§à¦°à¦¿à¦à¦¿à¦‰","resize":"Resize","generalTab":"General","advancedTab":"à¦à¦¡à¦à¦¾à¦¨à§à¦¸à¦¡","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"টারà§à¦—েট","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"বাম থেকে ডান (LTR)","langDirRTL":"ডান থেকে বাম (RTL)","styles":"সà§à¦Ÿà¦¾à¦‡à¦²","cssClasses":"সà§à¦Ÿà¦¾à¦‡à¦²-শীট কà§à¦²à¦¾à¦¸","width":"পà§à¦°à¦¸à§à¦¥","height":"দৈরà§à¦˜à§à¦¯","align":"à¦à¦²à¦¾à¦‡à¦¨","left":"বামে","right":"ডানে","center":"মাà¦à¦–ানে","justify":"বà§à¦²à¦• জাসà§à¦Ÿà¦¿à¦«à¦¾à¦‡","alignLeft":"বা দিকে ঘেà¦à¦·à¦¾","alignRight":"ডান দিকে ঘেà¦à¦·à¦¾","alignCenter":"Align Center","alignTop":"উপর","alignMiddle":"মধà§à¦¯","alignBottom":"নীচে","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/bs.js b/core/assets/vendor/ckeditor/lang/bs.js index d581b75843a8..4ecd3fcdbf68 100644 --- a/core/assets/vendor/ckeditor/lang/bs.js +++ b/core/assets/vendor/ckeditor/lang/bs.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['bs']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Ponovi","undo":"Vrati"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Okvir","caption":"Naslov","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"BriÅ¡i æelije","merge":"Spoji æelije","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Uvod æelija","cellSpace":"Razmak æelija","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"BriÅ¡i kolone"},"columns":"Kolona","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Svojstva tabele","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"BriÅ¡i redove"},"rows":"Redova","summary":"Summary","title":"Svojstva tabele","toolbar":"Tabela","widthPc":"posto","widthPx":"piksela","widthUnit":"width unit"},"stylescombo":{"label":"Stil","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Izaberi specijalni karakter","toolbar":"Ubaci specijalni karater"},"sourcedialog":{"toolbar":"HTML kôd","title":"HTML kôd"},"sourcearea":{"toolbar":"HTML kôd"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"PoniÅ¡ti format"},"pastetext":{"button":"Zalijepi kao obièan tekst","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Zalijepi kao obièan tekst"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Zalijepi iz Word-a","toolbar":"Zalijepi iz Word-a"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Lista","numberedlist":"Numerisana lista"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Poveæaj uvod","outdent":"Smanji uvod"},"image2":{"alt":"Tekst na slici","btnUpload":"Å alji na server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Info slike","lockRatio":"Zakljuèaj odnos","menu":"Svojstva slike","pathName":"image","pathNameCaption":"caption","resetSize":"Resetuj dimenzije","resizer":"Click and drag to resize","title":"Svojstva slike","uploadTab":"Å alji","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Ubaci horizontalnu liniju"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosne postavke VaÅ¡eg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Sigurnosne postavke vaÅ¡eg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).","paste":"Zalijepi","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Boldiraj","italic":"Ukosi","strike":"Precrtaj","subscript":"Subscript","superscript":"Superscript","underline":"Podvuci"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protokol","upload":"Å alji","uploadSubmit":"Å alji na server","image":"Slika","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<nije podeÅ¡eno>","id":"Id","name":"Naziv","langDir":"Smjer pisanja","langDirLtr":"S lijeva na desno (LTR)","langDirRtl":"S desna na lijevo (RTL)","langCode":"Jezièni kôd","longDescr":"Dugaèki opis URL-a","cssClass":"Klase CSS stilova","advisoryTitle":"Advisory title","cssStyle":"Stil","ok":"OK","cancel":"Odustani","close":"Close","preview":"Prikaži","resize":"Resize","generalTab":"General","advancedTab":"Naprednije","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Prozor","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","styles":"Stil","cssClasses":"Klase CSS stilova","width":"Å irina","height":"Visina","align":"Poravnanje","left":"Lijevo","right":"Desno","center":"Centar","justify":"Puno poravnanje","alignLeft":"Lijevo poravnanje","alignRight":"Desno poravnanje","alignCenter":"Align Center","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dno","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['bs']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Ponovi","undo":"Vrati"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Okvir","caption":"Naslov","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"BriÅ¡i æelije","merge":"Spoji æelije","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Uvod æelija","cellSpace":"Razmak æelija","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"BriÅ¡i kolone"},"columns":"Kolona","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Svojstva tabele","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"BriÅ¡i redove"},"rows":"Redova","summary":"Summary","title":"Svojstva tabele","toolbar":"Tabela","widthPc":"posto","widthPx":"piksela","widthUnit":"width unit"},"stylescombo":{"label":"Stil","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Izaberi specijalni karakter","toolbar":"Ubaci specijalni karater"},"sourcedialog":{"toolbar":"HTML kôd","title":"HTML kôd"},"sourcearea":{"toolbar":"HTML kôd"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"PoniÅ¡ti format"},"pastetext":{"button":"Zalijepi kao obièan tekst","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Zalijepi kao obièan tekst"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Zalijepi iz Word-a","toolbar":"Zalijepi iz Word-a"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Lista","numberedlist":"Numerisana lista"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Poveæaj uvod","outdent":"Smanji uvod"},"image2":{"alt":"Tekst na slici","btnUpload":"Å alji na server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Info slike","lockRatio":"Zakljuèaj odnos","menu":"Svojstva slike","pathName":"image","pathNameCaption":"caption","resetSize":"Resetuj dimenzije","resizer":"Click and drag to resize","title":"Svojstva slike","uploadTab":"Å alji","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Ubaci horizontalnu liniju"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosne postavke VaÅ¡eg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Sigurnosne postavke vaÅ¡eg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).","paste":"Zalijepi","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Boldiraj","italic":"Ukosi","strike":"Precrtaj","subscript":"Subscript","superscript":"Superscript","underline":"Podvuci"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protokol","upload":"Å alji","uploadSubmit":"Å alji na server","image":"Slika","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<nije podeÅ¡eno>","id":"Id","name":"Naziv","langDir":"Smjer pisanja","langDirLtr":"S lijeva na desno (LTR)","langDirRtl":"S desna na lijevo (RTL)","langCode":"Jezièni kôd","longDescr":"Dugaèki opis URL-a","cssClass":"Klase CSS stilova","advisoryTitle":"Advisory title","cssStyle":"Stil","ok":"OK","cancel":"Odustani","close":"Close","preview":"Prikaži","resize":"Resize","generalTab":"General","advancedTab":"Naprednije","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Prozor","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","styles":"Stil","cssClasses":"Klase CSS stilova","width":"Å irina","height":"Visina","align":"Poravnanje","left":"Lijevo","right":"Desno","center":"Centar","justify":"Puno poravnanje","alignLeft":"Lijevo poravnanje","alignRight":"Desno poravnanje","alignCenter":"Align Center","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dno","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ca.js b/core/assets/vendor/ckeditor/lang/ca.js index 567a7380b3c4..d33c89a19b4a 100644 --- a/core/assets/vendor/ckeditor/lang/ca.js +++ b/core/assets/vendor/ckeditor/lang/ca.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ca']={"widget":{"move":"Clicar i arrossegar per moure","label":"%1 widget"},"undo":{"redo":"Refés","undo":"Desfés"},"toolbar":{"toolbarCollapse":"Redueix la barra d'eines","toolbarExpand":"Amplia la barra d'eines","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor de barra d'eines"},"table":{"border":"Mida vora","caption":"TÃtol","cell":{"menu":"Cel·la","insertBefore":"Insereix abans","insertAfter":"Insereix després","deleteCell":"Suprimeix","merge":"Fusiona","mergeRight":"Fusiona a la dreta","mergeDown":"Fusiona avall","splitHorizontal":"Divideix horitzontalment","splitVertical":"Divideix verticalment","title":"Propietats de la cel·la","cellType":"Tipus de cel·la","rowSpan":"Expansió de files","colSpan":"Expansió de columnes","wordWrap":"Ajustar al contingut","hAlign":"Alineació Horizontal","vAlign":"Alineació Vertical","alignBaseline":"A la lÃnia base","bgColor":"Color de fons","borderColor":"Color de la vora","data":"Dades","header":"Capçalera","yes":"SÃ","no":"No","invalidWidth":"L'amplada de cel·la ha de ser un nombre.","invalidHeight":"L'alçada de cel·la ha de ser un nombre.","invalidRowSpan":"L'expansió de files ha de ser un nombre enter.","invalidColSpan":"L'expansió de columnes ha de ser un nombre enter.","chooseColor":"Trieu"},"cellPad":"Encoixinament de cel·les","cellSpace":"Espaiat de cel·les","column":{"menu":"Columna","insertBefore":"Insereix columna abans de","insertAfter":"Insereix columna darrera","deleteColumn":"Suprimeix una columna"},"columns":"Columnes","deleteTable":"Suprimeix la taula","headers":"Capçaleres","headersBoth":"Ambdues","headersColumn":"Primera columna","headersNone":"Cap","headersRow":"Primera fila","heightUnit":"height unit","invalidBorder":"El gruix de la vora ha de ser un nombre.","invalidCellPadding":"L'encoixinament de cel·la ha de ser un nombre.","invalidCellSpacing":"L'espaiat de cel·la ha de ser un nombre.","invalidCols":"El nombre de columnes ha de ser un nombre major que 0.","invalidHeight":"L'alçada de la taula ha de ser un nombre.","invalidRows":"El nombre de files ha de ser un nombre major que 0.","invalidWidth":"L'amplada de la taula ha de ser un nombre.","menu":"Propietats de la taula","row":{"menu":"Fila","insertBefore":"Insereix fila abans de","insertAfter":"Insereix fila darrera","deleteRow":"Suprimeix una fila"},"rows":"Files","summary":"Resum","title":"Propietats de la taula","toolbar":"Taula","widthPc":"percentatge","widthPx":"pÃxels","widthUnit":"unitat d'amplada"},"stylescombo":{"label":"Estil","panelTitle":"Estils de format","panelTitle1":"Estils de bloc","panelTitle2":"Estils incrustats","panelTitle3":"Estils d'objecte"},"specialchar":{"options":"Opcions de carà cters especials","title":"Selecciona el carà cter especial","toolbar":"Insereix carà cter especial"},"sourcedialog":{"toolbar":"Codi font","title":"Codi font"},"sourcearea":{"toolbar":"Codi font"},"showblocks":{"toolbar":"Mostra els blocs"},"removeformat":{"toolbar":"Elimina Format"},"pastetext":{"button":"Enganxa com a text no formatat","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Enganxa com a text no formatat"},"pastefromword":{"confirmCleanup":"El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?","error":"No ha estat possible netejar les dades enganxades degut a un error intern","title":"Enganxa des del Word","toolbar":"Enganxa des del Word"},"notification":{"closed":"Notificació tancada."},"maximize":{"maximize":"Maximitza","minimize":"Minimitza"},"magicline":{"title":"Insereix el parà graf aquÃ"},"list":{"bulletedlist":"Llista de pics","numberedlist":"Llista numerada"},"language":{"button":"Definir l'idioma","remove":"Eliminar idioma"},"indent":{"indent":"Augmenta el sagnat","outdent":"Redueix el sagnat"},"image2":{"alt":"Text alternatiu","btnUpload":"Envia-la al servidor","captioned":"Imatge amb subtÃtol","captionPlaceholder":"TÃtol","infoTab":"Informació de la imatge","lockRatio":"Bloqueja les proporcions","menu":"Propietats de la imatge","pathName":"imatge","pathNameCaption":"subtÃtol","resetSize":"Restaura la mida","resizer":"Clicar i arrossegar per redimensionar","title":"Propietats de la imatge","uploadTab":"Puja","urlMissing":"Falta la URL de la imatge.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insereix lÃnia horitzontal"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adreça","tag_div":"Normal (DIV)","tag_h1":"Encapçalament 1","tag_h2":"Encapçalament 2","tag_h3":"Encapçalament 3","tag_h4":"Encapçalament 4","tag_h5":"Encapçalament 5","tag_h6":"Encapçalament 6","tag_p":"Normal","tag_pre":"Formatejat"},"filetools":{"loadError":"S'ha produït un error durant la lectura del fitxer.","networkError":"S'ha produït un error de xarxa durant la cà rrega del fitxer.","httpError404":"S'ha produït un error HTTP durant la cà rrega del fitxer (404: Fitxer no trobat).","httpError403":"S'ha produït un error HTTP durant la cà rrega del fitxer (403: PermÃs denegat).","httpError":"S'ha produït un error HTTP durant la cà rrega del fitxer (estat d'error: %1).","noUrlError":"La URL de cà rrega no està definida.","responseError":"Resposta incorrecte del servidor"},"elementspath":{"eleLabel":"Ruta dels elements","eleTitle":"%1 element"},"contextmenu":{"options":"Opcions del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"La configuració de seguretat del vostre navegador no permet executar automà ticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+C).","cut":"Retallar","cutError":"La configuració de seguretat del vostre navegador no permet executar automà ticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+X).","paste":"Enganxar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Àrea d'enganxat","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Bloc de cita"},"basicstyles":{"bold":"Negreta","italic":"Cursiva","strike":"Ratllat","subscript":"SubÃndex","superscript":"SuperÃndex","underline":"Subratllat"},"about":{"copy":"Copyright © $1. Tots els drets reservats.","dlgTitle":"Quant al CKEditor 4","moreInfo":"Per informació sobre llicències visiteu el nostre lloc web:"},"editor":"Editor de text enriquit","editorPanel":"Panell de l'editor de text enriquit","common":{"editorHelp":"Premeu ALT 0 per ajuda","browseServer":"Veure servidor","url":"URL","protocol":"Protocol","upload":"Puja","uploadSubmit":"Envia-la al servidor","image":"Imatge","flash":"Flash","form":"Formulari","checkbox":"Casella de verificació","radio":"Botó d'opció","textField":"Camp de text","textarea":"Àrea de text","hiddenField":"Camp ocult","button":"Botó","select":"Camp de selecció","imageButton":"Botó d'imatge","notSet":"<no definit>","id":"Id","name":"Nom","langDir":"Direcció de l'idioma","langDirLtr":"D'esquerra a dreta (LTR)","langDirRtl":"De dreta a esquerra (RTL)","langCode":"Codi d'idioma","longDescr":"Descripció llarga de la URL","cssClass":"Classes del full d'estil","advisoryTitle":"TÃtol consultiu","cssStyle":"Estil","ok":"D'acord","cancel":"Cancel·la","close":"Tanca","preview":"Previsualitza","resize":"Arrossegueu per redimensionar","generalTab":"General","advancedTab":"Avançat","validateNumberFailed":"Aquest valor no és un número.","confirmNewPage":"Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pà gina nova?","confirmCancel":"Algunes opcions s'han canviat. Esteu segur que voleu tancar el quadre de dià leg?","options":"Opcions","target":"DestÃ","targetNew":"Nova finestra (_blank)","targetTop":"Finestra superior (_top)","targetSelf":"Mateixa finestra (_self)","targetParent":"Finestra pare (_parent)","langDirLTR":"D'esquerra a dreta (LTR)","langDirRTL":"De dreta a esquerra (RTL)","styles":"Estil","cssClasses":"Classes del full d'estil","width":"Amplada","height":"Alçada","align":"Alineació","left":"Ajusta a l'esquerra","right":"Ajusta a la dreta","center":"Centre","justify":"Justificat","alignLeft":"Alinea a l'esquerra","alignRight":"Alinea a la dreta","alignCenter":"Align Center","alignTop":"Superior","alignMiddle":"Centre","alignBottom":"Inferior","alignNone":"Cap","invalidValue":"Valor no và lid.","invalidHeight":"L'alçada ha de ser un número.","invalidWidth":"L'amplada ha de ser un número.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"El valor especificat per als \"%1\" camps ha de ser un número positiu amb o sense unitat de mesura và lida de CSS (px, %, in, cm, mm, em, ex, pt o pc).","invalidHtmlLength":"El valor especificat per als \"%1\" camps ha de ser un número positiu amb o sense unitat de mesura và lida d'HTML (px o %).","invalidInlineStyle":"El valor especificat per l'estil en lÃnia ha de constar d'una o més tuples amb el format \"name: value\", separats per punt i coma.","cssLengthTooltip":"Introduïu un número per un valor en pÃxels o un número amb una unitat và lida de CSS (px, %, in, cm, mm, em, ex, pt o pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>","keyboard":{"8":"Retrocés","13":"Intro","16":"Majúscules","17":"Ctrl","18":"Alt","32":"Space","35":"Fi","36":"Inici","46":"Eliminar","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['ca']={"widget":{"move":"Clicar i arrossegar per moure","label":"%1 widget"},"undo":{"redo":"Refés","undo":"Desfés"},"toolbar":{"toolbarCollapse":"Redueix la barra d'eines","toolbarExpand":"Amplia la barra d'eines","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor de barra d'eines"},"table":{"border":"Mida vora","caption":"TÃtol","cell":{"menu":"Cel·la","insertBefore":"Insereix abans","insertAfter":"Insereix després","deleteCell":"Suprimeix","merge":"Fusiona","mergeRight":"Fusiona a la dreta","mergeDown":"Fusiona avall","splitHorizontal":"Divideix horitzontalment","splitVertical":"Divideix verticalment","title":"Propietats de la cel·la","cellType":"Tipus de cel·la","rowSpan":"Expansió de files","colSpan":"Expansió de columnes","wordWrap":"Ajustar al contingut","hAlign":"Alineació Horizontal","vAlign":"Alineació Vertical","alignBaseline":"A la lÃnia base","bgColor":"Color de fons","borderColor":"Color de la vora","data":"Dades","header":"Capçalera","yes":"SÃ","no":"No","invalidWidth":"L'amplada de cel·la ha de ser un nombre.","invalidHeight":"L'alçada de cel·la ha de ser un nombre.","invalidRowSpan":"L'expansió de files ha de ser un nombre enter.","invalidColSpan":"L'expansió de columnes ha de ser un nombre enter.","chooseColor":"Trieu"},"cellPad":"Encoixinament de cel·les","cellSpace":"Espaiat de cel·les","column":{"menu":"Columna","insertBefore":"Insereix columna abans de","insertAfter":"Insereix columna darrera","deleteColumn":"Suprimeix una columna"},"columns":"Columnes","deleteTable":"Suprimeix la taula","headers":"Capçaleres","headersBoth":"Ambdues","headersColumn":"Primera columna","headersNone":"Cap","headersRow":"Primera fila","heightUnit":"height unit","invalidBorder":"El gruix de la vora ha de ser un nombre.","invalidCellPadding":"L'encoixinament de cel·la ha de ser un nombre.","invalidCellSpacing":"L'espaiat de cel·la ha de ser un nombre.","invalidCols":"El nombre de columnes ha de ser un nombre major que 0.","invalidHeight":"L'alçada de la taula ha de ser un nombre.","invalidRows":"El nombre de files ha de ser un nombre major que 0.","invalidWidth":"L'amplada de la taula ha de ser un nombre.","menu":"Propietats de la taula","row":{"menu":"Fila","insertBefore":"Insereix fila abans de","insertAfter":"Insereix fila darrera","deleteRow":"Suprimeix una fila"},"rows":"Files","summary":"Resum","title":"Propietats de la taula","toolbar":"Taula","widthPc":"percentatge","widthPx":"pÃxels","widthUnit":"unitat d'amplada"},"stylescombo":{"label":"Estil","panelTitle":"Estils de format","panelTitle1":"Estils de bloc","panelTitle2":"Estils incrustats","panelTitle3":"Estils d'objecte"},"specialchar":{"options":"Opcions de carà cters especials","title":"Selecciona el carà cter especial","toolbar":"Insereix carà cter especial"},"sourcedialog":{"toolbar":"Codi font","title":"Codi font"},"sourcearea":{"toolbar":"Codi font"},"showblocks":{"toolbar":"Mostra els blocs"},"removeformat":{"toolbar":"Elimina Format"},"pastetext":{"button":"Enganxa com a text no formatat","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Enganxa com a text no formatat"},"pastefromword":{"confirmCleanup":"El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?","error":"No ha estat possible netejar les dades enganxades degut a un error intern","title":"Enganxa des del Word","toolbar":"Enganxa des del Word"},"notification":{"closed":"Notificació tancada."},"maximize":{"maximize":"Maximitza","minimize":"Minimitza"},"magicline":{"title":"Insereix el parà graf aquÃ"},"list":{"bulletedlist":"Llista de pics","numberedlist":"Llista numerada"},"language":{"button":"Definir l'idioma","remove":"Eliminar idioma"},"indent":{"indent":"Augmenta el sagnat","outdent":"Redueix el sagnat"},"image2":{"alt":"Text alternatiu","btnUpload":"Envia-la al servidor","captioned":"Imatge amb subtÃtol","captionPlaceholder":"TÃtol","infoTab":"Informació de la imatge","lockRatio":"Bloqueja les proporcions","menu":"Propietats de la imatge","pathName":"imatge","pathNameCaption":"subtÃtol","resetSize":"Restaura la mida","resizer":"Clicar i arrossegar per redimensionar","title":"Propietats de la imatge","uploadTab":"Puja","urlMissing":"Falta la URL de la imatge.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insereix lÃnia horitzontal"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adreça","tag_div":"Normal (DIV)","tag_h1":"Encapçalament 1","tag_h2":"Encapçalament 2","tag_h3":"Encapçalament 3","tag_h4":"Encapçalament 4","tag_h5":"Encapçalament 5","tag_h6":"Encapçalament 6","tag_p":"Normal","tag_pre":"Formatejat"},"filetools":{"loadError":"S'ha produït un error durant la lectura del fitxer.","networkError":"S'ha produït un error de xarxa durant la cà rrega del fitxer.","httpError404":"S'ha produït un error HTTP durant la cà rrega del fitxer (404: Fitxer no trobat).","httpError403":"S'ha produït un error HTTP durant la cà rrega del fitxer (403: PermÃs denegat).","httpError":"S'ha produït un error HTTP durant la cà rrega del fitxer (estat d'error: %1).","noUrlError":"La URL de cà rrega no està definida.","responseError":"Resposta incorrecte del servidor"},"elementspath":{"eleLabel":"Ruta dels elements","eleTitle":"%1 element"},"contextmenu":{"options":"Opcions del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"La configuració de seguretat del vostre navegador no permet executar automà ticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+C).","cut":"Retallar","cutError":"La configuració de seguretat del vostre navegador no permet executar automà ticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+X).","paste":"Enganxar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Àrea d'enganxat","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Bloc de cita"},"basicstyles":{"bold":"Negreta","italic":"Cursiva","strike":"Ratllat","subscript":"SubÃndex","superscript":"SuperÃndex","underline":"Subratllat"},"about":{"copy":"Copyright © $1. Tots els drets reservats.","dlgTitle":"Quant al CKEditor 4","moreInfo":"Per informació sobre llicències visiteu el nostre lloc web:"},"editor":"Editor de text enriquit","editorPanel":"Panell de l'editor de text enriquit","common":{"editorHelp":"Premeu ALT 0 per ajuda","browseServer":"Veure servidor","url":"URL","protocol":"Protocol","upload":"Puja","uploadSubmit":"Envia-la al servidor","image":"Imatge","form":"Formulari","checkbox":"Casella de verificació","radio":"Botó d'opció","textField":"Camp de text","textarea":"Àrea de text","hiddenField":"Camp ocult","button":"Botó","select":"Camp de selecció","imageButton":"Botó d'imatge","notSet":"<no definit>","id":"Id","name":"Nom","langDir":"Direcció de l'idioma","langDirLtr":"D'esquerra a dreta (LTR)","langDirRtl":"De dreta a esquerra (RTL)","langCode":"Codi d'idioma","longDescr":"Descripció llarga de la URL","cssClass":"Classes del full d'estil","advisoryTitle":"TÃtol consultiu","cssStyle":"Estil","ok":"D'acord","cancel":"Cancel·la","close":"Tanca","preview":"Previsualitza","resize":"Arrossegueu per redimensionar","generalTab":"General","advancedTab":"Avançat","validateNumberFailed":"Aquest valor no és un número.","confirmNewPage":"Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pà gina nova?","confirmCancel":"Algunes opcions s'han canviat. Esteu segur que voleu tancar el quadre de dià leg?","options":"Opcions","target":"DestÃ","targetNew":"Nova finestra (_blank)","targetTop":"Finestra superior (_top)","targetSelf":"Mateixa finestra (_self)","targetParent":"Finestra pare (_parent)","langDirLTR":"D'esquerra a dreta (LTR)","langDirRTL":"De dreta a esquerra (RTL)","styles":"Estil","cssClasses":"Classes del full d'estil","width":"Amplada","height":"Alçada","align":"Alineació","left":"Ajusta a l'esquerra","right":"Ajusta a la dreta","center":"Centre","justify":"Justificat","alignLeft":"Alinea a l'esquerra","alignRight":"Alinea a la dreta","alignCenter":"Align Center","alignTop":"Superior","alignMiddle":"Centre","alignBottom":"Inferior","alignNone":"Cap","invalidValue":"Valor no và lid.","invalidHeight":"L'alçada ha de ser un número.","invalidWidth":"L'amplada ha de ser un número.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"El valor especificat per als \"%1\" camps ha de ser un número positiu amb o sense unitat de mesura và lida de CSS (px, %, in, cm, mm, em, ex, pt o pc).","invalidHtmlLength":"El valor especificat per als \"%1\" camps ha de ser un número positiu amb o sense unitat de mesura và lida d'HTML (px o %).","invalidInlineStyle":"El valor especificat per l'estil en lÃnia ha de constar d'una o més tuples amb el format \"name: value\", separats per punt i coma.","cssLengthTooltip":"Introduïu un número per un valor en pÃxels o un número amb una unitat và lida de CSS (px, %, in, cm, mm, em, ex, pt o pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>","keyboard":{"8":"Retrocés","13":"Intro","16":"Majúscules","17":"Ctrl","18":"Alt","32":"Space","35":"Fi","36":"Inici","46":"Eliminar","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/cs.js b/core/assets/vendor/ckeditor/lang/cs.js index bf7a6eb05374..451733c55e4a 100644 --- a/core/assets/vendor/ckeditor/lang/cs.js +++ b/core/assets/vendor/ckeditor/lang/cs.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['cs']={"widget":{"move":"KlepnÄ›te a táhnÄ›te pro pÅ™esunutÃ","label":"Ovládacà prvek %1"},"undo":{"redo":"Znovu","undo":"ZpÄ›t"},"toolbar":{"toolbarCollapse":"Skrýt panel nástrojů","toolbarExpand":"Zobrazit panel nástrojů","toolbarGroups":{"document":"Dokument","clipboard":"Schránka/ZpÄ›t","editing":"Úpravy","forms":"Formuláře","basicstyles":"Základnà styly","paragraph":"Odstavec","links":"Odkazy","insert":"Vložit","styles":"Styly","colors":"Barvy","tools":"Nástroje"},"toolbars":"Panely nástrojů editoru"},"table":{"border":"OhraniÄenÃ","caption":"Popis","cell":{"menu":"Buňka","insertBefore":"Vložit buňku pÅ™ed","insertAfter":"Vložit buňku za","deleteCell":"Smazat buňky","merge":"SlouÄit buňky","mergeRight":"SlouÄit doprava","mergeDown":"SlouÄit dolů","splitHorizontal":"RozdÄ›lit buňky vodorovnÄ›","splitVertical":"RozdÄ›lit buňky svisle","title":"Vlastnosti buňky","cellType":"Typ buňky","rowSpan":"Spojit řádky","colSpan":"Spojit sloupce","wordWrap":"ZalamovánÃ","hAlign":"Vodorovné zarovnánÃ","vAlign":"Svislé zarovnánÃ","alignBaseline":"Na úÄaÅ™Ã","bgColor":"Barva pozadÃ","borderColor":"Barva okraje","data":"Data","header":"HlaviÄka","yes":"Ano","no":"Ne","invalidWidth":"Å ÃÅ™ka buňky musà být ÄÃslo.","invalidHeight":"Zadaná výška buňky musà být ÄÃslená.","invalidRowSpan":"Zadaný poÄet slouÄených řádků musà být celé ÄÃslo.","invalidColSpan":"Zadaný poÄet slouÄených sloupců musà být celé ÄÃslo.","chooseColor":"VýbÄ›r"},"cellPad":"Odsazenà obsahu v buňce","cellSpace":"Vzdálenost bunÄ›k","column":{"menu":"Sloupec","insertBefore":"Vložit sloupec pÅ™ed","insertAfter":"Vložit sloupec za","deleteColumn":"Smazat sloupec"},"columns":"Sloupce","deleteTable":"Smazat tabulku","headers":"ZáhlavÃ","headersBoth":"ObojÃ","headersColumn":"Prvnà sloupec","headersNone":"Žádné","headersRow":"Prvnà řádek","heightUnit":"jednotka výšky","invalidBorder":"Zdaná velikost okraje musà být ÄÃselná.","invalidCellPadding":"Zadané odsazenà obsahu v buňce musà být ÄÃselné.","invalidCellSpacing":"Zadaná vzdálenost bunÄ›k musà být ÄÃselná.","invalidCols":"PoÄet sloupců musà být ÄÃslo vÄ›tÅ¡Ã než 0.","invalidHeight":"Zadaná výška tabulky musà být ÄÃselná.","invalidRows":"PoÄet řádků musà být ÄÃslo vÄ›tÅ¡Ã než 0.","invalidWidth":"Å ÃÅ™ka tabulky musà být ÄÃslo.","menu":"Vlastnosti tabulky","row":{"menu":"Řádek","insertBefore":"Vložit řádek pÅ™ed","insertAfter":"Vložit řádek za","deleteRow":"Smazat řádky"},"rows":"Řádky","summary":"Souhrn","title":"Vlastnosti tabulky","toolbar":"Tabulka","widthPc":"procent","widthPx":"bodů","widthUnit":"jednotka Å¡ÃÅ™ky"},"stylescombo":{"label":"Styl","panelTitle":"Formátovacà styly","panelTitle1":"Blokové styly","panelTitle2":"Řádkové styly","panelTitle3":"Objektové styly"},"specialchar":{"options":"Nastavenà speciálnÃch znaků","title":"VýbÄ›r speciálnÃho znaku","toolbar":"Vložit speciálnà znaky"},"sourcedialog":{"toolbar":"Zdroj","title":"Zdroj"},"sourcearea":{"toolbar":"Zdroj"},"showblocks":{"toolbar":"Ukázat bloky"},"removeformat":{"toolbar":"Odstranit formátovánÃ"},"pastetext":{"button":"Vložit jako Äistý text","pasteNotification":"StisknÄ›te %1 pro vloženÃ. Váš prohlÞeÄ nepodporuje vkládánà pomocà tlaÄÃtka na panelu nástrojů nebo volby kontextového menu.","title":"Vložit jako Äistý text"},"pastefromword":{"confirmCleanup":"Jak je vidÄ›t, vkládaný text je kopÃrován z Wordu. Chcete jej pÅ™ed vloženÃm vyÄistit?","error":"Z důvodu vnitÅ™nà chyby nebylo možné provést vyÄiÅ¡tÄ›nà vkládaného textu.","title":"Vložit z Wordu","toolbar":"Vložit z Wordu"},"notification":{"closed":"Oznámenà zavÅ™eno."},"maximize":{"maximize":"Maximalizovat","minimize":"Minimalizovat"},"magicline":{"title":"zde vložit odstavec"},"list":{"bulletedlist":"Odrážky","numberedlist":"ÄŒÃslovánÃ"},"language":{"button":"Nastavit jazyk","remove":"Odstranit jazyk"},"indent":{"indent":"ZvÄ›tÅ¡it odsazenÃ","outdent":"ZmenÅ¡it odsazenÃ"},"image2":{"alt":"Alternativnà text","btnUpload":"Odeslat na server","captioned":"Obrázek s popisem","captionPlaceholder":"Popis","infoTab":"Informace o obrázku","lockRatio":"Zámek","menu":"Vlastnosti obrázku","pathName":"Obrázek","pathNameCaption":"Popis","resetSize":"Původnà velikost","resizer":"KlepnÄ›te a táhnÄ›te pro zmÄ›nu velikosti","title":"Vlastnosti obrázku","uploadTab":"Odeslat","urlMissing":"Zadané URL zdroje obrázku nebylo nalezeno.","altMissing":"Alternativnà text chybÃ."},"horizontalrule":{"toolbar":"Vložit vodorovnou linku"},"format":{"label":"Formát","panelTitle":"Formát","tag_address":"Adresa","tag_div":"Normálnà (DIV)","tag_h1":"Nadpis 1","tag_h2":"Nadpis 2","tag_h3":"Nadpis 3","tag_h4":"Nadpis 4","tag_h5":"Nadpis 5","tag_h6":"Nadpis 6","tag_p":"NormálnÃ","tag_pre":"Naformátováno"},"filetools":{"loadError":"PÅ™i Ätenà souboru doÅ¡lo k chybÄ›.","networkError":"PÅ™i nahrávánà souboru doÅ¡lo k chybÄ› v sÃti.","httpError404":"PÅ™i nahrávánà souboru doÅ¡lo k chybÄ› HTTP (404: Soubor nenalezen).","httpError403":"PÅ™i nahrávánà souboru doÅ¡lo k chybÄ› HTTP (403: Zakázáno).","httpError":"PÅ™i nahrávánà souboru doÅ¡lo k chybÄ› HTTP (chybový stav: %1).","noUrlError":"URL pro nahránà nenà zadána.","responseError":"Nesprávná odpovÄ›Ä serveru."},"elementspath":{"eleLabel":"Cesta objektu","eleTitle":"%1 objekt"},"contextmenu":{"options":"Nastavenà kontextové nabÃdky"},"clipboard":{"copy":"KopÃrovat","copyError":"BezpeÄnostnà nastavenà vaÅ¡eho prohlÞeÄe nedovolujà editoru spustit funkci pro kopÃrovánà zvoleného textu do schránky. ProsÃm zkopÃrujte zvolený text do schránky pomocà klávesnice (Ctrl/Cmd+C).","cut":"Vyjmout","cutError":"BezpeÄnostnà nastavenà vaÅ¡eho prohlÞeÄe nedovolujà editoru spustit funkci pro vyjmutà zvoleného textu do schránky. ProsÃm vyjmÄ›te zvolený text do schránky pomocà klávesnice (Ctrl/Cmd+X).","paste":"Vložit","pasteNotification":"StisknÄ›te %1 pro vloženÃ. Váš prohlÞeÄ nepodporuje vkládánà pomocà tlaÄÃtka na panelu nástrojů nebo volby kontextového menu.","pasteArea":"Oblast vkládánÃ","pasteMsg":"Vložte svůj obsah do oblasti nÞe a stisknÄ›te OK."},"blockquote":{"toolbar":"Citace"},"basicstyles":{"bold":"TuÄné","italic":"KurzÃva","strike":"PÅ™eÅ¡krtnuté","subscript":"Dolnà index","superscript":"Hornà index","underline":"Podtržené"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"O aplikaci CKEditor 4","moreInfo":"Pro informace o lincenci navÅ¡tivte naÅ¡i webovou stránku:"},"editor":"Textový editor","editorPanel":"Panel textového editoru","common":{"editorHelp":"StisknÄ›te ALT 0 pro nápovÄ›du","browseServer":"Vybrat na serveru","url":"URL","protocol":"Protokol","upload":"Odeslat","uploadSubmit":"Odeslat na server","image":"Obrázek","flash":"Flash","form":"Formulář","checkbox":"ZaÅ¡krtávacà polÃÄko","radio":"PÅ™epÃnaÄ","textField":"Textové pole","textarea":"Textová oblast","hiddenField":"Skryté pole","button":"TlaÄÃtko","select":"Seznam","imageButton":"Obrázkové tlaÄÃtko","notSet":"<nenastaveno>","id":"Id","name":"Jméno","langDir":"SmÄ›r jazyka","langDirLtr":"Zleva doprava (LTR)","langDirRtl":"Zprava doleva (RTL)","langCode":"Kód jazyka","longDescr":"Dlouhý popis URL","cssClass":"TÅ™Ãda stylu","advisoryTitle":"Pomocný titulek","cssStyle":"Styl","ok":"OK","cancel":"ZruÅ¡it","close":"ZavÅ™Ãt","preview":"Náhled","resize":"Uchopit pro zmÄ›nu velikosti","generalTab":"Obecné","advancedTab":"RozÅ¡ÃÅ™ené","validateNumberFailed":"Zadaná hodnota nenà ÄÃselná.","confirmNewPage":"Jakékoliv neuložené zmÄ›ny obsahu budou ztraceny. SkuteÄnÄ› chcete otevÅ™Ãt novou stránku?","confirmCancel":"NÄ›která z nastavenà byla zmÄ›nÄ›na. SkuteÄnÄ› chcete zavÅ™Ãt dialogové okno?","options":"NastavenÃ","target":"CÃl","targetNew":"Nové okno (_blank)","targetTop":"Okno nejvyššà úrovnÄ› (_top)","targetSelf":"Stejné okno (_self)","targetParent":"RodiÄovské okno (_parent)","langDirLTR":"Zleva doprava (LTR)","langDirRTL":"Zprava doleva (RTL)","styles":"Styly","cssClasses":"TÅ™Ãdy stylů","width":"Å ÃÅ™ka","height":"Výška","align":"ZarovnánÃ","left":"Vlevo","right":"Vpravo","center":"Na stÅ™ed","justify":"Zarovnat do bloku","alignLeft":"Zarovnat vlevo","alignRight":"Zarovnat vpravo","alignCenter":"Zarovnat na stÅ™ed","alignTop":"Nahoru","alignMiddle":"Na stÅ™ed","alignBottom":"Dolů","alignNone":"Žádné","invalidValue":"Neplatná hodnota.","invalidHeight":"Zadaná výška musà být ÄÃslo.","invalidWidth":"Å ÃÅ™ka musà být ÄÃslo.","invalidLength":"Hodnota urÄená pro pole \"%1\" musà být kladné ÄÃslo bez nebo s platnou jednotkou mÃry (%2).","invalidCssLength":"Hodnota urÄená pro pole \"%1\" musà být kladné ÄÃslo bez nebo s platnou jednotkou mÃry CSS (px, %, in, cm, mm, em, ex, pt, nebo pc).","invalidHtmlLength":"Hodnota urÄená pro pole \"%1\" musà být kladné ÄÃslo bez nebo s platnou jednotkou mÃry HTML (px nebo %).","invalidInlineStyle":"Hodnota urÄená pro řádkový styl se musà skládat z jedné nebo vÃce n-tic ve formátu \"název : hodnota\", oddÄ›lené stÅ™ednÃky","cssLengthTooltip":"Zadejte ÄÃslo jako hodnotu v pixelech nebo ÄÃslo s platnou jednotkou CSS (px, %, v cm, mm, em, ex, pt, nebo pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupné</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"MezernÃk","35":"Konec","36":"Domů","46":"Smazat","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Klávesová zkratka","optionDefault":"VýchozÃ"}}; \ No newline at end of file +CKEDITOR.lang['cs']={"widget":{"move":"KlepnÄ›te a táhnÄ›te pro pÅ™esunutÃ","label":"Ovládacà prvek %1"},"undo":{"redo":"Znovu","undo":"ZpÄ›t"},"toolbar":{"toolbarCollapse":"Skrýt panel nástrojů","toolbarExpand":"Zobrazit panel nástrojů","toolbarGroups":{"document":"Dokument","clipboard":"Schránka/ZpÄ›t","editing":"Úpravy","forms":"Formuláře","basicstyles":"Základnà styly","paragraph":"Odstavec","links":"Odkazy","insert":"Vložit","styles":"Styly","colors":"Barvy","tools":"Nástroje"},"toolbars":"Panely nástrojů editoru"},"table":{"border":"OhraniÄenÃ","caption":"Popis","cell":{"menu":"Buňka","insertBefore":"Vložit buňku pÅ™ed","insertAfter":"Vložit buňku za","deleteCell":"Smazat buňky","merge":"SlouÄit buňky","mergeRight":"SlouÄit doprava","mergeDown":"SlouÄit dolů","splitHorizontal":"RozdÄ›lit buňky vodorovnÄ›","splitVertical":"RozdÄ›lit buňky svisle","title":"Vlastnosti buňky","cellType":"Typ buňky","rowSpan":"Spojit řádky","colSpan":"Spojit sloupce","wordWrap":"ZalamovánÃ","hAlign":"Vodorovné zarovnánÃ","vAlign":"Svislé zarovnánÃ","alignBaseline":"Na úÄaÅ™Ã","bgColor":"Barva pozadÃ","borderColor":"Barva okraje","data":"Data","header":"HlaviÄka","yes":"Ano","no":"Ne","invalidWidth":"Å ÃÅ™ka buňky musà být ÄÃslo.","invalidHeight":"Zadaná výška buňky musà být ÄÃslená.","invalidRowSpan":"Zadaný poÄet slouÄených řádků musà být celé ÄÃslo.","invalidColSpan":"Zadaný poÄet slouÄených sloupců musà být celé ÄÃslo.","chooseColor":"VýbÄ›r"},"cellPad":"Odsazenà obsahu v buňce","cellSpace":"Vzdálenost bunÄ›k","column":{"menu":"Sloupec","insertBefore":"Vložit sloupec pÅ™ed","insertAfter":"Vložit sloupec za","deleteColumn":"Smazat sloupec"},"columns":"Sloupce","deleteTable":"Smazat tabulku","headers":"ZáhlavÃ","headersBoth":"ObojÃ","headersColumn":"Prvnà sloupec","headersNone":"Žádné","headersRow":"Prvnà řádek","heightUnit":"jednotka výšky","invalidBorder":"Zdaná velikost okraje musà být ÄÃselná.","invalidCellPadding":"Zadané odsazenà obsahu v buňce musà být ÄÃselné.","invalidCellSpacing":"Zadaná vzdálenost bunÄ›k musà být ÄÃselná.","invalidCols":"PoÄet sloupců musà být ÄÃslo vÄ›tÅ¡Ã než 0.","invalidHeight":"Zadaná výška tabulky musà být ÄÃselná.","invalidRows":"PoÄet řádků musà být ÄÃslo vÄ›tÅ¡Ã než 0.","invalidWidth":"Å ÃÅ™ka tabulky musà být ÄÃslo.","menu":"Vlastnosti tabulky","row":{"menu":"Řádek","insertBefore":"Vložit řádek pÅ™ed","insertAfter":"Vložit řádek za","deleteRow":"Smazat řádky"},"rows":"Řádky","summary":"Souhrn","title":"Vlastnosti tabulky","toolbar":"Tabulka","widthPc":"procent","widthPx":"bodů","widthUnit":"jednotka Å¡ÃÅ™ky"},"stylescombo":{"label":"Styl","panelTitle":"Formátovacà styly","panelTitle1":"Blokové styly","panelTitle2":"Řádkové styly","panelTitle3":"Objektové styly"},"specialchar":{"options":"Nastavenà speciálnÃch znaků","title":"VýbÄ›r speciálnÃho znaku","toolbar":"Vložit speciálnà znaky"},"sourcedialog":{"toolbar":"Zdroj","title":"Zdroj"},"sourcearea":{"toolbar":"Zdroj"},"showblocks":{"toolbar":"Ukázat bloky"},"removeformat":{"toolbar":"Odstranit formátovánÃ"},"pastetext":{"button":"Vložit jako Äistý text","pasteNotification":"StisknÄ›te %1 pro vloženÃ. Váš prohlÞeÄ nepodporuje vkládánà pomocà tlaÄÃtka na panelu nástrojů nebo volby kontextového menu.","title":"Vložit jako Äistý text"},"pastefromword":{"confirmCleanup":"Jak je vidÄ›t, vkládaný text je kopÃrován z Wordu. Chcete jej pÅ™ed vloženÃm vyÄistit?","error":"Z důvodu vnitÅ™nà chyby nebylo možné provést vyÄiÅ¡tÄ›nà vkládaného textu.","title":"Vložit z Wordu","toolbar":"Vložit z Wordu"},"notification":{"closed":"Oznámenà zavÅ™eno."},"maximize":{"maximize":"Maximalizovat","minimize":"Minimalizovat"},"magicline":{"title":"zde vložit odstavec"},"list":{"bulletedlist":"Odrážky","numberedlist":"ÄŒÃslovánÃ"},"language":{"button":"Nastavit jazyk","remove":"Odstranit jazyk"},"indent":{"indent":"ZvÄ›tÅ¡it odsazenÃ","outdent":"ZmenÅ¡it odsazenÃ"},"image2":{"alt":"Alternativnà text","btnUpload":"Odeslat na server","captioned":"Obrázek s popisem","captionPlaceholder":"Popis","infoTab":"Informace o obrázku","lockRatio":"Zámek","menu":"Vlastnosti obrázku","pathName":"Obrázek","pathNameCaption":"Popis","resetSize":"Původnà velikost","resizer":"KlepnÄ›te a táhnÄ›te pro zmÄ›nu velikosti","title":"Vlastnosti obrázku","uploadTab":"Odeslat","urlMissing":"Zadané URL zdroje obrázku nebylo nalezeno.","altMissing":"Alternativnà text chybÃ."},"horizontalrule":{"toolbar":"Vložit vodorovnou linku"},"format":{"label":"Formát","panelTitle":"Formát","tag_address":"Adresa","tag_div":"Normálnà (DIV)","tag_h1":"Nadpis 1","tag_h2":"Nadpis 2","tag_h3":"Nadpis 3","tag_h4":"Nadpis 4","tag_h5":"Nadpis 5","tag_h6":"Nadpis 6","tag_p":"NormálnÃ","tag_pre":"Naformátováno"},"filetools":{"loadError":"PÅ™i Ätenà souboru doÅ¡lo k chybÄ›.","networkError":"PÅ™i nahrávánà souboru doÅ¡lo k chybÄ› v sÃti.","httpError404":"PÅ™i nahrávánà souboru doÅ¡lo k chybÄ› HTTP (404: Soubor nenalezen).","httpError403":"PÅ™i nahrávánà souboru doÅ¡lo k chybÄ› HTTP (403: Zakázáno).","httpError":"PÅ™i nahrávánà souboru doÅ¡lo k chybÄ› HTTP (chybový stav: %1).","noUrlError":"URL pro nahránà nenà zadána.","responseError":"Nesprávná odpovÄ›Ä serveru."},"elementspath":{"eleLabel":"Cesta objektu","eleTitle":"%1 objekt"},"contextmenu":{"options":"Nastavenà kontextové nabÃdky"},"clipboard":{"copy":"KopÃrovat","copyError":"BezpeÄnostnà nastavenà vaÅ¡eho prohlÞeÄe nedovolujà editoru spustit funkci pro kopÃrovánà zvoleného textu do schránky. ProsÃm zkopÃrujte zvolený text do schránky pomocà klávesnice (Ctrl/Cmd+C).","cut":"Vyjmout","cutError":"BezpeÄnostnà nastavenà vaÅ¡eho prohlÞeÄe nedovolujà editoru spustit funkci pro vyjmutà zvoleného textu do schránky. ProsÃm vyjmÄ›te zvolený text do schránky pomocà klávesnice (Ctrl/Cmd+X).","paste":"Vložit","pasteNotification":"StisknÄ›te %1 pro vloženÃ. Váš prohlÞeÄ nepodporuje vkládánà pomocà tlaÄÃtka na panelu nástrojů nebo volby kontextového menu.","pasteArea":"Oblast vkládánÃ","pasteMsg":"Vložte svůj obsah do oblasti nÞe a stisknÄ›te OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citace"},"basicstyles":{"bold":"TuÄné","italic":"KurzÃva","strike":"PÅ™eÅ¡krtnuté","subscript":"Dolnà index","superscript":"Hornà index","underline":"Podtržené"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"O aplikaci CKEditor 4","moreInfo":"Pro informace o lincenci navÅ¡tivte naÅ¡i webovou stránku:"},"editor":"Textový editor","editorPanel":"Panel textového editoru","common":{"editorHelp":"StisknÄ›te ALT 0 pro nápovÄ›du","browseServer":"Vybrat na serveru","url":"URL","protocol":"Protokol","upload":"Odeslat","uploadSubmit":"Odeslat na server","image":"Obrázek","form":"Formulář","checkbox":"ZaÅ¡krtávacà polÃÄko","radio":"PÅ™epÃnaÄ","textField":"Textové pole","textarea":"Textová oblast","hiddenField":"Skryté pole","button":"TlaÄÃtko","select":"Seznam","imageButton":"Obrázkové tlaÄÃtko","notSet":"<nenastaveno>","id":"Id","name":"Jméno","langDir":"SmÄ›r jazyka","langDirLtr":"Zleva doprava (LTR)","langDirRtl":"Zprava doleva (RTL)","langCode":"Kód jazyka","longDescr":"Dlouhý popis URL","cssClass":"TÅ™Ãda stylu","advisoryTitle":"Pomocný titulek","cssStyle":"Styl","ok":"OK","cancel":"ZruÅ¡it","close":"ZavÅ™Ãt","preview":"Náhled","resize":"Uchopit pro zmÄ›nu velikosti","generalTab":"Obecné","advancedTab":"RozÅ¡ÃÅ™ené","validateNumberFailed":"Zadaná hodnota nenà ÄÃselná.","confirmNewPage":"Jakékoliv neuložené zmÄ›ny obsahu budou ztraceny. SkuteÄnÄ› chcete otevÅ™Ãt novou stránku?","confirmCancel":"NÄ›která z nastavenà byla zmÄ›nÄ›na. SkuteÄnÄ› chcete zavÅ™Ãt dialogové okno?","options":"NastavenÃ","target":"CÃl","targetNew":"Nové okno (_blank)","targetTop":"Okno nejvyššà úrovnÄ› (_top)","targetSelf":"Stejné okno (_self)","targetParent":"RodiÄovské okno (_parent)","langDirLTR":"Zleva doprava (LTR)","langDirRTL":"Zprava doleva (RTL)","styles":"Styly","cssClasses":"TÅ™Ãdy stylů","width":"Å ÃÅ™ka","height":"Výška","align":"ZarovnánÃ","left":"Vlevo","right":"Vpravo","center":"Na stÅ™ed","justify":"Zarovnat do bloku","alignLeft":"Zarovnat vlevo","alignRight":"Zarovnat vpravo","alignCenter":"Zarovnat na stÅ™ed","alignTop":"Nahoru","alignMiddle":"Na stÅ™ed","alignBottom":"Dolů","alignNone":"Žádné","invalidValue":"Neplatná hodnota.","invalidHeight":"Zadaná výška musà být ÄÃslo.","invalidWidth":"Å ÃÅ™ka musà být ÄÃslo.","invalidLength":"Hodnota urÄená pro pole \"%1\" musà být kladné ÄÃslo bez nebo s platnou jednotkou mÃry (%2).","invalidCssLength":"Hodnota urÄená pro pole \"%1\" musà být kladné ÄÃslo bez nebo s platnou jednotkou mÃry CSS (px, %, in, cm, mm, em, ex, pt, nebo pc).","invalidHtmlLength":"Hodnota urÄená pro pole \"%1\" musà být kladné ÄÃslo bez nebo s platnou jednotkou mÃry HTML (px nebo %).","invalidInlineStyle":"Hodnota urÄená pro řádkový styl se musà skládat z jedné nebo vÃce n-tic ve formátu \"název : hodnota\", oddÄ›lené stÅ™ednÃky","cssLengthTooltip":"Zadejte ÄÃslo jako hodnotu v pixelech nebo ÄÃslo s platnou jednotkou CSS (px, %, v cm, mm, em, ex, pt, nebo pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupné</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"MezernÃk","35":"Konec","36":"Domů","46":"Smazat","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Klávesová zkratka","optionDefault":"VýchozÃ"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/cy.js b/core/assets/vendor/ckeditor/lang/cy.js index 17c41e7116c4..318a7c128be3 100644 --- a/core/assets/vendor/ckeditor/lang/cy.js +++ b/core/assets/vendor/ckeditor/lang/cy.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['cy']={"widget":{"move":"Clcio a llusgo i symud","label":"%1 widget"},"undo":{"redo":"Ailwneud","undo":"Dadwneud"},"toolbar":{"toolbarCollapse":"Cyfangu'r Bar Offer","toolbarExpand":"Ehangu'r Bar Offer","toolbarGroups":{"document":"Dogfen","clipboard":"Clipfwrdd/Dadwneud","editing":"Golygu","forms":"Ffurflenni","basicstyles":"Arddulliau Sylfaenol","paragraph":"Paragraff","links":"Dolenni","insert":"Mewnosod","styles":"Arddulliau","colors":"Lliwiau","tools":"Offer"},"toolbars":"Bariau offer y golygydd"},"table":{"border":"Maint yr Ymyl","caption":"Pennawd","cell":{"menu":"Cell","insertBefore":"Mewnosod Cell Cyn","insertAfter":"Mewnosod Cell Ar Ôl","deleteCell":"Dileu Celloedd","merge":"Cyfuno Celloedd","mergeRight":"Cyfuno i'r Dde","mergeDown":"Cyfuno i Lawr","splitHorizontal":"Hollti'r Gell yn Lorweddol","splitVertical":"Hollti'r Gell yn Fertigol","title":"Priodweddau'r Gell","cellType":"Math y Gell","rowSpan":"Rhychwant Rhesi","colSpan":"Rhychwant Colofnau","wordWrap":"Lapio Geiriau","hAlign":"Aliniad Llorweddol","vAlign":"Aliniad Fertigol","alignBaseline":"Baslinell","bgColor":"Lliw Cefndir","borderColor":"Lliw Ymyl","data":"Data","header":"Pennyn","yes":"Ie","no":"Na","invalidWidth":"Mae'n rhaid i led y gell fod yn rhif.","invalidHeight":"Mae'n rhaid i uchder y gell fod yn rhif.","invalidRowSpan":"Mae'n rhaid i rychwant y rhesi fod yn gyfanrif.","invalidColSpan":"Mae'n rhaid i rychwant y colofnau fod yn gyfanrif.","chooseColor":"Dewis"},"cellPad":"Padio'r gell","cellSpace":"Bylchiad y gell","column":{"menu":"Colofn","insertBefore":"Mewnosod Colofn Cyn","insertAfter":"Mewnosod Colofn Ar Ôl","deleteColumn":"Dileu Colofnau"},"columns":"Colofnau","deleteTable":"Dileu Tabl","headers":"Penynnau","headersBoth":"Y Ddau","headersColumn":"Colofn gyntaf","headersNone":"Dim","headersRow":"Rhes gyntaf","heightUnit":"height unit","invalidBorder":"Mae'n rhaid i faint yr ymyl fod yn rhif.","invalidCellPadding":"Mae'n rhaid i badiad y gell fod yn rhif positif.","invalidCellSpacing":"Mae'n rhaid i fylchiad y gell fod yn rhif positif.","invalidCols":"Mae'n rhaid cael o leiaf un golofn.","invalidHeight":"Mae'n rhaid i uchder y tabl fod yn rhif.","invalidRows":"Mae'n rhaid cael o leiaf un rhes.","invalidWidth":"Mae'n rhaid i led y tabl fod yn rhif.","menu":"Priodweddau'r Tabl","row":{"menu":"Rhes","insertBefore":"Mewnosod Rhes Cyn","insertAfter":"Mewnosod Rhes Ar Ôl","deleteRow":"Dileu Rhesi"},"rows":"Rhesi","summary":"Crynodeb","title":"Priodweddau'r Tabl","toolbar":"Tabl","widthPc":"y cant","widthPx":"picsel","widthUnit":"uned lled"},"stylescombo":{"label":"Arddulliau","panelTitle":"Arddulliau Fformatio","panelTitle1":"Arddulliau Bloc","panelTitle2":"Arddulliau Mewnol","panelTitle3":"Arddulliau Gwrthrych"},"specialchar":{"options":"Opsiynau Nodau Arbennig","title":"Dewis Nod Arbennig","toolbar":"Mewnosod Nod Arbennig"},"sourcedialog":{"toolbar":"HTML","title":"HTML"},"sourcearea":{"toolbar":"HTML"},"showblocks":{"toolbar":"Dangos Blociau"},"removeformat":{"toolbar":"Tynnu Fformat"},"pastetext":{"button":"Gludo fel testun plaen","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Gludo fel Testun Plaen"},"pastefromword":{"confirmCleanup":"Mae'r testun rydych chi am ludo wedi'i gopïo o Word. Ydych chi am ei lanhau cyn ei ludo?","error":"Doedd dim modd glanhau y data a ludwyd oherwydd gwall mewnol","title":"Gludo o Word","toolbar":"Gludo o Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Mwyhau","minimize":"Lleihau"},"magicline":{"title":"Mewnosod paragraff yma"},"list":{"bulletedlist":"Mewnosod/Tynnu Rhestr Bwled","numberedlist":"Mewnosod/Tynnu Rhestr Rhifol"},"language":{"button":"Gosod iaith","remove":"Tynnu iaith"},"indent":{"indent":"Cynyddu'r Mewnoliad","outdent":"Lleihau'r Mewnoliad"},"image2":{"alt":"Testun Amgen","btnUpload":"Anfon i'r Gweinydd","captioned":"Delwedd â phennawd","captionPlaceholder":"Caption","infoTab":"Gwyb Delwedd","lockRatio":"Cloi Cymhareb","menu":"Priodweddau Delwedd","pathName":"delwedd","pathNameCaption":"pennawd","resetSize":"Ailosod Maint","resizer":"Clicio a llusgo i ail-meintio","title":"Priodweddau Delwedd","uploadTab":"Lanlwytho","urlMissing":"URL gwreiddiol y ddelwedd ar goll.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Mewnosod Llinell Lorweddol"},"format":{"label":"Fformat","panelTitle":"Fformat Paragraff","tag_address":"Cyfeiriad","tag_div":"Normal (DIV)","tag_h1":"Pennawd 1","tag_h2":"Pennawd 2","tag_h3":"Pennawd 3","tag_h4":"Pennawd 4","tag_h5":"Pennawd 5","tag_h6":"Pennawd 6","tag_p":"Normal","tag_pre":"Wedi'i Fformatio"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Llwybr elfennau","eleTitle":"Elfen %1"},"contextmenu":{"options":"Opsiynau Dewislen Cyd-destun"},"clipboard":{"copy":"Copïo","copyError":"'Dyw gosodiadau diogelwch eich porwr ddim yn caniatà u'r golygydd i gynnal 'gweithredoedd copïo' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).","cut":"Torri","cutError":"Nid yw gosodiadau diogelwch eich porwr yn caniatà u'r golygydd i gynnal 'gweithredoedd torri' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).","paste":"Gludo","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Ardal Gludo","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Dyfyniad bloc"},"basicstyles":{"bold":"Bras","italic":"Italig","strike":"Llinell Trwyddo","subscript":"Is-sgript","superscript":"Uwchsgript","underline":"Tanlinellu"},"about":{"copy":"Hawlfraint © $1. Cedwir pob hawl.","dlgTitle":"About CKEditor 4","moreInfo":"Am wybodaeth ynghylch trwyddedau, ewch i'n gwefan:"},"editor":"Golygydd Testun Cyfoethog","editorPanel":"Panel Golygydd Testun Cyfoethog","common":{"editorHelp":"Gwasgwch ALT 0 am gymorth","browseServer":"Pori'r Gweinydd","url":"URL","protocol":"Protocol","upload":"Lanlwytho","uploadSubmit":"Anfon i'r Gweinydd","image":"Delwedd","flash":"Flash","form":"Ffurflen","checkbox":"Blwch ticio","radio":"Botwm Radio","textField":"Maes Testun","textarea":"Ardal Testun","hiddenField":"Maes Cudd","button":"Botwm","select":"Maes Dewis","imageButton":"Botwm Delwedd","notSet":"<heb osod>","id":"Id","name":"Name","langDir":"Cyfeiriad Iaith","langDirLtr":"Chwith i'r Dde (LTR)","langDirRtl":"Dde i'r Chwith (RTL)","langCode":"Cod Iaith","longDescr":"URL Disgrifiad Hir","cssClass":"Dosbarthiadau Dalen Arddull","advisoryTitle":"Teitl Cynghorol","cssStyle":"Arddull","ok":"Iawn","cancel":"Diddymu","close":"Cau","preview":"Rhagolwg","resize":"Ailfeintio","generalTab":"Cyffredinol","advancedTab":"Uwch","validateNumberFailed":"'Dyw'r gwerth hwn ddim yn rhif.","confirmNewPage":"Byddwch chi'n colli unrhyw newidiadau i'r cynnwys sydd heb eu cadw. Ydych am barhau i lwytho tudalen newydd?","confirmCancel":"Cafodd rhai o'r opsiynau eu newid. Ydych chi wir am gau'r deialog?","options":"Opsiynau","target":"Targed","targetNew":"Ffenest Newydd (_blank)","targetTop":"Ffenest ar y Brig (_top)","targetSelf":"Yr un Ffenest (_self)","targetParent":"Ffenest y Rhiant (_parent)","langDirLTR":"Chwith i'r Dde (LTR)","langDirRTL":"Dde i'r Chwith (RTL)","styles":"Arddull","cssClasses":"Dosbarthiadau Dalen Arddull","width":"Lled","height":"Uchder","align":"Alinio","left":"Chwith","right":"Dde","center":"Canol","justify":"Unioni","alignLeft":"Alinio i'r Chwith","alignRight":"Alinio i'r Dde","alignCenter":"Align Center","alignTop":"Brig","alignMiddle":"Canol","alignBottom":"Gwaelod","alignNone":"None","invalidValue":"Gwerth annilys.","invalidHeight":"Mae'n rhaid i'r uchder fod yn rhif.","invalidWidth":"Mae'n rhaid i'r lled fod yn rhif.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad CSS dilys (px, %, in, cm, mm, em, ex, pt, neu pc).","invalidHtmlLength":"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad HTML dilys (px neu %).","invalidInlineStyle":"Mae'n rhaid i'r gwerth ar gyfer arddull mewn-llinell gynnwys un set neu fwy ar y fformat \"enw : gwerth\", wedi'u gwahanu gyda hanner colon.","cssLengthTooltip":"Rhowch rif am werth mewn picsel neu rhif gydag uned CSS dilys (px, %, in, cm, mm, em, pt neu pc).","unavailable":"%1<span class=\"cke_accessibility\">, ddim ar gael</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['cy']={"widget":{"move":"Clcio a llusgo i symud","label":"%1 widget"},"undo":{"redo":"Ailwneud","undo":"Dadwneud"},"toolbar":{"toolbarCollapse":"Cyfangu'r Bar Offer","toolbarExpand":"Ehangu'r Bar Offer","toolbarGroups":{"document":"Dogfen","clipboard":"Clipfwrdd/Dadwneud","editing":"Golygu","forms":"Ffurflenni","basicstyles":"Arddulliau Sylfaenol","paragraph":"Paragraff","links":"Dolenni","insert":"Mewnosod","styles":"Arddulliau","colors":"Lliwiau","tools":"Offer"},"toolbars":"Bariau offer y golygydd"},"table":{"border":"Maint yr Ymyl","caption":"Pennawd","cell":{"menu":"Cell","insertBefore":"Mewnosod Cell Cyn","insertAfter":"Mewnosod Cell Ar Ôl","deleteCell":"Dileu Celloedd","merge":"Cyfuno Celloedd","mergeRight":"Cyfuno i'r Dde","mergeDown":"Cyfuno i Lawr","splitHorizontal":"Hollti'r Gell yn Lorweddol","splitVertical":"Hollti'r Gell yn Fertigol","title":"Priodweddau'r Gell","cellType":"Math y Gell","rowSpan":"Rhychwant Rhesi","colSpan":"Rhychwant Colofnau","wordWrap":"Lapio Geiriau","hAlign":"Aliniad Llorweddol","vAlign":"Aliniad Fertigol","alignBaseline":"Baslinell","bgColor":"Lliw Cefndir","borderColor":"Lliw Ymyl","data":"Data","header":"Pennyn","yes":"Ie","no":"Na","invalidWidth":"Mae'n rhaid i led y gell fod yn rhif.","invalidHeight":"Mae'n rhaid i uchder y gell fod yn rhif.","invalidRowSpan":"Mae'n rhaid i rychwant y rhesi fod yn gyfanrif.","invalidColSpan":"Mae'n rhaid i rychwant y colofnau fod yn gyfanrif.","chooseColor":"Dewis"},"cellPad":"Padio'r gell","cellSpace":"Bylchiad y gell","column":{"menu":"Colofn","insertBefore":"Mewnosod Colofn Cyn","insertAfter":"Mewnosod Colofn Ar Ôl","deleteColumn":"Dileu Colofnau"},"columns":"Colofnau","deleteTable":"Dileu Tabl","headers":"Penynnau","headersBoth":"Y Ddau","headersColumn":"Colofn gyntaf","headersNone":"Dim","headersRow":"Rhes gyntaf","heightUnit":"height unit","invalidBorder":"Mae'n rhaid i faint yr ymyl fod yn rhif.","invalidCellPadding":"Mae'n rhaid i badiad y gell fod yn rhif positif.","invalidCellSpacing":"Mae'n rhaid i fylchiad y gell fod yn rhif positif.","invalidCols":"Mae'n rhaid cael o leiaf un golofn.","invalidHeight":"Mae'n rhaid i uchder y tabl fod yn rhif.","invalidRows":"Mae'n rhaid cael o leiaf un rhes.","invalidWidth":"Mae'n rhaid i led y tabl fod yn rhif.","menu":"Priodweddau'r Tabl","row":{"menu":"Rhes","insertBefore":"Mewnosod Rhes Cyn","insertAfter":"Mewnosod Rhes Ar Ôl","deleteRow":"Dileu Rhesi"},"rows":"Rhesi","summary":"Crynodeb","title":"Priodweddau'r Tabl","toolbar":"Tabl","widthPc":"y cant","widthPx":"picsel","widthUnit":"uned lled"},"stylescombo":{"label":"Arddulliau","panelTitle":"Arddulliau Fformatio","panelTitle1":"Arddulliau Bloc","panelTitle2":"Arddulliau Mewnol","panelTitle3":"Arddulliau Gwrthrych"},"specialchar":{"options":"Opsiynau Nodau Arbennig","title":"Dewis Nod Arbennig","toolbar":"Mewnosod Nod Arbennig"},"sourcedialog":{"toolbar":"HTML","title":"HTML"},"sourcearea":{"toolbar":"HTML"},"showblocks":{"toolbar":"Dangos Blociau"},"removeformat":{"toolbar":"Tynnu Fformat"},"pastetext":{"button":"Gludo fel testun plaen","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Gludo fel Testun Plaen"},"pastefromword":{"confirmCleanup":"Mae'r testun rydych chi am ludo wedi'i gopïo o Word. Ydych chi am ei lanhau cyn ei ludo?","error":"Doedd dim modd glanhau y data a ludwyd oherwydd gwall mewnol","title":"Gludo o Word","toolbar":"Gludo o Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Mwyhau","minimize":"Lleihau"},"magicline":{"title":"Mewnosod paragraff yma"},"list":{"bulletedlist":"Mewnosod/Tynnu Rhestr Bwled","numberedlist":"Mewnosod/Tynnu Rhestr Rhifol"},"language":{"button":"Gosod iaith","remove":"Tynnu iaith"},"indent":{"indent":"Cynyddu'r Mewnoliad","outdent":"Lleihau'r Mewnoliad"},"image2":{"alt":"Testun Amgen","btnUpload":"Anfon i'r Gweinydd","captioned":"Delwedd â phennawd","captionPlaceholder":"Caption","infoTab":"Gwyb Delwedd","lockRatio":"Cloi Cymhareb","menu":"Priodweddau Delwedd","pathName":"delwedd","pathNameCaption":"pennawd","resetSize":"Ailosod Maint","resizer":"Clicio a llusgo i ail-meintio","title":"Priodweddau Delwedd","uploadTab":"Lanlwytho","urlMissing":"URL gwreiddiol y ddelwedd ar goll.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Mewnosod Llinell Lorweddol"},"format":{"label":"Fformat","panelTitle":"Fformat Paragraff","tag_address":"Cyfeiriad","tag_div":"Normal (DIV)","tag_h1":"Pennawd 1","tag_h2":"Pennawd 2","tag_h3":"Pennawd 3","tag_h4":"Pennawd 4","tag_h5":"Pennawd 5","tag_h6":"Pennawd 6","tag_p":"Normal","tag_pre":"Wedi'i Fformatio"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Llwybr elfennau","eleTitle":"Elfen %1"},"contextmenu":{"options":"Opsiynau Dewislen Cyd-destun"},"clipboard":{"copy":"Copïo","copyError":"'Dyw gosodiadau diogelwch eich porwr ddim yn caniatà u'r golygydd i gynnal 'gweithredoedd copïo' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).","cut":"Torri","cutError":"Nid yw gosodiadau diogelwch eich porwr yn caniatà u'r golygydd i gynnal 'gweithredoedd torri' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).","paste":"Gludo","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Ardal Gludo","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Dyfyniad bloc"},"basicstyles":{"bold":"Bras","italic":"Italig","strike":"Llinell Trwyddo","subscript":"Is-sgript","superscript":"Uwchsgript","underline":"Tanlinellu"},"about":{"copy":"Hawlfraint © $1. Cedwir pob hawl.","dlgTitle":"About CKEditor 4","moreInfo":"Am wybodaeth ynghylch trwyddedau, ewch i'n gwefan:"},"editor":"Golygydd Testun Cyfoethog","editorPanel":"Panel Golygydd Testun Cyfoethog","common":{"editorHelp":"Gwasgwch ALT 0 am gymorth","browseServer":"Pori'r Gweinydd","url":"URL","protocol":"Protocol","upload":"Lanlwytho","uploadSubmit":"Anfon i'r Gweinydd","image":"Delwedd","form":"Ffurflen","checkbox":"Blwch ticio","radio":"Botwm Radio","textField":"Maes Testun","textarea":"Ardal Testun","hiddenField":"Maes Cudd","button":"Botwm","select":"Maes Dewis","imageButton":"Botwm Delwedd","notSet":"<heb osod>","id":"Id","name":"Name","langDir":"Cyfeiriad Iaith","langDirLtr":"Chwith i'r Dde (LTR)","langDirRtl":"Dde i'r Chwith (RTL)","langCode":"Cod Iaith","longDescr":"URL Disgrifiad Hir","cssClass":"Dosbarthiadau Dalen Arddull","advisoryTitle":"Teitl Cynghorol","cssStyle":"Arddull","ok":"Iawn","cancel":"Diddymu","close":"Cau","preview":"Rhagolwg","resize":"Ailfeintio","generalTab":"Cyffredinol","advancedTab":"Uwch","validateNumberFailed":"'Dyw'r gwerth hwn ddim yn rhif.","confirmNewPage":"Byddwch chi'n colli unrhyw newidiadau i'r cynnwys sydd heb eu cadw. Ydych am barhau i lwytho tudalen newydd?","confirmCancel":"Cafodd rhai o'r opsiynau eu newid. Ydych chi wir am gau'r deialog?","options":"Opsiynau","target":"Targed","targetNew":"Ffenest Newydd (_blank)","targetTop":"Ffenest ar y Brig (_top)","targetSelf":"Yr un Ffenest (_self)","targetParent":"Ffenest y Rhiant (_parent)","langDirLTR":"Chwith i'r Dde (LTR)","langDirRTL":"Dde i'r Chwith (RTL)","styles":"Arddull","cssClasses":"Dosbarthiadau Dalen Arddull","width":"Lled","height":"Uchder","align":"Alinio","left":"Chwith","right":"Dde","center":"Canol","justify":"Unioni","alignLeft":"Alinio i'r Chwith","alignRight":"Alinio i'r Dde","alignCenter":"Align Center","alignTop":"Brig","alignMiddle":"Canol","alignBottom":"Gwaelod","alignNone":"None","invalidValue":"Gwerth annilys.","invalidHeight":"Mae'n rhaid i'r uchder fod yn rhif.","invalidWidth":"Mae'n rhaid i'r lled fod yn rhif.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad CSS dilys (px, %, in, cm, mm, em, ex, pt, neu pc).","invalidHtmlLength":"Mae'n rhaid i'r gwerth ar gyfer maes \"%1\" fod yn rhif positif gyda neu heb uned fesuriad HTML dilys (px neu %).","invalidInlineStyle":"Mae'n rhaid i'r gwerth ar gyfer arddull mewn-llinell gynnwys un set neu fwy ar y fformat \"enw : gwerth\", wedi'u gwahanu gyda hanner colon.","cssLengthTooltip":"Rhowch rif am werth mewn picsel neu rhif gydag uned CSS dilys (px, %, in, cm, mm, em, pt neu pc).","unavailable":"%1<span class=\"cke_accessibility\">, ddim ar gael</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/da.js b/core/assets/vendor/ckeditor/lang/da.js index 4ab153a5c70c..6c93e4af8a71 100644 --- a/core/assets/vendor/ckeditor/lang/da.js +++ b/core/assets/vendor/ckeditor/lang/da.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['da']={"widget":{"move":"Klik og træk for at flytte","label":"%1 widget"},"undo":{"redo":"Annullér fortryd","undo":"Fortryd"},"toolbar":{"toolbarCollapse":"Sammenklap værktøjslinje","toolbarExpand":"Udvid værktøjslinje","toolbarGroups":{"document":"Dokument","clipboard":"Udklipsholder/Fortryd","editing":"Redigering","forms":"Formularer","basicstyles":"Basis styles","paragraph":"Paragraf","links":"Links","insert":"Indsæt","styles":"Typografier","colors":"Farver","tools":"Værktøjer"},"toolbars":"Editors værktøjslinjer"},"table":{"border":"Rammebredde","caption":"Titel","cell":{"menu":"Celle","insertBefore":"Indsæt celle før","insertAfter":"Indsæt celle efter","deleteCell":"Slet celle","merge":"Flet celler","mergeRight":"Flet til højre","mergeDown":"Flet nedad","splitHorizontal":"Del celle vandret","splitVertical":"Del celle lodret","title":"Celleegenskaber","cellType":"Celletype","rowSpan":"Række span (rows span)","colSpan":"Kolonne span (columns span)","wordWrap":"Tekstombrydning","hAlign":"Vandret justering","vAlign":"Lodret justering","alignBaseline":"Grundlinje","bgColor":"Baggrundsfarve","borderColor":"Rammefarve","data":"Data","header":"Hoved","yes":"Ja","no":"Nej","invalidWidth":"Cellebredde skal være et tal.","invalidHeight":"Cellehøjde skal være et tal.","invalidRowSpan":"Række span skal være et heltal.","invalidColSpan":"Kolonne span skal være et heltal.","chooseColor":"Vælg"},"cellPad":"Cellemargen","cellSpace":"Celleafstand","column":{"menu":"Kolonne","insertBefore":"Indsæt kolonne før","insertAfter":"Indsæt kolonne efter","deleteColumn":"Slet kolonne"},"columns":"Kolonner","deleteTable":"Slet tabel","headers":"Hoved","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første række","heightUnit":"højde enhed","invalidBorder":"Rammetykkelse skal være et tal.","invalidCellPadding":"Cellemargen skal være et tal.","invalidCellSpacing":"Celleafstand skal være et tal.","invalidCols":"Antallet af kolonner skal være større end 0.","invalidHeight":"Tabelhøjde skal være et tal.","invalidRows":"Antallet af rækker skal være større end 0.","invalidWidth":"Tabelbredde skal være et tal.","menu":"Egenskaber for tabel","row":{"menu":"Række","insertBefore":"Indsæt række før","insertAfter":"Indsæt række efter","deleteRow":"Slet række"},"rows":"Rækker","summary":"Resumé","title":"Egenskaber for tabel","toolbar":"Tabel","widthPc":"procent","widthPx":"pixels","widthUnit":"Bredde pÃ¥ enhed"},"stylescombo":{"label":"Typografi","panelTitle":"Formatering pÃ¥ stylesheet","panelTitle1":"Blok typografi","panelTitle2":"Inline typografi","panelTitle3":"Objekt typografi"},"specialchar":{"options":"Muligheder for specielle karakterer","title":"Vælg specielle karakterer","toolbar":"Indsæt specielle karakterer"},"sourcedialog":{"toolbar":"Kilde","title":"Kilde"},"sourcearea":{"toolbar":"Kilde"},"showblocks":{"toolbar":"Vis afsnitsmærker"},"removeformat":{"toolbar":"Fjern formatering"},"pastetext":{"button":"Indsæt som ikke-formateret tekst","pasteNotification":"Klik %1 for at indsætte. Din browser understøtter ikke indsæt med tastatur eller kontekstmenu-valg.","title":"Indsæt som ikke-formateret tekst"},"pastefromword":{"confirmCleanup":"Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes?","error":"Det var ikke muligt at fjerne formatteringen pÃ¥ den indsatte tekst grundet en intern fejl","title":"Indsæt fra Word","toolbar":"Indsæt fra Word"},"notification":{"closed":"Notifikation lukket."},"maximize":{"maximize":"Maksimér","minimize":"Minimér"},"magicline":{"title":"Indsæt afsnit"},"list":{"bulletedlist":"Punktopstilling","numberedlist":"Talopstilling"},"language":{"button":"Vælg sprog","remove":"Fjern sprog"},"indent":{"indent":"Forøg indrykning","outdent":"Formindsk indrykning"},"image2":{"alt":"Alternativ tekst","btnUpload":"Upload fil til serveren","captioned":"Tekstet billede","captionPlaceholder":"Tekst","infoTab":"Generelt","lockRatio":"LÃ¥s størrelsesforhold","menu":"Egenskaber for billede","pathName":"billede","pathNameCaption":"tekst","resetSize":"Nulstil størrelse","resizer":"Klik og træk for at ændre størrelsen","title":"Egenskaber for billede","uploadTab":"Upload","urlMissing":"Kilde pÃ¥ billed-URL mangler","altMissing":"Alternativ-tekst mangler."},"horizontalrule":{"toolbar":"Indsæt vandret streg"},"format":{"label":"Formatering","panelTitle":"Formatering","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formateret"},"filetools":{"loadError":"Der skete en fejl ved indlæsningen af filen.","networkError":"Der skete en netværks fejl under uploadingen.","httpError404":"Der skete en HTTP fejl under uploadingen (404: File not found).","httpError403":"Der skete en HTTP fejl under uploadingen (403: Forbidden).","httpError":"Der skete en HTTP fejl under uploadingen (error status: %1).","noUrlError":"Upload URL er ikke defineret.","responseError":"Ikke korrekt server svar."},"elementspath":{"eleLabel":"Sti pÃ¥ element","eleTitle":"%1 element"},"contextmenu":{"options":"Muligheder for hjælpemenu"},"clipboard":{"copy":"Kopiér","copyError":"Din browsers sikkerhedsindstillinger tillader ikke editoren at fÃ¥ automatisk adgang til udklipsholderen. Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).","cut":"Klip","cutError":"Din browsers sikkerhedsindstillinger tillader ikke editoren at fÃ¥ automatisk adgang til udklipsholderen. Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).","paste":"Indsæt","pasteNotification":"Tryk %1 for at sætte ind. Din browser understøtter ikke indsættelse med værktøjslinje knappen eller kontekst menuen.","pasteArea":"Indsættelses omrÃ¥de","pasteMsg":"Indsæt dit indhold i omrÃ¥det nedenfor og tryk OK."},"blockquote":{"toolbar":"Blokcitat"},"basicstyles":{"bold":"Fed","italic":"Kursiv","strike":"Gennemstreget","subscript":"Sænket skrift","superscript":"Hævet skrift","underline":"Understreget"},"about":{"copy":"Copyright © $1. Alle rettigheder forbeholdes.","dlgTitle":"Om CKEditor 4","moreInfo":"For informationer omkring licens, se venligst vores hjemmeside (pÃ¥ engelsk):"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Tryk ALT 0 for hjælp","browseServer":"Gennemse...","url":"URL","protocol":"Protokol","upload":"Upload","uploadSubmit":"Upload","image":"Indsæt billede","flash":"Indsæt Flash","form":"Indsæt formular","checkbox":"Indsæt afkrydsningsfelt","radio":"Indsæt alternativknap","textField":"Indsæt tekstfelt","textarea":"Indsæt tekstboks","hiddenField":"Indsæt skjult felt","button":"Indsæt knap","select":"Indsæt liste","imageButton":"Indsæt billedknap","notSet":"<intet valgt>","id":"Id","name":"Navn","langDir":"Tekstretning","langDirLtr":"Fra venstre mod højre (LTR)","langDirRtl":"Fra højre mod venstre (RTL)","langCode":"Sprogkode","longDescr":"Udvidet beskrivelse","cssClass":"Typografiark (CSS)","advisoryTitle":"Titel","cssStyle":"Typografi (CSS)","ok":"OK","cancel":"Annullér","close":"Luk","preview":"ForhÃ¥ndsvisning","resize":"Træk for at skalere","generalTab":"Generelt","advancedTab":"Avanceret","validateNumberFailed":"Værdien er ikke et tal.","confirmNewPage":"Alt indhold, der ikke er blevet gemt, vil gÃ¥ tabt. Er du sikker pÃ¥, at du vil indlæse en ny side?","confirmCancel":"Nogle af indstillingerne er blevet ændret. Er du sikker pÃ¥, at du vil lukke vinduet?","options":"Vis muligheder","target":"MÃ¥l","targetNew":"Nyt vindue (_blank)","targetTop":"Øverste vindue (_top)","targetSelf":"Samme vindue (_self)","targetParent":"Samme vindue (_parent)","langDirLTR":"Venstre til højre (LTR)","langDirRTL":"Højre til venstre (RTL)","styles":"Style","cssClasses":"Stylesheetklasser","width":"Bredde","height":"Højde","align":"Justering","left":"Venstre","right":"Højre","center":"Center","justify":"Lige margener","alignLeft":"Venstrestillet","alignRight":"Højrestillet","alignCenter":"Centreret","alignTop":"Øverst","alignMiddle":"Centreret","alignBottom":"Nederst","alignNone":"Ingen","invalidValue":"Ugyldig værdi.","invalidHeight":"Højde skal være et tal.","invalidWidth":"Bredde skal være et tal.","invalidLength":"Værdien angivet for feltet \"%1\" skal være et positivt heltal med eller uden en gyldig mÃ¥leenhed (%2).","invalidCssLength":"Værdien specificeret for \"%1\" feltet skal være et positivt nummer med eller uden en CSS mÃ¥leenhed (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Værdien specificeret for \"%1\" feltet skal være et positivt nummer med eller uden en CSS mÃ¥leenhed (px eller %).","invalidInlineStyle":"Værdien specificeret for inline style skal indeholde en eller flere elementer med et format som \"name:value\", separeret af semikoloner","cssLengthTooltip":"Indsæt en numerisk værdi i pixel eller nummer med en gyldig CSS værdi (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, ikke tilgængelig</span>","keyboard":{"8":"Backspace","13":"Retur","16":"Shift","17":"Ctrl","18":"Alt","32":"Mellemrum","35":"Slut","36":"Hjem","46":"Slet","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Kommando"},"keyboardShortcut":"Tastatur genvej","optionDefault":"Standard"}}; \ No newline at end of file +CKEDITOR.lang['da']={"widget":{"move":"Klik og træk for at flytte","label":"%1 widget"},"undo":{"redo":"Annullér fortryd","undo":"Fortryd"},"toolbar":{"toolbarCollapse":"Sammenklap værktøjslinje","toolbarExpand":"Udvid værktøjslinje","toolbarGroups":{"document":"Dokument","clipboard":"Udklipsholder/Fortryd","editing":"Redigering","forms":"Formularer","basicstyles":"Basis styles","paragraph":"Paragraf","links":"Links","insert":"Indsæt","styles":"Typografier","colors":"Farver","tools":"Værktøjer"},"toolbars":"Editors værktøjslinjer"},"table":{"border":"Rammebredde","caption":"Titel","cell":{"menu":"Celle","insertBefore":"Indsæt celle før","insertAfter":"Indsæt celle efter","deleteCell":"Slet celle","merge":"Flet celler","mergeRight":"Flet til højre","mergeDown":"Flet nedad","splitHorizontal":"Del celle vandret","splitVertical":"Del celle lodret","title":"Celleegenskaber","cellType":"Celletype","rowSpan":"Række span (rows span)","colSpan":"Kolonne span (columns span)","wordWrap":"Tekstombrydning","hAlign":"Vandret justering","vAlign":"Lodret justering","alignBaseline":"Grundlinje","bgColor":"Baggrundsfarve","borderColor":"Rammefarve","data":"Data","header":"Hoved","yes":"Ja","no":"Nej","invalidWidth":"Cellebredde skal være et tal.","invalidHeight":"Cellehøjde skal være et tal.","invalidRowSpan":"Række span skal være et heltal.","invalidColSpan":"Kolonne span skal være et heltal.","chooseColor":"Vælg"},"cellPad":"Cellemargen","cellSpace":"Celleafstand","column":{"menu":"Kolonne","insertBefore":"Indsæt kolonne før","insertAfter":"Indsæt kolonne efter","deleteColumn":"Slet kolonne"},"columns":"Kolonner","deleteTable":"Slet tabel","headers":"Hoved","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første række","heightUnit":"højde enhed","invalidBorder":"Rammetykkelse skal være et tal.","invalidCellPadding":"Cellemargen skal være et tal.","invalidCellSpacing":"Celleafstand skal være et tal.","invalidCols":"Antallet af kolonner skal være større end 0.","invalidHeight":"Tabelhøjde skal være et tal.","invalidRows":"Antallet af rækker skal være større end 0.","invalidWidth":"Tabelbredde skal være et tal.","menu":"Egenskaber for tabel","row":{"menu":"Række","insertBefore":"Indsæt række før","insertAfter":"Indsæt række efter","deleteRow":"Slet række"},"rows":"Rækker","summary":"Resumé","title":"Egenskaber for tabel","toolbar":"Tabel","widthPc":"procent","widthPx":"pixels","widthUnit":"Bredde pÃ¥ enhed"},"stylescombo":{"label":"Typografi","panelTitle":"Formatering pÃ¥ stylesheet","panelTitle1":"Blok typografi","panelTitle2":"Inline typografi","panelTitle3":"Objekt typografi"},"specialchar":{"options":"Muligheder for specielle karakterer","title":"Vælg specielle karakterer","toolbar":"Indsæt specielle karakterer"},"sourcedialog":{"toolbar":"Kilde","title":"Kilde"},"sourcearea":{"toolbar":"Kilde"},"showblocks":{"toolbar":"Vis afsnitsmærker"},"removeformat":{"toolbar":"Fjern formatering"},"pastetext":{"button":"Indsæt som ikke-formateret tekst","pasteNotification":"Klik %1 for at indsætte. Din browser understøtter ikke indsæt med tastatur eller kontekstmenu-valg.","title":"Indsæt som ikke-formateret tekst"},"pastefromword":{"confirmCleanup":"Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes?","error":"Det var ikke muligt at fjerne formatteringen pÃ¥ den indsatte tekst grundet en intern fejl","title":"Indsæt fra Word","toolbar":"Indsæt fra Word"},"notification":{"closed":"Notifikation lukket."},"maximize":{"maximize":"Maksimér","minimize":"Minimér"},"magicline":{"title":"Indsæt afsnit"},"list":{"bulletedlist":"Punktopstilling","numberedlist":"Talopstilling"},"language":{"button":"Vælg sprog","remove":"Fjern sprog"},"indent":{"indent":"Forøg indrykning","outdent":"Formindsk indrykning"},"image2":{"alt":"Alternativ tekst","btnUpload":"Upload fil til serveren","captioned":"Tekstet billede","captionPlaceholder":"Tekst","infoTab":"Generelt","lockRatio":"LÃ¥s størrelsesforhold","menu":"Egenskaber for billede","pathName":"billede","pathNameCaption":"tekst","resetSize":"Nulstil størrelse","resizer":"Klik og træk for at ændre størrelsen","title":"Egenskaber for billede","uploadTab":"Upload","urlMissing":"Kilde pÃ¥ billed-URL mangler","altMissing":"Alternativ-tekst mangler."},"horizontalrule":{"toolbar":"Indsæt vandret streg"},"format":{"label":"Formatering","panelTitle":"Formatering","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formateret"},"filetools":{"loadError":"Der skete en fejl ved indlæsningen af filen.","networkError":"Der skete en netværks fejl under uploadingen.","httpError404":"Der skete en HTTP fejl under uploadingen (404: File not found).","httpError403":"Der skete en HTTP fejl under uploadingen (403: Forbidden).","httpError":"Der skete en HTTP fejl under uploadingen (error status: %1).","noUrlError":"Upload URL er ikke defineret.","responseError":"Ikke korrekt server svar."},"elementspath":{"eleLabel":"Sti pÃ¥ element","eleTitle":"%1 element"},"contextmenu":{"options":"Muligheder for hjælpemenu"},"clipboard":{"copy":"Kopiér","copyError":"Din browsers sikkerhedsindstillinger tillader ikke editoren at fÃ¥ automatisk adgang til udklipsholderen. Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).","cut":"Klip","cutError":"Din browsers sikkerhedsindstillinger tillader ikke editoren at fÃ¥ automatisk adgang til udklipsholderen. Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).","paste":"Indsæt","pasteNotification":"Tryk %1 for at sætte ind. Din browser understøtter ikke indsættelse med værktøjslinje knappen eller kontekst menuen.","pasteArea":"Indsættelses omrÃ¥de","pasteMsg":"Indsæt dit indhold i omrÃ¥det nedenfor og tryk OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Blokcitat"},"basicstyles":{"bold":"Fed","italic":"Kursiv","strike":"Gennemstreget","subscript":"Sænket skrift","superscript":"Hævet skrift","underline":"Understreget"},"about":{"copy":"Copyright © $1. Alle rettigheder forbeholdes.","dlgTitle":"Om CKEditor 4","moreInfo":"For informationer omkring licens, se venligst vores hjemmeside (pÃ¥ engelsk):"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Tryk ALT 0 for hjælp","browseServer":"Gennemse...","url":"URL","protocol":"Protokol","upload":"Upload","uploadSubmit":"Upload","image":"Indsæt billede","form":"Indsæt formular","checkbox":"Indsæt afkrydsningsfelt","radio":"Indsæt alternativknap","textField":"Indsæt tekstfelt","textarea":"Indsæt tekstboks","hiddenField":"Indsæt skjult felt","button":"Indsæt knap","select":"Indsæt liste","imageButton":"Indsæt billedknap","notSet":"<intet valgt>","id":"Id","name":"Navn","langDir":"Tekstretning","langDirLtr":"Fra venstre mod højre (LTR)","langDirRtl":"Fra højre mod venstre (RTL)","langCode":"Sprogkode","longDescr":"Udvidet beskrivelse","cssClass":"Typografiark (CSS)","advisoryTitle":"Titel","cssStyle":"Typografi (CSS)","ok":"OK","cancel":"Annullér","close":"Luk","preview":"ForhÃ¥ndsvisning","resize":"Træk for at skalere","generalTab":"Generelt","advancedTab":"Avanceret","validateNumberFailed":"Værdien er ikke et tal.","confirmNewPage":"Alt indhold, der ikke er blevet gemt, vil gÃ¥ tabt. Er du sikker pÃ¥, at du vil indlæse en ny side?","confirmCancel":"Nogle af indstillingerne er blevet ændret. Er du sikker pÃ¥, at du vil lukke vinduet?","options":"Vis muligheder","target":"MÃ¥l","targetNew":"Nyt vindue (_blank)","targetTop":"Øverste vindue (_top)","targetSelf":"Samme vindue (_self)","targetParent":"Samme vindue (_parent)","langDirLTR":"Venstre til højre (LTR)","langDirRTL":"Højre til venstre (RTL)","styles":"Style","cssClasses":"Stylesheetklasser","width":"Bredde","height":"Højde","align":"Justering","left":"Venstre","right":"Højre","center":"Center","justify":"Lige margener","alignLeft":"Venstrestillet","alignRight":"Højrestillet","alignCenter":"Centreret","alignTop":"Øverst","alignMiddle":"Centreret","alignBottom":"Nederst","alignNone":"Ingen","invalidValue":"Ugyldig værdi.","invalidHeight":"Højde skal være et tal.","invalidWidth":"Bredde skal være et tal.","invalidLength":"Værdien angivet for feltet \"%1\" skal være et positivt heltal med eller uden en gyldig mÃ¥leenhed (%2).","invalidCssLength":"Værdien specificeret for \"%1\" feltet skal være et positivt nummer med eller uden en CSS mÃ¥leenhed (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Værdien specificeret for \"%1\" feltet skal være et positivt nummer med eller uden en CSS mÃ¥leenhed (px eller %).","invalidInlineStyle":"Værdien specificeret for inline style skal indeholde en eller flere elementer med et format som \"name:value\", separeret af semikoloner","cssLengthTooltip":"Indsæt en numerisk værdi i pixel eller nummer med en gyldig CSS værdi (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, ikke tilgængelig</span>","keyboard":{"8":"Backspace","13":"Retur","16":"Shift","17":"Ctrl","18":"Alt","32":"Mellemrum","35":"Slut","36":"Hjem","46":"Slet","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Kommando"},"keyboardShortcut":"Tastatur genvej","optionDefault":"Standard"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/de-ch.js b/core/assets/vendor/ckeditor/lang/de-ch.js index bdfbdfedcf4b..78b013d50022 100644 --- a/core/assets/vendor/ckeditor/lang/de-ch.js +++ b/core/assets/vendor/ckeditor/lang/de-ch.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['de-ch']={"widget":{"move":"Zum Verschieben anwählen und ziehen","label":"%1 Steuerelement"},"undo":{"redo":"Wiederherstellen","undo":"Rückgängig"},"toolbar":{"toolbarCollapse":"Werkzeugleiste einklappen","toolbarExpand":"Werkzeugleiste ausklappen","toolbarGroups":{"document":"Dokument","clipboard":"Zwischenablage/Rückgängig","editing":"Editieren","forms":"Formulare","basicstyles":"Grundstile","paragraph":"Absatz","links":"Links","insert":"Einfügen","styles":"Stile","colors":"Farben","tools":"Werkzeuge"},"toolbars":"Editor Werkzeugleisten"},"table":{"border":"Rahmengrösse","caption":"Ãœberschrift","cell":{"menu":"Zelle","insertBefore":"Zelle davor einfügen","insertAfter":"Zelle danach einfügen","deleteCell":"Zelle löschen","merge":"Zellen verbinden","mergeRight":"Nach rechts verbinden","mergeDown":"Nach unten verbinden","splitHorizontal":"Zelle horizontal teilen","splitVertical":"Zelle vertikal teilen","title":"Zelleneigenschaften","cellType":"Zellart","rowSpan":"Anzahl Zeilen verbinden","colSpan":"Anzahl Spalten verbinden","wordWrap":"Zeilenumbruch","hAlign":"Horizontale Ausrichtung","vAlign":"Vertikale Ausrichtung","alignBaseline":"Grundlinie","bgColor":"Hintergrundfarbe","borderColor":"Rahmenfarbe","data":"Daten","header":"Ãœberschrift","yes":"Ja","no":"Nein","invalidWidth":"Zellenbreite muss eine Zahl sein.","invalidHeight":"Zellenhöhe muss eine Zahl sein.","invalidRowSpan":"\"Anzahl Zeilen verbinden\" muss eine Ganzzahl sein.","invalidColSpan":"\"Anzahl Spalten verbinden\" muss eine Ganzzahl sein.","chooseColor":"Wählen"},"cellPad":"Zellenabstand innen","cellSpace":"Zellenabstand aussen","column":{"menu":"Spalte","insertBefore":"Spalte links davor einfügen","insertAfter":"Spalte rechts danach einfügen","deleteColumn":"Spalte löschen"},"columns":"Spalte","deleteTable":"Tabelle löschen","headers":"Kopfzeile","headersBoth":"Beide","headersColumn":"Erste Spalte","headersNone":"Keine","headersRow":"Erste Zeile","heightUnit":"Höheneinheit","invalidBorder":"Die Rahmenbreite muss eine Zahl sein.","invalidCellPadding":"Der Zellenabstand innen muss eine positive Zahl sein.","invalidCellSpacing":"Der Zellenabstand aussen muss eine positive Zahl sein.","invalidCols":"Die Anzahl der Spalten muss grösser als 0 sein..","invalidHeight":"Die Tabellenbreite muss eine Zahl sein.","invalidRows":"Die Anzahl der Zeilen muss grösser als 0 sein.","invalidWidth":"Die Tabellenbreite muss eine Zahl sein.","menu":"Tabellen-Eigenschaften","row":{"menu":"Zeile","insertBefore":"Zeile oberhalb einfügen","insertAfter":"Zeile unterhalb einfügen","deleteRow":"Zeile entfernen"},"rows":"Zeile","summary":"Inhaltsübersicht","title":"Tabellen-Eigenschaften","toolbar":"Tabelle","widthPc":"%","widthPx":"Pixel","widthUnit":"Breiteneinheit"},"stylescombo":{"label":"Stil","panelTitle":"Formatierungsstile","panelTitle1":"Blockstile","panelTitle2":"Inline Stilart","panelTitle3":"Objektstile"},"specialchar":{"options":"Sonderzeichenoptionen","title":"Sonderzeichen auswählen","toolbar":"Sonderzeichen einfügen"},"sourcedialog":{"toolbar":"Quellcode","title":"Quellcode"},"sourcearea":{"toolbar":"Quellcode"},"showblocks":{"toolbar":"Blöcke anzeigen"},"removeformat":{"toolbar":"Formatierung entfernen"},"pastetext":{"button":"Als Klartext einfügen","pasteNotification":"Drücken Sie %1 zum Einfügen. Ihr Browser unterstützt nicht das Einfügen über dem Knopf in der Werkzeugleiste oder dem Kontextmenü.","title":"Als Klartext einfügen"},"pastefromword":{"confirmCleanup":"Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?","error":"Aufgrund eines internen Fehlers war es nicht möglich, die eingefügten Daten zu bereinigen","title":"Aus Word einfügen","toolbar":"Aus Word einfügen"},"notification":{"closed":"Benachrichtigung geschlossen."},"maximize":{"maximize":"Maximieren","minimize":"Minimieren"},"magicline":{"title":"Absatz hier einfügen"},"list":{"bulletedlist":"Liste","numberedlist":"Nummerierte Liste einfügen/entfernen"},"language":{"button":"Sprache festlegen","remove":"Sprache entfernen"},"indent":{"indent":"Einzug vergrössern","outdent":"Einzug verkleinern"},"image2":{"alt":"Alternativer Text","btnUpload":"Zum Server senden","captioned":"Bild mit Ãœberschrift","captionPlaceholder":"Ãœberschrift","infoTab":"Bildinfo","lockRatio":"Grössenverhältnis beibehalten","menu":"Bildeigenschaften","pathName":"Bild","pathNameCaption":"Ãœberschrift","resetSize":"Grösse zurücksetzen","resizer":"Zum Vergrössern auswählen und ziehen","title":"Bild-Eigenschaften","uploadTab":"Hochladen","urlMissing":"Bildquellen-URL fehlt.","altMissing":"Alternativer Text fehlt."},"horizontalrule":{"toolbar":"Horizontale Linie einfügen"},"format":{"label":"Format","panelTitle":"Absatzformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Ãœberschrift 1","tag_h2":"Ãœberschrift 2","tag_h3":"Ãœberschrift 3","tag_h4":"Ãœberschrift 4","tag_h5":"Ãœberschrift 5","tag_h6":"Ãœberschrift 6","tag_p":"Normal","tag_pre":"Formatiert"},"filetools":{"loadError":"Während dem Lesen der Datei ist ein Fehler aufgetreten.","networkError":"Während dem Hochladen der Datei ist ein Netzwerkfehler aufgetreten.","httpError404":"Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (404: Datei nicht gefunden).","httpError403":"Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (403: Verboten).","httpError":"Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (Fehlerstatus: %1).","noUrlError":"Hochlade-URL ist nicht definiert.","responseError":"Falsche Antwort des Servers."},"elementspath":{"eleLabel":"Elementepfad","eleTitle":"%1 Element"},"contextmenu":{"options":"Kontextmenüoptionen"},"clipboard":{"copy":"Kopieren","copyError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch zu kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).","cut":"Ausschneiden","cutError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).","paste":"Einfügen","pasteNotification":"Drücken Sie %1 zum Einfügen. Ihr Browser unterstützt nicht das Einfügen über dem Knopf in der Werkzeugleiste oder dem Kontextmenü.","pasteArea":"Einfügebereich","pasteMsg":"Fügen Sie den Inhalt in den unteren Bereich ein und drücken Sie OK."},"blockquote":{"toolbar":"Zitatblock"},"basicstyles":{"bold":"Fett","italic":"Kursiv","strike":"Durchgestrichen","subscript":"Tiefgestellt","superscript":"Hochgestellt","underline":"Unterstrichen"},"about":{"copy":"Copyright © $1. Alle Rechte vorbehalten.","dlgTitle":"Ãœber CKEditor 4","moreInfo":"Für Informationen über unsere Lizenzbestimmungen besuchen Sie bitte unsere Webseite:"},"editor":"WYSIWYG-Editor","editorPanel":"WYSIWYG-Editor-Leiste","common":{"editorHelp":"Drücken Sie ALT 0 für Hilfe","browseServer":"Server durchsuchen","url":"URL","protocol":"Protokoll","upload":"Hochladen","uploadSubmit":"Zum Server senden","image":"Bild","flash":"Flash","form":"Formular","checkbox":"Kontrollbox","radio":"Optionsfeld","textField":"Textfeld","textarea":"Textfeld","hiddenField":"Verstecktes Feld","button":"Schaltfläche","select":"Auswahlfeld","imageButton":"Bildschaltfläche","notSet":"<nicht festgelegt>","id":"Kennung","name":"Name","langDir":"Schreibrichtung","langDirLtr":"Links nach Rechts (LTR)","langDirRtl":"Rechts nach Links (RTL)","langCode":"Sprachcode","longDescr":"Langbeschreibungs-URL","cssClass":"Formatvorlagenklassen","advisoryTitle":"Titel Beschreibung","cssStyle":"Stil","ok":"OK","cancel":"Abbrechen","close":"Schliessen","preview":"Vorschau","resize":"Grösse ändern","generalTab":"Allgemein","advancedTab":"Erweitert","validateNumberFailed":"Dieser Wert ist keine Nummer.","confirmNewPage":"Alle nicht gespeicherten Änderungen gehen verloren. Sind Sie sicher, die neue Seite zu laden?","confirmCancel":"Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schliessen?","options":"Optionen","target":"Zielseite","targetNew":"Neues Fenster (_blank)","targetTop":"Oberstes Fenster (_top)","targetSelf":"Gleiches Fenster (_self)","targetParent":"Oberes Fenster (_parent)","langDirLTR":"Links nach Rechts (LNR)","langDirRTL":"Rechts nach Links (RNL)","styles":"Style","cssClasses":"Stylesheet Klasse","width":"Breite","height":"Höhe","align":"Ausrichtung","left":"Links","right":"Rechts","center":"Zentriert","justify":"Blocksatz","alignLeft":"Linksbündig","alignRight":"Rechtsbündig","alignCenter":"Zentriert","alignTop":"Oben","alignMiddle":"Mitte","alignBottom":"Unten","alignNone":"Keine","invalidValue":"Ungültiger Wert.","invalidHeight":"Höhe muss eine Zahl sein.","invalidWidth":"Breite muss eine Zahl sein.","invalidLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekter HTML-Masseinheit (px oder %).","invalidCssLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekter CSS-Masseinheit (px, %, in, cm, mm, em, ex, pt oder pc).","invalidHtmlLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekter HTML-Masseinheit (px oder %).","invalidInlineStyle":"Wert spezifiziert für inline Stilart muss enthalten ein oder mehr Wertepaare mit dem Format \"Name : Wert\" getrennt durch Semikolons.","cssLengthTooltip":"Geben Sie eine Zahl ein für ein Wert in Pixel oder eine Zahl mit einer korrekten CSS-Masseinheit (px, %, in, cm, mm, em, ex, pt oder pc).","unavailable":"%1<span class=\"cke_accessibility\">, nicht verfügbar</span>","keyboard":{"8":"Rücktaste","13":"Eingabe","16":"Umschalt","17":"Strg","18":"Alt","32":"Leertaste","35":"Ende","36":"Pos1","46":"Entfernen","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Befehl"},"keyboardShortcut":"Tastaturkürzel","optionDefault":"Standard"}}; \ No newline at end of file +CKEDITOR.lang['de-ch']={"widget":{"move":"Zum Verschieben anwählen und ziehen","label":"%1 Steuerelement"},"undo":{"redo":"Wiederherstellen","undo":"Rückgängig"},"toolbar":{"toolbarCollapse":"Werkzeugleiste einklappen","toolbarExpand":"Werkzeugleiste ausklappen","toolbarGroups":{"document":"Dokument","clipboard":"Zwischenablage/Rückgängig","editing":"Editieren","forms":"Formulare","basicstyles":"Grundstile","paragraph":"Absatz","links":"Links","insert":"Einfügen","styles":"Stile","colors":"Farben","tools":"Werkzeuge"},"toolbars":"Editor Werkzeugleisten"},"table":{"border":"Rahmengrösse","caption":"Ãœberschrift","cell":{"menu":"Zelle","insertBefore":"Zelle davor einfügen","insertAfter":"Zelle danach einfügen","deleteCell":"Zelle löschen","merge":"Zellen verbinden","mergeRight":"Nach rechts verbinden","mergeDown":"Nach unten verbinden","splitHorizontal":"Zelle horizontal teilen","splitVertical":"Zelle vertikal teilen","title":"Zelleneigenschaften","cellType":"Zellart","rowSpan":"Anzahl Zeilen verbinden","colSpan":"Anzahl Spalten verbinden","wordWrap":"Zeilenumbruch","hAlign":"Horizontale Ausrichtung","vAlign":"Vertikale Ausrichtung","alignBaseline":"Grundlinie","bgColor":"Hintergrundfarbe","borderColor":"Rahmenfarbe","data":"Daten","header":"Ãœberschrift","yes":"Ja","no":"Nein","invalidWidth":"Zellenbreite muss eine Zahl sein.","invalidHeight":"Zellenhöhe muss eine Zahl sein.","invalidRowSpan":"\"Anzahl Zeilen verbinden\" muss eine Ganzzahl sein.","invalidColSpan":"\"Anzahl Spalten verbinden\" muss eine Ganzzahl sein.","chooseColor":"Wählen"},"cellPad":"Zellenabstand innen","cellSpace":"Zellenabstand aussen","column":{"menu":"Spalte","insertBefore":"Spalte links davor einfügen","insertAfter":"Spalte rechts danach einfügen","deleteColumn":"Spalte löschen"},"columns":"Spalte","deleteTable":"Tabelle löschen","headers":"Kopfzeile","headersBoth":"Beide","headersColumn":"Erste Spalte","headersNone":"Keine","headersRow":"Erste Zeile","heightUnit":"Höheneinheit","invalidBorder":"Die Rahmenbreite muss eine Zahl sein.","invalidCellPadding":"Der Zellenabstand innen muss eine positive Zahl sein.","invalidCellSpacing":"Der Zellenabstand aussen muss eine positive Zahl sein.","invalidCols":"Die Anzahl der Spalten muss grösser als 0 sein..","invalidHeight":"Die Tabellenbreite muss eine Zahl sein.","invalidRows":"Die Anzahl der Zeilen muss grösser als 0 sein.","invalidWidth":"Die Tabellenbreite muss eine Zahl sein.","menu":"Tabellen-Eigenschaften","row":{"menu":"Zeile","insertBefore":"Zeile oberhalb einfügen","insertAfter":"Zeile unterhalb einfügen","deleteRow":"Zeile entfernen"},"rows":"Zeile","summary":"Inhaltsübersicht","title":"Tabellen-Eigenschaften","toolbar":"Tabelle","widthPc":"%","widthPx":"Pixel","widthUnit":"Breiteneinheit"},"stylescombo":{"label":"Stil","panelTitle":"Formatierungsstile","panelTitle1":"Blockstile","panelTitle2":"Inline Stilart","panelTitle3":"Objektstile"},"specialchar":{"options":"Sonderzeichenoptionen","title":"Sonderzeichen auswählen","toolbar":"Sonderzeichen einfügen"},"sourcedialog":{"toolbar":"Quellcode","title":"Quellcode"},"sourcearea":{"toolbar":"Quellcode"},"showblocks":{"toolbar":"Blöcke anzeigen"},"removeformat":{"toolbar":"Formatierung entfernen"},"pastetext":{"button":"Als Klartext einfügen","pasteNotification":"Drücken Sie %1 zum Einfügen. Ihr Browser unterstützt nicht das Einfügen über dem Knopf in der Werkzeugleiste oder dem Kontextmenü.","title":"Als Klartext einfügen"},"pastefromword":{"confirmCleanup":"Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?","error":"Aufgrund eines internen Fehlers war es nicht möglich, die eingefügten Daten zu bereinigen","title":"Aus Word einfügen","toolbar":"Aus Word einfügen"},"notification":{"closed":"Benachrichtigung geschlossen."},"maximize":{"maximize":"Maximieren","minimize":"Minimieren"},"magicline":{"title":"Absatz hier einfügen"},"list":{"bulletedlist":"Liste","numberedlist":"Nummerierte Liste einfügen/entfernen"},"language":{"button":"Sprache festlegen","remove":"Sprache entfernen"},"indent":{"indent":"Einzug vergrössern","outdent":"Einzug verkleinern"},"image2":{"alt":"Alternativer Text","btnUpload":"Zum Server senden","captioned":"Bild mit Ãœberschrift","captionPlaceholder":"Ãœberschrift","infoTab":"Bildinfo","lockRatio":"Grössenverhältnis beibehalten","menu":"Bildeigenschaften","pathName":"Bild","pathNameCaption":"Ãœberschrift","resetSize":"Grösse zurücksetzen","resizer":"Zum Vergrössern auswählen und ziehen","title":"Bild-Eigenschaften","uploadTab":"Hochladen","urlMissing":"Bildquellen-URL fehlt.","altMissing":"Alternativer Text fehlt."},"horizontalrule":{"toolbar":"Horizontale Linie einfügen"},"format":{"label":"Format","panelTitle":"Absatzformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Ãœberschrift 1","tag_h2":"Ãœberschrift 2","tag_h3":"Ãœberschrift 3","tag_h4":"Ãœberschrift 4","tag_h5":"Ãœberschrift 5","tag_h6":"Ãœberschrift 6","tag_p":"Normal","tag_pre":"Formatiert"},"filetools":{"loadError":"Während dem Lesen der Datei ist ein Fehler aufgetreten.","networkError":"Während dem Hochladen der Datei ist ein Netzwerkfehler aufgetreten.","httpError404":"Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (404: Datei nicht gefunden).","httpError403":"Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (403: Verboten).","httpError":"Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (Fehlerstatus: %1).","noUrlError":"Hochlade-URL ist nicht definiert.","responseError":"Falsche Antwort des Servers."},"elementspath":{"eleLabel":"Elementepfad","eleTitle":"%1 Element"},"contextmenu":{"options":"Kontextmenüoptionen"},"clipboard":{"copy":"Kopieren","copyError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch zu kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).","cut":"Ausschneiden","cutError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).","paste":"Einfügen","pasteNotification":"Drücken Sie %1 zum Einfügen. Ihr Browser unterstützt nicht das Einfügen über dem Knopf in der Werkzeugleiste oder dem Kontextmenü.","pasteArea":"Einfügebereich","pasteMsg":"Fügen Sie den Inhalt in den unteren Bereich ein und drücken Sie OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Zitatblock"},"basicstyles":{"bold":"Fett","italic":"Kursiv","strike":"Durchgestrichen","subscript":"Tiefgestellt","superscript":"Hochgestellt","underline":"Unterstrichen"},"about":{"copy":"Copyright © $1. Alle Rechte vorbehalten.","dlgTitle":"Ãœber CKEditor 4","moreInfo":"Für Informationen über unsere Lizenzbestimmungen besuchen Sie bitte unsere Webseite:"},"editor":"WYSIWYG-Editor","editorPanel":"WYSIWYG-Editor-Leiste","common":{"editorHelp":"Drücken Sie ALT 0 für Hilfe","browseServer":"Server durchsuchen","url":"URL","protocol":"Protokoll","upload":"Hochladen","uploadSubmit":"Zum Server senden","image":"Bild","form":"Formular","checkbox":"Kontrollbox","radio":"Optionsfeld","textField":"Textfeld","textarea":"Textfeld","hiddenField":"Verstecktes Feld","button":"Schaltfläche","select":"Auswahlfeld","imageButton":"Bildschaltfläche","notSet":"<nicht festgelegt>","id":"Kennung","name":"Name","langDir":"Schreibrichtung","langDirLtr":"Links nach Rechts (LTR)","langDirRtl":"Rechts nach Links (RTL)","langCode":"Sprachcode","longDescr":"Langbeschreibungs-URL","cssClass":"Formatvorlagenklassen","advisoryTitle":"Titel Beschreibung","cssStyle":"Stil","ok":"OK","cancel":"Abbrechen","close":"Schliessen","preview":"Vorschau","resize":"Grösse ändern","generalTab":"Allgemein","advancedTab":"Erweitert","validateNumberFailed":"Dieser Wert ist keine Nummer.","confirmNewPage":"Alle nicht gespeicherten Änderungen gehen verloren. Sind Sie sicher, die neue Seite zu laden?","confirmCancel":"Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schliessen?","options":"Optionen","target":"Zielseite","targetNew":"Neues Fenster (_blank)","targetTop":"Oberstes Fenster (_top)","targetSelf":"Gleiches Fenster (_self)","targetParent":"Oberes Fenster (_parent)","langDirLTR":"Links nach Rechts (LNR)","langDirRTL":"Rechts nach Links (RNL)","styles":"Style","cssClasses":"Stylesheet Klasse","width":"Breite","height":"Höhe","align":"Ausrichtung","left":"Links","right":"Rechts","center":"Zentriert","justify":"Blocksatz","alignLeft":"Linksbündig","alignRight":"Rechtsbündig","alignCenter":"Zentriert","alignTop":"Oben","alignMiddle":"Mitte","alignBottom":"Unten","alignNone":"Keine","invalidValue":"Ungültiger Wert.","invalidHeight":"Höhe muss eine Zahl sein.","invalidWidth":"Breite muss eine Zahl sein.","invalidLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekter HTML-Masseinheit (px oder %).","invalidCssLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekter CSS-Masseinheit (px, %, in, cm, mm, em, ex, pt oder pc).","invalidHtmlLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekter HTML-Masseinheit (px oder %).","invalidInlineStyle":"Wert spezifiziert für inline Stilart muss enthalten ein oder mehr Wertepaare mit dem Format \"Name : Wert\" getrennt durch Semikolons.","cssLengthTooltip":"Geben Sie eine Zahl ein für ein Wert in Pixel oder eine Zahl mit einer korrekten CSS-Masseinheit (px, %, in, cm, mm, em, ex, pt oder pc).","unavailable":"%1<span class=\"cke_accessibility\">, nicht verfügbar</span>","keyboard":{"8":"Rücktaste","13":"Eingabe","16":"Umschalt","17":"Strg","18":"Alt","32":"Leertaste","35":"Ende","36":"Pos1","46":"Entfernen","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Befehl"},"keyboardShortcut":"Tastaturkürzel","optionDefault":"Standard"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/de.js b/core/assets/vendor/ckeditor/lang/de.js index a687d6ec40f4..d841acf785f1 100644 --- a/core/assets/vendor/ckeditor/lang/de.js +++ b/core/assets/vendor/ckeditor/lang/de.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['de']={"widget":{"move":"Zum Verschieben anwählen und ziehen","label":"%1 Steuerelement"},"undo":{"redo":"Wiederherstellen","undo":"Rückgängig"},"toolbar":{"toolbarCollapse":"Werkzeugleiste einklappen","toolbarExpand":"Werkzeugleiste ausklappen","toolbarGroups":{"document":"Dokument","clipboard":"Zwischenablage/Rückgängig","editing":"Editieren","forms":"Formulare","basicstyles":"Grundstile","paragraph":"Absatz","links":"Links","insert":"Einfügen","styles":"Stile","colors":"Farben","tools":"Werkzeuge"},"toolbars":"Editor Werkzeugleisten"},"table":{"border":"Rahmengröße","caption":"Ãœberschrift","cell":{"menu":"Zelle","insertBefore":"Zelle davor einfügen","insertAfter":"Zelle danach einfügen","deleteCell":"Zelle löschen","merge":"Zellen verbinden","mergeRight":"Nach rechts verbinden","mergeDown":"Nach unten verbinden","splitHorizontal":"Zelle horizontal teilen","splitVertical":"Zelle vertikal teilen","title":"Zelleneigenschaften","cellType":"Zellart","rowSpan":"Anzahl Zeilen verbinden","colSpan":"Anzahl Spalten verbinden","wordWrap":"Zeilenumbruch","hAlign":"Horizontale Ausrichtung","vAlign":"Vertikale Ausrichtung","alignBaseline":"Grundlinie","bgColor":"Hintergrundfarbe","borderColor":"Rahmenfarbe","data":"Daten","header":"Ãœberschrift","yes":"Ja","no":"Nein","invalidWidth":"Zellenbreite muss eine Zahl sein.","invalidHeight":"Zellenhöhe muss eine Zahl sein.","invalidRowSpan":"\"Anzahl Zeilen verbinden\" muss eine Ganzzahl sein.","invalidColSpan":"\"Anzahl Spalten verbinden\" muss eine Ganzzahl sein.","chooseColor":"Wählen"},"cellPad":"Zellenabstand innen","cellSpace":"Zellenabstand außen","column":{"menu":"Spalte","insertBefore":"Spalte links davor einfügen","insertAfter":"Spalte rechts danach einfügen","deleteColumn":"Spalte löschen"},"columns":"Spalte","deleteTable":"Tabelle löschen","headers":"Kopfzeile","headersBoth":"Beide","headersColumn":"Erste Spalte","headersNone":"Keine","headersRow":"Erste Zeile","heightUnit":"Höheneinheit","invalidBorder":"Die Rahmenbreite muß eine Zahl sein.","invalidCellPadding":"Der Zellenabstand innen muß eine positive Zahl sein.","invalidCellSpacing":"Der Zellenabstand außen muß eine positive Zahl sein.","invalidCols":"Die Anzahl der Spalten muß größer als 0 sein..","invalidHeight":"Die Tabellenbreite muß eine Zahl sein.","invalidRows":"Die Anzahl der Zeilen muß größer als 0 sein.","invalidWidth":"Die Tabellenbreite muss eine Zahl sein.","menu":"Tabellen-Eigenschaften","row":{"menu":"Zeile","insertBefore":"Zeile oberhalb einfügen","insertAfter":"Zeile unterhalb einfügen","deleteRow":"Zeile entfernen"},"rows":"Zeile","summary":"Inhaltsübersicht","title":"Tabellen-Eigenschaften","toolbar":"Tabelle","widthPc":"%","widthPx":"Pixel","widthUnit":"Breite Einheit"},"stylescombo":{"label":"Stil","panelTitle":"Formatierungsstile","panelTitle1":"Blockstile","panelTitle2":"Inline Stilart","panelTitle3":"Objektstile"},"specialchar":{"options":"Sonderzeichenoptionen","title":"Sonderzeichen auswählen","toolbar":"Sonderzeichen einfügen"},"sourcedialog":{"toolbar":"Quellcode","title":"Quellcode"},"sourcearea":{"toolbar":"Quellcode"},"showblocks":{"toolbar":"Blöcke anzeigen"},"removeformat":{"toolbar":"Formatierung entfernen"},"pastetext":{"button":"Als Klartext einfügen","pasteNotification":"Drücken Sie %1 zum Einfügen. Ihr Browser unterstützt nicht das Einfügen über den Knopf in der Toolbar oder dem Kontextmenü.","title":"Als Klartext einfügen"},"pastefromword":{"confirmCleanup":"Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?","error":"Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen","title":"Aus Word einfügen","toolbar":"Aus Word einfügen"},"notification":{"closed":"Benachrichtigung geschlossen."},"maximize":{"maximize":"Maximieren","minimize":"Minimieren"},"magicline":{"title":"Absatz hier einfügen"},"list":{"bulletedlist":"Liste","numberedlist":"Nummerierte Liste einfügen/entfernen"},"language":{"button":"Sprache festlegen","remove":"Sprache entfernen"},"indent":{"indent":"Einzug vergrößern","outdent":"Einzug verkleinern"},"image2":{"alt":"Alternativer Text","btnUpload":"Zum Server senden","captioned":"Bild mit Ãœberschrift","captionPlaceholder":"Ãœberschrift","infoTab":"Bildinfo","lockRatio":"Größenverhältnis beibehalten","menu":"Bildeigenschaften","pathName":"Bild","pathNameCaption":"Ãœberschrift","resetSize":"Größe zurücksetzen","resizer":"Zum Vergrößern auswählen und ziehen","title":"Bild-Eigenschaften","uploadTab":"Hochladen","urlMissing":"Bildquellen-URL fehlt.","altMissing":"Alternativer Text fehlt."},"horizontalrule":{"toolbar":"Horizontale Linie einfügen"},"format":{"label":"Format","panelTitle":"Absatzformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Ãœberschrift 1","tag_h2":"Ãœberschrift 2","tag_h3":"Ãœberschrift 3","tag_h4":"Ãœberschrift 4","tag_h5":"Ãœberschrift 5","tag_h6":"Ãœberschrift 6","tag_p":"Normal","tag_pre":"Formatiert"},"filetools":{"loadError":"Während des Lesens der Datei ist ein Fehler aufgetreten.","networkError":"Während des Hochladens der Datei ist ein Netzwerkfehler aufgetreten.","httpError404":"Während des Hochladens der Datei ist ein HTTP-Fehler aufgetreten (404: Datei nicht gefunden).","httpError403":"Während des Hochladens der Datei ist ein HTTP-Fehler aufgetreten (403: Verboten).","httpError":"Während des Hochladens der Datei ist ein HTTP-Fehler aufgetreten (Fehlerstatus: %1).","noUrlError":"Hochlade-URL ist nicht definiert.","responseError":"Falsche Antwort des Servers."},"elementspath":{"eleLabel":"Elementepfad","eleTitle":"%1 Element"},"contextmenu":{"options":"Kontextmenüoptionen"},"clipboard":{"copy":"Kopieren","copyError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch zu kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).","cut":"Ausschneiden","cutError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).","paste":"Einfügen","pasteNotification":"Drücken Sie %1 zum Einfügen. Ihr Browser unterstützt nicht das Einfügen über den Knopf in der Toolbar oder dem Kontextmenü.","pasteArea":"Einfügebereich","pasteMsg":"Fügen Sie den Inhalt in den unteren Bereich ein und drücken Sie OK."},"blockquote":{"toolbar":"Zitatblock"},"basicstyles":{"bold":"Fett","italic":"Kursiv","strike":"Durchgestrichen","subscript":"Tiefgestellt","superscript":"Hochgestellt","underline":"Unterstrichen"},"about":{"copy":"Copyright © $1. Alle Rechte vorbehalten.","dlgTitle":"Ãœber CKEditor 4","moreInfo":"Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:"},"editor":"WYSIWYG-Editor","editorPanel":"WYSIWYG-Editor-Leiste","common":{"editorHelp":"Drücken Sie ALT 0 für Hilfe","browseServer":"Server durchsuchen","url":"URL","protocol":"Protokoll","upload":"Hochladen","uploadSubmit":"Zum Server senden","image":"Bild","flash":"Flash","form":"Formular","checkbox":"Kontrollbox","radio":"Optionsfeld","textField":"Textfeld","textarea":"Textfeld","hiddenField":"Verstecktes Feld","button":"Schaltfläche","select":"Auswahlfeld","imageButton":"Bildschaltfläche","notSet":"<nicht festgelegt>","id":"Kennung","name":"Name","langDir":"Schreibrichtung","langDirLtr":"Links nach Rechts (LTR)","langDirRtl":"Rechts nach Links (RTL)","langCode":"Sprachcode","longDescr":"Langbeschreibungs-URL","cssClass":"Formatvorlagenklassen","advisoryTitle":"Titel Beschreibung","cssStyle":"Stil","ok":"OK","cancel":"Abbrechen","close":"Schließen","preview":"Vorschau","resize":"Größe ändern","generalTab":"Allgemein","advancedTab":"Erweitert","validateNumberFailed":"Dieser Wert ist keine Nummer.","confirmNewPage":"Alle nicht gespeicherten Änderungen gehen verloren. Sind Sie sicher, die neue Seite zu laden?","confirmCancel":"Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?","options":"Optionen","target":"Zielseite","targetNew":"Neues Fenster (_blank)","targetTop":"Oberstes Fenster (_top)","targetSelf":"Gleiches Fenster (_self)","targetParent":"Oberes Fenster (_parent)","langDirLTR":"Links nach Rechts (LNR)","langDirRTL":"Rechts nach Links (RNL)","styles":"Style","cssClasses":"Stylesheet Klasse","width":"Breite","height":"Höhe","align":"Ausrichtung","left":"Links","right":"Rechts","center":"Zentriert","justify":"Blocksatz","alignLeft":"Linksbündig","alignRight":"Rechtsbündig","alignCenter":"Zentriert","alignTop":"Oben","alignMiddle":"Mitte","alignBottom":"Unten","alignNone":"Keine","invalidValue":"Ungültiger Wert.","invalidHeight":"Höhe muss eine Zahl sein.","invalidWidth":"Breite muss eine Zahl sein.","invalidLength":"Der für das Feld \"%1\" angegebene Wert muss eine positive Zahl mit oder ohne gültige Maßeinheit (%2) sein. ","invalidCssLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","invalidHtmlLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte HTML Messeinheit (px oder %).","invalidInlineStyle":"Wert spezifiziert für inline Stilart muss enthalten ein oder mehr Tupels mit dem Format \"Name : Wert\" getrennt mit Semikolons.","cssLengthTooltip":"Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","unavailable":"%1<span class=\"cke_accessibility\">, nicht verfügbar</span>","keyboard":{"8":"Rücktaste","13":"Eingabe","16":"Umschalt","17":"Strg","18":"Alt","32":"Leer","35":"Ende","36":"Pos1","46":"Entfernen","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Befehl"},"keyboardShortcut":"Tastaturkürzel","optionDefault":"Standard"}}; \ No newline at end of file +CKEDITOR.lang['de']={"widget":{"move":"Zum Verschieben anwählen und ziehen","label":"%1 Steuerelement"},"undo":{"redo":"Wiederherstellen","undo":"Rückgängig"},"toolbar":{"toolbarCollapse":"Werkzeugleiste einklappen","toolbarExpand":"Werkzeugleiste ausklappen","toolbarGroups":{"document":"Dokument","clipboard":"Zwischenablage/Rückgängig","editing":"Editieren","forms":"Formulare","basicstyles":"Grundstile","paragraph":"Absatz","links":"Links","insert":"Einfügen","styles":"Stile","colors":"Farben","tools":"Werkzeuge"},"toolbars":"Editor Werkzeugleisten"},"table":{"border":"Rahmengröße","caption":"Ãœberschrift","cell":{"menu":"Zelle","insertBefore":"Zelle davor einfügen","insertAfter":"Zelle danach einfügen","deleteCell":"Zelle löschen","merge":"Zellen verbinden","mergeRight":"Nach rechts verbinden","mergeDown":"Nach unten verbinden","splitHorizontal":"Zelle horizontal teilen","splitVertical":"Zelle vertikal teilen","title":"Zelleneigenschaften","cellType":"Zellart","rowSpan":"Anzahl Zeilen verbinden","colSpan":"Anzahl Spalten verbinden","wordWrap":"Zeilenumbruch","hAlign":"Horizontale Ausrichtung","vAlign":"Vertikale Ausrichtung","alignBaseline":"Grundlinie","bgColor":"Hintergrundfarbe","borderColor":"Rahmenfarbe","data":"Daten","header":"Ãœberschrift","yes":"Ja","no":"Nein","invalidWidth":"Zellenbreite muss eine Zahl sein.","invalidHeight":"Zellenhöhe muss eine Zahl sein.","invalidRowSpan":"\"Anzahl Zeilen verbinden\" muss eine Ganzzahl sein.","invalidColSpan":"\"Anzahl Spalten verbinden\" muss eine Ganzzahl sein.","chooseColor":"Wählen"},"cellPad":"Zellenabstand innen","cellSpace":"Zellenabstand außen","column":{"menu":"Spalte","insertBefore":"Spalte links davor einfügen","insertAfter":"Spalte rechts danach einfügen","deleteColumn":"Spalte löschen"},"columns":"Spalte","deleteTable":"Tabelle löschen","headers":"Kopfzeile","headersBoth":"Beide","headersColumn":"Erste Spalte","headersNone":"Keine","headersRow":"Erste Zeile","heightUnit":"Höheneinheit","invalidBorder":"Die Rahmenbreite muß eine Zahl sein.","invalidCellPadding":"Der Zellenabstand innen muß eine positive Zahl sein.","invalidCellSpacing":"Der Zellenabstand außen muß eine positive Zahl sein.","invalidCols":"Die Anzahl der Spalten muß größer als 0 sein..","invalidHeight":"Die Tabellenbreite muß eine Zahl sein.","invalidRows":"Die Anzahl der Zeilen muß größer als 0 sein.","invalidWidth":"Die Tabellenbreite muss eine Zahl sein.","menu":"Tabellen-Eigenschaften","row":{"menu":"Zeile","insertBefore":"Zeile oberhalb einfügen","insertAfter":"Zeile unterhalb einfügen","deleteRow":"Zeile entfernen"},"rows":"Zeile","summary":"Inhaltsübersicht","title":"Tabellen-Eigenschaften","toolbar":"Tabelle","widthPc":"%","widthPx":"Pixel","widthUnit":"Breite Einheit"},"stylescombo":{"label":"Stil","panelTitle":"Formatierungsstile","panelTitle1":"Blockstile","panelTitle2":"Inline Stilart","panelTitle3":"Objektstile"},"specialchar":{"options":"Sonderzeichenoptionen","title":"Sonderzeichen auswählen","toolbar":"Sonderzeichen einfügen"},"sourcedialog":{"toolbar":"Quellcode","title":"Quellcode"},"sourcearea":{"toolbar":"Quellcode"},"showblocks":{"toolbar":"Blöcke anzeigen"},"removeformat":{"toolbar":"Formatierung entfernen"},"pastetext":{"button":"Als Klartext einfügen","pasteNotification":"Drücken Sie %1 zum Einfügen. Ihr Browser unterstützt nicht das Einfügen über den Knopf in der Toolbar oder dem Kontextmenü.","title":"Als Klartext einfügen"},"pastefromword":{"confirmCleanup":"Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?","error":"Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen","title":"Aus Word einfügen","toolbar":"Aus Word einfügen"},"notification":{"closed":"Benachrichtigung geschlossen."},"maximize":{"maximize":"Maximieren","minimize":"Minimieren"},"magicline":{"title":"Absatz hier einfügen"},"list":{"bulletedlist":"Liste","numberedlist":"Nummerierte Liste einfügen/entfernen"},"language":{"button":"Sprache festlegen","remove":"Sprache entfernen"},"indent":{"indent":"Einzug vergrößern","outdent":"Einzug verkleinern"},"image2":{"alt":"Alternativer Text","btnUpload":"Zum Server senden","captioned":"Bild mit Ãœberschrift","captionPlaceholder":"Ãœberschrift","infoTab":"Bildinfo","lockRatio":"Größenverhältnis beibehalten","menu":"Bildeigenschaften","pathName":"Bild","pathNameCaption":"Ãœberschrift","resetSize":"Größe zurücksetzen","resizer":"Zum Vergrößern auswählen und ziehen","title":"Bild-Eigenschaften","uploadTab":"Hochladen","urlMissing":"Bildquellen-URL fehlt.","altMissing":"Alternativer Text fehlt."},"horizontalrule":{"toolbar":"Horizontale Linie einfügen"},"format":{"label":"Format","panelTitle":"Absatzformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Ãœberschrift 1","tag_h2":"Ãœberschrift 2","tag_h3":"Ãœberschrift 3","tag_h4":"Ãœberschrift 4","tag_h5":"Ãœberschrift 5","tag_h6":"Ãœberschrift 6","tag_p":"Normal","tag_pre":"Formatiert"},"filetools":{"loadError":"Während des Lesens der Datei ist ein Fehler aufgetreten.","networkError":"Während des Hochladens der Datei ist ein Netzwerkfehler aufgetreten.","httpError404":"Während des Hochladens der Datei ist ein HTTP-Fehler aufgetreten (404: Datei nicht gefunden).","httpError403":"Während des Hochladens der Datei ist ein HTTP-Fehler aufgetreten (403: Verboten).","httpError":"Während des Hochladens der Datei ist ein HTTP-Fehler aufgetreten (Fehlerstatus: %1).","noUrlError":"Hochlade-URL ist nicht definiert.","responseError":"Falsche Antwort des Servers."},"elementspath":{"eleLabel":"Elementepfad","eleTitle":"%1 Element"},"contextmenu":{"options":"Kontextmenüoptionen"},"clipboard":{"copy":"Kopieren","copyError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch zu kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).","cut":"Ausschneiden","cutError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).","paste":"Einfügen","pasteNotification":"Drücken Sie %1 zum Einfügen. Ihr Browser unterstützt nicht das Einfügen über den Knopf in der Toolbar oder dem Kontextmenü.","pasteArea":"Einfügebereich","pasteMsg":"Fügen Sie den Inhalt in den unteren Bereich ein und drücken Sie OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Zitatblock"},"basicstyles":{"bold":"Fett","italic":"Kursiv","strike":"Durchgestrichen","subscript":"Tiefgestellt","superscript":"Hochgestellt","underline":"Unterstrichen"},"about":{"copy":"Copyright © $1. Alle Rechte vorbehalten.","dlgTitle":"Ãœber CKEditor 4","moreInfo":"Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:"},"editor":"WYSIWYG-Editor","editorPanel":"WYSIWYG-Editor-Leiste","common":{"editorHelp":"Drücken Sie ALT 0 für Hilfe","browseServer":"Server durchsuchen","url":"URL","protocol":"Protokoll","upload":"Hochladen","uploadSubmit":"Zum Server senden","image":"Bild","form":"Formular","checkbox":"Kontrollbox","radio":"Optionsfeld","textField":"Textfeld","textarea":"Textfeld","hiddenField":"Verstecktes Feld","button":"Schaltfläche","select":"Auswahlfeld","imageButton":"Bildschaltfläche","notSet":"<nicht festgelegt>","id":"Kennung","name":"Name","langDir":"Schreibrichtung","langDirLtr":"Links nach Rechts (LTR)","langDirRtl":"Rechts nach Links (RTL)","langCode":"Sprachcode","longDescr":"Langbeschreibungs-URL","cssClass":"Formatvorlagenklassen","advisoryTitle":"Titel Beschreibung","cssStyle":"Stil","ok":"OK","cancel":"Abbrechen","close":"Schließen","preview":"Vorschau","resize":"Größe ändern","generalTab":"Allgemein","advancedTab":"Erweitert","validateNumberFailed":"Dieser Wert ist keine Nummer.","confirmNewPage":"Alle nicht gespeicherten Änderungen gehen verloren. Sind Sie sicher, die neue Seite zu laden?","confirmCancel":"Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?","options":"Optionen","target":"Zielseite","targetNew":"Neues Fenster (_blank)","targetTop":"Oberstes Fenster (_top)","targetSelf":"Gleiches Fenster (_self)","targetParent":"Oberes Fenster (_parent)","langDirLTR":"Links nach Rechts (LNR)","langDirRTL":"Rechts nach Links (RNL)","styles":"Style","cssClasses":"Stylesheet Klasse","width":"Breite","height":"Höhe","align":"Ausrichtung","left":"Links","right":"Rechts","center":"Zentriert","justify":"Blocksatz","alignLeft":"Linksbündig","alignRight":"Rechtsbündig","alignCenter":"Zentriert","alignTop":"Oben","alignMiddle":"Mitte","alignBottom":"Unten","alignNone":"Keine","invalidValue":"Ungültiger Wert.","invalidHeight":"Höhe muss eine Zahl sein.","invalidWidth":"Breite muss eine Zahl sein.","invalidLength":"Der für das Feld \"%1\" angegebene Wert muss eine positive Zahl mit oder ohne gültige Maßeinheit (%2) sein. ","invalidCssLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","invalidHtmlLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte HTML Messeinheit (px oder %).","invalidInlineStyle":"Wert spezifiziert für inline Stilart muss enthalten ein oder mehr Tupels mit dem Format \"Name : Wert\" getrennt mit Semikolons.","cssLengthTooltip":"Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","unavailable":"%1<span class=\"cke_accessibility\">, nicht verfügbar</span>","keyboard":{"8":"Rücktaste","13":"Eingabe","16":"Umschalt","17":"Strg","18":"Alt","32":"Leer","35":"Ende","36":"Pos1","46":"Entfernen","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Befehl"},"keyboardShortcut":"Tastaturkürzel","optionDefault":"Standard"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/el.js b/core/assets/vendor/ckeditor/lang/el.js index cce9ecba53ab..3c7c0c17808e 100644 --- a/core/assets/vendor/ckeditor/lang/el.js +++ b/core/assets/vendor/ckeditor/lang/el.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['el']={"widget":{"move":"Κάνετε κλικ και σÏÏετε το ποντίκι για να μετακινήστε","label":"%1 widget"},"undo":{"redo":"Επανάληψη","undo":"ΑναίÏεση"},"toolbar":{"toolbarCollapse":"ΣÏμπτυξη ΕÏγαλειοθήκης","toolbarExpand":"Ανάπτυξη ΕÏγαλειοθήκης","toolbarGroups":{"document":"ΈγγÏαφο","clipboard":"Î ÏόχειÏο/ΑναίÏεση","editing":"ΕπεξεÏγασία","forms":"ΦόÏμες","basicstyles":"Βασικά Στυλ","paragraph":"ΠαÏάγÏαφος","links":"ΣÏνδεσμοι","insert":"Εισαγωγή","styles":"Στυλ","colors":"ΧÏώματα","tools":"ΕÏγαλεία"},"toolbars":"ΕÏγαλειοθήκες επεξεÏγαστή"},"table":{"border":"Πάχος ΠεÏιγÏάμματος","caption":"Λεζάντα","cell":{"menu":"Κελί","insertBefore":"Εισαγωγή ÎšÎµÎ»Î¹Î¿Ï Î Ïιν","insertAfter":"Εισαγωγή ÎšÎµÎ»Î¹Î¿Ï ÎœÎµÏ„Î¬","deleteCell":"ΔιαγÏαφή Κελιών","merge":"Ενοποίηση Κελιών","mergeRight":"Συγχώνευση Με Δεξιά","mergeDown":"Συγχώνευση Με Κάτω","splitHorizontal":"ΟÏιζόντια ΔιαίÏεση ΚελιοÏ","splitVertical":"ΚατακόÏυφη ΔιαίÏεση ΚελιοÏ","title":"Ιδιότητες ΚελιοÏ","cellType":"ΤÏπος ΚελιοÏ","rowSpan":"ΕÏÏος ΓÏαμμών","colSpan":"ΕÏÏος Στηλών","wordWrap":"Αναδίπλωση ΛÎξεων","hAlign":"ΟÏιζόντια Στοίχιση","vAlign":"Κάθετη Στοίχιση","alignBaseline":"ΓÏαμμή Βάσης","bgColor":"ΧÏώμα Φόντου","borderColor":"ΧÏώμα ΠεÏιγÏάμματος","data":"ΔεδομÎνα","header":"Κεφαλίδα","yes":"Îαι","no":"Όχι","invalidWidth":"Το πλάτος του ÎºÎµÎ»Î¹Î¿Ï Ï€ÏÎπει να είναι αÏιθμός.","invalidHeight":"Το Ïψος του ÎºÎµÎ»Î¹Î¿Ï Ï€ÏÎπει να είναι αÏιθμός.","invalidRowSpan":"Το εÏÏος των γÏαμμών Ï€ÏÎπει να είναι ακÎÏαιος αÏιθμός.","invalidColSpan":"Το εÏÏος των στηλών Ï€ÏÎπει να είναι ακÎÏαιος αÏιθμός.","chooseColor":"ΕπιλÎξτε"},"cellPad":"ΑναπλήÏωση κελιών","cellSpace":"Απόσταση κελιών","column":{"menu":"Στήλη","insertBefore":"Εισαγωγή Στήλης Î Ïιν","insertAfter":"Εισαγωγή Στήλης Μετά","deleteColumn":"ΔιαγÏαφή Στηλών"},"columns":"Στήλες","deleteTable":"ΔιαγÏαφή Πίνακα","headers":"Κεφαλίδες","headersBoth":"Και τα δÏο","headersColumn":"Î Ïώτη στήλη","headersNone":"ΚανÎνα","headersRow":"Î Ïώτη ΓÏαμμή","heightUnit":"height unit","invalidBorder":"Το πάχος του πεÏιγÏάμματος Ï€ÏÎπει να είναι Îνας αÏιθμός.","invalidCellPadding":"Η αναπλήÏωση των κελιών Ï€ÏÎπει να είναι θετικός αÏιθμός.","invalidCellSpacing":"Η απόσταση Î¼ÎµÏ„Î±Î¾Ï Ï„Ï‰Î½ κελιών Ï€ÏÎπει να είναι Îνας θετικός αÏιθμός.","invalidCols":"Ο αÏιθμός των στηλών Ï€ÏÎπει να είναι μεγαλÏτεÏος από 0.","invalidHeight":"Το Ïψος του πίνακα Ï€ÏÎπει να είναι αÏιθμός.","invalidRows":"Ο αÏιθμός των σειÏών Ï€ÏÎπει να είναι μεγαλÏτεÏος από 0.","invalidWidth":"Το πλάτος του πίνακα Ï€ÏÎπει να είναι Îνας αÏιθμός.","menu":"Ιδιότητες Πίνακα","row":{"menu":"ΓÏαμμή","insertBefore":"Εισαγωγή ΓÏαμμής Î Ïιν","insertAfter":"Εισαγωγή ΓÏαμμής Μετά","deleteRow":"ΔιαγÏαφή ΓÏαμμών"},"rows":"ΓÏαμμÎÏ‚","summary":"ΠεÏίληψη","title":"Ιδιότητες Πίνακα","toolbar":"Πίνακας","widthPc":"τοις εκατό","widthPx":"pixel","widthUnit":"μονάδα πλάτους"},"stylescombo":{"label":"ΜοÏφÎÏ‚","panelTitle":"Στυλ ΜοÏφοποίησης","panelTitle1":"Στυλ Τμημάτων","panelTitle2":"Στυλ Εν ΣειÏά","panelTitle3":"Στυλ ΑντικειμÎνων"},"specialchar":{"options":"ΕπιλογÎÏ‚ Ειδικών ΧαÏακτήÏων","title":"ΕπιλÎξτε Έναν Ειδικό ΧαÏακτήÏα","toolbar":"Εισαγωγή Î•Î¹Î´Î¹ÎºÎ¿Ï Î§Î±ÏακτήÏα"},"sourcedialog":{"toolbar":"Κώδικας","title":"Κώδικας"},"sourcearea":{"toolbar":"Κώδικας"},"showblocks":{"toolbar":"Î Ïοβολή Τμημάτων"},"removeformat":{"toolbar":"ΕκκαθάÏιση ΜοÏφοποίησης"},"pastetext":{"button":"Επικόλληση ως απλό κείμενο","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Επικόλληση ως απλό κείμενο"},"pastefromword":{"confirmCleanup":"Το κείμενο που επικολλάται φαίνεται να είναι αντιγÏαμμÎνο από το Word. Μήπως θα θÎλατε να καθαÏιστεί Ï€ÏÎ¿Ï„Î¿Ï ÎµÏ€Î¹ÎºÎ¿Î»Î»Î·Î¸ÎµÎ¯;","error":"Δεν ήταν δυνατό να καθαÏιστοÏν τα δεδομÎνα λόγω ενός εσωτεÏÎ¹ÎºÎ¿Ï ÏƒÏ†Î¬Î»Î¼Î±Ï„Î¿Ï‚","title":"Επικόλληση από το Word","toolbar":"Επικόλληση από το Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Μεγιστοποίηση","minimize":"Ελαχιστοποίηση"},"magicline":{"title":"Εισάγετε παÏάγÏαφο εδώ"},"list":{"bulletedlist":"Εισαγωγή/ΑπομάκÏυνση Λίστας Κουκκίδων","numberedlist":"Εισαγωγή/ΑπομάκÏυνση ΑÏιθμημÎνης Λίστας"},"language":{"button":"ΘÎση γλώσσας","remove":"ΑφαίÏεση γλώσσας"},"indent":{"indent":"ΑÏξηση Εσοχής","outdent":"Μείωση Εσοχής"},"image2":{"alt":"Εναλλακτικό Κείμενο","btnUpload":"Αποστολή στον Διακομιστή","captioned":"Εικόνα με λεζάντα","captionPlaceholder":"Λεζάντα","infoTab":"ΠληÏοφοÏίες Εικόνας","lockRatio":"Κλείδωμα Αναλογίας","menu":"Ιδιότητες Εικόνας","pathName":"εικόνα","pathNameCaption":"λεζάντα","resetSize":"ΕπαναφοÏά ΑÏÏ‡Î¹ÎºÎ¿Ï ÎœÎµÎ³Îθους","resizer":"Κάνετε κλικ και σÏÏετε το ποντίκι για να αλλάξετε το μÎγεθος","title":"Ιδιότητες Εικόνας","uploadTab":"Αποστολή","urlMissing":"Λείπει το πηγαίο URL της εικόνας.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Εισαγωγή ΟÏιζόντιας ΓÏαμμής"},"format":{"label":"ΜοÏφοποίηση","panelTitle":"ΜοÏφοποίηση ΠαÏαγÏάφου","tag_address":"ΔιεÏθυνση","tag_div":"Κανονική (DIV)","tag_h1":"Κεφαλίδα 1","tag_h2":"Κεφαλίδα 2","tag_h3":"Κεφαλίδα 3","tag_h4":"Κεφαλίδα 4","tag_h5":"Κεφαλίδα 5","tag_h6":"Κεφαλίδα 6","tag_p":"Κανονική","tag_pre":"Î Ïο-μοÏφοποιημÎνη"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"ΔιαδÏομή Στοιχείων","eleTitle":"Στοιχείο %1"},"contextmenu":{"options":"ΕπιλογÎÏ‚ Αναδυόμενου ΜενοÏ"},"clipboard":{"copy":"ΑντιγÏαφή","copyError":"Οι Ïυθμίσεις ασφαλείας του πεÏιηγητή σας δεν επιτÏÎπουν την επιλεγμÎνη εÏγασία αντιγÏαφής. ΠαÏακαλώ χÏησιμοποιείστε το πληκτÏολόγιο (Ctrl/Cmd+C).","cut":"Αποκοπή","cutError":"Οι Ïυθμίσεις ασφαλείας του πεÏιηγητή σας δεν επιτÏÎπουν την επιλεγμÎνη εÏγασία αποκοπής. ΠαÏακαλώ χÏησιμοποιείστε το πληκτÏολόγιο (Ctrl/Cmd+X).","paste":"Επικόλληση","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"ΠεÏιοχή Επικόλλησης","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"ΠεÏιοχή ΠαÏάθεσης"},"basicstyles":{"bold":"Έντονη","italic":"Πλάγια","strike":"ΔιακÏιτή ΔιαγÏαφή","subscript":"Δείκτης","superscript":"ΕκθÎτης","underline":"ΥπογÏάμμιση"},"about":{"copy":"Πνευματικά δικαιώματα © $1 Με επιφÏλαξη παντός δικαιώματος.","dlgTitle":"ΠεÏί του CKEditor 4","moreInfo":"Για πληÏοφοÏίες σχετικÎÏ‚ με την άδεια χÏήσης, παÏακαλοÏμε επισκεφθείτε την ιστοσελίδα μας:"},"editor":"ΕπεξεÏγαστής ΠλοÏσιου ΚειμÎνου","editorPanel":"Πίνακας ΕπεξεÏγαστή ΠλοÏσιου ΚειμÎνου","common":{"editorHelp":"Πατήστε το ALT 0 για βοήθεια","browseServer":"ΕξεÏεÏνηση Διακομιστή","url":"URL","protocol":"Î Ïωτόκολλο","upload":"Αποστολή","uploadSubmit":"Αποστολή στον Διακομιστή","image":"Εικόνα","flash":"Flash","form":"ΦόÏμα","checkbox":"Κουτί Επιλογής","radio":"Κουμπί Επιλογής","textField":"Πεδίο ΚειμÎνου","textarea":"ΠεÏιοχή ΚειμÎνου","hiddenField":"ΚÏυφό Πεδίο","button":"Κουμπί","select":"Πεδίο Επιλογής","imageButton":"Κουμπί Εικόνας","notSet":"<δεν Îχει Ïυθμιστεί>","id":"Id","name":"Όνομα","langDir":"ΚατεÏθυνση ΚειμÎνου","langDirLtr":"ΑÏιστεÏά Ï€Ïος Δεξιά (LTR)","langDirRtl":"Δεξιά Ï€Ïος ΑÏιστεÏά (RTL)","langCode":"Κωδικός Γλώσσας","longDescr":"Αναλυτική ΠεÏιγÏαφή URL","cssClass":"Κλάσεις ΦÏλλων Στυλ","advisoryTitle":"Ενδεικτικός Τίτλος","cssStyle":"ΜοÏφή ΚειμÎνου","ok":"OK","cancel":"ΑκÏÏωση","close":"Κλείσιμο","preview":"Î Ïοεπισκόπηση","resize":"Αλλαγή ΜεγÎθους","generalTab":"Γενικά","advancedTab":"Για Î ÏοχωÏημÎνους","validateNumberFailed":"Αυτή η τιμή δεν είναι αÏιθμός.","confirmNewPage":"Οι όποιες αλλαγÎÏ‚ στο πεÏιεχόμενο θα χαθοÏν. Είσαστε σίγουÏοι ότι θÎλετε να φοÏτώσετε μια νÎα σελίδα;","confirmCancel":"ΜεÏικÎÏ‚ επιλογÎÏ‚ Îχουν αλλάξει. Είσαστε σίγουÏοι ότι θÎλετε να κλείσετε το παÏάθυÏο διαλόγου;","options":"ΕπιλογÎÏ‚","target":"Î ÏοοÏισμός","targetNew":"ÎÎο ΠαÏάθυÏο (_blank)","targetTop":"ΑÏχική ΠεÏιοχή (_top)","targetSelf":"Ίδιο ΠαÏάθυÏο (_self)","targetParent":"Γονεϊκό ΠαÏάθυÏο (_parent)","langDirLTR":"ΑÏιστεÏά Ï€Ïος Δεξιά (LTR)","langDirRTL":"Δεξιά Ï€Ïος ΑÏιστεÏά (RTL)","styles":"ΜοÏφή","cssClasses":"Κλάσεις ΦÏλλων Στυλ","width":"Πλάτος","height":"Ύψος","align":"Στοίχιση","left":"ΑÏιστεÏά","right":"Δεξιά","center":"ΚÎντÏο","justify":"ΠλήÏης Στοίχιση","alignLeft":"Στοίχιση ΑÏιστεÏά","alignRight":"Στοίχιση Δεξιά","alignCenter":"Align Center","alignTop":"Πάνω","alignMiddle":"ÎœÎση","alignBottom":"Κάτω","alignNone":"ΧωÏίς","invalidValue":"Μη ÎγκυÏη τιμή.","invalidHeight":"Το Ïψος Ï€ÏÎπει να είναι Îνας αÏιθμός.","invalidWidth":"Το πλάτος Ï€ÏÎπει να είναι Îνας αÏιθμός.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Η τιμή που οÏίζεται για το πεδίο \"%1\" Ï€ÏÎπει να είναι Îνας θετικός αÏιθμός με ή χωÏίς μια ÎγκυÏη μονάδα μÎÏ„Ïησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).","invalidHtmlLength":"Η τιμή που οÏίζεται για το πεδίο \"%1\" Ï€ÏÎπει να είναι Îνας θετικός αÏιθμός με ή χωÏίς μια ÎγκυÏη μονάδα μÎÏ„Ïησης HTML (px ή %).","invalidInlineStyle":"Η τιμή για το εν σειÏά στυλ Ï€ÏÎπει να πεÏιÎχει Îνα ή πεÏισσότεÏα ζεÏγη με την μοÏφή \"όνομα: τιμή\" διαχωÏισμÎνα με Ελληνικό εÏωτηματικό.","cssLengthTooltip":"Εισάγεται μια τιμή σε pixel ή Îναν αÏιθμό μαζί με μια ÎγκυÏη μονάδα μÎÏ„Ïησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).","unavailable":"%1<span class=\"cke_accessibility\">, δεν είναι διαθÎσιμο</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Κενό","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Εντολή"},"keyboardShortcut":"Συντόμευση πληκτÏολογίου","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['el']={"widget":{"move":"Κάνετε κλικ και σÏÏετε το ποντίκι για να μετακινήστε","label":"%1 widget"},"undo":{"redo":"Επανάληψη","undo":"ΑναίÏεση"},"toolbar":{"toolbarCollapse":"ΣÏμπτυξη ΕÏγαλειοθήκης","toolbarExpand":"Ανάπτυξη ΕÏγαλειοθήκης","toolbarGroups":{"document":"ΈγγÏαφο","clipboard":"Î ÏόχειÏο/ΑναίÏεση","editing":"ΕπεξεÏγασία","forms":"ΦόÏμες","basicstyles":"Βασικά Στυλ","paragraph":"ΠαÏάγÏαφος","links":"ΣÏνδεσμοι","insert":"Εισαγωγή","styles":"Στυλ","colors":"ΧÏώματα","tools":"ΕÏγαλεία"},"toolbars":"ΕÏγαλειοθήκες επεξεÏγαστή"},"table":{"border":"Πάχος ΠεÏιγÏάμματος","caption":"Λεζάντα","cell":{"menu":"Κελί","insertBefore":"Εισαγωγή ÎšÎµÎ»Î¹Î¿Ï Î Ïιν","insertAfter":"Εισαγωγή ÎšÎµÎ»Î¹Î¿Ï ÎœÎµÏ„Î¬","deleteCell":"ΔιαγÏαφή Κελιών","merge":"Ενοποίηση Κελιών","mergeRight":"Συγχώνευση Με Δεξιά","mergeDown":"Συγχώνευση Με Κάτω","splitHorizontal":"ΟÏιζόντια ΔιαίÏεση ΚελιοÏ","splitVertical":"ΚατακόÏυφη ΔιαίÏεση ΚελιοÏ","title":"Ιδιότητες ΚελιοÏ","cellType":"ΤÏπος ΚελιοÏ","rowSpan":"ΕÏÏος ΓÏαμμών","colSpan":"ΕÏÏος Στηλών","wordWrap":"Αναδίπλωση ΛÎξεων","hAlign":"ΟÏιζόντια Στοίχιση","vAlign":"Κάθετη Στοίχιση","alignBaseline":"ΓÏαμμή Βάσης","bgColor":"ΧÏώμα Φόντου","borderColor":"ΧÏώμα ΠεÏιγÏάμματος","data":"ΔεδομÎνα","header":"Κεφαλίδα","yes":"Îαι","no":"Όχι","invalidWidth":"Το πλάτος του ÎºÎµÎ»Î¹Î¿Ï Ï€ÏÎπει να είναι αÏιθμός.","invalidHeight":"Το Ïψος του ÎºÎµÎ»Î¹Î¿Ï Ï€ÏÎπει να είναι αÏιθμός.","invalidRowSpan":"Το εÏÏος των γÏαμμών Ï€ÏÎπει να είναι ακÎÏαιος αÏιθμός.","invalidColSpan":"Το εÏÏος των στηλών Ï€ÏÎπει να είναι ακÎÏαιος αÏιθμός.","chooseColor":"ΕπιλÎξτε"},"cellPad":"ΑναπλήÏωση κελιών","cellSpace":"Απόσταση κελιών","column":{"menu":"Στήλη","insertBefore":"Εισαγωγή Στήλης Î Ïιν","insertAfter":"Εισαγωγή Στήλης Μετά","deleteColumn":"ΔιαγÏαφή Στηλών"},"columns":"Στήλες","deleteTable":"ΔιαγÏαφή Πίνακα","headers":"Κεφαλίδες","headersBoth":"Και τα δÏο","headersColumn":"Î Ïώτη στήλη","headersNone":"ΚανÎνα","headersRow":"Î Ïώτη ΓÏαμμή","heightUnit":"height unit","invalidBorder":"Το πάχος του πεÏιγÏάμματος Ï€ÏÎπει να είναι Îνας αÏιθμός.","invalidCellPadding":"Η αναπλήÏωση των κελιών Ï€ÏÎπει να είναι θετικός αÏιθμός.","invalidCellSpacing":"Η απόσταση Î¼ÎµÏ„Î±Î¾Ï Ï„Ï‰Î½ κελιών Ï€ÏÎπει να είναι Îνας θετικός αÏιθμός.","invalidCols":"Ο αÏιθμός των στηλών Ï€ÏÎπει να είναι μεγαλÏτεÏος από 0.","invalidHeight":"Το Ïψος του πίνακα Ï€ÏÎπει να είναι αÏιθμός.","invalidRows":"Ο αÏιθμός των σειÏών Ï€ÏÎπει να είναι μεγαλÏτεÏος από 0.","invalidWidth":"Το πλάτος του πίνακα Ï€ÏÎπει να είναι Îνας αÏιθμός.","menu":"Ιδιότητες Πίνακα","row":{"menu":"ΓÏαμμή","insertBefore":"Εισαγωγή ΓÏαμμής Î Ïιν","insertAfter":"Εισαγωγή ΓÏαμμής Μετά","deleteRow":"ΔιαγÏαφή ΓÏαμμών"},"rows":"ΓÏαμμÎÏ‚","summary":"ΠεÏίληψη","title":"Ιδιότητες Πίνακα","toolbar":"Πίνακας","widthPc":"τοις εκατό","widthPx":"pixel","widthUnit":"μονάδα πλάτους"},"stylescombo":{"label":"ΜοÏφÎÏ‚","panelTitle":"Στυλ ΜοÏφοποίησης","panelTitle1":"Στυλ Τμημάτων","panelTitle2":"Στυλ Εν ΣειÏά","panelTitle3":"Στυλ ΑντικειμÎνων"},"specialchar":{"options":"ΕπιλογÎÏ‚ Ειδικών ΧαÏακτήÏων","title":"ΕπιλÎξτε Έναν Ειδικό ΧαÏακτήÏα","toolbar":"Εισαγωγή Î•Î¹Î´Î¹ÎºÎ¿Ï Î§Î±ÏακτήÏα"},"sourcedialog":{"toolbar":"Κώδικας","title":"Κώδικας"},"sourcearea":{"toolbar":"Κώδικας"},"showblocks":{"toolbar":"Î Ïοβολή Τμημάτων"},"removeformat":{"toolbar":"ΕκκαθάÏιση ΜοÏφοποίησης"},"pastetext":{"button":"Επικόλληση ως απλό κείμενο","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Επικόλληση ως απλό κείμενο"},"pastefromword":{"confirmCleanup":"Το κείμενο που επικολλάται φαίνεται να είναι αντιγÏαμμÎνο από το Word. Μήπως θα θÎλατε να καθαÏιστεί Ï€ÏÎ¿Ï„Î¿Ï ÎµÏ€Î¹ÎºÎ¿Î»Î»Î·Î¸ÎµÎ¯;","error":"Δεν ήταν δυνατό να καθαÏιστοÏν τα δεδομÎνα λόγω ενός εσωτεÏÎ¹ÎºÎ¿Ï ÏƒÏ†Î¬Î»Î¼Î±Ï„Î¿Ï‚","title":"Επικόλληση από το Word","toolbar":"Επικόλληση από το Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Μεγιστοποίηση","minimize":"Ελαχιστοποίηση"},"magicline":{"title":"Εισάγετε παÏάγÏαφο εδώ"},"list":{"bulletedlist":"Εισαγωγή/ΑπομάκÏυνση Λίστας Κουκκίδων","numberedlist":"Εισαγωγή/ΑπομάκÏυνση ΑÏιθμημÎνης Λίστας"},"language":{"button":"ΘÎση γλώσσας","remove":"ΑφαίÏεση γλώσσας"},"indent":{"indent":"ΑÏξηση Εσοχής","outdent":"Μείωση Εσοχής"},"image2":{"alt":"Εναλλακτικό Κείμενο","btnUpload":"Αποστολή στον Διακομιστή","captioned":"Εικόνα με λεζάντα","captionPlaceholder":"Λεζάντα","infoTab":"ΠληÏοφοÏίες Εικόνας","lockRatio":"Κλείδωμα Αναλογίας","menu":"Ιδιότητες Εικόνας","pathName":"εικόνα","pathNameCaption":"λεζάντα","resetSize":"ΕπαναφοÏά ΑÏÏ‡Î¹ÎºÎ¿Ï ÎœÎµÎ³Îθους","resizer":"Κάνετε κλικ και σÏÏετε το ποντίκι για να αλλάξετε το μÎγεθος","title":"Ιδιότητες Εικόνας","uploadTab":"Αποστολή","urlMissing":"Λείπει το πηγαίο URL της εικόνας.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Εισαγωγή ΟÏιζόντιας ΓÏαμμής"},"format":{"label":"ΜοÏφοποίηση","panelTitle":"ΜοÏφοποίηση ΠαÏαγÏάφου","tag_address":"ΔιεÏθυνση","tag_div":"Κανονική (DIV)","tag_h1":"Κεφαλίδα 1","tag_h2":"Κεφαλίδα 2","tag_h3":"Κεφαλίδα 3","tag_h4":"Κεφαλίδα 4","tag_h5":"Κεφαλίδα 5","tag_h6":"Κεφαλίδα 6","tag_p":"Κανονική","tag_pre":"Î Ïο-μοÏφοποιημÎνη"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"ΔιαδÏομή Στοιχείων","eleTitle":"Στοιχείο %1"},"contextmenu":{"options":"ΕπιλογÎÏ‚ Αναδυόμενου ΜενοÏ"},"clipboard":{"copy":"ΑντιγÏαφή","copyError":"Οι Ïυθμίσεις ασφαλείας του πεÏιηγητή σας δεν επιτÏÎπουν την επιλεγμÎνη εÏγασία αντιγÏαφής. ΠαÏακαλώ χÏησιμοποιείστε το πληκτÏολόγιο (Ctrl/Cmd+C).","cut":"Αποκοπή","cutError":"Οι Ïυθμίσεις ασφαλείας του πεÏιηγητή σας δεν επιτÏÎπουν την επιλεγμÎνη εÏγασία αποκοπής. ΠαÏακαλώ χÏησιμοποιείστε το πληκτÏολόγιο (Ctrl/Cmd+X).","paste":"Επικόλληση","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"ΠεÏιοχή Επικόλλησης","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"ΠεÏιοχή ΠαÏάθεσης"},"basicstyles":{"bold":"Έντονη","italic":"Πλάγια","strike":"ΔιακÏιτή ΔιαγÏαφή","subscript":"Δείκτης","superscript":"ΕκθÎτης","underline":"ΥπογÏάμμιση"},"about":{"copy":"Πνευματικά δικαιώματα © $1 Με επιφÏλαξη παντός δικαιώματος.","dlgTitle":"ΠεÏί του CKEditor 4","moreInfo":"Για πληÏοφοÏίες σχετικÎÏ‚ με την άδεια χÏήσης, παÏακαλοÏμε επισκεφθείτε την ιστοσελίδα μας:"},"editor":"ΕπεξεÏγαστής ΠλοÏσιου ΚειμÎνου","editorPanel":"Πίνακας ΕπεξεÏγαστή ΠλοÏσιου ΚειμÎνου","common":{"editorHelp":"Πατήστε το ALT 0 για βοήθεια","browseServer":"ΕξεÏεÏνηση Διακομιστή","url":"URL","protocol":"Î Ïωτόκολλο","upload":"Αποστολή","uploadSubmit":"Αποστολή στον Διακομιστή","image":"Εικόνα","form":"ΦόÏμα","checkbox":"Κουτί Επιλογής","radio":"Κουμπί Επιλογής","textField":"Πεδίο ΚειμÎνου","textarea":"ΠεÏιοχή ΚειμÎνου","hiddenField":"ΚÏυφό Πεδίο","button":"Κουμπί","select":"Πεδίο Επιλογής","imageButton":"Κουμπί Εικόνας","notSet":"<δεν Îχει Ïυθμιστεί>","id":"Id","name":"Όνομα","langDir":"ΚατεÏθυνση ΚειμÎνου","langDirLtr":"ΑÏιστεÏά Ï€Ïος Δεξιά (LTR)","langDirRtl":"Δεξιά Ï€Ïος ΑÏιστεÏά (RTL)","langCode":"Κωδικός Γλώσσας","longDescr":"Αναλυτική ΠεÏιγÏαφή URL","cssClass":"Κλάσεις ΦÏλλων Στυλ","advisoryTitle":"Ενδεικτικός Τίτλος","cssStyle":"ΜοÏφή ΚειμÎνου","ok":"OK","cancel":"ΑκÏÏωση","close":"Κλείσιμο","preview":"Î Ïοεπισκόπηση","resize":"Αλλαγή ΜεγÎθους","generalTab":"Γενικά","advancedTab":"Για Î ÏοχωÏημÎνους","validateNumberFailed":"Αυτή η τιμή δεν είναι αÏιθμός.","confirmNewPage":"Οι όποιες αλλαγÎÏ‚ στο πεÏιεχόμενο θα χαθοÏν. Είσαστε σίγουÏοι ότι θÎλετε να φοÏτώσετε μια νÎα σελίδα;","confirmCancel":"ΜεÏικÎÏ‚ επιλογÎÏ‚ Îχουν αλλάξει. Είσαστε σίγουÏοι ότι θÎλετε να κλείσετε το παÏάθυÏο διαλόγου;","options":"ΕπιλογÎÏ‚","target":"Î ÏοοÏισμός","targetNew":"ÎÎο ΠαÏάθυÏο (_blank)","targetTop":"ΑÏχική ΠεÏιοχή (_top)","targetSelf":"Ίδιο ΠαÏάθυÏο (_self)","targetParent":"Γονεϊκό ΠαÏάθυÏο (_parent)","langDirLTR":"ΑÏιστεÏά Ï€Ïος Δεξιά (LTR)","langDirRTL":"Δεξιά Ï€Ïος ΑÏιστεÏά (RTL)","styles":"ΜοÏφή","cssClasses":"Κλάσεις ΦÏλλων Στυλ","width":"Πλάτος","height":"Ύψος","align":"Στοίχιση","left":"ΑÏιστεÏά","right":"Δεξιά","center":"ΚÎντÏο","justify":"ΠλήÏης Στοίχιση","alignLeft":"Στοίχιση ΑÏιστεÏά","alignRight":"Στοίχιση Δεξιά","alignCenter":"Align Center","alignTop":"Πάνω","alignMiddle":"ÎœÎση","alignBottom":"Κάτω","alignNone":"ΧωÏίς","invalidValue":"Μη ÎγκυÏη τιμή.","invalidHeight":"Το Ïψος Ï€ÏÎπει να είναι Îνας αÏιθμός.","invalidWidth":"Το πλάτος Ï€ÏÎπει να είναι Îνας αÏιθμός.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Η τιμή που οÏίζεται για το πεδίο \"%1\" Ï€ÏÎπει να είναι Îνας θετικός αÏιθμός με ή χωÏίς μια ÎγκυÏη μονάδα μÎÏ„Ïησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).","invalidHtmlLength":"Η τιμή που οÏίζεται για το πεδίο \"%1\" Ï€ÏÎπει να είναι Îνας θετικός αÏιθμός με ή χωÏίς μια ÎγκυÏη μονάδα μÎÏ„Ïησης HTML (px ή %).","invalidInlineStyle":"Η τιμή για το εν σειÏά στυλ Ï€ÏÎπει να πεÏιÎχει Îνα ή πεÏισσότεÏα ζεÏγη με την μοÏφή \"όνομα: τιμή\" διαχωÏισμÎνα με Ελληνικό εÏωτηματικό.","cssLengthTooltip":"Εισάγεται μια τιμή σε pixel ή Îναν αÏιθμό μαζί με μια ÎγκυÏη μονάδα μÎÏ„Ïησης CSS (px, %, in, cm, mm, em, ex, pt, ή pc).","unavailable":"%1<span class=\"cke_accessibility\">, δεν είναι διαθÎσιμο</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Κενό","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Εντολή"},"keyboardShortcut":"Συντόμευση πληκτÏολογίου","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/en-au.js b/core/assets/vendor/ckeditor/lang/en-au.js index 4c78b350ceed..ff2673949971 100644 --- a/core/assets/vendor/ckeditor/lang/en-au.js +++ b/core/assets/vendor/ckeditor/lang/en-au.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['en-au']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximise","minimize":"Minimise"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Alternative Text","btnUpload":"Send it to the Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Image Info","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Reset Size","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Upload","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","left":"Left","right":"Right","center":"Centre","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Centre","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['en-au']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximise","minimize":"Minimise"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Alternative Text","btnUpload":"Send it to the Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Image Info","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Reset Size","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Upload","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","left":"Left","right":"Right","center":"Centre","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Centre","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/en-ca.js b/core/assets/vendor/ckeditor/lang/en-ca.js index ffa97abafd29..7b138fd525b0 100644 --- a/core/assets/vendor/ckeditor/lang/en-ca.js +++ b/core/assets/vendor/ckeditor/lang/en-ca.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['en-ca']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Alternative Text","btnUpload":"Send it to the Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Image Info","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Reset Size","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Upload","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","left":"Left","right":"Right","center":"Centre","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['en-ca']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Alternative Text","btnUpload":"Send it to the Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Image Info","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Reset Size","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Upload","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","left":"Left","right":"Right","center":"Centre","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/en-gb.js b/core/assets/vendor/ckeditor/lang/en-gb.js index 14401e65b464..72d4c0984947 100644 --- a/core/assets/vendor/ckeditor/lang/en-gb.js +++ b/core/assets/vendor/ckeditor/lang/en-gb.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['en-gb']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximise","minimize":"Minimise"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Alternative Text","btnUpload":"Send it to the Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Image Info","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Reset Size","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Upload","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Drag to resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialogue window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","left":"Left","right":"Right","center":"Center","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['en-gb']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a number.","invalidCellSpacing":"Cell spacing must be a number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximise","minimize":"Minimise"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Alternative Text","btnUpload":"Send it to the Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Image Info","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Reset Size","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Upload","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Drag to resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialogue window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Align","left":"Left","right":"Right","center":"Center","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/en.js b/core/assets/vendor/ckeditor/lang/en.js index bec2b3d9af5f..e2e1f7268ef6 100644 --- a/core/assets/vendor/ckeditor/lang/en.js +++ b/core/assets/vendor/ckeditor/lang/en.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['en']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Alternative Text","btnUpload":"Send it to the Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Image Info","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Reset Size","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Upload","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","left":"Left","right":"Right","center":"Center","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['en']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Alternative Text","btnUpload":"Send it to the Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Image Info","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Reset Size","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Upload","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","left":"Left","right":"Right","center":"Center","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/eo.js b/core/assets/vendor/ckeditor/lang/eo.js index 9833b4bb8499..f746849735b6 100644 --- a/core/assets/vendor/ckeditor/lang/eo.js +++ b/core/assets/vendor/ckeditor/lang/eo.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['eo']={"widget":{"move":"klaki kaj treni por movi","label":"%1 fenestraĵo"},"undo":{"redo":"Refari","undo":"Malfari"},"toolbar":{"toolbarCollapse":"Faldi la ilbreton","toolbarExpand":"Malfaldi la ilbreton","toolbarGroups":{"document":"Dokumento","clipboard":"PoÅo/Malfari","editing":"Redaktado","forms":"Formularoj","basicstyles":"Bazaj stiloj","paragraph":"Paragrafo","links":"Ligiloj","insert":"Enmeti","styles":"Stiloj","colors":"Koloroj","tools":"Iloj"},"toolbars":"Ilobretoj de la redaktilo"},"table":{"border":"Bordero","caption":"Tabeltitolo","cell":{"menu":"Ĉelo","insertBefore":"Enmeti Ĉelon AntaÅ","insertAfter":"Enmeti Ĉelon Post","deleteCell":"Forigi la Ĉelojn","merge":"Kunfandi la Ĉelojn","mergeRight":"Kunfandi dekstren","mergeDown":"Kunfandi malsupren ","splitHorizontal":"Horizontale dividi","splitVertical":"Vertikale dividi","title":"Ĉelatributoj","cellType":"Ĉeltipo","rowSpan":"Kunfando de linioj","colSpan":"Kunfando de kolumnoj","wordWrap":"Cezuro","hAlign":"Horizontala Äisrandigo","vAlign":"Vertikala Äisrandigo","alignBaseline":"Malsupro de la teksto","bgColor":"Fonkoloro","borderColor":"Borderkoloro","data":"Datenoj","header":"Supra paÄotitolo","yes":"Jes","no":"No","invalidWidth":"ĈellarÄo devas esti nombro.","invalidHeight":"Ĉelalto devas esti nombro.","invalidRowSpan":"Kunfando de linioj devas esti entjera nombro.","invalidColSpan":"Kunfando de kolumnoj devas esti entjera nombro.","chooseColor":"Elektu"},"cellPad":"Interna MarÄeno de la ĉeloj","cellSpace":"Spaco inter la Ĉeloj","column":{"menu":"Kolumno","insertBefore":"Enmeti kolumnon antaÅ","insertAfter":"Enmeti kolumnon post","deleteColumn":"Forigi Kolumnojn"},"columns":"Kolumnoj","deleteTable":"Forigi Tabelon","headers":"Supraj PaÄotitoloj","headersBoth":"AmbaÅ","headersColumn":"Unua kolumno","headersNone":"Neniu","headersRow":"Unua linio","heightUnit":"height unit","invalidBorder":"La bordergrando devas esti nombro.","invalidCellPadding":"La interna marÄeno en la ĉeloj devas esti pozitiva nombro.","invalidCellSpacing":"La spaco inter la ĉeloj devas esti pozitiva nombro.","invalidCols":"La nombro de la kolumnoj devas superi 0.","invalidHeight":"La tabelalto devas esti nombro.","invalidRows":"La nombro de la linioj devas superi 0.","invalidWidth":"La tabellarÄo devas esti nombro.","menu":"Atributoj de Tabelo","row":{"menu":"Linio","insertBefore":"Enmeti linion antaÅ","insertAfter":"Enmeti linion post","deleteRow":"Forigi Liniojn"},"rows":"Linioj","summary":"Resumo","title":"Atributoj de Tabelo","toolbar":"Tabelo","widthPc":"elcentoj","widthPx":"Rastrumeroj","widthUnit":"unuo de larÄo"},"stylescombo":{"label":"Stiloj","panelTitle":"Stiloj pri enpaÄigo","panelTitle1":"Stiloj de blokoj","panelTitle2":"Enliniaj Stiloj","panelTitle3":"Stiloj de objektoj"},"specialchar":{"options":"Opcioj pri Specialaj Signoj","title":"Selekti Specialan Signon","toolbar":"Enmeti Specialan Signon"},"sourcedialog":{"toolbar":"Fonto","title":"Fonto"},"sourcearea":{"toolbar":"Fonto"},"showblocks":{"toolbar":"Montri la blokojn"},"removeformat":{"toolbar":"Forigi Formaton"},"pastetext":{"button":"Interglui kiel platan tekston","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Interglui kiel platan tekston"},"pastefromword":{"confirmCleanup":"La teksto, kiun vi volas interglui, Åajnas esti kopiita el Word. Ĉu vi deziras purigi Äin antaÅ intergluo?","error":"Ne eblis purigi la intergluitajn datenojn pro interna eraro","title":"Interglui el Word","toolbar":"Interglui el Word"},"notification":{"closed":"Sciigo fermita"},"maximize":{"maximize":"Pligrandigi","minimize":"Malgrandigi"},"magicline":{"title":"Enmeti paragrafon ĉi-tien"},"list":{"bulletedlist":"Bula Listo","numberedlist":"Numera Listo"},"language":{"button":"Instali lingvon","remove":"Forigi lingvon"},"indent":{"indent":"Pligrandigi KrommarÄenon","outdent":"Malpligrandigi KrommarÄenon"},"image2":{"alt":"AnstataÅiga Teksto","btnUpload":"Sendu al Servilo","captioned":"Bildo kun apudskribo","captionPlaceholder":"Apudskribo","infoTab":"Informoj pri Bildo","lockRatio":"Konservi Proporcion","menu":"Atributoj de Bildo","pathName":"bildo","pathNameCaption":"apudskribo","resetSize":"Origina Grando","resizer":"Kliki kaj treni por ÅanÄi la grandon","title":"Atributoj de Bildo","uploadTab":"AlÅuti","urlMissing":"La fontretadreso de la bildo mankas.","altMissing":"Alternativa teksto mankas."},"horizontalrule":{"toolbar":"Enmeti Horizontalan Linion"},"format":{"label":"Formato","panelTitle":"ParagrafFormato","tag_address":"Adreso","tag_div":"Normala (DIV)","tag_h1":"Titolo 1","tag_h2":"Titolo 2","tag_h3":"Titolo 3","tag_h4":"Titolo 4","tag_h5":"Titolo 5","tag_h6":"Titolo 6","tag_p":"Normala","tag_pre":"Formatita"},"filetools":{"loadError":"Eraro okazis dum la dosiera legado.","networkError":"Reta eraro okazis dum la dosiera alÅuto.","httpError404":"HTTP eraro okazis dum la dosiera alÅuto (404: dosiero ne trovita).","httpError403":"HTTP eraro okazis dum la dosiera alÅuto (403: malpermesita).","httpError":"HTTP eraro okazis dum la dosiera alÅuto (erara stato: %1).","noUrlError":"AlÅuta URL ne estas difinita.","responseError":"MalÄusta respondo de la servilo."},"elementspath":{"eleLabel":"Vojo al Elementoj","eleTitle":"%1 elementoj"},"contextmenu":{"options":"Opcioj de Kunteksta Menuo"},"clipboard":{"copy":"Kopii","copyError":"La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).","cut":"Eltondi","cutError":"La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).","paste":"Interglui","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Intergluoareo","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Citaĵo"},"basicstyles":{"bold":"Grasa","italic":"Kursiva","strike":"Trastreko","subscript":"Suba indico","superscript":"Supra indico","underline":"Substreko"},"about":{"copy":"Copyright © $1. Ĉiuj rajtoj rezervitaj.","dlgTitle":"Pri CKEditor 4","moreInfo":"Por informoj pri licenco, bonvolu viziti nian retpaÄaron:"},"editor":"RiĉTeksta Redaktilo","editorPanel":"Panelo de la RiĉTeksta Redaktilo","common":{"editorHelp":"Premu ALT 0 por helpilo","browseServer":"Foliumi en la Servilo","url":"URL","protocol":"Protokolo","upload":"AlÅuti","uploadSubmit":"Sendu al Servilo","image":"Bildo","flash":"FlaÅo","form":"Formularo","checkbox":"Markobutono","radio":"Radiobutono","textField":"Teksta kampo","textarea":"Teksta Areo","hiddenField":"KaÅita Kampo","button":"Butono","select":"Elekta Kampo","imageButton":"Bildbutono","notSet":"<DefaÅlta>","id":"Id","name":"Nomo","langDir":"Skribdirekto","langDirLtr":"De maldekstro dekstren (LTR)","langDirRtl":"De dekstro maldekstren (RTL)","langCode":"Lingva Kodo","longDescr":"URL de Longa Priskribo","cssClass":"Klasoj de Stilfolioj","advisoryTitle":"Priskriba Titolo","cssStyle":"Stilo","ok":"Akcepti","cancel":"Rezigni","close":"Fermi","preview":"Vidigi Aspekton","resize":"Movigi por ÅanÄi la grandon","generalTab":"Äœenerala","advancedTab":"Speciala","validateNumberFailed":"Tiu valoro ne estas nombro.","confirmNewPage":"La neregistritaj ÅanÄoj estas perdotaj. Ĉu vi certas, ke vi volas Åargi novan paÄon?","confirmCancel":"Iuj opcioj esta ÅanÄitaj. Ĉu vi certas, ke vi volas fermi la dialogon?","options":"Opcioj","target":"Celo","targetNew":"Nova Fenestro (_blank)","targetTop":"Supra Fenestro (_top)","targetSelf":"Sama Fenestro (_self)","targetParent":"Patra Fenestro (_parent)","langDirLTR":"De maldekstro dekstren (LTR)","langDirRTL":"De dekstro maldekstren (RTL)","styles":"Stilo","cssClasses":"Stilfoliaj Klasoj","width":"LarÄo","height":"Alto","align":"Äœisrandigo","left":"Maldekstre","right":"Dekstre","center":"Centre","justify":"Äœisrandigi AmbaÅflanke","alignLeft":"Äœisrandigi maldekstren","alignRight":"Äœisrandigi dekstren","alignCenter":"Align Center","alignTop":"Supre","alignMiddle":"Centre","alignBottom":"Malsupre","alignNone":"Neniu","invalidValue":"Nevalida Valoro","invalidHeight":"Alto devas esti nombro.","invalidWidth":"LarÄo devas esti nombro.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"La valoro indikita por la \"%1\" kampo devas esti pozitiva nombro kun aÅ sen valida CSSmezurunuo (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"La valoro indikita por la \"%1\" kampo devas esti pozitiva nombro kun aÅ sen valida HTMLmezurunuo (px or %).","invalidInlineStyle":"La valoro indikita por la enlinia stilo devas konsisti el unu aÅ pluraj elementoj kun la formato de \"nomo : valoro\", apartigitaj per punktokomoj.","cssLengthTooltip":"Entajpu nombron por rastrumera valoro aÅ nombron kun valida CSSunuo (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, nehavebla</span>","keyboard":{"8":"RetropaÅo","13":"Enigi","16":"Registrumo","17":"Stirklavo","18":"Alt-klavo","32":"Spaco","35":"Fino","36":"Hejmo","46":"Forigi","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Komando"},"keyboardShortcut":"Fulmoklavo","optionDefault":"DefaÅlta"}}; \ No newline at end of file +CKEDITOR.lang['eo']={"widget":{"move":"klaki kaj treni por movi","label":"%1 fenestraĵo"},"undo":{"redo":"Refari","undo":"Malfari"},"toolbar":{"toolbarCollapse":"Faldi la ilbreton","toolbarExpand":"Malfaldi la ilbreton","toolbarGroups":{"document":"Dokumento","clipboard":"PoÅo/Malfari","editing":"Redaktado","forms":"Formularoj","basicstyles":"Bazaj stiloj","paragraph":"Paragrafo","links":"Ligiloj","insert":"Enmeti","styles":"Stiloj","colors":"Koloroj","tools":"Iloj"},"toolbars":"Ilobretoj de la redaktilo"},"table":{"border":"Bordero","caption":"Tabeltitolo","cell":{"menu":"Ĉelo","insertBefore":"Enmeti Ĉelon AntaÅ","insertAfter":"Enmeti Ĉelon Post","deleteCell":"Forigi la Ĉelojn","merge":"Kunfandi la Ĉelojn","mergeRight":"Kunfandi dekstren","mergeDown":"Kunfandi malsupren ","splitHorizontal":"Horizontale dividi","splitVertical":"Vertikale dividi","title":"Ĉelatributoj","cellType":"Ĉeltipo","rowSpan":"Kunfando de linioj","colSpan":"Kunfando de kolumnoj","wordWrap":"Cezuro","hAlign":"Horizontala Äisrandigo","vAlign":"Vertikala Äisrandigo","alignBaseline":"Malsupro de la teksto","bgColor":"Fonkoloro","borderColor":"Borderkoloro","data":"Datenoj","header":"Supra paÄotitolo","yes":"Jes","no":"No","invalidWidth":"ĈellarÄo devas esti nombro.","invalidHeight":"Ĉelalto devas esti nombro.","invalidRowSpan":"Kunfando de linioj devas esti entjera nombro.","invalidColSpan":"Kunfando de kolumnoj devas esti entjera nombro.","chooseColor":"Elektu"},"cellPad":"Interna MarÄeno de la ĉeloj","cellSpace":"Spaco inter la Ĉeloj","column":{"menu":"Kolumno","insertBefore":"Enmeti kolumnon antaÅ","insertAfter":"Enmeti kolumnon post","deleteColumn":"Forigi Kolumnojn"},"columns":"Kolumnoj","deleteTable":"Forigi Tabelon","headers":"Supraj PaÄotitoloj","headersBoth":"AmbaÅ","headersColumn":"Unua kolumno","headersNone":"Neniu","headersRow":"Unua linio","heightUnit":"height unit","invalidBorder":"La bordergrando devas esti nombro.","invalidCellPadding":"La interna marÄeno en la ĉeloj devas esti pozitiva nombro.","invalidCellSpacing":"La spaco inter la ĉeloj devas esti pozitiva nombro.","invalidCols":"La nombro de la kolumnoj devas superi 0.","invalidHeight":"La tabelalto devas esti nombro.","invalidRows":"La nombro de la linioj devas superi 0.","invalidWidth":"La tabellarÄo devas esti nombro.","menu":"Atributoj de Tabelo","row":{"menu":"Linio","insertBefore":"Enmeti linion antaÅ","insertAfter":"Enmeti linion post","deleteRow":"Forigi Liniojn"},"rows":"Linioj","summary":"Resumo","title":"Atributoj de Tabelo","toolbar":"Tabelo","widthPc":"elcentoj","widthPx":"Rastrumeroj","widthUnit":"unuo de larÄo"},"stylescombo":{"label":"Stiloj","panelTitle":"Stiloj pri enpaÄigo","panelTitle1":"Stiloj de blokoj","panelTitle2":"Enliniaj Stiloj","panelTitle3":"Stiloj de objektoj"},"specialchar":{"options":"Opcioj pri Specialaj Signoj","title":"Selekti Specialan Signon","toolbar":"Enmeti Specialan Signon"},"sourcedialog":{"toolbar":"Fonto","title":"Fonto"},"sourcearea":{"toolbar":"Fonto"},"showblocks":{"toolbar":"Montri la blokojn"},"removeformat":{"toolbar":"Forigi Formaton"},"pastetext":{"button":"Interglui kiel platan tekston","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Interglui kiel platan tekston"},"pastefromword":{"confirmCleanup":"La teksto, kiun vi volas interglui, Åajnas esti kopiita el Word. Ĉu vi deziras purigi Äin antaÅ intergluo?","error":"Ne eblis purigi la intergluitajn datenojn pro interna eraro","title":"Interglui el Word","toolbar":"Interglui el Word"},"notification":{"closed":"Sciigo fermita"},"maximize":{"maximize":"Pligrandigi","minimize":"Malgrandigi"},"magicline":{"title":"Enmeti paragrafon ĉi-tien"},"list":{"bulletedlist":"Bula Listo","numberedlist":"Numera Listo"},"language":{"button":"Instali lingvon","remove":"Forigi lingvon"},"indent":{"indent":"Pligrandigi KrommarÄenon","outdent":"Malpligrandigi KrommarÄenon"},"image2":{"alt":"AnstataÅiga Teksto","btnUpload":"Sendu al Servilo","captioned":"Bildo kun apudskribo","captionPlaceholder":"Apudskribo","infoTab":"Informoj pri Bildo","lockRatio":"Konservi Proporcion","menu":"Atributoj de Bildo","pathName":"bildo","pathNameCaption":"apudskribo","resetSize":"Origina Grando","resizer":"Kliki kaj treni por ÅanÄi la grandon","title":"Atributoj de Bildo","uploadTab":"AlÅuti","urlMissing":"La fontretadreso de la bildo mankas.","altMissing":"Alternativa teksto mankas."},"horizontalrule":{"toolbar":"Enmeti Horizontalan Linion"},"format":{"label":"Formato","panelTitle":"ParagrafFormato","tag_address":"Adreso","tag_div":"Normala (DIV)","tag_h1":"Titolo 1","tag_h2":"Titolo 2","tag_h3":"Titolo 3","tag_h4":"Titolo 4","tag_h5":"Titolo 5","tag_h6":"Titolo 6","tag_p":"Normala","tag_pre":"Formatita"},"filetools":{"loadError":"Eraro okazis dum la dosiera legado.","networkError":"Reta eraro okazis dum la dosiera alÅuto.","httpError404":"HTTP eraro okazis dum la dosiera alÅuto (404: dosiero ne trovita).","httpError403":"HTTP eraro okazis dum la dosiera alÅuto (403: malpermesita).","httpError":"HTTP eraro okazis dum la dosiera alÅuto (erara stato: %1).","noUrlError":"AlÅuta URL ne estas difinita.","responseError":"MalÄusta respondo de la servilo."},"elementspath":{"eleLabel":"Vojo al Elementoj","eleTitle":"%1 elementoj"},"contextmenu":{"options":"Opcioj de Kunteksta Menuo"},"clipboard":{"copy":"Kopii","copyError":"La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).","cut":"Eltondi","cutError":"La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).","paste":"Interglui","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Intergluoareo","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citaĵo"},"basicstyles":{"bold":"Grasa","italic":"Kursiva","strike":"Trastreko","subscript":"Suba indico","superscript":"Supra indico","underline":"Substreko"},"about":{"copy":"Copyright © $1. Ĉiuj rajtoj rezervitaj.","dlgTitle":"Pri CKEditor 4","moreInfo":"Por informoj pri licenco, bonvolu viziti nian retpaÄaron:"},"editor":"RiĉTeksta Redaktilo","editorPanel":"Panelo de la RiĉTeksta Redaktilo","common":{"editorHelp":"Premu ALT 0 por helpilo","browseServer":"Foliumi en la Servilo","url":"URL","protocol":"Protokolo","upload":"AlÅuti","uploadSubmit":"Sendu al Servilo","image":"Bildo","form":"Formularo","checkbox":"Markobutono","radio":"Radiobutono","textField":"Teksta kampo","textarea":"Teksta Areo","hiddenField":"KaÅita Kampo","button":"Butono","select":"Elekta Kampo","imageButton":"Bildbutono","notSet":"<DefaÅlta>","id":"Id","name":"Nomo","langDir":"Skribdirekto","langDirLtr":"De maldekstro dekstren (LTR)","langDirRtl":"De dekstro maldekstren (RTL)","langCode":"Lingva Kodo","longDescr":"URL de Longa Priskribo","cssClass":"Klasoj de Stilfolioj","advisoryTitle":"Priskriba Titolo","cssStyle":"Stilo","ok":"Akcepti","cancel":"Rezigni","close":"Fermi","preview":"Vidigi Aspekton","resize":"Movigi por ÅanÄi la grandon","generalTab":"Äœenerala","advancedTab":"Speciala","validateNumberFailed":"Tiu valoro ne estas nombro.","confirmNewPage":"La neregistritaj ÅanÄoj estas perdotaj. Ĉu vi certas, ke vi volas Åargi novan paÄon?","confirmCancel":"Iuj opcioj esta ÅanÄitaj. Ĉu vi certas, ke vi volas fermi la dialogon?","options":"Opcioj","target":"Celo","targetNew":"Nova Fenestro (_blank)","targetTop":"Supra Fenestro (_top)","targetSelf":"Sama Fenestro (_self)","targetParent":"Patra Fenestro (_parent)","langDirLTR":"De maldekstro dekstren (LTR)","langDirRTL":"De dekstro maldekstren (RTL)","styles":"Stilo","cssClasses":"Stilfoliaj Klasoj","width":"LarÄo","height":"Alto","align":"Äœisrandigo","left":"Maldekstre","right":"Dekstre","center":"Centre","justify":"Äœisrandigi AmbaÅflanke","alignLeft":"Äœisrandigi maldekstren","alignRight":"Äœisrandigi dekstren","alignCenter":"Align Center","alignTop":"Supre","alignMiddle":"Centre","alignBottom":"Malsupre","alignNone":"Neniu","invalidValue":"Nevalida Valoro","invalidHeight":"Alto devas esti nombro.","invalidWidth":"LarÄo devas esti nombro.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"La valoro indikita por la \"%1\" kampo devas esti pozitiva nombro kun aÅ sen valida CSSmezurunuo (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"La valoro indikita por la \"%1\" kampo devas esti pozitiva nombro kun aÅ sen valida HTMLmezurunuo (px or %).","invalidInlineStyle":"La valoro indikita por la enlinia stilo devas konsisti el unu aÅ pluraj elementoj kun la formato de \"nomo : valoro\", apartigitaj per punktokomoj.","cssLengthTooltip":"Entajpu nombron por rastrumera valoro aÅ nombron kun valida CSSunuo (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, nehavebla</span>","keyboard":{"8":"RetropaÅo","13":"Enigi","16":"Registrumo","17":"Stirklavo","18":"Alt-klavo","32":"Spaco","35":"Fino","36":"Hejmo","46":"Forigi","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Komando"},"keyboardShortcut":"Fulmoklavo","optionDefault":"DefaÅlta"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/es-mx.js b/core/assets/vendor/ckeditor/lang/es-mx.js index cd5876f70731..422f30a613cf 100644 --- a/core/assets/vendor/ckeditor/lang/es-mx.js +++ b/core/assets/vendor/ckeditor/lang/es-mx.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['es-mx']={"widget":{"move":"Presiona y arrastra para mover","label":"%1 widget"},"undo":{"redo":"Rehacer","undo":"Deshacer"},"toolbar":{"toolbarCollapse":"Colapsar barra de herramientas","toolbarExpand":"Expandir barra de herramientas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeles/deshacer","editing":"Editando","forms":"Formularios","basicstyles":"Estilo básico","paragraph":"Párrafo","links":"Enlaces","insert":"Insertar","styles":"Estilos","colors":"Colores","tools":"Herramientas"},"toolbars":"Editor de barra de herramientas"},"table":{"border":"Tamaño del borde","caption":"SubtÃtulo","cell":{"menu":"Celda","insertBefore":"Insertar una celda antes","insertAfter":"Insertar una celda despues","deleteCell":"Borrar celdas","merge":"Unir celdas","mergeRight":"Unir a la derecha","mergeDown":"Unir abajo","splitHorizontal":"Dividir celda horizontalmente","splitVertical":"Dividir celda verticalmente","title":"Propiedades de la celda","cellType":"Tipo de celda","rowSpan":"Extensión de las filas","colSpan":"Extensión de las columnas","wordWrap":"Ajuste de lÃnea","hAlign":"Alineación horizontal","vAlign":"Alineación vertical","alignBaseline":"Base","bgColor":"Color de fondo","borderColor":"Color de borde","data":"Datos","header":"Encabezado","yes":"Si","no":"No","invalidWidth":"El ancho de la celda debe ser un número entero.","invalidHeight":"El alto de la celda debe ser un número entero.","invalidRowSpan":"El intervalo de filas debe ser un número entero.","invalidColSpan":"El intervalo de columnas debe ser un número entero.","chooseColor":"Escoger"},"cellPad":"relleno de celda","cellSpace":"Espacio de celda","column":{"menu":"Columna","insertBefore":"Insertar columna antes","insertAfter":"Insertar columna después","deleteColumn":"Borrar columnas"},"columns":"Columnas","deleteTable":"Borrar tabla","headers":"Encabezados","headersBoth":"Ambos","headersColumn":"Primera columna","headersNone":"Ninguna","headersRow":"Primera fila","heightUnit":"height unit","invalidBorder":"El tamaño del borde debe ser un número entero.","invalidCellPadding":"El relleno de la celda debe ser un número positivo.","invalidCellSpacing":"El espacio de la celda debe ser un número positivo.","invalidCols":"El número de columnas debe ser un número mayo que 0.","invalidHeight":"La altura de la tabla debe ser un número.","invalidRows":"El número de filas debe ser mayor a 0.","invalidWidth":"El ancho de la tabla debe ser un número.","menu":"Propiedades de la tabla","row":{"menu":"Fila","insertBefore":"Inserta una fila antes","insertAfter":"Inserta una fila después","deleteRow":"Borrar filas"},"rows":"Filas","summary":"Resumen","title":"Propiedades de la tabla","toolbar":"Tabla","widthPc":"porcentaje","widthPx":"pixeles","widthUnit":"Unidad de ancho"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatos","panelTitle1":"Estilos de bloques","panelTitle2":"Estilos de lÃneas","panelTitle3":"Estilo de objetos"},"specialchar":{"options":"Opciones de carácteres especiales","title":"Seleccione un carácter especial","toolbar":"Inserta un carácter especial"},"sourcedialog":{"toolbar":"Fuente","title":"Fuente"},"sourcearea":{"toolbar":"Fuente"},"showblocks":{"toolbar":"Mostrar bloques"},"removeformat":{"toolbar":"Remover formato"},"pastetext":{"button":"Pegar como texto plano","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"El texto que desea pegar parece estar copiado de Word. ¿Quieres limpiarlo antes de pegarlo?","error":"No fue posible limpiar los datos pegados debido a un error interno","title":"Pegar desde word","toolbar":"Pegar desde word"},"notification":{"closed":"Notificación cerrada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Insertar un párrafo aquÃ"},"list":{"bulletedlist":"Insertar/Remover Lista con viñetas","numberedlist":"Insertar/Remover Lista numerada"},"language":{"button":"Establecer idioma","remove":"Remover idioma"},"indent":{"indent":"Incrementar sangrÃa","outdent":"Decrementar sangrÃa"},"image2":{"alt":"Texto alternativo","btnUpload":"Enviar al servidor","captioned":"Imagen subtitulada","captionPlaceholder":"SubtÃtulo","infoTab":"Información de la imagen","lockRatio":"Bloquear aspecto","menu":"Propiedades de la imagen","pathName":"imagen","pathNameCaption":"subtÃtulo","resetSize":"Reiniciar tamaño","resizer":"Presiona y arrastra para redimensionar","title":"Propiedades de imagen","uploadTab":"Cargar","urlMissing":"Falta la URL de origen de la imagen.","altMissing":"Falta texto alternativo."},"horizontalrule":{"toolbar":"Insertar una lÃnea horizontal"},"format":{"label":"Formato","panelTitle":"Formato de párrafo","tag_address":"Dirección","tag_div":"Normal (DIV)","tag_h1":"Encabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Formateado"},"filetools":{"loadError":"Ha ocurrido un error al leer el archivo","networkError":"Ha ocurrido un error de red durante la carga del archivo.","httpError404":"Se ha producido un error HTTP durante la subida de archivos (404: archivo no encontrado).","httpError403":"Se ha producido un error HTTP durante la subida de archivos (403: Prohibido).","httpError":"Se ha producido un error HTTP durante la subida de archivos (error: %1).","noUrlError":"La URL de subida no está definida.","responseError":"Respuesta incorrecta del servidor."},"elementspath":{"eleLabel":"Ruta de los elementos","eleTitle":"%1 elemento"},"contextmenu":{"options":"Opciones del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de copiado. Por favor, utilice el teclado para (Ctrl/Cmd+C).","cut":"Cortar","cutError":"La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de corte. Por favor, utilice el teclado para (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Entrecomillado"},"basicstyles":{"bold":"Negrita","italic":"Cursiva","strike":"Tachado","subscript":"subÃndice","superscript":"Sobrescrito","underline":"Subrayada"},"about":{"copy":"Derechos reservados © $1. Todos los derechos reservados","dlgTitle":"Acerca de CKEditor 4","moreInfo":"Para información sobre la licencia por favor visita nuestro sitio web:"},"editor":"Editor de texto enriquecido","editorPanel":"Panel del editor de texto","common":{"editorHelp":"Presiona ALT + 0 para ayuda","browseServer":"Examinar servidor","url":"URL","protocol":"Protocolo","upload":"Subir","uploadSubmit":"Enviar al servidor","image":"Imagen","flash":"Flash","form":"Formulario","checkbox":"Casilla de verificación","radio":"Botón de opción","textField":"Campo de texto","textarea":"Ãrea de texto","hiddenField":"Campo oculto","button":"Botón","select":"Campo de selección","imageButton":"Botón de imagen","notSet":"<not set>","id":"Id","name":"Nombre","langDir":"Dirección de idiomas","langDirLtr":"Izquierda a derecha (LTR)","langDirRtl":"Derecha a izquierda (RTL)","langCode":"Código de lenguaje","longDescr":"URL descripción larga","cssClass":"Clases de hoja de estilo","advisoryTitle":"TÃtulo del anuncio","cssStyle":"Estilo","ok":"OK","cancel":"Cancelar","close":"Cerrar","preview":"Vista previa","resize":"Redimensionar","generalTab":"General","advancedTab":"Avanzada","validateNumberFailed":"Este valor no es un número.","confirmNewPage":"Se perderán todos los cambios no guardados en este contenido. ¿Seguro que quieres cargar nueva página?","confirmCancel":"Ha cambiado algunas opciones. ¿Está seguro de que desea cerrar la ventana de diálogo?","options":"Opciones","target":"Objetivo","targetNew":"Nueva ventana (_blank)","targetTop":"Ventana superior (_top)","targetSelf":"Misma ventana (_self)","targetParent":"Ventana principal (_parent)","langDirLTR":"Izquierda a Derecha (LTR)","langDirRTL":"Derecha a Izquierda (RTL)","styles":"Estilo","cssClasses":"Clases de hojas de estilo","width":"Ancho","height":"Alto","align":"Alineación","left":"Izquierda","right":"Derecha","center":"Centrado","justify":"Justificado","alignLeft":"Alinear a la izquierda","alignRight":"Alinear a la derecha","alignCenter":"Align Center","alignTop":"Arriba","alignMiddle":"En medio","alignBottom":"Abajo","alignNone":"Ninguno","invalidValue":"Valor inválido","invalidHeight":"La altura debe ser un número.","invalidWidth":"La anchura debe ser un número.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"El valor especificado para el campo \"% 1\" debe ser un número positivo con o sin una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"El valor especificado para el campo \"% 1\" debe ser un número positivo con o sin una unidad de medición HTML válida (px or %).","invalidInlineStyle":"El valor especificado para el estilo en lÃnea debe constar de una o más tuplas con el formato de \"nombre: valor\", separados por punto y coma","cssLengthTooltip":"Introduzca un número para un valor en pÃxeles o un número con una unidad CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>","keyboard":{"8":"Retroceso","13":"Intro","16":"Shift","17":"Ctrl","18":"Alt","32":"Espacio","35":"Fin","36":"Inicio","46":"Borrar","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Atajo de teclado","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['es-mx']={"widget":{"move":"Presiona y arrastra para mover","label":"%1 widget"},"undo":{"redo":"Rehacer","undo":"Deshacer"},"toolbar":{"toolbarCollapse":"Colapsar barra de herramientas","toolbarExpand":"Expandir barra de herramientas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeles/deshacer","editing":"Editando","forms":"Formularios","basicstyles":"Estilo básico","paragraph":"Párrafo","links":"Enlaces","insert":"Insertar","styles":"Estilos","colors":"Colores","tools":"Herramientas"},"toolbars":"Editor de barra de herramientas"},"table":{"border":"Tamaño del borde","caption":"SubtÃtulo","cell":{"menu":"Celda","insertBefore":"Insertar una celda antes","insertAfter":"Insertar una celda despues","deleteCell":"Borrar celdas","merge":"Unir celdas","mergeRight":"Unir a la derecha","mergeDown":"Unir abajo","splitHorizontal":"Dividir celda horizontalmente","splitVertical":"Dividir celda verticalmente","title":"Propiedades de la celda","cellType":"Tipo de celda","rowSpan":"Extensión de las filas","colSpan":"Extensión de las columnas","wordWrap":"Ajuste de lÃnea","hAlign":"Alineación horizontal","vAlign":"Alineación vertical","alignBaseline":"Base","bgColor":"Color de fondo","borderColor":"Color de borde","data":"Datos","header":"Encabezado","yes":"Si","no":"No","invalidWidth":"El ancho de la celda debe ser un número entero.","invalidHeight":"El alto de la celda debe ser un número entero.","invalidRowSpan":"El intervalo de filas debe ser un número entero.","invalidColSpan":"El intervalo de columnas debe ser un número entero.","chooseColor":"Escoger"},"cellPad":"relleno de celda","cellSpace":"Espacio de celda","column":{"menu":"Columna","insertBefore":"Insertar columna antes","insertAfter":"Insertar columna después","deleteColumn":"Borrar columnas"},"columns":"Columnas","deleteTable":"Borrar tabla","headers":"Encabezados","headersBoth":"Ambos","headersColumn":"Primera columna","headersNone":"Ninguna","headersRow":"Primera fila","heightUnit":"height unit","invalidBorder":"El tamaño del borde debe ser un número entero.","invalidCellPadding":"El relleno de la celda debe ser un número positivo.","invalidCellSpacing":"El espacio de la celda debe ser un número positivo.","invalidCols":"El número de columnas debe ser un número mayo que 0.","invalidHeight":"La altura de la tabla debe ser un número.","invalidRows":"El número de filas debe ser mayor a 0.","invalidWidth":"El ancho de la tabla debe ser un número.","menu":"Propiedades de la tabla","row":{"menu":"Fila","insertBefore":"Inserta una fila antes","insertAfter":"Inserta una fila después","deleteRow":"Borrar filas"},"rows":"Filas","summary":"Resumen","title":"Propiedades de la tabla","toolbar":"Tabla","widthPc":"porcentaje","widthPx":"pixeles","widthUnit":"Unidad de ancho"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatos","panelTitle1":"Estilos de bloques","panelTitle2":"Estilos de lÃneas","panelTitle3":"Estilo de objetos"},"specialchar":{"options":"Opciones de carácteres especiales","title":"Seleccione un carácter especial","toolbar":"Inserta un carácter especial"},"sourcedialog":{"toolbar":"Fuente","title":"Fuente"},"sourcearea":{"toolbar":"Fuente"},"showblocks":{"toolbar":"Mostrar bloques"},"removeformat":{"toolbar":"Remover formato"},"pastetext":{"button":"Pegar como texto plano","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"El texto que desea pegar parece estar copiado de Word. ¿Quieres limpiarlo antes de pegarlo?","error":"No fue posible limpiar los datos pegados debido a un error interno","title":"Pegar desde word","toolbar":"Pegar desde word"},"notification":{"closed":"Notificación cerrada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Insertar un párrafo aquÃ"},"list":{"bulletedlist":"Insertar/Remover Lista con viñetas","numberedlist":"Insertar/Remover Lista numerada"},"language":{"button":"Establecer idioma","remove":"Remover idioma"},"indent":{"indent":"Incrementar sangrÃa","outdent":"Decrementar sangrÃa"},"image2":{"alt":"Texto alternativo","btnUpload":"Enviar al servidor","captioned":"Imagen subtitulada","captionPlaceholder":"SubtÃtulo","infoTab":"Información de la imagen","lockRatio":"Bloquear aspecto","menu":"Propiedades de la imagen","pathName":"imagen","pathNameCaption":"subtÃtulo","resetSize":"Reiniciar tamaño","resizer":"Presiona y arrastra para redimensionar","title":"Propiedades de imagen","uploadTab":"Cargar","urlMissing":"Falta la URL de origen de la imagen.","altMissing":"Falta texto alternativo."},"horizontalrule":{"toolbar":"Insertar una lÃnea horizontal"},"format":{"label":"Formato","panelTitle":"Formato de párrafo","tag_address":"Dirección","tag_div":"Normal (DIV)","tag_h1":"Encabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Formateado"},"filetools":{"loadError":"Ha ocurrido un error al leer el archivo","networkError":"Ha ocurrido un error de red durante la carga del archivo.","httpError404":"Se ha producido un error HTTP durante la subida de archivos (404: archivo no encontrado).","httpError403":"Se ha producido un error HTTP durante la subida de archivos (403: Prohibido).","httpError":"Se ha producido un error HTTP durante la subida de archivos (error: %1).","noUrlError":"La URL de subida no está definida.","responseError":"Respuesta incorrecta del servidor."},"elementspath":{"eleLabel":"Ruta de los elementos","eleTitle":"%1 elemento"},"contextmenu":{"options":"Opciones del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de copiado. Por favor, utilice el teclado para (Ctrl/Cmd+C).","cut":"Cortar","cutError":"La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de corte. Por favor, utilice el teclado para (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Entrecomillado"},"basicstyles":{"bold":"Negrita","italic":"Cursiva","strike":"Tachado","subscript":"subÃndice","superscript":"Sobrescrito","underline":"Subrayada"},"about":{"copy":"Derechos reservados © $1. Todos los derechos reservados","dlgTitle":"Acerca de CKEditor 4","moreInfo":"Para información sobre la licencia por favor visita nuestro sitio web:"},"editor":"Editor de texto enriquecido","editorPanel":"Panel del editor de texto","common":{"editorHelp":"Presiona ALT + 0 para ayuda","browseServer":"Examinar servidor","url":"URL","protocol":"Protocolo","upload":"Subir","uploadSubmit":"Enviar al servidor","image":"Imagen","form":"Formulario","checkbox":"Casilla de verificación","radio":"Botón de opción","textField":"Campo de texto","textarea":"Ãrea de texto","hiddenField":"Campo oculto","button":"Botón","select":"Campo de selección","imageButton":"Botón de imagen","notSet":"<not set>","id":"Id","name":"Nombre","langDir":"Dirección de idiomas","langDirLtr":"Izquierda a derecha (LTR)","langDirRtl":"Derecha a izquierda (RTL)","langCode":"Código de lenguaje","longDescr":"URL descripción larga","cssClass":"Clases de hoja de estilo","advisoryTitle":"TÃtulo del anuncio","cssStyle":"Estilo","ok":"OK","cancel":"Cancelar","close":"Cerrar","preview":"Vista previa","resize":"Redimensionar","generalTab":"General","advancedTab":"Avanzada","validateNumberFailed":"Este valor no es un número.","confirmNewPage":"Se perderán todos los cambios no guardados en este contenido. ¿Seguro que quieres cargar nueva página?","confirmCancel":"Ha cambiado algunas opciones. ¿Está seguro de que desea cerrar la ventana de diálogo?","options":"Opciones","target":"Objetivo","targetNew":"Nueva ventana (_blank)","targetTop":"Ventana superior (_top)","targetSelf":"Misma ventana (_self)","targetParent":"Ventana principal (_parent)","langDirLTR":"Izquierda a Derecha (LTR)","langDirRTL":"Derecha a Izquierda (RTL)","styles":"Estilo","cssClasses":"Clases de hojas de estilo","width":"Ancho","height":"Alto","align":"Alineación","left":"Izquierda","right":"Derecha","center":"Centrado","justify":"Justificado","alignLeft":"Alinear a la izquierda","alignRight":"Alinear a la derecha","alignCenter":"Align Center","alignTop":"Arriba","alignMiddle":"En medio","alignBottom":"Abajo","alignNone":"Ninguno","invalidValue":"Valor inválido","invalidHeight":"La altura debe ser un número.","invalidWidth":"La anchura debe ser un número.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"El valor especificado para el campo \"% 1\" debe ser un número positivo con o sin una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"El valor especificado para el campo \"% 1\" debe ser un número positivo con o sin una unidad de medición HTML válida (px or %).","invalidInlineStyle":"El valor especificado para el estilo en lÃnea debe constar de una o más tuplas con el formato de \"nombre: valor\", separados por punto y coma","cssLengthTooltip":"Introduzca un número para un valor en pÃxeles o un número con una unidad CSS válida (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>","keyboard":{"8":"Retroceso","13":"Intro","16":"Shift","17":"Ctrl","18":"Alt","32":"Espacio","35":"Fin","36":"Inicio","46":"Borrar","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Atajo de teclado","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/es.js b/core/assets/vendor/ckeditor/lang/es.js index 6e7e6273a94c..f23343230bf4 100644 --- a/core/assets/vendor/ckeditor/lang/es.js +++ b/core/assets/vendor/ckeditor/lang/es.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['es']={"widget":{"move":"Dar clic y arrastrar para mover","label":"reproductor %1"},"undo":{"redo":"Rehacer","undo":"Deshacer"},"toolbar":{"toolbarCollapse":"Contraer barra de herramientas","toolbarExpand":"Expandir barra de herramientas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeles/Deshacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Párrafo","links":"Enlaces","insert":"Insertar","styles":"Estilos","colors":"Colores","tools":"Herramientas"},"toolbars":"Barras de herramientas del editor"},"table":{"border":"Tamaño de Borde","caption":"TÃtulo","cell":{"menu":"Celda","insertBefore":"Insertar celda a la izquierda","insertAfter":"Insertar celda a la derecha","deleteCell":"Eliminar Celdas","merge":"Combinar Celdas","mergeRight":"Combinar a la derecha","mergeDown":"Combinar hacia abajo","splitHorizontal":"Dividir la celda horizontalmente","splitVertical":"Dividir la celda verticalmente","title":"Propiedades de celda","cellType":"Tipo de Celda","rowSpan":"Expandir filas","colSpan":"Expandir columnas","wordWrap":"Ajustar al contenido","hAlign":"Alineación Horizontal","vAlign":"Alineación Vertical","alignBaseline":"Linea de base","bgColor":"Color de fondo","borderColor":"Color de borde","data":"Datos","header":"Encabezado","yes":"SÃ","no":"No","invalidWidth":"La anchura de celda debe ser un número.","invalidHeight":"La altura de celda debe ser un número.","invalidRowSpan":"La expansión de filas debe ser un número entero.","invalidColSpan":"La expansión de columnas debe ser un número entero.","chooseColor":"Elegir"},"cellPad":"Esp. interior","cellSpace":"Esp. e/celdas","column":{"menu":"Columna","insertBefore":"Insertar columna a la izquierda","insertAfter":"Insertar columna a la derecha","deleteColumn":"Eliminar Columnas"},"columns":"Columnas","deleteTable":"Eliminar Tabla","headers":"Encabezados","headersBoth":"Ambas","headersColumn":"Primera columna","headersNone":"Ninguno","headersRow":"Primera fila","heightUnit":"height unit","invalidBorder":"El tamaño del borde debe ser un número.","invalidCellPadding":"El espaciado interior debe ser un número.","invalidCellSpacing":"El espaciado entre celdas debe ser un número.","invalidCols":"El número de columnas debe ser un número mayor que 0.","invalidHeight":"La altura de tabla debe ser un número.","invalidRows":"El número de filas debe ser un número mayor que 0.","invalidWidth":"La anchura de tabla debe ser un número.","menu":"Propiedades de Tabla","row":{"menu":"Fila","insertBefore":"Insertar fila en la parte superior","insertAfter":"Insertar fila en la parte inferior","deleteRow":"Eliminar Filas"},"rows":"Filas","summary":"SÃntesis","title":"Propiedades de Tabla","toolbar":"Tabla","widthPc":"porcentaje","widthPx":"pixeles","widthUnit":"unidad de la anchura"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos para formatear","panelTitle1":"Estilos de párrafo","panelTitle2":"Estilos de carácter","panelTitle3":"Estilos de objeto"},"specialchar":{"options":"Opciones de caracteres especiales","title":"Seleccione un caracter especial","toolbar":"Insertar Caracter Especial"},"sourcedialog":{"toolbar":"Fuente HTML","title":"Fuente HTML"},"sourcearea":{"toolbar":"Fuente HTML"},"showblocks":{"toolbar":"Mostrar bloques"},"removeformat":{"toolbar":"Eliminar Formato"},"pastetext":{"button":"Pegar como Texto Plano","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Pegar como Texto Plano"},"pastefromword":{"confirmCleanup":"El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?","error":"No ha sido posible limpiar los datos debido a un error interno","title":"Pegar desde Word","toolbar":"Pegar desde Word"},"notification":{"closed":"Notificación cerrada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Insertar párrafo aquÃ"},"list":{"bulletedlist":"Viñetas","numberedlist":"Numeración"},"language":{"button":"Fijar lenguaje","remove":"Quitar lenguaje"},"indent":{"indent":"Aumentar SangrÃa","outdent":"Disminuir SangrÃa"},"image2":{"alt":"Texto Alternativo","btnUpload":"Enviar al Servidor","captioned":"Imagen subtitulada","captionPlaceholder":"Leyenda","infoTab":"Información de Imagen","lockRatio":"Proporcional","menu":"Propiedades de Imagen","pathName":"image","pathNameCaption":"subtÃtulo","resetSize":"Tamaño Original","resizer":"Dar clic y arrastrar para cambiar tamaño","title":"Propiedades de Imagen","uploadTab":"Cargar","urlMissing":"Debe indicar la URL de la imagen.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insertar LÃnea Horizontal"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Dirección","tag_div":"Normal (DIV)","tag_h1":"Encabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Con formato"},"filetools":{"loadError":"Ha ocurrido un error durante la lectura del archivo.","networkError":"Error de red ocurrido durante carga de archivo.","httpError404":"Un error HTTP ha ocurrido durante la carga del archivo (404: Archivo no encontrado).","httpError403":"Un error HTTP ha ocurrido durante la carga del archivo (403: Prohibido).","httpError":"Error HTTP ocurrido durante la carga del archivo (Estado del error: %1).","noUrlError":"URL cargada no está definida.","responseError":"Respueta del servidor incorrecta."},"elementspath":{"eleLabel":"Ruta de los elementos","eleTitle":"%1 elemento"},"contextmenu":{"options":"Opciones del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Zona de pegado","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Cita"},"basicstyles":{"bold":"Negrita","italic":"Cursiva","strike":"Tachado","subscript":"SubÃndice","superscript":"SuperÃndice","underline":"Subrayado"},"about":{"copy":"Copyright © $1. Todos los derechos reservados.","dlgTitle":"Acerca de CKEditor 4","moreInfo":"Para información de licencia, por favor visite nuestro sitio web:"},"editor":"Editor de Texto Enriquecido","editorPanel":"Panel del Editor de Texto Enriquecido","common":{"editorHelp":"Pulse ALT 0 para ayuda","browseServer":"Ver Servidor","url":"URL","protocol":"Protocolo","upload":"Cargar","uploadSubmit":"Enviar al Servidor","image":"Imagen","flash":"Flash","form":"Formulario","checkbox":"Casilla de Verificación","radio":"Botones de Radio","textField":"Campo de Texto","textarea":"Area de Texto","hiddenField":"Campo Oculto","button":"Botón","select":"Campo de Selección","imageButton":"Botón Imagen","notSet":"<No definido>","id":"Id","name":"Nombre","langDir":"Orientación","langDirLtr":"Izquierda a Derecha (LTR)","langDirRtl":"Derecha a Izquierda (RTL)","langCode":"Cód. de idioma","longDescr":"Descripción larga URL","cssClass":"Clases de hojas de estilo","advisoryTitle":"TÃtulo","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Cerrar","preview":"Previsualización","resize":"Arrastre para redimensionar","generalTab":"General","advancedTab":"Avanzado","validateNumberFailed":"El valor no es un número.","confirmNewPage":"Cualquier cambio que no se haya guardado se perderá.\r\n¿Está seguro de querer crear una nueva página?","confirmCancel":"Algunas de las opciones se han cambiado.\r\n¿Está seguro de querer cerrar el diálogo?","options":"Opciones","target":"Destino","targetNew":"Nueva ventana (_blank)","targetTop":"Ventana principal (_top)","targetSelf":"Misma ventana (_self)","targetParent":"Ventana padre (_parent)","langDirLTR":"Izquierda a derecha (LTR)","langDirRTL":"Derecha a izquierda (RTL)","styles":"Estilos","cssClasses":"Clase de la hoja de estilos","width":"Anchura","height":"Altura","align":"Alineación","left":"Izquierda","right":"Derecha","center":"Centrado","justify":"Justificado","alignLeft":"Alinear a Izquierda","alignRight":"Alinear a Derecha","alignCenter":"Centrar","alignTop":"Tope","alignMiddle":"Centro","alignBottom":"Pie","alignNone":"Ninguno","invalidValue":"Valor no válido","invalidHeight":"Altura debe ser un número.","invalidWidth":"Anchura debe ser un número.","invalidLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo opcionalmente una unidad de medida válida (%2).","invalidCssLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida HTML válida (px o %).","invalidInlineStyle":"El valor especificado para el estilo debe consistir en uno o más pares con el formato \"nombre: valor\", separados por punto y coma.","cssLengthTooltip":"Introduca un número para el valor en pixels o un número con una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>","keyboard":{"8":"Retroceso","13":"Ingresar","16":"Mayús.","17":"Ctrl","18":"Alt","32":"Espacio","35":"Fin","36":"Inicio","46":"Suprimir","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Atajos de teclado","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['es']={"widget":{"move":"Dar clic y arrastrar para mover","label":"reproductor %1"},"undo":{"redo":"Rehacer","undo":"Deshacer"},"toolbar":{"toolbarCollapse":"Contraer barra de herramientas","toolbarExpand":"Expandir barra de herramientas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeles/Deshacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Párrafo","links":"Enlaces","insert":"Insertar","styles":"Estilos","colors":"Colores","tools":"Herramientas"},"toolbars":"Barras de herramientas del editor"},"table":{"border":"Tamaño de Borde","caption":"TÃtulo","cell":{"menu":"Celda","insertBefore":"Insertar celda a la izquierda","insertAfter":"Insertar celda a la derecha","deleteCell":"Eliminar Celdas","merge":"Combinar Celdas","mergeRight":"Combinar a la derecha","mergeDown":"Combinar hacia abajo","splitHorizontal":"Dividir la celda horizontalmente","splitVertical":"Dividir la celda verticalmente","title":"Propiedades de celda","cellType":"Tipo de Celda","rowSpan":"Expandir filas","colSpan":"Expandir columnas","wordWrap":"Ajustar al contenido","hAlign":"Alineación Horizontal","vAlign":"Alineación Vertical","alignBaseline":"Linea de base","bgColor":"Color de fondo","borderColor":"Color de borde","data":"Datos","header":"Encabezado","yes":"SÃ","no":"No","invalidWidth":"La anchura de celda debe ser un número.","invalidHeight":"La altura de celda debe ser un número.","invalidRowSpan":"La expansión de filas debe ser un número entero.","invalidColSpan":"La expansión de columnas debe ser un número entero.","chooseColor":"Elegir"},"cellPad":"Esp. interior","cellSpace":"Esp. e/celdas","column":{"menu":"Columna","insertBefore":"Insertar columna a la izquierda","insertAfter":"Insertar columna a la derecha","deleteColumn":"Eliminar Columnas"},"columns":"Columnas","deleteTable":"Eliminar Tabla","headers":"Encabezados","headersBoth":"Ambas","headersColumn":"Primera columna","headersNone":"Ninguno","headersRow":"Primera fila","heightUnit":"height unit","invalidBorder":"El tamaño del borde debe ser un número.","invalidCellPadding":"El espaciado interior debe ser un número.","invalidCellSpacing":"El espaciado entre celdas debe ser un número.","invalidCols":"El número de columnas debe ser un número mayor que 0.","invalidHeight":"La altura de tabla debe ser un número.","invalidRows":"El número de filas debe ser un número mayor que 0.","invalidWidth":"La anchura de tabla debe ser un número.","menu":"Propiedades de Tabla","row":{"menu":"Fila","insertBefore":"Insertar fila en la parte superior","insertAfter":"Insertar fila en la parte inferior","deleteRow":"Eliminar Filas"},"rows":"Filas","summary":"SÃntesis","title":"Propiedades de Tabla","toolbar":"Tabla","widthPc":"porcentaje","widthPx":"pixeles","widthUnit":"unidad de la anchura"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos para formatear","panelTitle1":"Estilos de párrafo","panelTitle2":"Estilos de carácter","panelTitle3":"Estilos de objeto"},"specialchar":{"options":"Opciones de caracteres especiales","title":"Seleccione un caracter especial","toolbar":"Insertar Caracter Especial"},"sourcedialog":{"toolbar":"Fuente HTML","title":"Fuente HTML"},"sourcearea":{"toolbar":"Fuente HTML"},"showblocks":{"toolbar":"Mostrar bloques"},"removeformat":{"toolbar":"Eliminar Formato"},"pastetext":{"button":"Pegar como Texto Plano","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Pegar como Texto Plano"},"pastefromword":{"confirmCleanup":"El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?","error":"No ha sido posible limpiar los datos debido a un error interno","title":"Pegar desde Word","toolbar":"Pegar desde Word"},"notification":{"closed":"Notificación cerrada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Insertar párrafo aquÃ"},"list":{"bulletedlist":"Viñetas","numberedlist":"Numeración"},"language":{"button":"Fijar lenguaje","remove":"Quitar lenguaje"},"indent":{"indent":"Aumentar SangrÃa","outdent":"Disminuir SangrÃa"},"image2":{"alt":"Texto Alternativo","btnUpload":"Enviar al Servidor","captioned":"Imagen subtitulada","captionPlaceholder":"Leyenda","infoTab":"Información de Imagen","lockRatio":"Proporcional","menu":"Propiedades de Imagen","pathName":"image","pathNameCaption":"subtÃtulo","resetSize":"Tamaño Original","resizer":"Dar clic y arrastrar para cambiar tamaño","title":"Propiedades de Imagen","uploadTab":"Cargar","urlMissing":"Debe indicar la URL de la imagen.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insertar LÃnea Horizontal"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Dirección","tag_div":"Normal (DIV)","tag_h1":"Encabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Con formato"},"filetools":{"loadError":"Ha ocurrido un error durante la lectura del archivo.","networkError":"Error de red ocurrido durante carga de archivo.","httpError404":"Un error HTTP ha ocurrido durante la carga del archivo (404: Archivo no encontrado).","httpError403":"Un error HTTP ha ocurrido durante la carga del archivo (403: Prohibido).","httpError":"Error HTTP ocurrido durante la carga del archivo (Estado del error: %1).","noUrlError":"URL cargada no está definida.","responseError":"Respueta del servidor incorrecta."},"elementspath":{"eleLabel":"Ruta de los elementos","eleTitle":"%1 elemento"},"contextmenu":{"options":"Opciones del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Zona de pegado","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Cita"},"basicstyles":{"bold":"Negrita","italic":"Cursiva","strike":"Tachado","subscript":"SubÃndice","superscript":"SuperÃndice","underline":"Subrayado"},"about":{"copy":"Copyright © $1. Todos los derechos reservados.","dlgTitle":"Acerca de CKEditor 4","moreInfo":"Para información de licencia, por favor visite nuestro sitio web:"},"editor":"Editor de Texto Enriquecido","editorPanel":"Panel del Editor de Texto Enriquecido","common":{"editorHelp":"Pulse ALT 0 para ayuda","browseServer":"Ver Servidor","url":"URL","protocol":"Protocolo","upload":"Cargar","uploadSubmit":"Enviar al Servidor","image":"Imagen","form":"Formulario","checkbox":"Casilla de Verificación","radio":"Botones de Radio","textField":"Campo de Texto","textarea":"Area de Texto","hiddenField":"Campo Oculto","button":"Botón","select":"Campo de Selección","imageButton":"Botón Imagen","notSet":"<No definido>","id":"Id","name":"Nombre","langDir":"Orientación","langDirLtr":"Izquierda a Derecha (LTR)","langDirRtl":"Derecha a Izquierda (RTL)","langCode":"Cód. de idioma","longDescr":"Descripción larga URL","cssClass":"Clases de hojas de estilo","advisoryTitle":"TÃtulo","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Cerrar","preview":"Previsualización","resize":"Arrastre para redimensionar","generalTab":"General","advancedTab":"Avanzado","validateNumberFailed":"El valor no es un número.","confirmNewPage":"Cualquier cambio que no se haya guardado se perderá.\r\n¿Está seguro de querer crear una nueva página?","confirmCancel":"Algunas de las opciones se han cambiado.\r\n¿Está seguro de querer cerrar el diálogo?","options":"Opciones","target":"Destino","targetNew":"Nueva ventana (_blank)","targetTop":"Ventana principal (_top)","targetSelf":"Misma ventana (_self)","targetParent":"Ventana padre (_parent)","langDirLTR":"Izquierda a derecha (LTR)","langDirRTL":"Derecha a izquierda (RTL)","styles":"Estilos","cssClasses":"Clase de la hoja de estilos","width":"Anchura","height":"Altura","align":"Alineación","left":"Izquierda","right":"Derecha","center":"Centrado","justify":"Justificado","alignLeft":"Alinear a Izquierda","alignRight":"Alinear a Derecha","alignCenter":"Centrar","alignTop":"Tope","alignMiddle":"Centro","alignBottom":"Pie","alignNone":"Ninguno","invalidValue":"Valor no válido","invalidHeight":"Altura debe ser un número.","invalidWidth":"Anchura debe ser un número.","invalidLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo opcionalmente una unidad de medida válida (%2).","invalidCssLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida HTML válida (px o %).","invalidInlineStyle":"El valor especificado para el estilo debe consistir en uno o más pares con el formato \"nombre: valor\", separados por punto y coma.","cssLengthTooltip":"Introduca un número para el valor en pixels o un número con una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>","keyboard":{"8":"Retroceso","13":"Ingresar","16":"Mayús.","17":"Ctrl","18":"Alt","32":"Espacio","35":"Fin","36":"Inicio","46":"Suprimir","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Atajos de teclado","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/et.js b/core/assets/vendor/ckeditor/lang/et.js index 66a936b2e76a..8b37bdc31e1b 100644 --- a/core/assets/vendor/ckeditor/lang/et.js +++ b/core/assets/vendor/ckeditor/lang/et.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['et']={"widget":{"move":"Liigutamiseks klõpsa ja lohista","label":"%1 vidin"},"undo":{"redo":"Toimingu kordamine","undo":"Tagasivõtmine"},"toolbar":{"toolbarCollapse":"Tööriistariba peitmine","toolbarExpand":"Tööriistariba näitamine","toolbarGroups":{"document":"Dokument","clipboard":"Lõikelaud/tagasivõtmine","editing":"Muutmine","forms":"Vormid","basicstyles":"Põhistiilid","paragraph":"Lõik","links":"Lingid","insert":"Sisesta","styles":"Stiilid","colors":"Värvid","tools":"Tööriistad"},"toolbars":"Redaktori tööriistaribad"},"table":{"border":"Joone suurus","caption":"Tabeli tiitel","cell":{"menu":"Lahter","insertBefore":"Sisesta lahter enne","insertAfter":"Sisesta lahter peale","deleteCell":"Eemalda lahtrid","merge":"Ãœhenda lahtrid","mergeRight":"Ãœhenda paremale","mergeDown":"Ãœhenda alla","splitHorizontal":"Poolita lahter horisontaalselt","splitVertical":"Poolita lahter vertikaalselt","title":"Lahtri omadused","cellType":"Lahtri liik","rowSpan":"Ridade vahe","colSpan":"Tulpade vahe","wordWrap":"Sõnade murdmine","hAlign":"Horisontaalne joondus","vAlign":"Vertikaalne joondus","alignBaseline":"Baasjoon","bgColor":"Tausta värv","borderColor":"Äärise värv","data":"Andmed","header":"Päis","yes":"Jah","no":"Ei","invalidWidth":"Lahtri laius peab olema number.","invalidHeight":"Lahtri kõrgus peab olema number.","invalidRowSpan":"Ridade vahe peab olema täisarv.","invalidColSpan":"Tulpade vahe peab olema täisarv.","chooseColor":"Vali"},"cellPad":"Lahtri täidis","cellSpace":"Lahtri vahe","column":{"menu":"Veerg","insertBefore":"Sisesta veerg enne","insertAfter":"Sisesta veerg peale","deleteColumn":"Eemalda veerud"},"columns":"Veerud","deleteTable":"Kustuta tabel","headers":"Päised","headersBoth":"Mõlemad","headersColumn":"Esimene tulp","headersNone":"Puudub","headersRow":"Esimene rida","heightUnit":"kõrgusühik","invalidBorder":"Äärise suurus peab olema number.","invalidCellPadding":"Lahtrite polsterdus (padding) peab olema positiivne arv.","invalidCellSpacing":"Lahtrite vahe peab olema positiivne arv.","invalidCols":"Tulpade arv peab olema nullist suurem.","invalidHeight":"Tabeli kõrgus peab olema number.","invalidRows":"Ridade arv peab olema nullist suurem.","invalidWidth":"Tabeli laius peab olema number.","menu":"Tabeli omadused","row":{"menu":"Rida","insertBefore":"Sisesta rida enne","insertAfter":"Sisesta rida peale","deleteRow":"Eemalda read"},"rows":"Read","summary":"Kokkuvõte","title":"Tabeli omadused","toolbar":"Tabel","widthPc":"protsenti","widthPx":"pikslit","widthUnit":"laiuse ühik"},"stylescombo":{"label":"Stiil","panelTitle":"Vormindusstiilid","panelTitle1":"Blokkstiilid","panelTitle2":"Reasisesed stiilid","panelTitle3":"Objektistiilid"},"specialchar":{"options":"Erimärkide valikud","title":"Erimärgi valimine","toolbar":"Erimärgi sisestamine"},"sourcedialog":{"toolbar":"Lähtekood","title":"Lähtekood"},"sourcearea":{"toolbar":"Lähtekood"},"showblocks":{"toolbar":"Blokkide näitamine"},"removeformat":{"toolbar":"Vormingu eemaldamine"},"pastetext":{"button":"Asetamine tavalise tekstina","pasteNotification":"Asetamiseks vajuta %1. Sinu brauser ei toeta asetamist tööriistariba nupu või kontekstimenüü valikuga.","title":"Asetamine tavalise tekstina"},"pastefromword":{"confirmCleanup":"Tekst, mida tahad asetada näib pärinevat Wordist. Kas tahad selle enne asetamist puhastada?","error":"Asetatud andmete puhastamine ei olnud sisemise vea tõttu võimalik","title":"Asetamine Wordist","toolbar":"Asetamine Wordist"},"notification":{"closed":"Teavitused on suletud."},"maximize":{"maximize":"Maksimeerimine","minimize":"Minimeerimine"},"magicline":{"title":"Sisesta siia lõigu tekst"},"list":{"bulletedlist":"Punktloend","numberedlist":"Numberloend"},"language":{"button":"Määra keel","remove":"Eemalda keel"},"indent":{"indent":"Taande suurendamine","outdent":"Taande vähendamine"},"image2":{"alt":"Alternatiivne tekst","btnUpload":"Saada serverisse","captioned":"Pealkirjaga pilt","captionPlaceholder":"Pealkiri","infoTab":"Pildi info","lockRatio":"Lukusta kuvasuhe","menu":"Pildi omadused","pathName":"pilt","pathNameCaption":"pealkiri","resetSize":"Lähtesta suurus","resizer":"Suuruse muutmiseks klõpsa ja lohista","title":"Pildi omadused","uploadTab":"Lae üles","urlMissing":"Pildi lähte-URL on puudu.","altMissing":"Alternatiivtekst puudub."},"horizontalrule":{"toolbar":"Horisontaaljoone sisestamine"},"format":{"label":"Vorming","panelTitle":"Vorming","tag_address":"Aadress","tag_div":"Tavaline (DIV)","tag_h1":"Pealkiri 1","tag_h2":"Pealkiri 2","tag_h3":"Pealkiri 3","tag_h4":"Pealkiri 4","tag_h5":"Pealkiri 5","tag_h6":"Pealkiri 6","tag_p":"Tavaline","tag_pre":"Vormindatud"},"filetools":{"loadError":"Faili lugemisel esines viga.","networkError":"Faili üleslaadimisel esines võrgu viga.","httpError404":"Faili üleslaadimisel esines HTTP viga (404: faili ei leitud).","httpError403":"Faili üleslaadimisel esines HTTP viga (403: keelatud).","httpError":"Faili üleslaadimisel esines HTTP viga (veakood: %1).","noUrlError":"Ãœleslaadimise URL ei ole määratud.","responseError":"Vigane serveri vastus."},"elementspath":{"eleLabel":"Elementide asukoht","eleTitle":"%1 element"},"contextmenu":{"options":"Kontekstimenüü valikud"},"clipboard":{"copy":"Kopeeri","copyError":"Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).","cut":"Lõika","cutError":"Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).","paste":"Aseta","pasteNotification":"Asetamiseks vajuta %1. Sinu brauser ei toeta asetamist tööriistariba nupu või kontekstimenüü valikuga.","pasteArea":"Asetamise ala","pasteMsg":"Aseta sisu alumisse kasti ja vajuta OK nupule."},"blockquote":{"toolbar":"Blokktsitaat"},"basicstyles":{"bold":"Paks","italic":"Kursiiv","strike":"Läbijoonitud","subscript":"Allindeks","superscript":"Ãœlaindeks","underline":"Allajoonitud"},"about":{"copy":"Copyright © $1. Kõik õigused kaitstud.","dlgTitle":"CKEditor 4st lähemalt","moreInfo":"Litsentsi andmed leiab meie veebilehelt:"},"editor":"Rikkalik tekstiredaktor","editorPanel":"Rikkaliku tekstiredaktori paneel","common":{"editorHelp":"Abi saamiseks vajuta ALT 0","browseServer":"Serveri sirvimine","url":"URL","protocol":"Protokoll","upload":"Laadi üles","uploadSubmit":"Saada serverisse","image":"Pilt","flash":"Flash","form":"Vorm","checkbox":"Märkeruut","radio":"Raadionupp","textField":"Tekstilahter","textarea":"Tekstiala","hiddenField":"Varjatud lahter","button":"Nupp","select":"Valiklahter","imageButton":"Piltnupp","notSet":"<määramata>","id":"ID","name":"Nimi","langDir":"Keele suund","langDirLtr":"Vasakult paremale (LTR)","langDirRtl":"Paremalt vasakule (RTL)","langCode":"Keele kood","longDescr":"Pikk kirjeldus URL","cssClass":"Stiilistiku klassid","advisoryTitle":"Soovituslik pealkiri","cssStyle":"Laad","ok":"Olgu","cancel":"Loobu","close":"Sulge","preview":"Eelvaade","resize":"Suuruse muutmiseks lohista","generalTab":"Ãœldine","advancedTab":"Täpsemalt","validateNumberFailed":"See väärtus pole number.","confirmNewPage":"Kõik salvestamata muudatused lähevad kaotsi. Kas oled kindel, et tahad laadida uue lehe?","confirmCancel":"Mõned valikud on muudetud. Kas oled kindel, et tahad dialoogi sulgeda?","options":"Valikud","target":"Sihtkoht","targetNew":"Uus aken (_blank)","targetTop":"Kõige ülemine aken (_top)","targetSelf":"Sama aken (_self)","targetParent":"Vanemaken (_parent)","langDirLTR":"Vasakult paremale (LTR)","langDirRTL":"Paremalt vasakule (RTL)","styles":"Stiili","cssClasses":"Stiililehe klassid","width":"Laius","height":"Kõrgus","align":"Joondus","left":"Vasak","right":"Paremale","center":"Kesk","justify":"Rööpjoondus","alignLeft":"Vasakjoondus","alignRight":"Paremjoondus","alignCenter":"Keskjoondus","alignTop":"Ãœles","alignMiddle":"Keskele","alignBottom":"Alla","alignNone":"Pole","invalidValue":"Vigane väärtus.","invalidHeight":"Kõrgus peab olema number.","invalidWidth":"Laius peab olema number.","invalidLength":"Välja \"%1\" väärtus peab olema positiivne arv korrektse ühikuga (%2) või ilma.","invalidCssLength":"\"%1\" välja jaoks määratud väärtus peab olema positiivne täisarv CSS ühikuga (px, %, in, cm, mm, em, ex, pt või pc) või ilma.","invalidHtmlLength":"\"%1\" välja jaoks määratud väärtus peab olema positiivne täisarv HTML ühikuga (px või %) või ilma.","invalidInlineStyle":"Reasisese stiili määrangud peavad koosnema paarisväärtustest (tuples), mis on semikoolonitega eraldatult järgnevas vormingus: \"nimi : väärtus\".","cssLengthTooltip":"Sisesta väärtus pikslites või number koos sobiva CSS-i ühikuga (px, %, in, cm, mm, em, ex, pt või pc).","unavailable":"%1<span class=\"cke_accessibility\">, pole saadaval</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Tühik","35":"End","36":"Home","46":"Kustuta","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Kiirklahv","optionDefault":"Vaikeväärtus"}}; \ No newline at end of file +CKEDITOR.lang['et']={"widget":{"move":"Liigutamiseks klõpsa ja lohista","label":"%1 vidin"},"undo":{"redo":"Toimingu kordamine","undo":"Tagasivõtmine"},"toolbar":{"toolbarCollapse":"Tööriistariba peitmine","toolbarExpand":"Tööriistariba näitamine","toolbarGroups":{"document":"Dokument","clipboard":"Lõikelaud/tagasivõtmine","editing":"Muutmine","forms":"Vormid","basicstyles":"Põhistiilid","paragraph":"Lõik","links":"Lingid","insert":"Sisesta","styles":"Stiilid","colors":"Värvid","tools":"Tööriistad"},"toolbars":"Redaktori tööriistaribad"},"table":{"border":"Joone suurus","caption":"Tabeli tiitel","cell":{"menu":"Lahter","insertBefore":"Sisesta lahter enne","insertAfter":"Sisesta lahter peale","deleteCell":"Eemalda lahtrid","merge":"Ãœhenda lahtrid","mergeRight":"Ãœhenda paremale","mergeDown":"Ãœhenda alla","splitHorizontal":"Poolita lahter horisontaalselt","splitVertical":"Poolita lahter vertikaalselt","title":"Lahtri omadused","cellType":"Lahtri liik","rowSpan":"Ridade vahe","colSpan":"Tulpade vahe","wordWrap":"Sõnade murdmine","hAlign":"Horisontaalne joondus","vAlign":"Vertikaalne joondus","alignBaseline":"Baasjoon","bgColor":"Tausta värv","borderColor":"Äärise värv","data":"Andmed","header":"Päis","yes":"Jah","no":"Ei","invalidWidth":"Lahtri laius peab olema number.","invalidHeight":"Lahtri kõrgus peab olema number.","invalidRowSpan":"Ridade vahe peab olema täisarv.","invalidColSpan":"Tulpade vahe peab olema täisarv.","chooseColor":"Vali"},"cellPad":"Lahtri täidis","cellSpace":"Lahtri vahe","column":{"menu":"Veerg","insertBefore":"Sisesta veerg enne","insertAfter":"Sisesta veerg peale","deleteColumn":"Eemalda veerud"},"columns":"Veerud","deleteTable":"Kustuta tabel","headers":"Päised","headersBoth":"Mõlemad","headersColumn":"Esimene tulp","headersNone":"Puudub","headersRow":"Esimene rida","heightUnit":"kõrgusühik","invalidBorder":"Äärise suurus peab olema number.","invalidCellPadding":"Lahtrite polsterdus (padding) peab olema positiivne arv.","invalidCellSpacing":"Lahtrite vahe peab olema positiivne arv.","invalidCols":"Tulpade arv peab olema nullist suurem.","invalidHeight":"Tabeli kõrgus peab olema number.","invalidRows":"Ridade arv peab olema nullist suurem.","invalidWidth":"Tabeli laius peab olema number.","menu":"Tabeli omadused","row":{"menu":"Rida","insertBefore":"Sisesta rida enne","insertAfter":"Sisesta rida peale","deleteRow":"Eemalda read"},"rows":"Read","summary":"Kokkuvõte","title":"Tabeli omadused","toolbar":"Tabel","widthPc":"protsenti","widthPx":"pikslit","widthUnit":"laiuse ühik"},"stylescombo":{"label":"Stiil","panelTitle":"Vormindusstiilid","panelTitle1":"Blokkstiilid","panelTitle2":"Reasisesed stiilid","panelTitle3":"Objektistiilid"},"specialchar":{"options":"Erimärkide valikud","title":"Erimärgi valimine","toolbar":"Erimärgi sisestamine"},"sourcedialog":{"toolbar":"Lähtekood","title":"Lähtekood"},"sourcearea":{"toolbar":"Lähtekood"},"showblocks":{"toolbar":"Blokkide näitamine"},"removeformat":{"toolbar":"Vormingu eemaldamine"},"pastetext":{"button":"Asetamine tavalise tekstina","pasteNotification":"Asetamiseks vajuta %1. Sinu brauser ei toeta asetamist tööriistariba nupu või kontekstimenüü valikuga.","title":"Asetamine tavalise tekstina"},"pastefromword":{"confirmCleanup":"Tekst, mida tahad asetada näib pärinevat Wordist. Kas tahad selle enne asetamist puhastada?","error":"Asetatud andmete puhastamine ei olnud sisemise vea tõttu võimalik","title":"Asetamine Wordist","toolbar":"Asetamine Wordist"},"notification":{"closed":"Teavitused on suletud."},"maximize":{"maximize":"Maksimeerimine","minimize":"Minimeerimine"},"magicline":{"title":"Sisesta siia lõigu tekst"},"list":{"bulletedlist":"Punktloend","numberedlist":"Numberloend"},"language":{"button":"Määra keel","remove":"Eemalda keel"},"indent":{"indent":"Taande suurendamine","outdent":"Taande vähendamine"},"image2":{"alt":"Alternatiivne tekst","btnUpload":"Saada serverisse","captioned":"Pealkirjaga pilt","captionPlaceholder":"Pealkiri","infoTab":"Pildi info","lockRatio":"Lukusta kuvasuhe","menu":"Pildi omadused","pathName":"pilt","pathNameCaption":"pealkiri","resetSize":"Lähtesta suurus","resizer":"Suuruse muutmiseks klõpsa ja lohista","title":"Pildi omadused","uploadTab":"Lae üles","urlMissing":"Pildi lähte-URL on puudu.","altMissing":"Alternatiivtekst puudub."},"horizontalrule":{"toolbar":"Horisontaaljoone sisestamine"},"format":{"label":"Vorming","panelTitle":"Vorming","tag_address":"Aadress","tag_div":"Tavaline (DIV)","tag_h1":"Pealkiri 1","tag_h2":"Pealkiri 2","tag_h3":"Pealkiri 3","tag_h4":"Pealkiri 4","tag_h5":"Pealkiri 5","tag_h6":"Pealkiri 6","tag_p":"Tavaline","tag_pre":"Vormindatud"},"filetools":{"loadError":"Faili lugemisel esines viga.","networkError":"Faili üleslaadimisel esines võrgu viga.","httpError404":"Faili üleslaadimisel esines HTTP viga (404: faili ei leitud).","httpError403":"Faili üleslaadimisel esines HTTP viga (403: keelatud).","httpError":"Faili üleslaadimisel esines HTTP viga (veakood: %1).","noUrlError":"Ãœleslaadimise URL ei ole määratud.","responseError":"Vigane serveri vastus."},"elementspath":{"eleLabel":"Elementide asukoht","eleTitle":"%1 element"},"contextmenu":{"options":"Kontekstimenüü valikud"},"clipboard":{"copy":"Kopeeri","copyError":"Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).","cut":"Lõika","cutError":"Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).","paste":"Aseta","pasteNotification":"Asetamiseks vajuta %1. Sinu brauser ei toeta asetamist tööriistariba nupu või kontekstimenüü valikuga.","pasteArea":"Asetamise ala","pasteMsg":"Aseta sisu alumisse kasti ja vajuta OK nupule.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Blokktsitaat"},"basicstyles":{"bold":"Paks","italic":"Kursiiv","strike":"Läbijoonitud","subscript":"Allindeks","superscript":"Ãœlaindeks","underline":"Allajoonitud"},"about":{"copy":"Copyright © $1. Kõik õigused kaitstud.","dlgTitle":"CKEditor 4st lähemalt","moreInfo":"Litsentsi andmed leiab meie veebilehelt:"},"editor":"Rikkalik tekstiredaktor","editorPanel":"Rikkaliku tekstiredaktori paneel","common":{"editorHelp":"Abi saamiseks vajuta ALT 0","browseServer":"Serveri sirvimine","url":"URL","protocol":"Protokoll","upload":"Laadi üles","uploadSubmit":"Saada serverisse","image":"Pilt","form":"Vorm","checkbox":"Märkeruut","radio":"Raadionupp","textField":"Tekstilahter","textarea":"Tekstiala","hiddenField":"Varjatud lahter","button":"Nupp","select":"Valiklahter","imageButton":"Piltnupp","notSet":"<määramata>","id":"ID","name":"Nimi","langDir":"Keele suund","langDirLtr":"Vasakult paremale (LTR)","langDirRtl":"Paremalt vasakule (RTL)","langCode":"Keele kood","longDescr":"Pikk kirjeldus URL","cssClass":"Stiilistiku klassid","advisoryTitle":"Soovituslik pealkiri","cssStyle":"Laad","ok":"Olgu","cancel":"Loobu","close":"Sulge","preview":"Eelvaade","resize":"Suuruse muutmiseks lohista","generalTab":"Ãœldine","advancedTab":"Täpsemalt","validateNumberFailed":"See väärtus pole number.","confirmNewPage":"Kõik salvestamata muudatused lähevad kaotsi. Kas oled kindel, et tahad laadida uue lehe?","confirmCancel":"Mõned valikud on muudetud. Kas oled kindel, et tahad dialoogi sulgeda?","options":"Valikud","target":"Sihtkoht","targetNew":"Uus aken (_blank)","targetTop":"Kõige ülemine aken (_top)","targetSelf":"Sama aken (_self)","targetParent":"Vanemaken (_parent)","langDirLTR":"Vasakult paremale (LTR)","langDirRTL":"Paremalt vasakule (RTL)","styles":"Stiili","cssClasses":"Stiililehe klassid","width":"Laius","height":"Kõrgus","align":"Joondus","left":"Vasak","right":"Paremale","center":"Kesk","justify":"Rööpjoondus","alignLeft":"Vasakjoondus","alignRight":"Paremjoondus","alignCenter":"Keskjoondus","alignTop":"Ãœles","alignMiddle":"Keskele","alignBottom":"Alla","alignNone":"Pole","invalidValue":"Vigane väärtus.","invalidHeight":"Kõrgus peab olema number.","invalidWidth":"Laius peab olema number.","invalidLength":"Välja \"%1\" väärtus peab olema positiivne arv korrektse ühikuga (%2) või ilma.","invalidCssLength":"\"%1\" välja jaoks määratud väärtus peab olema positiivne täisarv CSS ühikuga (px, %, in, cm, mm, em, ex, pt või pc) või ilma.","invalidHtmlLength":"\"%1\" välja jaoks määratud väärtus peab olema positiivne täisarv HTML ühikuga (px või %) või ilma.","invalidInlineStyle":"Reasisese stiili määrangud peavad koosnema paarisväärtustest (tuples), mis on semikoolonitega eraldatult järgnevas vormingus: \"nimi : väärtus\".","cssLengthTooltip":"Sisesta väärtus pikslites või number koos sobiva CSS-i ühikuga (px, %, in, cm, mm, em, ex, pt või pc).","unavailable":"%1<span class=\"cke_accessibility\">, pole saadaval</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Tühik","35":"End","36":"Home","46":"Kustuta","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Kiirklahv","optionDefault":"Vaikeväärtus"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/eu.js b/core/assets/vendor/ckeditor/lang/eu.js index c9f7405f7d60..5aa3b680dbaa 100644 --- a/core/assets/vendor/ckeditor/lang/eu.js +++ b/core/assets/vendor/ckeditor/lang/eu.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['eu']={"widget":{"move":"Klikatu eta arrastatu lekuz aldatzeko","label":"%1 widget"},"undo":{"redo":"Berregin","undo":"Desegin"},"toolbar":{"toolbarCollapse":"Tolestu tresna-barra","toolbarExpand":"Zabaldu tresna-barra","toolbarGroups":{"document":"Dokumentua","clipboard":"Arbela/Desegin","editing":"Editatu","forms":"Formularioak","basicstyles":"Oinarrizko estiloak","paragraph":"Paragrafoa","links":"Estekak","insert":"Txertatu","styles":"Estiloak","colors":"Koloreak","tools":"Tresnak"},"toolbars":"Editorearen tresna-barrak"},"table":{"border":"Ertzaren zabalera","caption":"Epigrafea","cell":{"menu":"Gelaxka","insertBefore":"Txertatu gelaxka aurretik","insertAfter":"Txertatu gelaxka ondoren","deleteCell":"Ezabatu gelaxkak","merge":"Batu gelaxkak","mergeRight":"Batu eskuinetara","mergeDown":"Batu behera","splitHorizontal":"Banatu gelaxka horizontalki","splitVertical":"Banatu gelaxka bertikalki","title":"Gelaxkaren propietateak","cellType":"Gelaxka-mota","rowSpan":"Errenkaden hedadura","colSpan":"Zutabeen hedadura","wordWrap":"Itzulbira","hAlign":"Lerrokatze horizontala","vAlign":"Lerrokatze bertikala","alignBaseline":"Oinarri-lerroan","bgColor":"Atzeko planoaren kolorea","borderColor":"Ertzaren kolorea","data":"Data","header":"Goiburua","yes":"Bai","no":"Ez","invalidWidth":"Gelaxkaren zabalera zenbaki bat izan behar da.","invalidHeight":"Gelaxkaren altuera zenbaki bat izan behar da.","invalidRowSpan":"Errenkaden hedadura zenbaki osoa izan behar da.","invalidColSpan":"Zutabeen hedadura zenbaki osoa izan behar da.","chooseColor":"Aukeratu"},"cellPad":"Gelaxken betegarria","cellSpace":"Gelaxka arteko tartea","column":{"menu":"Zutabea","insertBefore":"Txertatu zutabea aurretik","insertAfter":"Txertatu zutabea ondoren","deleteColumn":"Ezabatu zutabeak"},"columns":"Zutabeak","deleteTable":"Ezabatu taula","headers":"Goiburuak","headersBoth":"Biak","headersColumn":"Lehen zutabea","headersNone":"Bat ere ez","headersRow":"Lehen errenkada","heightUnit":"height unit","invalidBorder":"Ertzaren tamaina zenbaki bat izan behar da.","invalidCellPadding":"Gelaxken betegarria zenbaki bat izan behar da.","invalidCellSpacing":"Gelaxka arteko tartea zenbaki bat izan behar da.","invalidCols":"Zutabe kopurua 0 baino handiagoa den zenbakia izan behar da.","invalidHeight":"Taularen altuera zenbaki bat izan behar da.","invalidRows":"Errenkada kopurua 0 baino handiagoa den zenbakia izan behar da.","invalidWidth":"Taularen zabalera zenbaki bat izan behar da.","menu":"Taularen propietateak","row":{"menu":"Errenkada","insertBefore":"Txertatu errenkada aurretik","insertAfter":"Txertatu errenkada ondoren","deleteRow":"Ezabatu errenkadak"},"rows":"Errenkadak","summary":"Laburpena","title":"Taularen propietateak","toolbar":"Taula","widthPc":"ehuneko","widthPx":"pixel","widthUnit":"zabalera unitatea"},"stylescombo":{"label":"Estiloak","panelTitle":"Formatu estiloak","panelTitle1":"Bloke estiloak","panelTitle2":"Lineako estiloak","panelTitle3":"Objektu estiloak"},"specialchar":{"options":"Karaktere berezien aukerak","title":"Hautatu karaktere berezia","toolbar":"Txertatu karaktere berezia"},"sourcedialog":{"toolbar":"Iturburua","title":"Iturburua"},"sourcearea":{"toolbar":"Iturburua"},"showblocks":{"toolbar":"Erakutsi blokeak"},"removeformat":{"toolbar":"Kendu formatua"},"pastetext":{"button":"Itsatsi testu arrunta bezala","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Itsatsi testu arrunta bezala"},"pastefromword":{"confirmCleanup":"Itsatsi nahi duzun testua Word-etik kopiatua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?","error":"Barne-errore bat dela eta ezin izan da itsatsitako testua garbitu","title":"Itsatsi Word-etik","toolbar":"Itsatsi Word-etik"},"notification":{"closed":"Jakinarazpena itxita."},"maximize":{"maximize":"Maximizatu","minimize":"Minimizatu"},"magicline":{"title":"Txertatu paragrafoa hemen"},"list":{"bulletedlist":"Buletdun Zerrenda","numberedlist":"Zenbakidun Zerrenda"},"language":{"button":"Ezarri hizkuntza","remove":"Kendu hizkuntza"},"indent":{"indent":"Handitu koska","outdent":"Txikitu koska"},"image2":{"alt":"Ordezko testua","btnUpload":"Bidali zerbitzarira","captioned":"Argazki oina","captionPlaceholder":"Argazki oina","infoTab":"Irudiaren informazioa","lockRatio":"Blokeatu erlazioa","menu":"Irudiaren propietateak","pathName":"Irudia","pathNameCaption":"Argazki oina","resetSize":"Berrezarri tamaina","resizer":"Klikatu eta arrastatu tamainaz aldatzeko","title":"Irudiaren propietateak","uploadTab":"Kargatu","urlMissing":"Irudiaren iturburuaren URLa falta da.","altMissing":"Ordezko testua falta da."},"horizontalrule":{"toolbar":"Txertatu marra horizontala"},"format":{"label":"Formatua","panelTitle":"Paragrafoaren formatua","tag_address":"Helbidea","tag_div":"Normala (DIV)","tag_h1":"Izenburua 1","tag_h2":"Izenburua 2","tag_h3":"Izenburua 3","tag_h4":"Izenburua 4","tag_h5":"Izenburua 5","tag_h6":"Izenburua 6","tag_p":"Normala","tag_pre":"Formatuduna"},"filetools":{"loadError":"Errorea gertatu da fitxategia irakurtzean.","networkError":"Sareko errorea gertatu da fitxategia kargatzean.","httpError404":"HTTP errorea gertatu da fitxategia kargatzean (404: Fitxategia ez da aurkitu).","httpError403":"HTTP errorea gertatu da fitxategia kargatzean (403: Debekatuta).","httpError":"HTTP errorea gertatu da fitxategia kargatzean (errore-egoera: %1).","noUrlError":"Kargatzeko URLa definitu gabe.","responseError":"Zerbitzariaren erantzun okerra."},"elementspath":{"eleLabel":"Elementuen bidea","eleTitle":"%1 elementua"},"contextmenu":{"options":"Testuinguru-menuaren aukerak"},"clipboard":{"copy":"Kopiatu","copyError":"Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki kopiatzea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+C).","cut":"Ebaki","cutError":"Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki moztea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+X).","paste":"Itsatsi","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Itsasteko area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Aipamen blokea"},"basicstyles":{"bold":"Lodia","italic":"Etzana","strike":"Marratua","subscript":"Azpi-indizea","superscript":"Goi-indizea","underline":"Azpimarratu"},"about":{"copy":"Copyright © $1. Eskubide guztiak erreserbaturik.","dlgTitle":"CKEditor 4ri buruz","moreInfo":"Lizentziari buruzko informazioa gure webgunean:"},"editor":"Testu aberastuaren editorea","editorPanel":"Testu aberastuaren editorearen panela","common":{"editorHelp":"Sakatu ALT 0 laguntza jasotzeko","browseServer":"Arakatu zerbitzaria","url":"URLa","protocol":"Protokoloa","upload":"Kargatu","uploadSubmit":"Bidali zerbitzarira","image":"Irudia","flash":"Flash","form":"Formularioa","checkbox":"Kontrol-laukia","radio":"Aukera-botoia","textField":"Testu-eremua","textarea":"Testu-area","hiddenField":"Ezkutuko eremua","button":"Botoia","select":"Hautespen-eremua","imageButton":"Irudi-botoia","notSet":"<ezarri gabe>","id":"Id","name":"Izena","langDir":"Hizkuntzaren norabidea","langDirLtr":"Ezkerretik eskuinera (LTR)","langDirRtl":"Eskuinetik ezkerrera (RTL)","langCode":"Hizkuntzaren kodea","longDescr":"URLaren deskribapen luzea","cssClass":"Estilo-orriko klaseak","advisoryTitle":"Aholkatutako izenburua","cssStyle":"Estiloa","ok":"Ados","cancel":"Utzi","close":"Itxi","preview":"Aurrebista","resize":"Aldatu tamainaz","generalTab":"Orokorra","advancedTab":"Aurreratua","validateNumberFailed":"Balio hau ez da zenbaki bat.","confirmNewPage":"Eduki honetan gorde gabe dauden aldaketak galduko dira. Ziur zaude orri berri bat kargatu nahi duzula?","confirmCancel":"Aukera batzuk aldatu dituzu. Ziur zaude elkarrizketa-koadroa itxi nahi duzula?","options":"Aukerak","target":"Helburua","targetNew":"Leiho berria (_blank)","targetTop":"Goieneko leihoan (_top)","targetSelf":"Leiho berean (_self)","targetParent":"Leiho gurasoan (_parent)","langDirLTR":"Ezkerretik eskuinera (LTR)","langDirRTL":"Eskuinetik ezkerrera (RTL)","styles":"Estiloa","cssClasses":"Estilo-orriko klaseak","width":"Zabalera","height":"Altuera","align":"Lerrokatzea","left":"Ezkerrean","right":"Eskuinean","center":"Erdian","justify":"Justifikatu","alignLeft":"Lerrokatu ezkerrean","alignRight":"Lerrokatu eskuinean","alignCenter":"Align Center","alignTop":"Goian","alignMiddle":"Erdian","alignBottom":"Behean","alignNone":"Bat ere ez","invalidValue":"Balio desegokia.","invalidHeight":"Altuera zenbaki bat izan behar da.","invalidWidth":"Zabalera zenbaki bat izan behar da.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"\"%1\" eremurako zehaztutako balioak zenbaki positibo bat izan behar du, CSS neurri unitate batekin edo gabe (px, %, in, cm, mm, em, ex, pt edo pc).","invalidHtmlLength":"\"%1\" eremurako zehaztutako balioak zenbaki positibo bat izan behar du, HTML neurri unitate batekin edo gabe (px edo %).","invalidInlineStyle":"Lineako estiloan zehaztutako balioak \"izen : balio\" formatuko tupla bat edo gehiago izan behar dira, komaz bereiztuak.","cssLengthTooltip":"Sartu zenbaki bat edo zenbaki bat baliozko CSS unitate batekin (px, %, in, cm, mm, em, ex, pt, edo pc).","unavailable":"%1<span class=\"cke_accessibility\">, erabilezina</span>","keyboard":{"8":"Atzera tekla","13":"Sartu","16":"Maius","17":"Ktrl","18":"Alt","32":"Zuriunea","35":"Buka","36":"Etxea","46":"Ezabatu","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Komandoa"},"keyboardShortcut":"Laster-tekla","optionDefault":"Lehenetsia"}}; \ No newline at end of file +CKEDITOR.lang['eu']={"widget":{"move":"Klikatu eta arrastatu lekuz aldatzeko","label":"%1 widget"},"undo":{"redo":"Berregin","undo":"Desegin"},"toolbar":{"toolbarCollapse":"Tolestu tresna-barra","toolbarExpand":"Zabaldu tresna-barra","toolbarGroups":{"document":"Dokumentua","clipboard":"Arbela/Desegin","editing":"Editatu","forms":"Formularioak","basicstyles":"Oinarrizko estiloak","paragraph":"Paragrafoa","links":"Estekak","insert":"Txertatu","styles":"Estiloak","colors":"Koloreak","tools":"Tresnak"},"toolbars":"Editorearen tresna-barrak"},"table":{"border":"Ertzaren zabalera","caption":"Epigrafea","cell":{"menu":"Gelaxka","insertBefore":"Txertatu gelaxka aurretik","insertAfter":"Txertatu gelaxka ondoren","deleteCell":"Ezabatu gelaxkak","merge":"Batu gelaxkak","mergeRight":"Batu eskuinetara","mergeDown":"Batu behera","splitHorizontal":"Banatu gelaxka horizontalki","splitVertical":"Banatu gelaxka bertikalki","title":"Gelaxkaren propietateak","cellType":"Gelaxka-mota","rowSpan":"Errenkaden hedadura","colSpan":"Zutabeen hedadura","wordWrap":"Itzulbira","hAlign":"Lerrokatze horizontala","vAlign":"Lerrokatze bertikala","alignBaseline":"Oinarri-lerroan","bgColor":"Atzeko planoaren kolorea","borderColor":"Ertzaren kolorea","data":"Data","header":"Goiburua","yes":"Bai","no":"Ez","invalidWidth":"Gelaxkaren zabalera zenbaki bat izan behar da.","invalidHeight":"Gelaxkaren altuera zenbaki bat izan behar da.","invalidRowSpan":"Errenkaden hedadura zenbaki osoa izan behar da.","invalidColSpan":"Zutabeen hedadura zenbaki osoa izan behar da.","chooseColor":"Aukeratu"},"cellPad":"Gelaxken betegarria","cellSpace":"Gelaxka arteko tartea","column":{"menu":"Zutabea","insertBefore":"Txertatu zutabea aurretik","insertAfter":"Txertatu zutabea ondoren","deleteColumn":"Ezabatu zutabeak"},"columns":"Zutabeak","deleteTable":"Ezabatu taula","headers":"Goiburuak","headersBoth":"Biak","headersColumn":"Lehen zutabea","headersNone":"Bat ere ez","headersRow":"Lehen errenkada","heightUnit":"height unit","invalidBorder":"Ertzaren tamaina zenbaki bat izan behar da.","invalidCellPadding":"Gelaxken betegarria zenbaki bat izan behar da.","invalidCellSpacing":"Gelaxka arteko tartea zenbaki bat izan behar da.","invalidCols":"Zutabe kopurua 0 baino handiagoa den zenbakia izan behar da.","invalidHeight":"Taularen altuera zenbaki bat izan behar da.","invalidRows":"Errenkada kopurua 0 baino handiagoa den zenbakia izan behar da.","invalidWidth":"Taularen zabalera zenbaki bat izan behar da.","menu":"Taularen propietateak","row":{"menu":"Errenkada","insertBefore":"Txertatu errenkada aurretik","insertAfter":"Txertatu errenkada ondoren","deleteRow":"Ezabatu errenkadak"},"rows":"Errenkadak","summary":"Laburpena","title":"Taularen propietateak","toolbar":"Taula","widthPc":"ehuneko","widthPx":"pixel","widthUnit":"zabalera unitatea"},"stylescombo":{"label":"Estiloak","panelTitle":"Formatu estiloak","panelTitle1":"Bloke estiloak","panelTitle2":"Lineako estiloak","panelTitle3":"Objektu estiloak"},"specialchar":{"options":"Karaktere berezien aukerak","title":"Hautatu karaktere berezia","toolbar":"Txertatu karaktere berezia"},"sourcedialog":{"toolbar":"Iturburua","title":"Iturburua"},"sourcearea":{"toolbar":"Iturburua"},"showblocks":{"toolbar":"Erakutsi blokeak"},"removeformat":{"toolbar":"Kendu formatua"},"pastetext":{"button":"Itsatsi testu arrunta bezala","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Itsatsi testu arrunta bezala"},"pastefromword":{"confirmCleanup":"Itsatsi nahi duzun testua Word-etik kopiatua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?","error":"Barne-errore bat dela eta ezin izan da itsatsitako testua garbitu","title":"Itsatsi Word-etik","toolbar":"Itsatsi Word-etik"},"notification":{"closed":"Jakinarazpena itxita."},"maximize":{"maximize":"Maximizatu","minimize":"Minimizatu"},"magicline":{"title":"Txertatu paragrafoa hemen"},"list":{"bulletedlist":"Buletdun Zerrenda","numberedlist":"Zenbakidun Zerrenda"},"language":{"button":"Ezarri hizkuntza","remove":"Kendu hizkuntza"},"indent":{"indent":"Handitu koska","outdent":"Txikitu koska"},"image2":{"alt":"Ordezko testua","btnUpload":"Bidali zerbitzarira","captioned":"Argazki oina","captionPlaceholder":"Argazki oina","infoTab":"Irudiaren informazioa","lockRatio":"Blokeatu erlazioa","menu":"Irudiaren propietateak","pathName":"Irudia","pathNameCaption":"Argazki oina","resetSize":"Berrezarri tamaina","resizer":"Klikatu eta arrastatu tamainaz aldatzeko","title":"Irudiaren propietateak","uploadTab":"Kargatu","urlMissing":"Irudiaren iturburuaren URLa falta da.","altMissing":"Ordezko testua falta da."},"horizontalrule":{"toolbar":"Txertatu marra horizontala"},"format":{"label":"Formatua","panelTitle":"Paragrafoaren formatua","tag_address":"Helbidea","tag_div":"Normala (DIV)","tag_h1":"Izenburua 1","tag_h2":"Izenburua 2","tag_h3":"Izenburua 3","tag_h4":"Izenburua 4","tag_h5":"Izenburua 5","tag_h6":"Izenburua 6","tag_p":"Normala","tag_pre":"Formatuduna"},"filetools":{"loadError":"Errorea gertatu da fitxategia irakurtzean.","networkError":"Sareko errorea gertatu da fitxategia kargatzean.","httpError404":"HTTP errorea gertatu da fitxategia kargatzean (404: Fitxategia ez da aurkitu).","httpError403":"HTTP errorea gertatu da fitxategia kargatzean (403: Debekatuta).","httpError":"HTTP errorea gertatu da fitxategia kargatzean (errore-egoera: %1).","noUrlError":"Kargatzeko URLa definitu gabe.","responseError":"Zerbitzariaren erantzun okerra."},"elementspath":{"eleLabel":"Elementuen bidea","eleTitle":"%1 elementua"},"contextmenu":{"options":"Testuinguru-menuaren aukerak"},"clipboard":{"copy":"Kopiatu","copyError":"Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki kopiatzea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+C).","cut":"Ebaki","cutError":"Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki moztea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+X).","paste":"Itsatsi","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Itsasteko area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Aipamen blokea"},"basicstyles":{"bold":"Lodia","italic":"Etzana","strike":"Marratua","subscript":"Azpi-indizea","superscript":"Goi-indizea","underline":"Azpimarratu"},"about":{"copy":"Copyright © $1. Eskubide guztiak erreserbaturik.","dlgTitle":"CKEditor 4ri buruz","moreInfo":"Lizentziari buruzko informazioa gure webgunean:"},"editor":"Testu aberastuaren editorea","editorPanel":"Testu aberastuaren editorearen panela","common":{"editorHelp":"Sakatu ALT 0 laguntza jasotzeko","browseServer":"Arakatu zerbitzaria","url":"URLa","protocol":"Protokoloa","upload":"Kargatu","uploadSubmit":"Bidali zerbitzarira","image":"Irudia","form":"Formularioa","checkbox":"Kontrol-laukia","radio":"Aukera-botoia","textField":"Testu-eremua","textarea":"Testu-area","hiddenField":"Ezkutuko eremua","button":"Botoia","select":"Hautespen-eremua","imageButton":"Irudi-botoia","notSet":"<ezarri gabe>","id":"Id","name":"Izena","langDir":"Hizkuntzaren norabidea","langDirLtr":"Ezkerretik eskuinera (LTR)","langDirRtl":"Eskuinetik ezkerrera (RTL)","langCode":"Hizkuntzaren kodea","longDescr":"URLaren deskribapen luzea","cssClass":"Estilo-orriko klaseak","advisoryTitle":"Aholkatutako izenburua","cssStyle":"Estiloa","ok":"Ados","cancel":"Utzi","close":"Itxi","preview":"Aurrebista","resize":"Aldatu tamainaz","generalTab":"Orokorra","advancedTab":"Aurreratua","validateNumberFailed":"Balio hau ez da zenbaki bat.","confirmNewPage":"Eduki honetan gorde gabe dauden aldaketak galduko dira. Ziur zaude orri berri bat kargatu nahi duzula?","confirmCancel":"Aukera batzuk aldatu dituzu. Ziur zaude elkarrizketa-koadroa itxi nahi duzula?","options":"Aukerak","target":"Helburua","targetNew":"Leiho berria (_blank)","targetTop":"Goieneko leihoan (_top)","targetSelf":"Leiho berean (_self)","targetParent":"Leiho gurasoan (_parent)","langDirLTR":"Ezkerretik eskuinera (LTR)","langDirRTL":"Eskuinetik ezkerrera (RTL)","styles":"Estiloa","cssClasses":"Estilo-orriko klaseak","width":"Zabalera","height":"Altuera","align":"Lerrokatzea","left":"Ezkerrean","right":"Eskuinean","center":"Erdian","justify":"Justifikatu","alignLeft":"Lerrokatu ezkerrean","alignRight":"Lerrokatu eskuinean","alignCenter":"Align Center","alignTop":"Goian","alignMiddle":"Erdian","alignBottom":"Behean","alignNone":"Bat ere ez","invalidValue":"Balio desegokia.","invalidHeight":"Altuera zenbaki bat izan behar da.","invalidWidth":"Zabalera zenbaki bat izan behar da.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"\"%1\" eremurako zehaztutako balioak zenbaki positibo bat izan behar du, CSS neurri unitate batekin edo gabe (px, %, in, cm, mm, em, ex, pt edo pc).","invalidHtmlLength":"\"%1\" eremurako zehaztutako balioak zenbaki positibo bat izan behar du, HTML neurri unitate batekin edo gabe (px edo %).","invalidInlineStyle":"Lineako estiloan zehaztutako balioak \"izen : balio\" formatuko tupla bat edo gehiago izan behar dira, komaz bereiztuak.","cssLengthTooltip":"Sartu zenbaki bat edo zenbaki bat baliozko CSS unitate batekin (px, %, in, cm, mm, em, ex, pt, edo pc).","unavailable":"%1<span class=\"cke_accessibility\">, erabilezina</span>","keyboard":{"8":"Atzera tekla","13":"Sartu","16":"Maius","17":"Ktrl","18":"Alt","32":"Zuriunea","35":"Buka","36":"Etxea","46":"Ezabatu","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Komandoa"},"keyboardShortcut":"Laster-tekla","optionDefault":"Lehenetsia"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/fa.js b/core/assets/vendor/ckeditor/lang/fa.js index 219e1836a73d..4946683411bc 100644 --- a/core/assets/vendor/ckeditor/lang/fa.js +++ b/core/assets/vendor/ckeditor/lang/fa.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['fa']={"widget":{"move":"کلیک Ùˆ کشیدن برای جابجایی","label":"ابزارک %1"},"undo":{"redo":"بازچیدن","undo":"واچیدن"},"toolbar":{"toolbarCollapse":"بستن نوار ابزار","toolbarExpand":"بازکردن نوار ابزار","toolbarGroups":{"document":"سند","clipboard":"ØاÙظه موقت/برگشت","editing":"در Øال ویرایش","forms":"Ùرم​ها","basicstyles":"سبک‌های پایه","paragraph":"بند","links":"پیوندها","insert":"ورود","styles":"سبک‌ها","colors":"رنگ​ها","tools":"ابزارها"},"toolbars":"نوار ابزارهای ویرایش‌گر"},"table":{"border":"اندازهٴ لبه","caption":"عنوان","cell":{"menu":"سلول","insertBefore":"اÙزودن سلول قبل از","insertAfter":"اÙزودن سلول بعد از","deleteCell":"Øذ٠سلولها","merge":"ادغام سلولها","mergeRight":"ادغام به راست","mergeDown":"ادغام به پایین","splitHorizontal":"جدا کردن اÙÙ‚ÛŒ سلول","splitVertical":"جدا کردن عمودی سلول","title":"ویژگیهای سلول","cellType":"نوع سلول","rowSpan":"Ù…Øدوده ردیÙها","colSpan":"Ù…Øدوده ستونها","wordWrap":"شکستن کلمه","hAlign":"چینش اÙÙ‚ÛŒ","vAlign":"چینش عمودی","alignBaseline":"خط مبنا","bgColor":"رنگ زمینه","borderColor":"رنگ خطوط","data":"اطلاعات","header":"سرنویس","yes":"بله","no":"خیر","invalidWidth":"عرض سلول باید یک عدد باشد.","invalidHeight":"ارتÙاع سلول باید عدد باشد.","invalidRowSpan":"مقدار Ù…Øدوده ردیÙها باید یک عدد باشد.","invalidColSpan":"مقدار Ù…Øدوده ستونها باید یک عدد باشد.","chooseColor":"انتخاب"},"cellPad":"Ùاصلهٴ پرشده در سلول","cellSpace":"Ùاصلهٴ میان سلولها","column":{"menu":"ستون","insertBefore":"اÙزودن ستون قبل از","insertAfter":"اÙزودن ستون بعد از","deleteColumn":"Øذ٠ستونها"},"columns":"ستونها","deleteTable":"پاک کردن جدول","headers":"سرنویسها","headersBoth":"هردو","headersColumn":"اولین ستون","headersNone":"هیچ","headersRow":"اولین ردیÙ","heightUnit":"واØد ارتÙاع","invalidBorder":"مقدار اندازه خطوط باید یک عدد باشد.","invalidCellPadding":"بالشتک سلول باید یک عدد باشد.","invalidCellSpacing":"مقدار Ùاصلهگذاری سلول باید یک عدد باشد.","invalidCols":"تعداد ستونها باید یک عدد بزرگتر از 0 باشد.","invalidHeight":"مقدار ارتÙاع جدول باید یک عدد باشد.","invalidRows":"تعداد ردیÙها باید یک عدد بزرگتر از 0 باشد.","invalidWidth":"مقدار پهنای جدول باید یک عدد باشد.","menu":"ویژگیهای جدول","row":{"menu":"سطر","insertBefore":"اÙزودن سطر قبل از","insertAfter":"اÙزودن سطر بعد از","deleteRow":"Øذ٠سطرها"},"rows":"سطرها","summary":"خلاصه","title":"ویژگیهای جدول","toolbar":"جدول","widthPc":"درصد","widthPx":"پیکسل","widthUnit":"واØد پهنا"},"stylescombo":{"label":"سبک","panelTitle":"سبکهای قالببندی","panelTitle1":"سبکهای بلوک","panelTitle2":"سبکهای درونخطی","panelTitle3":"سبکهای شیء"},"specialchar":{"options":"گزینه‌های نویسه‌های ویژه","title":"گزینش نویسه‌ی ویژه","toolbar":"گنجاندن نویسه‌ی ویژه"},"sourcedialog":{"toolbar":"منبع","title":"منبع"},"sourcearea":{"toolbar":"منبع"},"showblocks":{"toolbar":"نمایش بلوک‌ها"},"removeformat":{"toolbar":"برداشتن Ùرمت"},"pastetext":{"button":"چسباندن به عنوان متن ساده","pasteNotification":"1% را Ùشاردهید تا بچسبد. مرورگر شما از چسباندن با دکمه نوارابزار یا گزینه منوی زمینه پشتیبانی نمیکند","title":"چسباندن به عنوان متن ساده"},"pastefromword":{"confirmCleanup":"متنی Ú©Ù‡ میخواهید بچسبانید به نظر میرسد Ú©Ù‡ از Word Ú©Ù¾ÛŒ شده است. آیا میخواهید قبل از چسباندن آن را پاکسازی کنید؟","error":"به دلیل بروز خطای داخلی امکان پاکسازی اطلاعات بازنشانی شده وجود ندارد.","title":"چسباندن از Word","toolbar":"چسباندن از Word"},"notification":{"closed":"آگاه‌سازی بسته شد"},"maximize":{"maximize":"بیشنه کردن","minimize":"کمینه کردن"},"magicline":{"title":"قرار دادن بند در اینجا"},"list":{"bulletedlist":"Ùهرست نقطه​ای","numberedlist":"Ùهرست شماره​دار"},"language":{"button":"تعیین زبان","remove":"Øذ٠زبان"},"indent":{"indent":"اÙزایش تورÙتگی","outdent":"کاهش تورÙتگی"},"image2":{"alt":"متن جایگزین","btnUpload":"به سرور بÙرست","captioned":"تصویر زیرنویس شده","captionPlaceholder":"عنوان","infoTab":"اطلاعات تصویر","lockRatio":"Ù‚ÙÙ„ کردن نسبت","menu":"ویژگی​های تصویر","pathName":"تصویر","pathNameCaption":"عنوان","resetSize":"بازنشانی اندازه","resizer":"کلیک Ùˆ کشیدن برای تغییر اندازه","title":"ویژگی​های تصویر","uploadTab":"بالاگذاری","urlMissing":"آدرس URL اصلی تصویر یاÙت نشد.","altMissing":"متن جایگزین یاÙت نشد."},"horizontalrule":{"toolbar":"گنجاندن خط اÙÙ‚ÛŒ"},"format":{"label":"قالب","panelTitle":"قالب بند","tag_address":"نشانی","tag_div":"بند","tag_h1":"سرنویس Û±","tag_h2":"سرنویس Û²","tag_h3":"سرنویس Û³","tag_h4":"سرنویس Û´","tag_h5":"سرنویس Ûµ","tag_h6":"سرنویس Û¶","tag_p":"معمولی","tag_pre":"قالب‌دار"},"filetools":{"loadError":"هنگام خواندن Ùایل، خطایی رخ داد.","networkError":"هنگام آپلود Ùایل خطای شبکه رخ داد.","httpError404":"هنگام آپلود Ùایل خطای HTTP رخ داد (404: Ùایل یاÙت نشد).","httpError403":"هنگام آپلود Ùایل، خطای HTTP رخ داد (403: ممنوع).","httpError":"خطای HTTP در آپلود Ùایل رخ داده است (وضعیت خطا: %1).","noUrlError":"آدرس آپلود تعری٠نشده است.","responseError":"پاسخ نادرست سرور."},"elementspath":{"eleLabel":"مسیر عناصر","eleTitle":"%1 عنصر"},"contextmenu":{"options":"گزینه​های منوی زمینه"},"clipboard":{"copy":"رونوشت","copyError":"تنظیمات امنیتی مرورگر شما اجازه نمیدهد Ú©Ù‡ ویرایشگر به طور خودکار عملکردهای Ú©Ù¾ÛŒ کردن را انجام دهد. لطÙا با دکمههای صÙØÙ‡ کلید این کار را انجام دهید (Ctrl/Cmd+C).","cut":"برش","cutError":"تنظیمات امنیتی مرورگر شما اجازه نمیدهد Ú©Ù‡ ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطÙا با دکمههای صÙØÙ‡ کلید این کار را انجام دهید (Ctrl/Cmd+X).","paste":"چسباندن","pasteNotification":"1% را Ùشاردهید تا قرار داده شود. مرورگر شما از قراردهی با دکمه نوارابزار یا گزینه منوی زمینه پشتیبانی نمیکند","pasteArea":"Ù…ØÙ„ چسباندن","pasteMsg":"Ù…Øتوای خود را در ناØیه زیر قرار دهید Ùˆ OK را Ùشار دهید"},"blockquote":{"toolbar":"بلوک نقل قول"},"basicstyles":{"bold":"درشت","italic":"خمیده","strike":"خط‌خورده","subscript":"زیرنویس","superscript":"بالانویس","underline":"زیرخط‌دار"},"about":{"copy":"ØÙ‚ نشر © $1. کلیه Øقوق Ù…ØÙوظ است.","dlgTitle":"درباره CKEditor","moreInfo":"برای کسب اطلاعات مجوز لطÙا به وب سایت ما مراجعه کنید:"},"editor":"ویرایش‌گر متن غنی","editorPanel":"پنل ویرایشگر متن غنی","common":{"editorHelp":"کلید Alt+0 را برای راهنمایی بÙشارید","browseServer":"Ùهرست​نمایی سرور","url":"URL","protocol":"قرارداد","upload":"بالاگذاری","uploadSubmit":"به سرور بÙرست","image":"تصویر","flash":"Ùلش","form":"Ùرم","checkbox":"چک‌باکس","radio":"دکمه‌ی رادیویی","textField":"Ùیلد متنی","textarea":"ناØیهٴ متنی","hiddenField":"Ùیلد پنهان","button":"دکمه","select":"Ùیلد انتخاب چند گزینه​ای","imageButton":"دکمه‌ی تصویری","notSet":"<تعیین‌نشده>","id":"شناسه","name":"نام","langDir":"جهت زبان","langDirLtr":"Ú†Ù¾ به راست","langDirRtl":"راست به Ú†Ù¾","langCode":"کد زبان","longDescr":"URL توصی٠طولانی","cssClass":"کلاس​های شیوه​نامه (Stylesheet)","advisoryTitle":"عنوان Ú©Ù…Ú©ÛŒ","cssStyle":"سبک","ok":"پذیرش","cancel":"انصراÙ","close":"بستن","preview":"پیش‌نمایش","resize":"تغییر اندازه","generalTab":"عمومی","advancedTab":"پیش‌رÙته","validateNumberFailed":"این مقدار یک عدد نیست.","confirmNewPage":"هر تغییر ایجاد شده​ی ذخیره نشده از بین خواهد رÙت. آیا اطمینان دارید Ú©Ù‡ قصد بارگیری صÙØÙ‡ جدیدی را دارید؟","confirmCancel":"برخی از گزینه‌ها تغییر کرده‌اند. آیا واقعا قصد بستن این پنجره را دارید؟","options":"گزینه​ها","target":"مقصد","targetNew":"پنجره جدید","targetTop":"بالاترین پنجره","targetSelf":"همان پنجره","targetParent":"پنجره والد","langDirLTR":"Ú†Ù¾ به راست","langDirRTL":"راست به Ú†Ù¾","styles":"سبک","cssClasses":"کلاس‌های سبک‌نامه","width":"عرض","height":"طول","align":"چینش","left":"Ú†Ù¾","right":"راست","center":"وسط","justify":"بلوک چین","alignLeft":"Ú†Ù¾ چین","alignRight":"راست چین","alignCenter":"مرکز قرار بده","alignTop":"بالا","alignMiddle":"میانه","alignBottom":"پائین","alignNone":"هیچ","invalidValue":"مقدار نامعتبر.","invalidHeight":"ارتÙاع باید یک عدد باشد.","invalidWidth":"عرض باید یک عدد باشد.","invalidLength":"عدد تعیین شده برای Ùیلد \"%1\" باید یک عدد مثبت با یا بدون یک واØد اندازه گیری معتبر (\"%2\") باشد.","invalidCssLength":"عدد تعیین شده برای Ùیلد \"%1\" باید یک عدد مثبت با یا بدون یک واØد اندازه گیری CSS معتبر باشد (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"عدد تعیین شده برای Ùیلد \"%1\" باید یک عدد مثبت با یا بدون یک واØد اندازه گیری HTML معتبر باشد (px or %).","invalidInlineStyle":"عدد تعیین شده برای سبک درون​خطی -Inline Style- باید دارای یک یا چند چندتایی با Ø´Ú©Ù„ÛŒ شبیه \"name : value\" Ú©Ù‡ باید با یک \";\" از هم جدا شوند.","cssLengthTooltip":"یک عدد برای یک مقدار بر Øسب پیکسل Ùˆ یا یک عدد با یک واØد CSS معتبر وارد کنید (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">ØŒ غیر قابل دسترس</span>","keyboard":{"8":"عقبگرد","13":"ورود","16":"تعویض","17":"کنترل","18":"دگرساز","32":"Ùاصله","35":"پایان","36":"خانه","46":"ØØ°Ù","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Ùرمان"},"keyboardShortcut":"میانبر صÙØÙ‡ کلید","optionDefault":"پیش Ùرض"}}; \ No newline at end of file +CKEDITOR.lang['fa']={"widget":{"move":"کلیک Ùˆ کشیدن برای جابجایی","label":"ابزارک %1"},"undo":{"redo":"بازچیدن","undo":"واچیدن"},"toolbar":{"toolbarCollapse":"بستن نوار ابزار","toolbarExpand":"بازکردن نوار ابزار","toolbarGroups":{"document":"سند","clipboard":"ØاÙظه موقت/برگشت","editing":"در Øال ویرایش","forms":"Ùرم​ها","basicstyles":"سبک‌های پایه","paragraph":"بند","links":"پیوندها","insert":"ورود","styles":"سبک‌ها","colors":"رنگ​ها","tools":"ابزارها"},"toolbars":"نوار ابزارهای ویرایش‌گر"},"table":{"border":"اندازهٴ لبه","caption":"عنوان","cell":{"menu":"سلول","insertBefore":"اÙزودن سلول قبل از","insertAfter":"اÙزودن سلول بعد از","deleteCell":"Øذ٠سلولها","merge":"ادغام سلولها","mergeRight":"ادغام به راست","mergeDown":"ادغام به پایین","splitHorizontal":"جدا کردن اÙÙ‚ÛŒ سلول","splitVertical":"جدا کردن عمودی سلول","title":"ویژگیهای سلول","cellType":"نوع سلول","rowSpan":"Ù…Øدوده ردیÙها","colSpan":"Ù…Øدوده ستونها","wordWrap":"شکستن کلمه","hAlign":"چینش اÙÙ‚ÛŒ","vAlign":"چینش عمودی","alignBaseline":"خط مبنا","bgColor":"رنگ زمینه","borderColor":"رنگ خطوط","data":"اطلاعات","header":"سرنویس","yes":"بله","no":"خیر","invalidWidth":"عرض سلول باید یک عدد باشد.","invalidHeight":"ارتÙاع سلول باید عدد باشد.","invalidRowSpan":"مقدار Ù…Øدوده ردیÙها باید یک عدد باشد.","invalidColSpan":"مقدار Ù…Øدوده ستونها باید یک عدد باشد.","chooseColor":"انتخاب"},"cellPad":"Ùاصلهٴ پرشده در سلول","cellSpace":"Ùاصلهٴ میان سلولها","column":{"menu":"ستون","insertBefore":"اÙزودن ستون قبل از","insertAfter":"اÙزودن ستون بعد از","deleteColumn":"Øذ٠ستونها"},"columns":"ستونها","deleteTable":"پاک کردن جدول","headers":"سرنویسها","headersBoth":"هردو","headersColumn":"اولین ستون","headersNone":"هیچ","headersRow":"اولین ردیÙ","heightUnit":"واØد ارتÙاع","invalidBorder":"مقدار اندازه خطوط باید یک عدد باشد.","invalidCellPadding":"بالشتک سلول باید یک عدد باشد.","invalidCellSpacing":"مقدار Ùاصلهگذاری سلول باید یک عدد باشد.","invalidCols":"تعداد ستونها باید یک عدد بزرگتر از 0 باشد.","invalidHeight":"مقدار ارتÙاع جدول باید یک عدد باشد.","invalidRows":"تعداد ردیÙها باید یک عدد بزرگتر از 0 باشد.","invalidWidth":"مقدار پهنای جدول باید یک عدد باشد.","menu":"ویژگیهای جدول","row":{"menu":"سطر","insertBefore":"اÙزودن سطر قبل از","insertAfter":"اÙزودن سطر بعد از","deleteRow":"Øذ٠سطرها"},"rows":"سطرها","summary":"خلاصه","title":"ویژگیهای جدول","toolbar":"جدول","widthPc":"درصد","widthPx":"پیکسل","widthUnit":"واØد پهنا"},"stylescombo":{"label":"سبک","panelTitle":"سبکهای قالببندی","panelTitle1":"سبکهای بلوک","panelTitle2":"سبکهای درونخطی","panelTitle3":"سبکهای شیء"},"specialchar":{"options":"گزینه‌های نویسه‌های ویژه","title":"گزینش نویسه‌ی ویژه","toolbar":"گنجاندن نویسه‌ی ویژه"},"sourcedialog":{"toolbar":"منبع","title":"منبع"},"sourcearea":{"toolbar":"منبع"},"showblocks":{"toolbar":"نمایش بلوک‌ها"},"removeformat":{"toolbar":"برداشتن Ùرمت"},"pastetext":{"button":"چسباندن به عنوان متن ساده","pasteNotification":"1% را Ùشاردهید تا بچسبد. مرورگر شما از چسباندن با دکمه نوارابزار یا گزینه منوی زمینه پشتیبانی نمیکند","title":"چسباندن به عنوان متن ساده"},"pastefromword":{"confirmCleanup":"متنی Ú©Ù‡ میخواهید بچسبانید به نظر میرسد Ú©Ù‡ از Word Ú©Ù¾ÛŒ شده است. آیا میخواهید قبل از چسباندن آن را پاکسازی کنید؟","error":"به دلیل بروز خطای داخلی امکان پاکسازی اطلاعات بازنشانی شده وجود ندارد.","title":"چسباندن از Word","toolbar":"چسباندن از Word"},"notification":{"closed":"آگاه‌سازی بسته شد"},"maximize":{"maximize":"بیشنه کردن","minimize":"کمینه کردن"},"magicline":{"title":"قرار دادن بند در اینجا"},"list":{"bulletedlist":"Ùهرست نقطه​ای","numberedlist":"Ùهرست شماره​دار"},"language":{"button":"تعیین زبان","remove":"Øذ٠زبان"},"indent":{"indent":"اÙزایش تورÙتگی","outdent":"کاهش تورÙتگی"},"image2":{"alt":"متن جایگزین","btnUpload":"به سرور بÙرست","captioned":"تصویر زیرنویس شده","captionPlaceholder":"عنوان","infoTab":"اطلاعات تصویر","lockRatio":"Ù‚ÙÙ„ کردن نسبت","menu":"ویژگی​های تصویر","pathName":"تصویر","pathNameCaption":"عنوان","resetSize":"بازنشانی اندازه","resizer":"کلیک Ùˆ کشیدن برای تغییر اندازه","title":"ویژگی​های تصویر","uploadTab":"بالاگذاری","urlMissing":"آدرس URL اصلی تصویر یاÙت نشد.","altMissing":"متن جایگزین یاÙت نشد."},"horizontalrule":{"toolbar":"گنجاندن خط اÙÙ‚ÛŒ"},"format":{"label":"قالب","panelTitle":"قالب بند","tag_address":"نشانی","tag_div":"بند","tag_h1":"سرنویس Û±","tag_h2":"سرنویس Û²","tag_h3":"سرنویس Û³","tag_h4":"سرنویس Û´","tag_h5":"سرنویس Ûµ","tag_h6":"سرنویس Û¶","tag_p":"معمولی","tag_pre":"قالب‌دار"},"filetools":{"loadError":"هنگام خواندن Ùایل، خطایی رخ داد.","networkError":"هنگام آپلود Ùایل خطای شبکه رخ داد.","httpError404":"هنگام آپلود Ùایل خطای HTTP رخ داد (404: Ùایل یاÙت نشد).","httpError403":"هنگام آپلود Ùایل، خطای HTTP رخ داد (403: ممنوع).","httpError":"خطای HTTP در آپلود Ùایل رخ داده است (وضعیت خطا: %1).","noUrlError":"آدرس آپلود تعری٠نشده است.","responseError":"پاسخ نادرست سرور."},"elementspath":{"eleLabel":"مسیر عناصر","eleTitle":"%1 عنصر"},"contextmenu":{"options":"گزینه​های منوی زمینه"},"clipboard":{"copy":"رونوشت","copyError":"تنظیمات امنیتی مرورگر شما اجازه نمیدهد Ú©Ù‡ ویرایشگر به طور خودکار عملکردهای Ú©Ù¾ÛŒ کردن را انجام دهد. لطÙا با دکمههای صÙØÙ‡ کلید این کار را انجام دهید (Ctrl/Cmd+C).","cut":"برش","cutError":"تنظیمات امنیتی مرورگر شما اجازه نمیدهد Ú©Ù‡ ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطÙا با دکمههای صÙØÙ‡ کلید این کار را انجام دهید (Ctrl/Cmd+X).","paste":"چسباندن","pasteNotification":"1% را Ùشاردهید تا قرار داده شود. مرورگر شما از قراردهی با دکمه نوارابزار یا گزینه منوی زمینه پشتیبانی نمیکند","pasteArea":"Ù…ØÙ„ چسباندن","pasteMsg":"Ù…Øتوای خود را در ناØیه زیر قرار دهید Ùˆ OK را Ùشار دهید","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"بلوک نقل قول"},"basicstyles":{"bold":"درشت","italic":"خمیده","strike":"خط‌خورده","subscript":"زیرنویس","superscript":"بالانویس","underline":"زیرخط‌دار"},"about":{"copy":"ØÙ‚ نشر © $1. کلیه Øقوق Ù…ØÙوظ است.","dlgTitle":"درباره CKEditor","moreInfo":"برای کسب اطلاعات مجوز لطÙا به وب سایت ما مراجعه کنید:"},"editor":"ویرایش‌گر متن غنی","editorPanel":"پنل ویرایشگر متن غنی","common":{"editorHelp":"کلید Alt+0 را برای راهنمایی بÙشارید","browseServer":"Ùهرست​نمایی سرور","url":"URL","protocol":"قرارداد","upload":"بالاگذاری","uploadSubmit":"به سرور بÙرست","image":"تصویر","form":"Ùرم","checkbox":"چک‌باکس","radio":"دکمه‌ی رادیویی","textField":"Ùیلد متنی","textarea":"ناØیهٴ متنی","hiddenField":"Ùیلد پنهان","button":"دکمه","select":"Ùیلد انتخاب چند گزینه​ای","imageButton":"دکمه‌ی تصویری","notSet":"<تعیین‌نشده>","id":"شناسه","name":"نام","langDir":"جهت زبان","langDirLtr":"Ú†Ù¾ به راست","langDirRtl":"راست به Ú†Ù¾","langCode":"کد زبان","longDescr":"URL توصی٠طولانی","cssClass":"کلاس​های شیوه​نامه (Stylesheet)","advisoryTitle":"عنوان Ú©Ù…Ú©ÛŒ","cssStyle":"سبک","ok":"پذیرش","cancel":"انصراÙ","close":"بستن","preview":"پیش‌نمایش","resize":"تغییر اندازه","generalTab":"عمومی","advancedTab":"پیش‌رÙته","validateNumberFailed":"این مقدار یک عدد نیست.","confirmNewPage":"هر تغییر ایجاد شده​ی ذخیره نشده از بین خواهد رÙت. آیا اطمینان دارید Ú©Ù‡ قصد بارگیری صÙØÙ‡ جدیدی را دارید؟","confirmCancel":"برخی از گزینه‌ها تغییر کرده‌اند. آیا واقعا قصد بستن این پنجره را دارید؟","options":"گزینه​ها","target":"مقصد","targetNew":"پنجره جدید","targetTop":"بالاترین پنجره","targetSelf":"همان پنجره","targetParent":"پنجره والد","langDirLTR":"Ú†Ù¾ به راست","langDirRTL":"راست به Ú†Ù¾","styles":"سبک","cssClasses":"کلاس‌های سبک‌نامه","width":"عرض","height":"طول","align":"چینش","left":"Ú†Ù¾","right":"راست","center":"وسط","justify":"بلوک چین","alignLeft":"Ú†Ù¾ چین","alignRight":"راست چین","alignCenter":"مرکز قرار بده","alignTop":"بالا","alignMiddle":"میانه","alignBottom":"پائین","alignNone":"هیچ","invalidValue":"مقدار نامعتبر.","invalidHeight":"ارتÙاع باید یک عدد باشد.","invalidWidth":"عرض باید یک عدد باشد.","invalidLength":"عدد تعیین شده برای Ùیلد \"%1\" باید یک عدد مثبت با یا بدون یک واØد اندازه گیری معتبر (\"%2\") باشد.","invalidCssLength":"عدد تعیین شده برای Ùیلد \"%1\" باید یک عدد مثبت با یا بدون یک واØد اندازه گیری CSS معتبر باشد (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"عدد تعیین شده برای Ùیلد \"%1\" باید یک عدد مثبت با یا بدون یک واØد اندازه گیری HTML معتبر باشد (px or %).","invalidInlineStyle":"عدد تعیین شده برای سبک درون​خطی -Inline Style- باید دارای یک یا چند چندتایی با Ø´Ú©Ù„ÛŒ شبیه \"name : value\" Ú©Ù‡ باید با یک \";\" از هم جدا شوند.","cssLengthTooltip":"یک عدد برای یک مقدار بر Øسب پیکسل Ùˆ یا یک عدد با یک واØد CSS معتبر وارد کنید (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">ØŒ غیر قابل دسترس</span>","keyboard":{"8":"عقبگرد","13":"ورود","16":"تعویض","17":"کنترل","18":"دگرساز","32":"Ùاصله","35":"پایان","36":"خانه","46":"ØØ°Ù","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Ùرمان"},"keyboardShortcut":"میانبر صÙØÙ‡ کلید","optionDefault":"پیش Ùرض"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/fi.js b/core/assets/vendor/ckeditor/lang/fi.js index af5dd73bd17a..edbced7d1695 100644 --- a/core/assets/vendor/ckeditor/lang/fi.js +++ b/core/assets/vendor/ckeditor/lang/fi.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['fi']={"widget":{"move":"Siirrä klikkaamalla ja raahaamalla","label":"%1 widget"},"undo":{"redo":"Toista","undo":"Kumoa"},"toolbar":{"toolbarCollapse":"Kutista työkalupalkki","toolbarExpand":"Laajenna työkalupalkki","toolbarGroups":{"document":"Dokumentti","clipboard":"Leikepöytä/Kumoa","editing":"Muokkaus","forms":"Lomakkeet","basicstyles":"Perustyylit","paragraph":"Kappale","links":"Linkit","insert":"Lisää","styles":"Tyylit","colors":"Värit","tools":"Työkalut"},"toolbars":"Editorin työkalupalkit"},"table":{"border":"Rajan paksuus","caption":"Otsikko","cell":{"menu":"Solu","insertBefore":"Lisää solu eteen","insertAfter":"Lisää solu perään","deleteCell":"Poista solut","merge":"Yhdistä solut","mergeRight":"Yhdistä oikealla olevan kanssa","mergeDown":"Yhdistä alla olevan kanssa","splitHorizontal":"Jaa solu vaakasuunnassa","splitVertical":"Jaa solu pystysuunnassa","title":"Solun ominaisuudet","cellType":"Solun tyyppi","rowSpan":"Rivin jatkuvuus","colSpan":"Solun jatkuvuus","wordWrap":"Rivitys","hAlign":"Horisontaali kohdistus","vAlign":"Vertikaali kohdistus","alignBaseline":"Alas (teksti)","bgColor":"Taustan väri","borderColor":"Reunan väri","data":"Data","header":"Ylätunniste","yes":"Kyllä","no":"Ei","invalidWidth":"Solun leveyden täytyy olla numero.","invalidHeight":"Solun korkeuden täytyy olla numero.","invalidRowSpan":"Rivin jatkuvuuden täytyy olla kokonaisluku.","invalidColSpan":"Solun jatkuvuuden täytyy olla kokonaisluku.","chooseColor":"Valitse"},"cellPad":"Solujen sisennys","cellSpace":"Solujen väli","column":{"menu":"Sarake","insertBefore":"Lisää sarake vasemmalle","insertAfter":"Lisää sarake oikealle","deleteColumn":"Poista sarakkeet"},"columns":"Sarakkeet","deleteTable":"Poista taulu","headers":"Ylätunnisteet","headersBoth":"Molemmat","headersColumn":"Ensimmäinen sarake","headersNone":"Ei","headersRow":"Ensimmäinen rivi","heightUnit":"height unit","invalidBorder":"Reunan koon täytyy olla numero.","invalidCellPadding":"Solujen sisennyksen täytyy olla numero.","invalidCellSpacing":"Solujen välin täytyy olla numero.","invalidCols":"Sarakkeiden määrän täytyy olla suurempi kuin 0.","invalidHeight":"Taulun korkeuden täytyy olla numero.","invalidRows":"Rivien määrän täytyy olla suurempi kuin 0.","invalidWidth":"Taulun leveyden täytyy olla numero.","menu":"Taulun ominaisuudet","row":{"menu":"Rivi","insertBefore":"Lisää rivi yläpuolelle","insertAfter":"Lisää rivi alapuolelle","deleteRow":"Poista rivit"},"rows":"Rivit","summary":"Yhteenveto","title":"Taulun ominaisuudet","toolbar":"Taulu","widthPc":"prosenttia","widthPx":"pikseliä","widthUnit":"leveysyksikkö"},"stylescombo":{"label":"Tyyli","panelTitle":"Muotoilujen tyylit","panelTitle1":"Lohkojen tyylit","panelTitle2":"Rivinsisäiset tyylit","panelTitle3":"Objektien tyylit"},"specialchar":{"options":"Erikoismerkin ominaisuudet","title":"Valitse erikoismerkki","toolbar":"Lisää erikoismerkki"},"sourcedialog":{"toolbar":"Koodi","title":"Koodi"},"sourcearea":{"toolbar":"Koodi"},"showblocks":{"toolbar":"Näytä elementit"},"removeformat":{"toolbar":"Poista muotoilu"},"pastetext":{"button":"Liitä tekstinä","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Liitä tekstinä"},"pastefromword":{"confirmCleanup":"Liittämäsi teksti näyttäisi olevan Word-dokumentista. Haluatko siivota sen ennen liittämistä? (Suositus: Kyllä)","error":"Liitetyn tiedon siivoaminen ei onnistunut sisäisen virheen takia","title":"Liitä Word-dokumentista","toolbar":"Liitä Word-dokumentista"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Suurenna","minimize":"Pienennä"},"magicline":{"title":"Lisää kappale tähän."},"list":{"bulletedlist":"Luettelomerkit","numberedlist":"Numerointi"},"language":{"button":"Aseta kieli","remove":"Poista kieli"},"indent":{"indent":"Suurenna sisennystä","outdent":"Pienennä sisennystä"},"image2":{"alt":"Vaihtoehtoinen teksti","btnUpload":"Lähetä palvelimelle","captioned":"Kuva kuvatekstillä","captionPlaceholder":"Kuvateksti","infoTab":"Kuvan tiedot","lockRatio":"Lukitse suhteet","menu":"Kuvan ominaisuudet","pathName":"kuva","pathNameCaption":"kuvateksti","resetSize":"Alkuperäinen koko","resizer":"Klikkaa ja raahaa muuttaaksesi kokoa","title":"Kuvan ominaisuudet","uploadTab":"Lisää tiedosto","urlMissing":"Kuvan lähdeosoite puuttuu.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Lisää murtoviiva"},"format":{"label":"Muotoilu","panelTitle":"Muotoilu","tag_address":"Osoite","tag_div":"Normaali (DIV)","tag_h1":"Otsikko 1","tag_h2":"Otsikko 2","tag_h3":"Otsikko 3","tag_h4":"Otsikko 4","tag_h5":"Otsikko 5","tag_h6":"Otsikko 6","tag_p":"Normaali","tag_pre":"Muotoiltu"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elementin polku","eleTitle":"%1 elementti"},"contextmenu":{"options":"Pikavalikon ominaisuudet"},"clipboard":{"copy":"Kopioi","copyError":"Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).","cut":"Leikkaa","cutError":"Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).","paste":"Liitä","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Leikealue","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Lainaus"},"basicstyles":{"bold":"Lihavoitu","italic":"Kursivoitu","strike":"Yliviivattu","subscript":"Alaindeksi","superscript":"Yläindeksi","underline":"Alleviivattu"},"about":{"copy":"Copyright © $1. Kaikki oikeuden pidätetään.","dlgTitle":"Tietoa CKEditorista","moreInfo":"Lisenssitiedot löytyvät kotisivuiltamme:"},"editor":"Rikastekstieditori","editorPanel":"Rikastekstieditoripaneeli","common":{"editorHelp":"Paina ALT 0 nähdäksesi ohjeen","browseServer":"Selaa palvelinta","url":"Osoite","protocol":"Protokolla","upload":"Lisää tiedosto","uploadSubmit":"Lähetä palvelimelle","image":"Kuva","flash":"Flash-animaatio","form":"Lomake","checkbox":"Valintaruutu","radio":"Radiopainike","textField":"Tekstikenttä","textarea":"Tekstilaatikko","hiddenField":"Piilokenttä","button":"Painike","select":"Valintakenttä","imageButton":"Kuvapainike","notSet":"<ei asetettu>","id":"Tunniste","name":"Nimi","langDir":"Kielen suunta","langDirLtr":"Vasemmalta oikealle (LTR)","langDirRtl":"Oikealta vasemmalle (RTL)","langCode":"Kielikoodi","longDescr":"Pitkän kuvauksen URL","cssClass":"Tyyliluokat","advisoryTitle":"Avustava otsikko","cssStyle":"Tyyli","ok":"OK","cancel":"Peruuta","close":"Sulje","preview":"Esikatselu","resize":"Raahaa muuttaaksesi kokoa","generalTab":"Yleinen","advancedTab":"Lisäominaisuudet","validateNumberFailed":"Arvon pitää olla numero.","confirmNewPage":"Kaikki tallentamattomat muutokset tähän sisältöön menetetään. Oletko varma, että haluat ladata uuden sivun?","confirmCancel":"Jotkut asetuksista on muuttuneet. Oletko varma, että haluat sulkea valintaikkunan?","options":"Asetukset","target":"Kohde","targetNew":"Uusi ikkuna (_blank)","targetTop":"Päällimmäinen ikkuna (_top)","targetSelf":"Sama ikkuna (_self)","targetParent":"Ylemmän tason ikkuna (_parent)","langDirLTR":"Vasemmalta oikealle (LTR)","langDirRTL":"Oikealta vasemmalle (RTL)","styles":"Tyyli","cssClasses":"Tyylitiedoston luokat","width":"Leveys","height":"Korkeus","align":"Kohdistus","left":"Vasemmalle","right":"Oikealle","center":"Keskelle","justify":"Tasaa molemmat reunat","alignLeft":"Tasaa vasemmat reunat","alignRight":"Tasaa oikeat reunat","alignCenter":"Align Center","alignTop":"Ylös","alignMiddle":"Keskelle","alignBottom":"Alas","alignNone":"Ei asetettu","invalidValue":"Virheellinen arvo.","invalidHeight":"Korkeuden täytyy olla numero.","invalidWidth":"Leveyden täytyy olla numero.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Kentän \"%1\" arvon täytyy olla positiivinen luku CSS mittayksikön (px, %, in, cm, mm, em, ex, pt tai pc) kanssa tai ilman.","invalidHtmlLength":"Kentän \"%1\" arvon täytyy olla positiivinen luku HTML mittayksikön (px tai %) kanssa tai ilman.","invalidInlineStyle":"Tyylille annetun arvon täytyy koostua yhdestä tai useammasta \"nimi : arvo\" parista, jotka ovat eroteltuna toisistaan puolipisteillä.","cssLengthTooltip":"Anna numeroarvo pikseleinä tai numeroarvo CSS mittayksikön kanssa (px, %, in, cm, mm, em, ex, pt, tai pc).","unavailable":"%1<span class=\"cke_accessibility\">, ei saatavissa</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['fi']={"widget":{"move":"Siirrä klikkaamalla ja raahaamalla","label":"%1 widget"},"undo":{"redo":"Toista","undo":"Kumoa"},"toolbar":{"toolbarCollapse":"Kutista työkalupalkki","toolbarExpand":"Laajenna työkalupalkki","toolbarGroups":{"document":"Dokumentti","clipboard":"Leikepöytä/Kumoa","editing":"Muokkaus","forms":"Lomakkeet","basicstyles":"Perustyylit","paragraph":"Kappale","links":"Linkit","insert":"Lisää","styles":"Tyylit","colors":"Värit","tools":"Työkalut"},"toolbars":"Editorin työkalupalkit"},"table":{"border":"Rajan paksuus","caption":"Otsikko","cell":{"menu":"Solu","insertBefore":"Lisää solu eteen","insertAfter":"Lisää solu perään","deleteCell":"Poista solut","merge":"Yhdistä solut","mergeRight":"Yhdistä oikealla olevan kanssa","mergeDown":"Yhdistä alla olevan kanssa","splitHorizontal":"Jaa solu vaakasuunnassa","splitVertical":"Jaa solu pystysuunnassa","title":"Solun ominaisuudet","cellType":"Solun tyyppi","rowSpan":"Rivin jatkuvuus","colSpan":"Solun jatkuvuus","wordWrap":"Rivitys","hAlign":"Horisontaali kohdistus","vAlign":"Vertikaali kohdistus","alignBaseline":"Alas (teksti)","bgColor":"Taustan väri","borderColor":"Reunan väri","data":"Data","header":"Ylätunniste","yes":"Kyllä","no":"Ei","invalidWidth":"Solun leveyden täytyy olla numero.","invalidHeight":"Solun korkeuden täytyy olla numero.","invalidRowSpan":"Rivin jatkuvuuden täytyy olla kokonaisluku.","invalidColSpan":"Solun jatkuvuuden täytyy olla kokonaisluku.","chooseColor":"Valitse"},"cellPad":"Solujen sisennys","cellSpace":"Solujen väli","column":{"menu":"Sarake","insertBefore":"Lisää sarake vasemmalle","insertAfter":"Lisää sarake oikealle","deleteColumn":"Poista sarakkeet"},"columns":"Sarakkeet","deleteTable":"Poista taulu","headers":"Ylätunnisteet","headersBoth":"Molemmat","headersColumn":"Ensimmäinen sarake","headersNone":"Ei","headersRow":"Ensimmäinen rivi","heightUnit":"height unit","invalidBorder":"Reunan koon täytyy olla numero.","invalidCellPadding":"Solujen sisennyksen täytyy olla numero.","invalidCellSpacing":"Solujen välin täytyy olla numero.","invalidCols":"Sarakkeiden määrän täytyy olla suurempi kuin 0.","invalidHeight":"Taulun korkeuden täytyy olla numero.","invalidRows":"Rivien määrän täytyy olla suurempi kuin 0.","invalidWidth":"Taulun leveyden täytyy olla numero.","menu":"Taulun ominaisuudet","row":{"menu":"Rivi","insertBefore":"Lisää rivi yläpuolelle","insertAfter":"Lisää rivi alapuolelle","deleteRow":"Poista rivit"},"rows":"Rivit","summary":"Yhteenveto","title":"Taulun ominaisuudet","toolbar":"Taulu","widthPc":"prosenttia","widthPx":"pikseliä","widthUnit":"leveysyksikkö"},"stylescombo":{"label":"Tyyli","panelTitle":"Muotoilujen tyylit","panelTitle1":"Lohkojen tyylit","panelTitle2":"Rivinsisäiset tyylit","panelTitle3":"Objektien tyylit"},"specialchar":{"options":"Erikoismerkin ominaisuudet","title":"Valitse erikoismerkki","toolbar":"Lisää erikoismerkki"},"sourcedialog":{"toolbar":"Koodi","title":"Koodi"},"sourcearea":{"toolbar":"Koodi"},"showblocks":{"toolbar":"Näytä elementit"},"removeformat":{"toolbar":"Poista muotoilu"},"pastetext":{"button":"Liitä tekstinä","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Liitä tekstinä"},"pastefromword":{"confirmCleanup":"Liittämäsi teksti näyttäisi olevan Word-dokumentista. Haluatko siivota sen ennen liittämistä? (Suositus: Kyllä)","error":"Liitetyn tiedon siivoaminen ei onnistunut sisäisen virheen takia","title":"Liitä Word-dokumentista","toolbar":"Liitä Word-dokumentista"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Suurenna","minimize":"Pienennä"},"magicline":{"title":"Lisää kappale tähän."},"list":{"bulletedlist":"Luettelomerkit","numberedlist":"Numerointi"},"language":{"button":"Aseta kieli","remove":"Poista kieli"},"indent":{"indent":"Suurenna sisennystä","outdent":"Pienennä sisennystä"},"image2":{"alt":"Vaihtoehtoinen teksti","btnUpload":"Lähetä palvelimelle","captioned":"Kuva kuvatekstillä","captionPlaceholder":"Kuvateksti","infoTab":"Kuvan tiedot","lockRatio":"Lukitse suhteet","menu":"Kuvan ominaisuudet","pathName":"kuva","pathNameCaption":"kuvateksti","resetSize":"Alkuperäinen koko","resizer":"Klikkaa ja raahaa muuttaaksesi kokoa","title":"Kuvan ominaisuudet","uploadTab":"Lisää tiedosto","urlMissing":"Kuvan lähdeosoite puuttuu.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Lisää murtoviiva"},"format":{"label":"Muotoilu","panelTitle":"Muotoilu","tag_address":"Osoite","tag_div":"Normaali (DIV)","tag_h1":"Otsikko 1","tag_h2":"Otsikko 2","tag_h3":"Otsikko 3","tag_h4":"Otsikko 4","tag_h5":"Otsikko 5","tag_h6":"Otsikko 6","tag_p":"Normaali","tag_pre":"Muotoiltu"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elementin polku","eleTitle":"%1 elementti"},"contextmenu":{"options":"Pikavalikon ominaisuudet"},"clipboard":{"copy":"Kopioi","copyError":"Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).","cut":"Leikkaa","cutError":"Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).","paste":"Liitä","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Leikealue","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Lainaus"},"basicstyles":{"bold":"Lihavoitu","italic":"Kursivoitu","strike":"Yliviivattu","subscript":"Alaindeksi","superscript":"Yläindeksi","underline":"Alleviivattu"},"about":{"copy":"Copyright © $1. Kaikki oikeuden pidätetään.","dlgTitle":"Tietoa CKEditorista","moreInfo":"Lisenssitiedot löytyvät kotisivuiltamme:"},"editor":"Rikastekstieditori","editorPanel":"Rikastekstieditoripaneeli","common":{"editorHelp":"Paina ALT 0 nähdäksesi ohjeen","browseServer":"Selaa palvelinta","url":"Osoite","protocol":"Protokolla","upload":"Lisää tiedosto","uploadSubmit":"Lähetä palvelimelle","image":"Kuva","form":"Lomake","checkbox":"Valintaruutu","radio":"Radiopainike","textField":"Tekstikenttä","textarea":"Tekstilaatikko","hiddenField":"Piilokenttä","button":"Painike","select":"Valintakenttä","imageButton":"Kuvapainike","notSet":"<ei asetettu>","id":"Tunniste","name":"Nimi","langDir":"Kielen suunta","langDirLtr":"Vasemmalta oikealle (LTR)","langDirRtl":"Oikealta vasemmalle (RTL)","langCode":"Kielikoodi","longDescr":"Pitkän kuvauksen URL","cssClass":"Tyyliluokat","advisoryTitle":"Avustava otsikko","cssStyle":"Tyyli","ok":"OK","cancel":"Peruuta","close":"Sulje","preview":"Esikatselu","resize":"Raahaa muuttaaksesi kokoa","generalTab":"Yleinen","advancedTab":"Lisäominaisuudet","validateNumberFailed":"Arvon pitää olla numero.","confirmNewPage":"Kaikki tallentamattomat muutokset tähän sisältöön menetetään. Oletko varma, että haluat ladata uuden sivun?","confirmCancel":"Jotkut asetuksista on muuttuneet. Oletko varma, että haluat sulkea valintaikkunan?","options":"Asetukset","target":"Kohde","targetNew":"Uusi ikkuna (_blank)","targetTop":"Päällimmäinen ikkuna (_top)","targetSelf":"Sama ikkuna (_self)","targetParent":"Ylemmän tason ikkuna (_parent)","langDirLTR":"Vasemmalta oikealle (LTR)","langDirRTL":"Oikealta vasemmalle (RTL)","styles":"Tyyli","cssClasses":"Tyylitiedoston luokat","width":"Leveys","height":"Korkeus","align":"Kohdistus","left":"Vasemmalle","right":"Oikealle","center":"Keskelle","justify":"Tasaa molemmat reunat","alignLeft":"Tasaa vasemmat reunat","alignRight":"Tasaa oikeat reunat","alignCenter":"Align Center","alignTop":"Ylös","alignMiddle":"Keskelle","alignBottom":"Alas","alignNone":"Ei asetettu","invalidValue":"Virheellinen arvo.","invalidHeight":"Korkeuden täytyy olla numero.","invalidWidth":"Leveyden täytyy olla numero.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Kentän \"%1\" arvon täytyy olla positiivinen luku CSS mittayksikön (px, %, in, cm, mm, em, ex, pt tai pc) kanssa tai ilman.","invalidHtmlLength":"Kentän \"%1\" arvon täytyy olla positiivinen luku HTML mittayksikön (px tai %) kanssa tai ilman.","invalidInlineStyle":"Tyylille annetun arvon täytyy koostua yhdestä tai useammasta \"nimi : arvo\" parista, jotka ovat eroteltuna toisistaan puolipisteillä.","cssLengthTooltip":"Anna numeroarvo pikseleinä tai numeroarvo CSS mittayksikön kanssa (px, %, in, cm, mm, em, ex, pt, tai pc).","unavailable":"%1<span class=\"cke_accessibility\">, ei saatavissa</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/fo.js b/core/assets/vendor/ckeditor/lang/fo.js index 2d32b25a12c4..2a1f070293b7 100644 --- a/core/assets/vendor/ckeditor/lang/fo.js +++ b/core/assets/vendor/ckeditor/lang/fo.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['fo']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Vend aftur","undo":"Angra"},"toolbar":{"toolbarCollapse":"Lat Toolbar aftur","toolbarExpand":"VÃs Toolbar","toolbarGroups":{"document":"Dokument","clipboard":"Clipboard/Undo","editing":"Editering","forms":"Formar","basicstyles":"Grundleggjandi Styles","paragraph":"Reglubrot","links":"Leinkjur","insert":"Set inn","styles":"Styles","colors":"Litir","tools":"Tól"},"toolbars":"Editor toolbars"},"table":{"border":"Bordabreidd","caption":"Tabellfrágreiðing","cell":{"menu":"Meski","insertBefore":"Set meska inn áðrenn","insertAfter":"Set meska inn aftaná","deleteCell":"Strika meskar","merge":"Flætta meskar","mergeRight":"Flætta meskar til høgru","mergeDown":"Flætta saman","splitHorizontal":"Kloyv meska vatnrætt","splitVertical":"Kloyv meska loddrætt","title":"Mesku eginleikar","cellType":"Mesku slag","rowSpan":"Ræð spenni","colSpan":"Kolonnu spenni","wordWrap":"Orðkloyving","hAlign":"Horisontal plasering","vAlign":"Loddrøtt plasering","alignBaseline":"Basislinja","bgColor":"Bakgrundslitur","borderColor":"Bordalitur","data":"Data","header":"Header","yes":"Ja","no":"Nei","invalidWidth":"Meskubreidd má vera eitt tal.","invalidHeight":"Meskuhædd má vera eitt tal.","invalidRowSpan":"Raðspennið má vera eitt heiltal.","invalidColSpan":"Kolonnuspennið má vera eitt heiltal.","chooseColor":"Vel"},"cellPad":"Meskubreddi","cellSpace":"Fjarstøða millum meskar","column":{"menu":"Kolonna","insertBefore":"Set kolonnu inn áðrenn","insertAfter":"Set kolonnu inn aftaná","deleteColumn":"Strika kolonnur"},"columns":"Kolonnur","deleteTable":"Strika tabell","headers":"Yvirskriftir","headersBoth":"Báðir","headersColumn":"Fyrsta kolonna","headersNone":"Eingin","headersRow":"Fyrsta rað","heightUnit":"height unit","invalidBorder":"Borda-stødd má vera eitt tal.","invalidCellPadding":"Cell padding má vera eitt tal.","invalidCellSpacing":"Cell spacing má vera eitt tal.","invalidCols":"Talið av kolonnum má vera eitt tal størri enn 0.","invalidHeight":"Tabell-hædd má vera eitt tal.","invalidRows":"Talið av røðum má vera eitt tal størri enn 0.","invalidWidth":"Tabell-breidd má vera eitt tal.","menu":"Eginleikar fyri tabell","row":{"menu":"Rað","insertBefore":"Set rað inn áðrenn","insertAfter":"Set rað inn aftaná","deleteRow":"Strika røðir"},"rows":"Røðir","summary":"Samandráttur","title":"Eginleikar fyri tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"pixels","widthUnit":"breiddar unit"},"stylescombo":{"label":"Typografi","panelTitle":"Formatterings stÃlir","panelTitle1":"Blokk stÃlir","panelTitle2":"Inline stÃlir","panelTitle3":"Object stÃlir"},"specialchar":{"options":"Møguleikar við serteknum","title":"Vel sertekn","toolbar":"Set inn sertekn"},"sourcedialog":{"toolbar":"Kelda","title":"Kelda"},"sourcearea":{"toolbar":"Kelda"},"showblocks":{"toolbar":"VÃs blokkar"},"removeformat":{"toolbar":"Strika sniðgeving"},"pastetext":{"button":"Innrita som reinan tekst","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Innrita som reinan tekst"},"pastefromword":{"confirmCleanup":"Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?","error":"Tað eydnaðist ikki at reinsa tekstin vegna ein internan feil","title":"Innrita frá Word","toolbar":"Innrita frá Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimera","minimize":"Minimera"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Punktmerktur listi","numberedlist":"Talmerktur listi"},"language":{"button":"Velja tungumál","remove":"Remove language"},"indent":{"indent":"Økja reglubrotarinntriv","outdent":"Minka reglubrotarinntriv"},"image2":{"alt":"Alternativur tekstur","btnUpload":"Send til ambætaran","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Myndaupplýsingar","lockRatio":"Læs lutfallið","menu":"Myndaeginleikar","pathName":"image","pathNameCaption":"caption","resetSize":"Upprunastødd","resizer":"Click and drag to resize","title":"Myndaeginleikar","uploadTab":"Send til ambætaran","urlMissing":"URL til mynd manglar.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Ger vatnrætta linju"},"format":{"label":"Skriftsnið","panelTitle":"Skriftsnið","tag_address":"Adressa","tag_div":"Vanligt (DIV)","tag_h1":"Yvirskrift 1","tag_h2":"Yvirskrift 2","tag_h3":"Yvirskrift 3","tag_h4":"Yvirskrift 4","tag_h5":"Yvirskrift 5","tag_h6":"Yvirskrift 6","tag_p":"Vanligt","tag_pre":"Sniðgivið"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Slóð til elementir","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Avrita","copyError":"Trygdaruppseting alnótskagans forðar tekstviðgeranum à at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).","cut":"Kvett","cutError":"Trygdaruppseting alnótskagans forðar tekstviðgeranum à at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).","paste":"Innrita","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Avritingarumráði","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Blockquote"},"basicstyles":{"bold":"Feit skrift","italic":"Skráskrift","strike":"Yvirstrikað","subscript":"Lækkað skrift","superscript":"Hækkað skrift","underline":"Undirstrikað"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"Um CKEditor 4","moreInfo":"Licens upplýsingar finnast á heimasÃðu okkara:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Trýst ALT og 0 fyri vegleiðing","browseServer":"Ambætarakagi","url":"URL","protocol":"Protokoll","upload":"Send til ambætaran","uploadSubmit":"Send til ambætaran","image":"Myndir","flash":"Flash","form":"Formur","checkbox":"Flugubein","radio":"Radioknøttur","textField":"Tekstteigur","textarea":"Tekstumráði","hiddenField":"Fjaldur teigur","button":"Knøttur","select":"Valskrá","imageButton":"Myndaknøttur","notSet":"<ikki sett>","id":"Id","name":"Navn","langDir":"Tekstkós","langDirLtr":"Frá vinstru til høgru (LTR)","langDirRtl":"Frá høgru til vinstru (RTL)","langCode":"Málkoda","longDescr":"VÃðkað URL frágreiðing","cssClass":"Typografi klassar","advisoryTitle":"Vegleiðandi heiti","cssStyle":"Typografi","ok":"Góðkent","cancel":"Avlýs","close":"Lat aftur","preview":"Frumsýn","resize":"Drag fyri at broyta stødd","generalTab":"Generelt","advancedTab":"Fjølbroytt","validateNumberFailed":"Hetta er ikki eitt tal.","confirmNewPage":"Allar ikki goymdar broytingar à hesum innihaldið hvørva. Skal nýggj sÃða lesast kortini?","confirmCancel":"Nakrir valmøguleikar eru broyttir. Ert tú vÃsur Ã, at dialogurin skal latast aftur?","options":"Options","target":"Target","targetNew":"Nýtt vindeyga (_blank)","targetTop":"Vindeyga ovast (_top)","targetSelf":"Sama vindeyga (_self)","targetParent":"Upphavligt vindeyga (_parent)","langDirLTR":"Frá vinstru til høgru (LTR)","langDirRTL":"Frá høgru til vinstru (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Breidd","height":"Hædd","align":"Justering","left":"Vinstra","right":"Høgra","center":"Miðsett","justify":"Javnir tekstkantar","alignLeft":"Vinstrasett","alignRight":"Høgrasett","alignCenter":"Align Center","alignTop":"Ovast","alignMiddle":"Miðja","alignBottom":"Botnur","alignNone":"Eingin","invalidValue":"Invalid value.","invalidHeight":"Hædd má vera eitt tal.","invalidWidth":"Breidd má vera eitt tal.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Virðið sett à \"%1\" feltið má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px, %, in, cm, mm, em, ex, pt, ella pc).","invalidHtmlLength":"Virðið sett à \"%1\" feltiðield má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px ella %).","invalidInlineStyle":"Virði specifiserað fyri inline style má hava eitt ella fleiri pør (tuples) skrivað sum \"name : value\", hvørt parið sundurskilt við semi-colon.","cssLengthTooltip":"Skriva eitt tal fyri eitt virði à pixels ella eitt tal við gyldigum CSS eind (px, %, in, cm, mm, em, ex, pt, ella pc).","unavailable":"%1<span class=\"cke_accessibility\">, ikki tøkt</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['fo']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Vend aftur","undo":"Angra"},"toolbar":{"toolbarCollapse":"Lat Toolbar aftur","toolbarExpand":"VÃs Toolbar","toolbarGroups":{"document":"Dokument","clipboard":"Clipboard/Undo","editing":"Editering","forms":"Formar","basicstyles":"Grundleggjandi Styles","paragraph":"Reglubrot","links":"Leinkjur","insert":"Set inn","styles":"Styles","colors":"Litir","tools":"Tól"},"toolbars":"Editor toolbars"},"table":{"border":"Bordabreidd","caption":"Tabellfrágreiðing","cell":{"menu":"Meski","insertBefore":"Set meska inn áðrenn","insertAfter":"Set meska inn aftaná","deleteCell":"Strika meskar","merge":"Flætta meskar","mergeRight":"Flætta meskar til høgru","mergeDown":"Flætta saman","splitHorizontal":"Kloyv meska vatnrætt","splitVertical":"Kloyv meska loddrætt","title":"Mesku eginleikar","cellType":"Mesku slag","rowSpan":"Ræð spenni","colSpan":"Kolonnu spenni","wordWrap":"Orðkloyving","hAlign":"Horisontal plasering","vAlign":"Loddrøtt plasering","alignBaseline":"Basislinja","bgColor":"Bakgrundslitur","borderColor":"Bordalitur","data":"Data","header":"Header","yes":"Ja","no":"Nei","invalidWidth":"Meskubreidd má vera eitt tal.","invalidHeight":"Meskuhædd má vera eitt tal.","invalidRowSpan":"Raðspennið má vera eitt heiltal.","invalidColSpan":"Kolonnuspennið má vera eitt heiltal.","chooseColor":"Vel"},"cellPad":"Meskubreddi","cellSpace":"Fjarstøða millum meskar","column":{"menu":"Kolonna","insertBefore":"Set kolonnu inn áðrenn","insertAfter":"Set kolonnu inn aftaná","deleteColumn":"Strika kolonnur"},"columns":"Kolonnur","deleteTable":"Strika tabell","headers":"Yvirskriftir","headersBoth":"Báðir","headersColumn":"Fyrsta kolonna","headersNone":"Eingin","headersRow":"Fyrsta rað","heightUnit":"height unit","invalidBorder":"Borda-stødd má vera eitt tal.","invalidCellPadding":"Cell padding má vera eitt tal.","invalidCellSpacing":"Cell spacing má vera eitt tal.","invalidCols":"Talið av kolonnum má vera eitt tal størri enn 0.","invalidHeight":"Tabell-hædd má vera eitt tal.","invalidRows":"Talið av røðum má vera eitt tal størri enn 0.","invalidWidth":"Tabell-breidd má vera eitt tal.","menu":"Eginleikar fyri tabell","row":{"menu":"Rað","insertBefore":"Set rað inn áðrenn","insertAfter":"Set rað inn aftaná","deleteRow":"Strika røðir"},"rows":"Røðir","summary":"Samandráttur","title":"Eginleikar fyri tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"pixels","widthUnit":"breiddar unit"},"stylescombo":{"label":"Typografi","panelTitle":"Formatterings stÃlir","panelTitle1":"Blokk stÃlir","panelTitle2":"Inline stÃlir","panelTitle3":"Object stÃlir"},"specialchar":{"options":"Møguleikar við serteknum","title":"Vel sertekn","toolbar":"Set inn sertekn"},"sourcedialog":{"toolbar":"Kelda","title":"Kelda"},"sourcearea":{"toolbar":"Kelda"},"showblocks":{"toolbar":"VÃs blokkar"},"removeformat":{"toolbar":"Strika sniðgeving"},"pastetext":{"button":"Innrita som reinan tekst","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Innrita som reinan tekst"},"pastefromword":{"confirmCleanup":"Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?","error":"Tað eydnaðist ikki at reinsa tekstin vegna ein internan feil","title":"Innrita frá Word","toolbar":"Innrita frá Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimera","minimize":"Minimera"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Punktmerktur listi","numberedlist":"Talmerktur listi"},"language":{"button":"Velja tungumál","remove":"Remove language"},"indent":{"indent":"Økja reglubrotarinntriv","outdent":"Minka reglubrotarinntriv"},"image2":{"alt":"Alternativur tekstur","btnUpload":"Send til ambætaran","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Myndaupplýsingar","lockRatio":"Læs lutfallið","menu":"Myndaeginleikar","pathName":"image","pathNameCaption":"caption","resetSize":"Upprunastødd","resizer":"Click and drag to resize","title":"Myndaeginleikar","uploadTab":"Send til ambætaran","urlMissing":"URL til mynd manglar.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Ger vatnrætta linju"},"format":{"label":"Skriftsnið","panelTitle":"Skriftsnið","tag_address":"Adressa","tag_div":"Vanligt (DIV)","tag_h1":"Yvirskrift 1","tag_h2":"Yvirskrift 2","tag_h3":"Yvirskrift 3","tag_h4":"Yvirskrift 4","tag_h5":"Yvirskrift 5","tag_h6":"Yvirskrift 6","tag_p":"Vanligt","tag_pre":"Sniðgivið"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Slóð til elementir","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Avrita","copyError":"Trygdaruppseting alnótskagans forðar tekstviðgeranum à at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).","cut":"Kvett","cutError":"Trygdaruppseting alnótskagans forðar tekstviðgeranum à at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).","paste":"Innrita","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Avritingarumráði","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Blockquote"},"basicstyles":{"bold":"Feit skrift","italic":"Skráskrift","strike":"Yvirstrikað","subscript":"Lækkað skrift","superscript":"Hækkað skrift","underline":"Undirstrikað"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"Um CKEditor 4","moreInfo":"Licens upplýsingar finnast á heimasÃðu okkara:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Trýst ALT og 0 fyri vegleiðing","browseServer":"Ambætarakagi","url":"URL","protocol":"Protokoll","upload":"Send til ambætaran","uploadSubmit":"Send til ambætaran","image":"Myndir","form":"Formur","checkbox":"Flugubein","radio":"Radioknøttur","textField":"Tekstteigur","textarea":"Tekstumráði","hiddenField":"Fjaldur teigur","button":"Knøttur","select":"Valskrá","imageButton":"Myndaknøttur","notSet":"<ikki sett>","id":"Id","name":"Navn","langDir":"Tekstkós","langDirLtr":"Frá vinstru til høgru (LTR)","langDirRtl":"Frá høgru til vinstru (RTL)","langCode":"Málkoda","longDescr":"VÃðkað URL frágreiðing","cssClass":"Typografi klassar","advisoryTitle":"Vegleiðandi heiti","cssStyle":"Typografi","ok":"Góðkent","cancel":"Avlýs","close":"Lat aftur","preview":"Frumsýn","resize":"Drag fyri at broyta stødd","generalTab":"Generelt","advancedTab":"Fjølbroytt","validateNumberFailed":"Hetta er ikki eitt tal.","confirmNewPage":"Allar ikki goymdar broytingar à hesum innihaldið hvørva. Skal nýggj sÃða lesast kortini?","confirmCancel":"Nakrir valmøguleikar eru broyttir. Ert tú vÃsur Ã, at dialogurin skal latast aftur?","options":"Options","target":"Target","targetNew":"Nýtt vindeyga (_blank)","targetTop":"Vindeyga ovast (_top)","targetSelf":"Sama vindeyga (_self)","targetParent":"Upphavligt vindeyga (_parent)","langDirLTR":"Frá vinstru til høgru (LTR)","langDirRTL":"Frá høgru til vinstru (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Breidd","height":"Hædd","align":"Justering","left":"Vinstra","right":"Høgra","center":"Miðsett","justify":"Javnir tekstkantar","alignLeft":"Vinstrasett","alignRight":"Høgrasett","alignCenter":"Align Center","alignTop":"Ovast","alignMiddle":"Miðja","alignBottom":"Botnur","alignNone":"Eingin","invalidValue":"Invalid value.","invalidHeight":"Hædd má vera eitt tal.","invalidWidth":"Breidd má vera eitt tal.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Virðið sett à \"%1\" feltið má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px, %, in, cm, mm, em, ex, pt, ella pc).","invalidHtmlLength":"Virðið sett à \"%1\" feltiðield má vera eitt positivt tal, við ella uttan gyldugum CSS mátieind (px ella %).","invalidInlineStyle":"Virði specifiserað fyri inline style má hava eitt ella fleiri pør (tuples) skrivað sum \"name : value\", hvørt parið sundurskilt við semi-colon.","cssLengthTooltip":"Skriva eitt tal fyri eitt virði à pixels ella eitt tal við gyldigum CSS eind (px, %, in, cm, mm, em, ex, pt, ella pc).","unavailable":"%1<span class=\"cke_accessibility\">, ikki tøkt</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/fr-ca.js b/core/assets/vendor/ckeditor/lang/fr-ca.js index b69bf94ba004..f0e44dddad41 100644 --- a/core/assets/vendor/ckeditor/lang/fr-ca.js +++ b/core/assets/vendor/ckeditor/lang/fr-ca.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['fr-ca']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Refaire","undo":"Annuler"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse papier/Annuler","editing":"Édition","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barre d'outils de l'éditeur"},"table":{"border":"Taille de la bordure","caption":"Titre","cell":{"menu":"Cellule","insertBefore":"Insérer une cellule avant","insertAfter":"Insérer une cellule après","deleteCell":"Supprimer des cellules","merge":"Fusionner les cellules","mergeRight":"Fusionner à droite","mergeDown":"Fusionner en bas","splitHorizontal":"Scinder la cellule horizontalement","splitVertical":"Scinder la cellule verticalement","title":"Propriétés de la cellule","cellType":"Type de cellule","rowSpan":"Fusion de lignes","colSpan":"Fusion de colonnes","wordWrap":"Retour à la ligne","hAlign":"Alignement horizontal","vAlign":"Alignement vertical","alignBaseline":"Bas du texte","bgColor":"Couleur d'arrière plan","borderColor":"Couleur de bordure","data":"Données","header":"En-tête","yes":"Oui","no":"Non","invalidWidth":"La largeur de cellule doit être un nombre.","invalidHeight":"La hauteur de cellule doit être un nombre.","invalidRowSpan":"La fusion de lignes doit être un nombre entier.","invalidColSpan":"La fusion de colonnes doit être un nombre entier.","chooseColor":"Sélectionner"},"cellPad":"Marge interne des cellules","cellSpace":"Espacement des cellules","column":{"menu":"Colonne","insertBefore":"Insérer une colonne avant","insertAfter":"Insérer une colonne après","deleteColumn":"Supprimer des colonnes"},"columns":"Colonnes","deleteTable":"Supprimer le tableau","headers":"En-têtes","headersBoth":"Les deux.","headersColumn":"Première colonne","headersNone":"Aucun","headersRow":"Première ligne","heightUnit":"height unit","invalidBorder":"La taille de bordure doit être un nombre.","invalidCellPadding":"La marge interne des cellules doit être un nombre positif.","invalidCellSpacing":"L'espacement des cellules doit être un nombre positif.","invalidCols":"Le nombre de colonnes doit être supérieur à 0.","invalidHeight":"La hauteur du tableau doit être un nombre.","invalidRows":"Le nombre de lignes doit être supérieur à 0.","invalidWidth":"La largeur du tableau doit être un nombre.","menu":"Propriétés du tableau","row":{"menu":"Ligne","insertBefore":"Insérer une ligne avant","insertAfter":"Insérer une ligne après","deleteRow":"Supprimer des lignes"},"rows":"Lignes","summary":"Résumé","title":"Propriétés du tableau","toolbar":"Tableau","widthPc":"pourcentage","widthPx":"pixels","widthUnit":"unité de largeur"},"stylescombo":{"label":"Styles","panelTitle":"Styles de formattage","panelTitle1":"Styles de block","panelTitle2":"Styles en ligne","panelTitle3":"Styles d'objet"},"specialchar":{"options":"Option des caractères spéciaux","title":"Sélectionner un caractère spécial","toolbar":"Insérer un caractère spécial"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Afficher les blocs"},"removeformat":{"toolbar":"Supprimer le formatage"},"pastetext":{"button":"Coller comme texte","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Coller comme texte"},"pastefromword":{"confirmCleanup":"Le texte que vous tentez de coller semble provenir de Word. Désirez vous le nettoyer avant de coller?","error":"Il n'a pas été possible de nettoyer les données collées du à une erreur interne","title":"Coller de Word","toolbar":"Coller de Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximizer","minimize":"Minimizer"},"magicline":{"title":"Insérer le paragraphe ici"},"list":{"bulletedlist":"Liste à puces","numberedlist":"Liste numérotée"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Augmenter le retrait","outdent":"Diminuer le retrait"},"image2":{"alt":"Texte alternatif","btnUpload":"Envoyer sur le serveur","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Informations sur l'image2","lockRatio":"Verrouiller les proportions","menu":"Propriétés de l'image2","pathName":"image","pathNameCaption":"caption","resetSize":"Taille originale","resizer":"Click and drag to resize","title":"Propriétés de l'image2","uploadTab":"Téléverser","urlMissing":"L'URL de la source de l'image est manquant.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insérer un séparateur horizontale"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"En-tête 1","tag_h2":"En-tête 2","tag_h3":"En-tête 3","tag_h4":"En-tête 4","tag_h5":"En-tête 5","tag_h6":"En-tête 6","tag_p":"Normal","tag_pre":"Formaté"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Chemin d'éléments","eleTitle":"element %1"},"contextmenu":{"options":"Options du menu contextuel"},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).","paste":"Coller","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Coller la zone","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Citation"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"about":{"copy":"Copyright © $1. Tous droits réservés.","dlgTitle":"À propos de CKEditor 4","moreInfo":"Pour les informations de licence, consulter notre site internet:"},"editor":"Éditeur de texte enrichi","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Appuyez sur 0 pour de l'aide","browseServer":"Parcourir le serveur","url":"URL","protocol":"Protocole","upload":"Envoyer","uploadSubmit":"Envoyer au serveur","image":"Image","flash":"Animation Flash","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ caché","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton image","notSet":"<Par défaut>","id":"Id","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"De gauche à droite (LTR)","langDirRtl":"De droite à gauche (RTL)","langCode":"Code langue","longDescr":"URL de description longue","cssClass":"Classes CSS","advisoryTitle":"Titre","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Redimensionner","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous certain de vouloir charger une nouvelle page?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous certain de vouloir fermer?","options":"Options","target":"Cible","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieur (_top)","targetSelf":"Cette fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"De gauche à droite (LTR)","langDirRTL":"De droite à gauche (RTL)","styles":"Style","cssClasses":"Classe CSS","width":"Largeur","height":"Hauteur","align":"Alignement","left":"Gauche","right":"Droite","center":"Centré","justify":"Justifié","alignLeft":"Aligner à gauche","alignRight":"Aligner à Droite","alignCenter":"Align Center","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","alignNone":"None","invalidValue":"Valeur invalide.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style intégré doit être composée d'un ou plusieurs couples de valeur au format \"nom : valeur\", separés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour la valeur en pixel ou un nombre avec une unité CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['fr-ca']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Refaire","undo":"Annuler"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse papier/Annuler","editing":"Édition","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barre d'outils de l'éditeur"},"table":{"border":"Taille de la bordure","caption":"Titre","cell":{"menu":"Cellule","insertBefore":"Insérer une cellule avant","insertAfter":"Insérer une cellule après","deleteCell":"Supprimer des cellules","merge":"Fusionner les cellules","mergeRight":"Fusionner à droite","mergeDown":"Fusionner en bas","splitHorizontal":"Scinder la cellule horizontalement","splitVertical":"Scinder la cellule verticalement","title":"Propriétés de la cellule","cellType":"Type de cellule","rowSpan":"Fusion de lignes","colSpan":"Fusion de colonnes","wordWrap":"Retour à la ligne","hAlign":"Alignement horizontal","vAlign":"Alignement vertical","alignBaseline":"Bas du texte","bgColor":"Couleur d'arrière plan","borderColor":"Couleur de bordure","data":"Données","header":"En-tête","yes":"Oui","no":"Non","invalidWidth":"La largeur de cellule doit être un nombre.","invalidHeight":"La hauteur de cellule doit être un nombre.","invalidRowSpan":"La fusion de lignes doit être un nombre entier.","invalidColSpan":"La fusion de colonnes doit être un nombre entier.","chooseColor":"Sélectionner"},"cellPad":"Marge interne des cellules","cellSpace":"Espacement des cellules","column":{"menu":"Colonne","insertBefore":"Insérer une colonne avant","insertAfter":"Insérer une colonne après","deleteColumn":"Supprimer des colonnes"},"columns":"Colonnes","deleteTable":"Supprimer le tableau","headers":"En-têtes","headersBoth":"Les deux.","headersColumn":"Première colonne","headersNone":"Aucun","headersRow":"Première ligne","heightUnit":"height unit","invalidBorder":"La taille de bordure doit être un nombre.","invalidCellPadding":"La marge interne des cellules doit être un nombre positif.","invalidCellSpacing":"L'espacement des cellules doit être un nombre positif.","invalidCols":"Le nombre de colonnes doit être supérieur à 0.","invalidHeight":"La hauteur du tableau doit être un nombre.","invalidRows":"Le nombre de lignes doit être supérieur à 0.","invalidWidth":"La largeur du tableau doit être un nombre.","menu":"Propriétés du tableau","row":{"menu":"Ligne","insertBefore":"Insérer une ligne avant","insertAfter":"Insérer une ligne après","deleteRow":"Supprimer des lignes"},"rows":"Lignes","summary":"Résumé","title":"Propriétés du tableau","toolbar":"Tableau","widthPc":"pourcentage","widthPx":"pixels","widthUnit":"unité de largeur"},"stylescombo":{"label":"Styles","panelTitle":"Styles de formattage","panelTitle1":"Styles de block","panelTitle2":"Styles en ligne","panelTitle3":"Styles d'objet"},"specialchar":{"options":"Option des caractères spéciaux","title":"Sélectionner un caractère spécial","toolbar":"Insérer un caractère spécial"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Afficher les blocs"},"removeformat":{"toolbar":"Supprimer le formatage"},"pastetext":{"button":"Coller comme texte","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Coller comme texte"},"pastefromword":{"confirmCleanup":"Le texte que vous tentez de coller semble provenir de Word. Désirez vous le nettoyer avant de coller?","error":"Il n'a pas été possible de nettoyer les données collées du à une erreur interne","title":"Coller de Word","toolbar":"Coller de Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximizer","minimize":"Minimizer"},"magicline":{"title":"Insérer le paragraphe ici"},"list":{"bulletedlist":"Liste à puces","numberedlist":"Liste numérotée"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Augmenter le retrait","outdent":"Diminuer le retrait"},"image2":{"alt":"Texte alternatif","btnUpload":"Envoyer sur le serveur","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Informations sur l'image2","lockRatio":"Verrouiller les proportions","menu":"Propriétés de l'image2","pathName":"image","pathNameCaption":"caption","resetSize":"Taille originale","resizer":"Click and drag to resize","title":"Propriétés de l'image2","uploadTab":"Téléverser","urlMissing":"L'URL de la source de l'image est manquant.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insérer un séparateur horizontale"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"En-tête 1","tag_h2":"En-tête 2","tag_h3":"En-tête 3","tag_h4":"En-tête 4","tag_h5":"En-tête 5","tag_h6":"En-tête 6","tag_p":"Normal","tag_pre":"Formaté"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Chemin d'éléments","eleTitle":"element %1"},"contextmenu":{"options":"Options du menu contextuel"},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).","paste":"Coller","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Coller la zone","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citation"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"about":{"copy":"Copyright © $1. Tous droits réservés.","dlgTitle":"À propos de CKEditor 4","moreInfo":"Pour les informations de licence, consulter notre site internet:"},"editor":"Éditeur de texte enrichi","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Appuyez sur 0 pour de l'aide","browseServer":"Parcourir le serveur","url":"URL","protocol":"Protocole","upload":"Envoyer","uploadSubmit":"Envoyer au serveur","image":"Image","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ caché","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton image","notSet":"<Par défaut>","id":"Id","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"De gauche à droite (LTR)","langDirRtl":"De droite à gauche (RTL)","langCode":"Code langue","longDescr":"URL de description longue","cssClass":"Classes CSS","advisoryTitle":"Titre","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Redimensionner","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous certain de vouloir charger une nouvelle page?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous certain de vouloir fermer?","options":"Options","target":"Cible","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieur (_top)","targetSelf":"Cette fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"De gauche à droite (LTR)","langDirRTL":"De droite à gauche (RTL)","styles":"Style","cssClasses":"Classe CSS","width":"Largeur","height":"Hauteur","align":"Alignement","left":"Gauche","right":"Droite","center":"Centré","justify":"Justifié","alignLeft":"Aligner à gauche","alignRight":"Aligner à Droite","alignCenter":"Align Center","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","alignNone":"None","invalidValue":"Valeur invalide.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style intégré doit être composée d'un ou plusieurs couples de valeur au format \"nom : valeur\", separés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour la valeur en pixel ou un nombre avec une unité CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/fr.js b/core/assets/vendor/ckeditor/lang/fr.js index f397ccb9e81d..128b14b6b27c 100644 --- a/core/assets/vendor/ckeditor/lang/fr.js +++ b/core/assets/vendor/ckeditor/lang/fr.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['fr']={"widget":{"move":"Cliquer et glisser pour déplacer","label":"Élément %1"},"undo":{"redo":"Rétablir","undo":"Annuler"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse-papier/Défaire","editing":"Édition","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barres d'outils de l'éditeur"},"table":{"border":"Taille de la bordure","caption":"Titre du tableau","cell":{"menu":"Cellule","insertBefore":"Insérer une cellule avant","insertAfter":"Insérer une cellule après","deleteCell":"Supprimer les cellules","merge":"Fusionner les cellules","mergeRight":"Fusionner vers la droite","mergeDown":"Fusionner vers le bas","splitHorizontal":"Scinder la cellule horizontalement","splitVertical":"Scinder la cellule verticalement","title":"Propriétés de la cellule","cellType":"Type de cellule","rowSpan":"Lignes occupées","colSpan":"Colonnes occupées","wordWrap":"Césure","hAlign":"Alignement horizontal","vAlign":"Alignement vertical","alignBaseline":"Ligne de base","bgColor":"Couleur d'arrière-plan","borderColor":"Couleur de bordure","data":"Données","header":"En-tête","yes":"Oui","no":"Non","invalidWidth":"La largeur de la cellule doit être un nombre.","invalidHeight":"La hauteur de la cellule doit être un nombre.","invalidRowSpan":"Le nombre de colonnes occupées doit être un nombre entier.","invalidColSpan":"Le nombre de colonnes occupées doit être un nombre entier.","chooseColor":"Choisir"},"cellPad":"Marge interne des cellules","cellSpace":"Espacement entre les cellules","column":{"menu":"Colonne","insertBefore":"Insérer une colonne avant","insertAfter":"Insérer une colonne après","deleteColumn":"Supprimer les colonnes"},"columns":"Colonnes","deleteTable":"Supprimer le tableau","headers":"En-têtes","headersBoth":"Les deux","headersColumn":"Première colonne","headersNone":"Aucun","headersRow":"Première ligne","heightUnit":"unité de hauteur","invalidBorder":"La taille de la bordure doit être un nombre.","invalidCellPadding":"La marge interne des cellules doit être un nombre positif.","invalidCellSpacing":"L'espacement entre les cellules doit être un nombre positif.","invalidCols":"Le nombre de colonnes doit être supérieur à 0.","invalidHeight":"La hauteur du tableau doit être un nombre.","invalidRows":"Le nombre de lignes doit être supérieur à 0.","invalidWidth":"La largeur du tableau doit être un nombre.","menu":"Propriétés du tableau","row":{"menu":"Ligne","insertBefore":"Insérer une ligne avant","insertAfter":"Insérer une ligne après","deleteRow":"Supprimer les lignes"},"rows":"Lignes","summary":"Résumé (description)","title":"Propriétés du tableau","toolbar":"Tableau","widthPc":"pour cent","widthPx":"pixels","widthUnit":"unité de largeur"},"stylescombo":{"label":"Styles","panelTitle":"Styles de mise en forme","panelTitle1":"Styles de bloc","panelTitle2":"Styles en ligne","panelTitle3":"Styles d'objet"},"specialchar":{"options":"Options des caractères spéciaux","title":"Sélectionner un caractère","toolbar":"Insérer un caractère spécial"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Afficher les blocs"},"removeformat":{"toolbar":"Supprimer la mise en forme"},"pastetext":{"button":"Coller comme texte brut","pasteNotification":"Utilisez le raccourci %1 pour coller. Votre navigateur n'accepte pas de coller à l'aide du bouton ou du menu contextuel.","title":"Coller comme texte brut"},"pastefromword":{"confirmCleanup":"Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller ?","error":"Les données collées n'ont pas pu être nettoyées à cause d'une erreur interne","title":"Coller depuis Word","toolbar":"Coller depuis Word"},"notification":{"closed":"Notification fermée."},"maximize":{"maximize":"Agrandir","minimize":"Réduire"},"magicline":{"title":"Insérer un paragraphe ici"},"list":{"bulletedlist":"Insérer/Supprimer une liste à puces","numberedlist":"Insérer/Supprimer une liste numérotée"},"language":{"button":"Définir la langue","remove":"Supprimer la langue"},"indent":{"indent":"Augmenter le retrait","outdent":"Diminuer le retrait"},"image2":{"alt":"Texte alternatif","btnUpload":"Envoyer sur le serveur","captioned":"Image légendée","captionPlaceholder":"Légende","infoTab":"Informations sur l'image","lockRatio":"Conserver les proportions","menu":"Propriétés de l'image","pathName":"image","pathNameCaption":"légende","resetSize":"Réinitialiser la taille","resizer":"Cliquer et glisser pour redimensionner","title":"Propriétés de l'image","uploadTab":"Téléverser","urlMissing":"L'URL source de l'image est manquante.","altMissing":"Vous n'avez pas indiqué de texte de remplacement."},"horizontalrule":{"toolbar":"Ligne horizontale"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Division","tag_h1":"Titre 1","tag_h2":"Titre 2","tag_h3":"Titre 3","tag_h4":"Titre 4","tag_h5":"Titre 5","tag_h6":"Titre 6","tag_p":"Normal","tag_pre":"Préformaté"},"filetools":{"loadError":"Une erreur est survenue lors de la lecture du fichier.","networkError":"Une erreur réseau est survenue lors du téléversement du fichier.","httpError404":"Une erreur HTTP est survenue durant le téléversement du fichier (404 : fichier non trouvé).","httpError403":"Une erreur HTTP est survenue durant le téléversement du fichier (403 : accès refusé).","httpError":"Une erreur HTTP est survenue durant le téléversement du fichier (erreur : %1).","noUrlError":"L'URL de téléversement n'est pas spécifiée.","responseError":"Réponse du serveur incorrecte."},"elementspath":{"eleLabel":"Chemin des éléments","eleTitle":"Élément %1"},"contextmenu":{"options":"Options du menu contextuel"},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur n'autorisent pas l'éditeur à exécuter automatiquement l'opération « Copier ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur n'autorisent pas l'éditeur à exécuter automatiquement l'opération « Couper ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+X).","paste":"Coller","pasteNotification":"Utilisez le raccourci %1 pour coller. Votre navigateur n'accepte pas de coller à l'aide du bouton ou du menu contextuel.","pasteArea":"Coller la zone","pasteMsg":"Collez votre contenu dans la zone de saisie ci-dessous et cliquez OK."},"blockquote":{"toolbar":"Citation"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"about":{"copy":"Copyright © $1. Tous droits réservés.","dlgTitle":"À propos de CKEditor 4","moreInfo":"Pour les informations de licence, veuillez visiter notre site web :"},"editor":"Éditeur de texte enrichi","editorPanel":"Tableau de bord de l'éditeur de texte enrichi","common":{"editorHelp":"Utilisez le raccourci Alt-0 pour obtenir de l'aide","browseServer":"Parcourir le serveur","url":"URL","protocol":"Protocole","upload":"Télécharger","uploadSubmit":"Envoyer sur le serveur","image":"Image","flash":"Flash","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ invisible","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton avec image","notSet":"<indéfini>","id":"ID","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"Gauche à droite (LTR)","langDirRtl":"Droite à gauche (RTL)","langCode":"Code de langue","longDescr":"URL de description longue","cssClass":"Classes de style","advisoryTitle":"Infobulle","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Redimensionner","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page ?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer ?","options":"Options","target":"Cible","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieure (_top)","targetSelf":"Même fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"Gauche à droite (LTR)","langDirRTL":"Droite à gauche (RTL)","styles":"Style","cssClasses":"Classes de style","width":"Largeur","height":"Hauteur","align":"Alignement","left":"Gauche","right":"Droite","center":"Centrer","justify":"Justifier","alignLeft":"Aligner à gauche","alignRight":"Aligner à droite","alignCenter":"Aligner au centre","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","alignNone":"Aucun","invalidValue":"Valeur invalide.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidLength":"La valeur de \"%1\" doit être un nombre positif avec ou sans unité de mesure (%2).","invalidCssLength":"La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style en ligne doit être composée d'un ou plusieurs couples au format « nom : valeur », séparés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Retour arrière","13":"Entrée","16":"Majuscule","17":"Ctrl","18":"Alt","32":"Espace","35":"Fin","36":"Origine","46":"Supprimer","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Commande"},"keyboardShortcut":"Raccourci clavier","optionDefault":"Par défaut"}}; \ No newline at end of file +CKEDITOR.lang['fr']={"widget":{"move":"Cliquer et glisser pour déplacer","label":"Élément %1"},"undo":{"redo":"Rétablir","undo":"Annuler"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse-papier/Défaire","editing":"Édition","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barres d'outils de l'éditeur"},"table":{"border":"Taille de la bordure","caption":"Titre du tableau","cell":{"menu":"Cellule","insertBefore":"Insérer une cellule avant","insertAfter":"Insérer une cellule après","deleteCell":"Supprimer les cellules","merge":"Fusionner les cellules","mergeRight":"Fusionner vers la droite","mergeDown":"Fusionner vers le bas","splitHorizontal":"Scinder la cellule horizontalement","splitVertical":"Scinder la cellule verticalement","title":"Propriétés de la cellule","cellType":"Type de cellule","rowSpan":"Lignes occupées","colSpan":"Colonnes occupées","wordWrap":"Césure","hAlign":"Alignement horizontal","vAlign":"Alignement vertical","alignBaseline":"Ligne de base","bgColor":"Couleur d'arrière-plan","borderColor":"Couleur de bordure","data":"Données","header":"En-tête","yes":"Oui","no":"Non","invalidWidth":"La largeur de la cellule doit être un nombre.","invalidHeight":"La hauteur de la cellule doit être un nombre.","invalidRowSpan":"Le nombre de colonnes occupées doit être un nombre entier.","invalidColSpan":"Le nombre de colonnes occupées doit être un nombre entier.","chooseColor":"Choisir"},"cellPad":"Marge interne des cellules","cellSpace":"Espacement entre les cellules","column":{"menu":"Colonne","insertBefore":"Insérer une colonne avant","insertAfter":"Insérer une colonne après","deleteColumn":"Supprimer les colonnes"},"columns":"Colonnes","deleteTable":"Supprimer le tableau","headers":"En-têtes","headersBoth":"Les deux","headersColumn":"Première colonne","headersNone":"Aucun","headersRow":"Première ligne","heightUnit":"unité de hauteur","invalidBorder":"La taille de la bordure doit être un nombre.","invalidCellPadding":"La marge interne des cellules doit être un nombre positif.","invalidCellSpacing":"L'espacement entre les cellules doit être un nombre positif.","invalidCols":"Le nombre de colonnes doit être supérieur à 0.","invalidHeight":"La hauteur du tableau doit être un nombre.","invalidRows":"Le nombre de lignes doit être supérieur à 0.","invalidWidth":"La largeur du tableau doit être un nombre.","menu":"Propriétés du tableau","row":{"menu":"Ligne","insertBefore":"Insérer une ligne avant","insertAfter":"Insérer une ligne après","deleteRow":"Supprimer les lignes"},"rows":"Lignes","summary":"Résumé (description)","title":"Propriétés du tableau","toolbar":"Tableau","widthPc":"pour cent","widthPx":"pixels","widthUnit":"unité de largeur"},"stylescombo":{"label":"Styles","panelTitle":"Styles de mise en forme","panelTitle1":"Styles de bloc","panelTitle2":"Styles en ligne","panelTitle3":"Styles d'objet"},"specialchar":{"options":"Options des caractères spéciaux","title":"Sélectionner un caractère","toolbar":"Insérer un caractère spécial"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Afficher les blocs"},"removeformat":{"toolbar":"Supprimer la mise en forme"},"pastetext":{"button":"Coller comme texte brut","pasteNotification":"Utilisez le raccourci %1 pour coller. Votre navigateur n'accepte pas de coller à l'aide du bouton ou du menu contextuel.","title":"Coller comme texte brut"},"pastefromword":{"confirmCleanup":"Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller ?","error":"Les données collées n'ont pas pu être nettoyées à cause d'une erreur interne","title":"Coller depuis Word","toolbar":"Coller depuis Word"},"notification":{"closed":"Notification fermée."},"maximize":{"maximize":"Agrandir","minimize":"Réduire"},"magicline":{"title":"Insérer un paragraphe ici"},"list":{"bulletedlist":"Insérer/Supprimer une liste à puces","numberedlist":"Insérer/Supprimer une liste numérotée"},"language":{"button":"Définir la langue","remove":"Supprimer la langue"},"indent":{"indent":"Augmenter le retrait","outdent":"Diminuer le retrait"},"image2":{"alt":"Texte alternatif","btnUpload":"Envoyer sur le serveur","captioned":"Image légendée","captionPlaceholder":"Légende","infoTab":"Informations sur l'image","lockRatio":"Conserver les proportions","menu":"Propriétés de l'image","pathName":"image","pathNameCaption":"légende","resetSize":"Réinitialiser la taille","resizer":"Cliquer et glisser pour redimensionner","title":"Propriétés de l'image","uploadTab":"Téléverser","urlMissing":"L'URL source de l'image est manquante.","altMissing":"Vous n'avez pas indiqué de texte de remplacement."},"horizontalrule":{"toolbar":"Ligne horizontale"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Division","tag_h1":"Titre 1","tag_h2":"Titre 2","tag_h3":"Titre 3","tag_h4":"Titre 4","tag_h5":"Titre 5","tag_h6":"Titre 6","tag_p":"Normal","tag_pre":"Préformaté"},"filetools":{"loadError":"Une erreur est survenue lors de la lecture du fichier.","networkError":"Une erreur réseau est survenue lors du téléversement du fichier.","httpError404":"Une erreur HTTP est survenue durant le téléversement du fichier (404 : fichier non trouvé).","httpError403":"Une erreur HTTP est survenue durant le téléversement du fichier (403 : accès refusé).","httpError":"Une erreur HTTP est survenue durant le téléversement du fichier (erreur : %1).","noUrlError":"L'URL de téléversement n'est pas spécifiée.","responseError":"Réponse du serveur incorrecte."},"elementspath":{"eleLabel":"Chemin des éléments","eleTitle":"Élément %1"},"contextmenu":{"options":"Options du menu contextuel"},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur n'autorisent pas l'éditeur à exécuter automatiquement l'opération « Copier ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur n'autorisent pas l'éditeur à exécuter automatiquement l'opération « Couper ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+X).","paste":"Coller","pasteNotification":"Utilisez le raccourci %1 pour coller. Votre navigateur n'accepte pas de coller à l'aide du bouton ou du menu contextuel.","pasteArea":"Coller la zone","pasteMsg":"Collez votre contenu dans la zone de saisie ci-dessous et cliquez OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citation"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"about":{"copy":"Copyright © $1. Tous droits réservés.","dlgTitle":"À propos de CKEditor 4","moreInfo":"Pour les informations de licence, veuillez visiter notre site web :"},"editor":"Éditeur de texte enrichi","editorPanel":"Tableau de bord de l'éditeur de texte enrichi","common":{"editorHelp":"Utilisez le raccourci Alt-0 pour obtenir de l'aide","browseServer":"Parcourir le serveur","url":"URL","protocol":"Protocole","upload":"Télécharger","uploadSubmit":"Envoyer sur le serveur","image":"Image","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ invisible","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton avec image","notSet":"<indéfini>","id":"ID","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"Gauche à droite (LTR)","langDirRtl":"Droite à gauche (RTL)","langCode":"Code de langue","longDescr":"URL de description longue","cssClass":"Classes de style","advisoryTitle":"Infobulle","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Redimensionner","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page ?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer ?","options":"Options","target":"Cible","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieure (_top)","targetSelf":"Même fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"Gauche à droite (LTR)","langDirRTL":"Droite à gauche (RTL)","styles":"Style","cssClasses":"Classes de style","width":"Largeur","height":"Hauteur","align":"Alignement","left":"Gauche","right":"Droite","center":"Centrer","justify":"Justifier","alignLeft":"Aligner à gauche","alignRight":"Aligner à droite","alignCenter":"Aligner au centre","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","alignNone":"Aucun","invalidValue":"Valeur invalide.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidLength":"La valeur de \"%1\" doit être un nombre positif avec ou sans unité de mesure (%2).","invalidCssLength":"La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ « %1 » doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style en ligne doit être composée d'un ou plusieurs couples au format « nom : valeur », séparés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Retour arrière","13":"Entrée","16":"Majuscule","17":"Ctrl","18":"Alt","32":"Espace","35":"Fin","36":"Origine","46":"Supprimer","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Commande"},"keyboardShortcut":"Raccourci clavier","optionDefault":"Par défaut"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/gl.js b/core/assets/vendor/ckeditor/lang/gl.js index 5948085ab021..bfb358c2f6d1 100644 --- a/core/assets/vendor/ckeditor/lang/gl.js +++ b/core/assets/vendor/ckeditor/lang/gl.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['gl']={"widget":{"move":"Prema e arrastre para mover","label":"Trebello %1"},"undo":{"redo":"Refacer","undo":"Desfacer"},"toolbar":{"toolbarCollapse":"Contraer a barra de ferramentas","toolbarExpand":"Expandir a barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeis/desfacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Paragrafo","links":"Ligazóns","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barras de ferramentas do editor"},"table":{"border":"Tamaño do bordo","caption":"TÃtulo","cell":{"menu":"Cela","insertBefore":"Inserir a cela á esquerda","insertAfter":"Inserir a cela á dereita","deleteCell":"Eliminar celas","merge":"Combinar celas","mergeRight":"Combinar á dereita","mergeDown":"Combinar cara abaixo","splitHorizontal":"Dividir a cela en horizontal","splitVertical":"Dividir a cela en vertical","title":"Propiedades da cela","cellType":"Tipo de cela","rowSpan":"Expandir filas","colSpan":"Expandir columnas","wordWrap":"Axustar ao contido","hAlign":"Aliñación horizontal","vAlign":"Aliñación vertical","alignBaseline":"Liña de base","bgColor":"Cor do fondo","borderColor":"Cor do bordo","data":"Datos","header":"Cabeceira","yes":"Si","no":"Non","invalidWidth":"O largo da cela debe ser un número.","invalidHeight":"O alto da cela debe ser un número.","invalidRowSpan":"A expansión de filas debe ser un número enteiro.","invalidColSpan":"A expansión de columnas debe ser un número enteiro.","chooseColor":"Escoller"},"cellPad":"Marxe interior da cela","cellSpace":"Marxe entre celas","column":{"menu":"Columna","insertBefore":"Inserir a columna á esquerda","insertAfter":"Inserir a columna á dereita","deleteColumn":"Borrar Columnas"},"columns":"Columnas","deleteTable":"Borrar Táboa","headers":"Cabeceiras","headersBoth":"Ambas","headersColumn":"Primeira columna","headersNone":"Ningún","headersRow":"Primeira fila","heightUnit":"unidade do alto","invalidBorder":"O tamaño do bordo debe ser un número.","invalidCellPadding":"A marxe interior debe ser un número positivo.","invalidCellSpacing":"A marxe entre celas debe ser un número positivo.","invalidCols":"O número de columnas debe ser un número maior que 0.","invalidHeight":"O alto da táboa debe ser un número.","invalidRows":"O número de filas debe ser un número maior que 0","invalidWidth":"O largo da táboa debe ser un número.","menu":"Propiedades da táboa","row":{"menu":"Fila","insertBefore":"Inserir a fila por riba","insertAfter":"Inserir a fila por baixo","deleteRow":"Eliminar filas"},"rows":"Filas","summary":"Resumo","title":"Propiedades da táboa","toolbar":"Taboa","widthPc":"porcentaxe","widthPx":"pÃxeles","widthUnit":"unidade do largo"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatando","panelTitle1":"Estilos de bloque","panelTitle2":"Estilos de liña","panelTitle3":"Estilos de obxecto"},"specialchar":{"options":"Opcións de caracteres especiais","title":"Seleccione un carácter especial","toolbar":"Inserir un carácter especial"},"sourcedialog":{"toolbar":"Orixe","title":"Orixe"},"sourcearea":{"toolbar":"Orixe"},"showblocks":{"toolbar":"Amosar os bloques"},"removeformat":{"toolbar":"Retirar o formato"},"pastetext":{"button":"Pegar como texto simple","pasteNotification":"Prema %1 para pegar. O seu navegador non admite pegar co botón da barra de ferramentas ou coa opción do menú contextual.","title":"Pegar como texto simple"},"pastefromword":{"confirmCleanup":"O texto que quere pegar semella ser copiado desde o Word. Quere depuralo antes de pegalo?","error":"Non foi posÃbel depurar os datos pegados por mor dun erro interno","title":"Pegar desde Word","toolbar":"Pegar desde Word"},"notification":{"closed":"Notificación pechada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Inserir aquà o parágrafo"},"list":{"bulletedlist":"Inserir/retirar lista viñeteada","numberedlist":"Inserir/retirar lista numerada"},"language":{"button":"Estabelezer o idioma","remove":"Retirar o idioma"},"indent":{"indent":"Aumentar a sangrÃa","outdent":"Reducir a sangrÃa"},"image2":{"alt":"Texto alternativo","btnUpload":"Enviar ao servidor","captioned":"Imaxe con lenda","captionPlaceholder":"Lenda","infoTab":"Información da imaxe","lockRatio":"Proporcional","menu":"Propiedades da imaxe","pathName":"Imaxe","pathNameCaption":"lenda","resetSize":"Tamaño orixinal","resizer":"Prema e arrastre para axustar o tamaño","title":"Propiedades da imaxe","uploadTab":"Cargar","urlMissing":"Non se atopa o URL da imaxe.","altMissing":"Non foi posÃbel atopar o texto alternativo."},"horizontalrule":{"toolbar":"Inserir unha liña horizontal"},"format":{"label":"Formato","panelTitle":"Formato do parágrafo","tag_address":"Enderezo","tag_div":"Normal (DIV)","tag_h1":"Enacabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Formatado"},"filetools":{"loadError":"Produciuse un erro durante a lectura do ficheiro.","networkError":"Produciuse un erro na rede durante o envÃo do ficheiro.","httpError404":"Produciuse un erro HTTP durante o envÃo do ficheiro (404: Ficheiro non atopado).","httpError403":"Produciuse un erro HTTP durante o envÃo do ficheiro (403: Acceso denegado).","httpError":"Produciuse un erro HTTP durante o envÃo do ficheiro (erro de estado: %1).","noUrlError":"Non foi definido o URL para o envÃo.","responseError":"Resposta incorrecta do servidor."},"elementspath":{"eleLabel":"Ruta dos elementos","eleTitle":"Elemento %1"},"contextmenu":{"options":"Opcións do menú contextual"},"clipboard":{"copy":"Copiar","copyError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de copia. Use o teclado para iso (Ctrl/Cmd+C).","cut":"Cortar","cutError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Prema %1 para pegar. O seu navegador non admite pegar co botón da barra de ferramentas ou coa opción do menú contextual.","pasteArea":"Zona de pegado","pasteMsg":"Pegue o contido dentro da área de abaixo e prema Aceptar."},"blockquote":{"toolbar":"Cita"},"basicstyles":{"bold":"Negra","italic":"Cursiva","strike":"Riscado","subscript":"SubÃndice","superscript":"SuperÃndice","underline":"Subliñado"},"about":{"copy":"Copyright © $1. Todos os dereitos reservados.","dlgTitle":"Sobre o CKEditor 4","moreInfo":"Para obter información sobre a licenza, visite o noso sitio web:"},"editor":"Editor de texto mellorado","editorPanel":"Panel do editor de texto mellorado","common":{"editorHelp":"Prema ALT 0 para obter axuda","browseServer":"Examinar o servidor","url":"URL","protocol":"Protocolo","upload":"Enviar","uploadSubmit":"Enviar ao servidor","image":"Imaxe","flash":"Flash","form":"Formulario","checkbox":"Caixa de selección","radio":"Botón de opción","textField":"Campo de texto","textarea":"Ãrea de texto","hiddenField":"Campo agochado","button":"Botón","select":"Campo de selección","imageButton":"Botón de imaxe","notSet":"<sen estabelecer>","id":"ID","name":"Nome","langDir":"Dirección de escritura do idioma","langDirLtr":"Esquerda a dereita (LTR)","langDirRtl":"Dereita a esquerda (RTL)","langCode":"Código do idioma","longDescr":"Descrición completa do URL","cssClass":"Clases da folla de estilos","advisoryTitle":"TÃtulo","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Pechar","preview":"Vista previa","resize":"Redimensionar","generalTab":"Xeral","advancedTab":"Avanzado","validateNumberFailed":"Este valor non é un número.","confirmNewPage":"Calquera cambio que non gardara neste contido perderase.\r\nConfirma que quere cargar unha páxina nova?","confirmCancel":"Algunhas das opcións foron cambiadas.\r\nConfirma que quere pechar o diálogo?","options":"Opcións","target":"Destino","targetNew":"Nova xanela (_blank)","targetTop":"Xanela principal (_top)","targetSelf":"Mesma xanela (_self)","targetParent":"Xanela superior (_parent)","langDirLTR":"Esquerda a dereita (LTR)","langDirRTL":"Dereita a esquerda (RTL)","styles":"Estilo","cssClasses":"Clases da folla de estilos","width":"Largo","height":"Alto","align":"Aliñamento","left":"Esquerda","right":"Dereita","center":"Centro","justify":"Xustificado","alignLeft":"Aliñar á esquerda","alignRight":"Aliñar á dereita","alignCenter":"Aliñar ao centro","alignTop":"Arriba","alignMiddle":"Centro","alignBottom":"Abaixo","alignNone":"Ningún","invalidValue":"Valor incorrecto.","invalidHeight":"O alto debe ser un número.","invalidWidth":"O largo debe ser un número.","invalidLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida correcta (%2).","invalidCssLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida HTML correcta (px ou %).","invalidInlineStyle":"O valor especificado no estilo en liña debe consistir nunha ou máis tuplas co formato «nome : valor», separadas por punto e coma.","cssLengthTooltip":"Escriba un número para o valor en pÃxeles ou un número cunha unidade CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, non dispoñÃbel</span>","keyboard":{"8":"Ir atrás","13":"Intro","16":"Maiús","17":"Ctrl","18":"Alt","32":"Espazo","35":"Fin","36":"Inicio","46":"Supr","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Orde"},"keyboardShortcut":"Atallo de teclado","optionDefault":"Predeterminado"}}; \ No newline at end of file +CKEDITOR.lang['gl']={"widget":{"move":"Prema e arrastre para mover","label":"Trebello %1"},"undo":{"redo":"Refacer","undo":"Desfacer"},"toolbar":{"toolbarCollapse":"Contraer a barra de ferramentas","toolbarExpand":"Expandir a barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeis/desfacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Paragrafo","links":"Ligazóns","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barras de ferramentas do editor"},"table":{"border":"Tamaño do bordo","caption":"TÃtulo","cell":{"menu":"Cela","insertBefore":"Inserir a cela á esquerda","insertAfter":"Inserir a cela á dereita","deleteCell":"Eliminar celas","merge":"Combinar celas","mergeRight":"Combinar á dereita","mergeDown":"Combinar cara abaixo","splitHorizontal":"Dividir a cela en horizontal","splitVertical":"Dividir a cela en vertical","title":"Propiedades da cela","cellType":"Tipo de cela","rowSpan":"Expandir filas","colSpan":"Expandir columnas","wordWrap":"Axustar ao contido","hAlign":"Aliñación horizontal","vAlign":"Aliñación vertical","alignBaseline":"Liña de base","bgColor":"Cor do fondo","borderColor":"Cor do bordo","data":"Datos","header":"Cabeceira","yes":"Si","no":"Non","invalidWidth":"O largo da cela debe ser un número.","invalidHeight":"O alto da cela debe ser un número.","invalidRowSpan":"A expansión de filas debe ser un número enteiro.","invalidColSpan":"A expansión de columnas debe ser un número enteiro.","chooseColor":"Escoller"},"cellPad":"Marxe interior da cela","cellSpace":"Marxe entre celas","column":{"menu":"Columna","insertBefore":"Inserir a columna á esquerda","insertAfter":"Inserir a columna á dereita","deleteColumn":"Borrar Columnas"},"columns":"Columnas","deleteTable":"Borrar Táboa","headers":"Cabeceiras","headersBoth":"Ambas","headersColumn":"Primeira columna","headersNone":"Ningún","headersRow":"Primeira fila","heightUnit":"unidade do alto","invalidBorder":"O tamaño do bordo debe ser un número.","invalidCellPadding":"A marxe interior debe ser un número positivo.","invalidCellSpacing":"A marxe entre celas debe ser un número positivo.","invalidCols":"O número de columnas debe ser un número maior que 0.","invalidHeight":"O alto da táboa debe ser un número.","invalidRows":"O número de filas debe ser un número maior que 0","invalidWidth":"O largo da táboa debe ser un número.","menu":"Propiedades da táboa","row":{"menu":"Fila","insertBefore":"Inserir a fila por riba","insertAfter":"Inserir a fila por baixo","deleteRow":"Eliminar filas"},"rows":"Filas","summary":"Resumo","title":"Propiedades da táboa","toolbar":"Taboa","widthPc":"porcentaxe","widthPx":"pÃxeles","widthUnit":"unidade do largo"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatando","panelTitle1":"Estilos de bloque","panelTitle2":"Estilos de liña","panelTitle3":"Estilos de obxecto"},"specialchar":{"options":"Opcións de caracteres especiais","title":"Seleccione un carácter especial","toolbar":"Inserir un carácter especial"},"sourcedialog":{"toolbar":"Orixe","title":"Orixe"},"sourcearea":{"toolbar":"Orixe"},"showblocks":{"toolbar":"Amosar os bloques"},"removeformat":{"toolbar":"Retirar o formato"},"pastetext":{"button":"Pegar como texto simple","pasteNotification":"Prema %1 para pegar. O seu navegador non admite pegar co botón da barra de ferramentas ou coa opción do menú contextual.","title":"Pegar como texto simple"},"pastefromword":{"confirmCleanup":"O texto que quere pegar semella ser copiado desde o Word. Quere depuralo antes de pegalo?","error":"Non foi posÃbel depurar os datos pegados por mor dun erro interno","title":"Pegar desde Word","toolbar":"Pegar desde Word"},"notification":{"closed":"Notificación pechada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Inserir aquà o parágrafo"},"list":{"bulletedlist":"Inserir/retirar lista viñeteada","numberedlist":"Inserir/retirar lista numerada"},"language":{"button":"Estabelezer o idioma","remove":"Retirar o idioma"},"indent":{"indent":"Aumentar a sangrÃa","outdent":"Reducir a sangrÃa"},"image2":{"alt":"Texto alternativo","btnUpload":"Enviar ao servidor","captioned":"Imaxe con lenda","captionPlaceholder":"Lenda","infoTab":"Información da imaxe","lockRatio":"Proporcional","menu":"Propiedades da imaxe","pathName":"Imaxe","pathNameCaption":"lenda","resetSize":"Tamaño orixinal","resizer":"Prema e arrastre para axustar o tamaño","title":"Propiedades da imaxe","uploadTab":"Cargar","urlMissing":"Non se atopa o URL da imaxe.","altMissing":"Non foi posÃbel atopar o texto alternativo."},"horizontalrule":{"toolbar":"Inserir unha liña horizontal"},"format":{"label":"Formato","panelTitle":"Formato do parágrafo","tag_address":"Enderezo","tag_div":"Normal (DIV)","tag_h1":"Enacabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Formatado"},"filetools":{"loadError":"Produciuse un erro durante a lectura do ficheiro.","networkError":"Produciuse un erro na rede durante o envÃo do ficheiro.","httpError404":"Produciuse un erro HTTP durante o envÃo do ficheiro (404: Ficheiro non atopado).","httpError403":"Produciuse un erro HTTP durante o envÃo do ficheiro (403: Acceso denegado).","httpError":"Produciuse un erro HTTP durante o envÃo do ficheiro (erro de estado: %1).","noUrlError":"Non foi definido o URL para o envÃo.","responseError":"Resposta incorrecta do servidor."},"elementspath":{"eleLabel":"Ruta dos elementos","eleTitle":"Elemento %1"},"contextmenu":{"options":"Opcións do menú contextual"},"clipboard":{"copy":"Copiar","copyError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de copia. Use o teclado para iso (Ctrl/Cmd+C).","cut":"Cortar","cutError":"Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Prema %1 para pegar. O seu navegador non admite pegar co botón da barra de ferramentas ou coa opción do menú contextual.","pasteArea":"Zona de pegado","pasteMsg":"Pegue o contido dentro da área de abaixo e prema Aceptar.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Cita"},"basicstyles":{"bold":"Negra","italic":"Cursiva","strike":"Riscado","subscript":"SubÃndice","superscript":"SuperÃndice","underline":"Subliñado"},"about":{"copy":"Copyright © $1. Todos os dereitos reservados.","dlgTitle":"Sobre o CKEditor 4","moreInfo":"Para obter información sobre a licenza, visite o noso sitio web:"},"editor":"Editor de texto mellorado","editorPanel":"Panel do editor de texto mellorado","common":{"editorHelp":"Prema ALT 0 para obter axuda","browseServer":"Examinar o servidor","url":"URL","protocol":"Protocolo","upload":"Enviar","uploadSubmit":"Enviar ao servidor","image":"Imaxe","form":"Formulario","checkbox":"Caixa de selección","radio":"Botón de opción","textField":"Campo de texto","textarea":"Ãrea de texto","hiddenField":"Campo agochado","button":"Botón","select":"Campo de selección","imageButton":"Botón de imaxe","notSet":"<sen estabelecer>","id":"ID","name":"Nome","langDir":"Dirección de escritura do idioma","langDirLtr":"Esquerda a dereita (LTR)","langDirRtl":"Dereita a esquerda (RTL)","langCode":"Código do idioma","longDescr":"Descrición completa do URL","cssClass":"Clases da folla de estilos","advisoryTitle":"TÃtulo","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Pechar","preview":"Vista previa","resize":"Redimensionar","generalTab":"Xeral","advancedTab":"Avanzado","validateNumberFailed":"Este valor non é un número.","confirmNewPage":"Calquera cambio que non gardara neste contido perderase.\r\nConfirma que quere cargar unha páxina nova?","confirmCancel":"Algunhas das opcións foron cambiadas.\r\nConfirma que quere pechar o diálogo?","options":"Opcións","target":"Destino","targetNew":"Nova xanela (_blank)","targetTop":"Xanela principal (_top)","targetSelf":"Mesma xanela (_self)","targetParent":"Xanela superior (_parent)","langDirLTR":"Esquerda a dereita (LTR)","langDirRTL":"Dereita a esquerda (RTL)","styles":"Estilo","cssClasses":"Clases da folla de estilos","width":"Largo","height":"Alto","align":"Aliñamento","left":"Esquerda","right":"Dereita","center":"Centro","justify":"Xustificado","alignLeft":"Aliñar á esquerda","alignRight":"Aliñar á dereita","alignCenter":"Aliñar ao centro","alignTop":"Arriba","alignMiddle":"Centro","alignBottom":"Abaixo","alignNone":"Ningún","invalidValue":"Valor incorrecto.","invalidHeight":"O alto debe ser un número.","invalidWidth":"O largo debe ser un número.","invalidLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida correcta (%2).","invalidCssLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"O valor especificado para o campo «%1» debe ser un número positivo con ou sen unha unidade de medida HTML correcta (px ou %).","invalidInlineStyle":"O valor especificado no estilo en liña debe consistir nunha ou máis tuplas co formato «nome : valor», separadas por punto e coma.","cssLengthTooltip":"Escriba un número para o valor en pÃxeles ou un número cunha unidade CSS correcta (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, non dispoñÃbel</span>","keyboard":{"8":"Ir atrás","13":"Intro","16":"Maiús","17":"Ctrl","18":"Alt","32":"Espazo","35":"Fin","36":"Inicio","46":"Supr","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Orde"},"keyboardShortcut":"Atallo de teclado","optionDefault":"Predeterminado"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/gu.js b/core/assets/vendor/ckeditor/lang/gu.js index 443607561e88..d2d920c25b38 100644 --- a/core/assets/vendor/ckeditor/lang/gu.js +++ b/core/assets/vendor/ckeditor/lang/gu.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['gu']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"રિડૂ; પછી હતી àªàªµà«€ સà«àª¥àª¿àª¤àª¿ પાછી લાવવી","undo":"રદ કરવà«àª‚; પહેલાં હતી àªàªµà«€ સà«àª¥àª¿àª¤àª¿ પાછી લાવવી"},"toolbar":{"toolbarCollapse":"ટૂલબાર નાનà«àª‚ કરવà«àª‚","toolbarExpand":"ટૂલબાર મોટà«àª‚ કરવà«àª‚","toolbarGroups":{"document":"દસà«àª¤àª¾àªµà«‡àªœ","clipboard":"કà«àª²àª¿àªªàª¬à«‹àª°à«àª¡/અન","editing":"àªàª¡à«€àªŸ કરવà«àª‚","forms":"ફોરà«àª®","basicstyles":"બેસિકૠસà«àªŸàª¾àª‡àª²","paragraph":"ફકરો","links":"લીંક","insert":"ઉમેરવà«àª‚","styles":"સà«àªŸàª¾àª‡àª²","colors":"રંગ","tools":"ટૂલà«àª¸"},"toolbars":"àªàª¡à«€àªŸàª° ટૂલ બાર"},"table":{"border":"કોઠાની બાજà«(બોરà«àª¡àª°) સાઇàª","caption":"મથાળà«àª‚/કૅપà«àª¶àª¨ ","cell":{"menu":"કોષના ખાના","insertBefore":"પહેલાં કોષ ઉમેરવો","insertAfter":"પછી કોષ ઉમેરવો","deleteCell":"કોષ ડિલીટ/કાઢી નાખવો","merge":"કોષ àªà«‡àª—ા કરવા","mergeRight":"જમણી બાજૠàªà«‡àª—ા કરવા","mergeDown":"નીચે àªà«‡àª—ા કરવા","splitHorizontal":"કોષને સમસà«àª¤àª°à«€àª¯ વિàªàª¾àªœàª¨ કરવà«àª‚","splitVertical":"કોષને સીધà«àª‚ ને ઊàªà«àª‚ વિàªàª¾àªœàª¨ કરવà«àª‚","title":"સેલના ગà«àª£","cellType":"સેલનો પà«àª°àª•àª¾àª°","rowSpan":"આડી કટારની જગà«àª¯àª¾","colSpan":"ઊàªà«€ કતારની જગà«àª¯àª¾","wordWrap":"વરà«àª¡ રેપ","hAlign":"સપાટ લાઈનદોરી","vAlign":"ઊàªà«€ લાઈનદોરી","alignBaseline":"બસે લાઈન","bgColor":"પાછાળનો રંગ","borderColor":"બોરà«àª¡à«‡àª° રંગ","data":"સà«àªµà«€àª•à«ƒàª¤ માહિતી","header":"મથાળà«àª‚","yes":"હા","no":"ના","invalidWidth":"સેલની પોહલાઈ આંકડો હોવો જોઈàª.","invalidHeight":"સેલની ઊંચાઈ આંકડો હોવો જોઈàª.","invalidRowSpan":"રો સà«àªªàª¾àª¨ આંકડો હોવો જોઈàª.","invalidColSpan":"કોલમ સà«àªªàª¾àª¨ આંકડો હોવો જોઈàª.","chooseColor":"પસંદ કરવà«àª‚"},"cellPad":"સેલ પૅડિંગ","cellSpace":"સેલ અંતર","column":{"menu":"કૉલમ/ઊàªà«€ કટાર","insertBefore":"પહેલાં કૉલમ/ઊàªà«€ કટાર ઉમેરવી","insertAfter":"પછી કૉલમ/ઊàªà«€ કટાર ઉમેરવી","deleteColumn":"કૉલમ/ઊàªà«€ કટાર ડિલીટ/કાઢી નાખવી"},"columns":"કૉલમ/ઊàªà«€ કટાર","deleteTable":"કોઠો ડિલીટ/કાઢી નાખવà«àª‚","headers":"મથાળા","headersBoth":"બેવà«àª‚","headersColumn":"પહેલી ઊàªà«€ કટાર","headersNone":"નથી ","headersRow":"પહેલી કટાર","heightUnit":"height unit","invalidBorder":"બોરà«àª¡àª° àªàª• આંકડો હોવો જોઈàª","invalidCellPadding":"સેલની અંદરની જગà«àª¯àª¾ સà«àª¨à«àª¯ કરતા વધારે હોવી જોઈàª.","invalidCellSpacing":"સેલ વચà«àªšà«‡àª¨à«€ જગà«àª¯àª¾ સà«àª¨à«àª¯ કરતા વધારે હોવી જોઈàª.","invalidCols":"ઉàªà«€ કટાર, 0 કરતા વધારે હોવી જોઈàª.","invalidHeight":"ટેબલની ઊંચાઈ આંકડો હોવો જોઈàª.","invalidRows":"આડી કટાર, 0 કરતા વધારે હોવી જોઈàª.","invalidWidth":"ટેબલની પોહલાઈ આંકડો હોવો જોઈàª.","menu":"ટેબલ, કોઠાનà«àª‚ મથાળà«àª‚","row":{"menu":"પંકà«àª¤àª¿àª¨àª¾ ખાના","insertBefore":"પહેલાં પંકà«àª¤àª¿ ઉમેરવી","insertAfter":"પછી પંકà«àª¤àª¿ ઉમેરવી","deleteRow":"પંકà«àª¤àª¿àª“ ડિલીટ/કાઢી નાખવી"},"rows":"પંકà«àª¤àª¿àª¨àª¾ ખાના","summary":"ટૂંકો àªàª¹à«‡àªµàª¾àª²","title":"ટેબલ, કોઠાનà«àª‚ મથાળà«àª‚","toolbar":"ટેબલ, કોઠો","widthPc":"પà«àª°àª¤àª¿àª¶àª¤","widthPx":"પિકસલ","widthUnit":"પોહાલાઈ àªàª•àª®"},"stylescombo":{"label":"શૈલી/રીત","panelTitle":"ફોરà«àª®à«‡àªŸ ","panelTitle1":"બà«àª²à«‹àª• ","panelTitle2":"ઈનલાઈન ","panelTitle3":"ઓબà«àªœà«‡àª•à«àªŸ પદà«àª§àª¤àª¿"},"specialchar":{"options":"સà«àªªà«‡àª¶àª¿àª…લ કરેકà«àªŸàª°àª¨àª¾ વિકલà«àªªà«‹","title":"સà«àªªà«‡àª¶àª¿àª…લ વિશિષà«àªŸ અકà«àª·àª° પસંદ કરો","toolbar":"વિશિષà«àªŸ અકà«àª·àª° ઇનà«àª¸àª°à«àªŸ/દાખલ કરવà«àª‚"},"sourcedialog":{"toolbar":"મૂળ કે પà«àª°àª¾àª¥àª®àª¿àª• દસà«àª¤àª¾àªµà«‡àªœ","title":"મૂળ કે પà«àª°àª¾àª¥àª®àª¿àª• દસà«àª¤àª¾àªµà«‡àªœ"},"sourcearea":{"toolbar":"મૂળ કે પà«àª°àª¾àª¥àª®àª¿àª• દસà«àª¤àª¾àªµà«‡àªœ"},"showblocks":{"toolbar":"બà«àª²à«‰àª• બતાવવà«àª‚"},"removeformat":{"toolbar":"ફૉરà«àª®àªŸ કાઢવà«àª‚"},"pastetext":{"button":"પેસà«àªŸ (ટેકà«àª¸à«àªŸ)","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"પેસà«àªŸ (ટેકà«àª¸à«àªŸ)"},"pastefromword":{"confirmCleanup":"તમે જે ટેકà«àª·à«àª¤à« કોપી કરી રહà«àª¯àª¾ છો ટે વરà«àª¡ ની છે. કોપી કરતા પેહલા સાફ કરવી છે?","error":"પેસà«àªŸ કરેલો ડેટા ઇનà«àªŸàª°àª¨àª² àªàª°àª° ના લીથે સાફ કરી શકાયો નથી.","title":"પેસà«àªŸ (વડૅ ટેકà«àª¸à«àªŸ)","toolbar":"પેસà«àªŸ (વડૅ ટેકà«àª¸à«àªŸ)"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"મોટà«àª‚ કરવà«àª‚","minimize":"નાનà«àª‚ કરવà«àª‚"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"બà«àª²à«‡àªŸ સૂચિ","numberedlist":"સંખà«àª¯àª¾àª‚કન સૂચિ"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"ઇનà«àª¡à«‡àª¨à«àªŸ, લીટીના આરંàªàª®àª¾àª‚ જગà«àª¯àª¾ વધારવી","outdent":"ઇનà«àª¡à«‡àª¨à«àªŸ લીટીના આરંàªàª®àª¾àª‚ જગà«àª¯àª¾ ઘટાડવી"},"image2":{"alt":"ઑલà«àªŸàª°à«àª¨àªŸ ટેકà«àª¸à«àªŸ","btnUpload":"આ સરà«àªµàª°àª¨à«‡ મોકલવà«àª‚","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"ચિતà«àª° ની જાણકારી","lockRatio":"લૉક ગà«àª£à«‹àª¤à«àª¤àª°","menu":"ચિતà«àª°àª¨àª¾ ગà«àª£","pathName":"image","pathNameCaption":"caption","resetSize":"રીસેટ સાઇàª","resizer":"Click and drag to resize","title":"ચિતà«àª°àª¨àª¾ ગà«àª£","uploadTab":"અપલોડ","urlMissing":"ઈમેજની મૂળ URL છે નહી.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"સમસà«àª¤àª°à«€àª¯ રેખા ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી"},"format":{"label":"ફૉનà«àªŸ ફૉરà«àª®àªŸ, રચનાની શૈલી","panelTitle":"ફૉનà«àªŸ ફૉરà«àª®àªŸ, રચનાની શૈલી","tag_address":"સરનામà«àª‚","tag_div":"શીરà«àª·àª• (DIV)","tag_h1":"શીરà«àª·àª• 1","tag_h2":"શીરà«àª·àª• 2","tag_h3":"શીરà«àª·àª• 3","tag_h4":"શીરà«àª·àª• 4","tag_h5":"શીરà«àª·àª• 5","tag_h6":"શીરà«àª·àª• 6","tag_p":"સામાનà«àª¯","tag_pre":"ફૉરà«àª®àªŸà«‡àª¡"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"àªàª²à«€àª®à«‡àª¨à«àªŸà«àª¸ નો ","eleTitle":"àªàª²à«€àª®à«‡àª¨à«àªŸ %1"},"contextmenu":{"options":"કોનà«àª¤à«‡àª•à«àª·à«àª¤à« મેનà«àª¨àª¾ વિકલà«àªªà«‹"},"clipboard":{"copy":"નકલ","copyError":"તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का पà¥à¤°à¤¯à¥‹à¤— करें।","cut":"કાપવà«àª‚","cutError":"તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.","paste":"પેસà«àªŸ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"પેસà«àªŸ કરવાની જગà«àª¯àª¾","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"બà«àª²à«‰àª•-કોટ, અવતરણચિહà«àª¨à«‹"},"basicstyles":{"bold":"બોલà«àª¡/સà«àªªàª·à«àªŸ","italic":"ઇટેલિક, તà«àª°àª¾àª‚સા","strike":"છેકી નાખવà«àª‚","subscript":"àªàª• ચિહà«àª¨àª¨à«€ નીચે કરેલà«àª‚ બીજà«àª‚ ચિહà«àª¨","superscript":"àªàª• ચિહà«àª¨ ઉપર કરેલà«àª‚ બીજà«àª‚ ચિહà«àª¨.","underline":"અનà«àª¡àª°à«àª²àª¾àª‡àª¨, નીચે લીટી"},"about":{"copy":"કોપીરાઈટ © $1. ઓલ રાઈટà«àª¸ ","dlgTitle":"CKEditor વિષે","moreInfo":"લાયસનસની માહિતી માટે અમારી વેબ સાઈટ"},"editor":"રીચ ટેકà«àª·à«àª¤à« àªàª¡à«€àªŸàª°","editorPanel":"વધૠવિકલà«àªª વાળૠàªàª¡àª¿àªŸàª°","common":{"editorHelp":"મદદ માટ ALT 0 દબાવો","browseServer":"સરà«àªµàª° બà«àª°àª¾àª‰àª કરો","url":"URL","protocol":"પà«àª°à«‹àªŸà«‹àª•à«‰àª²","upload":"અપલોડ","uploadSubmit":"આ સરà«àªµàª°àª¨à«‡ મોકલવà«àª‚","image":"ચિતà«àª°","flash":"ફà«àª²à«…શ","form":"ફૉરà«àª®/પતà«àª°àª•","checkbox":"ચેક બોકà«àª¸","radio":"રેડિઓ બટન","textField":"ટેકà«àª¸à«àªŸ ફીલà«àª¡, શબà«àª¦ કà«àª·à«‡àª¤à«àª°","textarea":"ટેકà«àª¸à«àªŸ àªàª°àª¿àª†, શબà«àª¦ વિસà«àª¤àª¾àª°","hiddenField":"ગà«àªªà«àª¤ કà«àª·à«‡àª¤à«àª°","button":"બટન","select":"પસંદગી કà«àª·à«‡àª¤à«àª°","imageButton":"ચિતà«àª° બટન","notSet":"<સેટ નથી>","id":"Id","name":"નામ","langDir":"àªàª¾àª·àª¾ લેખવાની પદà«àª§àª¤àª¿","langDirLtr":"ડાબે થી જમણે (LTR)","langDirRtl":"જમણે થી ડાબે (RTL)","langCode":"àªàª¾àª·àª¾ કોડ","longDescr":"વધારે માહિતી માટે URL","cssClass":"સà«àªŸàª¾àª‡àª²-શીટ કà«àª²àª¾àª¸","advisoryTitle":"મà«àª–à«àª¯ મથાળà«àª‚","cssStyle":"સà«àªŸàª¾àª‡àª²","ok":"ઠીક છે","cancel":"રદ કરવà«àª‚","close":"બંધ કરવà«àª‚","preview":"જોવà«àª‚","resize":"ખેંચી ને યોગà«àª¯ કરવà«àª‚","generalTab":"જનરલ","advancedTab":"અડà«àªµàª¾àª¨à«àª¸àª¡","validateNumberFailed":"આ રકમ આકડો નથી.","confirmNewPage":"સવે કારà«àª¯ વગરનà«àª‚ ફકરો ખોવાઈ જશે. તમને ખાતરી છે કે તમને નવà«àª‚ પાનà«àª‚ ખોલવà«àª‚ છે?","confirmCancel":"ઘણા વિકલà«àªªà«‹ બદલાયા છે. તમારે આ બોકà«àª·à« બંધ કરવà«àª‚ છે?","options":"વિકલà«àªªà«‹","target":"લકà«àª·à«àª¯","targetNew":"નવી વિનà«àª¡à«‹ (_blank)","targetTop":"ઉપરની વિનà«àª¡à«‹ (_top)","targetSelf":"àªàªœ વિનà«àª¡à«‹ (_self)","targetParent":"પેરનટ વિનà«àª¡à«‹ (_parent)","langDirLTR":"ડાબે થી જમણે (LTR)","langDirRTL":"જમણે થી ડાબે (RTL)","styles":"શૈલી","cssClasses":"શૈલી કલાસીસ","width":"પહોળાઈ","height":"ઊંચાઈ","align":"લાઇનદોરીમાં ગોઠવવà«àª‚","left":"ડાબી બાજૠગોઠવવà«àª‚","right":"જમણી","center":"મધà«àª¯ સેનà«àªŸàª°","justify":"બà«àª²à«‰àª•, અંતરાય જસà«àªŸàª¿àª«àª¾àª‡","alignLeft":"ડાબી બાજà«àª/બાજૠતરફ","alignRight":"જમણી બાજà«àª/બાજૠતરફ","alignCenter":"Align Center","alignTop":"ઉપર","alignMiddle":"વચà«àªšà«‡","alignBottom":"નીચે","alignNone":"કઇ નહી","invalidValue":"અનà«àªšàª¿àª¤ મૂલà«àª¯","invalidHeight":"ઉંચાઈ àªàª• આંકડો હોવો જોઈàª.","invalidWidth":"પોહળ ઈ àªàª• આંકડો હોવો જોઈàª.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"\"%1\" ની વેલà«àª¯à« àªàª• પોસીટીવ આંકડો હોવો જોઈઠઅથવા CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc) વગર.","invalidHtmlLength":"\"%1\" ની વેલà«àª¯à« àªàª• પોસીટીવ આંકડો હોવો જોઈઠઅથવા HTML measurement unit (px or %) વગર.","invalidInlineStyle":"ઈનલાઈન સà«àªŸàª¾àªˆàª² ની વેલà«àª¯à« \"name : value\" ના ફોરà«àª®à«‡àªŸ માં હોવી જોઈàª, વચà«àªšà«‡ સેમી-કોલોન જોઈàª.","cssLengthTooltip":"પિકà«àª·à«àª²à« નો આંકડો CSS unit (px, %, in, cm, mm, em, ex, pt, or pc) માં નાખો.","unavailable":"%1<span class=\"cke_accessibility\">, નથી મળતà«àª‚</span>","keyboard":{"8":"Backspace કી","13":"Enter કી","16":"Shift કી","17":"Ctrl કી","18":"Alt કી","32":"Space કી","35":"End કી","36":"Home કી","46":"Delete કી","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command કી"},"keyboardShortcut":"કીબોરà«àª¡ શૉરà«àªŸàª•àªŸ","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['gu']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"રિડૂ; પછી હતી àªàªµà«€ સà«àª¥àª¿àª¤àª¿ પાછી લાવવી","undo":"રદ કરવà«àª‚; પહેલાં હતી àªàªµà«€ સà«àª¥àª¿àª¤àª¿ પાછી લાવવી"},"toolbar":{"toolbarCollapse":"ટૂલબાર નાનà«àª‚ કરવà«àª‚","toolbarExpand":"ટૂલબાર મોટà«àª‚ કરવà«àª‚","toolbarGroups":{"document":"દસà«àª¤àª¾àªµà«‡àªœ","clipboard":"કà«àª²àª¿àªªàª¬à«‹àª°à«àª¡/અન","editing":"àªàª¡à«€àªŸ કરવà«àª‚","forms":"ફોરà«àª®","basicstyles":"બેસિકૠસà«àªŸàª¾àª‡àª²","paragraph":"ફકરો","links":"લીંક","insert":"ઉમેરવà«àª‚","styles":"સà«àªŸàª¾àª‡àª²","colors":"રંગ","tools":"ટૂલà«àª¸"},"toolbars":"àªàª¡à«€àªŸàª° ટૂલ બાર"},"table":{"border":"કોઠાની બાજà«(બોરà«àª¡àª°) સાઇàª","caption":"મથાળà«àª‚/કૅપà«àª¶àª¨ ","cell":{"menu":"કોષના ખાના","insertBefore":"પહેલાં કોષ ઉમેરવો","insertAfter":"પછી કોષ ઉમેરવો","deleteCell":"કોષ ડિલીટ/કાઢી નાખવો","merge":"કોષ àªà«‡àª—ા કરવા","mergeRight":"જમણી બાજૠàªà«‡àª—ા કરવા","mergeDown":"નીચે àªà«‡àª—ા કરવા","splitHorizontal":"કોષને સમસà«àª¤àª°à«€àª¯ વિàªàª¾àªœàª¨ કરવà«àª‚","splitVertical":"કોષને સીધà«àª‚ ને ઊàªà«àª‚ વિàªàª¾àªœàª¨ કરવà«àª‚","title":"સેલના ગà«àª£","cellType":"સેલનો પà«àª°àª•àª¾àª°","rowSpan":"આડી કટારની જગà«àª¯àª¾","colSpan":"ઊàªà«€ કતારની જગà«àª¯àª¾","wordWrap":"વરà«àª¡ રેપ","hAlign":"સપાટ લાઈનદોરી","vAlign":"ઊàªà«€ લાઈનદોરી","alignBaseline":"બસે લાઈન","bgColor":"પાછાળનો રંગ","borderColor":"બોરà«àª¡à«‡àª° રંગ","data":"સà«àªµà«€àª•à«ƒàª¤ માહિતી","header":"મથાળà«àª‚","yes":"હા","no":"ના","invalidWidth":"સેલની પોહલાઈ આંકડો હોવો જોઈàª.","invalidHeight":"સેલની ઊંચાઈ આંકડો હોવો જોઈàª.","invalidRowSpan":"રો સà«àªªàª¾àª¨ આંકડો હોવો જોઈàª.","invalidColSpan":"કોલમ સà«àªªàª¾àª¨ આંકડો હોવો જોઈàª.","chooseColor":"પસંદ કરવà«àª‚"},"cellPad":"સેલ પૅડિંગ","cellSpace":"સેલ અંતર","column":{"menu":"કૉલમ/ઊàªà«€ કટાર","insertBefore":"પહેલાં કૉલમ/ઊàªà«€ કટાર ઉમેરવી","insertAfter":"પછી કૉલમ/ઊàªà«€ કટાર ઉમેરવી","deleteColumn":"કૉલમ/ઊàªà«€ કટાર ડિલીટ/કાઢી નાખવી"},"columns":"કૉલમ/ઊàªà«€ કટાર","deleteTable":"કોઠો ડિલીટ/કાઢી નાખવà«àª‚","headers":"મથાળા","headersBoth":"બેવà«àª‚","headersColumn":"પહેલી ઊàªà«€ કટાર","headersNone":"નથી ","headersRow":"પહેલી કટાર","heightUnit":"height unit","invalidBorder":"બોરà«àª¡àª° àªàª• આંકડો હોવો જોઈàª","invalidCellPadding":"સેલની અંદરની જગà«àª¯àª¾ સà«àª¨à«àª¯ કરતા વધારે હોવી જોઈàª.","invalidCellSpacing":"સેલ વચà«àªšà«‡àª¨à«€ જગà«àª¯àª¾ સà«àª¨à«àª¯ કરતા વધારે હોવી જોઈàª.","invalidCols":"ઉàªà«€ કટાર, 0 કરતા વધારે હોવી જોઈàª.","invalidHeight":"ટેબલની ઊંચાઈ આંકડો હોવો જોઈàª.","invalidRows":"આડી કટાર, 0 કરતા વધારે હોવી જોઈàª.","invalidWidth":"ટેબલની પોહલાઈ આંકડો હોવો જોઈàª.","menu":"ટેબલ, કોઠાનà«àª‚ મથાળà«àª‚","row":{"menu":"પંકà«àª¤àª¿àª¨àª¾ ખાના","insertBefore":"પહેલાં પંકà«àª¤àª¿ ઉમેરવી","insertAfter":"પછી પંકà«àª¤àª¿ ઉમેરવી","deleteRow":"પંકà«àª¤àª¿àª“ ડિલીટ/કાઢી નાખવી"},"rows":"પંકà«àª¤àª¿àª¨àª¾ ખાના","summary":"ટૂંકો àªàª¹à«‡àªµàª¾àª²","title":"ટેબલ, કોઠાનà«àª‚ મથાળà«àª‚","toolbar":"ટેબલ, કોઠો","widthPc":"પà«àª°àª¤àª¿àª¶àª¤","widthPx":"પિકસલ","widthUnit":"પોહાલાઈ àªàª•àª®"},"stylescombo":{"label":"શૈલી/રીત","panelTitle":"ફોરà«àª®à«‡àªŸ ","panelTitle1":"બà«àª²à«‹àª• ","panelTitle2":"ઈનલાઈન ","panelTitle3":"ઓબà«àªœà«‡àª•à«àªŸ પદà«àª§àª¤àª¿"},"specialchar":{"options":"સà«àªªà«‡àª¶àª¿àª…લ કરેકà«àªŸàª°àª¨àª¾ વિકલà«àªªà«‹","title":"સà«àªªà«‡àª¶àª¿àª…લ વિશિષà«àªŸ અકà«àª·àª° પસંદ કરો","toolbar":"વિશિષà«àªŸ અકà«àª·àª° ઇનà«àª¸àª°à«àªŸ/દાખલ કરવà«àª‚"},"sourcedialog":{"toolbar":"મૂળ કે પà«àª°àª¾àª¥àª®àª¿àª• દસà«àª¤àª¾àªµà«‡àªœ","title":"મૂળ કે પà«àª°àª¾àª¥àª®àª¿àª• દસà«àª¤àª¾àªµà«‡àªœ"},"sourcearea":{"toolbar":"મૂળ કે પà«àª°àª¾àª¥àª®àª¿àª• દસà«àª¤àª¾àªµà«‡àªœ"},"showblocks":{"toolbar":"બà«àª²à«‰àª• બતાવવà«àª‚"},"removeformat":{"toolbar":"ફૉરà«àª®àªŸ કાઢવà«àª‚"},"pastetext":{"button":"પેસà«àªŸ (ટેકà«àª¸à«àªŸ)","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"પેસà«àªŸ (ટેકà«àª¸à«àªŸ)"},"pastefromword":{"confirmCleanup":"તમે જે ટેકà«àª·à«àª¤à« કોપી કરી રહà«àª¯àª¾ છો ટે વરà«àª¡ ની છે. કોપી કરતા પેહલા સાફ કરવી છે?","error":"પેસà«àªŸ કરેલો ડેટા ઇનà«àªŸàª°àª¨àª² àªàª°àª° ના લીથે સાફ કરી શકાયો નથી.","title":"પેસà«àªŸ (વડૅ ટેકà«àª¸à«àªŸ)","toolbar":"પેસà«àªŸ (વડૅ ટેકà«àª¸à«àªŸ)"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"મોટà«àª‚ કરવà«àª‚","minimize":"નાનà«àª‚ કરવà«àª‚"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"બà«àª²à«‡àªŸ સૂચિ","numberedlist":"સંખà«àª¯àª¾àª‚કન સૂચિ"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"ઇનà«àª¡à«‡àª¨à«àªŸ, લીટીના આરંàªàª®àª¾àª‚ જગà«àª¯àª¾ વધારવી","outdent":"ઇનà«àª¡à«‡àª¨à«àªŸ લીટીના આરંàªàª®àª¾àª‚ જગà«àª¯àª¾ ઘટાડવી"},"image2":{"alt":"ઑલà«àªŸàª°à«àª¨àªŸ ટેકà«àª¸à«àªŸ","btnUpload":"આ સરà«àªµàª°àª¨à«‡ મોકલવà«àª‚","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"ચિતà«àª° ની જાણકારી","lockRatio":"લૉક ગà«àª£à«‹àª¤à«àª¤àª°","menu":"ચિતà«àª°àª¨àª¾ ગà«àª£","pathName":"image","pathNameCaption":"caption","resetSize":"રીસેટ સાઇàª","resizer":"Click and drag to resize","title":"ચિતà«àª°àª¨àª¾ ગà«àª£","uploadTab":"અપલોડ","urlMissing":"ઈમેજની મૂળ URL છે નહી.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"સમસà«àª¤àª°à«€àª¯ રેખા ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી"},"format":{"label":"ફૉનà«àªŸ ફૉરà«àª®àªŸ, રચનાની શૈલી","panelTitle":"ફૉનà«àªŸ ફૉરà«àª®àªŸ, રચનાની શૈલી","tag_address":"સરનામà«àª‚","tag_div":"શીરà«àª·àª• (DIV)","tag_h1":"શીરà«àª·àª• 1","tag_h2":"શીરà«àª·àª• 2","tag_h3":"શીરà«àª·àª• 3","tag_h4":"શીરà«àª·àª• 4","tag_h5":"શીરà«àª·àª• 5","tag_h6":"શીરà«àª·àª• 6","tag_p":"સામાનà«àª¯","tag_pre":"ફૉરà«àª®àªŸà«‡àª¡"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"àªàª²à«€àª®à«‡àª¨à«àªŸà«àª¸ નો ","eleTitle":"àªàª²à«€àª®à«‡àª¨à«àªŸ %1"},"contextmenu":{"options":"કોનà«àª¤à«‡àª•à«àª·à«àª¤à« મેનà«àª¨àª¾ વિકલà«àªªà«‹"},"clipboard":{"copy":"નકલ","copyError":"તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का पà¥à¤°à¤¯à¥‹à¤— करें।","cut":"કાપવà«àª‚","cutError":"તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.","paste":"પેસà«àªŸ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"પેસà«àªŸ કરવાની જગà«àª¯àª¾","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"બà«àª²à«‰àª•-કોટ, અવતરણચિહà«àª¨à«‹"},"basicstyles":{"bold":"બોલà«àª¡/સà«àªªàª·à«àªŸ","italic":"ઇટેલિક, તà«àª°àª¾àª‚સા","strike":"છેકી નાખવà«àª‚","subscript":"àªàª• ચિહà«àª¨àª¨à«€ નીચે કરેલà«àª‚ બીજà«àª‚ ચિહà«àª¨","superscript":"àªàª• ચિહà«àª¨ ઉપર કરેલà«àª‚ બીજà«àª‚ ચિહà«àª¨.","underline":"અનà«àª¡àª°à«àª²àª¾àª‡àª¨, નીચે લીટી"},"about":{"copy":"કોપીરાઈટ © $1. ઓલ રાઈટà«àª¸ ","dlgTitle":"CKEditor વિષે","moreInfo":"લાયસનસની માહિતી માટે અમારી વેબ સાઈટ"},"editor":"રીચ ટેકà«àª·à«àª¤à« àªàª¡à«€àªŸàª°","editorPanel":"વધૠવિકલà«àªª વાળૠàªàª¡àª¿àªŸàª°","common":{"editorHelp":"મદદ માટ ALT 0 દબાવો","browseServer":"સરà«àªµàª° બà«àª°àª¾àª‰àª કરો","url":"URL","protocol":"પà«àª°à«‹àªŸà«‹àª•à«‰àª²","upload":"અપલોડ","uploadSubmit":"આ સરà«àªµàª°àª¨à«‡ મોકલવà«àª‚","image":"ચિતà«àª°","form":"ફૉરà«àª®/પતà«àª°àª•","checkbox":"ચેક બોકà«àª¸","radio":"રેડિઓ બટન","textField":"ટેકà«àª¸à«àªŸ ફીલà«àª¡, શબà«àª¦ કà«àª·à«‡àª¤à«àª°","textarea":"ટેકà«àª¸à«àªŸ àªàª°àª¿àª†, શબà«àª¦ વિસà«àª¤àª¾àª°","hiddenField":"ગà«àªªà«àª¤ કà«àª·à«‡àª¤à«àª°","button":"બટન","select":"પસંદગી કà«àª·à«‡àª¤à«àª°","imageButton":"ચિતà«àª° બટન","notSet":"<સેટ નથી>","id":"Id","name":"નામ","langDir":"àªàª¾àª·àª¾ લેખવાની પદà«àª§àª¤àª¿","langDirLtr":"ડાબે થી જમણે (LTR)","langDirRtl":"જમણે થી ડાબે (RTL)","langCode":"àªàª¾àª·àª¾ કોડ","longDescr":"વધારે માહિતી માટે URL","cssClass":"સà«àªŸàª¾àª‡àª²-શીટ કà«àª²àª¾àª¸","advisoryTitle":"મà«àª–à«àª¯ મથાળà«àª‚","cssStyle":"સà«àªŸàª¾àª‡àª²","ok":"ઠીક છે","cancel":"રદ કરવà«àª‚","close":"બંધ કરવà«àª‚","preview":"જોવà«àª‚","resize":"ખેંચી ને યોગà«àª¯ કરવà«àª‚","generalTab":"જનરલ","advancedTab":"અડà«àªµàª¾àª¨à«àª¸àª¡","validateNumberFailed":"આ રકમ આકડો નથી.","confirmNewPage":"સવે કારà«àª¯ વગરનà«àª‚ ફકરો ખોવાઈ જશે. તમને ખાતરી છે કે તમને નવà«àª‚ પાનà«àª‚ ખોલવà«àª‚ છે?","confirmCancel":"ઘણા વિકલà«àªªà«‹ બદલાયા છે. તમારે આ બોકà«àª·à« બંધ કરવà«àª‚ છે?","options":"વિકલà«àªªà«‹","target":"લકà«àª·à«àª¯","targetNew":"નવી વિનà«àª¡à«‹ (_blank)","targetTop":"ઉપરની વિનà«àª¡à«‹ (_top)","targetSelf":"àªàªœ વિનà«àª¡à«‹ (_self)","targetParent":"પેરનટ વિનà«àª¡à«‹ (_parent)","langDirLTR":"ડાબે થી જમણે (LTR)","langDirRTL":"જમણે થી ડાબે (RTL)","styles":"શૈલી","cssClasses":"શૈલી કલાસીસ","width":"પહોળાઈ","height":"ઊંચાઈ","align":"લાઇનદોરીમાં ગોઠવવà«àª‚","left":"ડાબી બાજૠગોઠવવà«àª‚","right":"જમણી","center":"મધà«àª¯ સેનà«àªŸàª°","justify":"બà«àª²à«‰àª•, અંતરાય જસà«àªŸàª¿àª«àª¾àª‡","alignLeft":"ડાબી બાજà«àª/બાજૠતરફ","alignRight":"જમણી બાજà«àª/બાજૠતરફ","alignCenter":"Align Center","alignTop":"ઉપર","alignMiddle":"વચà«àªšà«‡","alignBottom":"નીચે","alignNone":"કઇ નહી","invalidValue":"અનà«àªšàª¿àª¤ મૂલà«àª¯","invalidHeight":"ઉંચાઈ àªàª• આંકડો હોવો જોઈàª.","invalidWidth":"પોહળ ઈ àªàª• આંકડો હોવો જોઈàª.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"\"%1\" ની વેલà«àª¯à« àªàª• પોસીટીવ આંકડો હોવો જોઈઠઅથવા CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc) વગર.","invalidHtmlLength":"\"%1\" ની વેલà«àª¯à« àªàª• પોસીટીવ આંકડો હોવો જોઈઠઅથવા HTML measurement unit (px or %) વગર.","invalidInlineStyle":"ઈનલાઈન સà«àªŸàª¾àªˆàª² ની વેલà«àª¯à« \"name : value\" ના ફોરà«àª®à«‡àªŸ માં હોવી જોઈàª, વચà«àªšà«‡ સેમી-કોલોન જોઈàª.","cssLengthTooltip":"પિકà«àª·à«àª²à« નો આંકડો CSS unit (px, %, in, cm, mm, em, ex, pt, or pc) માં નાખો.","unavailable":"%1<span class=\"cke_accessibility\">, નથી મળતà«àª‚</span>","keyboard":{"8":"Backspace કી","13":"Enter કી","16":"Shift કી","17":"Ctrl કી","18":"Alt કી","32":"Space કી","35":"End કી","36":"Home કી","46":"Delete કી","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command કી"},"keyboardShortcut":"કીબોરà«àª¡ શૉરà«àªŸàª•àªŸ","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/he.js b/core/assets/vendor/ckeditor/lang/he.js index 2420b56946cb..f7e6fedd71c5 100644 --- a/core/assets/vendor/ckeditor/lang/he.js +++ b/core/assets/vendor/ckeditor/lang/he.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['he']={"widget":{"move":"לחץ וגרור להזזה","label":"%1 widget"},"undo":{"redo":"חזרה על צעד ×חרון","undo":"ביטול צעד ×חרון"},"toolbar":{"toolbarCollapse":"מזעור סרגל כלי×","toolbarExpand":"הרחבת סרגל כלי×","toolbarGroups":{"document":"מסמך","clipboard":"לוח ×”×’×–×™×¨×™× (Clipboard)/צעד ×חרון","editing":"עריכה","forms":"טפסי×","basicstyles":"עיצוב בסיסי","paragraph":"פסקה","links":"קישורי×","insert":"×”×›× ×¡×”","styles":"עיצוב","colors":"צבעי×","tools":"כלי×"},"toolbars":"סרגלי ×›×œ×™× ×©×œ העורך"},"table":{"border":"גודל מסגרת","caption":"כיתוב","cell":{"menu":"מ××¤×™×™× ×™ ת×","insertBefore":"הוספת ×ª× ×œ×¤× ×™","insertAfter":"הוספת ×ª× ×חרי","deleteCell":"מחיקת ת××™×","merge":"מיזוג ת××™×","mergeRight":"מזג ×™×ž×™× ×”","mergeDown":"מזג למטה","splitHorizontal":"פיצול ×ª× ×ופקית","splitVertical":"פיצול ×ª× ×× ×›×™×ª","title":"×ª×›×•× ×•×ª הת×","cellType":"סוג הת×","rowSpan":"מתיחת השורות","colSpan":"מתיחת הת××™×","wordWrap":"×ž× ×™×¢×ª גלישת שורות","hAlign":"יישור ×ופקי","vAlign":"יישור ×× ×›×™","alignBaseline":"שורת בסיס","bgColor":"צבע רקע","borderColor":"צבע מסגרת","data":"מידע","header":"כותרת","yes":"כן","no":"ל×","invalidWidth":"שדה רוחב ×”×ª× ×—×™×™×‘ להיות מספר.","invalidHeight":"שדה גובה ×”×ª× ×—×™×™×‘ להיות מספר.","invalidRowSpan":"שדה מתיחת השורות חייב להיות מספר של×.","invalidColSpan":"שדה מתיחת העמודות חייב להיות מספר של×.","chooseColor":"בחר"},"cellPad":"ריפוד ת×","cellSpace":"מרווח ת×","column":{"menu":"עמודה","insertBefore":"הוספת עמודה ×œ×¤× ×™","insertAfter":"הוספת עמודה ×חרי","deleteColumn":"מחיקת עמודות"},"columns":"עמודות","deleteTable":"מחק טבלה","headers":"כותרות","headersBoth":"×©× ×™×”×","headersColumn":"עמודה ר××©×•× ×”","headersNone":"×ין","headersRow":"שורה ר××©×•× ×”","heightUnit":"height unit","invalidBorder":"שדה גודל המסגרת חייב להיות מספר.","invalidCellPadding":"שדה ריפוד הת××™× ×—×™×™×‘ להיות מספר חיובי.","invalidCellSpacing":"שדה ריווח הת××™× ×—×™×™×‘ להיות מספר חיובי.","invalidCols":"שדה מספר העמודות חייב להיות מספר גדול מ 0.","invalidHeight":"שדה גובה הטבלה חייב להיות מספר.","invalidRows":"שדה מספר השורות חייב להיות מספר גדול מ 0.","invalidWidth":"שדה רוחב הטבלה חייב להיות מספר.","menu":"מ××¤×™×™× ×™ טבלה","row":{"menu":"שורה","insertBefore":"הוספת שורה ×œ×¤× ×™","insertAfter":"הוספת שורה ×חרי","deleteRow":"מחיקת שורות"},"rows":"שורות","summary":"תקציר","title":"מ××¤×™×™× ×™ טבלה","toolbar":"טבלה","widthPc":"×חוז","widthPx":"פיקסלי×","widthUnit":"יחידת רוחב"},"stylescombo":{"label":"×¡×’× ×•×Ÿ","panelTitle":"×¡×’× ×•× ×•×ª פורמט","panelTitle1":"×¡×’× ×•× ×•×ª בלוק","panelTitle2":"×¡×’× ×•× ×•×ª רצף","panelTitle3":"×¡×’× ×•× ×•×ª ×ובייקט"},"specialchar":{"options":"×פשרויות ×ª×•×•×™× ×ž×™×•×—×“×™×","title":"בחירת תו מיוחד","toolbar":"הוספת תו מיוחד"},"sourcedialog":{"toolbar":"מקור","title":"מקור"},"sourcearea":{"toolbar":"מקור"},"showblocks":{"toolbar":"הצגת בלוקי×"},"removeformat":{"toolbar":"הסרת העיצוב"},"pastetext":{"button":"הדבקה כטקסט פשוט","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"הדבקה כטקסט פשוט"},"pastefromword":{"confirmCleanup":"× ×¨××” הטקסט ×©×‘×›×•×•× ×ª×š להדביק מקורו בקובץ וורד. ×”×× ×‘×¨×¦×•× ×š ×œ× ×§×•×ª ×ותו ×˜×¨× ×”×”×“×‘×§×”?","error":"×œ× × ×™×ª×Ÿ ×”×™×” ×œ× ×§×•×ª ×ת המידע בשל תקלה ×¤× ×™×ž×™×ª.","title":"הדבקה מ-Word","toolbar":"הדבקה מ-Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"הגדלה למקסימו×","minimize":"×”×§×˜× ×” ×œ×ž×™× ×™×ž×•×"},"magicline":{"title":"×”×›× ×¡ פסקה ×›×ן"},"list":{"bulletedlist":"רשימת × ×§×•×“×•×ª","numberedlist":"רשימה ממוספרת"},"language":{"button":"צור שפה","remove":"הסר שפה"},"indent":{"indent":"הגדלת ×”×–×—×”","outdent":"×”×§×˜× ×ª ×”×–×—×”"},"image2":{"alt":"טקסט חלופי","btnUpload":"שליחה לשרת","captioned":"כותרת ×ª×ž×•× ×”","captionPlaceholder":"כותרת","infoTab":"מידע על ×”×ª×ž×•× ×”","lockRatio":"× ×¢×™×œ×ª היחס","menu":"×ª×›×•× ×•×ª ×”×ª×ž×•× ×”","pathName":"×ª×ž×•× ×”","pathNameCaption":"כותרת","resetSize":"×יפוס הגודל","resizer":"לחץ וגרור ×œ×©×™× ×•×™ הגודל","title":"מ××¤×™×™× ×™ ×”×ª×ž×•× ×”","uploadTab":"העל××”","urlMissing":"כתובת ×”×ª×ž×•× ×” חסרה.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"הוספת קו ×ופקי"},"format":{"label":"עיצוב","panelTitle":"עיצוב","tag_address":"כתובת","tag_div":"× ×•×¨×ž×œ×™ (DIV)","tag_h1":"כותרת","tag_h2":"כותרת 2","tag_h3":"כותרת 3","tag_h4":"כותרת 4","tag_h5":"כותרת 5","tag_h6":"כותרת 6","tag_p":"× ×•×¨×ž×œ×™","tag_pre":"קוד"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"×¢×¥ ×”××œ×ž× ×˜×™×","eleTitle":"%1 ××œ×ž× ×˜"},"contextmenu":{"options":"×פשרויות תפריט ההקשר"},"clipboard":{"copy":"העתקה","copyError":"הגדרות ×”×בטחה בדפדפן שלך ×œ× ×ž×פשרות לעורך לבצע פעולות העתקה ×וטומטיות. יש להשתמש במקלדת ×œ×©× ×›×š (Ctrl/Cmd+C).","cut":"גזירה","cutError":"הגדרות ×”×בטחה בדפדפן שלך ×œ× ×ž×פשרות לעורך לבצע פעולות גזירה ×וטומטיות. יש להשתמש במקלדת ×œ×©× ×›×š (Ctrl/Cmd+X).","paste":"הדבקה","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"×יזור הדבקה","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"בלוק ציטוט"},"basicstyles":{"bold":"מודגש","italic":"× ×˜×•×™","strike":"כתיב מחוק","subscript":"כתיב תחתון","superscript":"כתיב עליון","underline":"קו תחתון"},"about":{"copy":"Copyright © $1. כל הזכויות שמורות.","dlgTitle":"×ודות CKEditor","moreInfo":"למידע × ×•×¡×£ בקרו ב××ª×¨× ×•:"},"editor":"עורך טקסט עשיר","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"לחץ ×לט ALT + 0 לעזרה","browseServer":"סייר השרת","url":"כתובת (URL)","protocol":"פרוטוקול","upload":"העל××”","uploadSubmit":"שליחה לשרת","image":"×ª×ž×•× ×”","flash":"פל×ש","form":"טופס","checkbox":"תיבת סימון","radio":"לחצן ×פשרויות","textField":"שדה טקסט","textarea":"×יזור טקסט","hiddenField":"שדה חבוי","button":"כפתור","select":"שדה בחירה","imageButton":"כפתור ×ª×ž×•× ×”","notSet":"<×œ× × ×§×‘×¢>","id":"זיהוי (ID)","name":"ש×","langDir":"כיוון שפה","langDirLtr":"שמ×ל לימין (LTR)","langDirRtl":"ימין לשמ×ל (RTL)","langCode":"קוד שפה","longDescr":"קישור לתי×ור מפורט","cssClass":"מחלקת עיצוב (CSS Class)","advisoryTitle":"כותרת מוצעת","cssStyle":"×¡×’× ×•×Ÿ","ok":"×ישור","cancel":"ביטול","close":"סגירה","preview":"תצוגה מקדימה","resize":"יש לגרור בכדי ×œ×©× ×•×ª ×ת הגודל","generalTab":"כללי","advancedTab":"×פשרויות מתקדמות","validateNumberFailed":"הערך חייב להיות מספרי.","confirmNewPage":"כל ×”×©×™× ×•×™×™× ×©×œ× × ×©×ž×¨×• ×™×בדו. ×”×× ×œ×”×¢×œ×•×ª דף חדש?","confirmCancel":"חלק מה×פשרויות ×©×•× ×•, ×”×× ×œ×¡×’×•×¨ ×ת הדי×לוג?","options":"×פשרויות","target":"מטרה","targetNew":"חלון חדש (_blank)","targetTop":"החלון העליון ביותר (_top)","targetSelf":"×ותו חלון (_self)","targetParent":"חלון ×”×ב (_parent)","langDirLTR":"שמ×ל לימין (LTR)","langDirRTL":"ימין לשמ×ל (RTL)","styles":"×¡×’× ×•×Ÿ","cssClasses":"מחלקות ×’×œ×™×•× ×•×ª ×¡×’× ×•×Ÿ","width":"רוחב","height":"גובה","align":"יישור","left":"לשמ×ל","right":"לימין","center":"מרכז","justify":"יישור לשוליי×","alignLeft":"יישור לשמ×ל","alignRight":"יישור לימין","alignCenter":"Align Center","alignTop":"למעלה","alignMiddle":"ל×מצע","alignBottom":"לתחתית","alignNone":"None","invalidValue":"ערך ×œ× ×—×•×§×™.","invalidHeight":"הגובה חייב להיות מספר.","invalidWidth":"הרוחב חייב להיות מספר.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"הערך שצוין לשדה \"%1\" חייב להיות מספר חיובי ×¢× ×ו ×œ×œ× ×™×—×™×“×ª מידה חוקית של CSS (px, %, in, cm, mm, em, ex, pt, ×ו pc).","invalidHtmlLength":"הערך שצוין לשדה \"%1\" חייב להיות מספר חיובי ×¢× ×ו ×œ×œ× ×™×—×™×“×ª מידה חוקית של HTML (px ×ו %).","invalidInlineStyle":"הערך שצויין לשדה ×”×¡×’× ×•×Ÿ חייב להכיל זוג ×¢×¨×›×™× ×חד ×ו יותר בפורמט \"×©× : ערך\", ×ž×•×¤×¨×“×™× ×¢×œ ידי × ×§×•×“×”-פסיק.","cssLengthTooltip":"יש ×œ×”×›× ×™×¡ מספר המייצג ×¤×™×§×¡×œ×™× ×ו מספר ×¢× ×™×—×™×“×ª ×’×œ×™×•× ×•×ª ×¡×’× ×•×Ÿ ×ª×§×™× ×” (px, %, in, cm, mm, em, ex, pt, ×ו pc).","unavailable":"%1<span class=\"cke_accessibility\">, ×œ× ×–×ž×™×Ÿ</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"מחק","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['he']={"widget":{"move":"לחץ וגרור להזזה","label":"%1 widget"},"undo":{"redo":"חזרה על צעד ×חרון","undo":"ביטול צעד ×חרון"},"toolbar":{"toolbarCollapse":"מזעור סרגל כלי×","toolbarExpand":"הרחבת סרגל כלי×","toolbarGroups":{"document":"מסמך","clipboard":"לוח ×”×’×–×™×¨×™× (Clipboard)/צעד ×חרון","editing":"עריכה","forms":"טפסי×","basicstyles":"עיצוב בסיסי","paragraph":"פסקה","links":"קישורי×","insert":"×”×›× ×¡×”","styles":"עיצוב","colors":"צבעי×","tools":"כלי×"},"toolbars":"סרגלי ×›×œ×™× ×©×œ העורך"},"table":{"border":"גודל מסגרת","caption":"כיתוב","cell":{"menu":"מ××¤×™×™× ×™ ת×","insertBefore":"הוספת ×ª× ×œ×¤× ×™","insertAfter":"הוספת ×ª× ×חרי","deleteCell":"מחיקת ת××™×","merge":"מיזוג ת××™×","mergeRight":"מזג ×™×ž×™× ×”","mergeDown":"מזג למטה","splitHorizontal":"פיצול ×ª× ×ופקית","splitVertical":"פיצול ×ª× ×× ×›×™×ª","title":"×ª×›×•× ×•×ª הת×","cellType":"סוג הת×","rowSpan":"מתיחת השורות","colSpan":"מתיחת הת××™×","wordWrap":"×ž× ×™×¢×ª גלישת שורות","hAlign":"יישור ×ופקי","vAlign":"יישור ×× ×›×™","alignBaseline":"שורת בסיס","bgColor":"צבע רקע","borderColor":"צבע מסגרת","data":"מידע","header":"כותרת","yes":"כן","no":"ל×","invalidWidth":"שדה רוחב ×”×ª× ×—×™×™×‘ להיות מספר.","invalidHeight":"שדה גובה ×”×ª× ×—×™×™×‘ להיות מספר.","invalidRowSpan":"שדה מתיחת השורות חייב להיות מספר של×.","invalidColSpan":"שדה מתיחת העמודות חייב להיות מספר של×.","chooseColor":"בחר"},"cellPad":"ריפוד ת×","cellSpace":"מרווח ת×","column":{"menu":"עמודה","insertBefore":"הוספת עמודה ×œ×¤× ×™","insertAfter":"הוספת עמודה ×חרי","deleteColumn":"מחיקת עמודות"},"columns":"עמודות","deleteTable":"מחק טבלה","headers":"כותרות","headersBoth":"×©× ×™×”×","headersColumn":"עמודה ר××©×•× ×”","headersNone":"×ין","headersRow":"שורה ר××©×•× ×”","heightUnit":"height unit","invalidBorder":"שדה גודל המסגרת חייב להיות מספר.","invalidCellPadding":"שדה ריפוד הת××™× ×—×™×™×‘ להיות מספר חיובי.","invalidCellSpacing":"שדה ריווח הת××™× ×—×™×™×‘ להיות מספר חיובי.","invalidCols":"שדה מספר העמודות חייב להיות מספר גדול מ 0.","invalidHeight":"שדה גובה הטבלה חייב להיות מספר.","invalidRows":"שדה מספר השורות חייב להיות מספר גדול מ 0.","invalidWidth":"שדה רוחב הטבלה חייב להיות מספר.","menu":"מ××¤×™×™× ×™ טבלה","row":{"menu":"שורה","insertBefore":"הוספת שורה ×œ×¤× ×™","insertAfter":"הוספת שורה ×חרי","deleteRow":"מחיקת שורות"},"rows":"שורות","summary":"תקציר","title":"מ××¤×™×™× ×™ טבלה","toolbar":"טבלה","widthPc":"×חוז","widthPx":"פיקסלי×","widthUnit":"יחידת רוחב"},"stylescombo":{"label":"×¡×’× ×•×Ÿ","panelTitle":"×¡×’× ×•× ×•×ª פורמט","panelTitle1":"×¡×’× ×•× ×•×ª בלוק","panelTitle2":"×¡×’× ×•× ×•×ª רצף","panelTitle3":"×¡×’× ×•× ×•×ª ×ובייקט"},"specialchar":{"options":"×פשרויות ×ª×•×•×™× ×ž×™×•×—×“×™×","title":"בחירת תו מיוחד","toolbar":"הוספת תו מיוחד"},"sourcedialog":{"toolbar":"מקור","title":"מקור"},"sourcearea":{"toolbar":"מקור"},"showblocks":{"toolbar":"הצגת בלוקי×"},"removeformat":{"toolbar":"הסרת העיצוב"},"pastetext":{"button":"הדבקה כטקסט פשוט","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"הדבקה כטקסט פשוט"},"pastefromword":{"confirmCleanup":"× ×¨××” הטקסט ×©×‘×›×•×•× ×ª×š להדביק מקורו בקובץ וורד. ×”×× ×‘×¨×¦×•× ×š ×œ× ×§×•×ª ×ותו ×˜×¨× ×”×”×“×‘×§×”?","error":"×œ× × ×™×ª×Ÿ ×”×™×” ×œ× ×§×•×ª ×ת המידע בשל תקלה ×¤× ×™×ž×™×ª.","title":"הדבקה מ-Word","toolbar":"הדבקה מ-Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"הגדלה למקסימו×","minimize":"×”×§×˜× ×” ×œ×ž×™× ×™×ž×•×"},"magicline":{"title":"×”×›× ×¡ פסקה ×›×ן"},"list":{"bulletedlist":"רשימת × ×§×•×“×•×ª","numberedlist":"רשימה ממוספרת"},"language":{"button":"צור שפה","remove":"הסר שפה"},"indent":{"indent":"הגדלת ×”×–×—×”","outdent":"×”×§×˜× ×ª ×”×–×—×”"},"image2":{"alt":"טקסט חלופי","btnUpload":"שליחה לשרת","captioned":"כותרת ×ª×ž×•× ×”","captionPlaceholder":"כותרת","infoTab":"מידע על ×”×ª×ž×•× ×”","lockRatio":"× ×¢×™×œ×ª היחס","menu":"×ª×›×•× ×•×ª ×”×ª×ž×•× ×”","pathName":"×ª×ž×•× ×”","pathNameCaption":"כותרת","resetSize":"×יפוס הגודל","resizer":"לחץ וגרור ×œ×©×™× ×•×™ הגודל","title":"מ××¤×™×™× ×™ ×”×ª×ž×•× ×”","uploadTab":"העל××”","urlMissing":"כתובת ×”×ª×ž×•× ×” חסרה.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"הוספת קו ×ופקי"},"format":{"label":"עיצוב","panelTitle":"עיצוב","tag_address":"כתובת","tag_div":"× ×•×¨×ž×œ×™ (DIV)","tag_h1":"כותרת","tag_h2":"כותרת 2","tag_h3":"כותרת 3","tag_h4":"כותרת 4","tag_h5":"כותרת 5","tag_h6":"כותרת 6","tag_p":"× ×•×¨×ž×œ×™","tag_pre":"קוד"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"×¢×¥ ×”××œ×ž× ×˜×™×","eleTitle":"%1 ××œ×ž× ×˜"},"contextmenu":{"options":"×פשרויות תפריט ההקשר"},"clipboard":{"copy":"העתקה","copyError":"הגדרות ×”×בטחה בדפדפן שלך ×œ× ×ž×פשרות לעורך לבצע פעולות העתקה ×וטומטיות. יש להשתמש במקלדת ×œ×©× ×›×š (Ctrl/Cmd+C).","cut":"גזירה","cutError":"הגדרות ×”×בטחה בדפדפן שלך ×œ× ×ž×פשרות לעורך לבצע פעולות גזירה ×וטומטיות. יש להשתמש במקלדת ×œ×©× ×›×š (Ctrl/Cmd+X).","paste":"הדבקה","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"×יזור הדבקה","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"בלוק ציטוט"},"basicstyles":{"bold":"מודגש","italic":"× ×˜×•×™","strike":"כתיב מחוק","subscript":"כתיב תחתון","superscript":"כתיב עליון","underline":"קו תחתון"},"about":{"copy":"Copyright © $1. כל הזכויות שמורות.","dlgTitle":"×ודות CKEditor","moreInfo":"למידע × ×•×¡×£ בקרו ב××ª×¨× ×•:"},"editor":"עורך טקסט עשיר","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"לחץ ×לט ALT + 0 לעזרה","browseServer":"סייר השרת","url":"כתובת (URL)","protocol":"פרוטוקול","upload":"העל××”","uploadSubmit":"שליחה לשרת","image":"×ª×ž×•× ×”","form":"טופס","checkbox":"תיבת סימון","radio":"לחצן ×פשרויות","textField":"שדה טקסט","textarea":"×יזור טקסט","hiddenField":"שדה חבוי","button":"כפתור","select":"שדה בחירה","imageButton":"כפתור ×ª×ž×•× ×”","notSet":"<×œ× × ×§×‘×¢>","id":"זיהוי (ID)","name":"ש×","langDir":"כיוון שפה","langDirLtr":"שמ×ל לימין (LTR)","langDirRtl":"ימין לשמ×ל (RTL)","langCode":"קוד שפה","longDescr":"קישור לתי×ור מפורט","cssClass":"מחלקת עיצוב (CSS Class)","advisoryTitle":"כותרת מוצעת","cssStyle":"×¡×’× ×•×Ÿ","ok":"×ישור","cancel":"ביטול","close":"סגירה","preview":"תצוגה מקדימה","resize":"יש לגרור בכדי ×œ×©× ×•×ª ×ת הגודל","generalTab":"כללי","advancedTab":"×פשרויות מתקדמות","validateNumberFailed":"הערך חייב להיות מספרי.","confirmNewPage":"כל ×”×©×™× ×•×™×™× ×©×œ× × ×©×ž×¨×• ×™×בדו. ×”×× ×œ×”×¢×œ×•×ª דף חדש?","confirmCancel":"חלק מה×פשרויות ×©×•× ×•, ×”×× ×œ×¡×’×•×¨ ×ת הדי×לוג?","options":"×פשרויות","target":"מטרה","targetNew":"חלון חדש (_blank)","targetTop":"החלון העליון ביותר (_top)","targetSelf":"×ותו חלון (_self)","targetParent":"חלון ×”×ב (_parent)","langDirLTR":"שמ×ל לימין (LTR)","langDirRTL":"ימין לשמ×ל (RTL)","styles":"×¡×’× ×•×Ÿ","cssClasses":"מחלקות ×’×œ×™×•× ×•×ª ×¡×’× ×•×Ÿ","width":"רוחב","height":"גובה","align":"יישור","left":"לשמ×ל","right":"לימין","center":"מרכז","justify":"יישור לשוליי×","alignLeft":"יישור לשמ×ל","alignRight":"יישור לימין","alignCenter":"Align Center","alignTop":"למעלה","alignMiddle":"ל×מצע","alignBottom":"לתחתית","alignNone":"None","invalidValue":"ערך ×œ× ×—×•×§×™.","invalidHeight":"הגובה חייב להיות מספר.","invalidWidth":"הרוחב חייב להיות מספר.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"הערך שצוין לשדה \"%1\" חייב להיות מספר חיובי ×¢× ×ו ×œ×œ× ×™×—×™×“×ª מידה חוקית של CSS (px, %, in, cm, mm, em, ex, pt, ×ו pc).","invalidHtmlLength":"הערך שצוין לשדה \"%1\" חייב להיות מספר חיובי ×¢× ×ו ×œ×œ× ×™×—×™×“×ª מידה חוקית של HTML (px ×ו %).","invalidInlineStyle":"הערך שצויין לשדה ×”×¡×’× ×•×Ÿ חייב להכיל זוג ×¢×¨×›×™× ×חד ×ו יותר בפורמט \"×©× : ערך\", ×ž×•×¤×¨×“×™× ×¢×œ ידי × ×§×•×“×”-פסיק.","cssLengthTooltip":"יש ×œ×”×›× ×™×¡ מספר המייצג ×¤×™×§×¡×œ×™× ×ו מספר ×¢× ×™×—×™×“×ª ×’×œ×™×•× ×•×ª ×¡×’× ×•×Ÿ ×ª×§×™× ×” (px, %, in, cm, mm, em, ex, pt, ×ו pc).","unavailable":"%1<span class=\"cke_accessibility\">, ×œ× ×–×ž×™×Ÿ</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"מחק","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/hi.js b/core/assets/vendor/ckeditor/lang/hi.js index 218eb6fabb36..a918cf04a797 100644 --- a/core/assets/vendor/ckeditor/lang/hi.js +++ b/core/assets/vendor/ckeditor/lang/hi.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['hi']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"रीडू","undo":"अनà¥à¤¡à¥‚"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"à¤à¤¡à¤¿à¤Ÿà¤° टूलबार"},"table":{"border":"बॉरà¥à¤¡à¤° साइज़","caption":"शीरà¥à¤·à¤•","cell":{"menu":"खाना","insertBefore":"पहले सैल डालें","insertAfter":"बाद में सैल डालें","deleteCell":"सैल डिलीट करें","merge":"सैल मिलायें","mergeRight":"बाà¤à¤¯à¤¾ विलय","mergeDown":"नीचे विलय करें","splitHorizontal":"सैल को कà¥à¤·à¥ˆà¤¤à¤¿à¤œ सà¥à¤¥à¤¿à¤¤à¤¿ में विà¤à¤¾à¤œà¤¿à¤¤ करें","splitVertical":"सैल को लमà¥à¤¬à¤¾à¤•à¤¾à¤° में विà¤à¤¾à¤œà¤¿à¤¤ करें","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"सैल पैडिंग","cellSpace":"सैल अंतर","column":{"menu":"कालम","insertBefore":"पहले कालम डालें","insertAfter":"बाद में कालम डालें","deleteColumn":"कालम डिलीट करें"},"columns":"कालम","deleteTable":"टेबल डिलीट करें","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"टेबल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›","row":{"menu":"पंकà¥à¤¤à¤¿","insertBefore":"पहले पंकà¥à¤¤à¤¿ डालें","insertAfter":"बाद में पंकà¥à¤¤à¤¿ डालें","deleteRow":"पंकà¥à¤¤à¤¿à¤¯à¤¾à¤ डिलीट करें"},"rows":"पंकà¥à¤¤à¤¿à¤¯à¤¾à¤","summary":"सारांश","title":"टेबल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›","toolbar":"टेबल","widthPc":"पà¥à¤°à¤¤à¤¿à¤¶à¤¤","widthPx":"पिकà¥à¤¸à¥ˆà¤²","widthUnit":"width unit"},"stylescombo":{"label":"सà¥à¤Ÿà¤¾à¤‡à¤²","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"विशेष चरितà¥à¤° विकलà¥à¤ª","title":"विशेष करॅकà¥à¤Ÿà¤° चà¥à¤¨à¥‡à¤‚","toolbar":"विशेष करॅकà¥à¤Ÿà¤° इनà¥à¤¸à¤°à¥à¤Ÿ करें"},"sourcedialog":{"toolbar":"सोरà¥à¤¸","title":"सोरà¥à¤¸"},"sourcearea":{"toolbar":"सोरà¥à¤¸"},"showblocks":{"toolbar":"बà¥à¤²à¥‰à¤• दिखायें"},"removeformat":{"toolbar":"फ़ॉरà¥à¤®à¥ˆà¤Ÿ हटायें"},"pastetext":{"button":"पेसà¥à¤Ÿ (सादा टॅकà¥à¤¸à¥à¤Ÿ)","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"पेसà¥à¤Ÿ (सादा टॅकà¥à¤¸à¥à¤Ÿ)"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"पेसà¥à¤Ÿ (वरà¥à¤¡ से)","toolbar":"पेसà¥à¤Ÿ (वरà¥à¤¡ से)"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"मेकà¥à¤¸à¤¿à¤®à¤¾à¤ˆà¤œà¤¼","minimize":"मिनिमाईज़"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"बà¥à¤²à¥…ट सूची","numberedlist":"अंकीय सूची"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"इनà¥à¤¡à¥…नà¥à¤Ÿ बà¥à¤¾à¤¯à¥‡à¤‚","outdent":"इनà¥à¤¡à¥…नà¥à¤Ÿ कम करें"},"image2":{"alt":"वैकलà¥à¤ªà¤¿à¤• टेकà¥à¤¸à¥à¤Ÿ","btnUpload":"इसे सरà¥à¤µà¤° को à¤à¥‡à¤œà¥‡à¤‚","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"तसà¥à¤µà¥€à¤° की जानकारी","lockRatio":"लॉक अनà¥à¤ªà¤¾à¤¤","menu":"तसà¥à¤µà¥€à¤° पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›","pathName":"image","pathNameCaption":"caption","resetSize":"रीसॅट साइज़","resizer":"Click and drag to resize","title":"तसà¥à¤µà¥€à¤° पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›","uploadTab":"अपलोड","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"हॉरिज़ॉनà¥à¤Ÿà¤² रेखा इनà¥à¤¸à¤°à¥à¤Ÿ करें"},"format":{"label":"फ़ॉरà¥à¤®à¥ˆà¤Ÿ","panelTitle":"फ़ॉरà¥à¤®à¥ˆà¤Ÿ","tag_address":"पता","tag_div":"शीरà¥à¤·à¤• (DIV)","tag_h1":"शीरà¥à¤·à¤• 1","tag_h2":"शीरà¥à¤·à¤• 2","tag_h3":"शीरà¥à¤·à¤• 3","tag_h4":"शीरà¥à¤·à¤• 4","tag_h5":"शीरà¥à¤·à¤• 5","tag_h6":"शीरà¥à¤·à¤• 6","tag_p":"साधारण","tag_pre":"फ़ॉरà¥à¤®à¥ˆà¤Ÿà¥…ड"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"कॉपी","copyError":"आपके बà¥à¤°à¤¾à¤†à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ सॅटिनà¥à¤—à¥à¤¸ ने कॉपी करने की अनà¥à¤®à¤¤à¤¿ नहीं पà¥à¤°à¤¦à¤¾à¤¨ की है। (Ctrl/Cmd+C) का पà¥à¤°à¤¯à¥‹à¤— करें।","cut":"कट","cutError":"आपके बà¥à¤°à¤¾à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ सॅटिनà¥à¤—à¥à¤¸ ने कट करने की अनà¥à¤®à¤¤à¤¿ नहीं पà¥à¤°à¤¦à¤¾à¤¨ की है। (Ctrl/Cmd+X) का पà¥à¤°à¤¯à¥‹à¤— करें।","paste":"पेसà¥à¤Ÿ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"बà¥à¤²à¥‰à¤•-कोट"},"basicstyles":{"bold":"बोलà¥à¤¡","italic":"इटैलिक","strike":"सà¥à¤Ÿà¥à¤°à¤¾à¤‡à¤• थà¥à¤°à¥‚","subscript":"अधोलेख","superscript":"अà¤à¤¿à¤²à¥‡à¤–","underline":"रेखांकण"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"रिच टेकà¥à¤¸à¥à¤Ÿ à¤à¤¡à¤¿à¤Ÿà¤°","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"मदद के लिये ALT 0 दबाà¤","browseServer":"सरà¥à¤µà¤° बà¥à¤°à¤¾à¤‰à¥› करें","url":"URL","protocol":"पà¥à¤°à¥‹à¤Ÿà¥‹à¤•à¥‰à¤²","upload":"अपलोड","uploadSubmit":"इसे सरà¥à¤µà¤° को à¤à¥‡à¤œà¥‡à¤‚","image":"तसà¥à¤µà¥€à¤°","flash":"फ़à¥à¤²à¥ˆà¤¶","form":"फ़ॉरà¥à¤®","checkbox":"चॅक बॉकà¥à¤¸","radio":"रेडिओ बटन","textField":"टेकà¥à¤¸à¥à¤Ÿ फ़ीलà¥à¤¡","textarea":"टेकà¥à¤¸à¥à¤Ÿ à¤à¤°à¤¿à¤¯à¤¾","hiddenField":"गà¥à¤ªà¥à¤¤ फ़ीलà¥à¤¡","button":"बटन","select":"चà¥à¤¨à¤¾à¤µ फ़ीलà¥à¤¡","imageButton":"तसà¥à¤µà¥€à¤° बटन","notSet":"<सॅट नहीं>","id":"Id","name":"नाम","langDir":"à¤à¤¾à¤·à¤¾ लिखने की दिशा","langDirLtr":"बायें से दायें (LTR)","langDirRtl":"दायें से बायें (RTL)","langCode":"à¤à¤¾à¤·à¤¾ कोड","longDescr":"अधिक विवरण के लिठURL","cssClass":"सà¥à¤Ÿà¤¾à¤‡à¤²-शीट कà¥à¤²à¤¾à¤¸","advisoryTitle":"परामरà¥à¤¶ शीरà¥à¤¶à¤•","cssStyle":"सà¥à¤Ÿà¤¾à¤‡à¤²","ok":"ठीक है","cancel":"रदà¥à¤¦ करें","close":"Close","preview":"पà¥à¤°à¥€à¤µà¥à¤¯à¥‚","resize":"Resize","generalTab":"सामानà¥à¤¯","advancedTab":"à¤à¤¡à¥à¤µà¤¾à¤¨à¥à¤¸à¥à¤¡","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"टारà¥à¤—ेट","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"बायें से दायें (LTR)","langDirRTL":"दायें से बायें (RTL)","styles":"सà¥à¤Ÿà¤¾à¤‡à¤²","cssClasses":"सà¥à¤Ÿà¤¾à¤‡à¤²-शीट कà¥à¤²à¤¾à¤¸","width":"चौड़ाई","height":"ऊà¤à¤šà¤¾à¤ˆ","align":"à¤à¤²à¤¾à¤‡à¤¨","left":"दायें","right":"दायें","center":"बीच में","justify":"बà¥à¤²à¥‰à¤• जसà¥à¤Ÿà¥€à¥žà¤¾à¤ˆ","alignLeft":"बायीं तरफ","alignRight":"दायीं तरफ","alignCenter":"Align Center","alignTop":"ऊपर","alignMiddle":"मधà¥à¤¯","alignBottom":"नीचे","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['hi']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"रीडू","undo":"अनà¥à¤¡à¥‚"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"à¤à¤¡à¤¿à¤Ÿà¤° टूलबार"},"table":{"border":"बॉरà¥à¤¡à¤° साइज़","caption":"शीरà¥à¤·à¤•","cell":{"menu":"खाना","insertBefore":"पहले सैल डालें","insertAfter":"बाद में सैल डालें","deleteCell":"सैल डिलीट करें","merge":"सैल मिलायें","mergeRight":"बाà¤à¤¯à¤¾ विलय","mergeDown":"नीचे विलय करें","splitHorizontal":"सैल को कà¥à¤·à¥ˆà¤¤à¤¿à¤œ सà¥à¤¥à¤¿à¤¤à¤¿ में विà¤à¤¾à¤œà¤¿à¤¤ करें","splitVertical":"सैल को लमà¥à¤¬à¤¾à¤•à¤¾à¤° में विà¤à¤¾à¤œà¤¿à¤¤ करें","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"सैल पैडिंग","cellSpace":"सैल अंतर","column":{"menu":"कालम","insertBefore":"पहले कालम डालें","insertAfter":"बाद में कालम डालें","deleteColumn":"कालम डिलीट करें"},"columns":"कालम","deleteTable":"टेबल डिलीट करें","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"टेबल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›","row":{"menu":"पंकà¥à¤¤à¤¿","insertBefore":"पहले पंकà¥à¤¤à¤¿ डालें","insertAfter":"बाद में पंकà¥à¤¤à¤¿ डालें","deleteRow":"पंकà¥à¤¤à¤¿à¤¯à¤¾à¤ डिलीट करें"},"rows":"पंकà¥à¤¤à¤¿à¤¯à¤¾à¤","summary":"सारांश","title":"टेबल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›","toolbar":"टेबल","widthPc":"पà¥à¤°à¤¤à¤¿à¤¶à¤¤","widthPx":"पिकà¥à¤¸à¥ˆà¤²","widthUnit":"width unit"},"stylescombo":{"label":"सà¥à¤Ÿà¤¾à¤‡à¤²","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"विशेष चरितà¥à¤° विकलà¥à¤ª","title":"विशेष करॅकà¥à¤Ÿà¤° चà¥à¤¨à¥‡à¤‚","toolbar":"विशेष करॅकà¥à¤Ÿà¤° इनà¥à¤¸à¤°à¥à¤Ÿ करें"},"sourcedialog":{"toolbar":"सोरà¥à¤¸","title":"सोरà¥à¤¸"},"sourcearea":{"toolbar":"सोरà¥à¤¸"},"showblocks":{"toolbar":"बà¥à¤²à¥‰à¤• दिखायें"},"removeformat":{"toolbar":"फ़ॉरà¥à¤®à¥ˆà¤Ÿ हटायें"},"pastetext":{"button":"पेसà¥à¤Ÿ (सादा टॅकà¥à¤¸à¥à¤Ÿ)","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"पेसà¥à¤Ÿ (सादा टॅकà¥à¤¸à¥à¤Ÿ)"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"पेसà¥à¤Ÿ (वरà¥à¤¡ से)","toolbar":"पेसà¥à¤Ÿ (वरà¥à¤¡ से)"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"मेकà¥à¤¸à¤¿à¤®à¤¾à¤ˆà¤œà¤¼","minimize":"मिनिमाईज़"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"बà¥à¤²à¥…ट सूची","numberedlist":"अंकीय सूची"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"इनà¥à¤¡à¥…नà¥à¤Ÿ बà¥à¤¾à¤¯à¥‡à¤‚","outdent":"इनà¥à¤¡à¥…नà¥à¤Ÿ कम करें"},"image2":{"alt":"वैकलà¥à¤ªà¤¿à¤• टेकà¥à¤¸à¥à¤Ÿ","btnUpload":"इसे सरà¥à¤µà¤° को à¤à¥‡à¤œà¥‡à¤‚","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"तसà¥à¤µà¥€à¤° की जानकारी","lockRatio":"लॉक अनà¥à¤ªà¤¾à¤¤","menu":"तसà¥à¤µà¥€à¤° पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›","pathName":"image","pathNameCaption":"caption","resetSize":"रीसॅट साइज़","resizer":"Click and drag to resize","title":"तसà¥à¤µà¥€à¤° पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›","uploadTab":"अपलोड","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"हॉरिज़ॉनà¥à¤Ÿà¤² रेखा इनà¥à¤¸à¤°à¥à¤Ÿ करें"},"format":{"label":"फ़ॉरà¥à¤®à¥ˆà¤Ÿ","panelTitle":"फ़ॉरà¥à¤®à¥ˆà¤Ÿ","tag_address":"पता","tag_div":"शीरà¥à¤·à¤• (DIV)","tag_h1":"शीरà¥à¤·à¤• 1","tag_h2":"शीरà¥à¤·à¤• 2","tag_h3":"शीरà¥à¤·à¤• 3","tag_h4":"शीरà¥à¤·à¤• 4","tag_h5":"शीरà¥à¤·à¤• 5","tag_h6":"शीरà¥à¤·à¤• 6","tag_p":"साधारण","tag_pre":"फ़ॉरà¥à¤®à¥ˆà¤Ÿà¥…ड"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"कॉपी","copyError":"आपके बà¥à¤°à¤¾à¤†à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ सॅटिनà¥à¤—à¥à¤¸ ने कॉपी करने की अनà¥à¤®à¤¤à¤¿ नहीं पà¥à¤°à¤¦à¤¾à¤¨ की है। (Ctrl/Cmd+C) का पà¥à¤°à¤¯à¥‹à¤— करें।","cut":"कट","cutError":"आपके बà¥à¤°à¤¾à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ सॅटिनà¥à¤—à¥à¤¸ ने कट करने की अनà¥à¤®à¤¤à¤¿ नहीं पà¥à¤°à¤¦à¤¾à¤¨ की है। (Ctrl/Cmd+X) का पà¥à¤°à¤¯à¥‹à¤— करें।","paste":"पेसà¥à¤Ÿ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"बà¥à¤²à¥‰à¤•-कोट"},"basicstyles":{"bold":"बोलà¥à¤¡","italic":"इटैलिक","strike":"सà¥à¤Ÿà¥à¤°à¤¾à¤‡à¤• थà¥à¤°à¥‚","subscript":"अधोलेख","superscript":"अà¤à¤¿à¤²à¥‡à¤–","underline":"रेखांकण"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"रिच टेकà¥à¤¸à¥à¤Ÿ à¤à¤¡à¤¿à¤Ÿà¤°","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"मदद के लिये ALT 0 दबाà¤","browseServer":"सरà¥à¤µà¤° बà¥à¤°à¤¾à¤‰à¥› करें","url":"URL","protocol":"पà¥à¤°à¥‹à¤Ÿà¥‹à¤•à¥‰à¤²","upload":"अपलोड","uploadSubmit":"इसे सरà¥à¤µà¤° को à¤à¥‡à¤œà¥‡à¤‚","image":"तसà¥à¤µà¥€à¤°","form":"फ़ॉरà¥à¤®","checkbox":"चॅक बॉकà¥à¤¸","radio":"रेडिओ बटन","textField":"टेकà¥à¤¸à¥à¤Ÿ फ़ीलà¥à¤¡","textarea":"टेकà¥à¤¸à¥à¤Ÿ à¤à¤°à¤¿à¤¯à¤¾","hiddenField":"गà¥à¤ªà¥à¤¤ फ़ीलà¥à¤¡","button":"बटन","select":"चà¥à¤¨à¤¾à¤µ फ़ीलà¥à¤¡","imageButton":"तसà¥à¤µà¥€à¤° बटन","notSet":"<सॅट नहीं>","id":"Id","name":"नाम","langDir":"à¤à¤¾à¤·à¤¾ लिखने की दिशा","langDirLtr":"बायें से दायें (LTR)","langDirRtl":"दायें से बायें (RTL)","langCode":"à¤à¤¾à¤·à¤¾ कोड","longDescr":"अधिक विवरण के लिठURL","cssClass":"सà¥à¤Ÿà¤¾à¤‡à¤²-शीट कà¥à¤²à¤¾à¤¸","advisoryTitle":"परामरà¥à¤¶ शीरà¥à¤¶à¤•","cssStyle":"सà¥à¤Ÿà¤¾à¤‡à¤²","ok":"ठीक है","cancel":"रदà¥à¤¦ करें","close":"Close","preview":"पà¥à¤°à¥€à¤µà¥à¤¯à¥‚","resize":"Resize","generalTab":"सामानà¥à¤¯","advancedTab":"à¤à¤¡à¥à¤µà¤¾à¤¨à¥à¤¸à¥à¤¡","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"टारà¥à¤—ेट","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"बायें से दायें (LTR)","langDirRTL":"दायें से बायें (RTL)","styles":"सà¥à¤Ÿà¤¾à¤‡à¤²","cssClasses":"सà¥à¤Ÿà¤¾à¤‡à¤²-शीट कà¥à¤²à¤¾à¤¸","width":"चौड़ाई","height":"ऊà¤à¤šà¤¾à¤ˆ","align":"à¤à¤²à¤¾à¤‡à¤¨","left":"दायें","right":"दायें","center":"बीच में","justify":"बà¥à¤²à¥‰à¤• जसà¥à¤Ÿà¥€à¥žà¤¾à¤ˆ","alignLeft":"बायीं तरफ","alignRight":"दायीं तरफ","alignCenter":"Align Center","alignTop":"ऊपर","alignMiddle":"मधà¥à¤¯","alignBottom":"नीचे","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/hr.js b/core/assets/vendor/ckeditor/lang/hr.js index 3a92bc8166b8..cb835cee0f14 100644 --- a/core/assets/vendor/ckeditor/lang/hr.js +++ b/core/assets/vendor/ckeditor/lang/hr.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['hr']={"widget":{"move":"Klikni i povuci za pomicanje","label":"%1 widget"},"undo":{"redo":"Ponovi","undo":"PoniÅ¡ti"},"toolbar":{"toolbarCollapse":"Smanji alatnu traku","toolbarExpand":"ProÅ¡iri alatnu traku","toolbarGroups":{"document":"Dokument","clipboard":"MeÄ‘uspremnik/PoniÅ¡ti","editing":"UreÄ‘ivanje","forms":"Forme","basicstyles":"Osnovni stilovi","paragraph":"Paragraf","links":"Veze","insert":"Umetni","styles":"Stilovi","colors":"Boje","tools":"Alatke"},"toolbars":"Alatne trake ureÄ‘ivaÄa teksta"},"table":{"border":"VeliÄina okvira","caption":"Naslov","cell":{"menu":"Ćelija","insertBefore":"Ubaci ćeliju prije","insertAfter":"Ubaci ćeliju poslije","deleteCell":"IzbriÅ¡i ćelije","merge":"Spoji ćelije","mergeRight":"Spoji desno","mergeDown":"Spoji dolje","splitHorizontal":"Podijeli ćeliju vodoravno","splitVertical":"Podijeli ćeliju okomito","title":"Svojstva ćelije","cellType":"Vrsta ćelije","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Prelazak u novi red","hAlign":"Vodoravno poravnanje","vAlign":"Okomito poravnanje","alignBaseline":"Osnovna linija","bgColor":"Boja pozadine","borderColor":"Boja ruba","data":"Podatak","header":"Zaglavlje","yes":"Da","no":"Ne","invalidWidth":"Å irina ćelije mora biti broj.","invalidHeight":"Visina ćelije mora biti broj.","invalidRowSpan":"Rows span mora biti cijeli broj.","invalidColSpan":"Columns span mora biti cijeli broj.","chooseColor":"Odaberi"},"cellPad":"Razmak ćelija","cellSpace":"Prostornost ćelija","column":{"menu":"Kolona","insertBefore":"Ubaci kolonu prije","insertAfter":"Ubaci kolonu poslije","deleteColumn":"IzbriÅ¡i kolone"},"columns":"Kolona","deleteTable":"IzbriÅ¡i tablicu","headers":"Zaglavlje","headersBoth":"Oba","headersColumn":"Prva kolona","headersNone":"NiÅ¡ta","headersRow":"Prvi red","heightUnit":"height unit","invalidBorder":"Debljina ruba mora biti broj.","invalidCellPadding":"Razmak ćelija mora biti broj.","invalidCellSpacing":"Prostornost ćelija mora biti broj.","invalidCols":"Broj kolona mora biti broj veći od 0.","invalidHeight":"Visina tablice mora biti broj.","invalidRows":"Broj redova mora biti broj veći od 0.","invalidWidth":"Å irina tablice mora biti broj.","menu":"Svojstva tablice","row":{"menu":"Red","insertBefore":"Ubaci red prije","insertAfter":"Ubaci red poslije","deleteRow":"IzbriÅ¡i redove"},"rows":"Redova","summary":"Sažetak","title":"Svojstva tablice","toolbar":"Tablica","widthPc":"postotaka","widthPx":"piksela","widthUnit":"jedinica Å¡irine"},"stylescombo":{"label":"Stil","panelTitle":"Stilovi formatiranja","panelTitle1":"Block stilovi","panelTitle2":"Inline stilovi","panelTitle3":"Object stilovi"},"specialchar":{"options":"Opcije specijalnih znakova","title":"Odaberite posebni karakter","toolbar":"Ubaci posebni znak"},"sourcedialog":{"toolbar":"Kôd","title":"Kôd"},"sourcearea":{"toolbar":"Kôd"},"showblocks":{"toolbar":"Prikaži blokove"},"removeformat":{"toolbar":"Ukloni formatiranje"},"pastetext":{"button":"Zalijepi kao Äisti tekst","pasteNotification":"VaÅ¡ preglednik Vam ne dozvoljava lijepljenje obiÄnog teksta na ovaj naÄin. Za lijepljenje, pritisnite %1.","title":"Zalijepi kao Äisti tekst"},"pastefromword":{"confirmCleanup":"Tekst koji želite zalijepiti Äini se da je kopiran iz Worda. Želite li prije oÄistiti tekst?","error":"Nije moguće oÄistiti podatke za ljepljenje zbog interne greÅ¡ke","title":"Zalijepi iz Worda","toolbar":"Zalijepi iz Worda"},"notification":{"closed":"Obavijest zatvorena."},"maximize":{"maximize":"Povećaj","minimize":"Smanji"},"magicline":{"title":"Ubaci paragraf ovdje"},"list":{"bulletedlist":"ObiÄna lista","numberedlist":"BrojÄana lista"},"language":{"button":"Namjesti jezik","remove":"Makni jezik"},"indent":{"indent":"Pomakni udesno","outdent":"Pomakni ulijevo"},"image2":{"alt":"Alternativni tekst","btnUpload":"PoÅ¡alji na server","captioned":"Titl slike","captionPlaceholder":"Titl","infoTab":"Info slike","lockRatio":"ZakljuÄaj odnos","menu":"Svojstva slika","pathName":"slika","pathNameCaption":"titl","resetSize":"ObriÅ¡i veliÄinu","resizer":"Odaberi i povuci za promjenu veliÄine","title":"Svojstva slika","uploadTab":"PoÅ¡alji","urlMissing":"Nedostaje URL slike.","altMissing":"Nedostaje alternativni tekst."},"horizontalrule":{"toolbar":"Ubaci vodoravnu liniju"},"format":{"label":"Format","panelTitle":"Format paragrafa","tag_address":"Adresa","tag_div":"Normalno (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Normalno","tag_pre":"Formatirano"},"filetools":{"loadError":"GreÅ¡ka prilikom Äitanja datoteke.","networkError":"Mrežna greÅ¡ka prilikom slanja datoteke.","httpError404":"HTTP greÅ¡ka tijekom slanja datoteke (404: datoteka nije pronaÄ‘ena).","httpError403":"HTTP greÅ¡ka tijekom slanja datoteke (403: Zabranjeno).","httpError":"HTTP greÅ¡ka tijekom slanja datoteke (greÅ¡ka status: %1).","noUrlError":"URL za slanje nije podeÅ¡en.","responseError":"Neispravni odgovor servera."},"elementspath":{"eleLabel":"Putanje elemenata","eleTitle":"%1 element"},"contextmenu":{"options":"Opcije izbornika"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosne postavke VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Sigurnosne postavke VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).","paste":"Zalijepi","pasteNotification":"VaÅ¡ preglednik Vam ne dozvoljava lijepljenje obiÄnog teksta na ovaj naÄin. Za lijepljenje, pritisnite %1.","pasteArea":"Okvir za lijepljenje","pasteMsg":"Zalijepite vaÅ¡ sadržaj u okvir ispod i pritisnite OK."},"blockquote":{"toolbar":"Citat"},"basicstyles":{"bold":"Podebljano","italic":"UkoÅ¡eno","strike":"Precrtano","subscript":"Subscript","superscript":"Superscript","underline":"Potcrtano"},"about":{"copy":"Autorsko pravo © $1. Sva prava pridržana.","dlgTitle":"O CKEditoru 4","moreInfo":"Za informacije o licencama posjetite naÅ¡u web stranicu:"},"editor":"Bogati ureÄ‘ivaÄ teksta, %1","editorPanel":"PloÄa Bogatog UreÄ‘ivaÄa Teksta","common":{"editorHelp":"Pritisni ALT 0 za pomoć","browseServer":"Pretraži server","url":"URL","protocol":"Protokol","upload":"PoÅ¡alji","uploadSubmit":"PoÅ¡alji na server","image":"Slika","flash":"Flash","form":"Forma","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<nije postavljeno>","id":"Id","name":"Naziv","langDir":"Smjer jezika","langDirLtr":"S lijeva na desno (LTR)","langDirRtl":"S desna na lijevo (RTL)","langCode":"Kôd jezika","longDescr":"DugaÄki opis URL","cssClass":"Klase stilova","advisoryTitle":"Advisory naslov","cssStyle":"Stil","ok":"OK","cancel":"PoniÅ¡ti","close":"Zatvori","preview":"Pregledaj","resize":"Povuci za promjenu veliÄine","generalTab":"Općenito","advancedTab":"Napredno","validateNumberFailed":"Ova vrijednost nije broj.","confirmNewPage":"Sve napravljene promjene će biti izgubljene ukoliko ih niste snimili. Sigurno želite uÄitati novu stranicu?","confirmCancel":"Neke od opcija su promjenjene. Sigurno želite zatvoriti ovaj prozor?","options":"Opcije","target":"OdrediÅ¡te","targetNew":"Novi prozor (_blank)","targetTop":"VrÅ¡ni prozor (_top)","targetSelf":"Isti prozor (_self)","targetParent":"Roditeljski prozor (_parent)","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","styles":"Stil","cssClasses":"Klase stilova","width":"Å irina","height":"Visina","align":"Poravnanje","left":"Lijevo","right":"Desno","center":"SrediÅ¡nje","justify":"Blok poravnanje","alignLeft":"Lijevo poravnanje","alignRight":"Desno poravnanje","alignCenter":"Align Center","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dolje","alignNone":"Bez poravnanja","invalidValue":"Neispravna vrijednost.","invalidHeight":"Visina mora biti broj.","invalidWidth":"Å irina mora biti broj.","invalidLength":"NaznaÄena vrijednost polja \"%1\" mora biti pozitivni broj sa ili bez važeće mjerne jedinice (%2).","invalidCssLength":"Vrijednost odreÄ‘ena za \"%1\" polje mora biti pozitivni broj sa ili bez važećih CSS mjernih jedinica (px, %, in, cm, mm, em, ex, pt ili pc).","invalidHtmlLength":"Vrijednost odreÄ‘ena za \"%1\" polje mora biti pozitivni broj sa ili bez važećih HTML mjernih jedinica (px ili %).","invalidInlineStyle":"Vrijednost za linijski stil mora sadržavati jednu ili viÅ¡e definicija s formatom \"naziv:vrijednost\", odvojenih toÄka-zarezom.","cssLengthTooltip":"Unesite broj za vrijednost u pikselima ili broj s važećim CSS mjernim jedinicama (px, %, in, cm, mm, em, ex, pt ili pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupno</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"PreÄica na tipkovnici","optionDefault":"Zadano"}}; \ No newline at end of file +CKEDITOR.lang['hr']={"widget":{"move":"Klikni i povuci za pomicanje","label":"%1 widget"},"undo":{"redo":"Ponovi","undo":"PoniÅ¡ti"},"toolbar":{"toolbarCollapse":"Smanji alatnu traku","toolbarExpand":"ProÅ¡iri alatnu traku","toolbarGroups":{"document":"Dokument","clipboard":"MeÄ‘uspremnik/PoniÅ¡ti","editing":"UreÄ‘ivanje","forms":"Forme","basicstyles":"Osnovni stilovi","paragraph":"Paragraf","links":"Veze","insert":"Umetni","styles":"Stilovi","colors":"Boje","tools":"Alatke"},"toolbars":"Alatne trake ureÄ‘ivaÄa teksta"},"table":{"border":"VeliÄina okvira","caption":"Naslov","cell":{"menu":"Ćelija","insertBefore":"Ubaci ćeliju prije","insertAfter":"Ubaci ćeliju poslije","deleteCell":"IzbriÅ¡i ćelije","merge":"Spoji ćelije","mergeRight":"Spoji desno","mergeDown":"Spoji dolje","splitHorizontal":"Podijeli ćeliju vodoravno","splitVertical":"Podijeli ćeliju okomito","title":"Svojstva ćelije","cellType":"Vrsta ćelije","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Prelazak u novi red","hAlign":"Vodoravno poravnanje","vAlign":"Okomito poravnanje","alignBaseline":"Osnovna linija","bgColor":"Boja pozadine","borderColor":"Boja ruba","data":"Podatak","header":"Zaglavlje","yes":"Da","no":"Ne","invalidWidth":"Å irina ćelije mora biti broj.","invalidHeight":"Visina ćelije mora biti broj.","invalidRowSpan":"Rows span mora biti cijeli broj.","invalidColSpan":"Columns span mora biti cijeli broj.","chooseColor":"Odaberi"},"cellPad":"Razmak ćelija","cellSpace":"Prostornost ćelija","column":{"menu":"Kolona","insertBefore":"Ubaci kolonu prije","insertAfter":"Ubaci kolonu poslije","deleteColumn":"IzbriÅ¡i kolone"},"columns":"Kolona","deleteTable":"IzbriÅ¡i tablicu","headers":"Zaglavlje","headersBoth":"Oba","headersColumn":"Prva kolona","headersNone":"NiÅ¡ta","headersRow":"Prvi red","heightUnit":"height unit","invalidBorder":"Debljina ruba mora biti broj.","invalidCellPadding":"Razmak ćelija mora biti broj.","invalidCellSpacing":"Prostornost ćelija mora biti broj.","invalidCols":"Broj kolona mora biti broj veći od 0.","invalidHeight":"Visina tablice mora biti broj.","invalidRows":"Broj redova mora biti broj veći od 0.","invalidWidth":"Å irina tablice mora biti broj.","menu":"Svojstva tablice","row":{"menu":"Red","insertBefore":"Ubaci red prije","insertAfter":"Ubaci red poslije","deleteRow":"IzbriÅ¡i redove"},"rows":"Redova","summary":"Sažetak","title":"Svojstva tablice","toolbar":"Tablica","widthPc":"postotaka","widthPx":"piksela","widthUnit":"jedinica Å¡irine"},"stylescombo":{"label":"Stil","panelTitle":"Stilovi formatiranja","panelTitle1":"Block stilovi","panelTitle2":"Inline stilovi","panelTitle3":"Object stilovi"},"specialchar":{"options":"Opcije specijalnih znakova","title":"Odaberite posebni karakter","toolbar":"Ubaci posebni znak"},"sourcedialog":{"toolbar":"Kôd","title":"Kôd"},"sourcearea":{"toolbar":"Kôd"},"showblocks":{"toolbar":"Prikaži blokove"},"removeformat":{"toolbar":"Ukloni formatiranje"},"pastetext":{"button":"Zalijepi kao Äisti tekst","pasteNotification":"VaÅ¡ preglednik Vam ne dozvoljava lijepljenje obiÄnog teksta na ovaj naÄin. Za lijepljenje, pritisnite %1.","title":"Zalijepi kao Äisti tekst"},"pastefromword":{"confirmCleanup":"Tekst koji želite zalijepiti Äini se da je kopiran iz Worda. Želite li prije oÄistiti tekst?","error":"Nije moguće oÄistiti podatke za ljepljenje zbog interne greÅ¡ke","title":"Zalijepi iz Worda","toolbar":"Zalijepi iz Worda"},"notification":{"closed":"Obavijest zatvorena."},"maximize":{"maximize":"Povećaj","minimize":"Smanji"},"magicline":{"title":"Ubaci paragraf ovdje"},"list":{"bulletedlist":"ObiÄna lista","numberedlist":"BrojÄana lista"},"language":{"button":"Namjesti jezik","remove":"Makni jezik"},"indent":{"indent":"Pomakni udesno","outdent":"Pomakni ulijevo"},"image2":{"alt":"Alternativni tekst","btnUpload":"PoÅ¡alji na server","captioned":"Titl slike","captionPlaceholder":"Titl","infoTab":"Info slike","lockRatio":"ZakljuÄaj odnos","menu":"Svojstva slika","pathName":"slika","pathNameCaption":"titl","resetSize":"ObriÅ¡i veliÄinu","resizer":"Odaberi i povuci za promjenu veliÄine","title":"Svojstva slika","uploadTab":"PoÅ¡alji","urlMissing":"Nedostaje URL slike.","altMissing":"Nedostaje alternativni tekst."},"horizontalrule":{"toolbar":"Ubaci vodoravnu liniju"},"format":{"label":"Format","panelTitle":"Format paragrafa","tag_address":"Adresa","tag_div":"Normalno (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Normalno","tag_pre":"Formatirano"},"filetools":{"loadError":"GreÅ¡ka prilikom Äitanja datoteke.","networkError":"Mrežna greÅ¡ka prilikom slanja datoteke.","httpError404":"HTTP greÅ¡ka tijekom slanja datoteke (404: datoteka nije pronaÄ‘ena).","httpError403":"HTTP greÅ¡ka tijekom slanja datoteke (403: Zabranjeno).","httpError":"HTTP greÅ¡ka tijekom slanja datoteke (greÅ¡ka status: %1).","noUrlError":"URL za slanje nije podeÅ¡en.","responseError":"Neispravni odgovor servera."},"elementspath":{"eleLabel":"Putanje elemenata","eleTitle":"%1 element"},"contextmenu":{"options":"Opcije izbornika"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosne postavke VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Sigurnosne postavke VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).","paste":"Zalijepi","pasteNotification":"VaÅ¡ preglednik Vam ne dozvoljava lijepljenje obiÄnog teksta na ovaj naÄin. Za lijepljenje, pritisnite %1.","pasteArea":"Okvir za lijepljenje","pasteMsg":"Zalijepite vaÅ¡ sadržaj u okvir ispod i pritisnite OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citat"},"basicstyles":{"bold":"Podebljano","italic":"UkoÅ¡eno","strike":"Precrtano","subscript":"Subscript","superscript":"Superscript","underline":"Potcrtano"},"about":{"copy":"Autorsko pravo © $1. Sva prava pridržana.","dlgTitle":"O CKEditoru 4","moreInfo":"Za informacije o licencama posjetite naÅ¡u web stranicu:"},"editor":"Bogati ureÄ‘ivaÄ teksta, %1","editorPanel":"PloÄa Bogatog UreÄ‘ivaÄa Teksta","common":{"editorHelp":"Pritisni ALT 0 za pomoć","browseServer":"Pretraži server","url":"URL","protocol":"Protokol","upload":"PoÅ¡alji","uploadSubmit":"PoÅ¡alji na server","image":"Slika","form":"Forma","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<nije postavljeno>","id":"Id","name":"Naziv","langDir":"Smjer jezika","langDirLtr":"S lijeva na desno (LTR)","langDirRtl":"S desna na lijevo (RTL)","langCode":"Kôd jezika","longDescr":"DugaÄki opis URL","cssClass":"Klase stilova","advisoryTitle":"Advisory naslov","cssStyle":"Stil","ok":"OK","cancel":"PoniÅ¡ti","close":"Zatvori","preview":"Pregledaj","resize":"Povuci za promjenu veliÄine","generalTab":"Općenito","advancedTab":"Napredno","validateNumberFailed":"Ova vrijednost nije broj.","confirmNewPage":"Sve napravljene promjene će biti izgubljene ukoliko ih niste snimili. Sigurno želite uÄitati novu stranicu?","confirmCancel":"Neke od opcija su promjenjene. Sigurno želite zatvoriti ovaj prozor?","options":"Opcije","target":"OdrediÅ¡te","targetNew":"Novi prozor (_blank)","targetTop":"VrÅ¡ni prozor (_top)","targetSelf":"Isti prozor (_self)","targetParent":"Roditeljski prozor (_parent)","langDirLTR":"S lijeva na desno (LTR)","langDirRTL":"S desna na lijevo (RTL)","styles":"Stil","cssClasses":"Klase stilova","width":"Å irina","height":"Visina","align":"Poravnanje","left":"Lijevo","right":"Desno","center":"SrediÅ¡nje","justify":"Blok poravnanje","alignLeft":"Lijevo poravnanje","alignRight":"Desno poravnanje","alignCenter":"Align Center","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dolje","alignNone":"Bez poravnanja","invalidValue":"Neispravna vrijednost.","invalidHeight":"Visina mora biti broj.","invalidWidth":"Å irina mora biti broj.","invalidLength":"NaznaÄena vrijednost polja \"%1\" mora biti pozitivni broj sa ili bez važeće mjerne jedinice (%2).","invalidCssLength":"Vrijednost odreÄ‘ena za \"%1\" polje mora biti pozitivni broj sa ili bez važećih CSS mjernih jedinica (px, %, in, cm, mm, em, ex, pt ili pc).","invalidHtmlLength":"Vrijednost odreÄ‘ena za \"%1\" polje mora biti pozitivni broj sa ili bez važećih HTML mjernih jedinica (px ili %).","invalidInlineStyle":"Vrijednost za linijski stil mora sadržavati jednu ili viÅ¡e definicija s formatom \"naziv:vrijednost\", odvojenih toÄka-zarezom.","cssLengthTooltip":"Unesite broj za vrijednost u pikselima ili broj s važećim CSS mjernim jedinicama (px, %, in, cm, mm, em, ex, pt ili pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupno</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"PreÄica na tipkovnici","optionDefault":"Zadano"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/hu.js b/core/assets/vendor/ckeditor/lang/hu.js index 05e7c68edc38..77c10d54f4c6 100644 --- a/core/assets/vendor/ckeditor/lang/hu.js +++ b/core/assets/vendor/ckeditor/lang/hu.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['hu']={"widget":{"move":"Kattints és húzd a mozgatáshoz","label":"%1 modul"},"undo":{"redo":"Ismétlés","undo":"Visszavonás"},"toolbar":{"toolbarCollapse":"Eszköztár összecsukása","toolbarExpand":"Eszköztár szétnyitása","toolbarGroups":{"document":"Dokumentum","clipboard":"Vágólap/Visszavonás","editing":"Szerkesztés","forms":"Å°rlapok","basicstyles":"AlapstÃlusok","paragraph":"Bekezdés","links":"Hivatkozások","insert":"Beszúrás","styles":"StÃlusok","colors":"SzÃnek","tools":"Eszközök"},"toolbars":"SzerkesztÅ‘ Eszköztár"},"table":{"border":"Szegélyméret","caption":"Felirat","cell":{"menu":"Cella","insertBefore":"Beszúrás balra","insertAfter":"Beszúrás jobbra","deleteCell":"Cellák törlése","merge":"Cellák egyesÃtése","mergeRight":"Cellák egyesÃtése jobbra","mergeDown":"Cellák egyesÃtése lefelé","splitHorizontal":"Cellák szétválasztása vÃzszintesen","splitVertical":"Cellák szétválasztása függÅ‘legesen","title":"Cella tulajdonságai","cellType":"Cella tÃpusa","rowSpan":"FüggÅ‘leges egyesÃtés","colSpan":"VÃzszintes egyesÃtés","wordWrap":"Hosszú sorok törése","hAlign":"VÃzszintes igazÃtás","vAlign":"FüggÅ‘leges igazÃtás","alignBaseline":"Alapvonalra","bgColor":"Háttér szÃne","borderColor":"Keret szÃne","data":"Adat","header":"Fejléc","yes":"Igen","no":"Nem","invalidWidth":"A szélesség mezÅ‘be csak számokat Ãrhat.","invalidHeight":"A magasság mezÅ‘be csak számokat Ãrhat.","invalidRowSpan":"A függÅ‘leges egyesÃtés mezÅ‘be csak számokat Ãrhat.","invalidColSpan":"A vÃzszintes egyesÃtés mezÅ‘be csak számokat Ãrhat.","chooseColor":"Válasszon"},"cellPad":"Cella belsÅ‘ margó","cellSpace":"Cella térköz","column":{"menu":"Oszlop","insertBefore":"Beszúrás balra","insertAfter":"Beszúrás jobbra","deleteColumn":"Oszlopok törlése"},"columns":"Oszlopok","deleteTable":"Táblázat törlése","headers":"Fejlécek","headersBoth":"MindkettÅ‘","headersColumn":"ElsÅ‘ oszlop","headersNone":"Nincsenek","headersRow":"ElsÅ‘ sor","heightUnit":"Magasság egység","invalidBorder":"A szegélyméret mezÅ‘be csak számokat Ãrhat.","invalidCellPadding":"A cella belsÅ‘ margó mezÅ‘be csak számokat Ãrhat.","invalidCellSpacing":"A cella térköz mezÅ‘be csak számokat Ãrhat.","invalidCols":"Az oszlopok számának nagyobbnak kell lenni mint 0.","invalidHeight":"A magasság mezÅ‘be csak számokat Ãrhat.","invalidRows":"A sorok számának nagyobbnak kell lenni mint 0.","invalidWidth":"A szélesség mezÅ‘be csak számokat Ãrhat.","menu":"Táblázat tulajdonságai","row":{"menu":"Sor","insertBefore":"Beszúrás fölé","insertAfter":"Beszúrás alá","deleteRow":"Sorok törlése"},"rows":"Sorok","summary":"LeÃrás","title":"Táblázat tulajdonságai","toolbar":"Táblázat","widthPc":"százalék","widthPx":"képpont","widthUnit":"Szélesség egység"},"stylescombo":{"label":"StÃlus","panelTitle":"Formázási stÃlusok","panelTitle1":"Blokk stÃlusok","panelTitle2":"Inline stÃlusok","panelTitle3":"Objektum stÃlusok"},"specialchar":{"options":"Speciális karakter opciók","title":"Speciális karakter választása","toolbar":"Speciális karakter beillesztése"},"sourcedialog":{"toolbar":"Forráskód","title":"Forráskód"},"sourcearea":{"toolbar":"Forráskód"},"showblocks":{"toolbar":"Blokkok megjelenÃtése"},"removeformat":{"toolbar":"Formázás eltávolÃtása"},"pastetext":{"button":"Beillesztés formázatlan szövegként","pasteNotification":"Nyomja meg a %1 gombot a beillesztéshez. A böngészÅ‘ nem támogatja a beillesztést az eszköztár gombbal vagy a menübÅ‘l.","title":"Beillesztés formázatlan szövegként"},"pastefromword":{"confirmCleanup":"Úgy tűnik a beillesztett szöveget Word-bÅ‘l másolta át. Meg szeretné tisztÃtani a szöveget? (ajánlott)","error":"Egy belsÅ‘ hiba miatt nem sikerült megtisztÃtani a szöveget","title":"Beillesztés Word-bÅ‘l","toolbar":"Beillesztés Word-bÅ‘l"},"notification":{"closed":"ÉrtesÃtés bezárva."},"maximize":{"maximize":"Teljes méret","minimize":"Kis méret"},"magicline":{"title":"Szúrja be a bekezdést ide"},"list":{"bulletedlist":"Felsorolás","numberedlist":"Számozás"},"language":{"button":"Nyelv beállÃtása","remove":"Nyelv eltávolÃtása"},"indent":{"indent":"Behúzás növelése","outdent":"Behúzás csökkentése"},"image2":{"alt":"AlternatÃv szöveg","btnUpload":"Küldés a szerverre","captioned":"Feliratozott kép","captionPlaceholder":"Képfelirat","infoTab":"Alaptulajdonságok","lockRatio":"Arány megtartása","menu":"Kép tulajdonságai","pathName":"kép","pathNameCaption":"felirat","resetSize":"Eredeti méret","resizer":"Kattintson és húzza az átméretezéshez","title":"Kép tulajdonságai","uploadTab":"Feltöltés","urlMissing":"Hiányzik a kép URL-je","altMissing":"Az alternatÃv szöveg hiányzik."},"horizontalrule":{"toolbar":"Elválasztóvonal beillesztése"},"format":{"label":"Formátum","panelTitle":"Bekezdés formátum","tag_address":"CÃmsor","tag_div":"Bekezdés (DIV)","tag_h1":"Fejléc 1","tag_h2":"Fejléc 2","tag_h3":"Fejléc 3","tag_h4":"Fejléc 4","tag_h5":"Fejléc 5","tag_h6":"Fejléc 6","tag_p":"Normál","tag_pre":"Formázott"},"filetools":{"loadError":"Hiba történt a fájl olvasása közben.","networkError":"Hálózati hiba történt a fájl feltöltése közben.","httpError404":"HTTP hiba történt a fájl feltöltése alatt (404: A fájl nem található).","httpError403":"HTTP hiba történt a fájl feltöltése alatt (403: Tiltott).","httpError":"HTTP hiba történt a fájl feltöltése alatt (hiba státusz: %1).","noUrlError":"Feltöltési URL nincs megadva.","responseError":"Helytelen szerver válasz."},"elementspath":{"eleLabel":"Elem utak","eleTitle":"%1 elem"},"contextmenu":{"options":"Helyi menü opciók"},"clipboard":{"copy":"Másolás","copyError":"A böngészÅ‘ biztonsági beállÃtásai nem engedélyezik a szerkesztÅ‘nek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).","cut":"Kivágás","cutError":"A böngészÅ‘ biztonsági beállÃtásai nem engedélyezik a szerkesztÅ‘nek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).","paste":"Beillesztés","pasteNotification":"Nyomja meg a %1 gombot a beillesztéshez. A böngészÅ‘ nem támogatja a beillesztést az eszköztárról vagy a menübÅ‘l.","pasteArea":"Beillesztési terület","pasteMsg":"Illessze be a tartalmat az alábbi mezÅ‘be, és nyomja meg az OK-t."},"blockquote":{"toolbar":"Idézet blokk"},"basicstyles":{"bold":"Félkövér","italic":"DÅ‘lt","strike":"Ãthúzott","subscript":"Alsó index","superscript":"FelsÅ‘ index","underline":"Aláhúzott"},"about":{"copy":"Copyright © $1. Minden jog fenntartva.","dlgTitle":"A CKEditor 4-rÅ‘l","moreInfo":"Licenszelési információkért kérjük látogassa meg weboldalunkat:"},"editor":"HTML szerkesztÅ‘","editorPanel":"HTML szerkesztÅ‘ panel","common":{"editorHelp":"SegÃtségért nyomjon ALT 0-t","browseServer":"Böngészés a szerveren","url":"Hivatkozás","protocol":"Protokoll","upload":"Feltöltés","uploadSubmit":"Küldés a szerverre","image":"Kép","flash":"Flash","form":"Å°rlap","checkbox":"JelölÅ‘négyzet","radio":"Választógomb","textField":"SzövegmezÅ‘","textarea":"Szövegterület","hiddenField":"Rejtett mezÅ‘","button":"Gomb","select":"LegördülÅ‘ lista","imageButton":"Képgomb","notSet":"<nincs beállÃtva>","id":"AzonosÃtó","name":"Név","langDir":"Ãrás iránya","langDirLtr":"Balról jobbra","langDirRtl":"Jobbról balra","langCode":"Nyelv kódja","longDescr":"Részletes leÃrás webcÃme","cssClass":"CSS osztályok","advisoryTitle":"Súgócimke","cssStyle":"StÃlus","ok":"Rendben","cancel":"Mégsem","close":"Bezárás","preview":"ElÅ‘nézet","resize":"Húzza az átméretezéshez","generalTab":"Ãltalános","advancedTab":"Speciális","validateNumberFailed":"A mezÅ‘be csak számokat Ãrhat.","confirmNewPage":"Minden nem mentett változás el fog veszni! Biztosan be szeretné tölteni az oldalt?","confirmCancel":"Pár beállÃtást megváltoztatott. Biztosan be szeretné zárni az ablakot?","options":"BeállÃtások","target":"Cél","targetNew":"Új ablak (_blank)","targetTop":"LegfelsÅ‘ ablak (_top)","targetSelf":"Aktuális ablakban (_self)","targetParent":"SzülÅ‘ ablak (_parent)","langDirLTR":"Balról jobbra (LTR)","langDirRTL":"Jobbról balra (RTL)","styles":"StÃlus","cssClasses":"StÃluslap osztály","width":"Szélesség","height":"Magasság","align":"IgazÃtás","left":"Bal","right":"Jobbra","center":"Középre","justify":"Sorkizárt","alignLeft":"Balra","alignRight":"Jobbra","alignCenter":"Középre igazÃtás","alignTop":"Tetejére","alignMiddle":"Középre","alignBottom":"Aljára","alignNone":"Semmi","invalidValue":"Érvénytelen érték.","invalidHeight":"A magasság mezÅ‘be csak számokat Ãrhat.","invalidWidth":"A szélesség mezÅ‘be csak számokat Ãrhat.","invalidLength":"A megadott értéknek a \"%1\" mezÅ‘ben pozitÃv számnak kell lennie, egy érvényes mértékegységgel vagy anélkül (%2).","invalidCssLength":"\"%1\"-hez megadott érték csakis egy pozitÃv szám lehet, esetleg egy érvényes CSS egységgel megjelölve(px, %, in, cm, mm, em, ex, pt vagy pc).","invalidHtmlLength":"\"%1\"-hez megadott érték csakis egy pozitÃv szám lehet, esetleg egy érvényes HTML egységgel megjelölve(px vagy %).","invalidInlineStyle":"Az inline stÃlusnak megadott értéknek tartalmaznia kell egy vagy több rekordot a \"name : value\" formátumban, pontosvesszÅ‘vel elválasztva.","cssLengthTooltip":"Adjon meg egy számot értéknek pixelekben vagy egy számot érvényes CSS mértékegységben (px, %, in, cm, mm, em, ex, pt, vagy pc).","unavailable":"%1<span class=\"cke_accessibility\">, nem elérhetÅ‘</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Gyorsbillentyű","optionDefault":"Alapértelmezett"}}; \ No newline at end of file +CKEDITOR.lang['hu']={"widget":{"move":"Kattints és húzd a mozgatáshoz","label":"%1 modul"},"undo":{"redo":"Ismétlés","undo":"Visszavonás"},"toolbar":{"toolbarCollapse":"Eszköztár összecsukása","toolbarExpand":"Eszköztár szétnyitása","toolbarGroups":{"document":"Dokumentum","clipboard":"Vágólap/Visszavonás","editing":"Szerkesztés","forms":"Å°rlapok","basicstyles":"AlapstÃlusok","paragraph":"Bekezdés","links":"Hivatkozások","insert":"Beszúrás","styles":"StÃlusok","colors":"SzÃnek","tools":"Eszközök"},"toolbars":"SzerkesztÅ‘ Eszköztár"},"table":{"border":"Szegélyméret","caption":"Felirat","cell":{"menu":"Cella","insertBefore":"Beszúrás balra","insertAfter":"Beszúrás jobbra","deleteCell":"Cellák törlése","merge":"Cellák egyesÃtése","mergeRight":"Cellák egyesÃtése jobbra","mergeDown":"Cellák egyesÃtése lefelé","splitHorizontal":"Cellák szétválasztása vÃzszintesen","splitVertical":"Cellák szétválasztása függÅ‘legesen","title":"Cella tulajdonságai","cellType":"Cella tÃpusa","rowSpan":"FüggÅ‘leges egyesÃtés","colSpan":"VÃzszintes egyesÃtés","wordWrap":"Hosszú sorok törése","hAlign":"VÃzszintes igazÃtás","vAlign":"FüggÅ‘leges igazÃtás","alignBaseline":"Alapvonalra","bgColor":"Háttér szÃne","borderColor":"Keret szÃne","data":"Adat","header":"Fejléc","yes":"Igen","no":"Nem","invalidWidth":"A szélesség mezÅ‘be csak számokat Ãrhat.","invalidHeight":"A magasság mezÅ‘be csak számokat Ãrhat.","invalidRowSpan":"A függÅ‘leges egyesÃtés mezÅ‘be csak számokat Ãrhat.","invalidColSpan":"A vÃzszintes egyesÃtés mezÅ‘be csak számokat Ãrhat.","chooseColor":"Válasszon"},"cellPad":"Cella belsÅ‘ margó","cellSpace":"Cella térköz","column":{"menu":"Oszlop","insertBefore":"Beszúrás balra","insertAfter":"Beszúrás jobbra","deleteColumn":"Oszlopok törlése"},"columns":"Oszlopok","deleteTable":"Táblázat törlése","headers":"Fejlécek","headersBoth":"MindkettÅ‘","headersColumn":"ElsÅ‘ oszlop","headersNone":"Nincsenek","headersRow":"ElsÅ‘ sor","heightUnit":"Magasság egység","invalidBorder":"A szegélyméret mezÅ‘be csak számokat Ãrhat.","invalidCellPadding":"A cella belsÅ‘ margó mezÅ‘be csak számokat Ãrhat.","invalidCellSpacing":"A cella térköz mezÅ‘be csak számokat Ãrhat.","invalidCols":"Az oszlopok számának nagyobbnak kell lenni mint 0.","invalidHeight":"A magasság mezÅ‘be csak számokat Ãrhat.","invalidRows":"A sorok számának nagyobbnak kell lenni mint 0.","invalidWidth":"A szélesség mezÅ‘be csak számokat Ãrhat.","menu":"Táblázat tulajdonságai","row":{"menu":"Sor","insertBefore":"Beszúrás fölé","insertAfter":"Beszúrás alá","deleteRow":"Sorok törlése"},"rows":"Sorok","summary":"LeÃrás","title":"Táblázat tulajdonságai","toolbar":"Táblázat","widthPc":"százalék","widthPx":"képpont","widthUnit":"Szélesség egység"},"stylescombo":{"label":"StÃlus","panelTitle":"Formázási stÃlusok","panelTitle1":"Blokk stÃlusok","panelTitle2":"Inline stÃlusok","panelTitle3":"Objektum stÃlusok"},"specialchar":{"options":"Speciális karakter opciók","title":"Speciális karakter választása","toolbar":"Speciális karakter beillesztése"},"sourcedialog":{"toolbar":"Forráskód","title":"Forráskód"},"sourcearea":{"toolbar":"Forráskód"},"showblocks":{"toolbar":"Blokkok megjelenÃtése"},"removeformat":{"toolbar":"Formázás eltávolÃtása"},"pastetext":{"button":"Beillesztés formázatlan szövegként","pasteNotification":"Nyomja meg a %1 gombot a beillesztéshez. A böngészÅ‘ nem támogatja a beillesztést az eszköztár gombbal vagy a menübÅ‘l.","title":"Beillesztés formázatlan szövegként"},"pastefromword":{"confirmCleanup":"Úgy tűnik a beillesztett szöveget Word-bÅ‘l másolta át. Meg szeretné tisztÃtani a szöveget? (ajánlott)","error":"Egy belsÅ‘ hiba miatt nem sikerült megtisztÃtani a szöveget","title":"Beillesztés Word-bÅ‘l","toolbar":"Beillesztés Word-bÅ‘l"},"notification":{"closed":"ÉrtesÃtés bezárva."},"maximize":{"maximize":"Teljes méret","minimize":"Kis méret"},"magicline":{"title":"Szúrja be a bekezdést ide"},"list":{"bulletedlist":"Felsorolás","numberedlist":"Számozás"},"language":{"button":"Nyelv beállÃtása","remove":"Nyelv eltávolÃtása"},"indent":{"indent":"Behúzás növelése","outdent":"Behúzás csökkentése"},"image2":{"alt":"AlternatÃv szöveg","btnUpload":"Küldés a szerverre","captioned":"Feliratozott kép","captionPlaceholder":"Képfelirat","infoTab":"Alaptulajdonságok","lockRatio":"Arány megtartása","menu":"Kép tulajdonságai","pathName":"kép","pathNameCaption":"felirat","resetSize":"Eredeti méret","resizer":"Kattintson és húzza az átméretezéshez","title":"Kép tulajdonságai","uploadTab":"Feltöltés","urlMissing":"Hiányzik a kép URL-je","altMissing":"Az alternatÃv szöveg hiányzik."},"horizontalrule":{"toolbar":"Elválasztóvonal beillesztése"},"format":{"label":"Formátum","panelTitle":"Bekezdés formátum","tag_address":"CÃmsor","tag_div":"Bekezdés (DIV)","tag_h1":"Fejléc 1","tag_h2":"Fejléc 2","tag_h3":"Fejléc 3","tag_h4":"Fejléc 4","tag_h5":"Fejléc 5","tag_h6":"Fejléc 6","tag_p":"Normál","tag_pre":"Formázott"},"filetools":{"loadError":"Hiba történt a fájl olvasása közben.","networkError":"Hálózati hiba történt a fájl feltöltése közben.","httpError404":"HTTP hiba történt a fájl feltöltése alatt (404: A fájl nem található).","httpError403":"HTTP hiba történt a fájl feltöltése alatt (403: Tiltott).","httpError":"HTTP hiba történt a fájl feltöltése alatt (hiba státusz: %1).","noUrlError":"Feltöltési URL nincs megadva.","responseError":"Helytelen szerver válasz."},"elementspath":{"eleLabel":"Elem utak","eleTitle":"%1 elem"},"contextmenu":{"options":"Helyi menü opciók"},"clipboard":{"copy":"Másolás","copyError":"A böngészÅ‘ biztonsági beállÃtásai nem engedélyezik a szerkesztÅ‘nek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).","cut":"Kivágás","cutError":"A böngészÅ‘ biztonsági beállÃtásai nem engedélyezik a szerkesztÅ‘nek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).","paste":"Beillesztés","pasteNotification":"Nyomja meg a %1 gombot a beillesztéshez. A böngészÅ‘ nem támogatja a beillesztést az eszköztárról vagy a menübÅ‘l.","pasteArea":"Beillesztési terület","pasteMsg":"Illessze be a tartalmat az alábbi mezÅ‘be, és nyomja meg az OK-t.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Idézet blokk"},"basicstyles":{"bold":"Félkövér","italic":"DÅ‘lt","strike":"Ãthúzott","subscript":"Alsó index","superscript":"FelsÅ‘ index","underline":"Aláhúzott"},"about":{"copy":"Copyright © $1. Minden jog fenntartva.","dlgTitle":"A CKEditor 4-rÅ‘l","moreInfo":"Licenszelési információkért kérjük látogassa meg weboldalunkat:"},"editor":"HTML szerkesztÅ‘","editorPanel":"HTML szerkesztÅ‘ panel","common":{"editorHelp":"SegÃtségért nyomjon ALT 0-t","browseServer":"Böngészés a szerveren","url":"Hivatkozás","protocol":"Protokoll","upload":"Feltöltés","uploadSubmit":"Küldés a szerverre","image":"Kép","form":"Å°rlap","checkbox":"JelölÅ‘négyzet","radio":"Választógomb","textField":"SzövegmezÅ‘","textarea":"Szövegterület","hiddenField":"Rejtett mezÅ‘","button":"Gomb","select":"LegördülÅ‘ lista","imageButton":"Képgomb","notSet":"<nincs beállÃtva>","id":"AzonosÃtó","name":"Név","langDir":"Ãrás iránya","langDirLtr":"Balról jobbra","langDirRtl":"Jobbról balra","langCode":"Nyelv kódja","longDescr":"Részletes leÃrás webcÃme","cssClass":"CSS osztályok","advisoryTitle":"Súgócimke","cssStyle":"StÃlus","ok":"Rendben","cancel":"Mégsem","close":"Bezárás","preview":"ElÅ‘nézet","resize":"Húzza az átméretezéshez","generalTab":"Ãltalános","advancedTab":"Speciális","validateNumberFailed":"A mezÅ‘be csak számokat Ãrhat.","confirmNewPage":"Minden nem mentett változás el fog veszni! Biztosan be szeretné tölteni az oldalt?","confirmCancel":"Pár beállÃtást megváltoztatott. Biztosan be szeretné zárni az ablakot?","options":"BeállÃtások","target":"Cél","targetNew":"Új ablak (_blank)","targetTop":"LegfelsÅ‘ ablak (_top)","targetSelf":"Aktuális ablakban (_self)","targetParent":"SzülÅ‘ ablak (_parent)","langDirLTR":"Balról jobbra (LTR)","langDirRTL":"Jobbról balra (RTL)","styles":"StÃlus","cssClasses":"StÃluslap osztály","width":"Szélesség","height":"Magasság","align":"IgazÃtás","left":"Bal","right":"Jobbra","center":"Középre","justify":"Sorkizárt","alignLeft":"Balra","alignRight":"Jobbra","alignCenter":"Középre igazÃtás","alignTop":"Tetejére","alignMiddle":"Középre","alignBottom":"Aljára","alignNone":"Semmi","invalidValue":"Érvénytelen érték.","invalidHeight":"A magasság mezÅ‘be csak számokat Ãrhat.","invalidWidth":"A szélesség mezÅ‘be csak számokat Ãrhat.","invalidLength":"A megadott értéknek a \"%1\" mezÅ‘ben pozitÃv számnak kell lennie, egy érvényes mértékegységgel vagy anélkül (%2).","invalidCssLength":"\"%1\"-hez megadott érték csakis egy pozitÃv szám lehet, esetleg egy érvényes CSS egységgel megjelölve(px, %, in, cm, mm, em, ex, pt vagy pc).","invalidHtmlLength":"\"%1\"-hez megadott érték csakis egy pozitÃv szám lehet, esetleg egy érvényes HTML egységgel megjelölve(px vagy %).","invalidInlineStyle":"Az inline stÃlusnak megadott értéknek tartalmaznia kell egy vagy több rekordot a \"name : value\" formátumban, pontosvesszÅ‘vel elválasztva.","cssLengthTooltip":"Adjon meg egy számot értéknek pixelekben vagy egy számot érvényes CSS mértékegységben (px, %, in, cm, mm, em, ex, pt, vagy pc).","unavailable":"%1<span class=\"cke_accessibility\">, nem elérhetÅ‘</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Gyorsbillentyű","optionDefault":"Alapértelmezett"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/id.js b/core/assets/vendor/ckeditor/lang/id.js index 216b5d23e1c0..96322291284b 100644 --- a/core/assets/vendor/ckeditor/lang/id.js +++ b/core/assets/vendor/ckeditor/lang/id.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['id']={"widget":{"move":"Tekan dan geser untuk memindahkan","label":"%1 widget"},"undo":{"redo":"Kembali lakukan","undo":"Batalkan perlakuan"},"toolbar":{"toolbarCollapse":"Ciutkan Toolbar","toolbarExpand":"Bentangkan Toolbar","toolbarGroups":{"document":"Dokumen","clipboard":"Papan klip / Kembalikan perlakuan","editing":"Sunting","forms":"Formulir","basicstyles":"Gaya Dasar","paragraph":"Paragraf","links":"Tautan","insert":"Sisip","styles":"Gaya","colors":"Warna","tools":"Alat"},"toolbars":"Toolbar Penyunting"},"table":{"border":"Ukuran batas","caption":"Judul halaman","cell":{"menu":"Sel","insertBefore":"Sisip Sel Sebelum","insertAfter":"Sisip Sel Setelah","deleteCell":"Hapus Sel","merge":"Gabungkan Sel","mergeRight":"Gabungkan ke Kanan","mergeDown":"Gabungkan ke Bawah","splitHorizontal":"Pisahkan Sel Secara Horisontal","splitVertical":"Pisahkan Sel Secara Vertikal","title":"Properti Sel","cellType":"Tipe Sel","rowSpan":"Rentang antar baris","colSpan":"Rentang antar kolom","wordWrap":"Word Wrap","hAlign":"Jajaran Horisontal","vAlign":"Jajaran Vertikal","alignBaseline":"Dasar","bgColor":"Warna Latar Belakang","borderColor":"Warna Batasan","data":"Data","header":"Header","yes":"Ya","no":"Tidak","invalidWidth":"Lebar sel harus sebuah angka.","invalidHeight":"Tinggi sel harus sebuah angka","invalidRowSpan":"Rentang antar baris harus angka seluruhnya.","invalidColSpan":"Rentang antar kolom harus angka seluruhnya","chooseColor":"Pilih"},"cellPad":"Sel spasi dalam","cellSpace":"Spasi antar sel","column":{"menu":"Kolom","insertBefore":"Sisip Kolom Sebelum","insertAfter":"Sisip Kolom Sesudah","deleteColumn":"Hapus Kolom"},"columns":"Kolom","deleteTable":"Hapus Tabel","headers":"Headers","headersBoth":"Keduanya","headersColumn":"Kolom pertama","headersNone":"Tidak ada","headersRow":"Baris Pertama","heightUnit":"height unit","invalidBorder":"Ukuran batasan harus sebuah angka","invalidCellPadding":"'Spasi dalam' sel harus angka positif.","invalidCellSpacing":"Spasi antar sel harus angka positif.","invalidCols":"Jumlah kolom harus sebuah angka lebih besar dari 0","invalidHeight":"Tinggi tabel harus sebuah angka.","invalidRows":"Jumlah barus harus sebuah angka dan lebih besar dari 0.","invalidWidth":"Lebar tabel harus sebuah angka.","menu":"Properti Tabel","row":{"menu":"Baris","insertBefore":"Sisip Baris Sebelum","insertAfter":"Sisip Baris Sesudah","deleteRow":"Hapus Baris"},"rows":"Baris","summary":"Intisari","title":"Properti Tabel","toolbar":"Tabe","widthPc":"persen","widthPx":"piksel","widthUnit":"lebar satuan"},"stylescombo":{"label":"Gaya","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Opsi spesial karakter","title":"Pilih spesial karakter","toolbar":"Sisipkan spesial karakter"},"sourcedialog":{"toolbar":"Sumber","title":"Sumber"},"sourcearea":{"toolbar":"Sumber"},"showblocks":{"toolbar":"Perlihatkan Blok"},"removeformat":{"toolbar":"Hapus Format"},"pastetext":{"button":"Tempel sebagai teks polos","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Tempel sebagai Teks Polos"},"pastefromword":{"confirmCleanup":"Teks yang ingin anda tempel sepertinya di salin dari Word. Apakah anda mau membersihkannya sebelum menempel?","error":"Tidak mungkin membersihkan data yang ditempel dikerenakan kesalahan internal","title":"Tempel dari Word","toolbar":"Tempel dari Word"},"notification":{"closed":"Pemberitahuan ditutup"},"maximize":{"maximize":"Memperbesar","minimize":"Memperkecil"},"magicline":{"title":"Masukkan paragraf disini"},"list":{"bulletedlist":"Sisip/Hapus Daftar Bullet","numberedlist":"Sisip/Hapus Daftar Bernomor"},"language":{"button":"Atur Bahasa","remove":"Hapus Bahasa"},"indent":{"indent":"Tingkatkan Lekuk","outdent":"Kurangi Lekuk"},"image2":{"alt":"Teks alternatif","btnUpload":"Kirim ke Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Info Gambar","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Atur Ulang Ukuran","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Unggah","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Sisip Garis Horisontal"},"format":{"label":"Bentuk","panelTitle":"Bentuk Paragraf","tag_address":"Alamat","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Membentuk"},"filetools":{"loadError":"Error terjadi ketika berkas dibaca","networkError":"Jaringan error terjadi ketika mengunggah berkas","httpError404":"HTTP error terjadi ketika mengunggah berkas (404: Berkas tidak ditemukan)","httpError403":"HTTP error terjadi ketika mengunggah berkas (403: Gangguan)","httpError":"HTTP error terjadi ketika mengunggah berkas (status error: %1)","noUrlError":"Unggahan URL tidak terdefinisi","responseError":"Respon server tidak sesuai"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Opsi Konteks Pilihan"},"clipboard":{"copy":"Salin","copyError":"Pengaturan keamanan peramban anda tidak mengizinkan editor untuk mengeksekusi operasi menyalin secara otomatis. Mohon gunakan papan tuts (Ctrl/Cmd+C)","cut":"Potong","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Tempel","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Area Tempel","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Kutipan Blok"},"basicstyles":{"bold":"Huruf Tebal","italic":"Huruf Miring","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Garis Bawah"},"about":{"copy":"Hak cipta © $1. All rights reserved.","dlgTitle":"Tentang CKEditor 4","moreInfo":"Untuk informasi lisensi silahkan kunjungi web site kami:"},"editor":"Rich Text Editor","editorPanel":"Panel Rich Text Editor","common":{"editorHelp":"Tekan ALT 0 untuk bantuan.","browseServer":"Jelajah Server","url":"URL","protocol":"Protokol","upload":"Unggah","uploadSubmit":"Kirim ke Server","image":"Gambar","flash":"Flash","form":"Formulir","checkbox":"Kotak Cek","radio":"Tombol Radio","textField":"Kolom Teks","textarea":"Area Teks","hiddenField":"Kolom Tersembunyi","button":"Tombol","select":"Kolom Seleksi","imageButton":"Tombol Gambar","notSet":"<tidak diatur>","id":"Id","name":"Nama","langDir":"Arah Bahasa","langDirLtr":"Kiri ke Kanan (LTR)","langDirRtl":"Kanan ke Kiri","langCode":"Kode Bahasa","longDescr":"Deskripsi URL Panjang","cssClass":"Kelas Stylesheet","advisoryTitle":"Penasehat Judul","cssStyle":"Gaya","ok":"OK","cancel":"Batal","close":"Tutup","preview":"Pratinjau","resize":"Ubah ukuran","generalTab":"Umum","advancedTab":"Lebih Lanjut","validateNumberFailed":"Nilai ini tidak sebuah angka","confirmNewPage":"Semua perubahan yang tidak disimpan di konten ini akan hilang. Apakah anda yakin ingin memuat halaman baru?","confirmCancel":"Beberapa opsi telah berubah. Apakah anda yakin ingin menutup dialog?","options":"Opsi","target":"Sasaran","targetNew":"Jendela Baru (_blank)","targetTop":"Laman Atas (_top)","targetSelf":"Jendela yang Sama (_self)","targetParent":"Jendela Induk (_parent)","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","styles":"Gaya","cssClasses":"Kelas Stylesheet","width":"Lebar","height":"Tinggi","align":"Penjajaran","left":"Kiri","right":"Kanan","center":"Tengah","justify":"Rata kiri-kanan","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"Atas","alignMiddle":"Tengah","alignBottom":"Bawah","alignNone":"Tidak ada","invalidValue":"Nilai tidak sah.","invalidHeight":"Tinggi harus sebuah angka.","invalidWidth":"Lebar harus sebuah angka.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Nilai untuk \"%1\" harus sebuah angkat positif dengan atau tanpa pengukuran unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Nilai yang dispesifikasian untuk kolom \"%1\" harus sebuah angka positif dengan atau tanpa sebuah unit pengukuran HTML (px atau %) yang valid.","invalidInlineStyle":"Nilai pada inline style merupakan pasangan nama dan nilai dengan format \"nama : nilai\", yang dipisahkan dengan titik dua.","cssLengthTooltip":"Masukkan sebuah angka untuk sebuah nilai dalam pixel atau sebuah angka dengan unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, tidak tersedia</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Spasi","35":"End","36":"Home","46":"Hapus","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Pintasan Keyboard","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['id']={"widget":{"move":"Tekan dan geser untuk memindahkan","label":"%1 widget"},"undo":{"redo":"Kembali lakukan","undo":"Batalkan perlakuan"},"toolbar":{"toolbarCollapse":"Ciutkan Toolbar","toolbarExpand":"Bentangkan Toolbar","toolbarGroups":{"document":"Dokumen","clipboard":"Papan klip / Kembalikan perlakuan","editing":"Sunting","forms":"Formulir","basicstyles":"Gaya Dasar","paragraph":"Paragraf","links":"Tautan","insert":"Sisip","styles":"Gaya","colors":"Warna","tools":"Alat"},"toolbars":"Toolbar Penyunting"},"table":{"border":"Ukuran batas","caption":"Judul halaman","cell":{"menu":"Sel","insertBefore":"Sisip Sel Sebelum","insertAfter":"Sisip Sel Setelah","deleteCell":"Hapus Sel","merge":"Gabungkan Sel","mergeRight":"Gabungkan ke Kanan","mergeDown":"Gabungkan ke Bawah","splitHorizontal":"Pisahkan Sel Secara Horisontal","splitVertical":"Pisahkan Sel Secara Vertikal","title":"Properti Sel","cellType":"Tipe Sel","rowSpan":"Rentang antar baris","colSpan":"Rentang antar kolom","wordWrap":"Word Wrap","hAlign":"Jajaran Horisontal","vAlign":"Jajaran Vertikal","alignBaseline":"Dasar","bgColor":"Warna Latar Belakang","borderColor":"Warna Batasan","data":"Data","header":"Header","yes":"Ya","no":"Tidak","invalidWidth":"Lebar sel harus sebuah angka.","invalidHeight":"Tinggi sel harus sebuah angka","invalidRowSpan":"Rentang antar baris harus angka seluruhnya.","invalidColSpan":"Rentang antar kolom harus angka seluruhnya","chooseColor":"Pilih"},"cellPad":"Sel spasi dalam","cellSpace":"Spasi antar sel","column":{"menu":"Kolom","insertBefore":"Sisip Kolom Sebelum","insertAfter":"Sisip Kolom Sesudah","deleteColumn":"Hapus Kolom"},"columns":"Kolom","deleteTable":"Hapus Tabel","headers":"Headers","headersBoth":"Keduanya","headersColumn":"Kolom pertama","headersNone":"Tidak ada","headersRow":"Baris Pertama","heightUnit":"height unit","invalidBorder":"Ukuran batasan harus sebuah angka","invalidCellPadding":"'Spasi dalam' sel harus angka positif.","invalidCellSpacing":"Spasi antar sel harus angka positif.","invalidCols":"Jumlah kolom harus sebuah angka lebih besar dari 0","invalidHeight":"Tinggi tabel harus sebuah angka.","invalidRows":"Jumlah barus harus sebuah angka dan lebih besar dari 0.","invalidWidth":"Lebar tabel harus sebuah angka.","menu":"Properti Tabel","row":{"menu":"Baris","insertBefore":"Sisip Baris Sebelum","insertAfter":"Sisip Baris Sesudah","deleteRow":"Hapus Baris"},"rows":"Baris","summary":"Intisari","title":"Properti Tabel","toolbar":"Tabe","widthPc":"persen","widthPx":"piksel","widthUnit":"lebar satuan"},"stylescombo":{"label":"Gaya","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Opsi spesial karakter","title":"Pilih spesial karakter","toolbar":"Sisipkan spesial karakter"},"sourcedialog":{"toolbar":"Sumber","title":"Sumber"},"sourcearea":{"toolbar":"Sumber"},"showblocks":{"toolbar":"Perlihatkan Blok"},"removeformat":{"toolbar":"Hapus Format"},"pastetext":{"button":"Tempel sebagai teks polos","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Tempel sebagai Teks Polos"},"pastefromword":{"confirmCleanup":"Teks yang ingin anda tempel sepertinya di salin dari Word. Apakah anda mau membersihkannya sebelum menempel?","error":"Tidak mungkin membersihkan data yang ditempel dikerenakan kesalahan internal","title":"Tempel dari Word","toolbar":"Tempel dari Word"},"notification":{"closed":"Pemberitahuan ditutup"},"maximize":{"maximize":"Memperbesar","minimize":"Memperkecil"},"magicline":{"title":"Masukkan paragraf disini"},"list":{"bulletedlist":"Sisip/Hapus Daftar Bullet","numberedlist":"Sisip/Hapus Daftar Bernomor"},"language":{"button":"Atur Bahasa","remove":"Hapus Bahasa"},"indent":{"indent":"Tingkatkan Lekuk","outdent":"Kurangi Lekuk"},"image2":{"alt":"Teks alternatif","btnUpload":"Kirim ke Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Info Gambar","lockRatio":"Lock Ratio","menu":"Image Properties","pathName":"image","pathNameCaption":"caption","resetSize":"Atur Ulang Ukuran","resizer":"Click and drag to resize","title":"Image Properties","uploadTab":"Unggah","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Sisip Garis Horisontal"},"format":{"label":"Bentuk","panelTitle":"Bentuk Paragraf","tag_address":"Alamat","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Membentuk"},"filetools":{"loadError":"Error terjadi ketika berkas dibaca","networkError":"Jaringan error terjadi ketika mengunggah berkas","httpError404":"HTTP error terjadi ketika mengunggah berkas (404: Berkas tidak ditemukan)","httpError403":"HTTP error terjadi ketika mengunggah berkas (403: Gangguan)","httpError":"HTTP error terjadi ketika mengunggah berkas (status error: %1)","noUrlError":"Unggahan URL tidak terdefinisi","responseError":"Respon server tidak sesuai"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Opsi Konteks Pilihan"},"clipboard":{"copy":"Salin","copyError":"Pengaturan keamanan peramban anda tidak mengizinkan editor untuk mengeksekusi operasi menyalin secara otomatis. Mohon gunakan papan tuts (Ctrl/Cmd+C)","cut":"Potong","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Tempel","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Area Tempel","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Kutipan Blok"},"basicstyles":{"bold":"Huruf Tebal","italic":"Huruf Miring","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Garis Bawah"},"about":{"copy":"Hak cipta © $1. All rights reserved.","dlgTitle":"Tentang CKEditor 4","moreInfo":"Untuk informasi lisensi silahkan kunjungi web site kami:"},"editor":"Rich Text Editor","editorPanel":"Panel Rich Text Editor","common":{"editorHelp":"Tekan ALT 0 untuk bantuan.","browseServer":"Jelajah Server","url":"URL","protocol":"Protokol","upload":"Unggah","uploadSubmit":"Kirim ke Server","image":"Gambar","form":"Formulir","checkbox":"Kotak Cek","radio":"Tombol Radio","textField":"Kolom Teks","textarea":"Area Teks","hiddenField":"Kolom Tersembunyi","button":"Tombol","select":"Kolom Seleksi","imageButton":"Tombol Gambar","notSet":"<tidak diatur>","id":"Id","name":"Nama","langDir":"Arah Bahasa","langDirLtr":"Kiri ke Kanan (LTR)","langDirRtl":"Kanan ke Kiri","langCode":"Kode Bahasa","longDescr":"Deskripsi URL Panjang","cssClass":"Kelas Stylesheet","advisoryTitle":"Penasehat Judul","cssStyle":"Gaya","ok":"OK","cancel":"Batal","close":"Tutup","preview":"Pratinjau","resize":"Ubah ukuran","generalTab":"Umum","advancedTab":"Lebih Lanjut","validateNumberFailed":"Nilai ini tidak sebuah angka","confirmNewPage":"Semua perubahan yang tidak disimpan di konten ini akan hilang. Apakah anda yakin ingin memuat halaman baru?","confirmCancel":"Beberapa opsi telah berubah. Apakah anda yakin ingin menutup dialog?","options":"Opsi","target":"Sasaran","targetNew":"Jendela Baru (_blank)","targetTop":"Laman Atas (_top)","targetSelf":"Jendela yang Sama (_self)","targetParent":"Jendela Induk (_parent)","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","styles":"Gaya","cssClasses":"Kelas Stylesheet","width":"Lebar","height":"Tinggi","align":"Penjajaran","left":"Kiri","right":"Kanan","center":"Tengah","justify":"Rata kiri-kanan","alignLeft":"Rata Kiri","alignRight":"Rata Kanan","alignCenter":"Rata Tengah","alignTop":"Atas","alignMiddle":"Tengah","alignBottom":"Bawah","alignNone":"Tidak ada","invalidValue":"Nilai tidak sah.","invalidHeight":"Tinggi harus sebuah angka.","invalidWidth":"Lebar harus sebuah angka.","invalidLength":"Nilai untuk \"%1\" harus bernilai positif dengan atau tanpa disertai dengan satuan ukur yang tepat (%2)","invalidCssLength":"Nilai untuk \"%1\" harus sebuah angkat positif dengan atau tanpa pengukuran unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Nilai yang dispesifikasian untuk kolom \"%1\" harus sebuah angka positif dengan atau tanpa sebuah unit pengukuran HTML (px atau %) yang valid.","invalidInlineStyle":"Nilai pada inline style merupakan pasangan nama dan nilai dengan format \"nama : nilai\", yang dipisahkan dengan titik dua.","cssLengthTooltip":"Masukkan sebuah angka untuk sebuah nilai dalam pixel atau sebuah angka dengan unit CSS yang sah (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, tidak tersedia</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Spasi","35":"End","36":"Home","46":"Hapus","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Pintasan Keyboard","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/is.js b/core/assets/vendor/ckeditor/lang/is.js index 22bd643e059d..ddf2cf2cb1ff 100644 --- a/core/assets/vendor/ckeditor/lang/is.js +++ b/core/assets/vendor/ckeditor/lang/is.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['is']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Hætta við afturköllun","undo":"Afturkalla"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Breidd ramma","caption":"Titill","cell":{"menu":"Reitur","insertBefore":"Skjóta inn reiti fyrir aftan","insertAfter":"Skjóta inn reiti fyrir framan","deleteCell":"Fella reit","merge":"Sameina reiti","mergeRight":"Sameina til hægri","mergeDown":"Sameina niður á við","splitHorizontal":"Kljúfa reit lárétt","splitVertical":"Kljúfa reit lóðrétt","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"ReitaspássÃa","cellSpace":"Bil milli reita","column":{"menu":"Dálkur","insertBefore":"Skjóta inn dálki vinstra megin","insertAfter":"Skjóta inn dálki hægra megin","deleteColumn":"Fella dálk"},"columns":"Dálkar","deleteTable":"Fella töflu","headers":"Fyrirsagnir","headersBoth":"Hvort tveggja","headersColumn":"Fyrsti dálkur","headersNone":"Engar","headersRow":"Fyrsta röð","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Eigindi töflu","row":{"menu":"Röð","insertBefore":"Skjóta inn röð fyrir ofan","insertAfter":"Skjóta inn röð fyrir neðan","deleteRow":"Eyða röð"},"rows":"Raðir","summary":"Ãfram","title":"Eigindi töflu","toolbar":"Tafla","widthPc":"prósent","widthPx":"myndeindir","widthUnit":"width unit"},"stylescombo":{"label":"StÃlflokkur","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Velja tákn","toolbar":"Setja inn merki"},"sourcedialog":{"toolbar":"Kóði","title":"Kóði"},"sourcearea":{"toolbar":"Kóði"},"showblocks":{"toolbar":"Sýna blokkir"},"removeformat":{"toolbar":"Fjarlægja snið"},"pastetext":{"button":"LÃma sem ósniðinn texta","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"LÃma sem ósniðinn texta"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"LÃma úr Word","toolbar":"LÃma úr Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Punktalisti","numberedlist":"Númeraður listi"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Minnka inndrátt","outdent":"Auka inndrátt"},"image2":{"alt":"Baklægur texti","btnUpload":"Hlaða upp","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Almennt","lockRatio":"Festa stærðarhlutfall","menu":"Eigindi myndar","pathName":"image","pathNameCaption":"caption","resetSize":"Reikna stærð","resizer":"Click and drag to resize","title":"Eigindi myndar","uploadTab":"Senda upp","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Lóðrétt lÃna"},"format":{"label":"StÃlsnið","panelTitle":"StÃlsnið","tag_address":"Vistfang","tag_div":"Venjulegt (DIV)","tag_h1":"Fyrirsögn 1","tag_h2":"Fyrirsögn 2","tag_h3":"Fyrirsögn 3","tag_h4":"Fyrirsögn 4","tag_h5":"Fyrirsögn 5","tag_h6":"Fyrirsögn 6","tag_p":"Venjulegt letur","tag_pre":"Forsniðið"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Afrita","copyError":"Öryggisstillingar vafrans þÃns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið à afrita (Ctrl/Cmd+C).","cut":"Klippa","cutError":"Öryggisstillingar vafrans þÃns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið à klippa (Ctrl/Cmd+X).","paste":"LÃma","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Inndráttur"},"basicstyles":{"bold":"Feitletrað","italic":"Skáletrað","strike":"Yfirstrikað","subscript":"Niðurskrifað","superscript":"Uppskrifað","underline":"Undirstrikað"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Fletta à skjalasafni","url":"Vefslóð","protocol":"Samskiptastaðall","upload":"Senda upp","uploadSubmit":"Hlaða upp","image":"Setja inn mynd","flash":"Flash","form":"Setja inn innsláttarform","checkbox":"Setja inn hökunarreit","radio":"Setja inn valhnapp","textField":"Setja inn textareit","textarea":"Setja inn textasvæði","hiddenField":"Setja inn falið svæði","button":"Setja inn hnapp","select":"Setja inn lista","imageButton":"Setja inn myndahnapp","notSet":"<ekkert valið>","id":"Auðkenni","name":"Nafn","langDir":"Lesstefna","langDirLtr":"Frá vinstri til hægri (LTR)","langDirRtl":"Frá hægri til vinstri (RTL)","langCode":"Tungumálakóði","longDescr":"Nánari lýsing","cssClass":"StÃlsniðsflokkur","advisoryTitle":"Titill","cssStyle":"StÃll","ok":"à lagi","cancel":"Hætta við","close":"Close","preview":"Forskoða","resize":"Resize","generalTab":"Almennt","advancedTab":"Tæknilegt","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Mark","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Frá vinstri til hægri (LTR)","langDirRTL":"Frá hægri til vinstri (RTL)","styles":"StÃll","cssClasses":"StÃlsniðsflokkur","width":"Breidd","height":"Hæð","align":"Jöfnun","left":"Vinstri","right":"Hægri","center":"Miðjað","justify":"Jafna báðum megin","alignLeft":"Vinstrijöfnun","alignRight":"Hægrijöfnun","alignCenter":"Align Center","alignTop":"Efst","alignMiddle":"Miðjuð","alignBottom":"Neðst","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['is']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Hætta við afturköllun","undo":"Afturkalla"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Breidd ramma","caption":"Titill","cell":{"menu":"Reitur","insertBefore":"Skjóta inn reiti fyrir aftan","insertAfter":"Skjóta inn reiti fyrir framan","deleteCell":"Fella reit","merge":"Sameina reiti","mergeRight":"Sameina til hægri","mergeDown":"Sameina niður á við","splitHorizontal":"Kljúfa reit lárétt","splitVertical":"Kljúfa reit lóðrétt","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"ReitaspássÃa","cellSpace":"Bil milli reita","column":{"menu":"Dálkur","insertBefore":"Skjóta inn dálki vinstra megin","insertAfter":"Skjóta inn dálki hægra megin","deleteColumn":"Fella dálk"},"columns":"Dálkar","deleteTable":"Fella töflu","headers":"Fyrirsagnir","headersBoth":"Hvort tveggja","headersColumn":"Fyrsti dálkur","headersNone":"Engar","headersRow":"Fyrsta röð","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Eigindi töflu","row":{"menu":"Röð","insertBefore":"Skjóta inn röð fyrir ofan","insertAfter":"Skjóta inn röð fyrir neðan","deleteRow":"Eyða röð"},"rows":"Raðir","summary":"Ãfram","title":"Eigindi töflu","toolbar":"Tafla","widthPc":"prósent","widthPx":"myndeindir","widthUnit":"width unit"},"stylescombo":{"label":"StÃlflokkur","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Velja tákn","toolbar":"Setja inn merki"},"sourcedialog":{"toolbar":"Kóði","title":"Kóði"},"sourcearea":{"toolbar":"Kóði"},"showblocks":{"toolbar":"Sýna blokkir"},"removeformat":{"toolbar":"Fjarlægja snið"},"pastetext":{"button":"LÃma sem ósniðinn texta","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"LÃma sem ósniðinn texta"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"LÃma úr Word","toolbar":"LÃma úr Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Punktalisti","numberedlist":"Númeraður listi"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Minnka inndrátt","outdent":"Auka inndrátt"},"image2":{"alt":"Baklægur texti","btnUpload":"Hlaða upp","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Almennt","lockRatio":"Festa stærðarhlutfall","menu":"Eigindi myndar","pathName":"image","pathNameCaption":"caption","resetSize":"Reikna stærð","resizer":"Click and drag to resize","title":"Eigindi myndar","uploadTab":"Senda upp","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Lóðrétt lÃna"},"format":{"label":"StÃlsnið","panelTitle":"StÃlsnið","tag_address":"Vistfang","tag_div":"Venjulegt (DIV)","tag_h1":"Fyrirsögn 1","tag_h2":"Fyrirsögn 2","tag_h3":"Fyrirsögn 3","tag_h4":"Fyrirsögn 4","tag_h5":"Fyrirsögn 5","tag_h6":"Fyrirsögn 6","tag_p":"Venjulegt letur","tag_pre":"Forsniðið"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Afrita","copyError":"Öryggisstillingar vafrans þÃns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið à afrita (Ctrl/Cmd+C).","cut":"Klippa","cutError":"Öryggisstillingar vafrans þÃns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið à klippa (Ctrl/Cmd+X).","paste":"LÃma","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Inndráttur"},"basicstyles":{"bold":"Feitletrað","italic":"Skáletrað","strike":"Yfirstrikað","subscript":"Niðurskrifað","superscript":"Uppskrifað","underline":"Undirstrikað"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Fletta à skjalasafni","url":"Vefslóð","protocol":"Samskiptastaðall","upload":"Senda upp","uploadSubmit":"Hlaða upp","image":"Setja inn mynd","form":"Setja inn innsláttarform","checkbox":"Setja inn hökunarreit","radio":"Setja inn valhnapp","textField":"Setja inn textareit","textarea":"Setja inn textasvæði","hiddenField":"Setja inn falið svæði","button":"Setja inn hnapp","select":"Setja inn lista","imageButton":"Setja inn myndahnapp","notSet":"<ekkert valið>","id":"Auðkenni","name":"Nafn","langDir":"Lesstefna","langDirLtr":"Frá vinstri til hægri (LTR)","langDirRtl":"Frá hægri til vinstri (RTL)","langCode":"Tungumálakóði","longDescr":"Nánari lýsing","cssClass":"StÃlsniðsflokkur","advisoryTitle":"Titill","cssStyle":"StÃll","ok":"à lagi","cancel":"Hætta við","close":"Close","preview":"Forskoða","resize":"Resize","generalTab":"Almennt","advancedTab":"Tæknilegt","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Mark","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Frá vinstri til hægri (LTR)","langDirRTL":"Frá hægri til vinstri (RTL)","styles":"StÃll","cssClasses":"StÃlsniðsflokkur","width":"Breidd","height":"Hæð","align":"Jöfnun","left":"Vinstri","right":"Hægri","center":"Miðjað","justify":"Jafna báðum megin","alignLeft":"Vinstrijöfnun","alignRight":"Hægrijöfnun","alignCenter":"Align Center","alignTop":"Efst","alignMiddle":"Miðjuð","alignBottom":"Neðst","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/it.js b/core/assets/vendor/ckeditor/lang/it.js index 7c138bb10f11..a604e27f39a7 100644 --- a/core/assets/vendor/ckeditor/lang/it.js +++ b/core/assets/vendor/ckeditor/lang/it.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['it']={"widget":{"move":"Fare clic e trascinare per spostare","label":"Widget %1"},"undo":{"redo":"Ripristina","undo":"Annulla"},"toolbar":{"toolbarCollapse":"Minimizza Toolbar","toolbarExpand":"Espandi Toolbar","toolbarGroups":{"document":"Documento","clipboard":"Copia negli appunti/Annulla","editing":"Modifica","forms":"Form","basicstyles":"Stili di base","paragraph":"Paragrafo","links":"Link","insert":"Inserisci","styles":"Stili","colors":"Colori","tools":"Strumenti"},"toolbars":"Editor toolbar"},"table":{"border":"Dimensione bordo","caption":"Intestazione","cell":{"menu":"Cella","insertBefore":"Inserisci Cella Prima","insertAfter":"Inserisci Cella Dopo","deleteCell":"Elimina celle","merge":"Unisce celle","mergeRight":"Unisci a Destra","mergeDown":"Unisci in Basso","splitHorizontal":"Dividi Cella Orizzontalmente","splitVertical":"Dividi Cella Verticalmente","title":"Proprietà della cella","cellType":"Tipo di cella","rowSpan":"Su più righe","colSpan":"Su più colonne","wordWrap":"Ritorno a capo","hAlign":"Allineamento orizzontale","vAlign":"Allineamento verticale","alignBaseline":"Linea Base","bgColor":"Colore di Sfondo","borderColor":"Colore del Bordo","data":"Dati","header":"Intestazione","yes":"Si","no":"No","invalidWidth":"La larghezza della cella dev'essere un numero.","invalidHeight":"L'altezza della cella dev'essere un numero.","invalidRowSpan":"Il numero di righe dev'essere un numero intero.","invalidColSpan":"Il numero di colonne dev'essere un numero intero.","chooseColor":"Scegli"},"cellPad":"Padding celle","cellSpace":"Spaziatura celle","column":{"menu":"Colonna","insertBefore":"Inserisci Colonna Prima","insertAfter":"Inserisci Colonna Dopo","deleteColumn":"Elimina colonne"},"columns":"Colonne","deleteTable":"Cancella Tabella","headers":"Intestazione","headersBoth":"Entrambe","headersColumn":"Prima Colonna","headersNone":"Nessuna","headersRow":"Prima Riga","heightUnit":"unità altezza","invalidBorder":"La dimensione del bordo dev'essere un numero.","invalidCellPadding":"Il paging delle celle dev'essere un numero","invalidCellSpacing":"La spaziatura tra le celle dev'essere un numero.","invalidCols":"Il numero di colonne dev'essere un numero maggiore di 0.","invalidHeight":"L'altezza della tabella dev'essere un numero.","invalidRows":"Il numero di righe dev'essere un numero maggiore di 0.","invalidWidth":"La larghezza della tabella dev'essere un numero.","menu":"Proprietà tabella","row":{"menu":"Riga","insertBefore":"Inserisci Riga Prima","insertAfter":"Inserisci Riga Dopo","deleteRow":"Elimina righe"},"rows":"Righe","summary":"Indice","title":"Proprietà tabella","toolbar":"Tabella","widthPc":"percento","widthPx":"pixel","widthUnit":"unità larghezza"},"stylescombo":{"label":"Stili","panelTitle":"Stili di formattazione","panelTitle1":"Stili per blocchi","panelTitle2":"Stili in linea","panelTitle3":"Stili per oggetti"},"specialchar":{"options":"Opzioni carattere speciale","title":"Seleziona carattere speciale","toolbar":"Inserisci carattere speciale"},"sourcedialog":{"toolbar":"Sorgente","title":"Sorgente"},"sourcearea":{"toolbar":"Sorgente"},"showblocks":{"toolbar":"Visualizza Blocchi"},"removeformat":{"toolbar":"Elimina formattazione"},"pastetext":{"button":"Incolla come testo semplice","pasteNotification":"Premere %1 per incollare. Il tuo browser non permette di incollare tramite il pulsante della barra degli strumenti o tramite la voce del menu contestuale.","title":"Incolla come testo semplice"},"pastefromword":{"confirmCleanup":"Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?","error":"Non è stato possibile eliminare il testo incollato a causa di un errore interno.","title":"Incolla da Word","toolbar":"Incolla da Word"},"notification":{"closed":"Notifica chiusa."},"maximize":{"maximize":"Massimizza","minimize":"Minimizza"},"magicline":{"title":"Inserisci paragrafo qui"},"list":{"bulletedlist":"Inserisci/Rimuovi Elenco Puntato","numberedlist":"Inserisci/Rimuovi Elenco Numerato"},"language":{"button":"Imposta lingua","remove":"Rimuovi lingua"},"indent":{"indent":"Aumenta rientro","outdent":"Riduci rientro"},"image2":{"alt":"Testo alternativo","btnUpload":"Invia al server","captioned":"Immagine con didascalia","captionPlaceholder":"Didascalia","infoTab":"Informazioni immagine","lockRatio":"Blocca rapporto","menu":"Proprietà immagine","pathName":"immagine","pathNameCaption":"didascalia","resetSize":"Reimposta dimensione","resizer":"Fare clic e trascinare per ridimensionare","title":"Proprietà immagine","uploadTab":"Carica","urlMissing":"Manca l'URL dell'immagine.","altMissing":"Testo alternativo mancante."},"horizontalrule":{"toolbar":"Inserisci riga orizzontale"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Indirizzo","tag_div":"Paragrafo (DIV)","tag_h1":"Titolo 1","tag_h2":"Titolo 2","tag_h3":"Titolo 3","tag_h4":"Titolo 4","tag_h5":"Titolo 5","tag_h6":"Titolo 6","tag_p":"Normale","tag_pre":"Formattato"},"filetools":{"loadError":"Si è verificato un errore durante la lettura del file.","networkError":"Si è verificato un errore di rete durante il caricamento del file.","httpError404":"Si è verificato un errore HTTP durante il caricamento del file (404: file non trovato).","httpError403":"Si è verificato un errore HTTP durante il caricamento del file (403: accesso negato).","httpError":"Si è verificato un errore HTTP durante il caricamento del file (stato dell'errore: %1).","noUrlError":"L'URL per il caricamento non è stato definito.","responseError":"La risposta del server non è corretta."},"elementspath":{"eleLabel":"Percorso degli elementi","eleTitle":"%1 elemento"},"contextmenu":{"options":"Opzioni del menù contestuale"},"clipboard":{"copy":"Copia","copyError":"Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).","cut":"Taglia","cutError":"Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).","paste":"Incolla","pasteNotification":"Premere %1 per incollare. Il tuo browser non permette di incollare tramite il pulsante della barra degli strumenti o tramite la voce del menu contestuale.","pasteArea":"Area dove incollare","pasteMsg":"Incollare il proprio contenuto all'interno dell'area sottostante e premere OK."},"blockquote":{"toolbar":"Citazione"},"basicstyles":{"bold":"Grassetto","italic":"Corsivo","strike":"Barrato","subscript":"Pedice","superscript":"Apice","underline":"Sottolineato"},"about":{"copy":"Copyright © $1. Tutti i diritti riservati.","dlgTitle":"Informazioni su CKEditor 4","moreInfo":"Per le informazioni sulla licenza si prega di visitare il nostro sito:"},"editor":"Rich Text Editor","editorPanel":"Pannello Rich Text Editor","common":{"editorHelp":"Premi ALT 0 per aiuto","browseServer":"Cerca sul server","url":"URL","protocol":"Protocollo","upload":"Carica","uploadSubmit":"Invia al server","image":"Immagine","flash":"Oggetto Flash","form":"Modulo","checkbox":"Checkbox","radio":"Radio Button","textField":"Campo di testo","textarea":"Area di testo","hiddenField":"Campo nascosto","button":"Bottone","select":"Menu di selezione","imageButton":"Bottone immagine","notSet":"<non impostato>","id":"Id","name":"Nome","langDir":"Direzione scrittura","langDirLtr":"Da Sinistra a Destra (LTR)","langDirRtl":"Da Destra a Sinistra (RTL)","langCode":"Codice Lingua","longDescr":"URL descrizione estesa","cssClass":"Nome classe CSS","advisoryTitle":"Titolo","cssStyle":"Stile","ok":"OK","cancel":"Annulla","close":"Chiudi","preview":"Anteprima","resize":"Trascina per ridimensionare","generalTab":"Generale","advancedTab":"Avanzate","validateNumberFailed":"Il valore inserito non è un numero.","confirmNewPage":"Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?","confirmCancel":"Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?","options":"Opzioni","target":"Destinazione","targetNew":"Nuova finestra (_blank)","targetTop":"Finestra in primo piano (_top)","targetSelf":"Stessa finestra (_self)","targetParent":"Finestra Padre (_parent)","langDirLTR":"Da sinistra a destra (LTR)","langDirRTL":"Da destra a sinistra (RTL)","styles":"Stile","cssClasses":"Classi di stile","width":"Larghezza","height":"Altezza","align":"Allineamento","left":"Sinistra","right":"Destra","center":"Centrato","justify":"Giustifica","alignLeft":"Allinea a sinistra","alignRight":"Allinea a destra","alignCenter":"Allinea al centro","alignTop":"In Alto","alignMiddle":"Centrato","alignBottom":"In Basso","alignNone":"Nessuno","invalidValue":"Valore non valido.","invalidHeight":"L'altezza dev'essere un numero","invalidWidth":"La Larghezza dev'essere un numero","invalidLength":"Il valore specificato per il campo \"%1\" deve essere un numero positivo con o senza un'unità di misura valida (%2).","invalidCssLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le classi CSS (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le pagine HTML (px o %).","invalidInlineStyle":"Il valore specificato per lo stile inline deve consistere in una o più tuple con il formato di \"name : value\", separati da semicolonne.","cssLengthTooltip":"Inserisci un numero per il valore in pixel oppure un numero con una valida unità CSS (px, %, in, cm, mm, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, non disponibile</span>","keyboard":{"8":"Backspace","13":"Invio","16":"Maiusc","17":"Ctrl","18":"Alt","32":"Spazio","35":"Fine","36":"Inizio","46":"Canc","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Scorciatoia da tastiera","optionDefault":"Predefinito"}}; \ No newline at end of file +CKEDITOR.lang['it']={"widget":{"move":"Fare clic e trascinare per spostare","label":"Widget %1"},"undo":{"redo":"Ripristina","undo":"Annulla"},"toolbar":{"toolbarCollapse":"Minimizza Toolbar","toolbarExpand":"Espandi Toolbar","toolbarGroups":{"document":"Documento","clipboard":"Copia negli appunti/Annulla","editing":"Modifica","forms":"Form","basicstyles":"Stili di base","paragraph":"Paragrafo","links":"Link","insert":"Inserisci","styles":"Stili","colors":"Colori","tools":"Strumenti"},"toolbars":"Editor toolbar"},"table":{"border":"Dimensione bordo","caption":"Intestazione","cell":{"menu":"Cella","insertBefore":"Inserisci Cella Prima","insertAfter":"Inserisci Cella Dopo","deleteCell":"Elimina celle","merge":"Unisce celle","mergeRight":"Unisci a Destra","mergeDown":"Unisci in Basso","splitHorizontal":"Dividi Cella Orizzontalmente","splitVertical":"Dividi Cella Verticalmente","title":"Proprietà della cella","cellType":"Tipo di cella","rowSpan":"Su più righe","colSpan":"Su più colonne","wordWrap":"Ritorno a capo","hAlign":"Allineamento orizzontale","vAlign":"Allineamento verticale","alignBaseline":"Linea Base","bgColor":"Colore di Sfondo","borderColor":"Colore del Bordo","data":"Dati","header":"Intestazione","yes":"Si","no":"No","invalidWidth":"La larghezza della cella dev'essere un numero.","invalidHeight":"L'altezza della cella dev'essere un numero.","invalidRowSpan":"Il numero di righe dev'essere un numero intero.","invalidColSpan":"Il numero di colonne dev'essere un numero intero.","chooseColor":"Scegli"},"cellPad":"Padding celle","cellSpace":"Spaziatura celle","column":{"menu":"Colonna","insertBefore":"Inserisci Colonna Prima","insertAfter":"Inserisci Colonna Dopo","deleteColumn":"Elimina colonne"},"columns":"Colonne","deleteTable":"Cancella Tabella","headers":"Intestazione","headersBoth":"Entrambe","headersColumn":"Prima Colonna","headersNone":"Nessuna","headersRow":"Prima Riga","heightUnit":"unità altezza","invalidBorder":"La dimensione del bordo dev'essere un numero.","invalidCellPadding":"Il paging delle celle dev'essere un numero","invalidCellSpacing":"La spaziatura tra le celle dev'essere un numero.","invalidCols":"Il numero di colonne dev'essere un numero maggiore di 0.","invalidHeight":"L'altezza della tabella dev'essere un numero.","invalidRows":"Il numero di righe dev'essere un numero maggiore di 0.","invalidWidth":"La larghezza della tabella dev'essere un numero.","menu":"Proprietà tabella","row":{"menu":"Riga","insertBefore":"Inserisci Riga Prima","insertAfter":"Inserisci Riga Dopo","deleteRow":"Elimina righe"},"rows":"Righe","summary":"Indice","title":"Proprietà tabella","toolbar":"Tabella","widthPc":"percento","widthPx":"pixel","widthUnit":"unità larghezza"},"stylescombo":{"label":"Stili","panelTitle":"Stili di formattazione","panelTitle1":"Stili per blocchi","panelTitle2":"Stili in linea","panelTitle3":"Stili per oggetti"},"specialchar":{"options":"Opzioni carattere speciale","title":"Seleziona carattere speciale","toolbar":"Inserisci carattere speciale"},"sourcedialog":{"toolbar":"Sorgente","title":"Sorgente"},"sourcearea":{"toolbar":"Sorgente"},"showblocks":{"toolbar":"Visualizza Blocchi"},"removeformat":{"toolbar":"Elimina formattazione"},"pastetext":{"button":"Incolla come testo semplice","pasteNotification":"Premere %1 per incollare. Il tuo browser non permette di incollare tramite il pulsante della barra degli strumenti o tramite la voce del menu contestuale.","title":"Incolla come testo semplice"},"pastefromword":{"confirmCleanup":"Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?","error":"Non è stato possibile eliminare il testo incollato a causa di un errore interno.","title":"Incolla da Word","toolbar":"Incolla da Word"},"notification":{"closed":"Notifica chiusa."},"maximize":{"maximize":"Massimizza","minimize":"Minimizza"},"magicline":{"title":"Inserisci paragrafo qui"},"list":{"bulletedlist":"Inserisci/Rimuovi Elenco Puntato","numberedlist":"Inserisci/Rimuovi Elenco Numerato"},"language":{"button":"Imposta lingua","remove":"Rimuovi lingua"},"indent":{"indent":"Aumenta rientro","outdent":"Riduci rientro"},"image2":{"alt":"Testo alternativo","btnUpload":"Invia al server","captioned":"Immagine con didascalia","captionPlaceholder":"Didascalia","infoTab":"Informazioni immagine","lockRatio":"Blocca rapporto","menu":"Proprietà immagine","pathName":"immagine","pathNameCaption":"didascalia","resetSize":"Reimposta dimensione","resizer":"Fare clic e trascinare per ridimensionare","title":"Proprietà immagine","uploadTab":"Carica","urlMissing":"Manca l'URL dell'immagine.","altMissing":"Testo alternativo mancante."},"horizontalrule":{"toolbar":"Inserisci riga orizzontale"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Indirizzo","tag_div":"Paragrafo (DIV)","tag_h1":"Titolo 1","tag_h2":"Titolo 2","tag_h3":"Titolo 3","tag_h4":"Titolo 4","tag_h5":"Titolo 5","tag_h6":"Titolo 6","tag_p":"Normale","tag_pre":"Formattato"},"filetools":{"loadError":"Si è verificato un errore durante la lettura del file.","networkError":"Si è verificato un errore di rete durante il caricamento del file.","httpError404":"Si è verificato un errore HTTP durante il caricamento del file (404: file non trovato).","httpError403":"Si è verificato un errore HTTP durante il caricamento del file (403: accesso negato).","httpError":"Si è verificato un errore HTTP durante il caricamento del file (stato dell'errore: %1).","noUrlError":"L'URL per il caricamento non è stato definito.","responseError":"La risposta del server non è corretta."},"elementspath":{"eleLabel":"Percorso degli elementi","eleTitle":"%1 elemento"},"contextmenu":{"options":"Opzioni del menù contestuale"},"clipboard":{"copy":"Copia","copyError":"Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).","cut":"Taglia","cutError":"Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).","paste":"Incolla","pasteNotification":"Premere %1 per incollare. Il tuo browser non permette di incollare tramite il pulsante della barra degli strumenti o tramite la voce del menu contestuale.","pasteArea":"Area dove incollare","pasteMsg":"Incollare il proprio contenuto all'interno dell'area sottostante e premere OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citazione"},"basicstyles":{"bold":"Grassetto","italic":"Corsivo","strike":"Barrato","subscript":"Pedice","superscript":"Apice","underline":"Sottolineato"},"about":{"copy":"Copyright © $1. Tutti i diritti riservati.","dlgTitle":"Informazioni su CKEditor 4","moreInfo":"Per le informazioni sulla licenza si prega di visitare il nostro sito:"},"editor":"Rich Text Editor","editorPanel":"Pannello Rich Text Editor","common":{"editorHelp":"Premi ALT 0 per aiuto","browseServer":"Cerca sul server","url":"URL","protocol":"Protocollo","upload":"Carica","uploadSubmit":"Invia al server","image":"Immagine","form":"Modulo","checkbox":"Checkbox","radio":"Radio Button","textField":"Campo di testo","textarea":"Area di testo","hiddenField":"Campo nascosto","button":"Bottone","select":"Menu di selezione","imageButton":"Bottone immagine","notSet":"<non impostato>","id":"Id","name":"Nome","langDir":"Direzione scrittura","langDirLtr":"Da Sinistra a Destra (LTR)","langDirRtl":"Da Destra a Sinistra (RTL)","langCode":"Codice Lingua","longDescr":"URL descrizione estesa","cssClass":"Nome classe CSS","advisoryTitle":"Titolo","cssStyle":"Stile","ok":"OK","cancel":"Annulla","close":"Chiudi","preview":"Anteprima","resize":"Trascina per ridimensionare","generalTab":"Generale","advancedTab":"Avanzate","validateNumberFailed":"Il valore inserito non è un numero.","confirmNewPage":"Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?","confirmCancel":"Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?","options":"Opzioni","target":"Destinazione","targetNew":"Nuova finestra (_blank)","targetTop":"Finestra in primo piano (_top)","targetSelf":"Stessa finestra (_self)","targetParent":"Finestra Padre (_parent)","langDirLTR":"Da sinistra a destra (LTR)","langDirRTL":"Da destra a sinistra (RTL)","styles":"Stile","cssClasses":"Classi di stile","width":"Larghezza","height":"Altezza","align":"Allineamento","left":"Sinistra","right":"Destra","center":"Centrato","justify":"Giustifica","alignLeft":"Allinea a sinistra","alignRight":"Allinea a destra","alignCenter":"Allinea al centro","alignTop":"In Alto","alignMiddle":"Centrato","alignBottom":"In Basso","alignNone":"Nessuno","invalidValue":"Valore non valido.","invalidHeight":"L'altezza dev'essere un numero","invalidWidth":"La Larghezza dev'essere un numero","invalidLength":"Il valore specificato per il campo \"%1\" deve essere un numero positivo con o senza un'unità di misura valida (%2).","invalidCssLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le classi CSS (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le pagine HTML (px o %).","invalidInlineStyle":"Il valore specificato per lo stile inline deve consistere in una o più tuple con il formato di \"name : value\", separati da semicolonne.","cssLengthTooltip":"Inserisci un numero per il valore in pixel oppure un numero con una valida unità CSS (px, %, in, cm, mm, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, non disponibile</span>","keyboard":{"8":"Backspace","13":"Invio","16":"Maiusc","17":"Ctrl","18":"Alt","32":"Spazio","35":"Fine","36":"Inizio","46":"Canc","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Scorciatoia da tastiera","optionDefault":"Predefinito"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ja.js b/core/assets/vendor/ckeditor/lang/ja.js index 3406ca24d8ed..682e3ff66e0e 100644 --- a/core/assets/vendor/ckeditor/lang/ja.js +++ b/core/assets/vendor/ckeditor/lang/ja.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ja']={"widget":{"move":"ドラッグã—ã¦ç§»å‹•","label":"%1 ウィジェット"},"undo":{"redo":"ã‚„ã‚Šç›´ã™","undo":"å…ƒã«æˆ»ã™"},"toolbar":{"toolbarCollapse":"ツールãƒãƒ¼ã‚’é–‰ã˜ã‚‹","toolbarExpand":"ツールãƒãƒ¼ã‚’é–‹ã","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"編集ツールãƒãƒ¼"},"table":{"border":"æž ç·šã®å¹…","caption":"ã‚ャプション","cell":{"menu":"セル","insertBefore":"セルをå‰ã«æŒ¿å…¥","insertAfter":"セルを後ã«æŒ¿å…¥","deleteCell":"セルを削除","merge":"セルをçµåˆ","mergeRight":"å³ã«çµåˆ","mergeDown":"下ã«çµåˆ","splitHorizontal":"セルを水平方å‘ã«åˆ†å‰²","splitVertical":"セルを垂直方å‘ã«åˆ†å‰²","title":"セルã®ãƒ—ãƒãƒ‘ティ","cellType":"セルã®ç¨®é¡ž","rowSpan":"è¡Œã®çµåˆæ•°","colSpan":"列ã®çµåˆæ•°","wordWrap":"å˜èªžã®æŠ˜ã‚Šè¿”ã—","hAlign":"水平方å‘ã®é…ç½®","vAlign":"åž‚ç›´æ–¹å‘ã®é…ç½®","alignBaseline":"ベースライン","bgColor":"背景色","borderColor":"ボーダーカラー","data":"テーブルデータ (td)","header":"ヘッダ","yes":"ã¯ã„","no":"ã„ã„ãˆ","invalidWidth":"セル幅ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidHeight":"セル高ã•ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidRowSpan":"縦幅(行数)ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidColSpan":"横幅(列数)ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","chooseColor":"色ã®é¸æŠž"},"cellPad":"セル内間隔","cellSpace":"セル内余白","column":{"menu":"列","insertBefore":"列を左ã«æŒ¿å…¥","insertAfter":"列をå³ã«æŒ¿å…¥","deleteColumn":"列を削除"},"columns":"列数","deleteTable":"表を削除","headers":"ヘッダ (th)","headersBoth":"両方","headersColumn":"最åˆã®åˆ—ã®ã¿","headersNone":"ãªã—","headersRow":"最åˆã®è¡Œã®ã¿","heightUnit":"height unit","invalidBorder":"æž ç·šã®å¹…ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidCellPadding":"セル内余白ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidCellSpacing":"セル間余白ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidCols":"列数ã¯0より大ããªæ•°å€¤ã‚’入力ã—ã¦ãã ã•ã„。","invalidHeight":"高ã•ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidRows":"行数ã¯0より大ããªæ•°å€¤ã‚’入力ã—ã¦ãã ã•ã„。","invalidWidth":"å¹…ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","menu":"表ã®ãƒ—ãƒãƒ‘ティ","row":{"menu":"è¡Œ","insertBefore":"行を上ã«æŒ¿å…¥","insertAfter":"行を下ã«æŒ¿å…¥","deleteRow":"行を削除"},"rows":"行数","summary":"表ã®æ¦‚è¦","title":"表ã®ãƒ—ãƒãƒ‘ティ","toolbar":"表","widthPc":"パーセント","widthPx":"ピクセル","widthUnit":"å¹…ã®å˜ä½"},"stylescombo":{"label":"スタイル","panelTitle":"スタイル","panelTitle1":"ブãƒãƒƒã‚¯ã‚¹ã‚¿ã‚¤ãƒ«","panelTitle2":"インラインスタイル","panelTitle3":"オブジェクトスタイル"},"specialchar":{"options":"特殊文å—オプション","title":"特殊文å—ã®é¸æŠž","toolbar":"特殊文å—を挿入"},"sourcedialog":{"toolbar":"ソース","title":"ソース"},"sourcearea":{"toolbar":"ソース"},"showblocks":{"toolbar":"ブãƒãƒƒã‚¯è¡¨ç¤º"},"removeformat":{"toolbar":"書å¼ã‚’解除"},"pastetext":{"button":"プレーンテã‚ストã¨ã—ã¦è²¼ã‚Šä»˜ã‘","pasteNotification":"%1 を押ã—ã¦è²¼ã‚Šä»˜ã‘ã¾ã™ã€‚ ブラウザã¯ã€ãƒ„ールãƒãƒ¼ãƒœã‚¿ãƒ³ã¾ãŸã¯ã‚³ãƒ³ãƒ†ã‚ストメニューオプションを使用ã—ãŸè²¼ã‚Šä»˜ã‘をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。","title":"プレーンテã‚ストã¨ã—ã¦è²¼ã‚Šä»˜ã‘"},"pastefromword":{"confirmCleanup":"貼り付ã‘ã‚’è¡Œã†ãƒ†ã‚ストã¯ãƒ¯ãƒ¼ãƒ‰æ–‡ç« ã‹ã‚‰ã‚³ãƒ”ーã•ã‚Œã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚貼り付ã‘ã‚‹å‰ã«ã‚¯ãƒªãƒ¼ãƒ‹ãƒ³ã‚°ã‚’è¡Œã„ã¾ã™ã‹ï¼Ÿ","error":"内部エラーã«ã‚ˆã‚Šè²¼ã‚Šä»˜ã‘ãŸãƒ‡ãƒ¼ã‚¿ã‚’クリアã§ãã¾ã›ã‚“ã§ã—ãŸ","title":"ãƒ¯ãƒ¼ãƒ‰æ–‡ç« ã‹ã‚‰è²¼ã‚Šä»˜ã‘","toolbar":"ãƒ¯ãƒ¼ãƒ‰æ–‡ç« ã‹ã‚‰è²¼ã‚Šä»˜ã‘"},"notification":{"closed":"通知を閉ã˜ã¾ã—ãŸã€‚"},"maximize":{"maximize":"最大化","minimize":"最å°åŒ–"},"magicline":{"title":"ã“ã“ã«æ®µè½ã‚’挿入"},"list":{"bulletedlist":"番å·ç„¡ã—リスト","numberedlist":"番å·ä»˜ãリスト"},"language":{"button":"言語をè¨å®š","remove":"言語を削除"},"indent":{"indent":"インデント","outdent":"インデント解除"},"image2":{"alt":"代替テã‚スト","btnUpload":"サーãƒãƒ¼ã«é€ä¿¡","captioned":"ã‚ャプションを付ã‘ã‚‹","captionPlaceholder":"ã‚ャプション","infoTab":"ç”»åƒæƒ…å ±","lockRatio":"比率を固定","menu":"ç”»åƒã®ãƒ—ãƒãƒ‘ティ","pathName":"image","pathNameCaption":"caption","resetSize":"サイズをリセット","resizer":"ドラッグã—ã¦ãƒªã‚µã‚¤ã‚º","title":"ç”»åƒã®ãƒ—ãƒãƒ‘ティ","uploadTab":"アップãƒãƒ¼ãƒ‰","urlMissing":"ç”»åƒã®URLを入力ã—ã¦ãã ã•ã„。","altMissing":"代替テã‚ストを入力ã—ã¦ãã ã•ã„。"},"horizontalrule":{"toolbar":"水平線"},"format":{"label":"書å¼","panelTitle":"段è½ã®æ›¸å¼","tag_address":"アドレス","tag_div":"標準 (DIV)","tag_h1":"見出㗠1","tag_h2":"見出㗠2","tag_h3":"見出㗠3","tag_h4":"見出㗠4","tag_h5":"見出㗠5","tag_h6":"見出㗠6","tag_p":"標準","tag_pre":"書å¼ä»˜ã"},"filetools":{"loadError":"ファイルã®èªã¿è¾¼ã¿ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚","networkError":"ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ä¸ã«ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚","httpError404":"ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ä¸ã«HTTPエラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚(404: File not found)","httpError403":"ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ä¸ã«HTTPエラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚(403: Forbidden)","httpError":"ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ä¸ã«HTTPエラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚(error status: %1)","noUrlError":"アップãƒãƒ¼ãƒ‰URLãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。","responseError":"サーãƒãƒ¼ã®å¿œç”ãŒä¸æ£ã§ã™ã€‚"},"elementspath":{"eleLabel":"è¦ç´ パス","eleTitle":"%1 è¦ç´ "},"contextmenu":{"options":"コンテã‚ストメニューオプション"},"clipboard":{"copy":"コピー","copyError":"ブラウザーã®ã‚»ã‚ュリティè¨å®šã«ã‚ˆã‚Šã‚¨ãƒ‡ã‚£ã‚¿ã®ã‚³ãƒ”ーæ“作を自動ã§å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。実行ã™ã‚‹ã«ã¯æ‰‹å‹•ã§ã‚ーボードã®(Ctrl/Cmd+C)を使用ã—ã¦ãã ã•ã„。","cut":"切りå–ã‚Š","cutError":"ブラウザーã®ã‚»ã‚ュリティè¨å®šã«ã‚ˆã‚Šã‚¨ãƒ‡ã‚£ã‚¿ã®åˆ‡ã‚Šå–ã‚Šæ“作を自動ã§å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。実行ã™ã‚‹ã«ã¯æ‰‹å‹•ã§ã‚ーボードã®(Ctrl/Cmd+X)を使用ã—ã¦ãã ã•ã„。","paste":"貼り付ã‘","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"貼り付ã‘å ´æ‰€","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"ブãƒãƒƒã‚¯å¼•ç”¨æ–‡"},"basicstyles":{"bold":"太å—","italic":"斜体","strike":"打ã¡æ¶ˆã—ç·š","subscript":"下付ã","superscript":"上付ã","underline":"下線"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"CKEditorã«ã¤ã„ã¦","moreInfo":"ãƒ©ã‚¤ã‚»ãƒ³ã‚¹æƒ…å ±ã®è©³ç´°ã¯ã‚¦ã‚§ãƒ–サイトã«ã¦ç¢ºèªã—ã¦ãã ã•ã„:"},"editor":"リッãƒãƒ†ã‚ストエディタ","editorPanel":"リッãƒãƒ†ã‚ストエディタパãƒãƒ«","common":{"editorHelp":"ヘルプ㯠ALT 0 を押ã—ã¦ãã ã•ã„","browseServer":"サーãƒãƒ–ラウザ","url":"URL","protocol":"プãƒãƒˆã‚³ãƒ«","upload":"アップãƒãƒ¼ãƒ‰","uploadSubmit":"サーãƒãƒ¼ã«é€ä¿¡","image":"イメージ","flash":"Flash","form":"フォーム","checkbox":"ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹","radio":"ラジオボタン","textField":"1行テã‚スト","textarea":"テã‚ストエリア","hiddenField":"ä¸å¯è¦–フィールド","button":"ボタン","select":"é¸æŠžãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰","imageButton":"ç”»åƒãƒœã‚¿ãƒ³","notSet":"<ãªã—>","id":"Id","name":"Name属性","langDir":"æ–‡å—表記ã®æ–¹å‘","langDirLtr":"å·¦ã‹ã‚‰å³ (LTR)","langDirRtl":"å³ã‹ã‚‰å·¦ (RTL)","langCode":"言語コード","longDescr":"longdesc属性(長文説明)","cssClass":"スタイルシートクラス","advisoryTitle":"Title属性","cssStyle":"スタイルシート","ok":"OK","cancel":"ã‚ャンセル","close":"é–‰ã˜ã‚‹","preview":"プレビュー","resize":"ドラッグã—ã¦ãƒªã‚µã‚¤ã‚º","generalTab":"全般","advancedTab":"高度ãªè¨å®š","validateNumberFailed":"値ãŒæ•°å€¤ã§ã¯ã‚ã‚Šã¾ã›ã‚“","confirmNewPage":"変更内容をä¿å˜ã›ãšã€ æ–°ã—ã„ページを開ã„ã¦ã‚‚よã‚ã—ã„ã§ã—ょã†ã‹ï¼Ÿ","confirmCancel":"オプションè¨å®šã‚’変更ã—ã¾ã—ãŸã€‚ダイアãƒã‚°ã‚’é–‰ã˜ã¦ã‚‚よã‚ã—ã„ã§ã—ょã†ã‹ï¼Ÿ","options":"オプション","target":"ターゲット","targetNew":"æ–°ã—ã„ウインドウ (_blank)","targetTop":"最上部ウィンドウ (_top)","targetSelf":"åŒã˜ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ (_self)","targetParent":"親ウィンドウ (_parent)","langDirLTR":"å·¦ã‹ã‚‰å³ (LTR)","langDirRTL":"å³ã‹ã‚‰å·¦ (RTL)","styles":"スタイル","cssClasses":"スタイルシートクラス","width":"å¹…","height":"高ã•","align":"è¡Œæƒãˆ","left":"å·¦","right":"å³","center":"ä¸å¤®","justify":"両端æƒãˆ","alignLeft":"å·¦æƒãˆ","alignRight":"å³æƒãˆ","alignCenter":"Align Center","alignTop":"上","alignMiddle":"ä¸å¤®","alignBottom":"下","alignNone":"ãªã—","invalidValue":"ä¸æ£ãªå€¤ã§ã™ã€‚","invalidHeight":"高ã•ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidWidth":"å¹…ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"入力ã•ã‚ŒãŸ \"%1\" é …ç›®ã®å€¤ã¯ã€CSSã®å¤§ãã•(px, %, in, cm, mm, em, ex, pt, ã¾ãŸã¯ pc)ãŒæ£ã—ã„ã‚‚ã®ã§ã‚ã‚‹/ãªã„ã«é–¢ã‚らãšã€æ£ã®å€¤ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚","invalidHtmlLength":"入力ã•ã‚ŒãŸ \"%1\" é …ç›®ã®å€¤ã¯ã€HTMLã®å¤§ãã•(px ã¾ãŸã¯ %)ãŒæ£ã—ã„ã‚‚ã®ã§ã‚ã‚‹/ãªã„ã«é–¢ã‚らãšã€æ£ã®å€¤ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚","invalidInlineStyle":"入力ã•ã‚ŒãŸã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚¹ã‚¿ã‚¤ãƒ«ã®å€¤ã¯ã€\"åå‰ : 値\" ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã®ã‚»ãƒƒãƒˆã§ã€è¤‡æ•°ã®å ´åˆã¯ã‚»ãƒŸã‚³ãƒãƒ³ã§åŒºåˆ‡ã‚‰ã‚Œã¦ã„ã‚‹å½¢å¼ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚","cssLengthTooltip":"ピクセル数もã—ãã¯CSSã«ã‚»ãƒƒãƒˆã§ãる数値を入力ã—ã¦ãã ã•ã„。(px,%,in,cm,mm,em,ex,pt,or pc)","unavailable":"%1<span class=\"cke_accessibility\">, 利用ä¸å¯èƒ½</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"ã‚ーボードショートカット","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['ja']={"widget":{"move":"ドラッグã—ã¦ç§»å‹•","label":"%1 ウィジェット"},"undo":{"redo":"ã‚„ã‚Šç›´ã™","undo":"å…ƒã«æˆ»ã™"},"toolbar":{"toolbarCollapse":"ツールãƒãƒ¼ã‚’é–‰ã˜ã‚‹","toolbarExpand":"ツールãƒãƒ¼ã‚’é–‹ã","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"編集ツールãƒãƒ¼"},"table":{"border":"æž ç·šã®å¹…","caption":"ã‚ャプション","cell":{"menu":"セル","insertBefore":"セルをå‰ã«æŒ¿å…¥","insertAfter":"セルを後ã«æŒ¿å…¥","deleteCell":"セルを削除","merge":"セルをçµåˆ","mergeRight":"å³ã«çµåˆ","mergeDown":"下ã«çµåˆ","splitHorizontal":"セルを水平方å‘ã«åˆ†å‰²","splitVertical":"セルを垂直方å‘ã«åˆ†å‰²","title":"セルã®ãƒ—ãƒãƒ‘ティ","cellType":"セルã®ç¨®é¡ž","rowSpan":"è¡Œã®çµåˆæ•°","colSpan":"列ã®çµåˆæ•°","wordWrap":"å˜èªžã®æŠ˜ã‚Šè¿”ã—","hAlign":"水平方å‘ã®é…ç½®","vAlign":"åž‚ç›´æ–¹å‘ã®é…ç½®","alignBaseline":"ベースライン","bgColor":"背景色","borderColor":"ボーダーカラー","data":"テーブルデータ (td)","header":"ヘッダ","yes":"ã¯ã„","no":"ã„ã„ãˆ","invalidWidth":"セル幅ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidHeight":"セル高ã•ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidRowSpan":"縦幅(行数)ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidColSpan":"横幅(列数)ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","chooseColor":"色ã®é¸æŠž"},"cellPad":"セル内間隔","cellSpace":"セル内余白","column":{"menu":"列","insertBefore":"列を左ã«æŒ¿å…¥","insertAfter":"列をå³ã«æŒ¿å…¥","deleteColumn":"列を削除"},"columns":"列数","deleteTable":"表を削除","headers":"ヘッダ (th)","headersBoth":"両方","headersColumn":"最åˆã®åˆ—ã®ã¿","headersNone":"ãªã—","headersRow":"最åˆã®è¡Œã®ã¿","heightUnit":"height unit","invalidBorder":"æž ç·šã®å¹…ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidCellPadding":"セル内余白ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidCellSpacing":"セル間余白ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidCols":"列数ã¯0より大ããªæ•°å€¤ã‚’入力ã—ã¦ãã ã•ã„。","invalidHeight":"高ã•ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidRows":"行数ã¯0より大ããªæ•°å€¤ã‚’入力ã—ã¦ãã ã•ã„。","invalidWidth":"å¹…ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","menu":"表ã®ãƒ—ãƒãƒ‘ティ","row":{"menu":"è¡Œ","insertBefore":"行を上ã«æŒ¿å…¥","insertAfter":"行を下ã«æŒ¿å…¥","deleteRow":"行を削除"},"rows":"行数","summary":"表ã®æ¦‚è¦","title":"表ã®ãƒ—ãƒãƒ‘ティ","toolbar":"表","widthPc":"パーセント","widthPx":"ピクセル","widthUnit":"å¹…ã®å˜ä½"},"stylescombo":{"label":"スタイル","panelTitle":"スタイル","panelTitle1":"ブãƒãƒƒã‚¯ã‚¹ã‚¿ã‚¤ãƒ«","panelTitle2":"インラインスタイル","panelTitle3":"オブジェクトスタイル"},"specialchar":{"options":"特殊文å—オプション","title":"特殊文å—ã®é¸æŠž","toolbar":"特殊文å—を挿入"},"sourcedialog":{"toolbar":"ソース","title":"ソース"},"sourcearea":{"toolbar":"ソース"},"showblocks":{"toolbar":"ブãƒãƒƒã‚¯è¡¨ç¤º"},"removeformat":{"toolbar":"書å¼ã‚’解除"},"pastetext":{"button":"プレーンテã‚ストã¨ã—ã¦è²¼ã‚Šä»˜ã‘","pasteNotification":"%1 を押ã—ã¦è²¼ã‚Šä»˜ã‘ã¾ã™ã€‚ ブラウザã¯ã€ãƒ„ールãƒãƒ¼ãƒœã‚¿ãƒ³ã¾ãŸã¯ã‚³ãƒ³ãƒ†ã‚ストメニューオプションを使用ã—ãŸè²¼ã‚Šä»˜ã‘をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。","title":"プレーンテã‚ストã¨ã—ã¦è²¼ã‚Šä»˜ã‘"},"pastefromword":{"confirmCleanup":"貼り付ã‘ã‚’è¡Œã†ãƒ†ã‚ストã¯ãƒ¯ãƒ¼ãƒ‰æ–‡ç« ã‹ã‚‰ã‚³ãƒ”ーã•ã‚Œã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚貼り付ã‘ã‚‹å‰ã«ã‚¯ãƒªãƒ¼ãƒ‹ãƒ³ã‚°ã‚’è¡Œã„ã¾ã™ã‹ï¼Ÿ","error":"内部エラーã«ã‚ˆã‚Šè²¼ã‚Šä»˜ã‘ãŸãƒ‡ãƒ¼ã‚¿ã‚’クリアã§ãã¾ã›ã‚“ã§ã—ãŸ","title":"ãƒ¯ãƒ¼ãƒ‰æ–‡ç« ã‹ã‚‰è²¼ã‚Šä»˜ã‘","toolbar":"ãƒ¯ãƒ¼ãƒ‰æ–‡ç« ã‹ã‚‰è²¼ã‚Šä»˜ã‘"},"notification":{"closed":"通知を閉ã˜ã¾ã—ãŸã€‚"},"maximize":{"maximize":"最大化","minimize":"最å°åŒ–"},"magicline":{"title":"ã“ã“ã«æ®µè½ã‚’挿入"},"list":{"bulletedlist":"番å·ç„¡ã—リスト","numberedlist":"番å·ä»˜ãリスト"},"language":{"button":"言語をè¨å®š","remove":"言語を削除"},"indent":{"indent":"インデント","outdent":"インデント解除"},"image2":{"alt":"代替テã‚スト","btnUpload":"サーãƒãƒ¼ã«é€ä¿¡","captioned":"ã‚ャプションを付ã‘ã‚‹","captionPlaceholder":"ã‚ャプション","infoTab":"ç”»åƒæƒ…å ±","lockRatio":"比率を固定","menu":"ç”»åƒã®ãƒ—ãƒãƒ‘ティ","pathName":"image","pathNameCaption":"caption","resetSize":"サイズをリセット","resizer":"ドラッグã—ã¦ãƒªã‚µã‚¤ã‚º","title":"ç”»åƒã®ãƒ—ãƒãƒ‘ティ","uploadTab":"アップãƒãƒ¼ãƒ‰","urlMissing":"ç”»åƒã®URLを入力ã—ã¦ãã ã•ã„。","altMissing":"代替テã‚ストを入力ã—ã¦ãã ã•ã„。"},"horizontalrule":{"toolbar":"水平線"},"format":{"label":"書å¼","panelTitle":"段è½ã®æ›¸å¼","tag_address":"アドレス","tag_div":"標準 (DIV)","tag_h1":"見出㗠1","tag_h2":"見出㗠2","tag_h3":"見出㗠3","tag_h4":"見出㗠4","tag_h5":"見出㗠5","tag_h6":"見出㗠6","tag_p":"標準","tag_pre":"書å¼ä»˜ã"},"filetools":{"loadError":"ファイルã®èªã¿è¾¼ã¿ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚","networkError":"ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ä¸ã«ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚","httpError404":"ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ä¸ã«HTTPエラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚(404: File not found)","httpError403":"ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ä¸ã«HTTPエラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚(403: Forbidden)","httpError":"ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ä¸ã«HTTPエラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚(error status: %1)","noUrlError":"アップãƒãƒ¼ãƒ‰URLãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。","responseError":"サーãƒãƒ¼ã®å¿œç”ãŒä¸æ£ã§ã™ã€‚"},"elementspath":{"eleLabel":"è¦ç´ パス","eleTitle":"%1 è¦ç´ "},"contextmenu":{"options":"コンテã‚ストメニューオプション"},"clipboard":{"copy":"コピー","copyError":"ブラウザーã®ã‚»ã‚ュリティè¨å®šã«ã‚ˆã‚Šã‚¨ãƒ‡ã‚£ã‚¿ã®ã‚³ãƒ”ーæ“作を自動ã§å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。実行ã™ã‚‹ã«ã¯æ‰‹å‹•ã§ã‚ーボードã®(Ctrl/Cmd+C)を使用ã—ã¦ãã ã•ã„。","cut":"切りå–ã‚Š","cutError":"ブラウザーã®ã‚»ã‚ュリティè¨å®šã«ã‚ˆã‚Šã‚¨ãƒ‡ã‚£ã‚¿ã®åˆ‡ã‚Šå–ã‚Šæ“作を自動ã§å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。実行ã™ã‚‹ã«ã¯æ‰‹å‹•ã§ã‚ーボードã®(Ctrl/Cmd+X)を使用ã—ã¦ãã ã•ã„。","paste":"貼り付ã‘","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"貼り付ã‘å ´æ‰€","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"ブãƒãƒƒã‚¯å¼•ç”¨æ–‡"},"basicstyles":{"bold":"太å—","italic":"斜体","strike":"打ã¡æ¶ˆã—ç·š","subscript":"下付ã","superscript":"上付ã","underline":"下線"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"CKEditorã«ã¤ã„ã¦","moreInfo":"ãƒ©ã‚¤ã‚»ãƒ³ã‚¹æƒ…å ±ã®è©³ç´°ã¯ã‚¦ã‚§ãƒ–サイトã«ã¦ç¢ºèªã—ã¦ãã ã•ã„:"},"editor":"リッãƒãƒ†ã‚ストエディタ","editorPanel":"リッãƒãƒ†ã‚ストエディタパãƒãƒ«","common":{"editorHelp":"ヘルプ㯠ALT 0 を押ã—ã¦ãã ã•ã„","browseServer":"サーãƒãƒ–ラウザ","url":"URL","protocol":"プãƒãƒˆã‚³ãƒ«","upload":"アップãƒãƒ¼ãƒ‰","uploadSubmit":"サーãƒãƒ¼ã«é€ä¿¡","image":"イメージ","form":"フォーム","checkbox":"ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹","radio":"ラジオボタン","textField":"1行テã‚スト","textarea":"テã‚ストエリア","hiddenField":"ä¸å¯è¦–フィールド","button":"ボタン","select":"é¸æŠžãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰","imageButton":"ç”»åƒãƒœã‚¿ãƒ³","notSet":"<ãªã—>","id":"Id","name":"Name属性","langDir":"æ–‡å—表記ã®æ–¹å‘","langDirLtr":"å·¦ã‹ã‚‰å³ (LTR)","langDirRtl":"å³ã‹ã‚‰å·¦ (RTL)","langCode":"言語コード","longDescr":"longdesc属性(長文説明)","cssClass":"スタイルシートクラス","advisoryTitle":"Title属性","cssStyle":"スタイルシート","ok":"OK","cancel":"ã‚ャンセル","close":"é–‰ã˜ã‚‹","preview":"プレビュー","resize":"ドラッグã—ã¦ãƒªã‚µã‚¤ã‚º","generalTab":"全般","advancedTab":"高度ãªè¨å®š","validateNumberFailed":"値ãŒæ•°å€¤ã§ã¯ã‚ã‚Šã¾ã›ã‚“","confirmNewPage":"変更内容をä¿å˜ã›ãšã€ æ–°ã—ã„ページを開ã„ã¦ã‚‚よã‚ã—ã„ã§ã—ょã†ã‹ï¼Ÿ","confirmCancel":"オプションè¨å®šã‚’変更ã—ã¾ã—ãŸã€‚ダイアãƒã‚°ã‚’é–‰ã˜ã¦ã‚‚よã‚ã—ã„ã§ã—ょã†ã‹ï¼Ÿ","options":"オプション","target":"ターゲット","targetNew":"æ–°ã—ã„ウインドウ (_blank)","targetTop":"最上部ウィンドウ (_top)","targetSelf":"åŒã˜ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ (_self)","targetParent":"親ウィンドウ (_parent)","langDirLTR":"å·¦ã‹ã‚‰å³ (LTR)","langDirRTL":"å³ã‹ã‚‰å·¦ (RTL)","styles":"スタイル","cssClasses":"スタイルシートクラス","width":"å¹…","height":"高ã•","align":"è¡Œæƒãˆ","left":"å·¦","right":"å³","center":"ä¸å¤®","justify":"両端æƒãˆ","alignLeft":"å·¦æƒãˆ","alignRight":"å³æƒãˆ","alignCenter":"Align Center","alignTop":"上","alignMiddle":"ä¸å¤®","alignBottom":"下","alignNone":"ãªã—","invalidValue":"ä¸æ£ãªå€¤ã§ã™ã€‚","invalidHeight":"高ã•ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidWidth":"å¹…ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"入力ã•ã‚ŒãŸ \"%1\" é …ç›®ã®å€¤ã¯ã€CSSã®å¤§ãã•(px, %, in, cm, mm, em, ex, pt, ã¾ãŸã¯ pc)ãŒæ£ã—ã„ã‚‚ã®ã§ã‚ã‚‹/ãªã„ã«é–¢ã‚らãšã€æ£ã®å€¤ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚","invalidHtmlLength":"入力ã•ã‚ŒãŸ \"%1\" é …ç›®ã®å€¤ã¯ã€HTMLã®å¤§ãã•(px ã¾ãŸã¯ %)ãŒæ£ã—ã„ã‚‚ã®ã§ã‚ã‚‹/ãªã„ã«é–¢ã‚らãšã€æ£ã®å€¤ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚","invalidInlineStyle":"入力ã•ã‚ŒãŸã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚¹ã‚¿ã‚¤ãƒ«ã®å€¤ã¯ã€\"åå‰ : 値\" ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã®ã‚»ãƒƒãƒˆã§ã€è¤‡æ•°ã®å ´åˆã¯ã‚»ãƒŸã‚³ãƒãƒ³ã§åŒºåˆ‡ã‚‰ã‚Œã¦ã„ã‚‹å½¢å¼ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚","cssLengthTooltip":"ピクセル数もã—ãã¯CSSã«ã‚»ãƒƒãƒˆã§ãる数値を入力ã—ã¦ãã ã•ã„。(px,%,in,cm,mm,em,ex,pt,or pc)","unavailable":"%1<span class=\"cke_accessibility\">, 利用ä¸å¯èƒ½</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"ã‚ーボードショートカット","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ka.js b/core/assets/vendor/ckeditor/lang/ka.js index ae03b59e18f4..c0d187d0f2a9 100644 --- a/core/assets/vendor/ckeditor/lang/ka.js +++ b/core/assets/vendor/ckeditor/lang/ka.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ka']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"გáƒáƒ›áƒ”áƒáƒ ებáƒ","undo":"გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ"},"toolbar":{"toolbarCollapse":"ხელსáƒáƒ¬áƒ§áƒáƒ—რზáƒáƒšáƒ˜áƒ¡ შეწევáƒ","toolbarExpand":"ხელსáƒáƒ¬áƒ§áƒáƒ—რზáƒáƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ¬áƒ”ვáƒ","toolbarGroups":{"document":"დáƒáƒ™áƒ£áƒ›áƒ”ნტი","clipboard":"Clipboard/გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ","editing":"რედáƒáƒ¥áƒ¢áƒ˜áƒ ებáƒ","forms":"ფáƒáƒ მები","basicstyles":"ძირითáƒáƒ“ი სტილები","paragraph":"áƒáƒ‘ზáƒáƒªáƒ˜","links":"ბმულები","insert":"ჩáƒáƒ¡áƒ›áƒ","styles":"სტილები","colors":"ფერები","tools":"ხელსáƒáƒ¬áƒ§áƒáƒ”ბი"},"toolbars":"Editor toolbars"},"table":{"border":"ჩáƒáƒ ჩáƒáƒ¡ ზáƒáƒ›áƒ","caption":"სáƒáƒ—áƒáƒ£áƒ ი","cell":{"menu":"უჯრáƒ","insertBefore":"უჯრის ჩáƒáƒ¡áƒ›áƒ მáƒáƒœáƒáƒ›áƒ“ე","insertAfter":"უჯრის ჩáƒáƒ¡áƒ›áƒ მერე","deleteCell":"უჯრების წáƒáƒ¨áƒšáƒ","merge":"უჯრების შეერთებáƒ","mergeRight":"შეერთებრმáƒáƒ ჯვენáƒáƒ¡áƒ—áƒáƒœ","mergeDown":"შეერთებრქვემáƒáƒ—áƒáƒ¡áƒ—áƒáƒœ","splitHorizontal":"გáƒáƒ§áƒáƒ¤áƒ ჰáƒáƒ იზáƒáƒœáƒ¢áƒáƒšáƒ£áƒ áƒáƒ“","splitVertical":"გáƒáƒ§áƒáƒ¤áƒ ვერტიკáƒáƒšáƒ£áƒ áƒáƒ“","title":"უჯრის პáƒáƒ áƒáƒ›áƒ”ტრები","cellType":"უჯრის ტიპი","rowSpan":"სტრიქáƒáƒœáƒ”ბის áƒáƒ“ენáƒáƒ‘áƒ","colSpan":"სვეტების áƒáƒ“ენáƒáƒ‘áƒ","wordWrap":"სტრიქáƒáƒœáƒ˜áƒ¡ გáƒáƒ“áƒáƒ¢áƒáƒœáƒ (Word Wrap)","hAlign":"ჰáƒáƒ იზáƒáƒœáƒ¢áƒáƒšáƒ£áƒ ი სწáƒáƒ ებáƒ","vAlign":"ვერტიკáƒáƒšáƒ£áƒ ი სწáƒáƒ ებáƒ","alignBaseline":"ძირითáƒáƒ“ი ხáƒáƒ–ის გáƒáƒ¡áƒ¬áƒ•áƒ ივ","bgColor":"ფáƒáƒœáƒ˜áƒ¡ ფერი","borderColor":"ჩáƒáƒ ჩáƒáƒ¡ ფერი","data":"მáƒáƒœáƒáƒªáƒ”მები","header":"სáƒáƒ—áƒáƒ£áƒ ი","yes":"დიáƒáƒ®","no":"áƒáƒ áƒ","invalidWidth":"უჯრის სიგáƒáƒœáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidHeight":"უჯრის სიმáƒáƒ¦áƒšáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidRowSpan":"სტრიქáƒáƒœáƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘რმთელი რიცხვი უნდრიყáƒáƒ¡.","invalidColSpan":"სვეტების რáƒáƒáƒ“ენáƒáƒ‘რმთელი რიცხვი უნდრიყáƒáƒ¡.","chooseColor":"áƒáƒ ჩევáƒ"},"cellPad":"უჯრის კიდე (padding)","cellSpace":"უჯრის სივრცე (spacing)","column":{"menu":"სვეტი","insertBefore":"სვეტის ჩáƒáƒ›áƒáƒ¢áƒ”ბრწინ","insertAfter":"სვეტის ჩáƒáƒ›áƒáƒ¢áƒ”ბრმერე","deleteColumn":"სვეტების წáƒáƒ¨áƒšáƒ"},"columns":"სვეტი","deleteTable":"ცხრილის წáƒáƒ¨áƒšáƒ","headers":"სáƒáƒ—áƒáƒ£áƒ ები","headersBoth":"áƒáƒ ივე","headersColumn":"პირველი სვეტი","headersNone":"áƒáƒ áƒáƒ¤áƒ”რი","headersRow":"პირველი სტრიქáƒáƒœáƒ˜","heightUnit":"height unit","invalidBorder":"ჩáƒáƒ ჩáƒáƒ¡ ზáƒáƒ›áƒ რიცხვით უდნრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidCellPadding":"უჯრის კიდე (padding) რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidCellSpacing":"უჯრის სივრცე (spacing) რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidCols":"სვეტების რáƒáƒáƒ“ენáƒáƒ‘რდáƒáƒ“ებითი რიცხვი უნდრიყáƒáƒ¡.","invalidHeight":"ცხრილის სიმáƒáƒ¦áƒšáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidRows":"სტრიქáƒáƒœáƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘რდáƒáƒ“ებითი რიცხვი უნდრიყáƒáƒ¡.","invalidWidth":"ცხრილის სიგáƒáƒœáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","menu":"ცხრილის პáƒáƒ áƒáƒ›áƒ”ტრები","row":{"menu":"სტრიქáƒáƒœáƒ˜","insertBefore":"სტრიქáƒáƒœáƒ˜áƒ¡ ჩáƒáƒ›áƒáƒ¢áƒ”ბრწინ","insertAfter":"სტრიქáƒáƒœáƒ˜áƒ¡ ჩáƒáƒ›áƒáƒ¢áƒ”ბრმერე","deleteRow":"სტრიქáƒáƒœáƒ”ბის წáƒáƒ¨áƒšáƒ"},"rows":"სტრიქáƒáƒœáƒ˜","summary":"შეჯáƒáƒ›áƒ”ბáƒ","title":"ცხრილის პáƒáƒ áƒáƒ›áƒ”ტრები","toolbar":"ცხრილი","widthPc":"პრáƒáƒªáƒ”ნტი","widthPx":"წერტილი","widthUnit":"სáƒáƒ–áƒáƒ›áƒ˜ ერთეული"},"stylescombo":{"label":"სტილები","panelTitle":"ფáƒáƒ მáƒáƒ¢áƒ˜áƒ ების სტილები","panelTitle1":"áƒáƒ ის სტილები","panelTitle2":"თáƒáƒœáƒ“áƒáƒ თული სტილები","panelTitle3":"áƒáƒ‘იექტის სტილები"},"specialchar":{"options":"სპეციáƒáƒšáƒ£áƒ ი სიმბáƒáƒšáƒáƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრები","title":"სპეციáƒáƒšáƒ£áƒ ი სიმბáƒáƒšáƒáƒ¡ áƒáƒ ჩევáƒ","toolbar":"სპეციáƒáƒšáƒ£áƒ ი სიმბáƒáƒšáƒáƒ¡ ჩáƒáƒ¡áƒ›áƒ"},"sourcedialog":{"toolbar":"კáƒáƒ“ები","title":"კáƒáƒ“ები"},"sourcearea":{"toolbar":"კáƒáƒ“ები"},"showblocks":{"toolbar":"áƒáƒ ეების ჩვენებáƒ"},"removeformat":{"toolbar":"ფáƒáƒ მáƒáƒ¢áƒ˜áƒ ების მáƒáƒ®áƒ¡áƒœáƒ"},"pastetext":{"button":"მხáƒáƒšáƒáƒ“ ტექსტის ჩáƒáƒ¡áƒ›áƒ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"მხáƒáƒšáƒáƒ“ ტექსტის ჩáƒáƒ¡áƒ›áƒ"},"pastefromword":{"confirmCleanup":"ჩáƒáƒ¡áƒáƒ¡áƒ›áƒ”ლი ტექსტი ვáƒáƒ დიდáƒáƒœ გáƒáƒ“მáƒáƒ¢áƒáƒœáƒ˜áƒšáƒ¡ გáƒáƒ•áƒ¡ - გინდáƒáƒ— მისი წინáƒáƒ¡áƒ¬áƒáƒ გáƒáƒ¬áƒ›áƒ”ნდáƒ?","error":"შიდრშეცდáƒáƒ›áƒ˜áƒ¡ გáƒáƒ›áƒ ვერმáƒáƒ®áƒ”რხდრტექსტის გáƒáƒ¬áƒ›áƒ”ნდáƒ","title":"ვáƒáƒ დიდáƒáƒœ ჩáƒáƒ¡áƒ›áƒ","toolbar":"ვáƒáƒ დიდáƒáƒœ ჩáƒáƒ¡áƒ›áƒ"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"გáƒáƒ“იდებáƒ","minimize":"დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•áƒ”ბáƒ"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"ღილიáƒáƒœáƒ˜ სიáƒ","numberedlist":"გáƒáƒ“áƒáƒœáƒáƒ›áƒ ილი სიáƒ"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"მეტáƒáƒ“ შეწევáƒ","outdent":"ნáƒáƒ™áƒšáƒ”ბáƒáƒ“ შეწევáƒ"},"image2":{"alt":"სáƒáƒœáƒáƒªáƒ•áƒšáƒ ტექსტი","btnUpload":"სერვერისთვის გáƒáƒ’ზáƒáƒ•áƒœáƒ","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"სურáƒáƒ—ის ინფáƒáƒ მციáƒ","lockRatio":"პრáƒáƒžáƒáƒ ციის შენáƒáƒ ჩუნებáƒ","menu":"სურáƒáƒ—ის პáƒáƒ áƒáƒ›áƒ”ტრები","pathName":"image","pathNameCaption":"caption","resetSize":"ზáƒáƒ›áƒ˜áƒ¡ დáƒáƒ‘რუნებáƒ","resizer":"Click and drag to resize","title":"სურáƒáƒ—ის პáƒáƒ áƒáƒ›áƒ”ტრები","uploadTab":"áƒáƒ¥áƒáƒ©áƒ•áƒ","urlMissing":"სურáƒáƒ—ის URL áƒáƒ áƒáƒ შევსებული.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"ჰáƒáƒ იზáƒáƒœáƒ¢áƒáƒšáƒ£áƒ ი ხáƒáƒ–ის ჩáƒáƒ¡áƒ›áƒ"},"format":{"label":"ფიáƒáƒ მáƒáƒ¢áƒ˜áƒ ებáƒ","panelTitle":"ფáƒáƒ მáƒáƒ¢áƒ˜áƒ ებáƒ","tag_address":"მისáƒáƒ›áƒáƒ თი","tag_div":"ჩვეულებრივი (DIV)","tag_h1":"სáƒáƒ—áƒáƒ£áƒ ი 1","tag_h2":"სáƒáƒ—áƒáƒ£áƒ ი 2","tag_h3":"სáƒáƒ—áƒáƒ£áƒ ი 3","tag_h4":"სáƒáƒ—áƒáƒ£áƒ ი 4","tag_h5":"სáƒáƒ—áƒáƒ£áƒ ი 5","tag_h6":"სáƒáƒ—áƒáƒ£áƒ ი 6","tag_p":"ჩვეულებრივი","tag_pre":"ფáƒáƒ მáƒáƒ¢áƒ˜áƒ ებული"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"ელემეტის გზáƒ","eleTitle":"%1 ელემენტი"},"contextmenu":{"options":"კáƒáƒœáƒ¢áƒ”ქსტური მენიუს პáƒáƒ áƒáƒ›áƒ”ტრები"},"clipboard":{"copy":"áƒáƒ¡áƒšáƒ˜","copyError":"თქვენი ბრáƒáƒ£áƒ–ერის უსáƒáƒ¤áƒ თხáƒáƒ”ბის პáƒáƒ áƒáƒ›áƒ”ტრები áƒáƒ იძლევრáƒáƒ¡áƒšáƒ˜áƒ¡ áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ გáƒáƒœáƒ®áƒáƒ ციელების სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡. გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ რáƒáƒ›áƒ˜áƒ¡áƒ—ვის (Ctrl/Cmd+C).","cut":"áƒáƒ›áƒáƒáƒ áƒ","cutError":"თქვენი ბრáƒáƒ£áƒ–ერის უსáƒáƒ¤áƒ თხáƒáƒ”ბის პáƒáƒ áƒáƒ›áƒ”ტრები áƒáƒ იძლევრáƒáƒ›áƒáƒáƒ ის áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ გáƒáƒœáƒ®áƒáƒ ციელების სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡. გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ რáƒáƒ›áƒ˜áƒ¡áƒ—ვის (Ctrl/Cmd+X).","paste":"ჩáƒáƒ¡áƒ›áƒ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"ჩáƒáƒ¡áƒ›áƒ˜áƒ¡ áƒáƒ ე","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"ციტáƒáƒ¢áƒ"},"basicstyles":{"bold":"მსხვილი","italic":"დáƒáƒ®áƒ ილი","strike":"გáƒáƒ“áƒáƒ®áƒáƒ–ული","subscript":"ინდექსი","superscript":"ხáƒáƒ ისხი","underline":"გáƒáƒ®áƒáƒ–ული"},"about":{"copy":"Copyright © $1. ყველრუფლებრდáƒáƒªáƒ£áƒšáƒ˜áƒ.","dlgTitle":"CKEditor-ის შესáƒáƒ®áƒ”ბ","moreInfo":"ლიცენზიის ინფáƒáƒ მáƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის ეწვიეთ ჩვენს სáƒáƒ˜áƒ¢áƒ¡:"},"editor":"ტექსტის რედáƒáƒ¥áƒ¢áƒáƒ ი","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"დáƒáƒáƒáƒ˜áƒ ეთ ALT 0-ს დáƒáƒ®áƒ›áƒáƒ ების მისáƒáƒ¦áƒ”ბáƒáƒ“","browseServer":"სერვერზე დáƒáƒ—ვáƒáƒšáƒ˜áƒ”რებáƒ","url":"URL","protocol":"პრáƒáƒ¢áƒáƒ™áƒáƒšáƒ˜","upload":"áƒáƒ¢áƒ•áƒ˜áƒ თვáƒ","uploadSubmit":"სერვერზე გáƒáƒ’ზáƒáƒ•áƒœáƒ","image":"სურáƒáƒ—ი","flash":"Flash","form":"ფáƒáƒ მáƒ","checkbox":"მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ˜áƒ¡ ღილáƒáƒ™áƒ˜","radio":"áƒáƒ›áƒáƒ ჩევის ღილáƒáƒ™áƒ˜","textField":"ტექსტური ველი","textarea":"ტექსტური áƒáƒ ე","hiddenField":"მáƒáƒšáƒ£áƒšáƒ˜ ველი","button":"ღილáƒáƒ™áƒ˜","select":"áƒáƒ ჩევის ველი","imageButton":"სურáƒáƒ—იáƒáƒœáƒ˜ ღილáƒáƒ™áƒ˜","notSet":"<áƒáƒ áƒáƒ¤áƒ”რი>","id":"Id","name":"სáƒáƒ®áƒ”ლი","langDir":"ენის მიმáƒáƒ თულებáƒ","langDirLtr":"მáƒáƒ ცხნიდáƒáƒœ მáƒáƒ ჯვნივ (LTR)","langDirRtl":"მáƒáƒ ჯვნიდáƒáƒœ მáƒáƒ ცხნივ (RTL)","langCode":"ენის კáƒáƒ“ი","longDescr":"დიდი áƒáƒ¦áƒ¬áƒ”რის URL","cssClass":"CSS კლáƒáƒ¡áƒ˜","advisoryTitle":"სáƒáƒ—áƒáƒ£áƒ ი","cssStyle":"CSS სტილი","ok":"დიáƒáƒ®","cancel":"გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ","close":"დáƒáƒ®áƒ£áƒ ვáƒ","preview":"გáƒáƒ“áƒáƒ®áƒ”დვáƒ","resize":"გáƒáƒ¬áƒ˜áƒ” ზáƒáƒ›áƒ˜áƒ¡ შესáƒáƒªáƒ•áƒšáƒ”ლáƒáƒ“","generalTab":"ინფáƒáƒ მáƒáƒªáƒ˜áƒ","advancedTab":"გáƒáƒ¤áƒáƒ თáƒáƒ”ბული","validateNumberFailed":"ეს მნიშვნელáƒáƒ‘რáƒáƒ áƒáƒ რიცხვი.","confirmNewPage":"áƒáƒ› დáƒáƒ™áƒ£áƒ›áƒ”ნტში ყველრჩáƒáƒ£áƒ¬áƒ”რელი ცვლილებრდáƒáƒ˜áƒ™áƒáƒ გებáƒ. დáƒáƒ წმუნებული ხáƒáƒ თ რáƒáƒ› áƒáƒ®áƒáƒšáƒ˜ გვერდის ჩáƒáƒ¢áƒ•áƒ˜áƒ თვრგინდáƒáƒ—?","confirmCancel":"ზáƒáƒ’იერთი პáƒáƒ áƒáƒ›áƒ”ტრი შეცვლილიáƒ, დáƒáƒ წმუნებულილ ხáƒáƒ თ რáƒáƒ› ფáƒáƒœáƒ¯áƒ ის დáƒáƒ®áƒ£áƒ ვრგსურთ?","options":"პáƒáƒ áƒáƒ›áƒ”ტრები","target":"გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡ áƒáƒ“გილი","targetNew":"áƒáƒ®áƒáƒšáƒ˜ ფáƒáƒœáƒ¯áƒáƒ რ(_blank)","targetTop":"ზედრფáƒáƒœáƒ¯áƒáƒ რ(_top)","targetSelf":"იგივე ფáƒáƒœáƒ¯áƒáƒ რ(_self)","targetParent":"მშáƒáƒ‘ელი ფáƒáƒœáƒ¯áƒáƒ რ(_parent)","langDirLTR":"მáƒáƒ ცხნიდáƒáƒœ მáƒáƒ ჯვნივ (LTR)","langDirRTL":"მáƒáƒ ჯვნიდáƒáƒœ მáƒáƒ ცხნივ (RTL)","styles":"სტილი","cssClasses":"CSS კლáƒáƒ¡áƒ˜","width":"სიგáƒáƒœáƒ”","height":"სიმáƒáƒ¦áƒšáƒ”","align":"სწáƒáƒ ებáƒ","left":"მáƒáƒ ცხენáƒ","right":"მáƒáƒ ჯვენáƒ","center":"შუáƒ","justify":"両端æƒãˆ","alignLeft":"მáƒáƒ ცხნივ სწáƒáƒ ებáƒ","alignRight":"მáƒáƒ ჯვნივ სწáƒáƒ ებáƒ","alignCenter":"Align Center","alignTop":"ზემáƒáƒ—áƒ","alignMiddle":"შუáƒ","alignBottom":"ქვემáƒáƒ—áƒ","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"სიმáƒáƒ¦áƒšáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidWidth":"სიგáƒáƒœáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, მიუწვდáƒáƒ›áƒ”ლიáƒ</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['ka']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"გáƒáƒ›áƒ”áƒáƒ ებáƒ","undo":"გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ"},"toolbar":{"toolbarCollapse":"ხელსáƒáƒ¬áƒ§áƒáƒ—რზáƒáƒšáƒ˜áƒ¡ შეწევáƒ","toolbarExpand":"ხელსáƒáƒ¬áƒ§áƒáƒ—რზáƒáƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ¬áƒ”ვáƒ","toolbarGroups":{"document":"დáƒáƒ™áƒ£áƒ›áƒ”ნტი","clipboard":"Clipboard/გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ","editing":"რედáƒáƒ¥áƒ¢áƒ˜áƒ ებáƒ","forms":"ფáƒáƒ მები","basicstyles":"ძირითáƒáƒ“ი სტილები","paragraph":"áƒáƒ‘ზáƒáƒªáƒ˜","links":"ბმულები","insert":"ჩáƒáƒ¡áƒ›áƒ","styles":"სტილები","colors":"ფერები","tools":"ხელსáƒáƒ¬áƒ§áƒáƒ”ბი"},"toolbars":"Editor toolbars"},"table":{"border":"ჩáƒáƒ ჩáƒáƒ¡ ზáƒáƒ›áƒ","caption":"სáƒáƒ—áƒáƒ£áƒ ი","cell":{"menu":"უჯრáƒ","insertBefore":"უჯრის ჩáƒáƒ¡áƒ›áƒ მáƒáƒœáƒáƒ›áƒ“ე","insertAfter":"უჯრის ჩáƒáƒ¡áƒ›áƒ მერე","deleteCell":"უჯრების წáƒáƒ¨áƒšáƒ","merge":"უჯრების შეერთებáƒ","mergeRight":"შეერთებრმáƒáƒ ჯვენáƒáƒ¡áƒ—áƒáƒœ","mergeDown":"შეერთებრქვემáƒáƒ—áƒáƒ¡áƒ—áƒáƒœ","splitHorizontal":"გáƒáƒ§áƒáƒ¤áƒ ჰáƒáƒ იზáƒáƒœáƒ¢áƒáƒšáƒ£áƒ áƒáƒ“","splitVertical":"გáƒáƒ§áƒáƒ¤áƒ ვერტიკáƒáƒšáƒ£áƒ áƒáƒ“","title":"უჯრის პáƒáƒ áƒáƒ›áƒ”ტრები","cellType":"უჯრის ტიპი","rowSpan":"სტრიქáƒáƒœáƒ”ბის áƒáƒ“ენáƒáƒ‘áƒ","colSpan":"სვეტების áƒáƒ“ენáƒáƒ‘áƒ","wordWrap":"სტრიქáƒáƒœáƒ˜áƒ¡ გáƒáƒ“áƒáƒ¢áƒáƒœáƒ (Word Wrap)","hAlign":"ჰáƒáƒ იზáƒáƒœáƒ¢áƒáƒšáƒ£áƒ ი სწáƒáƒ ებáƒ","vAlign":"ვერტიკáƒáƒšáƒ£áƒ ი სწáƒáƒ ებáƒ","alignBaseline":"ძირითáƒáƒ“ი ხáƒáƒ–ის გáƒáƒ¡áƒ¬áƒ•áƒ ივ","bgColor":"ფáƒáƒœáƒ˜áƒ¡ ფერი","borderColor":"ჩáƒáƒ ჩáƒáƒ¡ ფერი","data":"მáƒáƒœáƒáƒªáƒ”მები","header":"სáƒáƒ—áƒáƒ£áƒ ი","yes":"დიáƒáƒ®","no":"áƒáƒ áƒ","invalidWidth":"უჯრის სიგáƒáƒœáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidHeight":"უჯრის სიმáƒáƒ¦áƒšáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidRowSpan":"სტრიქáƒáƒœáƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘რმთელი რიცხვი უნდრიყáƒáƒ¡.","invalidColSpan":"სვეტების რáƒáƒáƒ“ენáƒáƒ‘რმთელი რიცხვი უნდრიყáƒáƒ¡.","chooseColor":"áƒáƒ ჩევáƒ"},"cellPad":"უჯრის კიდე (padding)","cellSpace":"უჯრის სივრცე (spacing)","column":{"menu":"სვეტი","insertBefore":"სვეტის ჩáƒáƒ›áƒáƒ¢áƒ”ბრწინ","insertAfter":"სვეტის ჩáƒáƒ›áƒáƒ¢áƒ”ბრმერე","deleteColumn":"სვეტების წáƒáƒ¨áƒšáƒ"},"columns":"სვეტი","deleteTable":"ცხრილის წáƒáƒ¨áƒšáƒ","headers":"სáƒáƒ—áƒáƒ£áƒ ები","headersBoth":"áƒáƒ ივე","headersColumn":"პირველი სვეტი","headersNone":"áƒáƒ áƒáƒ¤áƒ”რი","headersRow":"პირველი სტრიქáƒáƒœáƒ˜","heightUnit":"height unit","invalidBorder":"ჩáƒáƒ ჩáƒáƒ¡ ზáƒáƒ›áƒ რიცხვით უდნრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidCellPadding":"უჯრის კიდე (padding) რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidCellSpacing":"უჯრის სივრცე (spacing) რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidCols":"სვეტების რáƒáƒáƒ“ენáƒáƒ‘რდáƒáƒ“ებითი რიცხვი უნდრიყáƒáƒ¡.","invalidHeight":"ცხრილის სიმáƒáƒ¦áƒšáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidRows":"სტრიქáƒáƒœáƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘რდáƒáƒ“ებითი რიცხვი უნდრიყáƒáƒ¡.","invalidWidth":"ცხრილის სიგáƒáƒœáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","menu":"ცხრილის პáƒáƒ áƒáƒ›áƒ”ტრები","row":{"menu":"სტრიქáƒáƒœáƒ˜","insertBefore":"სტრიქáƒáƒœáƒ˜áƒ¡ ჩáƒáƒ›áƒáƒ¢áƒ”ბრწინ","insertAfter":"სტრიქáƒáƒœáƒ˜áƒ¡ ჩáƒáƒ›áƒáƒ¢áƒ”ბრმერე","deleteRow":"სტრიქáƒáƒœáƒ”ბის წáƒáƒ¨áƒšáƒ"},"rows":"სტრიქáƒáƒœáƒ˜","summary":"შეჯáƒáƒ›áƒ”ბáƒ","title":"ცხრილის პáƒáƒ áƒáƒ›áƒ”ტრები","toolbar":"ცხრილი","widthPc":"პრáƒáƒªáƒ”ნტი","widthPx":"წერტილი","widthUnit":"სáƒáƒ–áƒáƒ›áƒ˜ ერთეული"},"stylescombo":{"label":"სტილები","panelTitle":"ფáƒáƒ მáƒáƒ¢áƒ˜áƒ ების სტილები","panelTitle1":"áƒáƒ ის სტილები","panelTitle2":"თáƒáƒœáƒ“áƒáƒ თული სტილები","panelTitle3":"áƒáƒ‘იექტის სტილები"},"specialchar":{"options":"სპეციáƒáƒšáƒ£áƒ ი სიმბáƒáƒšáƒáƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრები","title":"სპეციáƒáƒšáƒ£áƒ ი სიმბáƒáƒšáƒáƒ¡ áƒáƒ ჩევáƒ","toolbar":"სპეციáƒáƒšáƒ£áƒ ი სიმბáƒáƒšáƒáƒ¡ ჩáƒáƒ¡áƒ›áƒ"},"sourcedialog":{"toolbar":"კáƒáƒ“ები","title":"კáƒáƒ“ები"},"sourcearea":{"toolbar":"კáƒáƒ“ები"},"showblocks":{"toolbar":"áƒáƒ ეების ჩვენებáƒ"},"removeformat":{"toolbar":"ფáƒáƒ მáƒáƒ¢áƒ˜áƒ ების მáƒáƒ®áƒ¡áƒœáƒ"},"pastetext":{"button":"მხáƒáƒšáƒáƒ“ ტექსტის ჩáƒáƒ¡áƒ›áƒ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"მხáƒáƒšáƒáƒ“ ტექსტის ჩáƒáƒ¡áƒ›áƒ"},"pastefromword":{"confirmCleanup":"ჩáƒáƒ¡áƒáƒ¡áƒ›áƒ”ლი ტექსტი ვáƒáƒ დიდáƒáƒœ გáƒáƒ“მáƒáƒ¢áƒáƒœáƒ˜áƒšáƒ¡ გáƒáƒ•áƒ¡ - გინდáƒáƒ— მისი წინáƒáƒ¡áƒ¬áƒáƒ გáƒáƒ¬áƒ›áƒ”ნდáƒ?","error":"შიდრშეცდáƒáƒ›áƒ˜áƒ¡ გáƒáƒ›áƒ ვერმáƒáƒ®áƒ”რხდრტექსტის გáƒáƒ¬áƒ›áƒ”ნდáƒ","title":"ვáƒáƒ დიდáƒáƒœ ჩáƒáƒ¡áƒ›áƒ","toolbar":"ვáƒáƒ დიდáƒáƒœ ჩáƒáƒ¡áƒ›áƒ"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"გáƒáƒ“იდებáƒ","minimize":"დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•áƒ”ბáƒ"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"ღილიáƒáƒœáƒ˜ სიáƒ","numberedlist":"გáƒáƒ“áƒáƒœáƒáƒ›áƒ ილი სიáƒ"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"მეტáƒáƒ“ შეწევáƒ","outdent":"ნáƒáƒ™áƒšáƒ”ბáƒáƒ“ შეწევáƒ"},"image2":{"alt":"სáƒáƒœáƒáƒªáƒ•áƒšáƒ ტექსტი","btnUpload":"სერვერისთვის გáƒáƒ’ზáƒáƒ•áƒœáƒ","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"სურáƒáƒ—ის ინფáƒáƒ მციáƒ","lockRatio":"პრáƒáƒžáƒáƒ ციის შენáƒáƒ ჩუნებáƒ","menu":"სურáƒáƒ—ის პáƒáƒ áƒáƒ›áƒ”ტრები","pathName":"image","pathNameCaption":"caption","resetSize":"ზáƒáƒ›áƒ˜áƒ¡ დáƒáƒ‘რუნებáƒ","resizer":"Click and drag to resize","title":"სურáƒáƒ—ის პáƒáƒ áƒáƒ›áƒ”ტრები","uploadTab":"áƒáƒ¥áƒáƒ©áƒ•áƒ","urlMissing":"სურáƒáƒ—ის URL áƒáƒ áƒáƒ შევსებული.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"ჰáƒáƒ იზáƒáƒœáƒ¢áƒáƒšáƒ£áƒ ი ხáƒáƒ–ის ჩáƒáƒ¡áƒ›áƒ"},"format":{"label":"ფიáƒáƒ მáƒáƒ¢áƒ˜áƒ ებáƒ","panelTitle":"ფáƒáƒ მáƒáƒ¢áƒ˜áƒ ებáƒ","tag_address":"მისáƒáƒ›áƒáƒ თი","tag_div":"ჩვეულებრივი (DIV)","tag_h1":"სáƒáƒ—áƒáƒ£áƒ ი 1","tag_h2":"სáƒáƒ—áƒáƒ£áƒ ი 2","tag_h3":"სáƒáƒ—áƒáƒ£áƒ ი 3","tag_h4":"სáƒáƒ—áƒáƒ£áƒ ი 4","tag_h5":"სáƒáƒ—áƒáƒ£áƒ ი 5","tag_h6":"სáƒáƒ—áƒáƒ£áƒ ი 6","tag_p":"ჩვეულებრივი","tag_pre":"ფáƒáƒ მáƒáƒ¢áƒ˜áƒ ებული"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"ელემეტის გზáƒ","eleTitle":"%1 ელემენტი"},"contextmenu":{"options":"კáƒáƒœáƒ¢áƒ”ქსტური მენიუს პáƒáƒ áƒáƒ›áƒ”ტრები"},"clipboard":{"copy":"áƒáƒ¡áƒšáƒ˜","copyError":"თქვენი ბრáƒáƒ£áƒ–ერის უსáƒáƒ¤áƒ თხáƒáƒ”ბის პáƒáƒ áƒáƒ›áƒ”ტრები áƒáƒ იძლევრáƒáƒ¡áƒšáƒ˜áƒ¡ áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ გáƒáƒœáƒ®áƒáƒ ციელების სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡. გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ რáƒáƒ›áƒ˜áƒ¡áƒ—ვის (Ctrl/Cmd+C).","cut":"áƒáƒ›áƒáƒáƒ áƒ","cutError":"თქვენი ბრáƒáƒ£áƒ–ერის უსáƒáƒ¤áƒ თხáƒáƒ”ბის პáƒáƒ áƒáƒ›áƒ”ტრები áƒáƒ იძლევრáƒáƒ›áƒáƒáƒ ის áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ გáƒáƒœáƒ®áƒáƒ ციელების სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡. გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ რáƒáƒ›áƒ˜áƒ¡áƒ—ვის (Ctrl/Cmd+X).","paste":"ჩáƒáƒ¡áƒ›áƒ","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"ჩáƒáƒ¡áƒ›áƒ˜áƒ¡ áƒáƒ ე","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"ციტáƒáƒ¢áƒ"},"basicstyles":{"bold":"მსხვილი","italic":"დáƒáƒ®áƒ ილი","strike":"გáƒáƒ“áƒáƒ®áƒáƒ–ული","subscript":"ინდექსი","superscript":"ხáƒáƒ ისხი","underline":"გáƒáƒ®áƒáƒ–ული"},"about":{"copy":"Copyright © $1. ყველრუფლებრდáƒáƒªáƒ£áƒšáƒ˜áƒ.","dlgTitle":"CKEditor-ის შესáƒáƒ®áƒ”ბ","moreInfo":"ლიცენზიის ინფáƒáƒ მáƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის ეწვიეთ ჩვენს სáƒáƒ˜áƒ¢áƒ¡:"},"editor":"ტექსტის რედáƒáƒ¥áƒ¢áƒáƒ ი","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"დáƒáƒáƒáƒ˜áƒ ეთ ALT 0-ს დáƒáƒ®áƒ›áƒáƒ ების მისáƒáƒ¦áƒ”ბáƒáƒ“","browseServer":"სერვერზე დáƒáƒ—ვáƒáƒšáƒ˜áƒ”რებáƒ","url":"URL","protocol":"პრáƒáƒ¢áƒáƒ™áƒáƒšáƒ˜","upload":"áƒáƒ¢áƒ•áƒ˜áƒ თვáƒ","uploadSubmit":"სერვერზე გáƒáƒ’ზáƒáƒ•áƒœáƒ","image":"სურáƒáƒ—ი","form":"ფáƒáƒ მáƒ","checkbox":"მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ˜áƒ¡ ღილáƒáƒ™áƒ˜","radio":"áƒáƒ›áƒáƒ ჩევის ღილáƒáƒ™áƒ˜","textField":"ტექსტური ველი","textarea":"ტექსტური áƒáƒ ე","hiddenField":"მáƒáƒšáƒ£áƒšáƒ˜ ველი","button":"ღილáƒáƒ™áƒ˜","select":"áƒáƒ ჩევის ველი","imageButton":"სურáƒáƒ—იáƒáƒœáƒ˜ ღილáƒáƒ™áƒ˜","notSet":"<áƒáƒ áƒáƒ¤áƒ”რი>","id":"Id","name":"სáƒáƒ®áƒ”ლი","langDir":"ენის მიმáƒáƒ თულებáƒ","langDirLtr":"მáƒáƒ ცხნიდáƒáƒœ მáƒáƒ ჯვნივ (LTR)","langDirRtl":"მáƒáƒ ჯვნიდáƒáƒœ მáƒáƒ ცხნივ (RTL)","langCode":"ენის კáƒáƒ“ი","longDescr":"დიდი áƒáƒ¦áƒ¬áƒ”რის URL","cssClass":"CSS კლáƒáƒ¡áƒ˜","advisoryTitle":"სáƒáƒ—áƒáƒ£áƒ ი","cssStyle":"CSS სტილი","ok":"დიáƒáƒ®","cancel":"გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ","close":"დáƒáƒ®áƒ£áƒ ვáƒ","preview":"გáƒáƒ“áƒáƒ®áƒ”დვáƒ","resize":"გáƒáƒ¬áƒ˜áƒ” ზáƒáƒ›áƒ˜áƒ¡ შესáƒáƒªáƒ•áƒšáƒ”ლáƒáƒ“","generalTab":"ინფáƒáƒ მáƒáƒªáƒ˜áƒ","advancedTab":"გáƒáƒ¤áƒáƒ თáƒáƒ”ბული","validateNumberFailed":"ეს მნიშვნელáƒáƒ‘რáƒáƒ áƒáƒ რიცხვი.","confirmNewPage":"áƒáƒ› დáƒáƒ™áƒ£áƒ›áƒ”ნტში ყველრჩáƒáƒ£áƒ¬áƒ”რელი ცვლილებრდáƒáƒ˜áƒ™áƒáƒ გებáƒ. დáƒáƒ წმუნებული ხáƒáƒ თ რáƒáƒ› áƒáƒ®áƒáƒšáƒ˜ გვერდის ჩáƒáƒ¢áƒ•áƒ˜áƒ თვრგინდáƒáƒ—?","confirmCancel":"ზáƒáƒ’იერთი პáƒáƒ áƒáƒ›áƒ”ტრი შეცვლილიáƒ, დáƒáƒ წმუნებულილ ხáƒáƒ თ რáƒáƒ› ფáƒáƒœáƒ¯áƒ ის დáƒáƒ®áƒ£áƒ ვრგსურთ?","options":"პáƒáƒ áƒáƒ›áƒ”ტრები","target":"გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡ áƒáƒ“გილი","targetNew":"áƒáƒ®áƒáƒšáƒ˜ ფáƒáƒœáƒ¯áƒáƒ რ(_blank)","targetTop":"ზედრფáƒáƒœáƒ¯áƒáƒ რ(_top)","targetSelf":"იგივე ფáƒáƒœáƒ¯áƒáƒ რ(_self)","targetParent":"მშáƒáƒ‘ელი ფáƒáƒœáƒ¯áƒáƒ რ(_parent)","langDirLTR":"მáƒáƒ ცხნიდáƒáƒœ მáƒáƒ ჯვნივ (LTR)","langDirRTL":"მáƒáƒ ჯვნიდáƒáƒœ მáƒáƒ ცხნივ (RTL)","styles":"სტილი","cssClasses":"CSS კლáƒáƒ¡áƒ˜","width":"სიგáƒáƒœáƒ”","height":"სიმáƒáƒ¦áƒšáƒ”","align":"სწáƒáƒ ებáƒ","left":"მáƒáƒ ცხენáƒ","right":"მáƒáƒ ჯვენáƒ","center":"შუáƒ","justify":"両端æƒãˆ","alignLeft":"მáƒáƒ ცხნივ სწáƒáƒ ებáƒ","alignRight":"მáƒáƒ ჯვნივ სწáƒáƒ ებáƒ","alignCenter":"Align Center","alignTop":"ზემáƒáƒ—áƒ","alignMiddle":"შუáƒ","alignBottom":"ქვემáƒáƒ—áƒ","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"სიმáƒáƒ¦áƒšáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidWidth":"სიგáƒáƒœáƒ” რიცხვით უნდრიყáƒáƒ¡ წáƒáƒ მáƒáƒ“გენილი.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, მიუწვდáƒáƒ›áƒ”ლიáƒ</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/km.js b/core/assets/vendor/ckeditor/lang/km.js index 0bf5194b8eec..543b0fa82409 100644 --- a/core/assets/vendor/ckeditor/lang/km.js +++ b/core/assets/vendor/ckeditor/lang/km.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['km']={"widget":{"move":"ចុច​ហើយ​ទាញ​ដើម្បី​ផ្លាស់​ទី","label":"%1 widget"},"undo":{"redo":"ធ្វើ​ឡើង​វិញ","undo":"មិន​ធ្វើ​វិញ"},"toolbar":{"toolbarCollapse":"បង្រួម​របារ​ឧបករណáŸ","toolbarExpand":"ពង្រីក​របារ​ឧបករណáŸ","toolbarGroups":{"document":"ឯកសារ","clipboard":"Clipboard/មិន​ធ្វើ​វិញ","editing":"ការ​កែ​សម្រួល","forms":"បែបបទ","basicstyles":"រចនាបážâ€‹áž˜áž¼áž›ážŠáŸ’ឋាន","paragraph":"កážáž¶ážážŽáŸ’ឌ","links":"ážáŸ†ážŽ","insert":"បញ្ចូល","styles":"រចនាបáž","colors":"ពណ៌","tools":"ឧបករណáŸ"},"toolbars":"របារ​ឧបករណáŸâ€‹áž€áŸ‚​សម្រួល"},"table":{"border":"ទំហំ​បន្ទាážáŸ‹â€‹ážŸáŸŠáž»áž˜","caption":"ចំណងជើង","cell":{"menu":"ក្រឡា","insertBefore":"បញ្ចូល​ក្រឡា​ពីមុáž","insertAfter":"បញ្ចូល​ក្រឡា​ពី​ក្រោយ","deleteCell":"លុប​ក្រឡា","merge":"បញ្ចូល​ក្រឡា​ចូល​គ្នា","mergeRight":"បញ្ចូល​គ្នា​ážáž¶áž„​ស្ដាំ","mergeDown":"បញ្ចូល​គ្នា​ចុះ​ក្រោម","splitHorizontal":"ពុះ​ក្រឡា​ផ្ដáŸáž€","splitVertical":"ពុះ​ក្រឡា​បញ្ឈរ","title":"លក្ážážŽáŸˆâ€‹áž€áŸ’រឡា","cellType":"ប្រភáŸáž‘​ក្រឡា","rowSpan":"ចំនួន​ជួរ​ដáŸáž€â€‹áž›áž¶áž™â€‹áž…ូល​គ្នា","colSpan":"ចំនួន​ជួរ​ឈរ​លាយ​ចូល​គ្នា","wordWrap":"រុំ​ពាក្យ","hAlign":"ការ​ážáž˜áŸ’រឹម​ផ្ដáŸáž€","vAlign":"ការ​ážáž˜áŸ’រឹម​បញ្ឈរ","alignBaseline":"ážáŸ’សែ​បន្ទាážáŸ‹â€‹áž‚ោល","bgColor":"ពណ៌​ផ្ទៃ​ក្រោយ","borderColor":"ពណ៌​បន្ទាážáŸ‹â€‹ážŸáŸŠáž»áž˜","data":"ទិន្ននáŸáž™","header":"ក្បាល","yes":"ព្រម","no":"áž‘áŸ","invalidWidth":"ទទឹង​ក្រឡា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidHeight":"កម្ពស់​ក្រឡា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidRowSpan":"ចំនួន​ជួរ​ដáŸáž€â€‹áž›áž¶áž™â€‹áž…ូល​គ្នា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹áž‘ាំង​អស់។","invalidColSpan":"ចំនួន​ជួរ​ឈរ​លាយ​ចូល​គ្នា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹áž‘ាំង​អស់។","chooseColor":"រើស"},"cellPad":"ចន្លោះ​ក្រឡា","cellSpace":"គម្លាážâ€‹áž€áŸ’រឡា","column":{"menu":"ជួរ​ឈរ","insertBefore":"បញ្ចូល​ជួរ​ឈរ​ពីមុáž","insertAfter":"បញ្ចូល​ជួរ​ឈរ​ពី​ក្រោយ","deleteColumn":"លុប​ជួរ​ឈរ"},"columns":"ជួរឈរ","deleteTable":"លុប​ážáž¶ážšáž¶áž„","headers":"ក្បាល","headersBoth":"ទាំង​ពីរ","headersColumn":"ជួរ​ឈរ​ដំបូង","headersNone":"មិន​មាន","headersRow":"ជួរ​ដáŸáž€â€‹ážŠáŸ†áž”ូង","heightUnit":"height unit","invalidBorder":"ទំហំ​បន្ទាážáŸ‹â€‹ážŸáŸŠáž»áž˜â€‹ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidCellPadding":"ចន្លោះ​ក្រឡា​ážáŸ’រូវ​ážáŸ‚ជា​លáŸážâ€‹ážœáž·áž‡áŸ’ជមាន។","invalidCellSpacing":"គម្លាážâ€‹áž€áŸ’រឡា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹ážœáž·áž‡áŸ’ជមាន។","invalidCols":"ចំនួន​ជួរ​ឈរ​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹áž’ំ​ជាង 0។","invalidHeight":"កម្ពស់​ážáž¶ážšáž¶áž„​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸáž","invalidRows":"ចំនួន​ជួរ​ដáŸáž€â€‹ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹áž’ំ​ជាង 0។","invalidWidth":"ទទឹង​ážáž¶ážšáž¶áž„​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","menu":"លក្ážážŽáŸˆâ€‹ážáž¶ážšáž¶áž„","row":{"menu":"ជួរ​ដáŸáž€","insertBefore":"បញ្ចូល​ជួរ​ដáŸáž€â€‹áž–ីមុáž","insertAfter":"បញ្ចូល​ជួរ​ដáŸáž€â€‹áž–ី​ក្រោយ","deleteRow":"លុប​ជួរ​ដáŸáž€"},"rows":"ជួរ​ដáŸáž€","summary":"សáŸáž…ក្ážáž¸â€‹ážŸáž„្ážáŸáž”","title":"លក្ážážŽáŸˆâ€‹ážáž¶ážšáž¶áž„","toolbar":"ážáž¶ážšáž¶áž„","widthPc":"ភាគរយ","widthPx":"ភីកសែល","widthUnit":"ឯកážáž¶â€‹áž‘ទឹង"},"stylescombo":{"label":"រចនាបáž","panelTitle":"ទ្រង់ទ្រាយ​រចនាបáž","panelTitle1":"រចនាបážâ€‹áž”្លក់","panelTitle2":"រចនាបážâ€‹áž€áŸ’នុង​ជួរ","panelTitle3":"រចនាបážâ€‹ážœážáŸ’ážáž»"},"specialchar":{"options":"ជម្រើស​ážáž½â€‹áž¢áž€áŸ’សរ​ពិសáŸážŸ","title":"រើស​ážáž½áž¢áž€áŸ’សរ​ពិសáŸážŸ","toolbar":"បន្ážáŸ‚មអក្សរពិសáŸážŸ"},"sourcedialog":{"toolbar":"អក្សរ​កូដ","title":"អក្សរ​កូដ"},"sourcearea":{"toolbar":"អក្សរ​កូដ"},"showblocks":{"toolbar":"បង្ហាញ​ប្លក់"},"removeformat":{"toolbar":"ជម្រះ​ទ្រង់​ទ្រាយ"},"pastetext":{"button":"បិទ​ភ្ជាប់​ជា​អážáŸ’ážáž”ទ​ធម្មážáž¶","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"បិទ​ភ្ជាប់​ជា​អážáŸ’ážáž”ទ​ធម្មážáž¶"},"pastefromword":{"confirmCleanup":"អážáŸ’ážáž”ទ​ដែល​អ្នក​ចង់​បិទ​ភ្ជាប់​នáŸáŸ‡ ទំនង​ដូច​ជា​ចម្លង​មក​ពី Word។ ážáž¾â€‹áž¢áŸ’នក​ចង់​សម្អាážâ€‹ážœáž¶â€‹áž˜áž»áž“​បិទ​ភ្ជាប់​ទáŸ?","error":"ដោយ​សារ​មាន​បញ្ហា​ផ្នែក​ក្នុង​ធ្វើ​ឲ្យ​មិន​អាច​សម្អាážâ€‹áž‘ិន្ននáŸáž™â€‹ážŠáŸ‚ល​បាន​បិទ​ភ្ជាប់","title":"បិទ​ភ្ជាប់​ពី Word","toolbar":"បិទ​ភ្ជាប់​ពី Word"},"notification":{"closed":"បាន​បិទ​ការ​ផ្ដល់​ដំណឹង។"},"maximize":{"maximize":"ពង្រីក​អážáž·áž”រមា","minimize":"បង្រួម​អប្បបរមា"},"magicline":{"title":"បញ្ចូល​កážáž¶ážážŽáŸ’ឌ​នៅ​ទីនáŸáŸ‡"},"list":{"bulletedlist":"បញ្ចូល / លុប​បញ្ជី​ជា​ចំណុច​មូល","numberedlist":"បញ្ចូល / លុប​បញ្ជី​ជា​លáŸáž"},"language":{"button":"កំណážáŸ‹â€‹áž—ាសា","remove":"លុប​ភាសា"},"indent":{"indent":"បន្ážáŸ‚មការចូលបន្ទាážáŸ‹","outdent":"បន្ážáž™áž€áž¶ážšáž…ូលបន្ទាážáŸ‹"},"image2":{"alt":"អážáŸ’ážáž”ទជំនួស","btnUpload":"បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្ážáž›áŸ‹ážŸáŸážœáž¶","captioned":"រូប​ដែល​មាន​ចំណង​ជើង","captionPlaceholder":"Caption","infoTab":"áž–ážáŸŒáž˜áž¶áž“អំពីរូបភាព","lockRatio":"ចាក់​សោ​ផល​ធៀប","menu":"លក្ážážŽáŸˆâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹ážšáž¼áž”​ភាព","pathName":"រូបភាព","pathNameCaption":"ចំណងជើង","resetSize":"កំណážáŸ‹áž‘ំហំឡើងវិញ","resizer":"ចុច​ហើយ​ទាញ​ដើម្បី​ប្ដូរ​ទំហំ","title":"លក្ážážŽáŸˆâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹ážšáž¼áž”​ភាប","uploadTab":"ផ្ទុក​ឡើង","urlMissing":"ážáŸ’វះ URL ប្រភព​រូប​ភាព។","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"បន្ážáŸ‚មបន្ទាážáŸ‹áž•áŸ’ážáŸáž€"},"format":{"label":"ទម្រង់","panelTitle":"ទម្រង់​កážáž¶ážážŽáŸ’ឌ","tag_address":"អាសយដ្ឋាន","tag_div":"ធម្មážáž¶ (DIV)","tag_h1":"ចំណង​ជើង 1","tag_h2":"ចំណង​ជើង 2","tag_h3":"ចំណង​ជើង 3","tag_h4":"ចំណង​ជើង 4","tag_h5":"ចំណង​ជើង 5","tag_h6":"ចំណង​ជើង 6","tag_p":"ធម្មážáž¶","tag_pre":"Formatted"},"filetools":{"loadError":"មាន​បញ្ហា​កើážáž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž¢áž¶áž“​ឯកសារ។","networkError":"មាន​បញ្ហា​បណ្ដាញ​កើážâ€‹áž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž•áŸ’ទុកឡើង​ឯកសារ។","httpError404":"មាន​បញ្ហា HTTP កើážâ€‹áž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž•áŸ’ទុកឡើង​ឯកសារ (404៖ រក​ឯកសារ​មិន​ឃើញ)។","httpError403":"មាន​បញ្ហា HTTP កើážâ€‹áž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž•áŸ’ទុកឡើង​ឯកសារ (403៖ ហាមឃាážáŸ‹)។","httpError":"មាន​បញ្ហា HTTP កើážâ€‹áž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž•áŸ’ទុកឡើង​ឯកសារ (ស្ážáž¶áž“ភាព​កំហុស៖ %1)។","noUrlError":"មិន​មាន​បញ្ជាក់ URL ផ្ទុក​ឡើង។","responseError":"ការ​ឆ្លើយážáž”​របស់​ម៉ាស៊ីនបម្រើ មិន​ážáŸ’រឹមážáŸ’រូវ។"},"elementspath":{"eleLabel":"ទីážáž¶áŸ†áž„​ធាážáž»","eleTitle":"ធាážáž» %1"},"contextmenu":{"options":"ជម្រើស​ម៉ឺនុយ​បរិបទ"},"clipboard":{"copy":"ចម្លង","copyError":"ការកំណážáŸ‹ážŸáž»ážœážáŸ’ážáž—ាពរបស់កម្មវិធីរុករករបស់លោកអ្នក áž“áŸáŸ‡â€‹áž˜áž·áž“អាចធ្វើកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘ ចំលងអážáŸ’ážáž”ទយកដោយស្វáŸáž™áž”្រវážáŸ’ážáž”ានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនáŸáŸ‡ (Ctrl/Cmd+C)។","cut":"កាážáŸ‹áž™áž€","cutError":"ការកំណážáŸ‹ážŸáž»ážœážáŸ’ážáž—ាពរបស់កម្មវិធីរុករករបស់លោកអ្នក áž“áŸáŸ‡â€‹áž˜áž·áž“អាចធ្វើកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘ កាážáŸ‹áž¢ážáŸ’ážáž”ទយកដោយស្វáŸáž™áž”្រវážáŸ’ážáž”ានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនáŸáŸ‡ (Ctrl/Cmd+X) ។","paste":"បិទ​ភ្ជាប់","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"ážáŸ†áž”ន់​បិទ​ភ្ជាប់","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"ប្លក់​ពាក្យ​សម្រង់"},"basicstyles":{"bold":"ដិáž","italic":"ទ្រáŸáž","strike":"គូស​បន្ទាážáŸ‹â€‹áž…ំ​កណ្ដាល","subscript":"អក្សរážáž¼áž…ក្រោម","superscript":"អក្សរážáž¼áž…លើ","underline":"គូស​បន្ទាážáŸ‹â€‹áž€áŸ’រោម"},"about":{"copy":"រក្សាសិទ្ធិ © $1។ រក្សា​សិទ្ធិ​គ្រប់​បែប​យ៉ាង។","dlgTitle":"អំពី CKEditor","moreInfo":"សម្រាប់​ពáŸážáŸŒáž˜áž¶áž“​អំពី​អាជ្ញាបណញណ សូម​មើល​ក្នុង​គáŸáž ទំពáŸážšâ€‹ážšáž”ស់​យើង៖"},"editor":"ឧបករណáŸâ€‹ážŸážšážŸáŸážšâ€‹áž¢ážáŸ’ážáž”ទ​សម្បូរ​បែប","editorPanel":"ផ្ទាំង​ឧបករណáŸâ€‹ážŸážšážŸáŸážšâ€‹áž¢ážáŸ’ážáž”ទ​សម្បូរ​បែប","common":{"editorHelp":"ចុច ALT 0 សម្រាប់​ជំនួយ","browseServer":"រក​មើល​ក្នុង​ម៉ាស៊ីន​បម្រើ","url":"URL","protocol":"ពិធីការ","upload":"ផ្ទុក​ឡើង","uploadSubmit":"បញ្ជូនទៅកាន់ម៉ាស៊ីន​បម្រើ","image":"រូបភាព","flash":"Flash","form":"បែបបទ","checkbox":"ប្រអប់​ធីក","radio":"ប៊ូážáž»áž„​មូល","textField":"វាល​អážáŸ’ážáž”áž‘","textarea":"Textarea","hiddenField":"វាល​កំបាំង","button":"ប៊ូážáž»áž„","select":"វាល​ជម្រើស","imageButton":"ប៊ូážáž»áž„​រូបភាព","notSet":"<មិនកំណážáŸ‹>","id":"Id","name":"ឈ្មោះ","langDir":"ទិសដៅភាសា","langDirLtr":"ពីឆ្វáŸáž„ទៅស្ážáž¶áŸ† (LTR)","langDirRtl":"ពីស្ážáž¶áŸ†áž‘ៅឆ្វáŸáž„ (RTL)","langCode":"áž›áŸážâ€‹áž€áž¼ážŠâ€‹áž—ាសា","longDescr":"URL អធិប្បាយ​វែង","cssClass":"Stylesheet Classes","advisoryTitle":"ចំណង​ជើង​ណែនាំ","cssStyle":"រចនាបáž","ok":"ព្រម","cancel":"បោះបង់","close":"បិទ","preview":"មើល​ជា​មុន","resize":"ប្ដូរ​ទំហំ","generalTab":"ទូទៅ","advancedTab":"កម្រិážâ€‹ážáŸ’ពស់","validateNumberFailed":"ážáž˜áŸ’លៃ​នáŸáŸ‡â€‹áž–ុំ​មែន​ជា​លáŸážâ€‹áž‘áŸáŸ”","confirmNewPage":"រាល់​បន្លាស់​ប្ដូរ​នានា​ដែល​មិន​ទាន់​រក្សា​ទុក​ក្នុង​មាážáž·áž€áž¶â€‹áž“áŸáŸ‡ នឹង​ážáŸ’រូវ​បាážáŸ‹â€‹áž”ង់។ ážáž¾â€‹áž¢áŸ’នក​ពិážâ€‹áž‡áž¶â€‹áž…ង់​ផ្ទុក​ទំពáŸážšâ€‹ážáŸ’មី​មែនទáŸ?","confirmCancel":"ការ​កំណážáŸ‹â€‹áž˜áž½áž™â€‹áž…ំនួន​ážáŸ’រូ​វ​បាន​ផ្លាស់​ប្ដូរ។ ážáž¾â€‹áž¢áŸ’នក​ពិážâ€‹áž‡áž¶â€‹áž…ង់​បិទ​ប្រអប់​នáŸáŸ‡â€‹áž˜áŸ‚áž“áž‘áŸ?","options":"ការ​កំណážáŸ‹","target":"គោលដៅ","targetNew":"វីនដូ​ážáŸ’មី (_blank)","targetTop":"វីនដូ​លើ​គ០(_top)","targetSelf":"វីនដូ​ដូច​គ្នា (_self)","targetParent":"វីនដូ​ម០(_parent)","langDirLTR":"ពីឆ្វáŸáž„ទៅស្ážáž¶áŸ†(LTR)","langDirRTL":"ពីស្ážáž¶áŸ†áž‘ៅឆ្វáŸáž„(RTL)","styles":"រចនាបáž","cssClasses":"Stylesheet Classes","width":"ទទឹង","height":"កំពស់","align":"កំណážáŸ‹â€‹áž‘ីážáž¶áŸ†áž„","left":"ážáž¶áž„ឆ្វង","right":"ážáž¶áž„ស្ážáž¶áŸ†","center":"កណ្ážáž¶áž›","justify":"ážáŸ†ážšáž¹áž˜ážŸáž„ážáž¶áž„","alignLeft":"ážáž˜áŸ’រឹម​ឆ្វáŸáž„","alignRight":"ážáž˜áŸ’រឹម​ស្ដាំ","alignCenter":"Align Center","alignTop":"ážáž¶áž„លើ","alignMiddle":"កណ្ážáž¶áž›","alignBottom":"ážáž¶áž„ក្រោម","alignNone":"គ្មាន","invalidValue":"ážáž˜áŸ’លៃ​មិន​ážáŸ’រឹម​ážáŸ’រូវ។","invalidHeight":"ážáž˜áŸ’លៃ​កំពស់​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidWidth":"ážáž˜áŸ’លៃ​ទទឹង​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"ážáž˜áŸ’លៃ​កំណážáŸ‹â€‹ážŸáž˜áŸ’រាប់​វាល \"%1\" ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹ážœáž·áž‡áŸ’ជមាន​ ដោយ​ភ្ជាប់ឬ​មិន​ភ្ជាប់​ជាមួយ​នឹង​ឯកážáž¶â€‹ážšáž„្វាស់​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។","invalidHtmlLength":"ážáž˜áŸ’លៃ​កំណážáŸ‹â€‹ážŸáž˜áŸ’រាប់​វាល \"%1\" ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹ážœáž·áž‡áŸ’ជមាន ដោយ​ភ្ជាប់​ឬ​មិន​ភ្ជាប់​ជាមួយ​នឹង​ឯកážáž¶â€‹ážšáž„្វាស់​របស់ HTML (px ឬ %) ។","invalidInlineStyle":"ážáž˜áŸ’លៃ​កំណážáŸ‹â€‹ážŸáž˜áŸ’រាប់​រចនាបážâ€‹áž€áŸ’នុង​ážáž½ ážáŸ’រូវ​ážáŸ‚​មាន​មួយ​ឬ​ធាážáž»â€‹áž…្រើន​ដោយ​មាន​ទ្រង់ទ្រាយ​ជា \"ឈ្មោះ : ážáž˜áŸ’លៃ\" ហើយ​ញែក​ចáŸáž‰â€‹áž–ី​គ្នា​ដោយ​ចុច​ក្បៀស។","cssLengthTooltip":"បញ្ចូល​លáŸážâ€‹ážŸáž˜áŸ’រាប់​ážáž˜áŸ’លៃ​ជា​ភិចសែល ឬ​លáŸážâ€‹ážŠáŸ‚ល​មាន​ឯកážáž¶â€‹ážáŸ’រឹមážáŸ’រូវ​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។","unavailable":"%1<span class=\"cke_accessibility\">, មិន​មាន</span>","keyboard":{"8":"លុបážáž™áž€áŸ’រោយ","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"ចុង","36":"ផ្ទះ","46":"លុប","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['km']={"widget":{"move":"ចុច​ហើយ​ទាញ​ដើម្បី​ផ្លាស់​ទី","label":"%1 widget"},"undo":{"redo":"ធ្វើ​ឡើង​វិញ","undo":"មិន​ធ្វើ​វិញ"},"toolbar":{"toolbarCollapse":"បង្រួម​របារ​ឧបករណáŸ","toolbarExpand":"ពង្រីក​របារ​ឧបករណáŸ","toolbarGroups":{"document":"ឯកសារ","clipboard":"Clipboard/មិន​ធ្វើ​វិញ","editing":"ការ​កែ​សម្រួល","forms":"បែបបទ","basicstyles":"រចនាបážâ€‹áž˜áž¼áž›ážŠáŸ’ឋាន","paragraph":"កážáž¶ážážŽáŸ’ឌ","links":"ážáŸ†ážŽ","insert":"បញ្ចូល","styles":"រចនាបáž","colors":"ពណ៌","tools":"ឧបករណáŸ"},"toolbars":"របារ​ឧបករណáŸâ€‹áž€áŸ‚​សម្រួល"},"table":{"border":"ទំហំ​បន្ទាážáŸ‹â€‹ážŸáŸŠáž»áž˜","caption":"ចំណងជើង","cell":{"menu":"ក្រឡា","insertBefore":"បញ្ចូល​ក្រឡា​ពីមុáž","insertAfter":"បញ្ចូល​ក្រឡា​ពី​ក្រោយ","deleteCell":"លុប​ក្រឡា","merge":"បញ្ចូល​ក្រឡា​ចូល​គ្នា","mergeRight":"បញ្ចូល​គ្នា​ážáž¶áž„​ស្ដាំ","mergeDown":"បញ្ចូល​គ្នា​ចុះ​ក្រោម","splitHorizontal":"ពុះ​ក្រឡា​ផ្ដáŸáž€","splitVertical":"ពុះ​ក្រឡា​បញ្ឈរ","title":"លក្ážážŽáŸˆâ€‹áž€áŸ’រឡា","cellType":"ប្រភáŸáž‘​ក្រឡា","rowSpan":"ចំនួន​ជួរ​ដáŸáž€â€‹áž›áž¶áž™â€‹áž…ូល​គ្នា","colSpan":"ចំនួន​ជួរ​ឈរ​លាយ​ចូល​គ្នា","wordWrap":"រុំ​ពាក្យ","hAlign":"ការ​ážáž˜áŸ’រឹម​ផ្ដáŸáž€","vAlign":"ការ​ážáž˜áŸ’រឹម​បញ្ឈរ","alignBaseline":"ážáŸ’សែ​បន្ទាážáŸ‹â€‹áž‚ោល","bgColor":"ពណ៌​ផ្ទៃ​ក្រោយ","borderColor":"ពណ៌​បន្ទាážáŸ‹â€‹ážŸáŸŠáž»áž˜","data":"ទិន្ននáŸáž™","header":"ក្បាល","yes":"ព្រម","no":"áž‘áŸ","invalidWidth":"ទទឹង​ក្រឡា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidHeight":"កម្ពស់​ក្រឡា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidRowSpan":"ចំនួន​ជួរ​ដáŸáž€â€‹áž›áž¶áž™â€‹áž…ូល​គ្នា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹áž‘ាំង​អស់។","invalidColSpan":"ចំនួន​ជួរ​ឈរ​លាយ​ចូល​គ្នា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹áž‘ាំង​អស់។","chooseColor":"រើស"},"cellPad":"ចន្លោះ​ក្រឡា","cellSpace":"គម្លាážâ€‹áž€áŸ’រឡា","column":{"menu":"ជួរ​ឈរ","insertBefore":"បញ្ចូល​ជួរ​ឈរ​ពីមុáž","insertAfter":"បញ្ចូល​ជួរ​ឈរ​ពី​ក្រោយ","deleteColumn":"លុប​ជួរ​ឈរ"},"columns":"ជួរឈរ","deleteTable":"លុប​ážáž¶ážšáž¶áž„","headers":"ក្បាល","headersBoth":"ទាំង​ពីរ","headersColumn":"ជួរ​ឈរ​ដំបូង","headersNone":"មិន​មាន","headersRow":"ជួរ​ដáŸáž€â€‹ážŠáŸ†áž”ូង","heightUnit":"height unit","invalidBorder":"ទំហំ​បន្ទាážáŸ‹â€‹ážŸáŸŠáž»áž˜â€‹ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidCellPadding":"ចន្លោះ​ក្រឡា​ážáŸ’រូវ​ážáŸ‚ជា​លáŸážâ€‹ážœáž·áž‡áŸ’ជមាន។","invalidCellSpacing":"គម្លាážâ€‹áž€áŸ’រឡា​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹ážœáž·áž‡áŸ’ជមាន។","invalidCols":"ចំនួន​ជួរ​ឈរ​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹áž’ំ​ជាង 0។","invalidHeight":"កម្ពស់​ážáž¶ážšáž¶áž„​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸáž","invalidRows":"ចំនួន​ជួរ​ដáŸáž€â€‹ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹áž’ំ​ជាង 0។","invalidWidth":"ទទឹង​ážáž¶ážšáž¶áž„​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","menu":"លក្ážážŽáŸˆâ€‹ážáž¶ážšáž¶áž„","row":{"menu":"ជួរ​ដáŸáž€","insertBefore":"បញ្ចូល​ជួរ​ដáŸáž€â€‹áž–ីមុáž","insertAfter":"បញ្ចូល​ជួរ​ដáŸáž€â€‹áž–ី​ក្រោយ","deleteRow":"លុប​ជួរ​ដáŸáž€"},"rows":"ជួរ​ដáŸáž€","summary":"សáŸáž…ក្ážáž¸â€‹ážŸáž„្ážáŸáž”","title":"លក្ážážŽáŸˆâ€‹ážáž¶ážšáž¶áž„","toolbar":"ážáž¶ážšáž¶áž„","widthPc":"ភាគរយ","widthPx":"ភីកសែល","widthUnit":"ឯកážáž¶â€‹áž‘ទឹង"},"stylescombo":{"label":"រចនាបáž","panelTitle":"ទ្រង់ទ្រាយ​រចនាបáž","panelTitle1":"រចនាបážâ€‹áž”្លក់","panelTitle2":"រចនាបážâ€‹áž€áŸ’នុង​ជួរ","panelTitle3":"រចនាបážâ€‹ážœážáŸ’ážáž»"},"specialchar":{"options":"ជម្រើស​ážáž½â€‹áž¢áž€áŸ’សរ​ពិសáŸážŸ","title":"រើស​ážáž½áž¢áž€áŸ’សរ​ពិសáŸážŸ","toolbar":"បន្ážáŸ‚មអក្សរពិសáŸážŸ"},"sourcedialog":{"toolbar":"អក្សរ​កូដ","title":"អក្សរ​កូដ"},"sourcearea":{"toolbar":"អក្សរ​កូដ"},"showblocks":{"toolbar":"បង្ហាញ​ប្លក់"},"removeformat":{"toolbar":"ជម្រះ​ទ្រង់​ទ្រាយ"},"pastetext":{"button":"បិទ​ភ្ជាប់​ជា​អážáŸ’ážáž”ទ​ធម្មážáž¶","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"បិទ​ភ្ជាប់​ជា​អážáŸ’ážáž”ទ​ធម្មážáž¶"},"pastefromword":{"confirmCleanup":"អážáŸ’ážáž”ទ​ដែល​អ្នក​ចង់​បិទ​ភ្ជាប់​នáŸáŸ‡ ទំនង​ដូច​ជា​ចម្លង​មក​ពី Word។ ážáž¾â€‹áž¢áŸ’នក​ចង់​សម្អាážâ€‹ážœáž¶â€‹áž˜áž»áž“​បិទ​ភ្ជាប់​ទáŸ?","error":"ដោយ​សារ​មាន​បញ្ហា​ផ្នែក​ក្នុង​ធ្វើ​ឲ្យ​មិន​អាច​សម្អាážâ€‹áž‘ិន្ននáŸáž™â€‹ážŠáŸ‚ល​បាន​បិទ​ភ្ជាប់","title":"បិទ​ភ្ជាប់​ពី Word","toolbar":"បិទ​ភ្ជាប់​ពី Word"},"notification":{"closed":"បាន​បិទ​ការ​ផ្ដល់​ដំណឹង។"},"maximize":{"maximize":"ពង្រីក​អážáž·áž”រមា","minimize":"បង្រួម​អប្បបរមា"},"magicline":{"title":"បញ្ចូល​កážáž¶ážážŽáŸ’ឌ​នៅ​ទីនáŸáŸ‡"},"list":{"bulletedlist":"បញ្ចូល / លុប​បញ្ជី​ជា​ចំណុច​មូល","numberedlist":"បញ្ចូល / លុប​បញ្ជី​ជា​លáŸáž"},"language":{"button":"កំណážáŸ‹â€‹áž—ាសា","remove":"លុប​ភាសា"},"indent":{"indent":"បន្ážáŸ‚មការចូលបន្ទាážáŸ‹","outdent":"បន្ážáž™áž€áž¶ážšáž…ូលបន្ទាážáŸ‹"},"image2":{"alt":"អážáŸ’ážáž”ទជំនួស","btnUpload":"បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្ážáž›áŸ‹ážŸáŸážœáž¶","captioned":"រូប​ដែល​មាន​ចំណង​ជើង","captionPlaceholder":"Caption","infoTab":"áž–ážáŸŒáž˜áž¶áž“អំពីរូបភាព","lockRatio":"ចាក់​សោ​ផល​ធៀប","menu":"លក្ážážŽáŸˆâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹ážšáž¼áž”​ភាព","pathName":"រូបភាព","pathNameCaption":"ចំណងជើង","resetSize":"កំណážáŸ‹áž‘ំហំឡើងវិញ","resizer":"ចុច​ហើយ​ទាញ​ដើម្បី​ប្ដូរ​ទំហំ","title":"លក្ážážŽáŸˆâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹ážšáž¼áž”​ភាប","uploadTab":"ផ្ទុក​ឡើង","urlMissing":"ážáŸ’វះ URL ប្រភព​រូប​ភាព។","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"បន្ážáŸ‚មបន្ទាážáŸ‹áž•áŸ’ážáŸáž€"},"format":{"label":"ទម្រង់","panelTitle":"ទម្រង់​កážáž¶ážážŽáŸ’ឌ","tag_address":"អាសយដ្ឋាន","tag_div":"ធម្មážáž¶ (DIV)","tag_h1":"ចំណង​ជើង 1","tag_h2":"ចំណង​ជើង 2","tag_h3":"ចំណង​ជើង 3","tag_h4":"ចំណង​ជើង 4","tag_h5":"ចំណង​ជើង 5","tag_h6":"ចំណង​ជើង 6","tag_p":"ធម្មážáž¶","tag_pre":"Formatted"},"filetools":{"loadError":"មាន​បញ្ហា​កើážáž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž¢áž¶áž“​ឯកសារ។","networkError":"មាន​បញ្ហា​បណ្ដាញ​កើážâ€‹áž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž•áŸ’ទុកឡើង​ឯកសារ។","httpError404":"មាន​បញ្ហា HTTP កើážâ€‹áž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž•áŸ’ទុកឡើង​ឯកសារ (404៖ រក​ឯកសារ​មិន​ឃើញ)។","httpError403":"មាន​បញ្ហា HTTP កើážâ€‹áž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž•áŸ’ទុកឡើង​ឯកសារ (403៖ ហាមឃាážáŸ‹)។","httpError":"មាន​បញ្ហា HTTP កើážâ€‹áž¡áž¾áž„​ក្នុង​ពáŸáž›â€‹áž•áŸ’ទុកឡើង​ឯកសារ (ស្ážáž¶áž“ភាព​កំហុស៖ %1)។","noUrlError":"មិន​មាន​បញ្ជាក់ URL ផ្ទុក​ឡើង។","responseError":"ការ​ឆ្លើយážáž”​របស់​ម៉ាស៊ីនបម្រើ មិន​ážáŸ’រឹមážáŸ’រូវ។"},"elementspath":{"eleLabel":"ទីážáž¶áŸ†áž„​ធាážáž»","eleTitle":"ធាážáž» %1"},"contextmenu":{"options":"ជម្រើស​ម៉ឺនុយ​បរិបទ"},"clipboard":{"copy":"ចម្លង","copyError":"ការកំណážáŸ‹ážŸáž»ážœážáŸ’ážáž—ាពរបស់កម្មវិធីរុករករបស់លោកអ្នក áž“áŸáŸ‡â€‹áž˜áž·áž“អាចធ្វើកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘ ចំលងអážáŸ’ážáž”ទយកដោយស្វáŸáž™áž”្រវážáŸ’ážáž”ានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនáŸáŸ‡ (Ctrl/Cmd+C)។","cut":"កាážáŸ‹áž™áž€","cutError":"ការកំណážáŸ‹ážŸáž»ážœážáŸ’ážáž—ាពរបស់កម្មវិធីរុករករបស់លោកអ្នក áž“áŸáŸ‡â€‹áž˜áž·áž“អាចធ្វើកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘ កាážáŸ‹áž¢ážáŸ’ážáž”ទយកដោយស្វáŸáž™áž”្រវážáŸ’ážáž”ានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនáŸáŸ‡ (Ctrl/Cmd+X) ។","paste":"បិទ​ភ្ជាប់","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"ážáŸ†áž”ន់​បិទ​ភ្ជាប់","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"ប្លក់​ពាក្យ​សម្រង់"},"basicstyles":{"bold":"ដិáž","italic":"ទ្រáŸáž","strike":"គូស​បន្ទាážáŸ‹â€‹áž…ំ​កណ្ដាល","subscript":"អក្សរážáž¼áž…ក្រោម","superscript":"អក្សរážáž¼áž…លើ","underline":"គូស​បន្ទាážáŸ‹â€‹áž€áŸ’រោម"},"about":{"copy":"រក្សាសិទ្ធិ © $1។ រក្សា​សិទ្ធិ​គ្រប់​បែប​យ៉ាង។","dlgTitle":"អំពី CKEditor","moreInfo":"សម្រាប់​ពáŸážáŸŒáž˜áž¶áž“​អំពី​អាជ្ញាបណញណ សូម​មើល​ក្នុង​គáŸáž ទំពáŸážšâ€‹ážšáž”ស់​យើង៖"},"editor":"ឧបករណáŸâ€‹ážŸážšážŸáŸážšâ€‹áž¢ážáŸ’ážáž”ទ​សម្បូរ​បែប","editorPanel":"ផ្ទាំង​ឧបករណáŸâ€‹ážŸážšážŸáŸážšâ€‹áž¢ážáŸ’ážáž”ទ​សម្បូរ​បែប","common":{"editorHelp":"ចុច ALT 0 សម្រាប់​ជំនួយ","browseServer":"រក​មើល​ក្នុង​ម៉ាស៊ីន​បម្រើ","url":"URL","protocol":"ពិធីការ","upload":"ផ្ទុក​ឡើង","uploadSubmit":"បញ្ជូនទៅកាន់ម៉ាស៊ីន​បម្រើ","image":"រូបភាព","form":"បែបបទ","checkbox":"ប្រអប់​ធីក","radio":"ប៊ូážáž»áž„​មូល","textField":"វាល​អážáŸ’ážáž”áž‘","textarea":"Textarea","hiddenField":"វាល​កំបាំង","button":"ប៊ូážáž»áž„","select":"វាល​ជម្រើស","imageButton":"ប៊ូážáž»áž„​រូបភាព","notSet":"<មិនកំណážáŸ‹>","id":"Id","name":"ឈ្មោះ","langDir":"ទិសដៅភាសា","langDirLtr":"ពីឆ្វáŸáž„ទៅស្ážáž¶áŸ† (LTR)","langDirRtl":"ពីស្ážáž¶áŸ†áž‘ៅឆ្វáŸáž„ (RTL)","langCode":"áž›áŸážâ€‹áž€áž¼ážŠâ€‹áž—ាសា","longDescr":"URL អធិប្បាយ​វែង","cssClass":"Stylesheet Classes","advisoryTitle":"ចំណង​ជើង​ណែនាំ","cssStyle":"រចនាបáž","ok":"ព្រម","cancel":"បោះបង់","close":"បិទ","preview":"មើល​ជា​មុន","resize":"ប្ដូរ​ទំហំ","generalTab":"ទូទៅ","advancedTab":"កម្រិážâ€‹ážáŸ’ពស់","validateNumberFailed":"ážáž˜áŸ’លៃ​នáŸáŸ‡â€‹áž–ុំ​មែន​ជា​លáŸážâ€‹áž‘áŸáŸ”","confirmNewPage":"រាល់​បន្លាស់​ប្ដូរ​នានា​ដែល​មិន​ទាន់​រក្សា​ទុក​ក្នុង​មាážáž·áž€áž¶â€‹áž“áŸáŸ‡ នឹង​ážáŸ’រូវ​បាážáŸ‹â€‹áž”ង់។ ážáž¾â€‹áž¢áŸ’នក​ពិážâ€‹áž‡áž¶â€‹áž…ង់​ផ្ទុក​ទំពáŸážšâ€‹ážáŸ’មី​មែនទáŸ?","confirmCancel":"ការ​កំណážáŸ‹â€‹áž˜áž½áž™â€‹áž…ំនួន​ážáŸ’រូ​វ​បាន​ផ្លាស់​ប្ដូរ។ ážáž¾â€‹áž¢áŸ’នក​ពិážâ€‹áž‡áž¶â€‹áž…ង់​បិទ​ប្រអប់​នáŸáŸ‡â€‹áž˜áŸ‚áž“áž‘áŸ?","options":"ការ​កំណážáŸ‹","target":"គោលដៅ","targetNew":"វីនដូ​ážáŸ’មី (_blank)","targetTop":"វីនដូ​លើ​គ០(_top)","targetSelf":"វីនដូ​ដូច​គ្នា (_self)","targetParent":"វីនដូ​ម០(_parent)","langDirLTR":"ពីឆ្វáŸáž„ទៅស្ážáž¶áŸ†(LTR)","langDirRTL":"ពីស្ážáž¶áŸ†áž‘ៅឆ្វáŸáž„(RTL)","styles":"រចនាបáž","cssClasses":"Stylesheet Classes","width":"ទទឹង","height":"កំពស់","align":"កំណážáŸ‹â€‹áž‘ីážáž¶áŸ†áž„","left":"ážáž¶áž„ឆ្វង","right":"ážáž¶áž„ស្ážáž¶áŸ†","center":"កណ្ážáž¶áž›","justify":"ážáŸ†ážšáž¹áž˜ážŸáž„ážáž¶áž„","alignLeft":"ážáž˜áŸ’រឹម​ឆ្វáŸáž„","alignRight":"ážáž˜áŸ’រឹម​ស្ដាំ","alignCenter":"Align Center","alignTop":"ážáž¶áž„លើ","alignMiddle":"កណ្ážáž¶áž›","alignBottom":"ážáž¶áž„ក្រោម","alignNone":"គ្មាន","invalidValue":"ážáž˜áŸ’លៃ​មិន​ážáŸ’រឹម​ážáŸ’រូវ។","invalidHeight":"ážáž˜áŸ’លៃ​កំពស់​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidWidth":"ážáž˜áŸ’លៃ​ទទឹង​ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážáŸ”","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"ážáž˜áŸ’លៃ​កំណážáŸ‹â€‹ážŸáž˜áŸ’រាប់​វាល \"%1\" ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹ážœáž·áž‡áŸ’ជមាន​ ដោយ​ភ្ជាប់ឬ​មិន​ភ្ជាប់​ជាមួយ​នឹង​ឯកážáž¶â€‹ážšáž„្វាស់​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។","invalidHtmlLength":"ážáž˜áŸ’លៃ​កំណážáŸ‹â€‹ážŸáž˜áŸ’រាប់​វាល \"%1\" ážáŸ’រូវ​ážáŸ‚​ជា​លáŸážâ€‹ážœáž·áž‡áŸ’ជមាន ដោយ​ភ្ជាប់​ឬ​មិន​ភ្ជាប់​ជាមួយ​នឹង​ឯកážáž¶â€‹ážšáž„្វាស់​របស់ HTML (px ឬ %) ។","invalidInlineStyle":"ážáž˜áŸ’លៃ​កំណážáŸ‹â€‹ážŸáž˜áŸ’រាប់​រចនាបážâ€‹áž€áŸ’នុង​ážáž½ ážáŸ’រូវ​ážáŸ‚​មាន​មួយ​ឬ​ធាážáž»â€‹áž…្រើន​ដោយ​មាន​ទ្រង់ទ្រាយ​ជា \"ឈ្មោះ : ážáž˜áŸ’លៃ\" ហើយ​ញែក​ចáŸáž‰â€‹áž–ី​គ្នា​ដោយ​ចុច​ក្បៀស។","cssLengthTooltip":"បញ្ចូល​លáŸážâ€‹ážŸáž˜áŸ’រាប់​ážáž˜áŸ’លៃ​ជា​ភិចសែល ឬ​លáŸážâ€‹ážŠáŸ‚ល​មាន​ឯកážáž¶â€‹ážáŸ’រឹមážáŸ’រូវ​របស់ CSS (px, %, in, cm, mm, em, ex, pt ឬ pc) ។","unavailable":"%1<span class=\"cke_accessibility\">, មិន​មាន</span>","keyboard":{"8":"លុបážáž™áž€áŸ’រោយ","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"ចុង","36":"ផ្ទះ","46":"លុប","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ko.js b/core/assets/vendor/ckeditor/lang/ko.js index 05cfc6ad37ef..99f651d71ef1 100644 --- a/core/assets/vendor/ckeditor/lang/ko.js +++ b/core/assets/vendor/ckeditor/lang/ko.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ko']={"widget":{"move":"움ì§ì´ë ¤ë©´ í´ë¦ 후 드래그 하세요","label":"%1 ìœ„ì ¯"},"undo":{"redo":"다시 실행","undo":"실행 취소"},"toolbar":{"toolbarCollapse":"툴바 줄ì´ê¸°","toolbarExpand":"툴바 확장","toolbarGroups":{"document":"문서","clipboard":"í´ë¦½ë³´ë“œ/실행 취소","editing":"편집","forms":"í¼","basicstyles":"기본 스타ì¼","paragraph":"단ë½","links":"ë§í¬","insert":"삽입","styles":"스타ì¼","colors":"색ìƒ","tools":"ë„구"},"toolbars":"ì—디터 툴바"},"table":{"border":"í…Œë‘리 ë‘께","caption":"주ì„","cell":{"menu":"ì…€","insertBefore":"ì•žì— ì…€ 삽입","insertAfter":"ë’¤ì— ì…€ 삽입","deleteCell":"ì…€ ì‚ì œ","merge":"ì…€ 합치기","mergeRight":"오른쪽 합치기","mergeDown":"왼쪽 합치기","splitHorizontal":"ìˆ˜í‰ ë‚˜ëˆ„ê¸°","splitVertical":"ìˆ˜ì§ ë‚˜ëˆ„ê¸°","title":"ì…€ ì†ì„±","cellType":"ì…€ 종류","rowSpan":"í–‰ 간격","colSpan":"ì—´ 간격","wordWrap":"줄 ë 단어 줄 바꿈","hAlign":"가로 ì •ë ¬","vAlign":"세로 ì •ë ¬","alignBaseline":"ì˜ë¬¸ 글꼴 ê¸°ì¤€ì„ ","bgColor":"배경색","borderColor":"í…Œë‘리 색","data":"ìžë£Œ","header":"머릿칸","yes":"예","no":"아니오","invalidWidth":"ì…€ 너비는 숫ìžì—¬ì•¼ 합니다.","invalidHeight":"ì…€ 높ì´ëŠ” 숫ìžì—¬ì•¼ 합니다.","invalidRowSpan":"í–‰ ê°„ê²©ì€ ì •ìˆ˜ì—¬ì•¼ 합니다.","invalidColSpan":"ì—´ ê°„ê²©ì€ ì •ìˆ˜ì—¬ì•¼ 합니다.","chooseColor":"ì„ íƒ"},"cellPad":"ì…€ 여백","cellSpace":"ì…€ 간격","column":{"menu":"ì—´","insertBefore":"ì™¼ìª½ì— ì—´ 삽입","insertAfter":"ì˜¤ë¥¸ìª½ì— ì—´ 삽입","deleteColumn":"ì—´ ì‚ì œ"},"columns":"ì—´","deleteTable":"í‘œ ì‚ì œ","headers":"머릿칸","headersBoth":"모ë‘","headersColumn":"첫 ì—´","headersNone":"ì—†ìŒ","headersRow":"첫 í–‰","heightUnit":"height unit","invalidBorder":"í…Œë‘리 ë‘께는 숫ìžì—¬ì•¼ 합니다.","invalidCellPadding":"ì…€ ì—¬ë°±ì€ 0 ì´ìƒì´ì–´ì•¼ 합니다.","invalidCellSpacing":"ì…€ ê°„ê²©ì€ 0 ì´ìƒì´ì–´ì•¼ 합니다.","invalidCols":"ì—´ 번호는 0보다 커야 합니다.","invalidHeight":"í‘œ 높ì´ëŠ” 숫ìžì—¬ì•¼ 합니다.","invalidRows":"í–‰ 번호는 0보다 커야 합니다.","invalidWidth":"í‘œì˜ ë„ˆë¹„ëŠ” 숫ìžì—¬ì•¼ 합니다.","menu":"í‘œ ì†ì„±","row":{"menu":"í–‰","insertBefore":"ìœ„ì— í–‰ 삽입","insertAfter":"ì•„ëž˜ì— í–‰ 삽입","deleteRow":"í–‰ ì‚ì œ"},"rows":"í–‰","summary":"요약","title":"í‘œ ì†ì„±","toolbar":"í‘œ","widthPc":"백분율","widthPx":"픽셀","widthUnit":"너비 단위"},"stylescombo":{"label":"스타ì¼","panelTitle":"ì „ì²´ 구성 스타ì¼","panelTitle1":"ë¸”ë¡ ìŠ¤íƒ€ì¼","panelTitle2":"ì¸ë¼ì¸ 스타ì¼","panelTitle3":"ê°ì²´ 스타ì¼"},"specialchar":{"options":"íŠ¹ìˆ˜ë¬¸ìž ì˜µì…˜","title":"íŠ¹ìˆ˜ë¬¸ìž ì„ íƒ","toolbar":"íŠ¹ìˆ˜ë¬¸ìž ì‚½ìž…"},"sourcedialog":{"toolbar":"소스","title":"소스"},"sourcearea":{"toolbar":"소스"},"showblocks":{"toolbar":"ë¸”ë¡ ë³´ê¸°"},"removeformat":{"toolbar":"í˜•ì‹ ì§€ìš°ê¸°"},"pastetext":{"button":"í…스트로 붙여넣기","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"í…스트로 붙여넣기"},"pastefromword":{"confirmCleanup":"붙여 ë„£ì„ ë‚´ìš©ì€ MS Wordì—ì„œ 복사 í•œ 것입니다. 붙여 넣기 ì „ì— ì •ë¦¬ í•˜ì‹œê² ìŠµë‹ˆê¹Œ?","error":"내부 오류로 붙여 ë„£ì€ ë°ì´í„°ë¥¼ ì •ë¦¬ í• ìˆ˜ 없습니다.","title":"MS Word ì—ì„œ 붙여넣기","toolbar":"MS Word ì—ì„œ 붙여넣기"},"notification":{"closed":"ì•Œë¦¼ì´ ë‹«íž˜."},"maximize":{"maximize":"최대화","minimize":"최소화"},"magicline":{"title":"ì—¬ê¸°ì— ë‹¨ë½ ì‚½ìž…"},"list":{"bulletedlist":"순서 없는 목ë¡","numberedlist":"순서 있는 목ë¡"},"language":{"button":"언어 ì„¤ì •","remove":"언어 ì„¤ì • 지우기"},"indent":{"indent":"들여쓰기","outdent":"내어쓰기"},"image2":{"alt":"대체 문ìžì—´","btnUpload":"서버로 ì „ì†¡","captioned":"ì´ë¯¸ì§€ 설명 넣기","captionPlaceholder":"설명","infoTab":"ì´ë¯¸ì§€ ì •ë³´","lockRatio":"비율 ìœ ì§€","menu":"ì´ë¯¸ì§€ ì†ì„±","pathName":"ì´ë¯¸ì§€","pathNameCaption":"설명","resetSize":"ì›ëž˜ í¬ê¸°ë¡œ","resizer":"í¬ê¸°ë¥¼ ì¡°ì ˆí•˜ë ¤ë©´ í´ë¦ 후 드래그 하세요","title":"ì´ë¯¸ì§€ ì†ì„±","uploadTab":"업로드","urlMissing":"ì´ë¯¸ì§€ ì›ë³¸ 주소(URL)ê°€ 없습니다.","altMissing":"대체 문ìžê°€ 없습니다."},"horizontalrule":{"toolbar":"가로 줄 삽입"},"format":{"label":"문단","panelTitle":"문단 형ì‹","tag_address":"글쓴ì´","tag_div":"기본 (DIV)","tag_h1":"ì œëª© 1","tag_h2":"ì œëª© 2","tag_h3":"ì œëª© 3","tag_h4":"ì œëª© 4","tag_h5":"ì œëª© 5","tag_h6":"ì œëª© 6","tag_p":"본문","tag_pre":"ì •í˜• 문단"},"filetools":{"loadError":"파ì¼ì„ ì½ëŠ” 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤.","networkError":"íŒŒì¼ ì—…ë¡œë“œ 중 ë„¤íŠ¸ì›Œí¬ ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤.","httpError404":"íŒŒì¼ ì—…ë¡œë“œì¤‘ HTTP 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤ (404: íŒŒì¼ ì°¾ì„수 ì—†ìŒ).","httpError403":"íŒŒì¼ ì—…ë¡œë“œì¤‘ HTTP 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤ (403: 권한 ì—†ìŒ).","httpError":"íŒŒì¼ ì—…ë¡œë“œì¤‘ HTTP 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤ (오류 코드 %1).","noUrlError":"업로드 주소가 ì •ì˜ë˜ì–´ 있지 않습니다.","responseError":"ìž˜ëª»ëœ ì„œë²„ ì‘답."},"elementspath":{"eleLabel":"요소 경로","eleTitle":"%1 요소"},"contextmenu":{"options":"컨í…스트 메뉴 옵션"},"clipboard":{"copy":"복사","copyError":"브ë¼ìš°ì €ì˜ ë³´ì•ˆì„¤ì • ë•Œë¬¸ì— ë³µì‚¬í• ìˆ˜ 없습니다. 키보드(Ctrl/Cmd+C)를 ì´ìš©í•´ì„œ 복사하ì‹ì‹œì˜¤.","cut":"잘ë¼ë‚´ê¸°","cutError":"브ë¼ìš°ì €ì˜ ë³´ì•ˆì„¤ì • ë•Œë¬¸ì— ìž˜ë¼ë‚´ê¸° ê¸°ëŠ¥ì„ ì‹¤í–‰í• ìˆ˜ 없습니다. 키보드(Ctrl/Cmd+X)를 ì´ìš©í•´ì„œ 잘ë¼ë‚´ê¸° 하ì‹ì‹œì˜¤","paste":"붙여넣기","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"붙여넣기 범위","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"ì¸ìš© 단ë½"},"basicstyles":{"bold":"굵게","italic":"기울임꼴","strike":"ì·¨ì†Œì„ ","subscript":"아래 첨ìž","superscript":"위 첨ìž","underline":"밑줄"},"about":{"copy":"ì €ìž‘ê¶Œ © $1 . íŒê¶Œ ì†Œìœ .","dlgTitle":"CKEditor ì— ëŒ€í•˜ì—¬","moreInfo":"ë¼ì´ì„ ìŠ¤ì— ëŒ€í•œ ì •ë³´ëŠ” ì €í¬ ì›¹ 사ì´íŠ¸ë¥¼ ì°¸ê³ í•˜ì„¸ìš”:"},"editor":"리치 í…스트 편집기","editorPanel":"리치 í…스트 편집기 패ë„","common":{"editorHelp":"ë„ì›€ì´ í•„ìš”í•˜ë©´ ALT 0 ì„ ëˆ„ë¥´ì„¸ìš”","browseServer":"서버 íƒìƒ‰","url":"URL","protocol":"í”„ë¡œí† ì½œ","upload":"업로드","uploadSubmit":"서버로 ì „ì†¡","image":"ì´ë¯¸ì§€","flash":"플래시","form":"í¼","checkbox":"ì²´í¬ ë°•ìŠ¤","radio":"ë¼ë””오 버튼","textField":"í•œ 줄 ìž…ë ¥ 칸","textarea":"여러 줄 ìž…ë ¥ 칸","hiddenField":"ìˆ¨ì€ ìž…ë ¥ 칸","button":"버튼","select":"ì„ íƒ ëª©ë¡","imageButton":"ì´ë¯¸ì§€ 버튼","notSet":"<ì„¤ì • 안 ë¨>","id":"ID","name":"ì´ë¦„","langDir":"언어 ë°©í–¥","langDirLtr":"왼쪽ì—ì„œ 오른쪽 (LTR)","langDirRtl":"오른쪽ì—ì„œ 왼쪽 (RTL)","langCode":"언어 코드","longDescr":"웹 주소 설명","cssClass":"ìŠ¤íƒ€ì¼ ì‹œíŠ¸ í´ëž˜ìŠ¤","advisoryTitle":"ë³´ì¡° ì œëª©","cssStyle":"스타ì¼","ok":"확ì¸","cancel":"취소","close":"닫기","preview":"미리보기","resize":"í¬ê¸° ì¡°ì ˆ","generalTab":"ì¼ë°˜","advancedTab":"ìžì„¸ížˆ","validateNumberFailed":"ì´ ê°’ì€ ìˆ«ìžê°€ 아닙니다.","confirmNewPage":"ì €ìž¥í•˜ì§€ ì•Šì€ ëª¨ë“ ë³€ê²½ì‚¬í•ì€ ìœ ì‹¤ë©ë‹ˆë‹¤. ì •ë§ë¡œ 새로운 페ì´ì§€ë¥¼ ë¶€ë¥´ê² ìŠµë‹ˆê¹Œ?","confirmCancel":"ì¼ë¶€ ì˜µì…˜ì´ ë³€ê²½ ë˜ì—ˆìŠµë‹ˆë‹¤. ì •ë§ë¡œ ì°½ì„ ë‹«ê² ìŠµë‹ˆê¹Œ?","options":"옵션","target":"타겟","targetNew":"새 ì°½ (_blank)","targetTop":"최ìƒìœ„ ì°½ (_top)","targetSelf":"ê°™ì€ ì°½ (_self)","targetParent":"부모 ì°½ (_parent)","langDirLTR":"왼쪽ì—ì„œ 오른쪽 (LTR)","langDirRTL":"오른쪽ì—ì„œ 왼쪽 (RTL)","styles":"스타ì¼","cssClasses":"ìŠ¤íƒ€ì¼ ì‹œíŠ¸ í´ëž˜ìŠ¤","width":"너비","height":"높ì´","align":"ì •ë ¬","left":"왼쪽","right":"오른쪽","center":"중앙","justify":"양쪽 ì •ë ¬","alignLeft":"왼쪽 ì •ë ¬","alignRight":"오른쪽 ì •ë ¬","alignCenter":"중앙 ì •ë ¬","alignTop":"위","alignMiddle":"중간","alignBottom":"아래","alignNone":"기본","invalidValue":"ìž˜ëª»ëœ ê°’.","invalidHeight":"높ì´ëŠ” 숫ìžì—¬ì•¼ 합니다.","invalidWidth":"ë„“ì´ëŠ” 숫ìžì—¬ì•¼ 합니다.","invalidLength":"\"%1\" ê°’ì€ ìœ íš¨í•œ ì¸¡ì •ë‹¨ìœ„(%2)를 í¬í•¨í•˜ê±°ë‚˜ í¬í•¨í•˜ì§€ ì•Šì€ ì–‘ìˆ˜ì—¬ì•¼ 합니다.","invalidCssLength":"\"%1\" ê°’ì€ ìœ íš¨í•œ CSS ì¸¡ì • 단위(px, %, in, cm, mm, em, ex, pt, or pc)를 í¬í•¨í•˜ê±°ë‚˜ í¬í•¨í•˜ì§€ ì•Šì€ ì–‘ìˆ˜ 여야 합니다.","invalidHtmlLength":"\"%1\" ê°’ì€ ìœ íš¨í•œ HTML ì¸¡ì • 단위(px or %)를 í¬í•¨í•˜ê±°ë‚˜ í¬í•¨í•˜ì§€ ì•Šì€ ì–‘ìˆ˜ì—¬ì•¼ 합니다.","invalidInlineStyle":"ì¸ë¼ì¸ 스타ì¼ì— ëª…ì‹œëœ ê°’ì€ ì„¸ë¯¸ì½œë¡ (;)으로 구분ë˜ëŠ” í•œ ìŒ ì´ìƒì˜ \"ì´ë¦„ : ê°’\" 형ì‹ìœ¼ë¡œ 구성ë˜ì–´ì•¼ 합니다.","cssLengthTooltip":"픽셀 ë‹¨ìœ„ì˜ ìˆ«ìžë§Œ ìž…ë ¥í•˜ì‹œê±°ë‚˜ 숫ìžì™€ ìœ íš¨í•œ CSS 단위(px, %, in, cm, mm, em, ex, pt, or pc)를 함께 ìž…ë ¥í•´ì£¼ì„¸ìš”.","unavailable":"%1<span class=\"cke_accessibility\">, 사용불가</span>","keyboard":{"8":"백스페ì´ìŠ¤","13":"엔터","16":"시프트","17":"컨트롤","18":"알트","32":"간격","35":"엔드","36":"홈","46":"딜리트","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"커맨드"},"keyboardShortcut":"키보드 단축키","optionDefault":"기본값"}}; \ No newline at end of file +CKEDITOR.lang['ko']={"widget":{"move":"움ì§ì´ë ¤ë©´ í´ë¦ 후 드래그 하세요","label":"%1 ìœ„ì ¯"},"undo":{"redo":"다시 실행","undo":"실행 취소"},"toolbar":{"toolbarCollapse":"툴바 줄ì´ê¸°","toolbarExpand":"툴바 확장","toolbarGroups":{"document":"문서","clipboard":"í´ë¦½ë³´ë“œ/실행 취소","editing":"편집","forms":"í¼","basicstyles":"기본 스타ì¼","paragraph":"단ë½","links":"ë§í¬","insert":"삽입","styles":"스타ì¼","colors":"색ìƒ","tools":"ë„구"},"toolbars":"ì—디터 툴바"},"table":{"border":"í…Œë‘리 ë‘께","caption":"주ì„","cell":{"menu":"ì…€","insertBefore":"ì•žì— ì…€ 삽입","insertAfter":"ë’¤ì— ì…€ 삽입","deleteCell":"ì…€ ì‚ì œ","merge":"ì…€ 합치기","mergeRight":"오른쪽 합치기","mergeDown":"왼쪽 합치기","splitHorizontal":"ìˆ˜í‰ ë‚˜ëˆ„ê¸°","splitVertical":"ìˆ˜ì§ ë‚˜ëˆ„ê¸°","title":"ì…€ ì†ì„±","cellType":"ì…€ 종류","rowSpan":"í–‰ 간격","colSpan":"ì—´ 간격","wordWrap":"줄 ë 단어 줄 바꿈","hAlign":"가로 ì •ë ¬","vAlign":"세로 ì •ë ¬","alignBaseline":"ì˜ë¬¸ 글꼴 ê¸°ì¤€ì„ ","bgColor":"배경색","borderColor":"í…Œë‘리 색","data":"ìžë£Œ","header":"머릿칸","yes":"예","no":"아니오","invalidWidth":"ì…€ 너비는 숫ìžì—¬ì•¼ 합니다.","invalidHeight":"ì…€ 높ì´ëŠ” 숫ìžì—¬ì•¼ 합니다.","invalidRowSpan":"í–‰ ê°„ê²©ì€ ì •ìˆ˜ì—¬ì•¼ 합니다.","invalidColSpan":"ì—´ ê°„ê²©ì€ ì •ìˆ˜ì—¬ì•¼ 합니다.","chooseColor":"ì„ íƒ"},"cellPad":"ì…€ 여백","cellSpace":"ì…€ 간격","column":{"menu":"ì—´","insertBefore":"ì™¼ìª½ì— ì—´ 삽입","insertAfter":"ì˜¤ë¥¸ìª½ì— ì—´ 삽입","deleteColumn":"ì—´ ì‚ì œ"},"columns":"ì—´","deleteTable":"í‘œ ì‚ì œ","headers":"머릿칸","headersBoth":"모ë‘","headersColumn":"첫 ì—´","headersNone":"ì—†ìŒ","headersRow":"첫 í–‰","heightUnit":"height unit","invalidBorder":"í…Œë‘리 ë‘께는 숫ìžì—¬ì•¼ 합니다.","invalidCellPadding":"ì…€ ì—¬ë°±ì€ 0 ì´ìƒì´ì–´ì•¼ 합니다.","invalidCellSpacing":"ì…€ ê°„ê²©ì€ 0 ì´ìƒì´ì–´ì•¼ 합니다.","invalidCols":"ì—´ 번호는 0보다 커야 합니다.","invalidHeight":"í‘œ 높ì´ëŠ” 숫ìžì—¬ì•¼ 합니다.","invalidRows":"í–‰ 번호는 0보다 커야 합니다.","invalidWidth":"í‘œì˜ ë„ˆë¹„ëŠ” 숫ìžì—¬ì•¼ 합니다.","menu":"í‘œ ì†ì„±","row":{"menu":"í–‰","insertBefore":"ìœ„ì— í–‰ 삽입","insertAfter":"ì•„ëž˜ì— í–‰ 삽입","deleteRow":"í–‰ ì‚ì œ"},"rows":"í–‰","summary":"요약","title":"í‘œ ì†ì„±","toolbar":"í‘œ","widthPc":"백분율","widthPx":"픽셀","widthUnit":"너비 단위"},"stylescombo":{"label":"스타ì¼","panelTitle":"ì „ì²´ 구성 스타ì¼","panelTitle1":"ë¸”ë¡ ìŠ¤íƒ€ì¼","panelTitle2":"ì¸ë¼ì¸ 스타ì¼","panelTitle3":"ê°ì²´ 스타ì¼"},"specialchar":{"options":"íŠ¹ìˆ˜ë¬¸ìž ì˜µì…˜","title":"íŠ¹ìˆ˜ë¬¸ìž ì„ íƒ","toolbar":"íŠ¹ìˆ˜ë¬¸ìž ì‚½ìž…"},"sourcedialog":{"toolbar":"소스","title":"소스"},"sourcearea":{"toolbar":"소스"},"showblocks":{"toolbar":"ë¸”ë¡ ë³´ê¸°"},"removeformat":{"toolbar":"í˜•ì‹ ì§€ìš°ê¸°"},"pastetext":{"button":"í…스트로 붙여넣기","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"í…스트로 붙여넣기"},"pastefromword":{"confirmCleanup":"붙여 ë„£ì„ ë‚´ìš©ì€ MS Wordì—ì„œ 복사 í•œ 것입니다. 붙여 넣기 ì „ì— ì •ë¦¬ í•˜ì‹œê² ìŠµë‹ˆê¹Œ?","error":"내부 오류로 붙여 ë„£ì€ ë°ì´í„°ë¥¼ ì •ë¦¬ í• ìˆ˜ 없습니다.","title":"MS Word ì—ì„œ 붙여넣기","toolbar":"MS Word ì—ì„œ 붙여넣기"},"notification":{"closed":"ì•Œë¦¼ì´ ë‹«íž˜."},"maximize":{"maximize":"최대화","minimize":"최소화"},"magicline":{"title":"ì—¬ê¸°ì— ë‹¨ë½ ì‚½ìž…"},"list":{"bulletedlist":"순서 없는 목ë¡","numberedlist":"순서 있는 목ë¡"},"language":{"button":"언어 ì„¤ì •","remove":"언어 ì„¤ì • 지우기"},"indent":{"indent":"들여쓰기","outdent":"내어쓰기"},"image2":{"alt":"대체 문ìžì—´","btnUpload":"서버로 ì „ì†¡","captioned":"ì´ë¯¸ì§€ 설명 넣기","captionPlaceholder":"설명","infoTab":"ì´ë¯¸ì§€ ì •ë³´","lockRatio":"비율 ìœ ì§€","menu":"ì´ë¯¸ì§€ ì†ì„±","pathName":"ì´ë¯¸ì§€","pathNameCaption":"설명","resetSize":"ì›ëž˜ í¬ê¸°ë¡œ","resizer":"í¬ê¸°ë¥¼ ì¡°ì ˆí•˜ë ¤ë©´ í´ë¦ 후 드래그 하세요","title":"ì´ë¯¸ì§€ ì†ì„±","uploadTab":"업로드","urlMissing":"ì´ë¯¸ì§€ ì›ë³¸ 주소(URL)ê°€ 없습니다.","altMissing":"대체 문ìžê°€ 없습니다."},"horizontalrule":{"toolbar":"가로 줄 삽입"},"format":{"label":"문단","panelTitle":"문단 형ì‹","tag_address":"글쓴ì´","tag_div":"기본 (DIV)","tag_h1":"ì œëª© 1","tag_h2":"ì œëª© 2","tag_h3":"ì œëª© 3","tag_h4":"ì œëª© 4","tag_h5":"ì œëª© 5","tag_h6":"ì œëª© 6","tag_p":"본문","tag_pre":"ì •í˜• 문단"},"filetools":{"loadError":"파ì¼ì„ ì½ëŠ” 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤.","networkError":"íŒŒì¼ ì—…ë¡œë“œ 중 ë„¤íŠ¸ì›Œí¬ ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤.","httpError404":"íŒŒì¼ ì—…ë¡œë“œì¤‘ HTTP 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤ (404: íŒŒì¼ ì°¾ì„수 ì—†ìŒ).","httpError403":"íŒŒì¼ ì—…ë¡œë“œì¤‘ HTTP 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤ (403: 권한 ì—†ìŒ).","httpError":"íŒŒì¼ ì—…ë¡œë“œì¤‘ HTTP 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤ (오류 코드 %1).","noUrlError":"업로드 주소가 ì •ì˜ë˜ì–´ 있지 않습니다.","responseError":"ìž˜ëª»ëœ ì„œë²„ ì‘답."},"elementspath":{"eleLabel":"요소 경로","eleTitle":"%1 요소"},"contextmenu":{"options":"컨í…스트 메뉴 옵션"},"clipboard":{"copy":"복사","copyError":"브ë¼ìš°ì €ì˜ ë³´ì•ˆì„¤ì • ë•Œë¬¸ì— ë³µì‚¬í• ìˆ˜ 없습니다. 키보드(Ctrl/Cmd+C)를 ì´ìš©í•´ì„œ 복사하ì‹ì‹œì˜¤.","cut":"잘ë¼ë‚´ê¸°","cutError":"브ë¼ìš°ì €ì˜ ë³´ì•ˆì„¤ì • ë•Œë¬¸ì— ìž˜ë¼ë‚´ê¸° ê¸°ëŠ¥ì„ ì‹¤í–‰í• ìˆ˜ 없습니다. 키보드(Ctrl/Cmd+X)를 ì´ìš©í•´ì„œ 잘ë¼ë‚´ê¸° 하ì‹ì‹œì˜¤","paste":"붙여넣기","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"붙여넣기 범위","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"ì¸ìš© 단ë½"},"basicstyles":{"bold":"굵게","italic":"기울임꼴","strike":"ì·¨ì†Œì„ ","subscript":"아래 첨ìž","superscript":"위 첨ìž","underline":"밑줄"},"about":{"copy":"ì €ìž‘ê¶Œ © $1 . íŒê¶Œ ì†Œìœ .","dlgTitle":"CKEditor ì— ëŒ€í•˜ì—¬","moreInfo":"ë¼ì´ì„ ìŠ¤ì— ëŒ€í•œ ì •ë³´ëŠ” ì €í¬ ì›¹ 사ì´íŠ¸ë¥¼ ì°¸ê³ í•˜ì„¸ìš”:"},"editor":"리치 í…스트 편집기","editorPanel":"리치 í…스트 편집기 패ë„","common":{"editorHelp":"ë„ì›€ì´ í•„ìš”í•˜ë©´ ALT 0 ì„ ëˆ„ë¥´ì„¸ìš”","browseServer":"서버 íƒìƒ‰","url":"URL","protocol":"í”„ë¡œí† ì½œ","upload":"업로드","uploadSubmit":"서버로 ì „ì†¡","image":"ì´ë¯¸ì§€","form":"í¼","checkbox":"ì²´í¬ ë°•ìŠ¤","radio":"ë¼ë””오 버튼","textField":"í•œ 줄 ìž…ë ¥ 칸","textarea":"여러 줄 ìž…ë ¥ 칸","hiddenField":"ìˆ¨ì€ ìž…ë ¥ 칸","button":"버튼","select":"ì„ íƒ ëª©ë¡","imageButton":"ì´ë¯¸ì§€ 버튼","notSet":"<ì„¤ì • 안 ë¨>","id":"ID","name":"ì´ë¦„","langDir":"언어 ë°©í–¥","langDirLtr":"왼쪽ì—ì„œ 오른쪽 (LTR)","langDirRtl":"오른쪽ì—ì„œ 왼쪽 (RTL)","langCode":"언어 코드","longDescr":"웹 주소 설명","cssClass":"ìŠ¤íƒ€ì¼ ì‹œíŠ¸ í´ëž˜ìŠ¤","advisoryTitle":"ë³´ì¡° ì œëª©","cssStyle":"스타ì¼","ok":"확ì¸","cancel":"취소","close":"닫기","preview":"미리보기","resize":"í¬ê¸° ì¡°ì ˆ","generalTab":"ì¼ë°˜","advancedTab":"ìžì„¸ížˆ","validateNumberFailed":"ì´ ê°’ì€ ìˆ«ìžê°€ 아닙니다.","confirmNewPage":"ì €ìž¥í•˜ì§€ ì•Šì€ ëª¨ë“ ë³€ê²½ì‚¬í•ì€ ìœ ì‹¤ë©ë‹ˆë‹¤. ì •ë§ë¡œ 새로운 페ì´ì§€ë¥¼ ë¶€ë¥´ê² ìŠµë‹ˆê¹Œ?","confirmCancel":"ì¼ë¶€ ì˜µì…˜ì´ ë³€ê²½ ë˜ì—ˆìŠµë‹ˆë‹¤. ì •ë§ë¡œ ì°½ì„ ë‹«ê² ìŠµë‹ˆê¹Œ?","options":"옵션","target":"타겟","targetNew":"새 ì°½ (_blank)","targetTop":"최ìƒìœ„ ì°½ (_top)","targetSelf":"ê°™ì€ ì°½ (_self)","targetParent":"부모 ì°½ (_parent)","langDirLTR":"왼쪽ì—ì„œ 오른쪽 (LTR)","langDirRTL":"오른쪽ì—ì„œ 왼쪽 (RTL)","styles":"스타ì¼","cssClasses":"ìŠ¤íƒ€ì¼ ì‹œíŠ¸ í´ëž˜ìŠ¤","width":"너비","height":"높ì´","align":"ì •ë ¬","left":"왼쪽","right":"오른쪽","center":"중앙","justify":"양쪽 ì •ë ¬","alignLeft":"왼쪽 ì •ë ¬","alignRight":"오른쪽 ì •ë ¬","alignCenter":"중앙 ì •ë ¬","alignTop":"위","alignMiddle":"중간","alignBottom":"아래","alignNone":"기본","invalidValue":"ìž˜ëª»ëœ ê°’.","invalidHeight":"높ì´ëŠ” 숫ìžì—¬ì•¼ 합니다.","invalidWidth":"ë„“ì´ëŠ” 숫ìžì—¬ì•¼ 합니다.","invalidLength":"\"%1\" ê°’ì€ ìœ íš¨í•œ ì¸¡ì •ë‹¨ìœ„(%2)를 í¬í•¨í•˜ê±°ë‚˜ í¬í•¨í•˜ì§€ ì•Šì€ ì–‘ìˆ˜ì—¬ì•¼ 합니다.","invalidCssLength":"\"%1\" ê°’ì€ ìœ íš¨í•œ CSS ì¸¡ì • 단위(px, %, in, cm, mm, em, ex, pt, or pc)를 í¬í•¨í•˜ê±°ë‚˜ í¬í•¨í•˜ì§€ ì•Šì€ ì–‘ìˆ˜ 여야 합니다.","invalidHtmlLength":"\"%1\" ê°’ì€ ìœ íš¨í•œ HTML ì¸¡ì • 단위(px or %)를 í¬í•¨í•˜ê±°ë‚˜ í¬í•¨í•˜ì§€ ì•Šì€ ì–‘ìˆ˜ì—¬ì•¼ 합니다.","invalidInlineStyle":"ì¸ë¼ì¸ 스타ì¼ì— ëª…ì‹œëœ ê°’ì€ ì„¸ë¯¸ì½œë¡ (;)으로 구분ë˜ëŠ” í•œ ìŒ ì´ìƒì˜ \"ì´ë¦„ : ê°’\" 형ì‹ìœ¼ë¡œ 구성ë˜ì–´ì•¼ 합니다.","cssLengthTooltip":"픽셀 ë‹¨ìœ„ì˜ ìˆ«ìžë§Œ ìž…ë ¥í•˜ì‹œê±°ë‚˜ 숫ìžì™€ ìœ íš¨í•œ CSS 단위(px, %, in, cm, mm, em, ex, pt, or pc)를 함께 ìž…ë ¥í•´ì£¼ì„¸ìš”.","unavailable":"%1<span class=\"cke_accessibility\">, 사용불가</span>","keyboard":{"8":"백스페ì´ìŠ¤","13":"엔터","16":"시프트","17":"컨트롤","18":"알트","32":"간격","35":"엔드","36":"홈","46":"딜리트","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"커맨드"},"keyboardShortcut":"키보드 단축키","optionDefault":"기본값"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ku.js b/core/assets/vendor/ckeditor/lang/ku.js index 95bd51683b8d..c22a8f595269 100644 --- a/core/assets/vendor/ckeditor/lang/ku.js +++ b/core/assets/vendor/ckeditor/lang/ku.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ku']={"widget":{"move":"کرتەبکە Ùˆ ڕایبکێشە بۆ جوڵاندن","label":"%1 ویجێت"},"undo":{"redo":"هەڵگەڕاندنەوە","undo":"پووچکردنەوە"},"toolbar":{"toolbarCollapse":"شاردنەوی Ù‡ÛŽÚµÛŒ تووڵامراز","toolbarExpand":"نیشاندانی Ù‡ÛŽÚµÛŒ تووڵامراز","toolbarGroups":{"document":"Ù¾Û•Ú•Ù‡","clipboard":"بڕین/پووچکردنەوە","editing":"چاکسازی","forms":"داڕشتە","basicstyles":"شێوازی بنچینەیی","paragraph":"بڕگە","links":"بەستەر","insert":"خستنە ناو","styles":"شێواز","colors":"ڕەنگەکان","tools":"ئامرازەکان"},"toolbars":"تووڵامرازی دەسکاریکەر"},"table":{"border":"گەورەیی پەراوێز","caption":"سەردێڕ","cell":{"menu":"خانه","insertBefore":"دانانی خانه Ù„Û•Ù¾ÛŽØ´","insertAfter":"دانانی خانه لەپاش","deleteCell":"سڕینەوەی خانه","merge":"تێکەڵکردنی خانە","mergeRight":"تێکەڵکردنی Ù„Û•Ú¯Û•Úµ ڕاست","mergeDown":"تێکەڵکردنی Ù„Û•Ú¯Û•Úµ خوارەوە","splitHorizontal":"دابەشکردنی خانەی ئاسۆیی","splitVertical":"دابەشکردنی خانەی ئەستونی","title":"خاسیەتی خانه","cellType":"جۆری خانه","rowSpan":"ماوەی نێوان ڕیز","colSpan":"بستی ئەستونی","wordWrap":"پێچانەوەی وشە","hAlign":"ڕیزکردنی ئاسۆیی","vAlign":"ڕیزکردنی ئەستونی","alignBaseline":"هێڵەبنەڕەت","bgColor":"Ú•Û•Ù†Ú¯ÛŒ پاشبنەما","borderColor":"Ú•Û•Ù†Ú¯ÛŒ پەراوێز","data":"داتا","header":"سەرپەڕه","yes":"بەڵێ","no":"نەخێر","invalidWidth":"پانی خانه دەبێت بەتەواوی ژماره بێت.","invalidHeight":"درێژی خانه بەتەواوی دەبێت ژمارە بێت.","invalidRowSpan":"ماوەی نێوان ڕیز بەتەواوی دەبێت ژمارە بێت.","invalidColSpan":"ماوەی نێوان ئەستونی بەتەواوی دەبێت ژمارە بێت.","chooseColor":"هەڵبژێرە"},"cellPad":"بۆشایی ناوپۆش","cellSpace":"بۆشایی خانه","column":{"menu":"ئەستون","insertBefore":"دانانی ئەستون Ù„Û•Ù¾ÛŽØ´","insertAfter":"دانانی ئەستوون لەپاش","deleteColumn":"سڕینەوەی ئەستوون"},"columns":"ستوونەکان","deleteTable":"سڕینەوەی خشتە","headers":"سەرپەڕه","headersBoth":"هەردووك","headersColumn":"یەکەم ئەستوون","headersNone":"هیچ","headersRow":"یەکەم ڕیز","heightUnit":"یەکەی بەرز","invalidBorder":"ژمارەی پەراوێز دەبێت تەنها ژماره بێت.","invalidCellPadding":"ناوپۆشی خانه دەبێت ژمارەکی درووست بێت.","invalidCellSpacing":"بۆشایی خانه دەبێت ژمارەکی درووست بێت.","invalidCols":"ژمارەی ئەستوونی دەبێت گەورەتر بێت لەژمارەی 0.","invalidHeight":"درێژی خشته دهبێت تهنها ژماره بێت.","invalidRows":"ژمارەی ڕیز دەبێت گەورەتر بێت لەژمارەی 0.","invalidWidth":"پانی خشته دەبێت تەنها ژماره بێت.","menu":"خاسیەتی خشتە","row":{"menu":"ڕیز","insertBefore":"دانانی ڕیز Ù„Û•Ù¾ÛŽØ´","insertAfter":"دانانی ڕیز لەپاش","deleteRow":"سڕینەوەی ڕیز"},"rows":"ڕیز","summary":"کورتە","title":"خاسیەتی خشتە","toolbar":"خشتە","widthPc":"لەسەدا","widthPx":"وێنەخاڵ - پیکسل","widthUnit":"پانی یەکە"},"stylescombo":{"label":"شێواز","panelTitle":"شێوازی ڕازاندنەوە","panelTitle1":"شێوازی خشت","panelTitle2":"شێوازی ناوهێڵ","panelTitle3":"شێوازی بەرکار"},"specialchar":{"options":"هەڵبژاردەی نووسەی تایبەتی","title":"هەڵبژاردنی نووسەی تایبەتی","toolbar":"دانانی نووسەی تایبەتی"},"sourcedialog":{"toolbar":"سەرچاوە","title":"سەرچاوە"},"sourcearea":{"toolbar":"سەرچاوە"},"showblocks":{"toolbar":"نیشاندانی بەربەستەکان"},"removeformat":{"toolbar":"لابردنی داڕشتەکە"},"pastetext":{"button":"لکاندنی ÙˆÛ•Ùƒ دەقی ڕوون","pasteNotification":"کلیک بکە لەسەر %1 بۆ لکاندنی. وێبگەڕەکەت پشتیوانی لکاندن ناکات بە دوگمەی تولامراز یان ئامرازی ناوەڕۆکی لیستە - کلیکی دەستی ڕاست","title":"لکاندنی ÙˆÛ•Ùƒ دەقی ڕوون"},"pastefromword":{"confirmCleanup":"ئەم دەقەی بەتەمای بیلکێنی پێدەچێت له word هێنرابێت. دەتەوێت پاکی بکەیوه Ù¾ÛŽØ´ ئەوەی بیلکێنی؟","error":"هیچ ڕێگەیەك نەبوو لەلکاندنی دەقەکه بەهۆی هەڵەیەکی ناوەخۆیی","title":"لکاندنی لەلایەن Word","toolbar":"لکاندنی Ù„Û•Ú•ÛŽÛŒ Word"},"notification":{"closed":"ئاگادارکەرەوەکە داخرا."},"maximize":{"maximize":"ئەوپەڕی گەورەیی","minimize":"ئەوپەڕی بچووکی"},"magicline":{"title":"بڕگە لێرە دابنێ"},"list":{"bulletedlist":"دانان/لابردنی خاڵی لیست","numberedlist":"دانان/لابردنی ژمارەی لیست"},"language":{"button":"جێگیرکردنی زمان","remove":"لابردنی زمان"},"indent":{"indent":"زیادکردنی بۆشایی","outdent":"کەمکردنەوەی بۆشایی"},"image2":{"alt":"جێگرەوەی دەق","btnUpload":"ناردنی بۆ ڕاژه","captioned":"ÙˆÛŽÙ†Û•ÛŒ بەسەردێر","captionPlaceholder":"سەردێر","infoTab":"زانیاری وێنه","lockRatio":"داخستنی Ú•ÛŽÚ˜Ù‡","menu":"خاسیەتی وێنه","pathName":"ÙˆÛŽÙ†Û•","pathNameCaption":"سەردێر","resetSize":"ڕێکخستنەوەی قەباره","resizer":"کرتەبکە Ùˆ ڕایبکێشە بۆ قەبارە گۆڕین","title":"خاسیەتی وێنه","uploadTab":"بارکردن","urlMissing":"سەرچاوەی بەستەری وێنه بزره","altMissing":"جێگرەوەی دەق لەدەست چووە."},"horizontalrule":{"toolbar":"دانانی Ù‡ÛŽÙ„ÛŒ ئاسۆیی"},"format":{"label":"ڕازاندنەوە","panelTitle":"بەشی ڕازاندنەوه","tag_address":"ناونیشان","tag_div":"(DIV)-ÛŒ ئاسایی","tag_h1":"سەرنووسەی Ù¡","tag_h2":"سەرنووسەی Ù¢","tag_h3":"سەرنووسەی Ù£","tag_h4":"سەرنووسەی Ù¤","tag_h5":"سەرنووسەی Ù¥","tag_h6":"سەرنووسەی Ù¦","tag_p":"ئاسایی","tag_pre":"شێوازکراو"},"filetools":{"loadError":"هەڵەیەک ڕوویدا Ù„Û• ماوەی خوێندنەوەی Ù¾Û•Ú•Ú¯Û•Ú©Û•.","networkError":"هەڵەیەکی ڕایەڵە ڕوویدا Ù„Û• ماوەی بارکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û•.","httpError404":"هەڵەیەک ڕوویدا Ù„Û• ماوەی بارکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û• (404: Ù¾Û•Ú•Ú¯Û•Ú©Û• نەدۆزراوە).","httpError403":"هەڵەیەک ڕوویدا Ù„Û• ماوەی بارکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û• (403: قەدەغەکراو).","httpError":"هەڵەیەک ڕوویدا Ù„Û• ماوەی بارکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û• (دۆخی Ù‡Û•ÚµÛ•: %1).","noUrlError":"بەستەری Ù¾Û•Ú•Ú¯Û•Ú©Û• پێناسە نەکراوە.","responseError":"وەڵامێکی نادروستی سێرڤەر."},"elementspath":{"eleLabel":"Ú•ÛŽÚ•Û•ÙˆÛŒ توخمەکان","eleTitle":"%1 توخم"},"contextmenu":{"options":"هەڵبژاردەی لیستەی کلیکی دەستی ڕاست"},"clipboard":{"copy":"لەبەرگرتنەوە","copyError":"پارێزی وێبگەڕەکەت ڕێگەنادات بەسەرنووسەکە Ù„Û• لکاندنی دەقی خۆکارارنە. تکایە لەبری ئەمە ئەم Ùەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+C).","cut":"بڕین","cutError":"پارێزی وێبگەڕەکەت ڕێگەنادات بە سەرنووسەکە لەبڕینی خۆکارانە. تکایە لەبری ئەمە ئەم Ùەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+X).","paste":"لکاندن","pasteNotification":"کلیک بکە لەسەر %1 بۆ لکاندنی. وێبگەڕەکەت پشتیوانی لکاندن ناکات بە دوگمەی تولامراز یان ئامرازی ناوەڕۆکی لیستە - کلیکی دەستی ڕاست. ","pasteArea":"ناوچەی لکاندن","pasteMsg":"ناوەڕۆکەکەت Ù„Û•Ù… پانتایی خوارەوە بلکێنە"},"blockquote":{"toolbar":"بەربەستکردنی ووتەی وەرگیراو"},"basicstyles":{"bold":"Ù‚Û•ÚµÛ•Ùˆ","italic":"لار","strike":"لێدان","subscript":"ژێرنووس","superscript":"سەرنووس","underline":"ژێرهێڵ"},"about":{"copy":"ماÙÛŒ لەبەرگەرتنەوەی © $1. گشتی پارێزراوه. ورگێڕانی بۆ کوردی لەلایەن Ù‡Û†Ú˜Û• کۆیی.","dlgTitle":"دەربارەی CKEditor 4","moreInfo":"بۆ زانیاری زیاتر دەربارەی مۆڵەتی بەکارهێنان، تکایه سەردانی ماڵپەڕەکەمان بکه:"},"editor":"سەرنووسەی دەقی تەواو","editorPanel":"بڕگەی سەرنووسەی دەقی تەواو","common":{"editorHelp":"کلیکی ALT Ù„Û•Ú¯Û•Úµ 0 بکه‌ بۆ یارمەتی","browseServer":"هێنانی ڕاژە","url":"ناونیشانی بەستەر","protocol":"پڕۆتۆکۆڵ","upload":"بارکردن","uploadSubmit":"ناردنی بۆ ڕاژە","image":"ÙˆÛŽÙ†Û•","flash":"Ùلاش","form":"داڕشتە","checkbox":"خانەی نیشانکردن","radio":"جێگرەوەی دوگمە","textField":"خانەی دەق","textarea":"ڕووبەری دەق","hiddenField":"شاردنەوی خانە","button":"دوگمە","select":"هەڵبژاردەی خانە","imageButton":"دوگمەی ÙˆÛŽÙ†Û•","notSet":"<هیچ دانەدراوە>","id":"ناسنامە","name":"ناو","langDir":"ئاراستەی زمان","langDirLtr":"Ú†Û•Ù¾ بۆ ڕاست (LTR)","langDirRtl":"ڕاست بۆ Ú†Û•Ù¾ (RTL)","langCode":"هێمای زمان","longDescr":"پێناسەی درێژی بەستەر","cssClass":"شێوازی چینی په‌ڕە","advisoryTitle":"ڕاوێژکاری سەردێڕ","cssStyle":"شێواز","ok":"باشە","cancel":"پاشگەزبوونەوە","close":"داخستن","preview":"پێشبینین","resize":"گۆڕینی ئەندازە","generalTab":"گشتی","advancedTab":"پەرەسەندوو","validateNumberFailed":"ئەم نرخە ژمارە نیە، تکایە نرخێکی ژمارە بنووسە.","confirmNewPage":"سەرجەم گۆڕانکاریەکان Ùˆ پێکهاتەکانی ناووەوە لەدەست دەدەی گەر بێتوو پاشکەوتی Ù†Û•Ú©Û•ÛŒ یەکەم جار، تۆ هەر دڵنیایی لەکردنەوەی پەنجەرەکی نوێ؟","confirmCancel":"هەندێك هەڵبژاردە گۆڕدراوە. تۆ دڵنیایی Ù„Û• داخستنی ئەم دیالۆگە؟","options":"هەڵبژاردەکان","target":"ئامانج","targetNew":"پەنجەرەیەکی نوێ (_blank)","targetTop":"لووتکەی پەنجەرە (_top)","targetSelf":"لەهەمان پەنجەرە (_self)","targetParent":"پەنجەرەی باوان (_parent)","langDirLTR":"Ú†Û•Ù¾ بۆ ڕاست (LTR)","langDirRTL":"ڕاست بۆ Ú†Û•Ù¾ (RTL)","styles":"شێواز","cssClasses":"شێوازی چینی Ù¾Û•Ú•Û•","width":"پانی","height":"درێژی","align":"ڕێککەرەوە","left":"Ú†Û•Ù¾","right":"ڕاست","center":"ناوەڕاست","justify":"هاوستوونی","alignLeft":"بەهێڵ کردنی Ú†Û•Ù¾","alignRight":"بەهێڵ کردنی ڕاست","alignCenter":"بەهێڵ کردنی ناوەڕاست","alignTop":"سەرەوە","alignMiddle":"ناوەند","alignBottom":"ژێرەوە","alignNone":"هیچ","invalidValue":"نرخێکی نادرووست.","invalidHeight":"درێژی دەبێت ژمارە بێت.","invalidWidth":"پانی دەبێت ژمارە بێت.","invalidLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست Ù„Û•Ú¯Û•Úµ بێت یان بە بێ پێوانەی یەکەی ( %2)","invalidCssLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی (px, %, in, cm, mm, em, ex, pt, یان pc).","invalidHtmlLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی HTML (px یان %).","invalidInlineStyle":"دانەی نرخی شێوازی ناوهێڵ دەبێت پێکهاتبێت لەیەك یان زیاتری داڕشتە \"ناو : نرخ\", جیاکردنەوەی بە Ùاریزە Ùˆ خاڵ","cssLengthTooltip":"ژمارەیەك بنووسه‌ بۆ نرخی piksel یان ئامرازێکی درووستی CSS (px, %, in, cm, mm, em, ex, pt, یان pc).","unavailable":"%1<span class=\"cke_accessibility\">, ئامادە نیە</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Ùەرمان"},"keyboardShortcut":"کورتبڕی تەختەکلیل","optionDefault":"هەمیشەیی"}}; \ No newline at end of file +CKEDITOR.lang['ku']={"widget":{"move":"کرتەبکە Ùˆ ڕایبکێشە بۆ جوڵاندن","label":"%1 ویجێت"},"undo":{"redo":"هەڵگەڕاندنەوە","undo":"پووچکردنەوە"},"toolbar":{"toolbarCollapse":"شاردنەوی Ù‡ÛŽÚµÛŒ تووڵامراز","toolbarExpand":"نیشاندانی Ù‡ÛŽÚµÛŒ تووڵامراز","toolbarGroups":{"document":"Ù¾Û•Ú•Ù‡","clipboard":"بڕین/پووچکردنەوە","editing":"چاکسازی","forms":"داڕشتە","basicstyles":"شێوازی بنچینەیی","paragraph":"بڕگە","links":"بەستەر","insert":"خستنە ناو","styles":"شێواز","colors":"ڕەنگەکان","tools":"ئامرازەکان"},"toolbars":"تووڵامرازی دەسکاریکەر"},"table":{"border":"گەورەیی پەراوێز","caption":"سەردێڕ","cell":{"menu":"خانه","insertBefore":"دانانی خانه Ù„Û•Ù¾ÛŽØ´","insertAfter":"دانانی خانه لەپاش","deleteCell":"سڕینەوەی خانه","merge":"تێکەڵکردنی خانە","mergeRight":"تێکەڵکردنی Ù„Û•Ú¯Û•Úµ ڕاست","mergeDown":"تێکەڵکردنی Ù„Û•Ú¯Û•Úµ خوارەوە","splitHorizontal":"دابەشکردنی خانەی ئاسۆیی","splitVertical":"دابەشکردنی خانەی ئەستونی","title":"خاسیەتی خانه","cellType":"جۆری خانه","rowSpan":"ماوەی نێوان ڕیز","colSpan":"بستی ئەستونی","wordWrap":"پێچانەوەی وشە","hAlign":"ڕیزکردنی ئاسۆیی","vAlign":"ڕیزکردنی ئەستونی","alignBaseline":"هێڵەبنەڕەت","bgColor":"Ú•Û•Ù†Ú¯ÛŒ پاشبنەما","borderColor":"Ú•Û•Ù†Ú¯ÛŒ پەراوێز","data":"داتا","header":"سەرپەڕه","yes":"بەڵێ","no":"نەخێر","invalidWidth":"پانی خانه دەبێت بەتەواوی ژماره بێت.","invalidHeight":"درێژی خانه بەتەواوی دەبێت ژمارە بێت.","invalidRowSpan":"ماوەی نێوان ڕیز بەتەواوی دەبێت ژمارە بێت.","invalidColSpan":"ماوەی نێوان ئەستونی بەتەواوی دەبێت ژمارە بێت.","chooseColor":"هەڵبژێرە"},"cellPad":"بۆشایی ناوپۆش","cellSpace":"بۆشایی خانه","column":{"menu":"ئەستون","insertBefore":"دانانی ئەستون Ù„Û•Ù¾ÛŽØ´","insertAfter":"دانانی ئەستوون لەپاش","deleteColumn":"سڕینەوەی ئەستوون"},"columns":"ستوونەکان","deleteTable":"سڕینەوەی خشتە","headers":"سەرپەڕه","headersBoth":"هەردووك","headersColumn":"یەکەم ئەستوون","headersNone":"هیچ","headersRow":"یەکەم ڕیز","heightUnit":"یەکەی بەرز","invalidBorder":"ژمارەی پەراوێز دەبێت تەنها ژماره بێت.","invalidCellPadding":"ناوپۆشی خانه دەبێت ژمارەکی درووست بێت.","invalidCellSpacing":"بۆشایی خانه دەبێت ژمارەکی درووست بێت.","invalidCols":"ژمارەی ئەستوونی دەبێت گەورەتر بێت لەژمارەی 0.","invalidHeight":"درێژی خشته دهبێت تهنها ژماره بێت.","invalidRows":"ژمارەی ڕیز دەبێت گەورەتر بێت لەژمارەی 0.","invalidWidth":"پانی خشته دەبێت تەنها ژماره بێت.","menu":"خاسیەتی خشتە","row":{"menu":"ڕیز","insertBefore":"دانانی ڕیز Ù„Û•Ù¾ÛŽØ´","insertAfter":"دانانی ڕیز لەپاش","deleteRow":"سڕینەوەی ڕیز"},"rows":"ڕیز","summary":"کورتە","title":"خاسیەتی خشتە","toolbar":"خشتە","widthPc":"لەسەدا","widthPx":"وێنەخاڵ - پیکسل","widthUnit":"پانی یەکە"},"stylescombo":{"label":"شێواز","panelTitle":"شێوازی ڕازاندنەوە","panelTitle1":"شێوازی خشت","panelTitle2":"شێوازی ناوهێڵ","panelTitle3":"شێوازی بەرکار"},"specialchar":{"options":"هەڵبژاردەی نووسەی تایبەتی","title":"هەڵبژاردنی نووسەی تایبەتی","toolbar":"دانانی نووسەی تایبەتی"},"sourcedialog":{"toolbar":"سەرچاوە","title":"سەرچاوە"},"sourcearea":{"toolbar":"سەرچاوە"},"showblocks":{"toolbar":"نیشاندانی بەربەستەکان"},"removeformat":{"toolbar":"لابردنی داڕشتەکە"},"pastetext":{"button":"لکاندنی ÙˆÛ•Ùƒ دەقی ڕوون","pasteNotification":"کلیک بکە لەسەر %1 بۆ لکاندنی. وێبگەڕەکەت پشتیوانی لکاندن ناکات بە دوگمەی تولامراز یان ئامرازی ناوەڕۆکی لیستە - کلیکی دەستی ڕاست","title":"لکاندنی ÙˆÛ•Ùƒ دەقی ڕوون"},"pastefromword":{"confirmCleanup":"ئەم دەقەی بەتەمای بیلکێنی پێدەچێت له word هێنرابێت. دەتەوێت پاکی بکەیوه Ù¾ÛŽØ´ ئەوەی بیلکێنی؟","error":"هیچ ڕێگەیەك نەبوو لەلکاندنی دەقەکه بەهۆی هەڵەیەکی ناوەخۆیی","title":"لکاندنی لەلایەن Word","toolbar":"لکاندنی Ù„Û•Ú•ÛŽÛŒ Word"},"notification":{"closed":"ئاگادارکەرەوەکە داخرا."},"maximize":{"maximize":"ئەوپەڕی گەورەیی","minimize":"ئەوپەڕی بچووکی"},"magicline":{"title":"بڕگە لێرە دابنێ"},"list":{"bulletedlist":"دانان/لابردنی خاڵی لیست","numberedlist":"دانان/لابردنی ژمارەی لیست"},"language":{"button":"جێگیرکردنی زمان","remove":"لابردنی زمان"},"indent":{"indent":"زیادکردنی بۆشایی","outdent":"کەمکردنەوەی بۆشایی"},"image2":{"alt":"جێگرەوەی دەق","btnUpload":"ناردنی بۆ ڕاژه","captioned":"ÙˆÛŽÙ†Û•ÛŒ بەسەردێر","captionPlaceholder":"سەردێر","infoTab":"زانیاری وێنه","lockRatio":"داخستنی Ú•ÛŽÚ˜Ù‡","menu":"خاسیەتی وێنه","pathName":"ÙˆÛŽÙ†Û•","pathNameCaption":"سەردێر","resetSize":"ڕێکخستنەوەی قەباره","resizer":"کرتەبکە Ùˆ ڕایبکێشە بۆ قەبارە گۆڕین","title":"خاسیەتی وێنه","uploadTab":"بارکردن","urlMissing":"سەرچاوەی بەستەری وێنه بزره","altMissing":"جێگرەوەی دەق لەدەست چووە."},"horizontalrule":{"toolbar":"دانانی Ù‡ÛŽÙ„ÛŒ ئاسۆیی"},"format":{"label":"ڕازاندنەوە","panelTitle":"بەشی ڕازاندنەوه","tag_address":"ناونیشان","tag_div":"(DIV)-ÛŒ ئاسایی","tag_h1":"سەرنووسەی Ù¡","tag_h2":"سەرنووسەی Ù¢","tag_h3":"سەرنووسەی Ù£","tag_h4":"سەرنووسەی Ù¤","tag_h5":"سەرنووسەی Ù¥","tag_h6":"سەرنووسەی Ù¦","tag_p":"ئاسایی","tag_pre":"شێوازکراو"},"filetools":{"loadError":"هەڵەیەک ڕوویدا Ù„Û• ماوەی خوێندنەوەی Ù¾Û•Ú•Ú¯Û•Ú©Û•.","networkError":"هەڵەیەکی ڕایەڵە ڕوویدا Ù„Û• ماوەی بارکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û•.","httpError404":"هەڵەیەک ڕوویدا Ù„Û• ماوەی بارکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û• (404: Ù¾Û•Ú•Ú¯Û•Ú©Û• نەدۆزراوە).","httpError403":"هەڵەیەک ڕوویدا Ù„Û• ماوەی بارکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û• (403: قەدەغەکراو).","httpError":"هەڵەیەک ڕوویدا Ù„Û• ماوەی بارکردنی Ù¾Û•Ú•Ú¯Û•Ú©Û• (دۆخی Ù‡Û•ÚµÛ•: %1).","noUrlError":"بەستەری Ù¾Û•Ú•Ú¯Û•Ú©Û• پێناسە نەکراوە.","responseError":"وەڵامێکی نادروستی سێرڤەر."},"elementspath":{"eleLabel":"Ú•ÛŽÚ•Û•ÙˆÛŒ توخمەکان","eleTitle":"%1 توخم"},"contextmenu":{"options":"هەڵبژاردەی لیستەی کلیکی دەستی ڕاست"},"clipboard":{"copy":"لەبەرگرتنەوە","copyError":"پارێزی وێبگەڕەکەت ڕێگەنادات بەسەرنووسەکە Ù„Û• لکاندنی دەقی خۆکارارنە. تکایە لەبری ئەمە ئەم Ùەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+C).","cut":"بڕین","cutError":"پارێزی وێبگەڕەکەت ڕێگەنادات بە سەرنووسەکە لەبڕینی خۆکارانە. تکایە لەبری ئەمە ئەم Ùەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+X).","paste":"لکاندن","pasteNotification":"کلیک بکە لەسەر %1 بۆ لکاندنی. وێبگەڕەکەت پشتیوانی لکاندن ناکات بە دوگمەی تولامراز یان ئامرازی ناوەڕۆکی لیستە - کلیکی دەستی ڕاست. ","pasteArea":"ناوچەی لکاندن","pasteMsg":"ناوەڕۆکەکەت Ù„Û•Ù… پانتایی خوارەوە بلکێنە","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"بەربەستکردنی ووتەی وەرگیراو"},"basicstyles":{"bold":"Ù‚Û•ÚµÛ•Ùˆ","italic":"لار","strike":"لێدان","subscript":"ژێرنووس","superscript":"سەرنووس","underline":"ژێرهێڵ"},"about":{"copy":"ماÙÛŒ لەبەرگەرتنەوەی © $1. گشتی پارێزراوه. ورگێڕانی بۆ کوردی لەلایەن Ù‡Û†Ú˜Û• کۆیی.","dlgTitle":"دەربارەی CKEditor 4","moreInfo":"بۆ زانیاری زیاتر دەربارەی مۆڵەتی بەکارهێنان، تکایه سەردانی ماڵپەڕەکەمان بکه:"},"editor":"سەرنووسەی دەقی تەواو","editorPanel":"بڕگەی سەرنووسەی دەقی تەواو","common":{"editorHelp":"کلیکی ALT Ù„Û•Ú¯Û•Úµ 0 بکه‌ بۆ یارمەتی","browseServer":"هێنانی ڕاژە","url":"ناونیشانی بەستەر","protocol":"پڕۆتۆکۆڵ","upload":"بارکردن","uploadSubmit":"ناردنی بۆ ڕاژە","image":"ÙˆÛŽÙ†Û•","form":"داڕشتە","checkbox":"خانەی نیشانکردن","radio":"جێگرەوەی دوگمە","textField":"خانەی دەق","textarea":"ڕووبەری دەق","hiddenField":"شاردنەوی خانە","button":"دوگمە","select":"هەڵبژاردەی خانە","imageButton":"دوگمەی ÙˆÛŽÙ†Û•","notSet":"<هیچ دانەدراوە>","id":"ناسنامە","name":"ناو","langDir":"ئاراستەی زمان","langDirLtr":"Ú†Û•Ù¾ بۆ ڕاست (LTR)","langDirRtl":"ڕاست بۆ Ú†Û•Ù¾ (RTL)","langCode":"هێمای زمان","longDescr":"پێناسەی درێژی بەستەر","cssClass":"شێوازی چینی په‌ڕە","advisoryTitle":"ڕاوێژکاری سەردێڕ","cssStyle":"شێواز","ok":"باشە","cancel":"پاشگەزبوونەوە","close":"داخستن","preview":"پێشبینین","resize":"گۆڕینی ئەندازە","generalTab":"گشتی","advancedTab":"پەرەسەندوو","validateNumberFailed":"ئەم نرخە ژمارە نیە، تکایە نرخێکی ژمارە بنووسە.","confirmNewPage":"سەرجەم گۆڕانکاریەکان Ùˆ پێکهاتەکانی ناووەوە لەدەست دەدەی گەر بێتوو پاشکەوتی Ù†Û•Ú©Û•ÛŒ یەکەم جار، تۆ هەر دڵنیایی لەکردنەوەی پەنجەرەکی نوێ؟","confirmCancel":"هەندێك هەڵبژاردە گۆڕدراوە. تۆ دڵنیایی Ù„Û• داخستنی ئەم دیالۆگە؟","options":"هەڵبژاردەکان","target":"ئامانج","targetNew":"پەنجەرەیەکی نوێ (_blank)","targetTop":"لووتکەی پەنجەرە (_top)","targetSelf":"لەهەمان پەنجەرە (_self)","targetParent":"پەنجەرەی باوان (_parent)","langDirLTR":"Ú†Û•Ù¾ بۆ ڕاست (LTR)","langDirRTL":"ڕاست بۆ Ú†Û•Ù¾ (RTL)","styles":"شێواز","cssClasses":"شێوازی چینی Ù¾Û•Ú•Û•","width":"پانی","height":"درێژی","align":"ڕێککەرەوە","left":"Ú†Û•Ù¾","right":"ڕاست","center":"ناوەڕاست","justify":"هاوستوونی","alignLeft":"بەهێڵ کردنی Ú†Û•Ù¾","alignRight":"بەهێڵ کردنی ڕاست","alignCenter":"بەهێڵ کردنی ناوەڕاست","alignTop":"سەرەوە","alignMiddle":"ناوەند","alignBottom":"ژێرەوە","alignNone":"هیچ","invalidValue":"نرخێکی نادرووست.","invalidHeight":"درێژی دەبێت ژمارە بێت.","invalidWidth":"پانی دەبێت ژمارە بێت.","invalidLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست Ù„Û•Ú¯Û•Úµ بێت یان بە بێ پێوانەی یەکەی ( %2)","invalidCssLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی (px, %, in, cm, mm, em, ex, pt, یان pc).","invalidHtmlLength":"ئەم نرخەی دراوە بۆ خانەی \"%1\" دەبێت ژمارەکی درووست بێت یان بێ ناونیشانی ئامرازی HTML (px یان %).","invalidInlineStyle":"دانەی نرخی شێوازی ناوهێڵ دەبێت پێکهاتبێت لەیەك یان زیاتری داڕشتە \"ناو : نرخ\", جیاکردنەوەی بە Ùاریزە Ùˆ خاڵ","cssLengthTooltip":"ژمارەیەك بنووسه‌ بۆ نرخی piksel یان ئامرازێکی درووستی CSS (px, %, in, cm, mm, em, ex, pt, یان pc).","unavailable":"%1<span class=\"cke_accessibility\">, ئامادە نیە</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Ùەرمان"},"keyboardShortcut":"کورتبڕی تەختەکلیل","optionDefault":"هەمیشەیی"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/lt.js b/core/assets/vendor/ckeditor/lang/lt.js index 0b1c65d2c8cd..efebb03917c1 100644 --- a/core/assets/vendor/ckeditor/lang/lt.js +++ b/core/assets/vendor/ckeditor/lang/lt.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['lt']={"widget":{"move":"Paspauskite ir tempkite kad perkeltumÄ—te","label":"%1 valdiklis"},"undo":{"redo":"Atstatyti","undo":"AtÅ¡aukti"},"toolbar":{"toolbarCollapse":"Apjungti įrankių juostÄ…","toolbarExpand":"IÅ¡plÄ—sti įrankių juostÄ…","toolbarGroups":{"document":"Dokumentas","clipboard":"AtmintinÄ—/Atgal","editing":"Redagavimas","forms":"Formos","basicstyles":"Pagrindiniai stiliai","paragraph":"Paragrafas","links":"Nuorodos","insert":"Ä®terpti","styles":"Stiliai","colors":"Spalvos","tools":"Ä®rankiai"},"toolbars":"Redaktoriaus įrankiai"},"table":{"border":"RÄ—melio dydis","caption":"AntraÅ¡tÄ—","cell":{"menu":"Langelis","insertBefore":"Ä®terpti langelį prieÅ¡","insertAfter":"Ä®terpti langelį po","deleteCell":"Å alinti langelius","merge":"Sujungti langelius","mergeRight":"Sujungti su deÅ¡ine","mergeDown":"Sujungti su apaÄia","splitHorizontal":"Skaidyti langelį horizontaliai","splitVertical":"Skaidyti langelį vertikaliai","title":"Cell nustatymai","cellType":"Cell rÅ«Å¡is","rowSpan":"EiluÄių Span","colSpan":"Stulpelių Span","wordWrap":"Sutraukti raides","hAlign":"Horizontalus lygiavimas","vAlign":"Vertikalus lygiavimas","alignBaseline":"ApatinÄ— linija","bgColor":"Fono spalva","borderColor":"RÄ—melio spalva","data":"Data","header":"AntraÅ¡tÄ—","yes":"Taip","no":"Ne","invalidWidth":"ReikÅ¡mÄ— turi bÅ«ti skaiÄius.","invalidHeight":"ReikÅ¡mÄ— turi bÅ«ti skaiÄius.","invalidRowSpan":"ReikÅ¡mÄ— turi bÅ«ti skaiÄius.","invalidColSpan":"ReikÅ¡mÄ— turi bÅ«ti skaiÄius.","chooseColor":"Pasirinkite"},"cellPad":"Tarpas nuo langelio rÄ—mo iki teksto","cellSpace":"Tarpas tarp langelių","column":{"menu":"Stulpelis","insertBefore":"Ä®terpti stulpelį prieÅ¡","insertAfter":"Ä®terpti stulpelį po","deleteColumn":"Å alinti stulpelius"},"columns":"Stulpeliai","deleteTable":"Å alinti lentelÄ™","headers":"AntraÅ¡tÄ—s","headersBoth":"Abu","headersColumn":"Pirmas stulpelis","headersNone":"NÄ—ra","headersRow":"Pirma eilutÄ—","heightUnit":"height unit","invalidBorder":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","invalidCellPadding":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","invalidCellSpacing":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","invalidCols":"SkaiÄius turi bÅ«ti didesnis nei 0.","invalidHeight":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","invalidRows":"SkaiÄius turi bÅ«ti didesnis nei 0.","invalidWidth":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","menu":"LentelÄ—s savybÄ—s","row":{"menu":"EilutÄ—","insertBefore":"Ä®terpti eilutÄ™ prieÅ¡","insertAfter":"Ä®terpti eilutÄ™ po","deleteRow":"Å alinti eilutes"},"rows":"EilutÄ—s","summary":"Santrauka","title":"LentelÄ—s savybÄ—s","toolbar":"LentelÄ—","widthPc":"procentais","widthPx":"taÅ¡kais","widthUnit":"ploÄio vienetas"},"stylescombo":{"label":"Stilius","panelTitle":"Stilių formatavimas","panelTitle1":"Blokų stiliai","panelTitle2":"Vidiniai stiliai","panelTitle3":"Objektų stiliai"},"specialchar":{"options":"Specialaus simbolio nustatymai","title":"Pasirinkite specialų simbolį","toolbar":"Ä®terpti specialų simbolį"},"sourcedialog":{"toolbar":"Å altinis","title":"Å altinis"},"sourcearea":{"toolbar":"Å altinis"},"showblocks":{"toolbar":"Rodyti blokus"},"removeformat":{"toolbar":"Panaikinti formatÄ…"},"pastetext":{"button":"Ä®dÄ—ti kaip grynÄ… tekstÄ…","pasteNotification":"Spauskite %1 kad įklijuotumÄ—te. JÅ«sų narÅ¡yklÄ— nepalaiko įklijavimo mygtuko arba kontekstinio meniu Å¡iam veiksmui.","title":"Ä®dÄ—ti kaip grynÄ… tekstÄ…"},"pastefromword":{"confirmCleanup":"Tekstas, kurį įkeliate yra kopijuojamas iÅ¡ Word. Ar norite jį iÅ¡valyti prieÅ¡ įkeliant?","error":"DÄ—l vidinių sutrikimų, nepavyko iÅ¡valyti įkeliamo teksto","title":"Ä®dÄ—ti iÅ¡ Word","toolbar":"Ä®dÄ—ti iÅ¡ Word"},"notification":{"closed":"PraneÅ¡imas uždarytas."},"maximize":{"maximize":"IÅ¡didinti","minimize":"Sumažinti"},"magicline":{"title":"Ä®terpti pastraipÄ… Äia"},"list":{"bulletedlist":"Suženklintas sÄ…raÅ¡as","numberedlist":"Numeruotas sÄ…raÅ¡as"},"language":{"button":"Nustatyti kalbÄ…","remove":"PaÅ¡alinti kalbÄ…"},"indent":{"indent":"Padidinti įtraukÄ…","outdent":"Sumažinti įtraukÄ…"},"image2":{"alt":"Alternatyvus Tekstas","btnUpload":"Siųsti į serverį","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Vaizdo informacija","lockRatio":"IÅ¡laikyti proporcijÄ…","menu":"Vaizdo savybÄ—s","pathName":"image","pathNameCaption":"caption","resetSize":"Atstatyti dydį","resizer":"Click and drag to resize","title":"Vaizdo savybÄ—s","uploadTab":"Siųsti","urlMissing":"Paveiksliuko nuorodos nÄ—ra.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Ä®terpti horizontaliÄ… linijÄ…"},"format":{"label":"Å rifto formatas","panelTitle":"Å rifto formatas","tag_address":"Kreipinio","tag_div":"Normalus (DIV)","tag_h1":"AntraÅ¡tinis 1","tag_h2":"AntraÅ¡tinis 2","tag_h3":"AntraÅ¡tinis 3","tag_h4":"AntraÅ¡tinis 4","tag_h5":"AntraÅ¡tinis 5","tag_h6":"AntraÅ¡tinis 6","tag_p":"Normalus","tag_pre":"Formuotas"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elemento kelias","eleTitle":"%1 elementas"},"contextmenu":{"options":"Kontekstinio meniu parametrai"},"clipboard":{"copy":"Kopijuoti","copyError":"JÅ«sų narÅ¡yklÄ—s saugumo nustatymai neleidžia redaktoriui automatiÅ¡kai įvykdyti kopijavimo operacijų. Tam praÅ¡ome naudoti klaviatÅ«rÄ… (Ctrl/Cmd+C).","cut":"IÅ¡kirpti","cutError":"JÅ«sų narÅ¡yklÄ—s saugumo nustatymai neleidžia redaktoriui automatiÅ¡kai įvykdyti iÅ¡kirpimo operacijų. Tam praÅ¡ome naudoti klaviatÅ«rÄ… (Ctrl/Cmd+X).","paste":"Ä®dÄ—ti","pasteNotification":"Spauskite %1 kad įkliuotumÄ—te. JÅ«sų narÅ¡yklÄ— nepalaiko įklijavimo paspaudus mygtukÄ… arba kontekstinio menių galimybÄ—s.","pasteArea":"Ä®kelti dalį","pasteMsg":"Ä®klijuokite savo turinį į žemiau esantį laukÄ… ir paspauskite OK."},"blockquote":{"toolbar":"Citata"},"basicstyles":{"bold":"Pusjuodis","italic":"Kursyvas","strike":"Perbrauktas","subscript":"Apatinis indeksas","superscript":"VirÅ¡utinis indeksas","underline":"Pabrauktas"},"about":{"copy":"Copyright © $1. Visos teiss saugomos.","dlgTitle":"Apie CKEditor 4","moreInfo":"DÄ—l licencijavimo apsilankykite mÅ«sų svetainÄ—je:"},"editor":"Pilnas redaktorius","editorPanel":"Pilno redagtoriaus skydelis","common":{"editorHelp":"Spauskite ALT 0 dÄ—l pagalbos","browseServer":"NarÅ¡yti po serverį","url":"URL","protocol":"Protokolas","upload":"Siųsti","uploadSubmit":"Siųsti į serverį","image":"Vaizdas","flash":"Flash","form":"Forma","checkbox":"Žymimasis langelis","radio":"Žymimoji akutÄ—","textField":"Teksto laukas","textarea":"Teksto sritis","hiddenField":"Nerodomas laukas","button":"Mygtukas","select":"Atrankos laukas","imageButton":"Vaizdinis mygtukas","notSet":"<nÄ—ra nustatyta>","id":"Id","name":"Vardas","langDir":"Teksto kryptis","langDirLtr":"IÅ¡ kairÄ—s į deÅ¡inÄ™ (LTR)","langDirRtl":"IÅ¡ deÅ¡inÄ—s į kairÄ™ (RTL)","langCode":"Kalbos kodas","longDescr":"Ilgas apraÅ¡ymas URL","cssClass":"Stilių lentelÄ—s klasÄ—s","advisoryTitle":"KonsultacinÄ— antraÅ¡tÄ—","cssStyle":"Stilius","ok":"OK","cancel":"Nutraukti","close":"Uždaryti","preview":"PeržiÅ«rÄ—ti","resize":"Pavilkite, kad pakeistumÄ—te dydį","generalTab":"Bendros savybÄ—s","advancedTab":"Papildomas","validateNumberFailed":"Å i reikÅ¡mÄ— nÄ—ra skaiÄius.","confirmNewPage":"Visas neiÅ¡saugotas turinys bus prarastas. Ar tikrai norite įkrauti naujÄ… puslapį?","confirmCancel":"Kai kurie parametrai pasikeitÄ—. Ar tikrai norite užverti langÄ…?","options":"Parametrai","target":"TikslinÄ— nuoroda","targetNew":"Naujas langas (_blank)","targetTop":"VirÅ¡utinis langas (_top)","targetSelf":"Esamas langas (_self)","targetParent":"Paskutinis langas (_parent)","langDirLTR":"IÅ¡ kairÄ—s į deÅ¡inÄ™ (LTR)","langDirRTL":"IÅ¡ deÅ¡inÄ—s į kairÄ™ (RTL)","styles":"Stilius","cssClasses":"Stilių klasÄ—s","width":"Plotis","height":"AukÅ¡tis","align":"Lygiuoti","left":"KairÄ™","right":"DeÅ¡inÄ™","center":"CentrÄ…","justify":"Lygiuoti abi puses","alignLeft":"Lygiuoti kairÄ™","alignRight":"Lygiuoti deÅ¡inÄ™","alignCenter":"Align Center","alignTop":"VirÅ¡Å«nÄ™","alignMiddle":"Vidurį","alignBottom":"ApaÄiÄ…","alignNone":"Niekas","invalidValue":"Neteisinga reikÅ¡mÄ—.","invalidHeight":"AukÅ¡tis turi bÅ«ti nurodytas skaiÄiais.","invalidWidth":"Plotis turi bÅ«ti nurodytas skaiÄiais.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"ReikÅ¡mÄ— nurodyta \"%1\" laukui, turi bÅ«ti teigiamas skaiÄius su arba be tinkamo CSS matavimo vieneto (px, %, in, cm, mm, em, ex, pt arba pc).","invalidHtmlLength":"ReikÅ¡mÄ— nurodyta \"%1\" laukui, turi bÅ«ti teigiamas skaiÄius su arba be tinkamo HTML matavimo vieneto (px arba %).","invalidInlineStyle":"ReikÅ¡mÄ— nurodyta vidiniame stiliuje turi bÅ«ti sudaryta iÅ¡ vieno Å¡ių reikÅ¡mių \"vardas : reikÅ¡mÄ—\", atskirta kabliataÅ¡kiais.","cssLengthTooltip":"Ä®veskite reikÅ¡mÄ™ pikseliais arba skaiÄiais su tinkamu CSS vienetu (px, %, in, cm, mm, em, ex, pt arba pc).","unavailable":"%1<span class=\"cke_accessibility\">, netinkamas</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Tarpas","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Spartusis klaviÅ¡as","optionDefault":"Numatytasis"}}; \ No newline at end of file +CKEDITOR.lang['lt']={"widget":{"move":"Paspauskite ir tempkite kad perkeltumÄ—te","label":"%1 valdiklis"},"undo":{"redo":"Atstatyti","undo":"AtÅ¡aukti"},"toolbar":{"toolbarCollapse":"Apjungti įrankių juostÄ…","toolbarExpand":"IÅ¡plÄ—sti įrankių juostÄ…","toolbarGroups":{"document":"Dokumentas","clipboard":"AtmintinÄ—/Atgal","editing":"Redagavimas","forms":"Formos","basicstyles":"Pagrindiniai stiliai","paragraph":"Paragrafas","links":"Nuorodos","insert":"Ä®terpti","styles":"Stiliai","colors":"Spalvos","tools":"Ä®rankiai"},"toolbars":"Redaktoriaus įrankiai"},"table":{"border":"RÄ—melio dydis","caption":"AntraÅ¡tÄ—","cell":{"menu":"Langelis","insertBefore":"Ä®terpti langelį prieÅ¡","insertAfter":"Ä®terpti langelį po","deleteCell":"Å alinti langelius","merge":"Sujungti langelius","mergeRight":"Sujungti su deÅ¡ine","mergeDown":"Sujungti su apaÄia","splitHorizontal":"Skaidyti langelį horizontaliai","splitVertical":"Skaidyti langelį vertikaliai","title":"Cell nustatymai","cellType":"Cell rÅ«Å¡is","rowSpan":"EiluÄių Span","colSpan":"Stulpelių Span","wordWrap":"Sutraukti raides","hAlign":"Horizontalus lygiavimas","vAlign":"Vertikalus lygiavimas","alignBaseline":"ApatinÄ— linija","bgColor":"Fono spalva","borderColor":"RÄ—melio spalva","data":"Data","header":"AntraÅ¡tÄ—","yes":"Taip","no":"Ne","invalidWidth":"ReikÅ¡mÄ— turi bÅ«ti skaiÄius.","invalidHeight":"ReikÅ¡mÄ— turi bÅ«ti skaiÄius.","invalidRowSpan":"ReikÅ¡mÄ— turi bÅ«ti skaiÄius.","invalidColSpan":"ReikÅ¡mÄ— turi bÅ«ti skaiÄius.","chooseColor":"Pasirinkite"},"cellPad":"Tarpas nuo langelio rÄ—mo iki teksto","cellSpace":"Tarpas tarp langelių","column":{"menu":"Stulpelis","insertBefore":"Ä®terpti stulpelį prieÅ¡","insertAfter":"Ä®terpti stulpelį po","deleteColumn":"Å alinti stulpelius"},"columns":"Stulpeliai","deleteTable":"Å alinti lentelÄ™","headers":"AntraÅ¡tÄ—s","headersBoth":"Abu","headersColumn":"Pirmas stulpelis","headersNone":"NÄ—ra","headersRow":"Pirma eilutÄ—","heightUnit":"height unit","invalidBorder":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","invalidCellPadding":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","invalidCellSpacing":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","invalidCols":"SkaiÄius turi bÅ«ti didesnis nei 0.","invalidHeight":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","invalidRows":"SkaiÄius turi bÅ«ti didesnis nei 0.","invalidWidth":"ReikÅ¡mÄ— turi bÅ«ti nurodyta skaiÄiumi.","menu":"LentelÄ—s savybÄ—s","row":{"menu":"EilutÄ—","insertBefore":"Ä®terpti eilutÄ™ prieÅ¡","insertAfter":"Ä®terpti eilutÄ™ po","deleteRow":"Å alinti eilutes"},"rows":"EilutÄ—s","summary":"Santrauka","title":"LentelÄ—s savybÄ—s","toolbar":"LentelÄ—","widthPc":"procentais","widthPx":"taÅ¡kais","widthUnit":"ploÄio vienetas"},"stylescombo":{"label":"Stilius","panelTitle":"Stilių formatavimas","panelTitle1":"Blokų stiliai","panelTitle2":"Vidiniai stiliai","panelTitle3":"Objektų stiliai"},"specialchar":{"options":"Specialaus simbolio nustatymai","title":"Pasirinkite specialų simbolį","toolbar":"Ä®terpti specialų simbolį"},"sourcedialog":{"toolbar":"Å altinis","title":"Å altinis"},"sourcearea":{"toolbar":"Å altinis"},"showblocks":{"toolbar":"Rodyti blokus"},"removeformat":{"toolbar":"Panaikinti formatÄ…"},"pastetext":{"button":"Ä®dÄ—ti kaip grynÄ… tekstÄ…","pasteNotification":"Spauskite %1 kad įklijuotumÄ—te. JÅ«sų narÅ¡yklÄ— nepalaiko įklijavimo mygtuko arba kontekstinio meniu Å¡iam veiksmui.","title":"Ä®dÄ—ti kaip grynÄ… tekstÄ…"},"pastefromword":{"confirmCleanup":"Tekstas, kurį įkeliate yra kopijuojamas iÅ¡ Word. Ar norite jį iÅ¡valyti prieÅ¡ įkeliant?","error":"DÄ—l vidinių sutrikimų, nepavyko iÅ¡valyti įkeliamo teksto","title":"Ä®dÄ—ti iÅ¡ Word","toolbar":"Ä®dÄ—ti iÅ¡ Word"},"notification":{"closed":"PraneÅ¡imas uždarytas."},"maximize":{"maximize":"IÅ¡didinti","minimize":"Sumažinti"},"magicline":{"title":"Ä®terpti pastraipÄ… Äia"},"list":{"bulletedlist":"Suženklintas sÄ…raÅ¡as","numberedlist":"Numeruotas sÄ…raÅ¡as"},"language":{"button":"Nustatyti kalbÄ…","remove":"PaÅ¡alinti kalbÄ…"},"indent":{"indent":"Padidinti įtraukÄ…","outdent":"Sumažinti įtraukÄ…"},"image2":{"alt":"Alternatyvus Tekstas","btnUpload":"Siųsti į serverį","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Vaizdo informacija","lockRatio":"IÅ¡laikyti proporcijÄ…","menu":"Vaizdo savybÄ—s","pathName":"image","pathNameCaption":"caption","resetSize":"Atstatyti dydį","resizer":"Click and drag to resize","title":"Vaizdo savybÄ—s","uploadTab":"Siųsti","urlMissing":"Paveiksliuko nuorodos nÄ—ra.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Ä®terpti horizontaliÄ… linijÄ…"},"format":{"label":"Å rifto formatas","panelTitle":"Å rifto formatas","tag_address":"Kreipinio","tag_div":"Normalus (DIV)","tag_h1":"AntraÅ¡tinis 1","tag_h2":"AntraÅ¡tinis 2","tag_h3":"AntraÅ¡tinis 3","tag_h4":"AntraÅ¡tinis 4","tag_h5":"AntraÅ¡tinis 5","tag_h6":"AntraÅ¡tinis 6","tag_p":"Normalus","tag_pre":"Formuotas"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elemento kelias","eleTitle":"%1 elementas"},"contextmenu":{"options":"Kontekstinio meniu parametrai"},"clipboard":{"copy":"Kopijuoti","copyError":"JÅ«sų narÅ¡yklÄ—s saugumo nustatymai neleidžia redaktoriui automatiÅ¡kai įvykdyti kopijavimo operacijų. Tam praÅ¡ome naudoti klaviatÅ«rÄ… (Ctrl/Cmd+C).","cut":"IÅ¡kirpti","cutError":"JÅ«sų narÅ¡yklÄ—s saugumo nustatymai neleidžia redaktoriui automatiÅ¡kai įvykdyti iÅ¡kirpimo operacijų. Tam praÅ¡ome naudoti klaviatÅ«rÄ… (Ctrl/Cmd+X).","paste":"Ä®dÄ—ti","pasteNotification":"Spauskite %1 kad įkliuotumÄ—te. JÅ«sų narÅ¡yklÄ— nepalaiko įklijavimo paspaudus mygtukÄ… arba kontekstinio menių galimybÄ—s.","pasteArea":"Ä®kelti dalį","pasteMsg":"Ä®klijuokite savo turinį į žemiau esantį laukÄ… ir paspauskite OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citata"},"basicstyles":{"bold":"Pusjuodis","italic":"Kursyvas","strike":"Perbrauktas","subscript":"Apatinis indeksas","superscript":"VirÅ¡utinis indeksas","underline":"Pabrauktas"},"about":{"copy":"Copyright © $1. Visos teiss saugomos.","dlgTitle":"Apie CKEditor 4","moreInfo":"DÄ—l licencijavimo apsilankykite mÅ«sų svetainÄ—je:"},"editor":"Pilnas redaktorius","editorPanel":"Pilno redagtoriaus skydelis","common":{"editorHelp":"Spauskite ALT 0 dÄ—l pagalbos","browseServer":"NarÅ¡yti po serverį","url":"URL","protocol":"Protokolas","upload":"Siųsti","uploadSubmit":"Siųsti į serverį","image":"Vaizdas","form":"Forma","checkbox":"Žymimasis langelis","radio":"Žymimoji akutÄ—","textField":"Teksto laukas","textarea":"Teksto sritis","hiddenField":"Nerodomas laukas","button":"Mygtukas","select":"Atrankos laukas","imageButton":"Vaizdinis mygtukas","notSet":"<nÄ—ra nustatyta>","id":"Id","name":"Vardas","langDir":"Teksto kryptis","langDirLtr":"IÅ¡ kairÄ—s į deÅ¡inÄ™ (LTR)","langDirRtl":"IÅ¡ deÅ¡inÄ—s į kairÄ™ (RTL)","langCode":"Kalbos kodas","longDescr":"Ilgas apraÅ¡ymas URL","cssClass":"Stilių lentelÄ—s klasÄ—s","advisoryTitle":"KonsultacinÄ— antraÅ¡tÄ—","cssStyle":"Stilius","ok":"OK","cancel":"Nutraukti","close":"Uždaryti","preview":"PeržiÅ«rÄ—ti","resize":"Pavilkite, kad pakeistumÄ—te dydį","generalTab":"Bendros savybÄ—s","advancedTab":"Papildomas","validateNumberFailed":"Å i reikÅ¡mÄ— nÄ—ra skaiÄius.","confirmNewPage":"Visas neiÅ¡saugotas turinys bus prarastas. Ar tikrai norite įkrauti naujÄ… puslapį?","confirmCancel":"Kai kurie parametrai pasikeitÄ—. Ar tikrai norite užverti langÄ…?","options":"Parametrai","target":"TikslinÄ— nuoroda","targetNew":"Naujas langas (_blank)","targetTop":"VirÅ¡utinis langas (_top)","targetSelf":"Esamas langas (_self)","targetParent":"Paskutinis langas (_parent)","langDirLTR":"IÅ¡ kairÄ—s į deÅ¡inÄ™ (LTR)","langDirRTL":"IÅ¡ deÅ¡inÄ—s į kairÄ™ (RTL)","styles":"Stilius","cssClasses":"Stilių klasÄ—s","width":"Plotis","height":"AukÅ¡tis","align":"Lygiuoti","left":"KairÄ™","right":"DeÅ¡inÄ™","center":"CentrÄ…","justify":"Lygiuoti abi puses","alignLeft":"Lygiuoti kairÄ™","alignRight":"Lygiuoti deÅ¡inÄ™","alignCenter":"Align Center","alignTop":"VirÅ¡Å«nÄ™","alignMiddle":"Vidurį","alignBottom":"ApaÄiÄ…","alignNone":"Niekas","invalidValue":"Neteisinga reikÅ¡mÄ—.","invalidHeight":"AukÅ¡tis turi bÅ«ti nurodytas skaiÄiais.","invalidWidth":"Plotis turi bÅ«ti nurodytas skaiÄiais.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"ReikÅ¡mÄ— nurodyta \"%1\" laukui, turi bÅ«ti teigiamas skaiÄius su arba be tinkamo CSS matavimo vieneto (px, %, in, cm, mm, em, ex, pt arba pc).","invalidHtmlLength":"ReikÅ¡mÄ— nurodyta \"%1\" laukui, turi bÅ«ti teigiamas skaiÄius su arba be tinkamo HTML matavimo vieneto (px arba %).","invalidInlineStyle":"ReikÅ¡mÄ— nurodyta vidiniame stiliuje turi bÅ«ti sudaryta iÅ¡ vieno Å¡ių reikÅ¡mių \"vardas : reikÅ¡mÄ—\", atskirta kabliataÅ¡kiais.","cssLengthTooltip":"Ä®veskite reikÅ¡mÄ™ pikseliais arba skaiÄiais su tinkamu CSS vienetu (px, %, in, cm, mm, em, ex, pt arba pc).","unavailable":"%1<span class=\"cke_accessibility\">, netinkamas</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Tarpas","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Spartusis klaviÅ¡as","optionDefault":"Numatytasis"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/lv.js b/core/assets/vendor/ckeditor/lang/lv.js index bb85a376dab3..d2c3f70cd9b3 100644 --- a/core/assets/vendor/ckeditor/lang/lv.js +++ b/core/assets/vendor/ckeditor/lang/lv.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['lv']={"widget":{"move":"KlikÅ¡Ä·ina un velc, lai pÄrvietotu","label":"logrÄ«ks %1"},"undo":{"redo":"AtkÄrtot","undo":"Atcelt"},"toolbar":{"toolbarCollapse":"AizvÄ“rt rÄ«kjoslu","toolbarExpand":"AtvÄ“rt rÄ«kjoslu","toolbarGroups":{"document":"Dokuments","clipboard":"Starpliktuve/Atcelt","editing":"LaboÅ¡ana","forms":"Formas","basicstyles":"Pamata stili","paragraph":"ParagrÄfs","links":"Saites","insert":"Ievietot","styles":"Stili","colors":"KrÄsas","tools":"RÄ«ki"},"toolbars":"Redaktora rÄ«kjoslas"},"table":{"border":"RÄmja izmÄ“rs","caption":"LeÄ£enda","cell":{"menu":"Å Å«na","insertBefore":"Pievienot Å¡Å«nu pirms","insertAfter":"Pievienot Å¡Å«nu pÄ“c","deleteCell":"DzÄ“st rÅ«tiņas","merge":"Apvienot rÅ«tiņas","mergeRight":"Apvieno pa labi","mergeDown":"Apvienot uz leju","splitHorizontal":"SadalÄ«t Å¡Å«nu horizontÄli","splitVertical":"SadalÄ«t Å¡Å«nu vertikÄli","title":"Å Å«nas uzstÄdÄ«jumi","cellType":"Å Å«nas tips","rowSpan":"Apvienotas rindas","colSpan":"Apvienotas kolonas","wordWrap":"VÄrdu pÄrnese","hAlign":"HorizontÄlais novietojums","vAlign":"VertikÄlais novietojums","alignBaseline":"Pamatrinda","bgColor":"Fona krÄsa","borderColor":"RÄmja krÄsa","data":"Dati","header":"Virsraksts","yes":"JÄ","no":"NÄ“","invalidWidth":"Å Å«nas platumam jÄbÅ«t skaitlim","invalidHeight":"Å Å«nas augstumam jÄbÅ«t skaitlim","invalidRowSpan":"Apvienojamo rindu skaitam jÄbÅ«t veselam skaitlim","invalidColSpan":"Apvienojamo kolonu skaitam jÄbÅ«t veselam skaitlim","chooseColor":"IzvÄ“lÄ“ties"},"cellPad":"RÅ«tiņu nobÄ«de","cellSpace":"RÅ«tiņu atstatums","column":{"menu":"Kolonna","insertBefore":"Ievietot kolonu pirms","insertAfter":"Ievieto kolonu pÄ“c","deleteColumn":"DzÄ“st kolonnas"},"columns":"Kolonnas","deleteTable":"DzÄ“st tabulu","headers":"Virsraksti","headersBoth":"Abi","headersColumn":"PirmÄ kolona","headersNone":"Nekas","headersRow":"PirmÄ rinda","heightUnit":"height unit","invalidBorder":"RÄmju izmÄ“ram jÄbÅ«t skaitlim","invalidCellPadding":"Å Å«nu atkÄpÄ“m jÄbÅ«t pozitÄ«vam skaitlim","invalidCellSpacing":"Å Å«nu atstarpÄ“m jÄbÅ«t pozitÄ«vam skaitlim","invalidCols":"Kolonu skaitam jÄbÅ«t lielÄkam par 0","invalidHeight":"Tabulas augstumam jÄbÅ«t skaitlim","invalidRows":"Rindu skaitam jÄbÅ«t lielÄkam par 0","invalidWidth":"Tabulas platumam jÄbÅ«t skaitlim","menu":"Tabulas Ä«paÅ¡Ä«bas","row":{"menu":"Rinda","insertBefore":"Ievietot rindu pirms","insertAfter":"Ievietot rindu pÄ“c","deleteRow":"DzÄ“st rindas"},"rows":"Rindas","summary":"AnotÄcija","title":"Tabulas Ä«paÅ¡Ä«bas","toolbar":"Tabula","widthPc":"procentuÄli","widthPx":"pikseļos","widthUnit":"platuma mÄ“rvienÄ«ba"},"stylescombo":{"label":"Stils","panelTitle":"FormatÄ“Å¡anas stili","panelTitle1":"Bloka stili","panelTitle2":"iekļautie stili","panelTitle3":"Objekta stili"},"specialchar":{"options":"SpeciÄlo simbolu uzstÄdÄ«jumi","title":"Ievietot Ä«paÅ¡u simbolu","toolbar":"Ievietot speciÄlo simbolu"},"sourcedialog":{"toolbar":"HTML kods","title":"HTML kods"},"sourcearea":{"toolbar":"HTML kods"},"showblocks":{"toolbar":"ParÄdÄ«t blokus"},"removeformat":{"toolbar":"Noņemt stilus"},"pastetext":{"button":"Ievietot kÄ vienkÄrÅ¡u tekstu","pasteNotification":"Nospied %1 lai ielÄ«mÄ“tu. Tavs pÄrlÅ«ks neatbalsta ielÄ«mÄ“Å¡anu ar rÄ«kjoslas pogÄm vai uznirstoÅ¡Äs izvÄ“lnes opciju.","title":"Ievietot kÄ vienkÄrÅ¡u tekstu"},"pastefromword":{"confirmCleanup":"Teksts, kuru vÄ“laties ielÄ«mÄ“t, izskatÄs ir nokopÄ“ts no Word. Vai vÄ“laties to iztÄ«rÄ«t pirms ielÄ«mÄ“Å¡anas?","error":"IekÅ¡Ä“jas kļūdas dēļ, neizdevÄs iztÄ«rÄ«t ielÄ«mÄ“tos datus.","title":"Ievietot no Worda","toolbar":"Ievietot no Worda"},"notification":{"closed":"Paziņojums aizvÄ“rts."},"maximize":{"maximize":"MaksimizÄ“t","minimize":"MinimizÄ“t"},"magicline":{"title":"Ievietot Å¡eit rindkopu"},"list":{"bulletedlist":"Ievietot/noņemt sarakstu ar aizzÄ«mÄ“m","numberedlist":"Ievietot/noņemt numurÄ“tu sarakstu"},"language":{"button":"UzstÄdÄ«t valodu","remove":"Noņemt valodu"},"indent":{"indent":"PalielinÄt atkÄpi","outdent":"SamazinÄt atkÄpi"},"image2":{"alt":"AlternatÄ«vais teksts","btnUpload":"NosÅ«tÄ«t serverim","captioned":"AttÄ“ls ar parakstu","captionPlaceholder":"Paraksts","infoTab":"InformÄcija par attÄ“lu","lockRatio":"NemainÄ«ga Augstuma/Platuma attiecÄ«ba","menu":"AttÄ“la Ä«paÅ¡Ä«bas","pathName":"AttÄ“ls","pathNameCaption":"paraksts","resetSize":"Atjaunot sÄkotnÄ“jo izmÄ“ru","resizer":"NoklikÅ¡Ä·ini un pavelc lai mÄ“rogotu","title":"AttÄ“la Ä«paÅ¡Ä«bas","uploadTab":"AugÅ¡upielÄdÄ“t","urlMissing":"TrÅ«kst attÄ“la atraÅ¡anÄs adrese.","altMissing":"TrÅ«kst alternatÄ«vais teksts"},"horizontalrule":{"toolbar":"Ievietot horizontÄlu AtdalÄ«tÄjsvÄ«tru"},"format":{"label":"FormÄts","panelTitle":"Rindkopas formÄts","tag_address":"Adrese","tag_div":"Parastais (DIV)","tag_h1":"Virsraksts 1","tag_h2":"Virsraksts 2","tag_h3":"Virsraksts 3","tag_h4":"Virsraksts 4","tag_h5":"Virsraksts 5","tag_h6":"Virsraksts 6","tag_p":"Parastais","tag_pre":"FormatÄ“ts"},"filetools":{"loadError":"RadÄs kļūda nolasot failu.","networkError":"RadÄs tÄ«kla kļūda, kamÄ“r tika ielÄdÄ“ts fails.","httpError404":"IelÄdÄ“jot failu, radÄs HTTP kļūda (404: Fails nav atrasts)","httpError403":"IelÄdÄ“jot failu, radÄs HTTP kļūda (403: Pieeja liegta)","httpError":"IelÄdÄ“jot failu, radÄs HTTP kļūda (kļūdas statuss: %1)","noUrlError":"AugÅ¡upielÄdes adrese nav norÄdÄ«ta.","responseError":"Nekorekta servera atbilde."},"elementspath":{"eleLabel":"Elementa ceļš","eleTitle":"%1 elements"},"contextmenu":{"options":"UznirstoÅ¡Äs izvÄ“lnes uzstÄdÄ«jumi"},"clipboard":{"copy":"KopÄ“t","copyError":"JÅ«su pÄrlÅ«kprogrammas droÅ¡Ä«bas iestatÄ«jumi nepieļauj redaktoram automÄtiski veikt kopÄ“Å¡anas darbÄ«bu. LÅ«dzu, izmantojiet (Ctrl/Cmd+C), lai veiktu Å¡o darbÄ«bu.","cut":"Izgriezt","cutError":"JÅ«su pÄrlÅ«kprogrammas droÅ¡Ä«bas iestatÄ«jumi nepieļauj redaktoram automÄtiski veikt izgriezÅ¡anas darbÄ«bu. LÅ«dzu, izmantojiet (Ctrl/Cmd+X), lai veiktu Å¡o darbÄ«bu.","paste":"IelÄ«mÄ“t","pasteNotification":"Nospied %1 lai ielÄ«mÄ“tu. Tavs pÄrlÅ«ks neatbalsta ielÄ«mÄ“Å¡anu ar rÄ«kjoslas pogÄm vai uznirstoÅ¡Äs izvÄ“lnes opciju.","pasteArea":"IelÄ«mÄ“Å¡anas zona","pasteMsg":"IelÄ«mÄ“ saturu zemÄk esoÅ¡ajÄ laukÄ un nospied OK."},"blockquote":{"toolbar":"Bloka citÄts"},"basicstyles":{"bold":"Treknraksts","italic":"SlÄ«praksts","strike":"PÄrsvÄ«trojums","subscript":"ApakÅ¡raksts","superscript":"AugÅ¡raksts","underline":"PasvÄ«trojums"},"about":{"copy":"KopÄ“Å¡anas tiesÄ«bas © $1. Visas tiesÄ«bas rezervÄ“tas.","dlgTitle":"Par CKEditor 4","moreInfo":"InformÄcijai par licenzÄ“Å¡anu apmeklÄ“jiet mÅ«su mÄjas lapu:"},"editor":"BagÄtinÄtÄ teksta redaktors","editorPanel":"BagÄtinÄtÄ teksta redaktora panelis","common":{"editorHelp":"PalÄ«dzÄ«bai, nospiediet ALT 0 ","browseServer":"SkatÄ«t servera saturu","url":"URL","protocol":"Protokols","upload":"AugÅ¡upielÄdÄ“t","uploadSubmit":"NosÅ«tÄ«t serverim","image":"AttÄ“ls","flash":"Flash","form":"Forma","checkbox":"AtzÄ«mÄ“Å¡anas kastÄ«te","radio":"IzvÄ“les poga","textField":"Teksta rinda","textarea":"Teksta laukums","hiddenField":"PaslÄ“pta teksta rinda","button":"Poga","select":"IezÄ«mÄ“Å¡anas lauks","imageButton":"AttÄ“lpoga","notSet":"<nav iestatÄ«ts>","id":"Id","name":"Nosaukums","langDir":"Valodas lasÄ«Å¡anas virziens","langDirLtr":"No kreisÄs uz labo (LTR)","langDirRtl":"No labÄs uz kreiso (RTL)","langCode":"Valodas kods","longDescr":"Gara apraksta Hipersaite","cssClass":"Stilu saraksta klases","advisoryTitle":"KonsultatÄ«vs virsraksts","cssStyle":"Stils","ok":"DarÄ«ts!","cancel":"Atcelt","close":"AizvÄ“rt","preview":"PriekÅ¡skatÄ«jums","resize":"MÄ“rogot","generalTab":"VispÄrÄ«gi","advancedTab":"IzvÄ“rstais","validateNumberFailed":"Å Ä« vÄ“rtÄ«ba nav skaitlis","confirmNewPage":"Jebkuras nesaglabÄtÄs izmaiņas tiks zaudÄ“tas. Vai tieÅ¡Äm vÄ“laties atvÄ“rt jaunu lapu?","confirmCancel":"Daži no uzstÄdÄ«jumiem ir mainÄ«ti. Vai tieÅ¡Äm vÄ“laties aizvÄ“rt Å¡o dialogu?","options":"UzstÄdÄ«jumi","target":"MÄ“rÄ·is","targetNew":"Jauns logs (_blank)","targetTop":"VirsÄ“jais logs (_top)","targetSelf":"Tas pats logs (_self)","targetParent":"Avota logs (_parent)","langDirLTR":"Kreisais uz Labo (LTR)","langDirRTL":"Labais uz Kreiso (RTL)","styles":"Stils","cssClasses":"Stilu klases","width":"Platums","height":"Augstums","align":"NolÄ«dzinÄt","left":"Pa kreisi","right":"Pa labi","center":"CentrÄ“ti","justify":"IzlÄ«dzinÄt malas","alignLeft":"IzlÄ«dzinÄt pa kreisi","alignRight":"IzlÄ«dzinÄt pa labi","alignCenter":"CentrÄ“t","alignTop":"AugÅ¡Ä","alignMiddle":"VertikÄli centrÄ“ts","alignBottom":"ApakÅ¡Ä","alignNone":"Nekas","invalidValue":"Nekorekta vÄ“rtÄ«ba","invalidHeight":"Augstumam jÄbÅ«t skaitlim.","invalidWidth":"Platumam jÄbÅ«t skaitlim","invalidLength":"Laukam \"%1\" norÄdÄ«tajai vÄ“rtÄ«bai jÄbÅ«t pozitÄ«vam skaitlim ar vai bez korektÄm mÄ“rvienÄ«bÄm (%2).","invalidCssLength":"Laukam \"%1\" norÄdÄ«tajai vÄ“rtÄ«bai jÄbÅ«t pozitÄ«vam skaitlim ar vai bez korektÄm CSS mÄ“rvienÄ«bÄm (px, %, in, cm, mm, em, ex, pt, vai pc).","invalidHtmlLength":"Laukam \"%1\" norÄdÄ«tajai vÄ“rtÄ«bai jÄbÅ«t pozitÄ«vam skaitlim ar vai bez korektÄm HTML mÄ“rvienÄ«bÄm (px vai %).","invalidInlineStyle":"IekļautajÄ stilÄ norÄdÄ«tajai vÄ“rtÄ«bai jÄsastÄv no viena vai vairÄkiem pÄriem pÄ“c formÄta \"nosaukums: vÄ“rtÄ«ba\", atdalÄ«tiem ar semikolu.","cssLengthTooltip":"Ievadiet vÄ“rtÄ«bu pikseļos vai skaitli ar derÄ«gu CSS mÄ“rvienÄ«bu (px, %, in, cm, mm, em, ex, pt, vai pc).","unavailable":"%1<span class=\"cke_accessibility\">, nav pieejams</span>","keyboard":{"8":" atkÄpÅ¡anÄs taustiņš","13":"IevadÄ«t","16":"pÄrslÄ“gÅ¡anas taustiņš","17":"vadÄ«Å¡anas taustiņš","18":"alternÄ“Å¡anas taustiņš","32":"Atstarpe","35":"Beigas","36":"MÄjup","46":"DzÄ“st","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Komanda"},"keyboardShortcut":"KlaviatÅ«ras saÄ«sne","optionDefault":"NoklusÄ“ts"}}; \ No newline at end of file +CKEDITOR.lang['lv']={"widget":{"move":"KlikÅ¡Ä·ina un velc, lai pÄrvietotu","label":"logrÄ«ks %1"},"undo":{"redo":"AtkÄrtot","undo":"Atcelt"},"toolbar":{"toolbarCollapse":"AizvÄ“rt rÄ«kjoslu","toolbarExpand":"AtvÄ“rt rÄ«kjoslu","toolbarGroups":{"document":"Dokuments","clipboard":"Starpliktuve/Atcelt","editing":"LaboÅ¡ana","forms":"Formas","basicstyles":"Pamata stili","paragraph":"ParagrÄfs","links":"Saites","insert":"Ievietot","styles":"Stili","colors":"KrÄsas","tools":"RÄ«ki"},"toolbars":"Redaktora rÄ«kjoslas"},"table":{"border":"RÄmja izmÄ“rs","caption":"LeÄ£enda","cell":{"menu":"Å Å«na","insertBefore":"Pievienot Å¡Å«nu pirms","insertAfter":"Pievienot Å¡Å«nu pÄ“c","deleteCell":"DzÄ“st rÅ«tiņas","merge":"Apvienot rÅ«tiņas","mergeRight":"Apvieno pa labi","mergeDown":"Apvienot uz leju","splitHorizontal":"SadalÄ«t Å¡Å«nu horizontÄli","splitVertical":"SadalÄ«t Å¡Å«nu vertikÄli","title":"Å Å«nas uzstÄdÄ«jumi","cellType":"Å Å«nas tips","rowSpan":"Apvienotas rindas","colSpan":"Apvienotas kolonas","wordWrap":"VÄrdu pÄrnese","hAlign":"HorizontÄlais novietojums","vAlign":"VertikÄlais novietojums","alignBaseline":"Pamatrinda","bgColor":"Fona krÄsa","borderColor":"RÄmja krÄsa","data":"Dati","header":"Virsraksts","yes":"JÄ","no":"NÄ“","invalidWidth":"Å Å«nas platumam jÄbÅ«t skaitlim","invalidHeight":"Å Å«nas augstumam jÄbÅ«t skaitlim","invalidRowSpan":"Apvienojamo rindu skaitam jÄbÅ«t veselam skaitlim","invalidColSpan":"Apvienojamo kolonu skaitam jÄbÅ«t veselam skaitlim","chooseColor":"IzvÄ“lÄ“ties"},"cellPad":"RÅ«tiņu nobÄ«de","cellSpace":"RÅ«tiņu atstatums","column":{"menu":"Kolonna","insertBefore":"Ievietot kolonu pirms","insertAfter":"Ievieto kolonu pÄ“c","deleteColumn":"DzÄ“st kolonnas"},"columns":"Kolonnas","deleteTable":"DzÄ“st tabulu","headers":"Virsraksti","headersBoth":"Abi","headersColumn":"PirmÄ kolona","headersNone":"Nekas","headersRow":"PirmÄ rinda","heightUnit":"height unit","invalidBorder":"RÄmju izmÄ“ram jÄbÅ«t skaitlim","invalidCellPadding":"Å Å«nu atkÄpÄ“m jÄbÅ«t pozitÄ«vam skaitlim","invalidCellSpacing":"Å Å«nu atstarpÄ“m jÄbÅ«t pozitÄ«vam skaitlim","invalidCols":"Kolonu skaitam jÄbÅ«t lielÄkam par 0","invalidHeight":"Tabulas augstumam jÄbÅ«t skaitlim","invalidRows":"Rindu skaitam jÄbÅ«t lielÄkam par 0","invalidWidth":"Tabulas platumam jÄbÅ«t skaitlim","menu":"Tabulas Ä«paÅ¡Ä«bas","row":{"menu":"Rinda","insertBefore":"Ievietot rindu pirms","insertAfter":"Ievietot rindu pÄ“c","deleteRow":"DzÄ“st rindas"},"rows":"Rindas","summary":"AnotÄcija","title":"Tabulas Ä«paÅ¡Ä«bas","toolbar":"Tabula","widthPc":"procentuÄli","widthPx":"pikseļos","widthUnit":"platuma mÄ“rvienÄ«ba"},"stylescombo":{"label":"Stils","panelTitle":"FormatÄ“Å¡anas stili","panelTitle1":"Bloka stili","panelTitle2":"iekļautie stili","panelTitle3":"Objekta stili"},"specialchar":{"options":"SpeciÄlo simbolu uzstÄdÄ«jumi","title":"Ievietot Ä«paÅ¡u simbolu","toolbar":"Ievietot speciÄlo simbolu"},"sourcedialog":{"toolbar":"HTML kods","title":"HTML kods"},"sourcearea":{"toolbar":"HTML kods"},"showblocks":{"toolbar":"ParÄdÄ«t blokus"},"removeformat":{"toolbar":"Noņemt stilus"},"pastetext":{"button":"Ievietot kÄ vienkÄrÅ¡u tekstu","pasteNotification":"Nospied %1 lai ielÄ«mÄ“tu. Tavs pÄrlÅ«ks neatbalsta ielÄ«mÄ“Å¡anu ar rÄ«kjoslas pogÄm vai uznirstoÅ¡Äs izvÄ“lnes opciju.","title":"Ievietot kÄ vienkÄrÅ¡u tekstu"},"pastefromword":{"confirmCleanup":"Teksts, kuru vÄ“laties ielÄ«mÄ“t, izskatÄs ir nokopÄ“ts no Word. Vai vÄ“laties to iztÄ«rÄ«t pirms ielÄ«mÄ“Å¡anas?","error":"IekÅ¡Ä“jas kļūdas dēļ, neizdevÄs iztÄ«rÄ«t ielÄ«mÄ“tos datus.","title":"Ievietot no Worda","toolbar":"Ievietot no Worda"},"notification":{"closed":"Paziņojums aizvÄ“rts."},"maximize":{"maximize":"MaksimizÄ“t","minimize":"MinimizÄ“t"},"magicline":{"title":"Ievietot Å¡eit rindkopu"},"list":{"bulletedlist":"Ievietot/noņemt sarakstu ar aizzÄ«mÄ“m","numberedlist":"Ievietot/noņemt numurÄ“tu sarakstu"},"language":{"button":"UzstÄdÄ«t valodu","remove":"Noņemt valodu"},"indent":{"indent":"PalielinÄt atkÄpi","outdent":"SamazinÄt atkÄpi"},"image2":{"alt":"AlternatÄ«vais teksts","btnUpload":"NosÅ«tÄ«t serverim","captioned":"AttÄ“ls ar parakstu","captionPlaceholder":"Paraksts","infoTab":"InformÄcija par attÄ“lu","lockRatio":"NemainÄ«ga Augstuma/Platuma attiecÄ«ba","menu":"AttÄ“la Ä«paÅ¡Ä«bas","pathName":"AttÄ“ls","pathNameCaption":"paraksts","resetSize":"Atjaunot sÄkotnÄ“jo izmÄ“ru","resizer":"NoklikÅ¡Ä·ini un pavelc lai mÄ“rogotu","title":"AttÄ“la Ä«paÅ¡Ä«bas","uploadTab":"AugÅ¡upielÄdÄ“t","urlMissing":"TrÅ«kst attÄ“la atraÅ¡anÄs adrese.","altMissing":"TrÅ«kst alternatÄ«vais teksts"},"horizontalrule":{"toolbar":"Ievietot horizontÄlu AtdalÄ«tÄjsvÄ«tru"},"format":{"label":"FormÄts","panelTitle":"Rindkopas formÄts","tag_address":"Adrese","tag_div":"Parastais (DIV)","tag_h1":"Virsraksts 1","tag_h2":"Virsraksts 2","tag_h3":"Virsraksts 3","tag_h4":"Virsraksts 4","tag_h5":"Virsraksts 5","tag_h6":"Virsraksts 6","tag_p":"Parastais","tag_pre":"FormatÄ“ts"},"filetools":{"loadError":"RadÄs kļūda nolasot failu.","networkError":"RadÄs tÄ«kla kļūda, kamÄ“r tika ielÄdÄ“ts fails.","httpError404":"IelÄdÄ“jot failu, radÄs HTTP kļūda (404: Fails nav atrasts)","httpError403":"IelÄdÄ“jot failu, radÄs HTTP kļūda (403: Pieeja liegta)","httpError":"IelÄdÄ“jot failu, radÄs HTTP kļūda (kļūdas statuss: %1)","noUrlError":"AugÅ¡upielÄdes adrese nav norÄdÄ«ta.","responseError":"Nekorekta servera atbilde."},"elementspath":{"eleLabel":"Elementa ceļš","eleTitle":"%1 elements"},"contextmenu":{"options":"UznirstoÅ¡Äs izvÄ“lnes uzstÄdÄ«jumi"},"clipboard":{"copy":"KopÄ“t","copyError":"JÅ«su pÄrlÅ«kprogrammas droÅ¡Ä«bas iestatÄ«jumi nepieļauj redaktoram automÄtiski veikt kopÄ“Å¡anas darbÄ«bu. LÅ«dzu, izmantojiet (Ctrl/Cmd+C), lai veiktu Å¡o darbÄ«bu.","cut":"Izgriezt","cutError":"JÅ«su pÄrlÅ«kprogrammas droÅ¡Ä«bas iestatÄ«jumi nepieļauj redaktoram automÄtiski veikt izgriezÅ¡anas darbÄ«bu. LÅ«dzu, izmantojiet (Ctrl/Cmd+X), lai veiktu Å¡o darbÄ«bu.","paste":"IelÄ«mÄ“t","pasteNotification":"Nospied %1 lai ielÄ«mÄ“tu. Tavs pÄrlÅ«ks neatbalsta ielÄ«mÄ“Å¡anu ar rÄ«kjoslas pogÄm vai uznirstoÅ¡Äs izvÄ“lnes opciju.","pasteArea":"IelÄ«mÄ“Å¡anas zona","pasteMsg":"IelÄ«mÄ“ saturu zemÄk esoÅ¡ajÄ laukÄ un nospied OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Bloka citÄts"},"basicstyles":{"bold":"Treknraksts","italic":"SlÄ«praksts","strike":"PÄrsvÄ«trojums","subscript":"ApakÅ¡raksts","superscript":"AugÅ¡raksts","underline":"PasvÄ«trojums"},"about":{"copy":"KopÄ“Å¡anas tiesÄ«bas © $1. Visas tiesÄ«bas rezervÄ“tas.","dlgTitle":"Par CKEditor 4","moreInfo":"InformÄcijai par licenzÄ“Å¡anu apmeklÄ“jiet mÅ«su mÄjas lapu:"},"editor":"BagÄtinÄtÄ teksta redaktors","editorPanel":"BagÄtinÄtÄ teksta redaktora panelis","common":{"editorHelp":"PalÄ«dzÄ«bai, nospiediet ALT 0 ","browseServer":"SkatÄ«t servera saturu","url":"URL","protocol":"Protokols","upload":"AugÅ¡upielÄdÄ“t","uploadSubmit":"NosÅ«tÄ«t serverim","image":"AttÄ“ls","form":"Forma","checkbox":"AtzÄ«mÄ“Å¡anas kastÄ«te","radio":"IzvÄ“les poga","textField":"Teksta rinda","textarea":"Teksta laukums","hiddenField":"PaslÄ“pta teksta rinda","button":"Poga","select":"IezÄ«mÄ“Å¡anas lauks","imageButton":"AttÄ“lpoga","notSet":"<nav iestatÄ«ts>","id":"Id","name":"Nosaukums","langDir":"Valodas lasÄ«Å¡anas virziens","langDirLtr":"No kreisÄs uz labo (LTR)","langDirRtl":"No labÄs uz kreiso (RTL)","langCode":"Valodas kods","longDescr":"Gara apraksta Hipersaite","cssClass":"Stilu saraksta klases","advisoryTitle":"KonsultatÄ«vs virsraksts","cssStyle":"Stils","ok":"DarÄ«ts!","cancel":"Atcelt","close":"AizvÄ“rt","preview":"PriekÅ¡skatÄ«jums","resize":"MÄ“rogot","generalTab":"VispÄrÄ«gi","advancedTab":"IzvÄ“rstais","validateNumberFailed":"Å Ä« vÄ“rtÄ«ba nav skaitlis","confirmNewPage":"Jebkuras nesaglabÄtÄs izmaiņas tiks zaudÄ“tas. Vai tieÅ¡Äm vÄ“laties atvÄ“rt jaunu lapu?","confirmCancel":"Daži no uzstÄdÄ«jumiem ir mainÄ«ti. Vai tieÅ¡Äm vÄ“laties aizvÄ“rt Å¡o dialogu?","options":"UzstÄdÄ«jumi","target":"MÄ“rÄ·is","targetNew":"Jauns logs (_blank)","targetTop":"VirsÄ“jais logs (_top)","targetSelf":"Tas pats logs (_self)","targetParent":"Avota logs (_parent)","langDirLTR":"Kreisais uz Labo (LTR)","langDirRTL":"Labais uz Kreiso (RTL)","styles":"Stils","cssClasses":"Stilu klases","width":"Platums","height":"Augstums","align":"NolÄ«dzinÄt","left":"Pa kreisi","right":"Pa labi","center":"CentrÄ“ti","justify":"IzlÄ«dzinÄt malas","alignLeft":"IzlÄ«dzinÄt pa kreisi","alignRight":"IzlÄ«dzinÄt pa labi","alignCenter":"CentrÄ“t","alignTop":"AugÅ¡Ä","alignMiddle":"VertikÄli centrÄ“ts","alignBottom":"ApakÅ¡Ä","alignNone":"Nekas","invalidValue":"Nekorekta vÄ“rtÄ«ba","invalidHeight":"Augstumam jÄbÅ«t skaitlim.","invalidWidth":"Platumam jÄbÅ«t skaitlim","invalidLength":"Laukam \"%1\" norÄdÄ«tajai vÄ“rtÄ«bai jÄbÅ«t pozitÄ«vam skaitlim ar vai bez korektÄm mÄ“rvienÄ«bÄm (%2).","invalidCssLength":"Laukam \"%1\" norÄdÄ«tajai vÄ“rtÄ«bai jÄbÅ«t pozitÄ«vam skaitlim ar vai bez korektÄm CSS mÄ“rvienÄ«bÄm (px, %, in, cm, mm, em, ex, pt, vai pc).","invalidHtmlLength":"Laukam \"%1\" norÄdÄ«tajai vÄ“rtÄ«bai jÄbÅ«t pozitÄ«vam skaitlim ar vai bez korektÄm HTML mÄ“rvienÄ«bÄm (px vai %).","invalidInlineStyle":"IekļautajÄ stilÄ norÄdÄ«tajai vÄ“rtÄ«bai jÄsastÄv no viena vai vairÄkiem pÄriem pÄ“c formÄta \"nosaukums: vÄ“rtÄ«ba\", atdalÄ«tiem ar semikolu.","cssLengthTooltip":"Ievadiet vÄ“rtÄ«bu pikseļos vai skaitli ar derÄ«gu CSS mÄ“rvienÄ«bu (px, %, in, cm, mm, em, ex, pt, vai pc).","unavailable":"%1<span class=\"cke_accessibility\">, nav pieejams</span>","keyboard":{"8":" atkÄpÅ¡anÄs taustiņš","13":"IevadÄ«t","16":"pÄrslÄ“gÅ¡anas taustiņš","17":"vadÄ«Å¡anas taustiņš","18":"alternÄ“Å¡anas taustiņš","32":"Atstarpe","35":"Beigas","36":"MÄjup","46":"DzÄ“st","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Komanda"},"keyboardShortcut":"KlaviatÅ«ras saÄ«sne","optionDefault":"NoklusÄ“ts"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/mk.js b/core/assets/vendor/ckeditor/lang/mk.js index 25f90a9cc331..71e986ae71b3 100644 --- a/core/assets/vendor/ckeditor/lang/mk.js +++ b/core/assets/vendor/ckeditor/lang/mk.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['mk']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Ðлтернативен текÑÑ‚","btnUpload":"Прикачи на Ñервер","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Информации за Ñликата","lockRatio":"Зачувај пропорција","menu":"СвојÑтва на Ñликата","pathName":"image","pathNameCaption":"caption","resetSize":"РеÑетирај големина","resizer":"Click and drag to resize","title":"СвојÑтва на Ñликата","uploadTab":"Прикачи","urlMissing":"ÐедоÑтаÑува URL-то на Ñликата.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"КонтекÑÑ‚-мени опции"},"clipboard":{"copy":"Копирај (Copy)","copyError":"Опциите за безбедноÑÑ‚ на вашиот прелиÑтувач не дозволуваат уредувачот автоматÑки да изврши копирање. Ве молиме употребете ја таÑтатурата. (Ctrl/Cmd+C)","cut":"ИÑечи (Cut)","cutError":"Опциите за безбедноÑÑ‚ на вашиот прелиÑтувач не дозволуваат уредувачот автоматÑки да изврши Ñечење. Ве молиме употребете ја таÑтатурата. (Ctrl/Cmd+C)","paste":"Залепи (Paste)","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"ПроÑтор за залепување","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Одвоен цитат"},"basicstyles":{"bold":"Здебелено","italic":"Ðакривено","strike":"Прецртано","subscript":"Долен индекÑ","superscript":"Горен индекÑ","underline":"Подвлечено"},"about":{"copy":"ÐвторÑки права © $1. Сите права Ñе задржани.","dlgTitle":"За CKEditor 4","moreInfo":"За информации околу лиценцата, ве молиме поÑетете го нашиот веб-Ñајт: "},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"ПритиÑни ALT 0 за помош","browseServer":"Пребарај низ Ñерверот","url":"URL","protocol":"Протокол","upload":"Прикачи","uploadSubmit":"Прикачи на Ñервер","image":"Слика","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Поле за текÑÑ‚","textarea":"Големо поле за текÑÑ‚","hiddenField":"Скриено поле","button":"Button","select":"Selection Field","imageButton":"Копче-Ñлика","notSet":"<not set>","id":"Id","name":"Name","langDir":"ÐаÑока на јазик","langDirLtr":"Лево кон деÑно","langDirRtl":"ДеÑно кон лево","langCode":"Код на јазик","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Стил","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"Општо","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Опции","target":"Target","targetNew":"Ðов прозорец (_blank)","targetTop":"Ðајгорниот прозорец (_top)","targetSelf":"ИÑтиот прозорец (_self)","targetParent":"Прозорец-родител (_parent)","langDirLTR":"Лево кон деÑно","langDirRTL":"ДеÑно кон лево","styles":"Стил","cssClasses":"Stylesheet Classes","width":"Широчина","height":"ВиÑочина","align":"Alignment","left":"Лево","right":"ДеÑно","center":"Во Ñредина","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"Горе","alignMiddle":"Средина","alignBottom":"Доле","alignNone":"Ðикое","invalidValue":"Ðевалидна вредноÑÑ‚","invalidHeight":"ВиÑочината мора да биде број.","invalidWidth":"Широчината мора да биде број.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['mk']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Redo","undo":"Undo"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Select Special Character","toolbar":"Insert Special Character"},"sourcedialog":{"toolbar":"Source","title":"Source"},"sourcearea":{"toolbar":"Source"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Remove Format"},"pastetext":{"button":"Paste as plain text","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"image2":{"alt":"Ðлтернативен текÑÑ‚","btnUpload":"Прикачи на Ñервер","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Информации за Ñликата","lockRatio":"Зачувај пропорција","menu":"СвојÑтва на Ñликата","pathName":"image","pathNameCaption":"caption","resetSize":"РеÑетирај големина","resizer":"Click and drag to resize","title":"СвојÑтва на Ñликата","uploadTab":"Прикачи","urlMissing":"ÐедоÑтаÑува URL-то на Ñликата.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"КонтекÑÑ‚-мени опции"},"clipboard":{"copy":"Копирај (Copy)","copyError":"Опциите за безбедноÑÑ‚ на вашиот прелиÑтувач не дозволуваат уредувачот автоматÑки да изврши копирање. Ве молиме употребете ја таÑтатурата. (Ctrl/Cmd+C)","cut":"ИÑечи (Cut)","cutError":"Опциите за безбедноÑÑ‚ на вашиот прелиÑтувач не дозволуваат уредувачот автоматÑки да изврши Ñечење. Ве молиме употребете ја таÑтатурата. (Ctrl/Cmd+C)","paste":"Залепи (Paste)","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"ПроÑтор за залепување","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Одвоен цитат"},"basicstyles":{"bold":"Здебелено","italic":"Ðакривено","strike":"Прецртано","subscript":"Долен индекÑ","superscript":"Горен индекÑ","underline":"Подвлечено"},"about":{"copy":"ÐвторÑки права © $1. Сите права Ñе задржани.","dlgTitle":"За CKEditor 4","moreInfo":"За информации околу лиценцата, ве молиме поÑетете го нашиот веб-Ñајт: "},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"ПритиÑни ALT 0 за помош","browseServer":"Пребарај низ Ñерверот","url":"URL","protocol":"Протокол","upload":"Прикачи","uploadSubmit":"Прикачи на Ñервер","image":"Слика","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Поле за текÑÑ‚","textarea":"Големо поле за текÑÑ‚","hiddenField":"Скриено поле","button":"Button","select":"Selection Field","imageButton":"Копче-Ñлика","notSet":"<not set>","id":"Id","name":"Name","langDir":"ÐаÑока на јазик","langDirLtr":"Лево кон деÑно","langDirRtl":"ДеÑно кон лево","langCode":"Код на јазик","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Стил","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"Општо","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Опции","target":"Target","targetNew":"Ðов прозорец (_blank)","targetTop":"Ðајгорниот прозорец (_top)","targetSelf":"ИÑтиот прозорец (_self)","targetParent":"Прозорец-родител (_parent)","langDirLTR":"Лево кон деÑно","langDirRTL":"ДеÑно кон лево","styles":"Стил","cssClasses":"Stylesheet Classes","width":"Широчина","height":"ВиÑочина","align":"Alignment","left":"Лево","right":"ДеÑно","center":"Во Ñредина","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"Горе","alignMiddle":"Средина","alignBottom":"Доле","alignNone":"Ðикое","invalidValue":"Ðевалидна вредноÑÑ‚","invalidHeight":"ВиÑочината мора да биде број.","invalidWidth":"Широчината мора да биде број.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/mn.js b/core/assets/vendor/ckeditor/lang/mn.js index 6fec22910baa..f5b45f2e3b86 100644 --- a/core/assets/vendor/ckeditor/lang/mn.js +++ b/core/assets/vendor/ckeditor/lang/mn.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['mn']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Өмнөх үйлдлÑÑ ÑÑргÑÑÑ…","undo":"Хүчингүй болгох"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"ХолбооÑууд","insert":"Оруулах","styles":"Загварууд","colors":"Онгөнүүд","tools":"Ð¥ÑÑ€ÑгÑлүүд"},"toolbars":"БолоÑруулагчийн Ñ…ÑÑ€ÑгÑлийн Ñамбар"},"table":{"border":"ХүрÑÑний Ñ…ÑмжÑÑ","caption":"Тайлбар","cell":{"menu":"Ðүх/зай","insertBefore":"Ðүх/зай өмнө нь оруулах","insertAfter":"Ðүх/зай дараа нь оруулах","deleteCell":"Ðүх уÑтгах","merge":"Ðүх нÑгтÑÑ…","mergeRight":"Баруун тийш нÑгтгÑÑ…","mergeDown":"Доош нÑгтгÑÑ…","splitHorizontal":"Ðүх/зайг боÑоогоор нь туÑгаарлах","splitVertical":"Ðүх/зайг хөндлөнгөөр нь туÑгаарлах","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Ð¥ÑвтÑÑд Ñ‚ÑгшлÑÑ… арга","vAlign":"БоÑоод Ñ‚ÑгшлÑÑ… арга","alignBaseline":"Baseline","bgColor":"ДÑвÑгÑÑ€ өнгө","borderColor":"ХүрÑÑний өнгө","data":"Data","header":"Header","yes":"Тийм","no":"Үгүй","invalidWidth":"Ðүдний өргөн нь тоо байх Ñ‘Ñтой.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Сонгох"},"cellPad":"Ðүх доторлох(padding)","cellSpace":"Ðүх хоорондын зай (spacing)","column":{"menu":"Багана","insertBefore":"Багана өмнө нь оруулах","insertAfter":"Багана дараа нь оруулах","deleteColumn":"Багана уÑтгах"},"columns":"Багана","deleteTable":"Ð¥Ò¯ÑнÑгт уÑтгах","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Ð¥Ò¯ÑнÑгтийн өргөн нь тоо байх Ñ‘Ñтой.","menu":"Ð¥Ò¯ÑнÑгт","row":{"menu":"Мөр","insertBefore":"Мөр өмнө нь оруулах","insertAfter":"Мөр дараа нь оруулах","deleteRow":"Мөр уÑтгах"},"rows":"Мөр","summary":"Тайлбар","title":"Ð¥Ò¯ÑнÑгт","toolbar":"Ð¥Ò¯ÑнÑгт","widthPc":"хувь","widthPx":"цÑг","widthUnit":"өргөний нÑгж"},"stylescombo":{"label":"Загвар","panelTitle":"Загвар Ñ…ÑлбÑржүүлÑÑ…","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Онцгой Ñ‚ÑмдÑгт Ñонгох","toolbar":"Онцгой Ñ‚ÑмдÑгт оруулах"},"sourcedialog":{"toolbar":"Код","title":"Код"},"sourcearea":{"toolbar":"Код"},"showblocks":{"toolbar":"Хавтангуудыг харуулах"},"removeformat":{"toolbar":"Параргафын загварыг авч хаÑÑ…"},"pastetext":{"button":"Ðнгийн бичвÑÑ€ÑÑÑ€ буулгах","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Ðнгийн бичвÑÑ€ÑÑÑ€ буулгах"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Word-Ð¾Ð¾Ñ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…","toolbar":"Word-Ð¾Ð¾Ñ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"ДÑлгÑц дүүргÑÑ…","minimize":"Цонхыг багÑгаж харуулах"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"ЦÑгтÑй жагÑаалт","numberedlist":"ДугаарлагдÑан жагÑаалт"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Догол мөр хаÑах","outdent":"Догол мөр нÑмÑÑ…"},"image2":{"alt":"Зургийг орлох бичвÑÑ€","btnUpload":"Үүнийг ÑервÑррүү илгÑÑ","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Зурагны мÑдÑÑлÑл","lockRatio":"Радио түгжих","menu":"Зураг","pathName":"image","pathNameCaption":"caption","resetSize":"Ñ…ÑмжÑÑ Ð´Ð°Ñ…Ð¸Ð½ оноох","resizer":"Click and drag to resize","title":"Зураг","uploadTab":"ИлгÑÑж ачаалах","urlMissing":"Зургийн ÑÑ… Ñурвалжийн хаÑг (URL) байхгүй байна.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Хөндлөн Ð·ÑƒÑ€Ð°Ð°Ñ Ð¾Ñ€ÑƒÑƒÐ»Ð°Ñ…"},"format":{"label":"Параргафын загвар","panelTitle":"Параргафын загвар","tag_address":"ХаÑг","tag_div":"Paragraph (DIV)","tag_h1":"Гарчиг 1","tag_h2":"Гарчиг 2","tag_h3":"Гарчиг 3","tag_h4":"Гарчиг 4","tag_h5":"Гарчиг 5","tag_h6":"Гарчиг 6","tag_p":"Ð¥Ñвийн","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Хуулах","copyError":"Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдÑлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хоÑлолыг ашиглана уу.","cut":"Хайчлах","cutError":"Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдÑлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хоÑлолыг ашиглана уу.","paste":"Буулгах","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"ИшлÑл Ñ…ÑÑÑг"},"basicstyles":{"bold":"Тод бүдүүн","italic":"Ðалуу","strike":"Дундуур нь зурааÑтай болгох","subscript":"Суурь болгох","superscript":"ЗÑÑ€Ñг болгох","underline":"Доогуур нь зурааÑтай болгох"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Ð¥ÑлбÑрт бичвÑÑ€ боловÑруулагч","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"ҮйлчлÑгч тооцоолуур (ÑервÑÑ€)-ийг үзÑÑ…","url":"цахим хуудаÑны хаÑг (URL)","protocol":"Протокол","upload":"ИлгÑÑж ачаалах","uploadSubmit":"Үүнийг үйлчлÑгч тооцоолуур (Ñервер) лүү илгÑÑÑ…","image":"Зураг","flash":"Флаш хөдөлгөөнтÑй зураг","form":"МаÑгт","checkbox":"ТÑмдÑглÑÑний нүд","radio":"Радио товчлуур","textField":"БичвÑрийн талбар","textarea":"БичвÑрийн зай","hiddenField":"Далд талбар","button":"Товчлуур","select":"Сонголтын талбар","imageButton":"Зургий товчуур","notSet":"<тохируулаагүй>","id":"Id (техникийн нÑÑ€)","name":"ÐÑÑ€","langDir":"Ð¥Ñлний чиглÑл","langDirLtr":"ЗүүнÑÑÑ Ð±Ð°Ñ€ÑƒÑƒÐ½ (LTR)","langDirRtl":"Ð‘Ð°Ñ€ÑƒÑƒÐ½Ð°Ð°Ñ Ð·Ò¯Ò¯Ð½ (RTL)","langCode":"Ð¥Ñлний код","longDescr":"Урт тайлбарын вÑб хаÑг","cssClass":"Ð¥ÑлбÑрийн хуудаÑны ангиуд","advisoryTitle":"Зөвлөх гарчиг","cssStyle":"Загвар","ok":"За","cancel":"Болих","close":"Хаах","preview":"Урьдчилан харах","resize":"Resize","generalTab":"Ерөнхий","advancedTab":"Гүнзгий","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Сонголт","target":"Бай","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Зүүн Ñ‚Ð°Ð»Ð°Ð°Ñ Ð±Ð°Ñ€ÑƒÑƒÐ½ тийшÑÑ (LTR)","langDirRTL":"Баруун Ñ‚Ð°Ð»Ð°Ð°Ñ Ð·Ò¯Ò¯Ð½ тийшÑÑ (RTL)","styles":"Загвар","cssClasses":"Ð¥ÑлбÑрийн хуудаÑны ангиуд","width":"Өргөн","height":"Өндөр","align":"ÐгнÑÑ","left":"Зүүн","right":"Баруун","center":"Төвд","justify":"ТÑгшлÑÑ…","alignLeft":"Зүүн талд тулгах","alignRight":"Баруун талд тулгах","alignCenter":"Align Center","alignTop":"ДÑÑд талд","alignMiddle":"Дунд","alignBottom":"Доод талд","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Өндөр нь тоо байх Ñ‘Ñтой.","invalidWidth":"Өргөн нь тоо байх Ñ‘Ñтой.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['mn']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Өмнөх үйлдлÑÑ ÑÑргÑÑÑ…","undo":"Хүчингүй болгох"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"ХолбооÑууд","insert":"Оруулах","styles":"Загварууд","colors":"Онгөнүүд","tools":"Ð¥ÑÑ€ÑгÑлүүд"},"toolbars":"БолоÑруулагчийн Ñ…ÑÑ€ÑгÑлийн Ñамбар"},"table":{"border":"ХүрÑÑний Ñ…ÑмжÑÑ","caption":"Тайлбар","cell":{"menu":"Ðүх/зай","insertBefore":"Ðүх/зай өмнө нь оруулах","insertAfter":"Ðүх/зай дараа нь оруулах","deleteCell":"Ðүх уÑтгах","merge":"Ðүх нÑгтÑÑ…","mergeRight":"Баруун тийш нÑгтгÑÑ…","mergeDown":"Доош нÑгтгÑÑ…","splitHorizontal":"Ðүх/зайг боÑоогоор нь туÑгаарлах","splitVertical":"Ðүх/зайг хөндлөнгөөр нь туÑгаарлах","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Ð¥ÑвтÑÑд Ñ‚ÑгшлÑÑ… арга","vAlign":"БоÑоод Ñ‚ÑгшлÑÑ… арга","alignBaseline":"Baseline","bgColor":"ДÑвÑгÑÑ€ өнгө","borderColor":"ХүрÑÑний өнгө","data":"Data","header":"Header","yes":"Тийм","no":"Үгүй","invalidWidth":"Ðүдний өргөн нь тоо байх Ñ‘Ñтой.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Сонгох"},"cellPad":"Ðүх доторлох(padding)","cellSpace":"Ðүх хоорондын зай (spacing)","column":{"menu":"Багана","insertBefore":"Багана өмнө нь оруулах","insertAfter":"Багана дараа нь оруулах","deleteColumn":"Багана уÑтгах"},"columns":"Багана","deleteTable":"Ð¥Ò¯ÑнÑгт уÑтгах","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Ð¥Ò¯ÑнÑгтийн өргөн нь тоо байх Ñ‘Ñтой.","menu":"Ð¥Ò¯ÑнÑгт","row":{"menu":"Мөр","insertBefore":"Мөр өмнө нь оруулах","insertAfter":"Мөр дараа нь оруулах","deleteRow":"Мөр уÑтгах"},"rows":"Мөр","summary":"Тайлбар","title":"Ð¥Ò¯ÑнÑгт","toolbar":"Ð¥Ò¯ÑнÑгт","widthPc":"хувь","widthPx":"цÑг","widthUnit":"өргөний нÑгж"},"stylescombo":{"label":"Загвар","panelTitle":"Загвар Ñ…ÑлбÑржүүлÑÑ…","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Онцгой Ñ‚ÑмдÑгт Ñонгох","toolbar":"Онцгой Ñ‚ÑмдÑгт оруулах"},"sourcedialog":{"toolbar":"Код","title":"Код"},"sourcearea":{"toolbar":"Код"},"showblocks":{"toolbar":"Хавтангуудыг харуулах"},"removeformat":{"toolbar":"Параргафын загварыг авч хаÑÑ…"},"pastetext":{"button":"Ðнгийн бичвÑÑ€ÑÑÑ€ буулгах","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Ðнгийн бичвÑÑ€ÑÑÑ€ буулгах"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Word-Ð¾Ð¾Ñ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…","toolbar":"Word-Ð¾Ð¾Ñ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"ДÑлгÑц дүүргÑÑ…","minimize":"Цонхыг багÑгаж харуулах"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"ЦÑгтÑй жагÑаалт","numberedlist":"ДугаарлагдÑан жагÑаалт"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Догол мөр хаÑах","outdent":"Догол мөр нÑмÑÑ…"},"image2":{"alt":"Зургийг орлох бичвÑÑ€","btnUpload":"Үүнийг ÑервÑррүү илгÑÑ","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Зурагны мÑдÑÑлÑл","lockRatio":"Радио түгжих","menu":"Зураг","pathName":"image","pathNameCaption":"caption","resetSize":"Ñ…ÑмжÑÑ Ð´Ð°Ñ…Ð¸Ð½ оноох","resizer":"Click and drag to resize","title":"Зураг","uploadTab":"ИлгÑÑж ачаалах","urlMissing":"Зургийн ÑÑ… Ñурвалжийн хаÑг (URL) байхгүй байна.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Хөндлөн Ð·ÑƒÑ€Ð°Ð°Ñ Ð¾Ñ€ÑƒÑƒÐ»Ð°Ñ…"},"format":{"label":"Параргафын загвар","panelTitle":"Параргафын загвар","tag_address":"ХаÑг","tag_div":"Paragraph (DIV)","tag_h1":"Гарчиг 1","tag_h2":"Гарчиг 2","tag_h3":"Гарчиг 3","tag_h4":"Гарчиг 4","tag_h5":"Гарчиг 5","tag_h6":"Гарчиг 6","tag_p":"Ð¥Ñвийн","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Хуулах","copyError":"Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдÑлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хоÑлолыг ашиглана уу.","cut":"Хайчлах","cutError":"Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдÑлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хоÑлолыг ашиглана уу.","paste":"Буулгах","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"ИшлÑл Ñ…ÑÑÑг"},"basicstyles":{"bold":"Тод бүдүүн","italic":"Ðалуу","strike":"Дундуур нь зурааÑтай болгох","subscript":"Суурь болгох","superscript":"ЗÑÑ€Ñг болгох","underline":"Доогуур нь зурааÑтай болгох"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Ð¥ÑлбÑрт бичвÑÑ€ боловÑруулагч","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"ҮйлчлÑгч тооцоолуур (ÑервÑÑ€)-ийг үзÑÑ…","url":"цахим хуудаÑны хаÑг (URL)","protocol":"Протокол","upload":"ИлгÑÑж ачаалах","uploadSubmit":"Үүнийг үйлчлÑгч тооцоолуур (Ñервер) лүү илгÑÑÑ…","image":"Зураг","form":"МаÑгт","checkbox":"ТÑмдÑглÑÑний нүд","radio":"Радио товчлуур","textField":"БичвÑрийн талбар","textarea":"БичвÑрийн зай","hiddenField":"Далд талбар","button":"Товчлуур","select":"Сонголтын талбар","imageButton":"Зургий товчуур","notSet":"<тохируулаагүй>","id":"Id (техникийн нÑÑ€)","name":"ÐÑÑ€","langDir":"Ð¥Ñлний чиглÑл","langDirLtr":"ЗүүнÑÑÑ Ð±Ð°Ñ€ÑƒÑƒÐ½ (LTR)","langDirRtl":"Ð‘Ð°Ñ€ÑƒÑƒÐ½Ð°Ð°Ñ Ð·Ò¯Ò¯Ð½ (RTL)","langCode":"Ð¥Ñлний код","longDescr":"Урт тайлбарын вÑб хаÑг","cssClass":"Ð¥ÑлбÑрийн хуудаÑны ангиуд","advisoryTitle":"Зөвлөх гарчиг","cssStyle":"Загвар","ok":"За","cancel":"Болих","close":"Хаах","preview":"Урьдчилан харах","resize":"Resize","generalTab":"Ерөнхий","advancedTab":"Гүнзгий","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Сонголт","target":"Бай","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Зүүн Ñ‚Ð°Ð»Ð°Ð°Ñ Ð±Ð°Ñ€ÑƒÑƒÐ½ тийшÑÑ (LTR)","langDirRTL":"Баруун Ñ‚Ð°Ð»Ð°Ð°Ñ Ð·Ò¯Ò¯Ð½ тийшÑÑ (RTL)","styles":"Загвар","cssClasses":"Ð¥ÑлбÑрийн хуудаÑны ангиуд","width":"Өргөн","height":"Өндөр","align":"ÐгнÑÑ","left":"Зүүн","right":"Баруун","center":"Төвд","justify":"ТÑгшлÑÑ…","alignLeft":"Зүүн талд тулгах","alignRight":"Баруун талд тулгах","alignCenter":"Align Center","alignTop":"ДÑÑд талд","alignMiddle":"Дунд","alignBottom":"Доод талд","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Өндөр нь тоо байх Ñ‘Ñтой.","invalidWidth":"Өргөн нь тоо байх Ñ‘Ñтой.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ms.js b/core/assets/vendor/ckeditor/lang/ms.js index 135d76fa8781..a2e2eebcd210 100644 --- a/core/assets/vendor/ckeditor/lang/ms.js +++ b/core/assets/vendor/ckeditor/lang/ms.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ms']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Ulangkan","undo":"Batalkan"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Saiz Border","caption":"Keterangan","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Buangkan Sel-sel","merge":"Cantumkan Sel-sel","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Tambahan Ruang Sel","cellSpace":"Ruangan Antara Sel","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Buangkan Lajur"},"columns":"Jaluran","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Ciri-ciri Jadual","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Buangkan Baris"},"rows":"Barisan","summary":"Summary","title":"Ciri-ciri Jadual","toolbar":"Jadual","widthPc":"peratus","widthPx":"piksel-piksel","widthUnit":"width unit"},"stylescombo":{"label":"Stail","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Sila pilih huruf istimewa","toolbar":"Masukkan Huruf Istimewa"},"sourcedialog":{"toolbar":"Sumber","title":"Sumber"},"sourcearea":{"toolbar":"Sumber"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Buang Format"},"pastetext":{"button":"Tampal sebagai text biasa","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Tampal sebagai text biasa"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Tampal dari Word","toolbar":"Tampal dari Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Senarai tidak bernombor","numberedlist":"Senarai bernombor"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Tambahkan Inden","outdent":"Kurangkan Inden"},"image2":{"alt":"Text Alternatif","btnUpload":"Hantar ke Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Info Imej","lockRatio":"Tetapkan Nisbah","menu":"Ciri-ciri Imej","pathName":"image","pathNameCaption":"caption","resetSize":"Saiz Set Semula","resizer":"Click and drag to resize","title":"Ciri-ciri Imej","uploadTab":"Muat Naik","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Masukkan Garisan Membujur"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Alamat","tag_div":"Perenggan (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Telah Diformat"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Salin","copyError":"Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).","cut":"Potong","cutError":"Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).","paste":"Tampal","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protokol","upload":"Muat Naik","uploadSubmit":"Hantar ke Server","image":"Gambar","flash":"Flash","form":"Borang","checkbox":"Checkbox","radio":"Butang Radio","textField":"Text Field","textarea":"Textarea","hiddenField":"Field Tersembunyi","button":"Butang","select":"Field Pilihan","imageButton":"Butang Bergambar","notSet":"<tidak di set>","id":"Id","name":"Nama","langDir":"Arah Tulisan","langDirLtr":"Kiri ke Kanan (LTR)","langDirRtl":"Kanan ke Kiri (RTL)","langCode":"Kod Bahasa","longDescr":"Butiran Panjang URL","cssClass":"Kelas-kelas Stylesheet","advisoryTitle":"Tajuk Makluman","cssStyle":"Stail","ok":"OK","cancel":"Batal","close":"Tutup","preview":"Prebiu","resize":"Resize","generalTab":"Umum","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Sasaran","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","styles":"Stail","cssClasses":"Kelas-kelas Stylesheet","width":"Lebar","height":"Tinggi","align":"Jajaran","left":"Kiri","right":"Kanan","center":"Tengah","justify":"Jajaran Blok","alignLeft":"Jajaran Kiri","alignRight":"Jajaran Kanan","alignCenter":"Align Center","alignTop":"Atas","alignMiddle":"Pertengahan","alignBottom":"Bawah","alignNone":"None","invalidValue":"Nilai tidak sah.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['ms']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"Ulangkan","undo":"Batalkan"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"table":{"border":"Saiz Border","caption":"Keterangan","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Buangkan Sel-sel","merge":"Cantumkan Sel-sel","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Tambahan Ruang Sel","cellSpace":"Ruangan Antara Sel","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Buangkan Lajur"},"columns":"Jaluran","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Ciri-ciri Jadual","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Buangkan Baris"},"rows":"Barisan","summary":"Summary","title":"Ciri-ciri Jadual","toolbar":"Jadual","widthPc":"peratus","widthPx":"piksel-piksel","widthUnit":"width unit"},"stylescombo":{"label":"Stail","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"Sila pilih huruf istimewa","toolbar":"Masukkan Huruf Istimewa"},"sourcedialog":{"toolbar":"Sumber","title":"Sumber"},"sourcearea":{"toolbar":"Sumber"},"showblocks":{"toolbar":"Show Blocks"},"removeformat":{"toolbar":"Buang Format"},"pastetext":{"button":"Tampal sebagai text biasa","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Tampal sebagai text biasa"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Tampal dari Word","toolbar":"Tampal dari Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"Senarai tidak bernombor","numberedlist":"Senarai bernombor"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"Tambahkan Inden","outdent":"Kurangkan Inden"},"image2":{"alt":"Text Alternatif","btnUpload":"Hantar ke Server","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"Info Imej","lockRatio":"Tetapkan Nisbah","menu":"Ciri-ciri Imej","pathName":"image","pathNameCaption":"caption","resetSize":"Saiz Set Semula","resizer":"Click and drag to resize","title":"Ciri-ciri Imej","uploadTab":"Muat Naik","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Masukkan Garisan Membujur"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Alamat","tag_div":"Perenggan (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Telah Diformat"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Salin","copyError":"Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).","cut":"Potong","cutError":"Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).","paste":"Tampal","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strike Through","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protokol","upload":"Muat Naik","uploadSubmit":"Hantar ke Server","image":"Gambar","form":"Borang","checkbox":"Checkbox","radio":"Butang Radio","textField":"Text Field","textarea":"Textarea","hiddenField":"Field Tersembunyi","button":"Butang","select":"Field Pilihan","imageButton":"Butang Bergambar","notSet":"<tidak di set>","id":"Id","name":"Nama","langDir":"Arah Tulisan","langDirLtr":"Kiri ke Kanan (LTR)","langDirRtl":"Kanan ke Kiri (RTL)","langCode":"Kod Bahasa","longDescr":"Butiran Panjang URL","cssClass":"Kelas-kelas Stylesheet","advisoryTitle":"Tajuk Makluman","cssStyle":"Stail","ok":"OK","cancel":"Batal","close":"Tutup","preview":"Prebiu","resize":"Resize","generalTab":"Umum","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Sasaran","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Kiri ke Kanan (LTR)","langDirRTL":"Kanan ke Kiri (RTL)","styles":"Stail","cssClasses":"Kelas-kelas Stylesheet","width":"Lebar","height":"Tinggi","align":"Jajaran","left":"Kiri","right":"Kanan","center":"Tengah","justify":"Jajaran Blok","alignLeft":"Jajaran Kiri","alignRight":"Jajaran Kanan","alignCenter":"Align Center","alignTop":"Atas","alignMiddle":"Pertengahan","alignBottom":"Bawah","alignNone":"None","invalidValue":"Nilai tidak sah.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/nb.js b/core/assets/vendor/ckeditor/lang/nb.js index 34c681ebc286..699fec015165 100644 --- a/core/assets/vendor/ckeditor/lang/nb.js +++ b/core/assets/vendor/ckeditor/lang/nb.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['nb']={"widget":{"move":"Klikk og dra for Ã¥ flytte","label":"Widget %1"},"undo":{"redo":"Gjør om","undo":"Angre"},"toolbar":{"toolbarCollapse":"Skjul verktøylinje","toolbarExpand":"Vis verktøylinje","toolbarGroups":{"document":"Dokument","clipboard":"Utklippstavle/Angre","editing":"Redigering","forms":"Skjema","basicstyles":"Basisstiler","paragraph":"Avsnitt","links":"Lenker","insert":"Innsetting","styles":"Stiler","colors":"Farger","tools":"Verktøy"},"toolbars":"Verktøylinjer for editor"},"table":{"border":"Rammestørrelse","caption":"Tittel","cell":{"menu":"Celle","insertBefore":"Sett inn celle før","insertAfter":"Sett inn celle etter","deleteCell":"Slett celler","merge":"SlÃ¥ sammen celler","mergeRight":"SlÃ¥ sammen høyre","mergeDown":"SlÃ¥ sammen ned","splitHorizontal":"Del celle horisontalt","splitVertical":"Del celle vertikalt","title":"Celleegenskaper","cellType":"Celletype","rowSpan":"Radspenn","colSpan":"Kolonnespenn","wordWrap":"Tekstbrytning","hAlign":"Horisontal justering","vAlign":"Vertikal justering","alignBaseline":"Grunnlinje","bgColor":"Bakgrunnsfarge","borderColor":"Rammefarge","data":"Data","header":"Overskrift","yes":"Ja","no":"Nei","invalidWidth":"Cellebredde mÃ¥ være et tall.","invalidHeight":"Cellehøyde mÃ¥ være et tall.","invalidRowSpan":"Radspenn mÃ¥ være et heltall.","invalidColSpan":"Kolonnespenn mÃ¥ være et heltall.","chooseColor":"Velg"},"cellPad":"Cellepolstring","cellSpace":"Cellemarg","column":{"menu":"Kolonne","insertBefore":"Sett inn kolonne før","insertAfter":"Sett inn kolonne etter","deleteColumn":"Slett kolonner"},"columns":"Kolonner","deleteTable":"Slett tabell","headers":"Overskrifter","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første rad","heightUnit":"height unit","invalidBorder":"Rammestørrelse mÃ¥ være et tall.","invalidCellPadding":"Cellepolstring mÃ¥ være et positivt tall.","invalidCellSpacing":"Cellemarg mÃ¥ være et positivt tall.","invalidCols":"Antall kolonner mÃ¥ være et tall større enn 0.","invalidHeight":"Tabellhøyde mÃ¥ være et tall.","invalidRows":"Antall rader mÃ¥ være et tall større enn 0.","invalidWidth":"Tabellbredde mÃ¥ være et tall.","menu":"Egenskaper for tabell","row":{"menu":"Rader","insertBefore":"Sett inn rad før","insertAfter":"Sett inn rad etter","deleteRow":"Slett rader"},"rows":"Rader","summary":"Sammendrag","title":"Egenskaper for tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"piksler","widthUnit":"Bredde-enhet"},"stylescombo":{"label":"Stil","panelTitle":"Stilformater","panelTitle1":"Blokkstiler","panelTitle2":"Inlinestiler","panelTitle3":"Objektstiler"},"specialchar":{"options":"Alternativer for spesialtegn","title":"Velg spesialtegn","toolbar":"Sett inn spesialtegn"},"sourcedialog":{"toolbar":"Kilde","title":"Kilde"},"sourcearea":{"toolbar":"Kilde"},"showblocks":{"toolbar":"Vis blokker"},"removeformat":{"toolbar":"Fjern formatering"},"pastetext":{"button":"Lim inn som ren tekst","pasteNotification":"Trykk %1 for Ã¥ lime inn. Nettleseren din støtter ikke Ã¥ lime inn med knappen i verktøylinjen eller høyreklikkmenyen.","title":"Lim inn som ren tekst"},"pastefromword":{"confirmCleanup":"Teksten du limer inn ser ut til Ã¥ være kopiert fra Word. Vil du renske den før du limer den inn?","error":"Det var ikke mulig Ã¥ renske den innlimte teksten pÃ¥ grunn av en intern feil","title":"Lim inn fra Word","toolbar":"Lim inn fra Word"},"notification":{"closed":"Varsling lukket."},"maximize":{"maximize":"Maksimer","minimize":"Minimer"},"magicline":{"title":"Sett inn nytt avsnitt her"},"list":{"bulletedlist":"Legg til / fjern punktliste","numberedlist":"Legg til / fjern nummerert liste"},"language":{"button":"Sett sprÃ¥k","remove":"Fjern sprÃ¥k"},"indent":{"indent":"Øk innrykk","outdent":"Reduser innrykk"},"image2":{"alt":"Alternativ tekst","btnUpload":"Send det til serveren","captioned":"Bilde med bildetekst","captionPlaceholder":"Bildetekst","infoTab":"Bildeinformasjon","lockRatio":"LÃ¥s forhold","menu":"Bildeegenskaper","pathName":"bilde","pathNameCaption":"bildetekst","resetSize":"Tilbakestill størrelse","resizer":"Klikk og dra for Ã¥ endre størrelse","title":"Bildeegenskaper","uploadTab":"Last opp","urlMissing":"Bildets adresse mangler.","altMissing":"Alternativ tekst mangler."},"horizontalrule":{"toolbar":"Sett inn horisontal linje"},"format":{"label":"Format","panelTitle":"Avsnittsformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formatert"},"filetools":{"loadError":"Feil oppsto under filinnlesing.","networkError":"Nettverksfeil oppsto under filopplasting.","httpError404":"HTTP-feil oppsto under filopplasting (404: Fant ikke filen).","httpError403":"HTTP-feil oppsto under filopplasting (403: Ikke tillatt).","httpError":"HTTP-feil oppsto under filopplasting (feilstatus: %1).","noUrlError":"URL for opplasting er ikke oppgitt.","responseError":"Ukorrekt svar fra serveren."},"elementspath":{"eleLabel":"Element-sti","eleTitle":"%1 element"},"contextmenu":{"options":"Alternativer for høyreklikkmeny"},"clipboard":{"copy":"Kopier","copyError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+C).","cut":"Klipp ut","cutError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+X).","paste":"Lim inn","pasteNotification":"Trykk %1 for Ã¥ lime inn. Nettleseren din støtter ikke Ã¥ lime inn med knappen i verktøylinjen eller høyreklikkmenyen.","pasteArea":"InnlimingsomrÃ¥de","pasteMsg":"Lim inn innholdet i omrÃ¥det nedenfor og klikk OK."},"blockquote":{"toolbar":"Blokksitat"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Gjennomstreking","subscript":"Senket skrift","superscript":"Hevet skrift","underline":"Understreking"},"about":{"copy":"Copyright © $1. Alle rettigheter reservert.","dlgTitle":"Om CKEditor 4","moreInfo":"For lisensieringsinformasjon, vennligst besøk vÃ¥rt nettsted:"},"editor":"Rikteksteditor","editorPanel":"Panel for rikteksteditor","common":{"editorHelp":"Trykk ALT 0 for hjelp","browseServer":"Bla gjennom tjener","url":"URL","protocol":"Protokoll","upload":"Last opp","uploadSubmit":"Send det til serveren","image":"Bilde","flash":"Flash","form":"Skjema","checkbox":"Avmerkingsboks","radio":"Alternativknapp","textField":"Tekstboks","textarea":"TekstomrÃ¥de","hiddenField":"Skjult felt","button":"Knapp","select":"Rullegardinliste","imageButton":"Bildeknapp","notSet":"<ikke satt>","id":"Id","name":"Navn","langDir":"SprÃ¥kretning","langDirLtr":"Venstre til høyre (LTR)","langDirRtl":"Høyre til venstre (RTL)","langCode":"SprÃ¥kkode","longDescr":"Utvidet beskrivelse","cssClass":"Stilarkklasser","advisoryTitle":"Tittel","cssStyle":"Stil","ok":"OK","cancel":"Avbryt","close":"Lukk","preview":"ForhÃ¥ndsvis","resize":"Dra for Ã¥ skalere","generalTab":"Generelt","advancedTab":"Avansert","validateNumberFailed":"Denne verdien er ikke et tall.","confirmNewPage":"Alle ulagrede endringer som er gjort i dette innholdet vil gÃ¥ tapt. Er du sikker pÃ¥ at du vil laste en ny side?","confirmCancel":"Du har endret noen alternativer. Er du sikker pÃ¥ at du vil lukke dialogvinduet?","options":"Valg","target":"MÃ¥l","targetNew":"Nytt vindu (_blank)","targetTop":"Hele vinduet (_top)","targetSelf":"Samme vindu (_self)","targetParent":"Foreldrevindu (_parent)","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","styles":"Stil","cssClasses":"Stilarkklasser","width":"Bredde","height":"Høyde","align":"Juster","left":"Venstre","right":"Høyre","center":"Midtstill","justify":"Blokkjuster","alignLeft":"Venstrejuster","alignRight":"Høyrejuster","alignCenter":"Midtstill","alignTop":"Topp","alignMiddle":"Midten","alignBottom":"Bunn","alignNone":"Ingen","invalidValue":"Ugyldig verdi.","invalidHeight":"Høyde mÃ¥ være et tall.","invalidWidth":"Bredde mÃ¥ være et tall.","invalidLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig mÃ¥leenhet (%2).","invalidCssLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig CSS-mÃ¥lingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig HTML-mÃ¥lingsenhet (px eller %).","invalidInlineStyle":"Verdi angitt for inline stil mÃ¥ bestÃ¥ av en eller flere sett med formatet \"navn : verdi\", separert med semikolon","cssLengthTooltip":"Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, utilgjenglig</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Mellomrom","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Tastatursnarvei","optionDefault":"Standard"}}; \ No newline at end of file +CKEDITOR.lang['nb']={"widget":{"move":"Klikk og dra for Ã¥ flytte","label":"Widget %1"},"undo":{"redo":"Gjør om","undo":"Angre"},"toolbar":{"toolbarCollapse":"Skjul verktøylinje","toolbarExpand":"Vis verktøylinje","toolbarGroups":{"document":"Dokument","clipboard":"Utklippstavle/Angre","editing":"Redigering","forms":"Skjema","basicstyles":"Basisstiler","paragraph":"Avsnitt","links":"Lenker","insert":"Innsetting","styles":"Stiler","colors":"Farger","tools":"Verktøy"},"toolbars":"Verktøylinjer for editor"},"table":{"border":"Rammestørrelse","caption":"Tittel","cell":{"menu":"Celle","insertBefore":"Sett inn celle før","insertAfter":"Sett inn celle etter","deleteCell":"Slett celler","merge":"SlÃ¥ sammen celler","mergeRight":"SlÃ¥ sammen høyre","mergeDown":"SlÃ¥ sammen ned","splitHorizontal":"Del celle horisontalt","splitVertical":"Del celle vertikalt","title":"Celleegenskaper","cellType":"Celletype","rowSpan":"Radspenn","colSpan":"Kolonnespenn","wordWrap":"Tekstbrytning","hAlign":"Horisontal justering","vAlign":"Vertikal justering","alignBaseline":"Grunnlinje","bgColor":"Bakgrunnsfarge","borderColor":"Rammefarge","data":"Data","header":"Overskrift","yes":"Ja","no":"Nei","invalidWidth":"Cellebredde mÃ¥ være et tall.","invalidHeight":"Cellehøyde mÃ¥ være et tall.","invalidRowSpan":"Radspenn mÃ¥ være et heltall.","invalidColSpan":"Kolonnespenn mÃ¥ være et heltall.","chooseColor":"Velg"},"cellPad":"Cellepolstring","cellSpace":"Cellemarg","column":{"menu":"Kolonne","insertBefore":"Sett inn kolonne før","insertAfter":"Sett inn kolonne etter","deleteColumn":"Slett kolonner"},"columns":"Kolonner","deleteTable":"Slett tabell","headers":"Overskrifter","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første rad","heightUnit":"height unit","invalidBorder":"Rammestørrelse mÃ¥ være et tall.","invalidCellPadding":"Cellepolstring mÃ¥ være et positivt tall.","invalidCellSpacing":"Cellemarg mÃ¥ være et positivt tall.","invalidCols":"Antall kolonner mÃ¥ være et tall større enn 0.","invalidHeight":"Tabellhøyde mÃ¥ være et tall.","invalidRows":"Antall rader mÃ¥ være et tall større enn 0.","invalidWidth":"Tabellbredde mÃ¥ være et tall.","menu":"Egenskaper for tabell","row":{"menu":"Rader","insertBefore":"Sett inn rad før","insertAfter":"Sett inn rad etter","deleteRow":"Slett rader"},"rows":"Rader","summary":"Sammendrag","title":"Egenskaper for tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"piksler","widthUnit":"Bredde-enhet"},"stylescombo":{"label":"Stil","panelTitle":"Stilformater","panelTitle1":"Blokkstiler","panelTitle2":"Inlinestiler","panelTitle3":"Objektstiler"},"specialchar":{"options":"Alternativer for spesialtegn","title":"Velg spesialtegn","toolbar":"Sett inn spesialtegn"},"sourcedialog":{"toolbar":"Kilde","title":"Kilde"},"sourcearea":{"toolbar":"Kilde"},"showblocks":{"toolbar":"Vis blokker"},"removeformat":{"toolbar":"Fjern formatering"},"pastetext":{"button":"Lim inn som ren tekst","pasteNotification":"Trykk %1 for Ã¥ lime inn. Nettleseren din støtter ikke Ã¥ lime inn med knappen i verktøylinjen eller høyreklikkmenyen.","title":"Lim inn som ren tekst"},"pastefromword":{"confirmCleanup":"Teksten du limer inn ser ut til Ã¥ være kopiert fra Word. Vil du renske den før du limer den inn?","error":"Det var ikke mulig Ã¥ renske den innlimte teksten pÃ¥ grunn av en intern feil","title":"Lim inn fra Word","toolbar":"Lim inn fra Word"},"notification":{"closed":"Varsling lukket."},"maximize":{"maximize":"Maksimer","minimize":"Minimer"},"magicline":{"title":"Sett inn nytt avsnitt her"},"list":{"bulletedlist":"Legg til / fjern punktliste","numberedlist":"Legg til / fjern nummerert liste"},"language":{"button":"Sett sprÃ¥k","remove":"Fjern sprÃ¥k"},"indent":{"indent":"Øk innrykk","outdent":"Reduser innrykk"},"image2":{"alt":"Alternativ tekst","btnUpload":"Send det til serveren","captioned":"Bilde med bildetekst","captionPlaceholder":"Bildetekst","infoTab":"Bildeinformasjon","lockRatio":"LÃ¥s forhold","menu":"Bildeegenskaper","pathName":"bilde","pathNameCaption":"bildetekst","resetSize":"Tilbakestill størrelse","resizer":"Klikk og dra for Ã¥ endre størrelse","title":"Bildeegenskaper","uploadTab":"Last opp","urlMissing":"Bildets adresse mangler.","altMissing":"Alternativ tekst mangler."},"horizontalrule":{"toolbar":"Sett inn horisontal linje"},"format":{"label":"Format","panelTitle":"Avsnittsformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formatert"},"filetools":{"loadError":"Feil oppsto under filinnlesing.","networkError":"Nettverksfeil oppsto under filopplasting.","httpError404":"HTTP-feil oppsto under filopplasting (404: Fant ikke filen).","httpError403":"HTTP-feil oppsto under filopplasting (403: Ikke tillatt).","httpError":"HTTP-feil oppsto under filopplasting (feilstatus: %1).","noUrlError":"URL for opplasting er ikke oppgitt.","responseError":"Ukorrekt svar fra serveren."},"elementspath":{"eleLabel":"Element-sti","eleTitle":"%1 element"},"contextmenu":{"options":"Alternativer for høyreklikkmeny"},"clipboard":{"copy":"Kopier","copyError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+C).","cut":"Klipp ut","cutError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+X).","paste":"Lim inn","pasteNotification":"Trykk %1 for Ã¥ lime inn. Nettleseren din støtter ikke Ã¥ lime inn med knappen i verktøylinjen eller høyreklikkmenyen.","pasteArea":"InnlimingsomrÃ¥de","pasteMsg":"Lim inn innholdet i omrÃ¥det nedenfor og klikk OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Blokksitat"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Gjennomstreking","subscript":"Senket skrift","superscript":"Hevet skrift","underline":"Understreking"},"about":{"copy":"Copyright © $1. Alle rettigheter reservert.","dlgTitle":"Om CKEditor 4","moreInfo":"For lisensieringsinformasjon, vennligst besøk vÃ¥rt nettsted:"},"editor":"Rikteksteditor","editorPanel":"Panel for rikteksteditor","common":{"editorHelp":"Trykk ALT 0 for hjelp","browseServer":"Bla gjennom tjener","url":"URL","protocol":"Protokoll","upload":"Last opp","uploadSubmit":"Send det til serveren","image":"Bilde","form":"Skjema","checkbox":"Avmerkingsboks","radio":"Alternativknapp","textField":"Tekstboks","textarea":"TekstomrÃ¥de","hiddenField":"Skjult felt","button":"Knapp","select":"Rullegardinliste","imageButton":"Bildeknapp","notSet":"<ikke satt>","id":"Id","name":"Navn","langDir":"SprÃ¥kretning","langDirLtr":"Venstre til høyre (LTR)","langDirRtl":"Høyre til venstre (RTL)","langCode":"SprÃ¥kkode","longDescr":"Utvidet beskrivelse","cssClass":"Stilarkklasser","advisoryTitle":"Tittel","cssStyle":"Stil","ok":"OK","cancel":"Avbryt","close":"Lukk","preview":"ForhÃ¥ndsvis","resize":"Dra for Ã¥ skalere","generalTab":"Generelt","advancedTab":"Avansert","validateNumberFailed":"Denne verdien er ikke et tall.","confirmNewPage":"Alle ulagrede endringer som er gjort i dette innholdet vil gÃ¥ tapt. Er du sikker pÃ¥ at du vil laste en ny side?","confirmCancel":"Du har endret noen alternativer. Er du sikker pÃ¥ at du vil lukke dialogvinduet?","options":"Valg","target":"MÃ¥l","targetNew":"Nytt vindu (_blank)","targetTop":"Hele vinduet (_top)","targetSelf":"Samme vindu (_self)","targetParent":"Foreldrevindu (_parent)","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","styles":"Stil","cssClasses":"Stilarkklasser","width":"Bredde","height":"Høyde","align":"Juster","left":"Venstre","right":"Høyre","center":"Midtstill","justify":"Blokkjuster","alignLeft":"Venstrejuster","alignRight":"Høyrejuster","alignCenter":"Midtstill","alignTop":"Topp","alignMiddle":"Midten","alignBottom":"Bunn","alignNone":"Ingen","invalidValue":"Ugyldig verdi.","invalidHeight":"Høyde mÃ¥ være et tall.","invalidWidth":"Bredde mÃ¥ være et tall.","invalidLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig mÃ¥leenhet (%2).","invalidCssLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig CSS-mÃ¥lingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig HTML-mÃ¥lingsenhet (px eller %).","invalidInlineStyle":"Verdi angitt for inline stil mÃ¥ bestÃ¥ av en eller flere sett med formatet \"navn : verdi\", separert med semikolon","cssLengthTooltip":"Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, utilgjenglig</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Mellomrom","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Tastatursnarvei","optionDefault":"Standard"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/nl.js b/core/assets/vendor/ckeditor/lang/nl.js index 3b835b625a06..75e89404f5c7 100644 --- a/core/assets/vendor/ckeditor/lang/nl.js +++ b/core/assets/vendor/ckeditor/lang/nl.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['nl']={"widget":{"move":"Klik en sleep om te verplaatsen","label":"%1 widget"},"undo":{"redo":"Opnieuw uitvoeren","undo":"Ongedaan maken"},"toolbar":{"toolbarCollapse":"Werkbalk inklappen","toolbarExpand":"Werkbalk uitklappen","toolbarGroups":{"document":"Document","clipboard":"Klembord/Ongedaan maken","editing":"Bewerken","forms":"Formulieren","basicstyles":"Basisstijlen","paragraph":"Paragraaf","links":"Links","insert":"Invoegen","styles":"Stijlen","colors":"Kleuren","tools":"Toepassingen"},"toolbars":"Werkbalken"},"table":{"border":"Randdikte","caption":"Bijschrift","cell":{"menu":"Cel","insertBefore":"Voeg cel in voor","insertAfter":"Voeg cel in na","deleteCell":"Cellen verwijderen","merge":"Cellen samenvoegen","mergeRight":"Voeg samen naar rechts","mergeDown":"Voeg samen naar beneden","splitHorizontal":"Splits cel horizontaal","splitVertical":"Splits cel vertikaal","title":"Celeigenschappen","cellType":"Celtype","rowSpan":"Rijen samenvoegen","colSpan":"Kolommen samenvoegen","wordWrap":"Automatische terugloop","hAlign":"Horizontale uitlijning","vAlign":"Verticale uitlijning","alignBaseline":"Tekstregel","bgColor":"Achtergrondkleur","borderColor":"Randkleur","data":"Gegevens","header":"Kop","yes":"Ja","no":"Nee","invalidWidth":"De celbreedte moet een getal zijn.","invalidHeight":"De celhoogte moet een getal zijn.","invalidRowSpan":"Rijen samenvoegen moet een heel getal zijn.","invalidColSpan":"Kolommen samenvoegen moet een heel getal zijn.","chooseColor":"Kies"},"cellPad":"Celopvulling","cellSpace":"Celafstand","column":{"menu":"Kolom","insertBefore":"Voeg kolom in voor","insertAfter":"Voeg kolom in na","deleteColumn":"Kolommen verwijderen"},"columns":"Kolommen","deleteTable":"Tabel verwijderen","headers":"Koppen","headersBoth":"Beide","headersColumn":"Eerste kolom","headersNone":"Geen","headersRow":"Eerste rij","heightUnit":"height unit","invalidBorder":"De randdikte moet een getal zijn.","invalidCellPadding":"Celopvulling moet een getal zijn.","invalidCellSpacing":"Celafstand moet een getal zijn.","invalidCols":"Het aantal kolommen moet een getal zijn groter dan 0.","invalidHeight":"De tabelhoogte moet een getal zijn.","invalidRows":"Het aantal rijen moet een getal zijn groter dan 0.","invalidWidth":"De tabelbreedte moet een getal zijn.","menu":"Tabeleigenschappen","row":{"menu":"Rij","insertBefore":"Voeg rij in voor","insertAfter":"Voeg rij in na","deleteRow":"Rijen verwijderen"},"rows":"Rijen","summary":"Samenvatting","title":"Tabeleigenschappen","toolbar":"Tabel","widthPc":"procent","widthPx":"pixels","widthUnit":"eenheid breedte"},"stylescombo":{"label":"Stijl","panelTitle":"Opmaakstijlen","panelTitle1":"Blok stijlen","panelTitle2":"Inline stijlen","panelTitle3":"Object stijlen"},"specialchar":{"options":"Speciale tekens opties","title":"Selecteer speciaal teken","toolbar":"Speciaal teken invoegen"},"sourcedialog":{"toolbar":"Broncode","title":"Broncode"},"sourcearea":{"toolbar":"Broncode"},"showblocks":{"toolbar":"Toon blokken"},"removeformat":{"toolbar":"Opmaak verwijderen"},"pastetext":{"button":"Plakken als platte tekst","pasteNotification":"Plakken met de knop in de werkbalk wordt niet ondersteund door de browser. Gebruik de sneltoets %1 van het toetsenbord.","title":"Plakken als platte tekst"},"pastefromword":{"confirmCleanup":"De tekst die u wilt plakken lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?","error":"Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout","title":"Plakken vanuit Word","toolbar":"Plakken vanuit Word"},"notification":{"closed":"Melding gesloten."},"maximize":{"maximize":"Maximaliseren","minimize":"Minimaliseren"},"magicline":{"title":"Hier paragraaf invoeren"},"list":{"bulletedlist":"Opsomming invoegen","numberedlist":"Genummerde lijst invoegen"},"language":{"button":"Taal instellen","remove":"Taal verwijderen"},"indent":{"indent":"Inspringing vergroten","outdent":"Inspringing verkleinen"},"image2":{"alt":"Alternatieve tekst","btnUpload":"Naar server verzenden","captioned":"Afbeelding met onderschrift","captionPlaceholder":"Onderschrift","infoTab":"Afbeeldingsinformatie","lockRatio":"Verhouding vergrendelen","menu":"Eigenschappen afbeelding","pathName":"afbeelding","pathNameCaption":"onderschrift","resetSize":"Afmetingen herstellen","resizer":"Klik en sleep om te herschalen","title":"Afbeeldingseigenschappen","uploadTab":"Uploaden","urlMissing":"De URL naar de afbeelding ontbreekt.","altMissing":"Alternatieve tekst ontbreekt."},"horizontalrule":{"toolbar":"Horizontale lijn invoegen"},"format":{"label":"Opmaak","panelTitle":"Opmaak","tag_address":"Adres","tag_div":"Normaal (DIV)","tag_h1":"Kop 1","tag_h2":"Kop 2","tag_h3":"Kop 3","tag_h4":"Kop 4","tag_h5":"Kop 5","tag_h6":"Kop 6","tag_p":"Normaal","tag_pre":"Met opmaak"},"filetools":{"loadError":"Fout tijdens lezen van bestand.","networkError":"Netwerkfout tijdens uploaden van bestand.","httpError404":"HTTP fout tijdens uploaden van bestand (404: Bestand niet gevonden).","httpError403":"HTTP fout tijdens uploaden van bestand (403: Verboden).","httpError":"HTTP fout tijdens uploaden van bestand (fout status: %1).","noUrlError":"Upload URL is niet gedefinieerd.","responseError":"Ongeldig antwoord van server."},"elementspath":{"eleLabel":"Elementenpad","eleTitle":"%1 element"},"contextmenu":{"options":"Contextmenu opties"},"clipboard":{"copy":"Kopiëren","copyError":"De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.","cut":"Knippen","cutError":"De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.","paste":"Plakken","pasteNotification":"Plakken met de knop in de werkbalk wordt niet ondersteund door de browser. Gebruik de sneltoets %1 van het toetsenbord.","pasteArea":"Plakgebied","pasteMsg":"Plak de inhoud in het vak hieronder en druk op OK."},"blockquote":{"toolbar":"Citaatblok"},"basicstyles":{"bold":"Vet","italic":"Cursief","strike":"Doorhalen","subscript":"Subscript","superscript":"Superscript","underline":"Onderstrepen"},"about":{"copy":"Copyright © $1. Alle rechten voorbehouden.","dlgTitle":"Over CKEditor 4","moreInfo":"Bezoek onze website voor licentieinformatie:"},"editor":"Tekstverwerker","editorPanel":"Tekstverwerker beheerpaneel","common":{"editorHelp":"Druk ALT 0 voor hulp","browseServer":"Bladeren op server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Naar server verzenden","image":"Afbeelding","flash":"Flash","form":"Formulier","checkbox":"Selectievinkje","radio":"Keuzerondje","textField":"Tekstveld","textarea":"Tekstvak","hiddenField":"Verborgen veld","button":"Knop","select":"Selectieveld","imageButton":"Afbeeldingsknop","notSet":"<niet ingevuld>","id":"Id","name":"Naam","langDir":"Schrijfrichting","langDirLtr":"Links naar rechts (LTR)","langDirRtl":"Rechts naar links (RTL)","langCode":"Taalcode","longDescr":"Lange URL-omschrijving","cssClass":"Stylesheet-klassen","advisoryTitle":"Adviserende titel","cssStyle":"Stijl","ok":"OK","cancel":"Annuleren","close":"Sluiten","preview":"Voorbeeld","resize":"Sleep om te herschalen","generalTab":"Algemeen","advancedTab":"Geavanceerd","validateNumberFailed":"Deze waarde is geen geldig getal.","confirmNewPage":"Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?","confirmCancel":"Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?","options":"Opties","target":"Doelvenster","targetNew":"Nieuw venster (_blank)","targetTop":"Hele venster (_top)","targetSelf":"Zelfde venster (_self)","targetParent":"Origineel venster (_parent)","langDirLTR":"Links naar rechts (LTR)","langDirRTL":"Rechts naar links (RTL)","styles":"Stijl","cssClasses":"Stylesheet-klassen","width":"Breedte","height":"Hoogte","align":"Uitlijning","left":"Links","right":"Rechts","center":"Centreren","justify":"Uitvullen","alignLeft":"Links uitlijnen","alignRight":"Rechts uitlijnen","alignCenter":"Centreren","alignTop":"Boven","alignMiddle":"Midden","alignBottom":"Onder","alignNone":"Geen","invalidValue":"Ongeldige waarde.","invalidHeight":"De hoogte moet een getal zijn.","invalidWidth":"De breedte moet een getal zijn.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige CSS meeteenheid (px, %, in, cm, mm, em, ex, pt of pc).","invalidHtmlLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige HTML meeteenheid (px of %).","invalidInlineStyle":"Waarde voor de online stijl moet bestaan uit een of meerdere tupels met het formaat \"naam : waarde\", gescheiden door puntkomma's.","cssLengthTooltip":"Geef een nummer in voor een waarde in pixels of geef een nummer in met een geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","unavailable":"%1<span class=\"cke_accessibility\">, niet beschikbaar</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Spatie","35":"End","36":"Home","46":"Verwijderen","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Sneltoets","optionDefault":"Standaard"}}; \ No newline at end of file +CKEDITOR.lang['nl']={"widget":{"move":"Klik en sleep om te verplaatsen","label":"%1 widget"},"undo":{"redo":"Opnieuw uitvoeren","undo":"Ongedaan maken"},"toolbar":{"toolbarCollapse":"Werkbalk inklappen","toolbarExpand":"Werkbalk uitklappen","toolbarGroups":{"document":"Document","clipboard":"Klembord/Ongedaan maken","editing":"Bewerken","forms":"Formulieren","basicstyles":"Basisstijlen","paragraph":"Paragraaf","links":"Links","insert":"Invoegen","styles":"Stijlen","colors":"Kleuren","tools":"Toepassingen"},"toolbars":"Werkbalken"},"table":{"border":"Randdikte","caption":"Bijschrift","cell":{"menu":"Cel","insertBefore":"Voeg cel in voor","insertAfter":"Voeg cel in na","deleteCell":"Cellen verwijderen","merge":"Cellen samenvoegen","mergeRight":"Voeg samen naar rechts","mergeDown":"Voeg samen naar beneden","splitHorizontal":"Splits cel horizontaal","splitVertical":"Splits cel vertikaal","title":"Celeigenschappen","cellType":"Celtype","rowSpan":"Rijen samenvoegen","colSpan":"Kolommen samenvoegen","wordWrap":"Automatische terugloop","hAlign":"Horizontale uitlijning","vAlign":"Verticale uitlijning","alignBaseline":"Tekstregel","bgColor":"Achtergrondkleur","borderColor":"Randkleur","data":"Gegevens","header":"Kop","yes":"Ja","no":"Nee","invalidWidth":"De celbreedte moet een getal zijn.","invalidHeight":"De celhoogte moet een getal zijn.","invalidRowSpan":"Rijen samenvoegen moet een heel getal zijn.","invalidColSpan":"Kolommen samenvoegen moet een heel getal zijn.","chooseColor":"Kies"},"cellPad":"Celopvulling","cellSpace":"Celafstand","column":{"menu":"Kolom","insertBefore":"Voeg kolom in voor","insertAfter":"Voeg kolom in na","deleteColumn":"Kolommen verwijderen"},"columns":"Kolommen","deleteTable":"Tabel verwijderen","headers":"Koppen","headersBoth":"Beide","headersColumn":"Eerste kolom","headersNone":"Geen","headersRow":"Eerste rij","heightUnit":"height unit","invalidBorder":"De randdikte moet een getal zijn.","invalidCellPadding":"Celopvulling moet een getal zijn.","invalidCellSpacing":"Celafstand moet een getal zijn.","invalidCols":"Het aantal kolommen moet een getal zijn groter dan 0.","invalidHeight":"De tabelhoogte moet een getal zijn.","invalidRows":"Het aantal rijen moet een getal zijn groter dan 0.","invalidWidth":"De tabelbreedte moet een getal zijn.","menu":"Tabeleigenschappen","row":{"menu":"Rij","insertBefore":"Voeg rij in voor","insertAfter":"Voeg rij in na","deleteRow":"Rijen verwijderen"},"rows":"Rijen","summary":"Samenvatting","title":"Tabeleigenschappen","toolbar":"Tabel","widthPc":"procent","widthPx":"pixels","widthUnit":"eenheid breedte"},"stylescombo":{"label":"Stijl","panelTitle":"Opmaakstijlen","panelTitle1":"Blok stijlen","panelTitle2":"Inline stijlen","panelTitle3":"Object stijlen"},"specialchar":{"options":"Speciale tekens opties","title":"Selecteer speciaal teken","toolbar":"Speciaal teken invoegen"},"sourcedialog":{"toolbar":"Broncode","title":"Broncode"},"sourcearea":{"toolbar":"Broncode"},"showblocks":{"toolbar":"Toon blokken"},"removeformat":{"toolbar":"Opmaak verwijderen"},"pastetext":{"button":"Plakken als platte tekst","pasteNotification":"Plakken met de knop in de werkbalk wordt niet ondersteund door de browser. Gebruik de sneltoets %1 van het toetsenbord.","title":"Plakken als platte tekst"},"pastefromword":{"confirmCleanup":"De tekst die u wilt plakken lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?","error":"Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout","title":"Plakken vanuit Word","toolbar":"Plakken vanuit Word"},"notification":{"closed":"Melding gesloten."},"maximize":{"maximize":"Maximaliseren","minimize":"Minimaliseren"},"magicline":{"title":"Hier paragraaf invoeren"},"list":{"bulletedlist":"Opsomming invoegen","numberedlist":"Genummerde lijst invoegen"},"language":{"button":"Taal instellen","remove":"Taal verwijderen"},"indent":{"indent":"Inspringing vergroten","outdent":"Inspringing verkleinen"},"image2":{"alt":"Alternatieve tekst","btnUpload":"Naar server verzenden","captioned":"Afbeelding met onderschrift","captionPlaceholder":"Onderschrift","infoTab":"Afbeeldingsinformatie","lockRatio":"Verhouding vergrendelen","menu":"Eigenschappen afbeelding","pathName":"afbeelding","pathNameCaption":"onderschrift","resetSize":"Afmetingen herstellen","resizer":"Klik en sleep om te herschalen","title":"Afbeeldingseigenschappen","uploadTab":"Uploaden","urlMissing":"De URL naar de afbeelding ontbreekt.","altMissing":"Alternatieve tekst ontbreekt."},"horizontalrule":{"toolbar":"Horizontale lijn invoegen"},"format":{"label":"Opmaak","panelTitle":"Opmaak","tag_address":"Adres","tag_div":"Normaal (DIV)","tag_h1":"Kop 1","tag_h2":"Kop 2","tag_h3":"Kop 3","tag_h4":"Kop 4","tag_h5":"Kop 5","tag_h6":"Kop 6","tag_p":"Normaal","tag_pre":"Met opmaak"},"filetools":{"loadError":"Fout tijdens lezen van bestand.","networkError":"Netwerkfout tijdens uploaden van bestand.","httpError404":"HTTP fout tijdens uploaden van bestand (404: Bestand niet gevonden).","httpError403":"HTTP fout tijdens uploaden van bestand (403: Verboden).","httpError":"HTTP fout tijdens uploaden van bestand (fout status: %1).","noUrlError":"Upload URL is niet gedefinieerd.","responseError":"Ongeldig antwoord van server."},"elementspath":{"eleLabel":"Elementenpad","eleTitle":"%1 element"},"contextmenu":{"options":"Contextmenu opties"},"clipboard":{"copy":"Kopiëren","copyError":"De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.","cut":"Knippen","cutError":"De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.","paste":"Plakken","pasteNotification":"Plakken met de knop in de werkbalk wordt niet ondersteund door de browser. Gebruik de sneltoets %1 van het toetsenbord.","pasteArea":"Plakgebied","pasteMsg":"Plak de inhoud in het vak hieronder en druk op OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citaatblok"},"basicstyles":{"bold":"Vet","italic":"Cursief","strike":"Doorhalen","subscript":"Subscript","superscript":"Superscript","underline":"Onderstrepen"},"about":{"copy":"Copyright © $1. Alle rechten voorbehouden.","dlgTitle":"Over CKEditor 4","moreInfo":"Bezoek onze website voor licentieinformatie:"},"editor":"Tekstverwerker","editorPanel":"Tekstverwerker beheerpaneel","common":{"editorHelp":"Druk ALT 0 voor hulp","browseServer":"Bladeren op server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Naar server verzenden","image":"Afbeelding","form":"Formulier","checkbox":"Selectievinkje","radio":"Keuzerondje","textField":"Tekstveld","textarea":"Tekstvak","hiddenField":"Verborgen veld","button":"Knop","select":"Selectieveld","imageButton":"Afbeeldingsknop","notSet":"<niet ingevuld>","id":"Id","name":"Naam","langDir":"Schrijfrichting","langDirLtr":"Links naar rechts (LTR)","langDirRtl":"Rechts naar links (RTL)","langCode":"Taalcode","longDescr":"Lange URL-omschrijving","cssClass":"Stylesheet-klassen","advisoryTitle":"Adviserende titel","cssStyle":"Stijl","ok":"OK","cancel":"Annuleren","close":"Sluiten","preview":"Voorbeeld","resize":"Sleep om te herschalen","generalTab":"Algemeen","advancedTab":"Geavanceerd","validateNumberFailed":"Deze waarde is geen geldig getal.","confirmNewPage":"Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?","confirmCancel":"Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?","options":"Opties","target":"Doelvenster","targetNew":"Nieuw venster (_blank)","targetTop":"Hele venster (_top)","targetSelf":"Zelfde venster (_self)","targetParent":"Origineel venster (_parent)","langDirLTR":"Links naar rechts (LTR)","langDirRTL":"Rechts naar links (RTL)","styles":"Stijl","cssClasses":"Stylesheet-klassen","width":"Breedte","height":"Hoogte","align":"Uitlijning","left":"Links","right":"Rechts","center":"Centreren","justify":"Uitvullen","alignLeft":"Links uitlijnen","alignRight":"Rechts uitlijnen","alignCenter":"Centreren","alignTop":"Boven","alignMiddle":"Midden","alignBottom":"Onder","alignNone":"Geen","invalidValue":"Ongeldige waarde.","invalidHeight":"De hoogte moet een getal zijn.","invalidWidth":"De breedte moet een getal zijn.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige CSS meeteenheid (px, %, in, cm, mm, em, ex, pt of pc).","invalidHtmlLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige HTML meeteenheid (px of %).","invalidInlineStyle":"Waarde voor de online stijl moet bestaan uit een of meerdere tupels met het formaat \"naam : waarde\", gescheiden door puntkomma's.","cssLengthTooltip":"Geef een nummer in voor een waarde in pixels of geef een nummer in met een geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","unavailable":"%1<span class=\"cke_accessibility\">, niet beschikbaar</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Spatie","35":"End","36":"Home","46":"Verwijderen","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Sneltoets","optionDefault":"Standaard"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/no.js b/core/assets/vendor/ckeditor/lang/no.js index 31401f2c4afb..8958acf7f393 100644 --- a/core/assets/vendor/ckeditor/lang/no.js +++ b/core/assets/vendor/ckeditor/lang/no.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['no']={"widget":{"move":"Klikk og dra for Ã¥ flytte","label":"Widget %1"},"undo":{"redo":"Gjør om","undo":"Angre"},"toolbar":{"toolbarCollapse":"Skjul verktøylinje","toolbarExpand":"Vis verktøylinje","toolbarGroups":{"document":"Dokument","clipboard":"Utklippstavle/Angre","editing":"Redigering","forms":"Skjema","basicstyles":"Basisstiler","paragraph":"Avsnitt","links":"Lenker","insert":"Innsetting","styles":"Stiler","colors":"Farger","tools":"Verktøy"},"toolbars":"Verktøylinjer for editor"},"table":{"border":"Rammestørrelse","caption":"Tittel","cell":{"menu":"Celle","insertBefore":"Sett inn celle før","insertAfter":"Sett inn celle etter","deleteCell":"Slett celler","merge":"SlÃ¥ sammen celler","mergeRight":"SlÃ¥ sammen høyre","mergeDown":"SlÃ¥ sammen ned","splitHorizontal":"Del celle horisontalt","splitVertical":"Del celle vertikalt","title":"Celleegenskaper","cellType":"Celletype","rowSpan":"Radspenn","colSpan":"Kolonnespenn","wordWrap":"Tekstbrytning","hAlign":"Horisontal justering","vAlign":"Vertikal justering","alignBaseline":"Grunnlinje","bgColor":"Bakgrunnsfarge","borderColor":"Rammefarge","data":"Data","header":"Overskrift","yes":"Ja","no":"Nei","invalidWidth":"Cellebredde mÃ¥ være et tall.","invalidHeight":"Cellehøyde mÃ¥ være et tall.","invalidRowSpan":"Radspenn mÃ¥ være et heltall.","invalidColSpan":"Kolonnespenn mÃ¥ være et heltall.","chooseColor":"Velg"},"cellPad":"Cellepolstring","cellSpace":"Cellemarg","column":{"menu":"Kolonne","insertBefore":"Sett inn kolonne før","insertAfter":"Sett inn kolonne etter","deleteColumn":"Slett kolonner"},"columns":"Kolonner","deleteTable":"Slett tabell","headers":"Overskrifter","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første rad","heightUnit":"height unit","invalidBorder":"Rammestørrelse mÃ¥ være et tall.","invalidCellPadding":"Cellepolstring mÃ¥ være et positivt tall.","invalidCellSpacing":"Cellemarg mÃ¥ være et positivt tall.","invalidCols":"Antall kolonner mÃ¥ være et tall større enn 0.","invalidHeight":"Tabellhøyde mÃ¥ være et tall.","invalidRows":"Antall rader mÃ¥ være et tall større enn 0.","invalidWidth":"Tabellbredde mÃ¥ være et tall.","menu":"Egenskaper for tabell","row":{"menu":"Rader","insertBefore":"Sett inn rad før","insertAfter":"Sett inn rad etter","deleteRow":"Slett rader"},"rows":"Rader","summary":"Sammendrag","title":"Egenskaper for tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"piksler","widthUnit":"Bredde-enhet"},"stylescombo":{"label":"Stil","panelTitle":"Stilformater","panelTitle1":"Blokkstiler","panelTitle2":"Inlinestiler","panelTitle3":"Objektstiler"},"specialchar":{"options":"Alternativer for spesialtegn","title":"Velg spesialtegn","toolbar":"Sett inn spesialtegn"},"sourcedialog":{"toolbar":"Kilde","title":"Kilde"},"sourcearea":{"toolbar":"Kilde"},"showblocks":{"toolbar":"Vis blokker"},"removeformat":{"toolbar":"Fjern formatering"},"pastetext":{"button":"Lim inn som ren tekst","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Lim inn som ren tekst"},"pastefromword":{"confirmCleanup":"Teksten du limer inn ser ut til Ã¥ være kopiert fra Word. Vil du renske den før du limer den inn?","error":"Det var ikke mulig Ã¥ renske den innlimte teksten pÃ¥ grunn av en intern feil","title":"Lim inn fra Word","toolbar":"Lim inn fra Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimer","minimize":"Minimer"},"magicline":{"title":"Sett inn nytt avsnitt her"},"list":{"bulletedlist":"Legg til/Fjern punktmerket liste","numberedlist":"Legg til/Fjern nummerert liste"},"language":{"button":"Sett sprÃ¥k","remove":"Fjern sprÃ¥k"},"indent":{"indent":"Øk innrykk","outdent":"Reduser innrykk"},"image2":{"alt":"Alternativ tekst","btnUpload":"Send det til serveren","captioned":"Bilde med bildetekst","captionPlaceholder":"Billedtekst","infoTab":"Bildeinformasjon","lockRatio":"LÃ¥s forhold","menu":"Bildeegenskaper","pathName":"bilde","pathNameCaption":"bildetekst","resetSize":"Tilbakestill størrelse","resizer":"Klikk og dra for Ã¥ endre størrelse","title":"Bildeegenskaper","uploadTab":"Last opp","urlMissing":"Bildets adresse mangler.","altMissing":"Alternativ tekst mangler."},"horizontalrule":{"toolbar":"Sett inn horisontal linje"},"format":{"label":"Format","panelTitle":"Avsnittsformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formatert"},"filetools":{"loadError":"Det oppstod en feil under lesing av filen.","networkError":"Det oppstod en nettverksfeil under opplasting av filen.","httpError404":"En HTTP-feil oppstod under opplasting av filen (404: Filen finnes ikke).","httpError403":"En HTTP-feil oppstod under opplasting av filen (403: Ingen tilgang).","httpError":"En HTTP-feil oppstod under opplasting av filen (feilkode: %1).","noUrlError":"Opplastings-URL er ikke definert.","responseError":"Feil svar fra serveren."},"elementspath":{"eleLabel":"Element-sti","eleTitle":"%1 element"},"contextmenu":{"options":"Alternativer for høyreklikkmeny"},"clipboard":{"copy":"Kopier","copyError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).","cut":"Klipp ut","cutError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).","paste":"Lim inn","pasteNotification":"Trykk %1 for Ã¥ lime inn. PÃ¥ grunn av manglende støtte i nettleseren din, kan du ikke lime inn via knapperaden eller kontekstmenyen.","pasteArea":"InnlimingsomrÃ¥de","pasteMsg":"Lim inn innholdet i omrÃ¥det nedenfor og trykk OK."},"blockquote":{"toolbar":"Blokksitat"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Gjennomstreking","subscript":"Senket skrift","superscript":"Hevet skrift","underline":"Understreking"},"about":{"copy":"Copyright © $1. Alle rettigheter reservert.","dlgTitle":"Om CKEditor 4","moreInfo":"For lisensieringsinformasjon, vennligst besøk vÃ¥rt nettsted:"},"editor":"Rikteksteditor","editorPanel":"Panel for rikteksteditor","common":{"editorHelp":"Trykk ALT 0 for hjelp","browseServer":"Bla igjennom server","url":"URL","protocol":"Protokoll","upload":"Last opp","uploadSubmit":"Send det til serveren","image":"Bilde","flash":"Flash","form":"Skjema","checkbox":"Avmerkingsboks","radio":"Alternativknapp","textField":"Tekstboks","textarea":"TekstomrÃ¥de","hiddenField":"Skjult felt","button":"Knapp","select":"Rullegardinliste","imageButton":"Bildeknapp","notSet":"<ikke satt>","id":"Id","name":"Navn","langDir":"SprÃ¥kretning","langDirLtr":"Venstre til høyre (VTH)","langDirRtl":"Høyre til venstre (HTV)","langCode":"SprÃ¥kkode","longDescr":"Utvidet beskrivelse","cssClass":"Stilarkklasser","advisoryTitle":"Tittel","cssStyle":"Stil","ok":"OK","cancel":"Avbryt","close":"Lukk","preview":"ForhÃ¥ndsvis","resize":"Dra for Ã¥ skalere","generalTab":"Generelt","advancedTab":"Avansert","validateNumberFailed":"Denne verdien er ikke et tall.","confirmNewPage":"Alle ulagrede endringer som er gjort i dette innholdet vil bli tapt. Er du sikker pÃ¥ at du vil laste en ny side?","confirmCancel":"Noen av valgene har blitt endret. Er du sikker pÃ¥ at du vil lukke dialogen?","options":"Valg","target":"MÃ¥l","targetNew":"Nytt vindu (_blank)","targetTop":"Hele vindu (_top)","targetSelf":"Samme vindu (_self)","targetParent":"Foreldrevindu (_parent)","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","styles":"Stil","cssClasses":"Stilarkklasser","width":"Bredde","height":"Høyde","align":"Juster","left":"Venstre","right":"Høyre","center":"Midtjuster","justify":"Blokkjuster","alignLeft":"Venstrejuster","alignRight":"Høyrejuster","alignCenter":"Midtjustér","alignTop":"Topp","alignMiddle":"Midten","alignBottom":"Bunn","alignNone":"Ingen","invalidValue":"Ugyldig verdi.","invalidHeight":"Høyde mÃ¥ være et tall.","invalidWidth":"Bredde mÃ¥ være et tall.","invalidLength":"Verdien i \"%1\"-feltet mÃ¥ være et positivt tall med eller uten en gyldig mÃ¥leenhet (%2).","invalidCssLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig CSS-mÃ¥lingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig HTML-mÃ¥lingsenhet (px eller %).","invalidInlineStyle":"Verdi angitt for inline stil mÃ¥ bestÃ¥ av en eller flere sett med formatet \"navn : verdi\", separert med semikolon","cssLengthTooltip":"Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, utilgjenglig</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Mellomrom","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Kommando"},"keyboardShortcut":"Hurtigtast","optionDefault":"Standard"}}; \ No newline at end of file +CKEDITOR.lang['no']={"widget":{"move":"Klikk og dra for Ã¥ flytte","label":"Widget %1"},"undo":{"redo":"Gjør om","undo":"Angre"},"toolbar":{"toolbarCollapse":"Skjul verktøylinje","toolbarExpand":"Vis verktøylinje","toolbarGroups":{"document":"Dokument","clipboard":"Utklippstavle/Angre","editing":"Redigering","forms":"Skjema","basicstyles":"Basisstiler","paragraph":"Avsnitt","links":"Lenker","insert":"Innsetting","styles":"Stiler","colors":"Farger","tools":"Verktøy"},"toolbars":"Verktøylinjer for editor"},"table":{"border":"Rammestørrelse","caption":"Tittel","cell":{"menu":"Celle","insertBefore":"Sett inn celle før","insertAfter":"Sett inn celle etter","deleteCell":"Slett celler","merge":"SlÃ¥ sammen celler","mergeRight":"SlÃ¥ sammen høyre","mergeDown":"SlÃ¥ sammen ned","splitHorizontal":"Del celle horisontalt","splitVertical":"Del celle vertikalt","title":"Celleegenskaper","cellType":"Celletype","rowSpan":"Radspenn","colSpan":"Kolonnespenn","wordWrap":"Tekstbrytning","hAlign":"Horisontal justering","vAlign":"Vertikal justering","alignBaseline":"Grunnlinje","bgColor":"Bakgrunnsfarge","borderColor":"Rammefarge","data":"Data","header":"Overskrift","yes":"Ja","no":"Nei","invalidWidth":"Cellebredde mÃ¥ være et tall.","invalidHeight":"Cellehøyde mÃ¥ være et tall.","invalidRowSpan":"Radspenn mÃ¥ være et heltall.","invalidColSpan":"Kolonnespenn mÃ¥ være et heltall.","chooseColor":"Velg"},"cellPad":"Cellepolstring","cellSpace":"Cellemarg","column":{"menu":"Kolonne","insertBefore":"Sett inn kolonne før","insertAfter":"Sett inn kolonne etter","deleteColumn":"Slett kolonner"},"columns":"Kolonner","deleteTable":"Slett tabell","headers":"Overskrifter","headersBoth":"Begge","headersColumn":"Første kolonne","headersNone":"Ingen","headersRow":"Første rad","heightUnit":"height unit","invalidBorder":"Rammestørrelse mÃ¥ være et tall.","invalidCellPadding":"Cellepolstring mÃ¥ være et positivt tall.","invalidCellSpacing":"Cellemarg mÃ¥ være et positivt tall.","invalidCols":"Antall kolonner mÃ¥ være et tall større enn 0.","invalidHeight":"Tabellhøyde mÃ¥ være et tall.","invalidRows":"Antall rader mÃ¥ være et tall større enn 0.","invalidWidth":"Tabellbredde mÃ¥ være et tall.","menu":"Egenskaper for tabell","row":{"menu":"Rader","insertBefore":"Sett inn rad før","insertAfter":"Sett inn rad etter","deleteRow":"Slett rader"},"rows":"Rader","summary":"Sammendrag","title":"Egenskaper for tabell","toolbar":"Tabell","widthPc":"prosent","widthPx":"piksler","widthUnit":"Bredde-enhet"},"stylescombo":{"label":"Stil","panelTitle":"Stilformater","panelTitle1":"Blokkstiler","panelTitle2":"Inlinestiler","panelTitle3":"Objektstiler"},"specialchar":{"options":"Alternativer for spesialtegn","title":"Velg spesialtegn","toolbar":"Sett inn spesialtegn"},"sourcedialog":{"toolbar":"Kilde","title":"Kilde"},"sourcearea":{"toolbar":"Kilde"},"showblocks":{"toolbar":"Vis blokker"},"removeformat":{"toolbar":"Fjern formatering"},"pastetext":{"button":"Lim inn som ren tekst","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Lim inn som ren tekst"},"pastefromword":{"confirmCleanup":"Teksten du limer inn ser ut til Ã¥ være kopiert fra Word. Vil du renske den før du limer den inn?","error":"Det var ikke mulig Ã¥ renske den innlimte teksten pÃ¥ grunn av en intern feil","title":"Lim inn fra Word","toolbar":"Lim inn fra Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimer","minimize":"Minimer"},"magicline":{"title":"Sett inn nytt avsnitt her"},"list":{"bulletedlist":"Legg til/Fjern punktmerket liste","numberedlist":"Legg til/Fjern nummerert liste"},"language":{"button":"Sett sprÃ¥k","remove":"Fjern sprÃ¥k"},"indent":{"indent":"Øk innrykk","outdent":"Reduser innrykk"},"image2":{"alt":"Alternativ tekst","btnUpload":"Send det til serveren","captioned":"Bilde med bildetekst","captionPlaceholder":"Billedtekst","infoTab":"Bildeinformasjon","lockRatio":"LÃ¥s forhold","menu":"Bildeegenskaper","pathName":"bilde","pathNameCaption":"bildetekst","resetSize":"Tilbakestill størrelse","resizer":"Klikk og dra for Ã¥ endre størrelse","title":"Bildeegenskaper","uploadTab":"Last opp","urlMissing":"Bildets adresse mangler.","altMissing":"Alternativ tekst mangler."},"horizontalrule":{"toolbar":"Sett inn horisontal linje"},"format":{"label":"Format","panelTitle":"Avsnittsformat","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Overskrift 1","tag_h2":"Overskrift 2","tag_h3":"Overskrift 3","tag_h4":"Overskrift 4","tag_h5":"Overskrift 5","tag_h6":"Overskrift 6","tag_p":"Normal","tag_pre":"Formatert"},"filetools":{"loadError":"Det oppstod en feil under lesing av filen.","networkError":"Det oppstod en nettverksfeil under opplasting av filen.","httpError404":"En HTTP-feil oppstod under opplasting av filen (404: Filen finnes ikke).","httpError403":"En HTTP-feil oppstod under opplasting av filen (403: Ingen tilgang).","httpError":"En HTTP-feil oppstod under opplasting av filen (feilkode: %1).","noUrlError":"Opplastings-URL er ikke definert.","responseError":"Feil svar fra serveren."},"elementspath":{"eleLabel":"Element-sti","eleTitle":"%1 element"},"contextmenu":{"options":"Alternativer for høyreklikkmeny"},"clipboard":{"copy":"Kopier","copyError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).","cut":"Klipp ut","cutError":"Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).","paste":"Lim inn","pasteNotification":"Trykk %1 for Ã¥ lime inn. PÃ¥ grunn av manglende støtte i nettleseren din, kan du ikke lime inn via knapperaden eller kontekstmenyen.","pasteArea":"InnlimingsomrÃ¥de","pasteMsg":"Lim inn innholdet i omrÃ¥det nedenfor og trykk OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Blokksitat"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Gjennomstreking","subscript":"Senket skrift","superscript":"Hevet skrift","underline":"Understreking"},"about":{"copy":"Copyright © $1. Alle rettigheter reservert.","dlgTitle":"Om CKEditor 4","moreInfo":"For lisensieringsinformasjon, vennligst besøk vÃ¥rt nettsted:"},"editor":"Rikteksteditor","editorPanel":"Panel for rikteksteditor","common":{"editorHelp":"Trykk ALT 0 for hjelp","browseServer":"Bla igjennom server","url":"URL","protocol":"Protokoll","upload":"Last opp","uploadSubmit":"Send det til serveren","image":"Bilde","form":"Skjema","checkbox":"Avmerkingsboks","radio":"Alternativknapp","textField":"Tekstboks","textarea":"TekstomrÃ¥de","hiddenField":"Skjult felt","button":"Knapp","select":"Rullegardinliste","imageButton":"Bildeknapp","notSet":"<ikke satt>","id":"Id","name":"Navn","langDir":"SprÃ¥kretning","langDirLtr":"Venstre til høyre (VTH)","langDirRtl":"Høyre til venstre (HTV)","langCode":"SprÃ¥kkode","longDescr":"Utvidet beskrivelse","cssClass":"Stilarkklasser","advisoryTitle":"Tittel","cssStyle":"Stil","ok":"OK","cancel":"Avbryt","close":"Lukk","preview":"ForhÃ¥ndsvis","resize":"Dra for Ã¥ skalere","generalTab":"Generelt","advancedTab":"Avansert","validateNumberFailed":"Denne verdien er ikke et tall.","confirmNewPage":"Alle ulagrede endringer som er gjort i dette innholdet vil bli tapt. Er du sikker pÃ¥ at du vil laste en ny side?","confirmCancel":"Noen av valgene har blitt endret. Er du sikker pÃ¥ at du vil lukke dialogen?","options":"Valg","target":"MÃ¥l","targetNew":"Nytt vindu (_blank)","targetTop":"Hele vindu (_top)","targetSelf":"Samme vindu (_self)","targetParent":"Foreldrevindu (_parent)","langDirLTR":"Venstre til høyre (VTH)","langDirRTL":"Høyre til venstre (HTV)","styles":"Stil","cssClasses":"Stilarkklasser","width":"Bredde","height":"Høyde","align":"Juster","left":"Venstre","right":"Høyre","center":"Midtjuster","justify":"Blokkjuster","alignLeft":"Venstrejuster","alignRight":"Høyrejuster","alignCenter":"Midtjustér","alignTop":"Topp","alignMiddle":"Midten","alignBottom":"Bunn","alignNone":"Ingen","invalidValue":"Ugyldig verdi.","invalidHeight":"Høyde mÃ¥ være et tall.","invalidWidth":"Bredde mÃ¥ være et tall.","invalidLength":"Verdien i \"%1\"-feltet mÃ¥ være et positivt tall med eller uten en gyldig mÃ¥leenhet (%2).","invalidCssLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig CSS-mÃ¥lingsenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Den angitte verdien for feltet \"%1\" mÃ¥ være et positivt tall med eller uten en gyldig HTML-mÃ¥lingsenhet (px eller %).","invalidInlineStyle":"Verdi angitt for inline stil mÃ¥ bestÃ¥ av en eller flere sett med formatet \"navn : verdi\", separert med semikolon","cssLengthTooltip":"Skriv inn et tall for en piksel-verdi eller et tall med en gyldig CSS-enhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, utilgjenglig</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Mellomrom","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Kommando"},"keyboardShortcut":"Hurtigtast","optionDefault":"Standard"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/oc.js b/core/assets/vendor/ckeditor/lang/oc.js index c9756e4a37e0..9b919492b8d4 100644 --- a/core/assets/vendor/ckeditor/lang/oc.js +++ b/core/assets/vendor/ckeditor/lang/oc.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['oc']={"widget":{"move":"Clicar e lisar per desplaçar","label":"Element %1"},"undo":{"redo":"Refar","undo":"Restablir"},"toolbar":{"toolbarCollapse":"Enrotlar la barra d'aisinas","toolbarExpand":"Desenrotlar la barra d'aisinas","toolbarGroups":{"document":"Document","clipboard":"Quichapapièr/Desfar","editing":"Edicion","forms":"Formularis","basicstyles":"Estils de basa","paragraph":"Paragraf","links":"Ligams","insert":"Inserir","styles":"Estils","colors":"Colors","tools":"Aisinas"},"toolbars":"Barras d'aisinas de l'editor"},"table":{"border":"Talha de la bordadura","caption":"TÃtol del tablèu","cell":{"menu":"Cellula","insertBefore":"Inserir una cellula abans","insertAfter":"Inserir una cellula aprèp","deleteCell":"Suprimir las cellulas","merge":"Fusionar las cellulas","mergeRight":"Fusionar cap a dreita","mergeDown":"Fusionar cap aval","splitHorizontal":"Separar la cellula orizontalament","splitVertical":"Separar la cellula verticalament","title":"Proprietats de la cellula","cellType":"Tipe de cellula","rowSpan":"Linhas ocupadas","colSpan":"Colomnas ocupadas","wordWrap":"Cesura","hAlign":"Alinhament orizontal","vAlign":"Alinhament vertical","alignBaseline":"Linha de basa","bgColor":"Color de rèireplan","borderColor":"Color de bordadura","data":"Donadas","header":"Entèsta","yes":"Ã’c","no":"Non","invalidWidth":"La largor de la cellula deu èsser un nombre.","invalidHeight":"La nautor de la cellula deu èsser un nombre.","invalidRowSpan":"Lo nombre de linhas ocupadas deu èsser un nombre entièr.","invalidColSpan":"Lo nombre de colomnas ocupadas deu èsser un nombre entièr.","chooseColor":"Causir"},"cellPad":"Marge intèrne de las cellulas","cellSpace":"Espaçament entre las cellulas","column":{"menu":"Colomna","insertBefore":"Inserir una colomna abans","insertAfter":"Inserir una colomna aprèp","deleteColumn":"Suprimir las colomnas"},"columns":"Colomnas","deleteTable":"Suprimir lo tablèu","headers":"Entèstas","headersBoth":"Los dos","headersColumn":"Primièra colomna","headersNone":"Pas cap","headersRow":"Primièra linha","heightUnit":"height unit","invalidBorder":"La talha de la bordadura deu èsser un nombre.","invalidCellPadding":"Lo marge intèrne de las cellulas deu èsser un nombre positiu.","invalidCellSpacing":"L'espaçament entre las cellulas deu èsser un nombre positiu.","invalidCols":"Lo nombre de colomnas deu èsser superior a 0.","invalidHeight":"La nautor del tablèu deu èsser un nombre.","invalidRows":"Lo nombre de linhas deu èsser superior a 0.","invalidWidth":"La largor del tablèu deu èsser un nombre.","menu":"Proprietats del tablèu","row":{"menu":"Linha","insertBefore":"Inserir una linha abans","insertAfter":"Inserir una linha aprèp","deleteRow":"Suprimir las linhas"},"rows":"Linhas","summary":"Resumit (descripcion)","title":"Proprietats del tablèu","toolbar":"Tablèu","widthPc":"per cent","widthPx":"pixèls","widthUnit":"unitat de largor"},"stylescombo":{"label":"Estils","panelTitle":"Estils de mesa en pagina","panelTitle1":"Estils de blòt","panelTitle2":"Estils en linha","panelTitle3":"Estils d'objècte"},"specialchar":{"options":"Opcions dels caractèrs especials","title":"Seleccionar un caractèr","toolbar":"Inserir un caractèr especial"},"sourcedialog":{"toolbar":"Font","title":"Font"},"sourcearea":{"toolbar":"Font"},"showblocks":{"toolbar":"Afichar los blòts"},"removeformat":{"toolbar":"Suprimir la mesa en forma"},"pastetext":{"button":"Pegar coma tèxte brut","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"Sembla que lo tèxte de pegar proven de Word. Lo volètz netejar abans de lo pegar ?","error":"Las donadas pegadas an pas pogut èsser netejadas a causa d'una error intèrna","title":"Pegar dempuèi Word","toolbar":"Pegar dempuèi Word"},"notification":{"closed":"Notificacion tampada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Inserir un paragraf aicÃ"},"list":{"bulletedlist":"Inserir/Suprimir una lista amb de piuses","numberedlist":"Inserir/Suprimir una lista numerotada"},"language":{"button":"Definir la lenga","remove":"Suprimir la lenga"},"indent":{"indent":"Aumentar l'alinèa","outdent":"Dmesir l'alinèa"},"image2":{"alt":"Tèxte alternatiu","btnUpload":"Mandar sul servidor","captioned":"Imatge amb legenda","captionPlaceholder":"Legenda","infoTab":"Informacions sus l'imatge","lockRatio":"Conservar las proporcions","menu":"Proprietats de l'imatge","pathName":"imatge","pathNameCaption":"legenda","resetSize":"Reïnicializar la talha","resizer":"Clicar e lisar per redimensionar","title":"Proprietats de l'imatge","uploadTab":"Mandar","urlMissing":"L'URL font de l'imatge es mancanta.","altMissing":"Lo tèxte alternatiu es mancant."},"horizontalrule":{"toolbar":"Inserir una linha orizontala"},"format":{"label":"Format","panelTitle":"Format de paragraf","tag_address":"Adreça","tag_div":"Division (DIV)","tag_h1":"TÃtol 1","tag_h2":"TÃtol 2","tag_h3":"TÃtol 3","tag_h4":"TÃtol 4","tag_h5":"TÃtol 5","tag_h6":"TÃtol 6","tag_p":"Normal","tag_pre":"Preformatat"},"filetools":{"loadError":"Una error s'es produita pendent la lectura del fichièr.","networkError":"Una error de ret s'es produita pendent lo mandadÃs del fichièr.","httpError404":"Una error HTTP s'es produita pendent lo mandadÃs del fichièr (404 : fichièr pas trobat).","httpError403":"Una error HTTP s'es produita pendent lo mandadÃs del fichièr (403 : accès refusat).","httpError":"Una error HTTP s'es produita pendent lo mandadÃs del fichièr (error : %1).","noUrlError":"L'URL de mandadÃs es pas especificada.","responseError":"Responsa del servidor incorrècta."},"elementspath":{"eleLabel":"Camin dels elements","eleTitle":"Element %1"},"contextmenu":{"options":"Opcions del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"Los paramètres de seguretat de vòstre navigador autorizan pas l'editor a executar automaticament l'operacion « Copiar ». Utilizatz l'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+C).","cut":"Talhar","cutError":"Los paramètres de seguretat de vòstre navigador autorizan pas l'editor a executar automaticament l'operacion « Talhar ». Utilizatz l'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Citacion"},"basicstyles":{"bold":"Gras","italic":"Italica","strike":"Raiat","subscript":"Indici","superscript":"Exponent","underline":"Solinhat"},"about":{"copy":"Copyright © $1. Totes los dreits reservats.","dlgTitle":"A prepaus de CKEditor 4","moreInfo":"Per las informacions de licéncia, visitatz nòstre site web :"},"editor":"Editor de tèxte enriquit","editorPanel":"Tablèu de bòrd de l'editor de tèxte enriquit","common":{"editorHelp":"Utilisatz l'acorchi Alt-0 per obténer d'ajuda","browseServer":"Percórrer lo servidor","url":"URL","protocol":"Protocòl","upload":"Mandar","uploadSubmit":"Mandar sul servidor","image":"Imatge","flash":"Flash","form":"Formulari","checkbox":"Casa de marcar","radio":"Boton rà dio","textField":"Camp tèxte","textarea":"Zòna de tèxte","hiddenField":"Camp invisible","button":"Boton","select":"Lista desenrotlanta","imageButton":"Boton amb imatge","notSet":"<indefinit>","id":"Id","name":"Nom","langDir":"Sens d'escritura","langDirLtr":"Esquèrra a dreita (LTR)","langDirRtl":"Dreita a esquèrra (RTL)","langCode":"Còdi de lenga","longDescr":"URL de descripcion longa","cssClass":"Classas d'estil","advisoryTitle":"Infobulla","cssStyle":"Estil","ok":"D'acòrdi","cancel":"Anullar","close":"Tampar","preview":"Previsualizar","resize":"Redimensionar","generalTab":"General","advancedTab":"Avançat","validateNumberFailed":"Aquesta valor es pas un nombre.","confirmNewPage":"Los cambiaments pas salvats serà n perduts. Sètz segur que volètz cargar una novèla pagina ?","confirmCancel":"Certanas opcions son estadas modificadas. Sètz segur que volètz tampar ?","options":"Opcions","target":"Cibla","targetNew":"Novèla fenèstra (_blank)","targetTop":"Fenèstra superiora (_top)","targetSelf":"Meteissa fenèstra (_self)","targetParent":"Fenèstra parent (_parent)","langDirLTR":"Esquèrra a dreita (LTR)","langDirRTL":"Dreita a esquèrra (RTL)","styles":"Estil","cssClasses":"Classas d'estil","width":"Largor","height":"Nautor","align":"Alinhament","left":"Esquèrra","right":"Dreita","center":"Centrar","justify":"Justificar","alignLeft":"Alinhar a esquèrra","alignRight":"Alinhar a dreita","alignCenter":"Align Center","alignTop":"Naut","alignMiddle":"Mitan","alignBottom":"Bas","alignNone":"Pas cap","invalidValue":"Valor invalida.","invalidHeight":"La nautor deu èsser un nombre.","invalidWidth":"La largor deu èsser un nombre.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"La valor especificada pel camp « %1 » deu èsser un nombre positiu amb o sens unitat de mesura CSS valid (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"La valor especificada pel camp « %1 » deu èsser un nombre positiu amb o sens unitat de mesura HTML valid (px o %).","invalidInlineStyle":"La valor especificada per l'estil en linha deu èsser compausada d'un o mantun parelh al format « nom : valor », separats per de punts-virgulas.","cssLengthTooltip":"Entrar un nombre per una valor en pixèls o un nombre amb una unitat de mesura CSS valida (px, %, in, cm, mm, em, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Retorn","13":"Entrada","16":"Majuscula","17":"Ctrl","18":"Alt","32":"Espaci","35":"Fin","36":"Origina","46":"Suprimir","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comanda"},"keyboardShortcut":"Acorchi de clavièr","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['oc']={"widget":{"move":"Clicar e lisar per desplaçar","label":"Element %1"},"undo":{"redo":"Refar","undo":"Restablir"},"toolbar":{"toolbarCollapse":"Enrotlar la barra d'aisinas","toolbarExpand":"Desenrotlar la barra d'aisinas","toolbarGroups":{"document":"Document","clipboard":"Quichapapièr/Desfar","editing":"Edicion","forms":"Formularis","basicstyles":"Estils de basa","paragraph":"Paragraf","links":"Ligams","insert":"Inserir","styles":"Estils","colors":"Colors","tools":"Aisinas"},"toolbars":"Barras d'aisinas de l'editor"},"table":{"border":"Talha de la bordadura","caption":"TÃtol del tablèu","cell":{"menu":"Cellula","insertBefore":"Inserir una cellula abans","insertAfter":"Inserir una cellula aprèp","deleteCell":"Suprimir las cellulas","merge":"Fusionar las cellulas","mergeRight":"Fusionar cap a dreita","mergeDown":"Fusionar cap aval","splitHorizontal":"Separar la cellula orizontalament","splitVertical":"Separar la cellula verticalament","title":"Proprietats de la cellula","cellType":"Tipe de cellula","rowSpan":"Linhas ocupadas","colSpan":"Colomnas ocupadas","wordWrap":"Cesura","hAlign":"Alinhament orizontal","vAlign":"Alinhament vertical","alignBaseline":"Linha de basa","bgColor":"Color de rèireplan","borderColor":"Color de bordadura","data":"Donadas","header":"Entèsta","yes":"Ã’c","no":"Non","invalidWidth":"La largor de la cellula deu èsser un nombre.","invalidHeight":"La nautor de la cellula deu èsser un nombre.","invalidRowSpan":"Lo nombre de linhas ocupadas deu èsser un nombre entièr.","invalidColSpan":"Lo nombre de colomnas ocupadas deu èsser un nombre entièr.","chooseColor":"Causir"},"cellPad":"Marge intèrne de las cellulas","cellSpace":"Espaçament entre las cellulas","column":{"menu":"Colomna","insertBefore":"Inserir una colomna abans","insertAfter":"Inserir una colomna aprèp","deleteColumn":"Suprimir las colomnas"},"columns":"Colomnas","deleteTable":"Suprimir lo tablèu","headers":"Entèstas","headersBoth":"Los dos","headersColumn":"Primièra colomna","headersNone":"Pas cap","headersRow":"Primièra linha","heightUnit":"height unit","invalidBorder":"La talha de la bordadura deu èsser un nombre.","invalidCellPadding":"Lo marge intèrne de las cellulas deu èsser un nombre positiu.","invalidCellSpacing":"L'espaçament entre las cellulas deu èsser un nombre positiu.","invalidCols":"Lo nombre de colomnas deu èsser superior a 0.","invalidHeight":"La nautor del tablèu deu èsser un nombre.","invalidRows":"Lo nombre de linhas deu èsser superior a 0.","invalidWidth":"La largor del tablèu deu èsser un nombre.","menu":"Proprietats del tablèu","row":{"menu":"Linha","insertBefore":"Inserir una linha abans","insertAfter":"Inserir una linha aprèp","deleteRow":"Suprimir las linhas"},"rows":"Linhas","summary":"Resumit (descripcion)","title":"Proprietats del tablèu","toolbar":"Tablèu","widthPc":"per cent","widthPx":"pixèls","widthUnit":"unitat de largor"},"stylescombo":{"label":"Estils","panelTitle":"Estils de mesa en pagina","panelTitle1":"Estils de blòt","panelTitle2":"Estils en linha","panelTitle3":"Estils d'objècte"},"specialchar":{"options":"Opcions dels caractèrs especials","title":"Seleccionar un caractèr","toolbar":"Inserir un caractèr especial"},"sourcedialog":{"toolbar":"Font","title":"Font"},"sourcearea":{"toolbar":"Font"},"showblocks":{"toolbar":"Afichar los blòts"},"removeformat":{"toolbar":"Suprimir la mesa en forma"},"pastetext":{"button":"Pegar coma tèxte brut","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Paste as Plain Text"},"pastefromword":{"confirmCleanup":"Sembla que lo tèxte de pegar proven de Word. Lo volètz netejar abans de lo pegar ?","error":"Las donadas pegadas an pas pogut èsser netejadas a causa d'una error intèrna","title":"Pegar dempuèi Word","toolbar":"Pegar dempuèi Word"},"notification":{"closed":"Notificacion tampada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Inserir un paragraf aicÃ"},"list":{"bulletedlist":"Inserir/Suprimir una lista amb de piuses","numberedlist":"Inserir/Suprimir una lista numerotada"},"language":{"button":"Definir la lenga","remove":"Suprimir la lenga"},"indent":{"indent":"Aumentar l'alinèa","outdent":"Dmesir l'alinèa"},"image2":{"alt":"Tèxte alternatiu","btnUpload":"Mandar sul servidor","captioned":"Imatge amb legenda","captionPlaceholder":"Legenda","infoTab":"Informacions sus l'imatge","lockRatio":"Conservar las proporcions","menu":"Proprietats de l'imatge","pathName":"imatge","pathNameCaption":"legenda","resetSize":"Reïnicializar la talha","resizer":"Clicar e lisar per redimensionar","title":"Proprietats de l'imatge","uploadTab":"Mandar","urlMissing":"L'URL font de l'imatge es mancanta.","altMissing":"Lo tèxte alternatiu es mancant."},"horizontalrule":{"toolbar":"Inserir una linha orizontala"},"format":{"label":"Format","panelTitle":"Format de paragraf","tag_address":"Adreça","tag_div":"Division (DIV)","tag_h1":"TÃtol 1","tag_h2":"TÃtol 2","tag_h3":"TÃtol 3","tag_h4":"TÃtol 4","tag_h5":"TÃtol 5","tag_h6":"TÃtol 6","tag_p":"Normal","tag_pre":"Preformatat"},"filetools":{"loadError":"Una error s'es produita pendent la lectura del fichièr.","networkError":"Una error de ret s'es produita pendent lo mandadÃs del fichièr.","httpError404":"Una error HTTP s'es produita pendent lo mandadÃs del fichièr (404 : fichièr pas trobat).","httpError403":"Una error HTTP s'es produita pendent lo mandadÃs del fichièr (403 : accès refusat).","httpError":"Una error HTTP s'es produita pendent lo mandadÃs del fichièr (error : %1).","noUrlError":"L'URL de mandadÃs es pas especificada.","responseError":"Responsa del servidor incorrècta."},"elementspath":{"eleLabel":"Camin dels elements","eleTitle":"Element %1"},"contextmenu":{"options":"Opcions del menú contextual"},"clipboard":{"copy":"Copiar","copyError":"Los paramètres de seguretat de vòstre navigador autorizan pas l'editor a executar automaticament l'operacion « Copiar ». Utilizatz l'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+C).","cut":"Talhar","cutError":"Los paramètres de seguretat de vòstre navigador autorizan pas l'editor a executar automaticament l'operacion « Talhar ». Utilizatz l'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+X).","paste":"Pegar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citacion"},"basicstyles":{"bold":"Gras","italic":"Italica","strike":"Raiat","subscript":"Indici","superscript":"Exponent","underline":"Solinhat"},"about":{"copy":"Copyright © $1. Totes los dreits reservats.","dlgTitle":"A prepaus de CKEditor 4","moreInfo":"Per las informacions de licéncia, visitatz nòstre site web :"},"editor":"Editor de tèxte enriquit","editorPanel":"Tablèu de bòrd de l'editor de tèxte enriquit","common":{"editorHelp":"Utilisatz l'acorchi Alt-0 per obténer d'ajuda","browseServer":"Percórrer lo servidor","url":"URL","protocol":"Protocòl","upload":"Mandar","uploadSubmit":"Mandar sul servidor","image":"Imatge","form":"Formulari","checkbox":"Casa de marcar","radio":"Boton rà dio","textField":"Camp tèxte","textarea":"Zòna de tèxte","hiddenField":"Camp invisible","button":"Boton","select":"Lista desenrotlanta","imageButton":"Boton amb imatge","notSet":"<indefinit>","id":"Id","name":"Nom","langDir":"Sens d'escritura","langDirLtr":"Esquèrra a dreita (LTR)","langDirRtl":"Dreita a esquèrra (RTL)","langCode":"Còdi de lenga","longDescr":"URL de descripcion longa","cssClass":"Classas d'estil","advisoryTitle":"Infobulla","cssStyle":"Estil","ok":"D'acòrdi","cancel":"Anullar","close":"Tampar","preview":"Previsualizar","resize":"Redimensionar","generalTab":"General","advancedTab":"Avançat","validateNumberFailed":"Aquesta valor es pas un nombre.","confirmNewPage":"Los cambiaments pas salvats serà n perduts. Sètz segur que volètz cargar una novèla pagina ?","confirmCancel":"Certanas opcions son estadas modificadas. Sètz segur que volètz tampar ?","options":"Opcions","target":"Cibla","targetNew":"Novèla fenèstra (_blank)","targetTop":"Fenèstra superiora (_top)","targetSelf":"Meteissa fenèstra (_self)","targetParent":"Fenèstra parent (_parent)","langDirLTR":"Esquèrra a dreita (LTR)","langDirRTL":"Dreita a esquèrra (RTL)","styles":"Estil","cssClasses":"Classas d'estil","width":"Largor","height":"Nautor","align":"Alinhament","left":"Esquèrra","right":"Dreita","center":"Centrar","justify":"Justificar","alignLeft":"Alinhar a esquèrra","alignRight":"Alinhar a dreita","alignCenter":"Align Center","alignTop":"Naut","alignMiddle":"Mitan","alignBottom":"Bas","alignNone":"Pas cap","invalidValue":"Valor invalida.","invalidHeight":"La nautor deu èsser un nombre.","invalidWidth":"La largor deu èsser un nombre.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"La valor especificada pel camp « %1 » deu èsser un nombre positiu amb o sens unitat de mesura CSS valid (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"La valor especificada pel camp « %1 » deu èsser un nombre positiu amb o sens unitat de mesura HTML valid (px o %).","invalidInlineStyle":"La valor especificada per l'estil en linha deu èsser compausada d'un o mantun parelh al format « nom : valor », separats per de punts-virgulas.","cssLengthTooltip":"Entrar un nombre per una valor en pixèls o un nombre amb una unitat de mesura CSS valida (px, %, in, cm, mm, em, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponible</span>","keyboard":{"8":"Retorn","13":"Entrada","16":"Majuscula","17":"Ctrl","18":"Alt","32":"Espaci","35":"Fin","36":"Origina","46":"Suprimir","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comanda"},"keyboardShortcut":"Acorchi de clavièr","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/pl.js b/core/assets/vendor/ckeditor/lang/pl.js index 474fe76dd0dd..3f9669244559 100644 --- a/core/assets/vendor/ckeditor/lang/pl.js +++ b/core/assets/vendor/ckeditor/lang/pl.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['pl']={"widget":{"move":"Kliknij i przeciÄ…gnij, by przenieść.","label":"Widget %1"},"undo":{"redo":"Ponów","undo":"Cofnij"},"toolbar":{"toolbarCollapse":"ZwiÅ„ pasek narzÄ™dzi","toolbarExpand":"RozwiÅ„ pasek narzÄ™dzi","toolbarGroups":{"document":"Dokument","clipboard":"Schowek/Wstecz","editing":"Edycja","forms":"Formularze","basicstyles":"Style podstawowe","paragraph":"Akapit","links":"HiperÅ‚Ä…cza","insert":"Wstawianie","styles":"Style","colors":"Kolory","tools":"NarzÄ™dzia"},"toolbars":"Paski narzÄ™dzi edytora"},"table":{"border":"Grubość obramowania","caption":"TytuÅ‚","cell":{"menu":"Komórka","insertBefore":"Wstaw komórkÄ™ z lewej","insertAfter":"Wstaw komórkÄ™ z prawej","deleteCell":"UsuÅ„ komórki","merge":"PoÅ‚Ä…cz komórki","mergeRight":"PoÅ‚Ä…cz z komórkÄ… z prawej","mergeDown":"PoÅ‚Ä…cz z komórkÄ… poniżej","splitHorizontal":"Podziel komórkÄ™ poziomo","splitVertical":"Podziel komórkÄ™ pionowo","title":"WÅ‚aÅ›ciwoÅ›ci komórki","cellType":"Typ komórki","rowSpan":"Scalenie wierszy","colSpan":"Scalenie komórek","wordWrap":"Zawijanie słów","hAlign":"Wyrównanie poziome","vAlign":"Wyrównanie pionowe","alignBaseline":"Linia bazowa","bgColor":"Kolor tÅ‚a","borderColor":"Kolor obramowania","data":"Dane","header":"Nagłówek","yes":"Tak","no":"Nie","invalidWidth":"Szerokość komórki musi być liczbÄ….","invalidHeight":"Wysokość komórki musi być liczbÄ….","invalidRowSpan":"Scalenie wierszy musi być liczbÄ… caÅ‚kowitÄ….","invalidColSpan":"Scalenie komórek musi być liczbÄ… caÅ‚kowitÄ….","chooseColor":"Wybierz"},"cellPad":"DopeÅ‚nienie komórek","cellSpace":"OdstÄ™p pomiÄ™dzy komórkami","column":{"menu":"Kolumna","insertBefore":"Wstaw kolumnÄ™ z lewej","insertAfter":"Wstaw kolumnÄ™ z prawej","deleteColumn":"UsuÅ„ kolumny"},"columns":"Liczba kolumn","deleteTable":"UsuÅ„ tabelÄ™","headers":"Nagłówki","headersBoth":"Oba","headersColumn":"Pierwsza kolumna","headersNone":"Brak","headersRow":"Pierwszy wiersz","heightUnit":"jednostka wysokoÅ›ci","invalidBorder":"Wartość obramowania musi być liczbÄ….","invalidCellPadding":"DopeÅ‚nienie komórek musi być liczbÄ… dodatniÄ….","invalidCellSpacing":"OdstÄ™p pomiÄ™dzy komórkami musi być liczbÄ… dodatniÄ….","invalidCols":"Liczba kolumn musi być wiÄ™ksza niż 0.","invalidHeight":"Wysokość tabeli musi być liczbÄ….","invalidRows":"Liczba wierszy musi być wiÄ™ksza niż 0.","invalidWidth":"Szerokość tabeli musi być liczbÄ….","menu":"WÅ‚aÅ›ciwoÅ›ci tabeli","row":{"menu":"Wiersz","insertBefore":"Wstaw wiersz powyżej","insertAfter":"Wstaw wiersz poniżej","deleteRow":"UsuÅ„ wiersze"},"rows":"Liczba wierszy","summary":"Podsumowanie","title":"WÅ‚aÅ›ciwoÅ›ci tabeli","toolbar":"Tabela","widthPc":"%","widthPx":"piksele","widthUnit":"jednostka szerokoÅ›ci"},"stylescombo":{"label":"Styl","panelTitle":"Style formatujÄ…ce","panelTitle1":"Style blokowe","panelTitle2":"Style liniowe","panelTitle3":"Style obiektowe"},"specialchar":{"options":"Opcje znaków specjalnych","title":"Wybierz znak specjalny","toolbar":"Wstaw znak specjalny"},"sourcedialog":{"toolbar":"ŹródÅ‚o dokumentu","title":"ŹródÅ‚o dokumentu"},"sourcearea":{"toolbar":"ŹródÅ‚o dokumentu"},"showblocks":{"toolbar":"Pokaż bloki"},"removeformat":{"toolbar":"UsuÅ„ formatowanie"},"pastetext":{"button":"Wklej jako czysty tekst","pasteNotification":"NaciÅ›nij %1 by wkleić tekst. Twoja przeglÄ…darka nie obsÅ‚uguje wklejania za pomocÄ… przycisku paska narzÄ™dzi lub opcji menu kontekstowego.","title":"Wklej jako czysty tekst"},"pastefromword":{"confirmCleanup":"Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Microsoft Word. Czy chcesz go wyczyÅ›cić przed wklejeniem?","error":"Wyczyszczenie wklejonych danych nie byÅ‚o możliwe z powodu wystÄ…pienia bÅ‚Ä™du.","title":"Wklej z programu MS Word","toolbar":"Wklej z programu MS Word"},"notification":{"closed":"Powiadomienie zostaÅ‚o zamkniÄ™te."},"maximize":{"maximize":"Maksymalizuj","minimize":"Minimalizuj"},"magicline":{"title":"Wstaw nowy akapit"},"list":{"bulletedlist":"Lista wypunktowana","numberedlist":"Lista numerowana"},"language":{"button":"Ustaw jÄ™zyk","remove":"UsuÅ„ jÄ™zyk"},"indent":{"indent":"ZwiÄ™ksz wciÄ™cie","outdent":"Zmniejsz wciÄ™cie"},"image2":{"alt":"Tekst zastÄ™pczy","btnUpload":"WyÅ›lij","captioned":"Obrazek z podpisem","captionPlaceholder":"Podpis","infoTab":"Informacje o obrazku","lockRatio":"Zablokuj proporcje","menu":"WÅ‚aÅ›ciwoÅ›ci obrazka","pathName":"obrazek","pathNameCaption":"podpis","resetSize":"Przywróć rozmiar","resizer":"Kliknij i przeciÄ…gnij, by zmienić rozmiar.","title":"WÅ‚aÅ›ciwoÅ›ci obrazka","uploadTab":"WyÅ›lij","urlMissing":"Podaj adres URL obrazka.","altMissing":"Podaj tekst zastÄ™pczy obrazka."},"horizontalrule":{"toolbar":"Wstaw poziomÄ… liniÄ™"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adres","tag_div":"Normalny (DIV)","tag_h1":"Nagłówek 1","tag_h2":"Nagłówek 2","tag_h3":"Nagłówek 3","tag_h4":"Nagłówek 4","tag_h5":"Nagłówek 5","tag_h6":"Nagłówek 6","tag_p":"Normalny","tag_pre":"Tekst sformatowany"},"filetools":{"loadError":"BÅ‚Ä…d podczas odczytu pliku.","networkError":"W trakcie wysyÅ‚ania pliku pojawiÅ‚ siÄ™ bÅ‚Ä…d sieciowy.","httpError404":"BÅ‚Ä…d HTTP w trakcie wysyÅ‚ania pliku (404: Nie znaleziono pliku).","httpError403":"BÅ‚Ä…d HTTP w trakcie wysyÅ‚ania pliku (403: Zabroniony).","httpError":"BÅ‚Ä…d HTTP w trakcie wysyÅ‚ania pliku (status bÅ‚Ä™du: %1).","noUrlError":"Nie zdefiniowano adresu URL do przesÅ‚ania pliku.","responseError":"Niepoprawna odpowiedź serwera."},"elementspath":{"eleLabel":"Åšcieżka elementów","eleTitle":"element %1"},"contextmenu":{"options":"Opcje menu kontekstowego"},"clipboard":{"copy":"Kopiuj","copyError":"Ustawienia bezpieczeÅ„stwa Twojej przeglÄ…darki nie pozwalajÄ… na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.","cut":"Wytnij","cutError":"Ustawienia bezpieczeÅ„stwa Twojej przeglÄ…darki nie pozwalajÄ… na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.","paste":"Wklej","pasteNotification":"NaciÅ›nij %1 by wkleić tekst. Twoja przeglÄ…darka nie pozwala na wklejanie za pomocÄ… przycisku paska narzÄ™dzi lub opcji menu kontekstowego.","pasteArea":"Miejsce do wklejenia treÅ›ci","pasteMsg":"Wklej treść do obszaru poniżej i naciÅ›nij OK."},"blockquote":{"toolbar":"Cytat"},"basicstyles":{"bold":"Pogrubienie","italic":"Kursywa","strike":"PrzekreÅ›lenie","subscript":"Indeks dolny","superscript":"Indeks górny","underline":"PodkreÅ›lenie"},"about":{"copy":"Copyright © $1. Wszelkie prawa zastrzeżone.","dlgTitle":"Informacje o programie CKEditor 4","moreInfo":"Informacje na temat licencji można znaleźć na naszej stronie:"},"editor":"Edytor tekstu sformatowanego","editorPanel":"Panel edytora tekstu sformatowanego","common":{"editorHelp":"W celu uzyskania pomocy naciÅ›nij ALT 0","browseServer":"PrzeglÄ…daj","url":"Adres URL","protocol":"Protokół","upload":"WyÅ›lij","uploadSubmit":"WyÅ›lij","image":"Obrazek","flash":"Flash","form":"Formularz","checkbox":"Pole wyboru (checkbox)","radio":"Przycisk opcji (radio)","textField":"Pole tekstowe","textarea":"Obszar tekstowy","hiddenField":"Pole ukryte","button":"Przycisk","select":"Lista wyboru","imageButton":"Przycisk graficzny","notSet":"<nie ustawiono>","id":"Id","name":"Nazwa","langDir":"Kierunek tekstu","langDirLtr":"Od lewej do prawej (LTR)","langDirRtl":"Od prawej do lewej (RTL)","langCode":"Kod jÄ™zyka","longDescr":"Adres URL dÅ‚ugiego opisu","cssClass":"Nazwa klasy CSS","advisoryTitle":"Opis obiektu docelowego","cssStyle":"Styl","ok":"OK","cancel":"Anuluj","close":"Zamknij","preview":"PodglÄ…d","resize":"PrzeciÄ…gnij, aby zmienić rozmiar","generalTab":"Ogólne","advancedTab":"Zaawansowane","validateNumberFailed":"Ta wartość nie jest liczbÄ….","confirmNewPage":"Wszystkie niezapisane zmiany zostanÄ… utracone. Czy na pewno wczytać nowÄ… stronÄ™?","confirmCancel":"Pewne opcje zostaÅ‚y zmienione. Czy na pewno zamknąć okno dialogowe?","options":"Opcje","target":"Obiekt docelowy","targetNew":"Nowe okno (_blank)","targetTop":"Okno najwyżej w hierarchii (_top)","targetSelf":"To samo okno (_self)","targetParent":"Okno nadrzÄ™dne (_parent)","langDirLTR":"Od lewej do prawej (LTR)","langDirRTL":"Od prawej do lewej (RTL)","styles":"Style","cssClasses":"Klasy arkusza stylów","width":"Szerokość","height":"Wysokość","align":"Wyrównaj","left":"Do lewej","right":"Do prawej","center":"Do Å›rodka","justify":"Wyjustuj","alignLeft":"Wyrównaj do lewej","alignRight":"Wyrównaj do prawej","alignCenter":"WyÅ›rodkuj","alignTop":"Do góry","alignMiddle":"Do Å›rodka","alignBottom":"Do doÅ‚u","alignNone":"Brak","invalidValue":"NieprawidÅ‚owa wartość.","invalidHeight":"Wysokość musi być liczbÄ….","invalidWidth":"Szerokość musi być liczbÄ….","invalidLength":"Wartość podana dla pola \"%1\" musi być liczbÄ… dodatniÄ… bez jednostki lub z poprawnÄ… jednostkÄ… dÅ‚ugoÅ›ci (%2).","invalidCssLength":"Wartość podana dla pola \"%1\" musi być liczbÄ… dodatniÄ… bez jednostki lub z poprawnÄ… jednostkÄ… dÅ‚ugoÅ›ci zgodnÄ… z CSS (px, %, in, cm, mm, em, ex, pt lub pc).","invalidHtmlLength":"Wartość podana dla pola \"%1\" musi być liczbÄ… dodatniÄ… bez jednostki lub z poprawnÄ… jednostkÄ… dÅ‚ugoÅ›ci zgodnÄ… z HTML (px lub %).","invalidInlineStyle":"Wartość podana dla stylu musi skÅ‚adać siÄ™ z jednej lub wiÄ™kszej liczby krotek w formacie \"nazwa : wartość\", rozdzielonych Å›rednikami.","cssLengthTooltip":"Wpisz liczbÄ™ dla wartoÅ›ci w pikselach lub liczbÄ™ wraz z jednostkÄ… dÅ‚ugoÅ›ci zgodnÄ… z CSS (px, %, in, cm, mm, em, ex, pt lub pc).","unavailable":"%1<span class=\"cke_accessibility\">, niedostÄ™pne</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"spacja","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Skrót klawiszowy","optionDefault":"DomyÅ›lny"}}; \ No newline at end of file +CKEDITOR.lang['pl']={"widget":{"move":"Kliknij i przeciÄ…gnij, by przenieść.","label":"Widget %1"},"undo":{"redo":"Ponów","undo":"Cofnij"},"toolbar":{"toolbarCollapse":"ZwiÅ„ pasek narzÄ™dzi","toolbarExpand":"RozwiÅ„ pasek narzÄ™dzi","toolbarGroups":{"document":"Dokument","clipboard":"Schowek/Wstecz","editing":"Edycja","forms":"Formularze","basicstyles":"Style podstawowe","paragraph":"Akapit","links":"HiperÅ‚Ä…cza","insert":"Wstawianie","styles":"Style","colors":"Kolory","tools":"NarzÄ™dzia"},"toolbars":"Paski narzÄ™dzi edytora"},"table":{"border":"Grubość obramowania","caption":"TytuÅ‚","cell":{"menu":"Komórka","insertBefore":"Wstaw komórkÄ™ z lewej","insertAfter":"Wstaw komórkÄ™ z prawej","deleteCell":"UsuÅ„ komórki","merge":"PoÅ‚Ä…cz komórki","mergeRight":"PoÅ‚Ä…cz z komórkÄ… z prawej","mergeDown":"PoÅ‚Ä…cz z komórkÄ… poniżej","splitHorizontal":"Podziel komórkÄ™ poziomo","splitVertical":"Podziel komórkÄ™ pionowo","title":"WÅ‚aÅ›ciwoÅ›ci komórki","cellType":"Typ komórki","rowSpan":"Scalenie wierszy","colSpan":"Scalenie komórek","wordWrap":"Zawijanie słów","hAlign":"Wyrównanie poziome","vAlign":"Wyrównanie pionowe","alignBaseline":"Linia bazowa","bgColor":"Kolor tÅ‚a","borderColor":"Kolor obramowania","data":"Dane","header":"Nagłówek","yes":"Tak","no":"Nie","invalidWidth":"Szerokość komórki musi być liczbÄ….","invalidHeight":"Wysokość komórki musi być liczbÄ….","invalidRowSpan":"Scalenie wierszy musi być liczbÄ… caÅ‚kowitÄ….","invalidColSpan":"Scalenie komórek musi być liczbÄ… caÅ‚kowitÄ….","chooseColor":"Wybierz"},"cellPad":"DopeÅ‚nienie komórek","cellSpace":"OdstÄ™p pomiÄ™dzy komórkami","column":{"menu":"Kolumna","insertBefore":"Wstaw kolumnÄ™ z lewej","insertAfter":"Wstaw kolumnÄ™ z prawej","deleteColumn":"UsuÅ„ kolumny"},"columns":"Liczba kolumn","deleteTable":"UsuÅ„ tabelÄ™","headers":"Nagłówki","headersBoth":"Oba","headersColumn":"Pierwsza kolumna","headersNone":"Brak","headersRow":"Pierwszy wiersz","heightUnit":"jednostka wysokoÅ›ci","invalidBorder":"Wartość obramowania musi być liczbÄ….","invalidCellPadding":"DopeÅ‚nienie komórek musi być liczbÄ… dodatniÄ….","invalidCellSpacing":"OdstÄ™p pomiÄ™dzy komórkami musi być liczbÄ… dodatniÄ….","invalidCols":"Liczba kolumn musi być wiÄ™ksza niż 0.","invalidHeight":"Wysokość tabeli musi być liczbÄ….","invalidRows":"Liczba wierszy musi być wiÄ™ksza niż 0.","invalidWidth":"Szerokość tabeli musi być liczbÄ….","menu":"WÅ‚aÅ›ciwoÅ›ci tabeli","row":{"menu":"Wiersz","insertBefore":"Wstaw wiersz powyżej","insertAfter":"Wstaw wiersz poniżej","deleteRow":"UsuÅ„ wiersze"},"rows":"Liczba wierszy","summary":"Podsumowanie","title":"WÅ‚aÅ›ciwoÅ›ci tabeli","toolbar":"Tabela","widthPc":"%","widthPx":"piksele","widthUnit":"jednostka szerokoÅ›ci"},"stylescombo":{"label":"Styl","panelTitle":"Style formatujÄ…ce","panelTitle1":"Style blokowe","panelTitle2":"Style liniowe","panelTitle3":"Style obiektowe"},"specialchar":{"options":"Opcje znaków specjalnych","title":"Wybierz znak specjalny","toolbar":"Wstaw znak specjalny"},"sourcedialog":{"toolbar":"ŹródÅ‚o dokumentu","title":"ŹródÅ‚o dokumentu"},"sourcearea":{"toolbar":"ŹródÅ‚o dokumentu"},"showblocks":{"toolbar":"Pokaż bloki"},"removeformat":{"toolbar":"UsuÅ„ formatowanie"},"pastetext":{"button":"Wklej jako czysty tekst","pasteNotification":"NaciÅ›nij %1 by wkleić tekst. Twoja przeglÄ…darka nie obsÅ‚uguje wklejania za pomocÄ… przycisku paska narzÄ™dzi lub opcji menu kontekstowego.","title":"Wklej jako czysty tekst"},"pastefromword":{"confirmCleanup":"Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Microsoft Word. Czy chcesz go wyczyÅ›cić przed wklejeniem?","error":"Wyczyszczenie wklejonych danych nie byÅ‚o możliwe z powodu wystÄ…pienia bÅ‚Ä™du.","title":"Wklej z programu MS Word","toolbar":"Wklej z programu MS Word"},"notification":{"closed":"Powiadomienie zostaÅ‚o zamkniÄ™te."},"maximize":{"maximize":"Maksymalizuj","minimize":"Minimalizuj"},"magicline":{"title":"Wstaw nowy akapit"},"list":{"bulletedlist":"Lista wypunktowana","numberedlist":"Lista numerowana"},"language":{"button":"Ustaw jÄ™zyk","remove":"UsuÅ„ jÄ™zyk"},"indent":{"indent":"ZwiÄ™ksz wciÄ™cie","outdent":"Zmniejsz wciÄ™cie"},"image2":{"alt":"Tekst zastÄ™pczy","btnUpload":"WyÅ›lij","captioned":"Obrazek z podpisem","captionPlaceholder":"Podpis","infoTab":"Informacje o obrazku","lockRatio":"Zablokuj proporcje","menu":"WÅ‚aÅ›ciwoÅ›ci obrazka","pathName":"obrazek","pathNameCaption":"podpis","resetSize":"Przywróć rozmiar","resizer":"Kliknij i przeciÄ…gnij, by zmienić rozmiar.","title":"WÅ‚aÅ›ciwoÅ›ci obrazka","uploadTab":"WyÅ›lij","urlMissing":"Podaj adres URL obrazka.","altMissing":"Podaj tekst zastÄ™pczy obrazka."},"horizontalrule":{"toolbar":"Wstaw poziomÄ… liniÄ™"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Adres","tag_div":"Normalny (DIV)","tag_h1":"Nagłówek 1","tag_h2":"Nagłówek 2","tag_h3":"Nagłówek 3","tag_h4":"Nagłówek 4","tag_h5":"Nagłówek 5","tag_h6":"Nagłówek 6","tag_p":"Normalny","tag_pre":"Tekst sformatowany"},"filetools":{"loadError":"BÅ‚Ä…d podczas odczytu pliku.","networkError":"W trakcie wysyÅ‚ania pliku pojawiÅ‚ siÄ™ bÅ‚Ä…d sieciowy.","httpError404":"BÅ‚Ä…d HTTP w trakcie wysyÅ‚ania pliku (404: Nie znaleziono pliku).","httpError403":"BÅ‚Ä…d HTTP w trakcie wysyÅ‚ania pliku (403: Zabroniony).","httpError":"BÅ‚Ä…d HTTP w trakcie wysyÅ‚ania pliku (status bÅ‚Ä™du: %1).","noUrlError":"Nie zdefiniowano adresu URL do przesÅ‚ania pliku.","responseError":"Niepoprawna odpowiedź serwera."},"elementspath":{"eleLabel":"Åšcieżka elementów","eleTitle":"element %1"},"contextmenu":{"options":"Opcje menu kontekstowego"},"clipboard":{"copy":"Kopiuj","copyError":"Ustawienia bezpieczeÅ„stwa Twojej przeglÄ…darki nie pozwalajÄ… na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.","cut":"Wytnij","cutError":"Ustawienia bezpieczeÅ„stwa Twojej przeglÄ…darki nie pozwalajÄ… na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.","paste":"Wklej","pasteNotification":"NaciÅ›nij %1 by wkleić tekst. Twoja przeglÄ…darka nie pozwala na wklejanie za pomocÄ… przycisku paska narzÄ™dzi lub opcji menu kontekstowego.","pasteArea":"Miejsce do wklejenia treÅ›ci","pasteMsg":"Wklej treść do obszaru poniżej i naciÅ›nij OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Cytat"},"basicstyles":{"bold":"Pogrubienie","italic":"Kursywa","strike":"PrzekreÅ›lenie","subscript":"Indeks dolny","superscript":"Indeks górny","underline":"PodkreÅ›lenie"},"about":{"copy":"Copyright © $1. Wszelkie prawa zastrzeżone.","dlgTitle":"Informacje o programie CKEditor 4","moreInfo":"Informacje na temat licencji można znaleźć na naszej stronie:"},"editor":"Edytor tekstu sformatowanego","editorPanel":"Panel edytora tekstu sformatowanego","common":{"editorHelp":"W celu uzyskania pomocy naciÅ›nij ALT 0","browseServer":"PrzeglÄ…daj","url":"Adres URL","protocol":"Protokół","upload":"WyÅ›lij","uploadSubmit":"WyÅ›lij","image":"Obrazek","form":"Formularz","checkbox":"Pole wyboru (checkbox)","radio":"Przycisk opcji (radio)","textField":"Pole tekstowe","textarea":"Obszar tekstowy","hiddenField":"Pole ukryte","button":"Przycisk","select":"Lista wyboru","imageButton":"Przycisk graficzny","notSet":"<nie ustawiono>","id":"Id","name":"Nazwa","langDir":"Kierunek tekstu","langDirLtr":"Od lewej do prawej (LTR)","langDirRtl":"Od prawej do lewej (RTL)","langCode":"Kod jÄ™zyka","longDescr":"Adres URL dÅ‚ugiego opisu","cssClass":"Nazwa klasy CSS","advisoryTitle":"Opis obiektu docelowego","cssStyle":"Styl","ok":"OK","cancel":"Anuluj","close":"Zamknij","preview":"PodglÄ…d","resize":"PrzeciÄ…gnij, aby zmienić rozmiar","generalTab":"Ogólne","advancedTab":"Zaawansowane","validateNumberFailed":"Ta wartość nie jest liczbÄ….","confirmNewPage":"Wszystkie niezapisane zmiany zostanÄ… utracone. Czy na pewno wczytać nowÄ… stronÄ™?","confirmCancel":"Pewne opcje zostaÅ‚y zmienione. Czy na pewno zamknąć okno dialogowe?","options":"Opcje","target":"Obiekt docelowy","targetNew":"Nowe okno (_blank)","targetTop":"Okno najwyżej w hierarchii (_top)","targetSelf":"To samo okno (_self)","targetParent":"Okno nadrzÄ™dne (_parent)","langDirLTR":"Od lewej do prawej (LTR)","langDirRTL":"Od prawej do lewej (RTL)","styles":"Style","cssClasses":"Klasy arkusza stylów","width":"Szerokość","height":"Wysokość","align":"Wyrównaj","left":"Do lewej","right":"Do prawej","center":"Do Å›rodka","justify":"Wyjustuj","alignLeft":"Wyrównaj do lewej","alignRight":"Wyrównaj do prawej","alignCenter":"WyÅ›rodkuj","alignTop":"Do góry","alignMiddle":"Do Å›rodka","alignBottom":"Do doÅ‚u","alignNone":"Brak","invalidValue":"NieprawidÅ‚owa wartość.","invalidHeight":"Wysokość musi być liczbÄ….","invalidWidth":"Szerokość musi być liczbÄ….","invalidLength":"Wartość podana dla pola \"%1\" musi być liczbÄ… dodatniÄ… bez jednostki lub z poprawnÄ… jednostkÄ… dÅ‚ugoÅ›ci (%2).","invalidCssLength":"Wartość podana dla pola \"%1\" musi być liczbÄ… dodatniÄ… bez jednostki lub z poprawnÄ… jednostkÄ… dÅ‚ugoÅ›ci zgodnÄ… z CSS (px, %, in, cm, mm, em, ex, pt lub pc).","invalidHtmlLength":"Wartość podana dla pola \"%1\" musi być liczbÄ… dodatniÄ… bez jednostki lub z poprawnÄ… jednostkÄ… dÅ‚ugoÅ›ci zgodnÄ… z HTML (px lub %).","invalidInlineStyle":"Wartość podana dla stylu musi skÅ‚adać siÄ™ z jednej lub wiÄ™kszej liczby krotek w formacie \"nazwa : wartość\", rozdzielonych Å›rednikami.","cssLengthTooltip":"Wpisz liczbÄ™ dla wartoÅ›ci w pikselach lub liczbÄ™ wraz z jednostkÄ… dÅ‚ugoÅ›ci zgodnÄ… z CSS (px, %, in, cm, mm, em, ex, pt lub pc).","unavailable":"%1<span class=\"cke_accessibility\">, niedostÄ™pne</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"spacja","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Skrót klawiszowy","optionDefault":"DomyÅ›lny"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/pt-br.js b/core/assets/vendor/ckeditor/lang/pt-br.js index f3dd8cfb40dd..276712789a27 100644 --- a/core/assets/vendor/ckeditor/lang/pt-br.js +++ b/core/assets/vendor/ckeditor/lang/pt-br.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['pt-br']={"widget":{"move":"Click e arraste para mover","label":"%1 widget"},"undo":{"redo":"Refazer","undo":"Desfazer"},"toolbar":{"toolbarCollapse":"Diminuir Barra de Ferramentas","toolbarExpand":"Aumentar Barra de Ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Clipboard/Desfazer","editing":"Edição","forms":"Formulários","basicstyles":"Estilos Básicos","paragraph":"Paragrafo","links":"Links","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barra de Ferramentas do Editor"},"table":{"border":"Borda","caption":"Legenda","cell":{"menu":"Célula","insertBefore":"Inserir célula a esquerda","insertAfter":"Inserir célula a direita","deleteCell":"Remover Células","merge":"Mesclar Células","mergeRight":"Mesclar com célula a direita","mergeDown":"Mesclar com célula abaixo","splitHorizontal":"Dividir célula horizontalmente","splitVertical":"Dividir célula verticalmente","title":"Propriedades da célula","cellType":"Tipo de célula","rowSpan":"Linhas cobertas","colSpan":"Colunas cobertas","wordWrap":"Quebra de palavra","hAlign":"Alinhamento horizontal","vAlign":"Alinhamento vertical","alignBaseline":"Patamar de alinhamento","bgColor":"Cor de fundo","borderColor":"Cor das bordas","data":"Dados","header":"Cabeçalho","yes":"Sim","no":"Não","invalidWidth":"A largura da célula tem que ser um número.","invalidHeight":"A altura da célula tem que ser um número.","invalidRowSpan":"Linhas cobertas tem que ser um número inteiro.","invalidColSpan":"Colunas cobertas tem que ser um número inteiro.","chooseColor":"Escolher"},"cellPad":"Margem interna","cellSpace":"Espaçamento","column":{"menu":"Coluna","insertBefore":"Inserir coluna a esquerda","insertAfter":"Inserir coluna a direita","deleteColumn":"Remover Colunas"},"columns":"Colunas","deleteTable":"Apagar Tabela","headers":"Cabeçalho","headersBoth":"Ambos","headersColumn":"Primeira coluna","headersNone":"Nenhum","headersRow":"Primeira linha","heightUnit":"Unidade para altura","invalidBorder":"O tamanho da borda tem que ser um número.","invalidCellPadding":"A margem interna das células tem que ser um número.","invalidCellSpacing":"O espaçamento das células tem que ser um número.","invalidCols":"O número de colunas tem que ser um número maior que 0.","invalidHeight":"A altura da tabela tem que ser um número.","invalidRows":"O número de linhas tem que ser um número maior que 0.","invalidWidth":"A largura da tabela tem que ser um número.","menu":"Formatar Tabela","row":{"menu":"Linha","insertBefore":"Inserir linha acima","insertAfter":"Inserir linha abaixo","deleteRow":"Remover Linhas"},"rows":"Linhas","summary":"Resumo","title":"Formatar Tabela","toolbar":"Tabela","widthPc":"%","widthPx":"pixels","widthUnit":"unidade largura"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos de Formatação","panelTitle1":"Estilos de bloco","panelTitle2":"Estilos de texto corrido","panelTitle3":"Estilos de objeto"},"specialchar":{"options":"Opções de Caractere Especial","title":"Selecione um Caractere Especial","toolbar":"Inserir Caractere Especial"},"sourcedialog":{"toolbar":"Código-Fonte","title":"Código-Fonte"},"sourcearea":{"toolbar":"Código-Fonte"},"showblocks":{"toolbar":"Mostrar blocos de código"},"removeformat":{"toolbar":"Remover Formatação"},"pastetext":{"button":"Colar como Texto sem Formatação","pasteNotification":"Pressione %1 para colar. Seu navegador não suporta colar a partir do botão da barra de ferramentas ou do menu de contexto.","title":"Colar como Texto sem Formatação"},"pastefromword":{"confirmCleanup":"O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?","error":"Não foi possÃvel limpar os dados colados devido a um erro interno","title":"Colar do Word","toolbar":"Colar do Word"},"notification":{"closed":"Notificação fechada."},"maximize":{"maximize":"Maximizar","minimize":"Minimize"},"magicline":{"title":"Inserir um parágrafo aqui"},"list":{"bulletedlist":"Lista sem números","numberedlist":"Lista numerada"},"language":{"button":"Configure o Idioma","remove":"Remover Idioma"},"indent":{"indent":"Aumentar Recuo","outdent":"Diminuir Recuo"},"image2":{"alt":"Texto Alternativo","btnUpload":"Enviar para o Servidor","captioned":"Legenda da Imagem","captionPlaceholder":"Legenda","infoTab":"Informações da Imagem","lockRatio":"Travar Proporções","menu":"Formatar Imagem","pathName":"Imagem","pathNameCaption":"Legenda","resetSize":"Redefinir para o Tamanho Original","resizer":"Click e arraste para redimensionar","title":"Formatar Imagem","uploadTab":"Enviar ao Servidor","urlMissing":"URL da imagem está faltando.","altMissing":"Texto alternativo não informado."},"horizontalrule":{"toolbar":"Inserir Linha Horizontal"},"format":{"label":"Formatação","panelTitle":"Formatação","tag_address":"Endereço","tag_div":"Normal (DIV)","tag_h1":"TÃtulo 1","tag_h2":"TÃtulo 2","tag_h3":"TÃtulo 3","tag_h4":"TÃtulo 4","tag_h5":"TÃtulo 5","tag_h6":"TÃtulo 6","tag_p":"Normal","tag_pre":"Formatado"},"filetools":{"loadError":"Um erro ocorreu durante a leitura do arquivo.","networkError":"Um erro de rede ocorreu durante o envio do arquivo.","httpError404":"Um erro HTTP ocorreu durante o envio do arquivo (404: Arquivo não encontrado).","httpError403":"Um erro HTTP ocorreu durante o envio do arquivo (403: Proibido).","httpError":"Um erro HTTP ocorreu durante o envio do arquivo (status do erro: %1)","noUrlError":"A URL de upload não está definida.","responseError":"Resposta incorreta do servidor."},"elementspath":{"eleLabel":"Caminho dos Elementos","eleTitle":"Elemento %1"},"contextmenu":{"options":"Opções Menu de Contexto"},"clipboard":{"copy":"Copiar","copyError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).","cut":"Recortar","cutError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).","paste":"Colar","pasteNotification":"Pressione %1 para colar. Seu navegador não permite colar pelos botões da barra de tarefas ou pelo menu de contexto.","pasteArea":"Ãrea para Colar","pasteMsg":"Cole o conteúdo na área abaixo e pressione OK."},"blockquote":{"toolbar":"Citação"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Tachado","subscript":"Subscrito","superscript":"Sobrescrito","underline":"Sublinhado"},"about":{"copy":"Copyright © $1. Todos os direitos reservados.","dlgTitle":"Sobre o CKEditor 4","moreInfo":"Para informações sobre a licença por favor visite o nosso site:"},"editor":"Editor de Rich Text","editorPanel":"Painel do editor de Rich Text","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Localizar no Servidor","url":"URL","protocol":"Protocolo","upload":"Enviar ao Servidor","uploadSubmit":"Enviar para o Servidor","image":"Imagem","flash":"Flash","form":"Formulário","checkbox":"Caixa de Seleção","radio":"Botão de Opção","textField":"Caixa de Texto","textarea":"Ãrea de Texto","hiddenField":"Campo Oculto","button":"Botão","select":"Caixa de Listagem","imageButton":"Botão de Imagem","notSet":"<não ajustado>","id":"Id","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para Direita (LTR)","langDirRtl":"Direita para Esquerda (RTL)","langCode":"Idioma","longDescr":"Descrição da URL","cssClass":"Classe de CSS","advisoryTitle":"TÃtulo","cssStyle":"Estilos","ok":"OK","cancel":"Cancelar","close":"Fechar","preview":"Visualizar","resize":"Arraste para redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor não é um número.","confirmNewPage":"Todas as mudanças não salvas serão perdidas. Tem certeza de que quer abrir uma nova página?","confirmCancel":"Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?","options":"Opções","target":"Destino","targetNew":"Nova Janela (_blank)","targetTop":"Janela de Cima (_top)","targetSelf":"Mesma Janela (_self)","targetParent":"Janela Pai (_parent)","langDirLTR":"Esquerda para Direita (LTR)","langDirRTL":"Direita para Esquerda (RTL)","styles":"Estilo","cssClasses":"Classes","width":"Largura","height":"Altura","align":"Alinhamento","left":"Esquerda","right":"Direita","center":"Centralizado","justify":"Justificar","alignLeft":"Alinhar Esquerda","alignRight":"Alinhar Direita","alignCenter":"Centralizar","alignTop":"Superior","alignMiddle":"Centralizado","alignBottom":"Inferior","alignNone":"Nenhum","invalidValue":"Valor inválido.","invalidHeight":"A altura tem que ser um número","invalidWidth":"A largura tem que ser um número.","invalidLength":"Valor especifico para o campo \"%1\" deve ser um número positivo com ou sem uma unidade mensurável (%2) válida.","invalidCssLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","invalidHtmlLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de HTML (px ou %).","invalidInlineStyle":"O valor válido para estilo deve conter uma ou mais tuplas no formato \"nome : valor\", separados por ponto e vÃrgula.","cssLengthTooltip":"Insira um número para valor em pixels ou um número seguido de uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponÃvel</span>","keyboard":{"8":"Tecla Retroceder","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Tecla Espaço","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Atalho do teclado","optionDefault":"Padrão"}}; \ No newline at end of file +CKEDITOR.lang['pt-br']={"widget":{"move":"Click e arraste para mover","label":"%1 widget"},"undo":{"redo":"Refazer","undo":"Desfazer"},"toolbar":{"toolbarCollapse":"Diminuir Barra de Ferramentas","toolbarExpand":"Aumentar Barra de Ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Clipboard/Desfazer","editing":"Edição","forms":"Formulários","basicstyles":"Estilos Básicos","paragraph":"Paragrafo","links":"Links","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barra de Ferramentas do Editor"},"table":{"border":"Borda","caption":"Legenda","cell":{"menu":"Célula","insertBefore":"Inserir célula a esquerda","insertAfter":"Inserir célula a direita","deleteCell":"Remover Células","merge":"Mesclar Células","mergeRight":"Mesclar com célula a direita","mergeDown":"Mesclar com célula abaixo","splitHorizontal":"Dividir célula horizontalmente","splitVertical":"Dividir célula verticalmente","title":"Propriedades da célula","cellType":"Tipo de célula","rowSpan":"Linhas cobertas","colSpan":"Colunas cobertas","wordWrap":"Quebra de palavra","hAlign":"Alinhamento horizontal","vAlign":"Alinhamento vertical","alignBaseline":"Patamar de alinhamento","bgColor":"Cor de fundo","borderColor":"Cor das bordas","data":"Dados","header":"Cabeçalho","yes":"Sim","no":"Não","invalidWidth":"A largura da célula tem que ser um número.","invalidHeight":"A altura da célula tem que ser um número.","invalidRowSpan":"Linhas cobertas tem que ser um número inteiro.","invalidColSpan":"Colunas cobertas tem que ser um número inteiro.","chooseColor":"Escolher"},"cellPad":"Margem interna","cellSpace":"Espaçamento","column":{"menu":"Coluna","insertBefore":"Inserir coluna a esquerda","insertAfter":"Inserir coluna a direita","deleteColumn":"Remover Colunas"},"columns":"Colunas","deleteTable":"Apagar Tabela","headers":"Cabeçalho","headersBoth":"Ambos","headersColumn":"Primeira coluna","headersNone":"Nenhum","headersRow":"Primeira linha","heightUnit":"Unidade para altura","invalidBorder":"O tamanho da borda tem que ser um número.","invalidCellPadding":"A margem interna das células tem que ser um número.","invalidCellSpacing":"O espaçamento das células tem que ser um número.","invalidCols":"O número de colunas tem que ser um número maior que 0.","invalidHeight":"A altura da tabela tem que ser um número.","invalidRows":"O número de linhas tem que ser um número maior que 0.","invalidWidth":"A largura da tabela tem que ser um número.","menu":"Formatar Tabela","row":{"menu":"Linha","insertBefore":"Inserir linha acima","insertAfter":"Inserir linha abaixo","deleteRow":"Remover Linhas"},"rows":"Linhas","summary":"Resumo","title":"Formatar Tabela","toolbar":"Tabela","widthPc":"%","widthPx":"pixels","widthUnit":"unidade largura"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos de Formatação","panelTitle1":"Estilos de bloco","panelTitle2":"Estilos de texto corrido","panelTitle3":"Estilos de objeto"},"specialchar":{"options":"Opções de Caractere Especial","title":"Selecione um Caractere Especial","toolbar":"Inserir Caractere Especial"},"sourcedialog":{"toolbar":"Código-Fonte","title":"Código-Fonte"},"sourcearea":{"toolbar":"Código-Fonte"},"showblocks":{"toolbar":"Mostrar blocos de código"},"removeformat":{"toolbar":"Remover Formatação"},"pastetext":{"button":"Colar como Texto sem Formatação","pasteNotification":"Pressione %1 para colar. Seu navegador não suporta colar a partir do botão da barra de ferramentas ou do menu de contexto.","title":"Colar como Texto sem Formatação"},"pastefromword":{"confirmCleanup":"O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?","error":"Não foi possÃvel limpar os dados colados devido a um erro interno","title":"Colar do Word","toolbar":"Colar do Word"},"notification":{"closed":"Notificação fechada."},"maximize":{"maximize":"Maximizar","minimize":"Minimize"},"magicline":{"title":"Inserir um parágrafo aqui"},"list":{"bulletedlist":"Lista sem números","numberedlist":"Lista numerada"},"language":{"button":"Configure o Idioma","remove":"Remover Idioma"},"indent":{"indent":"Aumentar Recuo","outdent":"Diminuir Recuo"},"image2":{"alt":"Texto Alternativo","btnUpload":"Enviar para o Servidor","captioned":"Legenda da Imagem","captionPlaceholder":"Legenda","infoTab":"Informações da Imagem","lockRatio":"Travar Proporções","menu":"Formatar Imagem","pathName":"Imagem","pathNameCaption":"Legenda","resetSize":"Redefinir para o Tamanho Original","resizer":"Click e arraste para redimensionar","title":"Formatar Imagem","uploadTab":"Enviar ao Servidor","urlMissing":"URL da imagem está faltando.","altMissing":"Texto alternativo não informado."},"horizontalrule":{"toolbar":"Inserir Linha Horizontal"},"format":{"label":"Formatação","panelTitle":"Formatação","tag_address":"Endereço","tag_div":"Normal (DIV)","tag_h1":"TÃtulo 1","tag_h2":"TÃtulo 2","tag_h3":"TÃtulo 3","tag_h4":"TÃtulo 4","tag_h5":"TÃtulo 5","tag_h6":"TÃtulo 6","tag_p":"Normal","tag_pre":"Formatado"},"filetools":{"loadError":"Um erro ocorreu durante a leitura do arquivo.","networkError":"Um erro de rede ocorreu durante o envio do arquivo.","httpError404":"Um erro HTTP ocorreu durante o envio do arquivo (404: Arquivo não encontrado).","httpError403":"Um erro HTTP ocorreu durante o envio do arquivo (403: Proibido).","httpError":"Um erro HTTP ocorreu durante o envio do arquivo (status do erro: %1)","noUrlError":"A URL de upload não está definida.","responseError":"Resposta incorreta do servidor."},"elementspath":{"eleLabel":"Caminho dos Elementos","eleTitle":"Elemento %1"},"contextmenu":{"options":"Opções Menu de Contexto"},"clipboard":{"copy":"Copiar","copyError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).","cut":"Recortar","cutError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).","paste":"Colar","pasteNotification":"Pressione %1 para colar. Seu navegador não permite colar pelos botões da barra de tarefas ou pelo menu de contexto.","pasteArea":"Ãrea para Colar","pasteMsg":"Cole o conteúdo na área abaixo e pressione OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citação"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Tachado","subscript":"Subscrito","superscript":"Sobrescrito","underline":"Sublinhado"},"about":{"copy":"Copyright © $1. Todos os direitos reservados.","dlgTitle":"Sobre o CKEditor 4","moreInfo":"Para informações sobre a licença por favor visite o nosso site:"},"editor":"Editor de Rich Text","editorPanel":"Painel do editor de Rich Text","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Localizar no Servidor","url":"URL","protocol":"Protocolo","upload":"Enviar ao Servidor","uploadSubmit":"Enviar para o Servidor","image":"Imagem","form":"Formulário","checkbox":"Caixa de Seleção","radio":"Botão de Opção","textField":"Caixa de Texto","textarea":"Ãrea de Texto","hiddenField":"Campo Oculto","button":"Botão","select":"Caixa de Listagem","imageButton":"Botão de Imagem","notSet":"<não ajustado>","id":"Id","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para Direita (LTR)","langDirRtl":"Direita para Esquerda (RTL)","langCode":"Idioma","longDescr":"Descrição da URL","cssClass":"Classe de CSS","advisoryTitle":"TÃtulo","cssStyle":"Estilos","ok":"OK","cancel":"Cancelar","close":"Fechar","preview":"Visualizar","resize":"Arraste para redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor não é um número.","confirmNewPage":"Todas as mudanças não salvas serão perdidas. Tem certeza de que quer abrir uma nova página?","confirmCancel":"Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?","options":"Opções","target":"Destino","targetNew":"Nova Janela (_blank)","targetTop":"Janela de Cima (_top)","targetSelf":"Mesma Janela (_self)","targetParent":"Janela Pai (_parent)","langDirLTR":"Esquerda para Direita (LTR)","langDirRTL":"Direita para Esquerda (RTL)","styles":"Estilo","cssClasses":"Classes","width":"Largura","height":"Altura","align":"Alinhamento","left":"Esquerda","right":"Direita","center":"Centralizado","justify":"Justificar","alignLeft":"Alinhar Esquerda","alignRight":"Alinhar Direita","alignCenter":"Centralizar","alignTop":"Superior","alignMiddle":"Centralizado","alignBottom":"Inferior","alignNone":"Nenhum","invalidValue":"Valor inválido.","invalidHeight":"A altura tem que ser um número","invalidWidth":"A largura tem que ser um número.","invalidLength":"Valor especifico para o campo \"%1\" deve ser um número positivo com ou sem uma unidade mensurável (%2) válida.","invalidCssLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","invalidHtmlLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de HTML (px ou %).","invalidInlineStyle":"O valor válido para estilo deve conter uma ou mais tuplas no formato \"nome : valor\", separados por ponto e vÃrgula.","cssLengthTooltip":"Insira um número para valor em pixels ou um número seguido de uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponÃvel</span>","keyboard":{"8":"Tecla Retroceder","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Tecla Espaço","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Atalho do teclado","optionDefault":"Padrão"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/pt.js b/core/assets/vendor/ckeditor/lang/pt.js index 7d054994966b..41984cc37632 100644 --- a/core/assets/vendor/ckeditor/lang/pt.js +++ b/core/assets/vendor/ckeditor/lang/pt.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['pt']={"widget":{"move":"Clique e arraste para mover","label":"%1 widget"},"undo":{"redo":"Refazer","undo":"Anular"},"toolbar":{"toolbarCollapse":"Ocultar barra de ferramentas","toolbarExpand":"Expandir barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Ãrea de transferência/Anular","editing":"Edição","forms":"Formulários","basicstyles":"Estilos básicos","paragraph":"Parágrafo","links":"Hiperligações","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Editor de barras de ferramentas"},"table":{"border":"Tamanho do contorno","caption":"Legenda","cell":{"menu":"Célula","insertBefore":"Inserir célula antes","insertAfter":"Inserir célula depois","deleteCell":"Apagar células","merge":"Unir células","mergeRight":"Unir à direita","mergeDown":"Fundir abaixo","splitHorizontal":"Dividir célula horizontalmente","splitVertical":"Dividir célula verticalmente","title":"Propriedades da célula","cellType":"Tipo de célula","rowSpan":"Linhas na célula","colSpan":"Colunas na célula","wordWrap":"Moldar texto","hAlign":"Alinhamento horizontal","vAlign":"Alinhamento vertical","alignBaseline":"Linha base","bgColor":"Cor de fundo","borderColor":"Cor da margem","data":"Dados","header":"Cabeçalho","yes":"Sim","no":"Não","invalidWidth":"A largura da célula deve ser um número.","invalidHeight":"A altura da célula deve ser um número.","invalidRowSpan":"As linhas da célula devem ser um número inteiro.","invalidColSpan":"As colunas da célula devem ter um número inteiro.","chooseColor":"Escolher"},"cellPad":"Espaço interior","cellSpace":"Espaçamento de célula","column":{"menu":"Coluna","insertBefore":"Inserir coluna antes","insertAfter":"Inserir coluna depois","deleteColumn":"Apagar colunas"},"columns":"Colunas","deleteTable":"Apagar tabela","headers":"Cabeçalhos","headersBoth":"Ambos","headersColumn":"Primeira coluna","headersNone":"Nenhum","headersRow":"Primeira linha","heightUnit":"height unit","invalidBorder":"O tamanho da margem tem de ser um número.","invalidCellPadding":"A criação do espaço na célula deve ser um número positivo.","invalidCellSpacing":"O espaçamento da célula deve ser um número positivo.","invalidCols":"O número de colunas tem de ser um número maior que 0.","invalidHeight":"A altura da tabela tem de ser um número.","invalidRows":"O número de linhas tem de ser maior que 0.","invalidWidth":"A largura da tabela tem de ser um número.","menu":"Propriedades da tabela","row":{"menu":"Linha","insertBefore":"Inserir linha antes","insertAfter":"Inserir linha depois","deleteRow":"Apagar linhas"},"rows":"Linhas","summary":"Resumo","title":"Propriedades da tabela","toolbar":"Tabela","widthPc":"percentagem","widthPx":"pÃxeis","widthUnit":"unidade da largura"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatação","panelTitle1":"Estilos de bloco","panelTitle2":"Estilos nas etiquetas","panelTitle3":"Estilos em objeto"},"specialchar":{"options":"Opções de caracteres especiais","title":"Selecione um caracter especial","toolbar":"Inserir carácter especial"},"sourcedialog":{"toolbar":"Fonte","title":"Fonte"},"sourcearea":{"toolbar":"Fonte"},"showblocks":{"toolbar":"Exibir blocos"},"removeformat":{"toolbar":"Limpar formatação"},"pastetext":{"button":"Colar como texto simples","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Colar como texto simples"},"pastefromword":{"confirmCleanup":"O texto que pretende colar parece ter sido copiado do Word. Deseja limpar o código antes de o colar?","error":"Não foi possÃvel limpar a informação colada devido a um erro interno.","title":"Colar do Word","toolbar":"Colar do Word"},"notification":{"closed":"Notificação encerrada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Inserir parágrafo aqui"},"list":{"bulletedlist":"Marcas","numberedlist":"Numeração"},"language":{"button":"Definir Idioma","remove":"Remover idioma"},"indent":{"indent":"Aumentar avanço","outdent":"Diminuir avanço"},"image2":{"alt":"Texto alternativo","btnUpload":"Enviar para o servidor","captioned":"Imagem legendada","captionPlaceholder":"Legenda","infoTab":"Informação da imagem","lockRatio":"Proporcional","menu":"Propriedades da imagem","pathName":"imagem","pathNameCaption":"legenda","resetSize":"Tamanho original","resizer":"Clique e arraste para redimensionar","title":"Propriedades da imagem","uploadTab":"Carregar","urlMissing":"O URL de origem da imagem está em falta.","altMissing":"Texto alternativo em falta."},"horizontalrule":{"toolbar":"Inserir linha horizontal"},"format":{"label":"Formatar","panelTitle":"Formatar Parágrafo","tag_address":"Endereço","tag_div":"Normal (DIV)","tag_h1":"TÃtulo 1","tag_h2":"TÃtulo 2","tag_h3":"TÃtulo 3","tag_h4":"TÃtulo 4","tag_h5":"TÃtulo 5","tag_h6":"TÃtulo 6","tag_p":"Normal","tag_pre":"Formatado"},"filetools":{"loadError":"Ocorreu um erro ao ler o ficheiro","networkError":"Ocorreu um erro de rede ao carregar o ficheiro.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Caminho dos elementos","eleTitle":"Elemento %1"},"contextmenu":{"options":"Menu de opções de contexto"},"clipboard":{"copy":"Copiar","copyError":"A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).","paste":"Colar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Ãrea de colagem","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Bloco de citação"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Rasurado","subscript":"Superior à linha","superscript":"Superior à linha","underline":"Sublinhado"},"about":{"copy":"Direitos de Autor © $1. Todos os direitos reservados.","dlgTitle":"Sobre o CKEditor 4","moreInfo":"Para informação sobre licenciamento visite o nosso sÃtio web:"},"editor":"Editor de texto enriquecido","editorPanel":"Painel do editor de texto enriquecido","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Navegar no servidor","url":"URL","protocol":"Protocolo","upload":"Carregar","uploadSubmit":"Enviar para o servidor","image":"Imagem","flash":"Flash","form":"Formulário","checkbox":"Caixa de verificação","radio":"Botão","textField":"Campo de texto","textarea":"Ãrea de texto","hiddenField":"Campo oculto","button":"Botão","select":"Campo de seleção","imageButton":"Botão da imagem","notSet":"<Não definido>","id":"ID","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para a Direita (EPD)","langDirRtl":"Direita para a Esquerda (DPE)","langCode":"Código do idioma","longDescr":"Descrição completa do URL","cssClass":"Classes de estilo das folhas","advisoryTitle":"TÃtulo consultivo","cssStyle":"Estilo","ok":"CONFIRMAR","cancel":"Cancelar","close":"Fechar","preview":"Pré-visualização","resize":"Redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor não é um numero.","confirmNewPage":"Irão ser perdidas quaisquer alterações não guardadas. Tem a certeza que deseja carregar a nova página?","confirmCancel":"Foram alteradas algumas das opções. Tem a certeza que deseja fechar a janela?","options":"Opções","target":"Destino","targetNew":"Nova janela (_blank)","targetTop":"Janela superior (_top)","targetSelf":"Mesma janela (_self)","targetParent":"Janela dependente (_parent)","langDirLTR":"Esquerda para a Direita (EPD)","langDirRTL":"Direita para a Esquerda (DPE)","styles":"Estilo","cssClasses":"Classes de folhas de estilo","width":"Largura","height":"Altura","align":"Alinhamento","left":"Esquerda","right":"Direita","center":"Centrado","justify":"Justificado","alignLeft":"Alinhar à esquerda","alignRight":"Alinhar à direita","alignCenter":"Centrado","alignTop":"Topo","alignMiddle":"Meio","alignBottom":"Base","alignNone":"Nenhum","invalidValue":"Valor inválido.","invalidHeight":"A altura deve ser um número.","invalidWidth":"A largura deve ser um número. ","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"O valor especificado para o campo \"1%\" deve ser um número positivo, com ou sem uma unidade de medida CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"O valor especificado para o campo \"1%\" deve ser um número positivo, com ou sem uma unidade de medida HTML válida (px ou %).","invalidInlineStyle":"O valor especificado para o estilo em linha deve constituir um ou mais conjuntos de valores com o formato de \"nome : valor\", separados por ponto e vÃrgula.","cssLengthTooltip":"Insira um número para um valor em pÃxeis ou um número com uma unidade CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponÃvel</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Espaço","35":"Fim","36":"Entrada","46":"Eliminar","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Padrão"}}; \ No newline at end of file +CKEDITOR.lang['pt']={"widget":{"move":"Clique e arraste para mover","label":"%1 widget"},"undo":{"redo":"Refazer","undo":"Anular"},"toolbar":{"toolbarCollapse":"Ocultar barra de ferramentas","toolbarExpand":"Expandir barra de ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Ãrea de transferência/Anular","editing":"Edição","forms":"Formulários","basicstyles":"Estilos básicos","paragraph":"Parágrafo","links":"Hiperligações","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Editor de barras de ferramentas"},"table":{"border":"Tamanho do contorno","caption":"Legenda","cell":{"menu":"Célula","insertBefore":"Inserir célula antes","insertAfter":"Inserir célula depois","deleteCell":"Apagar células","merge":"Unir células","mergeRight":"Unir à direita","mergeDown":"Fundir abaixo","splitHorizontal":"Dividir célula horizontalmente","splitVertical":"Dividir célula verticalmente","title":"Propriedades da célula","cellType":"Tipo de célula","rowSpan":"Linhas na célula","colSpan":"Colunas na célula","wordWrap":"Moldar texto","hAlign":"Alinhamento horizontal","vAlign":"Alinhamento vertical","alignBaseline":"Linha base","bgColor":"Cor de fundo","borderColor":"Cor da margem","data":"Dados","header":"Cabeçalho","yes":"Sim","no":"Não","invalidWidth":"A largura da célula deve ser um número.","invalidHeight":"A altura da célula deve ser um número.","invalidRowSpan":"As linhas da célula devem ser um número inteiro.","invalidColSpan":"As colunas da célula devem ter um número inteiro.","chooseColor":"Escolher"},"cellPad":"Espaço interior","cellSpace":"Espaçamento de célula","column":{"menu":"Coluna","insertBefore":"Inserir coluna antes","insertAfter":"Inserir coluna depois","deleteColumn":"Apagar colunas"},"columns":"Colunas","deleteTable":"Apagar tabela","headers":"Cabeçalhos","headersBoth":"Ambos","headersColumn":"Primeira coluna","headersNone":"Nenhum","headersRow":"Primeira linha","heightUnit":"height unit","invalidBorder":"O tamanho da margem tem de ser um número.","invalidCellPadding":"A criação do espaço na célula deve ser um número positivo.","invalidCellSpacing":"O espaçamento da célula deve ser um número positivo.","invalidCols":"O número de colunas tem de ser um número maior que 0.","invalidHeight":"A altura da tabela tem de ser um número.","invalidRows":"O número de linhas tem de ser maior que 0.","invalidWidth":"A largura da tabela tem de ser um número.","menu":"Propriedades da tabela","row":{"menu":"Linha","insertBefore":"Inserir linha antes","insertAfter":"Inserir linha depois","deleteRow":"Apagar linhas"},"rows":"Linhas","summary":"Resumo","title":"Propriedades da tabela","toolbar":"Tabela","widthPc":"percentagem","widthPx":"pÃxeis","widthUnit":"unidade da largura"},"stylescombo":{"label":"Estilos","panelTitle":"Estilos de formatação","panelTitle1":"Estilos de bloco","panelTitle2":"Estilos nas etiquetas","panelTitle3":"Estilos em objeto"},"specialchar":{"options":"Opções de caracteres especiais","title":"Selecione um caracter especial","toolbar":"Inserir carácter especial"},"sourcedialog":{"toolbar":"Fonte","title":"Fonte"},"sourcearea":{"toolbar":"Fonte"},"showblocks":{"toolbar":"Exibir blocos"},"removeformat":{"toolbar":"Limpar formatação"},"pastetext":{"button":"Colar como texto simples","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Colar como texto simples"},"pastefromword":{"confirmCleanup":"O texto que pretende colar parece ter sido copiado do Word. Deseja limpar o código antes de o colar?","error":"Não foi possÃvel limpar a informação colada devido a um erro interno.","title":"Colar do Word","toolbar":"Colar do Word"},"notification":{"closed":"Notificação encerrada."},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"magicline":{"title":"Inserir parágrafo aqui"},"list":{"bulletedlist":"Marcas","numberedlist":"Numeração"},"language":{"button":"Definir Idioma","remove":"Remover idioma"},"indent":{"indent":"Aumentar avanço","outdent":"Diminuir avanço"},"image2":{"alt":"Texto alternativo","btnUpload":"Enviar para o servidor","captioned":"Imagem legendada","captionPlaceholder":"Legenda","infoTab":"Informação da imagem","lockRatio":"Proporcional","menu":"Propriedades da imagem","pathName":"imagem","pathNameCaption":"legenda","resetSize":"Tamanho original","resizer":"Clique e arraste para redimensionar","title":"Propriedades da imagem","uploadTab":"Carregar","urlMissing":"O URL de origem da imagem está em falta.","altMissing":"Texto alternativo em falta."},"horizontalrule":{"toolbar":"Inserir linha horizontal"},"format":{"label":"Formatar","panelTitle":"Formatar Parágrafo","tag_address":"Endereço","tag_div":"Normal (DIV)","tag_h1":"TÃtulo 1","tag_h2":"TÃtulo 2","tag_h3":"TÃtulo 3","tag_h4":"TÃtulo 4","tag_h5":"TÃtulo 5","tag_h6":"TÃtulo 6","tag_p":"Normal","tag_pre":"Formatado"},"filetools":{"loadError":"Ocorreu um erro ao ler o ficheiro","networkError":"Ocorreu um erro de rede ao carregar o ficheiro.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Caminho dos elementos","eleTitle":"Elemento %1"},"contextmenu":{"options":"Menu de opções de contexto"},"clipboard":{"copy":"Copiar","copyError":"A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).","paste":"Colar","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Ãrea de colagem","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Bloco de citação"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Rasurado","subscript":"Superior à linha","superscript":"Superior à linha","underline":"Sublinhado"},"about":{"copy":"Direitos de Autor © $1. Todos os direitos reservados.","dlgTitle":"Sobre o CKEditor 4","moreInfo":"Para informação sobre licenciamento visite o nosso sÃtio web:"},"editor":"Editor de texto enriquecido","editorPanel":"Painel do editor de texto enriquecido","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Navegar no servidor","url":"URL","protocol":"Protocolo","upload":"Carregar","uploadSubmit":"Enviar para o servidor","image":"Imagem","form":"Formulário","checkbox":"Caixa de verificação","radio":"Botão","textField":"Campo de texto","textarea":"Ãrea de texto","hiddenField":"Campo oculto","button":"Botão","select":"Campo de seleção","imageButton":"Botão da imagem","notSet":"<Não definido>","id":"ID","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para a Direita (EPD)","langDirRtl":"Direita para a Esquerda (DPE)","langCode":"Código do idioma","longDescr":"Descrição completa do URL","cssClass":"Classes de estilo das folhas","advisoryTitle":"TÃtulo consultivo","cssStyle":"Estilo","ok":"CONFIRMAR","cancel":"Cancelar","close":"Fechar","preview":"Pré-visualização","resize":"Redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor não é um numero.","confirmNewPage":"Irão ser perdidas quaisquer alterações não guardadas. Tem a certeza que deseja carregar a nova página?","confirmCancel":"Foram alteradas algumas das opções. Tem a certeza que deseja fechar a janela?","options":"Opções","target":"Destino","targetNew":"Nova janela (_blank)","targetTop":"Janela superior (_top)","targetSelf":"Mesma janela (_self)","targetParent":"Janela dependente (_parent)","langDirLTR":"Esquerda para a Direita (EPD)","langDirRTL":"Direita para a Esquerda (DPE)","styles":"Estilo","cssClasses":"Classes de folhas de estilo","width":"Largura","height":"Altura","align":"Alinhamento","left":"Esquerda","right":"Direita","center":"Centrado","justify":"Justificado","alignLeft":"Alinhar à esquerda","alignRight":"Alinhar à direita","alignCenter":"Centrado","alignTop":"Topo","alignMiddle":"Meio","alignBottom":"Base","alignNone":"Nenhum","invalidValue":"Valor inválido.","invalidHeight":"A altura deve ser um número.","invalidWidth":"A largura deve ser um número. ","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"O valor especificado para o campo \"1%\" deve ser um número positivo, com ou sem uma unidade de medida CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"O valor especificado para o campo \"1%\" deve ser um número positivo, com ou sem uma unidade de medida HTML válida (px ou %).","invalidInlineStyle":"O valor especificado para o estilo em linha deve constituir um ou mais conjuntos de valores com o formato de \"nome : valor\", separados por ponto e vÃrgula.","cssLengthTooltip":"Insira um número para um valor em pÃxeis ou um número com uma unidade CSS válida (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponÃvel</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Espaço","35":"Fim","36":"Entrada","46":"Eliminar","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Comando"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Padrão"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ro.js b/core/assets/vendor/ckeditor/lang/ro.js index bd59371e73b2..0857083a091b 100644 --- a/core/assets/vendor/ckeditor/lang/ro.js +++ b/core/assets/vendor/ckeditor/lang/ro.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ro']={"widget":{"move":"Apasă È™i trage pentru a muta","label":"%1 widget"},"undo":{"redo":"Starea ulterioară (redo)","undo":"Starea anterioară (undo)"},"toolbar":{"toolbarCollapse":"MicÈ™orează Bara","toolbarExpand":"MăreÈ™te Bara","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editează bara de unelte"},"table":{"border":"Mărimea marginii","caption":"Titlu (Caption)","cell":{"menu":"Celulă","insertBefore":"Inserează celulă înainte","insertAfter":"Inserează celulă după","deleteCell":"Åžterge celule","merge":"UneÅŸte celule","mergeRight":"UneÅŸte la dreapta","mergeDown":"UneÅŸte jos","splitHorizontal":"ÃŽmparte celula pe orizontală","splitVertical":"ÃŽmparte celula pe verticală","title":"Proprietăți celulă","cellType":"Tipul celulei","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Aliniament orizontal","vAlign":"Aliniament vertical","alignBaseline":"Baseline","bgColor":"Culoare fundal","borderColor":"Culoare bordură","data":"Data","header":"Antet","yes":"Da","no":"Nu","invalidWidth":"Lățimea celulei trebuie să fie un număr.","invalidHeight":"ÃŽnălÈ›imea celulei trebuie să fie un număr.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Alege"},"cellPad":"SpaÅ£iu în cadrul celulei","cellSpace":"SpaÅ£iu între celule","column":{"menu":"Coloană","insertBefore":"Inserează coloană înainte","insertAfter":"Inserează coloană după","deleteColumn":"Åžterge celule"},"columns":"Coloane","deleteTable":"Åžterge tabel","headers":"Antente","headersBoth":"Ambele","headersColumn":"Prima coloană","headersNone":"Nimic","headersRow":"Primul rând","heightUnit":"height unit","invalidBorder":"Dimensiunea bordurii trebuie să aibe un număr.","invalidCellPadding":"SpaÈ›ierea celulei trebuie sa fie un număr pozitiv","invalidCellSpacing":"SpaÈ›ierea celului trebuie să fie un număr pozitiv.","invalidCols":"Numărul coloanelor trebuie să fie mai mare decât 0.","invalidHeight":"Inaltimea celulei trebuie sa fie un numar.","invalidRows":"Numărul rândurilor trebuie să fie mai mare decât 0.","invalidWidth":"Lățimea tabelului trebuie să fie un număr.","menu":"Proprietăţile tabelului","row":{"menu":"Rând","insertBefore":"Inserează rând înainte","insertAfter":"Inserează rând după","deleteRow":"Åžterge rânduri"},"rows":"Rânduri","summary":"Rezumat","title":"Proprietăţile tabelului","toolbar":"Tabel","widthPc":"procente","widthPx":"pixeli","widthUnit":"unitate lățime"},"stylescombo":{"label":"Stil","panelTitle":"Formatare stilurilor","panelTitle1":"Bloc stiluri","panelTitle2":"Stiluri înÈ™iruite","panelTitle3":"Stiluri obiect"},"specialchar":{"options":"OpÈ›iuni caractere speciale","title":"Selectează caracter special","toolbar":"Inserează caracter special"},"sourcedialog":{"toolbar":"Sursa","title":"Sursa"},"sourcearea":{"toolbar":"Sursa"},"showblocks":{"toolbar":"Arată blocurile"},"removeformat":{"toolbar":"ÃŽnlătură formatarea"},"pastetext":{"button":"Adaugă ca text simplu (Plain Text)","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Adaugă ca text simplu (Plain Text)"},"pastefromword":{"confirmCleanup":"Textul pe care doriÈ›i să-l lipiÈ›i este din Word. DoriÈ›i curățarea textului înante de a-l adăuga?","error":"Nu a fost posibilă curățarea datelor adăugate datorită unei erori interne","title":"Adaugă din Word","toolbar":"Adaugă din Word"},"notification":{"closed":"Notificare închisă."},"maximize":{"maximize":"MăreÈ™te","minimize":"MicÈ™orează"},"magicline":{"title":"Inserează paragraf aici"},"list":{"bulletedlist":"Inserează / Elimină Listă cu puncte","numberedlist":"Inserează / Elimină Listă numerotată"},"language":{"button":"Alege limba","remove":"Șterge limba deja selectată"},"indent":{"indent":"CreÅŸte indentarea","outdent":"Scade indentarea"},"image2":{"alt":"Text alternativ","btnUpload":"ÃŽncarcă pe server","captioned":"Descris","captionPlaceholder":"Descriere implicită","infoTab":"InformaÅ£ii despre imagine","lockRatio":"Păstrează proporÅ£iile","menu":"Proprietăţile imaginii","pathName":"Adresa căii","pathNameCaption":"Descrierea numelui căii","resetSize":"Resetează mărimea","resizer":"Redimensionare dinamică","title":"Proprietăţile imaginii","uploadTab":"ÃŽncarcă","urlMissing":"Sursa URL a imaginii lipseÈ™te.","altMissing":"Textul alternativ descriptive lipseÈ™te!"},"horizontalrule":{"toolbar":"Inserează linie orizontală"},"format":{"label":"Formatare","panelTitle":"Formatare","tag_address":"Adresă","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatat"},"filetools":{"loadError":"Eroare în timpul citirii fiÈ™ierului.","networkError":"Eroare de reÈ›ea în timpul încărcării fiÈ™ierului.","httpError404":"Eroare HTTP în timpul încărcării fiÈ™ierului (404: FiÈ™ier negăsit).","httpError403":"Eroare HTTP în timpul încărcării fiÈ™ierului (403: OperaÈ™ie nepermisă).","httpError":"Eroare HTTP în timpul încărcării fiÈ™ierului (stare eroiare: %1).","noUrlError":"URL-ul de ăncărcare nu este specificat.","responseError":"Răspuns server incorect."},"elementspath":{"eleLabel":"Calea elementelor","eleTitle":"Nume element"},"contextmenu":{"options":"OpÈ›iuni Meniu Contextual"},"clipboard":{"copy":"Copiază","copyError":"Setările de securitate ale navigatorului (browser) pe care îl folosiÅ£i nu permit editorului să execute automat operaÅ£iunea de copiere. Vă rugăm folosiÅ£i tastatura (Ctrl/Cmd+C).","cut":"Tăiere","cutError":"Setările de securitate ale navigatorului (browser) pe care îl folosiÅ£i nu permit editorului să execute automat operaÅ£iunea de tăiere. Vă rugăm folosiÅ£i tastatura (Ctrl/Cmd+X).","paste":"Adaugă","pasteNotification":"Apasă %1 pentru adăugare. Navigatorul (browser) tău nu suportă adăugarea din clipboard cu butonul din toolbar sau cu opÈ›iunea din meniul contextual.","pasteArea":"SuprafaÈ›a de adăugare","pasteMsg":"Adaugă conÈ›inutul tău înăuntru zonei de mai jos È™i apasă OK."},"blockquote":{"toolbar":"Citat"},"basicstyles":{"bold":"ÃŽngroÅŸat (bold)","italic":"ÃŽnclinat (italic)","strike":"Tăiat (strike through)","subscript":"Indice (subscript)","superscript":"Putere (superscript)","underline":"Subliniat (underline)"},"about":{"copy":"Copyright © $1. Toate drepturile rezervate.","dlgTitle":"Despre CKEeditor 4","moreInfo":"Pentru informaÈ›ii despre licenÈ›iere, vă rugăm vizitaÈ›i web site-ul nostru:"},"editor":"Editor de text îmbogățit","editorPanel":"Panoul editorului de text îmbogățit","common":{"editorHelp":"Apasă ALT 0 pentru ajutor","browseServer":"RăsfoieÈ™te fiÈ™iere","url":"URL","protocol":"Protocol","upload":"ÃŽncarcă","uploadSubmit":"Trimite la server","image":"Imagine","flash":"Flash","form":"Formular (Form)","checkbox":"Bifă (Checkbox)","radio":"Buton radio (RadioButton)","textField":"Câmp text (TextField)","textarea":"Suprafaţă text (Textarea)","hiddenField":"Câmp ascuns (HiddenField)","button":"Buton","select":"Câmp selecÅ£ie (SelectionField)","imageButton":"Buton imagine (ImageButton)","notSet":"fără setări","id":"identificator","name":"Nume","langDir":"DirecÅ£ia cuvintelor","langDirLtr":"de la stânga la dreapta (LTR)","langDirRtl":"de la dreapta la stânga (RTL)","langCode":"Codul limbii","longDescr":"Descrierea completă URL","cssClass":"Clasele cu stilul paginii (CSS)","advisoryTitle":"Titlul consultativ","cssStyle":"Stil","ok":"OK","cancel":"Anulare","close":"ÃŽnchide","preview":"Previzualizare","resize":"Redimensionează","generalTab":"General","advancedTab":"Avansat","validateNumberFailed":"Această valoare nu este un număr!","confirmNewPage":"Orice modificări nesalvate ale acestui conÈ›inut, vor fi pierdute. Sigur doriÈ›i încărcarea unei noi pagini?","confirmCancel":"Ai schimbat câteva opÈ›iuni. EÈ™ti sigur că doreÈ™ti să închiz fereastra de dialog?","options":"OpÈ›iuni","target":"Èšintă","targetNew":"Fereastră nouă (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"ÃŽn aceeaÈ™i fereastră (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Stânga spre Dreapta (LTR)","langDirRTL":"Dreapta spre Stânga (RTL)","styles":"Stil","cssClasses":"Clase foaie de stil","width":"Lăţime","height":"ÃŽnălÅ£ime","align":"Aliniere","left":"Aliniază la stânga","right":"Aliniază la dreapta","center":"Aliniază pe centru","justify":"Aliniere în bloc (Justify)","alignLeft":"Aliniere la stânga","alignRight":"Aliniere la dreapta","alignCenter":"Aliniere centru","alignTop":"Aliniere sus","alignMiddle":"Aliniere la mijloc","alignBottom":"Aliniere jos","alignNone":"Fără aliniere","invalidValue":"Valoare invalidă","invalidHeight":"ÃŽnălÈ›imea trebuie să fie un număr.","invalidWidth":"Lățimea trebuie să fie un număr.","invalidLength":"Valoarea specificată pentru câmpul \"%1\" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură validă (%2).","invalidCssLength":"Valoarea specificată pentru câmpul \"%1\" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură validă CSS (px, %, in, cm, mm, em, ex, pt, sau pc).","invalidHtmlLength":"Valoarea specificată pentru câmpul \"%1\" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură validă HTML (px sau %).","invalidInlineStyle":"Valoarea specificată pentru stil trebuie să conÈ›ină una sau mai multe construcÈ›ii de tipul \"name : value\", separate prin punct È™i virgulă.","cssLengthTooltip":"Introdu un număr pentru o valoare în pixeli sau un număr pentru o unitate de măsură validă CSS (px, %, in, cm, mm, em, ex, pt, sau pc).","unavailable":"%1<span class=\"cke_accessibility\">, nu este disponibil</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Bară spaÈ›iu","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Scurtături tastatură","optionDefault":"Implicit"}}; \ No newline at end of file +CKEDITOR.lang['ro']={"widget":{"move":"Apasă È™i trage pentru a muta","label":"%1 widget"},"undo":{"redo":"Starea ulterioară (redo)","undo":"Starea anterioară (undo)"},"toolbar":{"toolbarCollapse":"MicÈ™orează Bara","toolbarExpand":"MăreÈ™te Bara","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editează bara de unelte"},"table":{"border":"Mărimea marginii","caption":"Titlu (Caption)","cell":{"menu":"Celulă","insertBefore":"Inserează celulă înainte","insertAfter":"Inserează celulă după","deleteCell":"Åžterge celule","merge":"UneÅŸte celule","mergeRight":"UneÅŸte la dreapta","mergeDown":"UneÅŸte jos","splitHorizontal":"ÃŽmparte celula pe orizontală","splitVertical":"ÃŽmparte celula pe verticală","title":"Proprietăți celulă","cellType":"Tipul celulei","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Aliniament orizontal","vAlign":"Aliniament vertical","alignBaseline":"Baseline","bgColor":"Culoare fundal","borderColor":"Culoare bordură","data":"Data","header":"Antet","yes":"Da","no":"Nu","invalidWidth":"Lățimea celulei trebuie să fie un număr.","invalidHeight":"ÃŽnălÈ›imea celulei trebuie să fie un număr.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Alege"},"cellPad":"SpaÅ£iu în cadrul celulei","cellSpace":"SpaÅ£iu între celule","column":{"menu":"Coloană","insertBefore":"Inserează coloană înainte","insertAfter":"Inserează coloană după","deleteColumn":"Åžterge celule"},"columns":"Coloane","deleteTable":"Åžterge tabel","headers":"Antente","headersBoth":"Ambele","headersColumn":"Prima coloană","headersNone":"Nimic","headersRow":"Primul rând","heightUnit":"height unit","invalidBorder":"Dimensiunea bordurii trebuie să aibe un număr.","invalidCellPadding":"SpaÈ›ierea celulei trebuie sa fie un număr pozitiv","invalidCellSpacing":"SpaÈ›ierea celului trebuie să fie un număr pozitiv.","invalidCols":"Numărul coloanelor trebuie să fie mai mare decât 0.","invalidHeight":"Inaltimea celulei trebuie sa fie un numar.","invalidRows":"Numărul rândurilor trebuie să fie mai mare decât 0.","invalidWidth":"Lățimea tabelului trebuie să fie un număr.","menu":"Proprietăţile tabelului","row":{"menu":"Rând","insertBefore":"Inserează rând înainte","insertAfter":"Inserează rând după","deleteRow":"Åžterge rânduri"},"rows":"Rânduri","summary":"Rezumat","title":"Proprietăţile tabelului","toolbar":"Tabel","widthPc":"procente","widthPx":"pixeli","widthUnit":"unitate lățime"},"stylescombo":{"label":"Stil","panelTitle":"Formatare stilurilor","panelTitle1":"Bloc stiluri","panelTitle2":"Stiluri înÈ™iruite","panelTitle3":"Stiluri obiect"},"specialchar":{"options":"OpÈ›iuni caractere speciale","title":"Selectează caracter special","toolbar":"Inserează caracter special"},"sourcedialog":{"toolbar":"Sursa","title":"Sursa"},"sourcearea":{"toolbar":"Sursa"},"showblocks":{"toolbar":"Arată blocurile"},"removeformat":{"toolbar":"ÃŽnlătură formatarea"},"pastetext":{"button":"Adaugă ca text simplu (Plain Text)","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Adaugă ca text simplu (Plain Text)"},"pastefromword":{"confirmCleanup":"Textul pe care doriÈ›i să-l lipiÈ›i este din Word. DoriÈ›i curățarea textului înante de a-l adăuga?","error":"Nu a fost posibilă curățarea datelor adăugate datorită unei erori interne","title":"Adaugă din Word","toolbar":"Adaugă din Word"},"notification":{"closed":"Notificare închisă."},"maximize":{"maximize":"MăreÈ™te","minimize":"MicÈ™orează"},"magicline":{"title":"Inserează paragraf aici"},"list":{"bulletedlist":"Inserează / Elimină Listă cu puncte","numberedlist":"Inserează / Elimină Listă numerotată"},"language":{"button":"Alege limba","remove":"Șterge limba deja selectată"},"indent":{"indent":"CreÅŸte indentarea","outdent":"Scade indentarea"},"image2":{"alt":"Text alternativ","btnUpload":"ÃŽncarcă pe server","captioned":"Descris","captionPlaceholder":"Descriere implicită","infoTab":"InformaÅ£ii despre imagine","lockRatio":"Păstrează proporÅ£iile","menu":"Proprietăţile imaginii","pathName":"Adresa căii","pathNameCaption":"Descrierea numelui căii","resetSize":"Resetează mărimea","resizer":"Redimensionare dinamică","title":"Proprietăţile imaginii","uploadTab":"ÃŽncarcă","urlMissing":"Sursa URL a imaginii lipseÈ™te.","altMissing":"Textul alternativ descriptive lipseÈ™te!"},"horizontalrule":{"toolbar":"Inserează linie orizontală"},"format":{"label":"Formatare","panelTitle":"Formatare","tag_address":"Adresă","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatat"},"filetools":{"loadError":"Eroare în timpul citirii fiÈ™ierului.","networkError":"Eroare de reÈ›ea în timpul încărcării fiÈ™ierului.","httpError404":"Eroare HTTP în timpul încărcării fiÈ™ierului (404: FiÈ™ier negăsit).","httpError403":"Eroare HTTP în timpul încărcării fiÈ™ierului (403: OperaÈ™ie nepermisă).","httpError":"Eroare HTTP în timpul încărcării fiÈ™ierului (stare eroiare: %1).","noUrlError":"URL-ul de ăncărcare nu este specificat.","responseError":"Răspuns server incorect."},"elementspath":{"eleLabel":"Calea elementelor","eleTitle":"Nume element"},"contextmenu":{"options":"OpÈ›iuni Meniu Contextual"},"clipboard":{"copy":"Copiază","copyError":"Setările de securitate ale navigatorului (browser) pe care îl folosiÅ£i nu permit editorului să execute automat operaÅ£iunea de copiere. Vă rugăm folosiÅ£i tastatura (Ctrl/Cmd+C).","cut":"Tăiere","cutError":"Setările de securitate ale navigatorului (browser) pe care îl folosiÅ£i nu permit editorului să execute automat operaÅ£iunea de tăiere. Vă rugăm folosiÅ£i tastatura (Ctrl/Cmd+X).","paste":"Adaugă","pasteNotification":"Apasă %1 pentru adăugare. Navigatorul (browser) tău nu suportă adăugarea din clipboard cu butonul din toolbar sau cu opÈ›iunea din meniul contextual.","pasteArea":"SuprafaÈ›a de adăugare","pasteMsg":"Adaugă conÈ›inutul tău înăuntru zonei de mai jos È™i apasă OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citat"},"basicstyles":{"bold":"ÃŽngroÅŸat (bold)","italic":"ÃŽnclinat (italic)","strike":"Tăiat (strike through)","subscript":"Indice (subscript)","superscript":"Putere (superscript)","underline":"Subliniat (underline)"},"about":{"copy":"Copyright © $1. Toate drepturile rezervate.","dlgTitle":"Despre CKEeditor 4","moreInfo":"Pentru informaÈ›ii despre licenÈ›iere, vă rugăm vizitaÈ›i web site-ul nostru:"},"editor":"Editor de text îmbogățit","editorPanel":"Panoul editorului de text îmbogățit","common":{"editorHelp":"Apasă ALT 0 pentru ajutor","browseServer":"RăsfoieÈ™te fiÈ™iere","url":"URL","protocol":"Protocol","upload":"ÃŽncarcă","uploadSubmit":"Trimite la server","image":"Imagine","form":"Formular (Form)","checkbox":"Bifă (Checkbox)","radio":"Buton radio (RadioButton)","textField":"Câmp text (TextField)","textarea":"Suprafaţă text (Textarea)","hiddenField":"Câmp ascuns (HiddenField)","button":"Buton","select":"Câmp selecÅ£ie (SelectionField)","imageButton":"Buton imagine (ImageButton)","notSet":"fără setări","id":"identificator","name":"Nume","langDir":"DirecÅ£ia cuvintelor","langDirLtr":"de la stânga la dreapta (LTR)","langDirRtl":"de la dreapta la stânga (RTL)","langCode":"Codul limbii","longDescr":"Descrierea completă URL","cssClass":"Clasele cu stilul paginii (CSS)","advisoryTitle":"Titlul consultativ","cssStyle":"Stil","ok":"OK","cancel":"Anulare","close":"ÃŽnchide","preview":"Previzualizare","resize":"Redimensionează","generalTab":"General","advancedTab":"Avansat","validateNumberFailed":"Această valoare nu este un număr!","confirmNewPage":"Orice modificări nesalvate ale acestui conÈ›inut, vor fi pierdute. Sigur doriÈ›i încărcarea unei noi pagini?","confirmCancel":"Ai schimbat câteva opÈ›iuni. EÈ™ti sigur că doreÈ™ti să închiz fereastra de dialog?","options":"OpÈ›iuni","target":"Èšintă","targetNew":"Fereastră nouă (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"ÃŽn aceeaÈ™i fereastră (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Stânga spre Dreapta (LTR)","langDirRTL":"Dreapta spre Stânga (RTL)","styles":"Stil","cssClasses":"Clase foaie de stil","width":"Lăţime","height":"ÃŽnălÅ£ime","align":"Aliniere","left":"Aliniază la stânga","right":"Aliniază la dreapta","center":"Aliniază pe centru","justify":"Aliniere în bloc (Justify)","alignLeft":"Aliniere la stânga","alignRight":"Aliniere la dreapta","alignCenter":"Aliniere centru","alignTop":"Aliniere sus","alignMiddle":"Aliniere la mijloc","alignBottom":"Aliniere jos","alignNone":"Fără aliniere","invalidValue":"Valoare invalidă","invalidHeight":"ÃŽnălÈ›imea trebuie să fie un număr.","invalidWidth":"Lățimea trebuie să fie un număr.","invalidLength":"Valoarea specificată pentru câmpul \"%1\" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură validă (%2).","invalidCssLength":"Valoarea specificată pentru câmpul \"%1\" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură validă CSS (px, %, in, cm, mm, em, ex, pt, sau pc).","invalidHtmlLength":"Valoarea specificată pentru câmpul \"%1\" trebuie să fie un număr pozitiv cu sau fără o unitate de măsură validă HTML (px sau %).","invalidInlineStyle":"Valoarea specificată pentru stil trebuie să conÈ›ină una sau mai multe construcÈ›ii de tipul \"name : value\", separate prin punct È™i virgulă.","cssLengthTooltip":"Introdu un număr pentru o valoare în pixeli sau un număr pentru o unitate de măsură validă CSS (px, %, in, cm, mm, em, ex, pt, sau pc).","unavailable":"%1<span class=\"cke_accessibility\">, nu este disponibil</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Bară spaÈ›iu","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Scurtături tastatură","optionDefault":"Implicit"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ru.js b/core/assets/vendor/ckeditor/lang/ru.js index 8879e3033745..86ba449a6d84 100644 --- a/core/assets/vendor/ckeditor/lang/ru.js +++ b/core/assets/vendor/ckeditor/lang/ru.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ru']={"widget":{"move":"Ðажмите и перетащите, чтобы перемеÑтить","label":"%1 виджет"},"undo":{"redo":"Повторить","undo":"Отменить"},"toolbar":{"toolbarCollapse":"Свернуть панель инÑтрументов","toolbarExpand":"Развернуть панель инÑтрументов","toolbarGroups":{"document":"Документ","clipboard":"Буфер обмена / Отмена дейÑтвий","editing":"Корректировка","forms":"Формы","basicstyles":"ПроÑтые Ñтили","paragraph":"Ðбзац","links":"СÑылки","insert":"Ð’Ñтавка","styles":"Стили","colors":"Цвета","tools":"ИнÑтрументы"},"toolbars":"Панели инÑтрументов редактора"},"table":{"border":"Размер границ","caption":"Заголовок","cell":{"menu":"Ячейка","insertBefore":"Ð’Ñтавить Ñчейку Ñлева","insertAfter":"Ð’Ñтавить Ñчейку Ñправа","deleteCell":"Удалить Ñчейки","merge":"Объединить Ñчейки","mergeRight":"Объединить Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹","mergeDown":"Объединить Ñ Ð½Ð¸Ð¶Ð½ÐµÐ¹","splitHorizontal":"Разделить Ñчейку по вертикали","splitVertical":"Разделить Ñчейку по горизонтали","title":"СвойÑтва Ñчейки","cellType":"Тип Ñчейки","rowSpan":"ОбъединÑет Ñтрок","colSpan":"ОбъединÑет колонок","wordWrap":"ÐŸÐµÑ€ÐµÐ½Ð¾Ñ Ð¿Ð¾ Ñловам","hAlign":"Горизонтальное выравнивание","vAlign":"Вертикальное выравнивание","alignBaseline":"По базовой линии","bgColor":"Цвет фона","borderColor":"Цвет границ","data":"Данные","header":"Заголовок","yes":"Да","no":"Ðет","invalidWidth":"Ширина Ñчейки должна быть чиÑлом.","invalidHeight":"Ð’Ñ‹Ñота Ñчейки должна быть чиÑлом.","invalidRowSpan":"КоличеÑтво объединÑемых Ñтрок должно быть задано чиÑлом.","invalidColSpan":"КоличеÑтво объединÑемых колонок должно быть задано чиÑлом.","chooseColor":"Выберите"},"cellPad":"Внутренний отÑтуп Ñчеек","cellSpace":"Внешний отÑтуп Ñчеек","column":{"menu":"Колонка","insertBefore":"Ð’Ñтавить колонку Ñлева","insertAfter":"Ð’Ñтавить колонку Ñправа","deleteColumn":"Удалить колонки"},"columns":"Колонки","deleteTable":"Удалить таблицу","headers":"Заголовки","headersBoth":"Сверху и Ñлева","headersColumn":"Ð›ÐµÐ²Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°","headersNone":"Без заголовков","headersRow":"ВерхнÑÑ Ñтрока","heightUnit":"height unit","invalidBorder":"Размер границ должен быть чиÑлом.","invalidCellPadding":"Внутренний отÑтуп Ñчеек (cellpadding) должен быть чиÑлом.","invalidCellSpacing":"Внешний отÑтуп Ñчеек (cellspacing) должен быть чиÑлом.","invalidCols":"КоличеÑтво Ñтолбцов должно быть больше 0.","invalidHeight":"Ð’Ñ‹Ñота таблицы должна быть чиÑлом.","invalidRows":"КоличеÑтво Ñтрок должно быть больше 0.","invalidWidth":"Ширина таблицы должна быть чиÑлом.","menu":"СвойÑтва таблицы","row":{"menu":"Строка","insertBefore":"Ð’Ñтавить Ñтроку Ñверху","insertAfter":"Ð’Ñтавить Ñтроку Ñнизу","deleteRow":"Удалить Ñтроки"},"rows":"Строки","summary":"Итоги","title":"СвойÑтва таблицы","toolbar":"Таблица","widthPc":"процентов","widthPx":"пикÑелей","widthUnit":"единица измерениÑ"},"stylescombo":{"label":"Стили","panelTitle":"Стили форматированиÑ","panelTitle1":"Стили блока","panelTitle2":"Стили Ñлемента","panelTitle3":"Стили объекта"},"specialchar":{"options":"Выбор Ñпециального Ñимвола","title":"Выберите Ñпециальный Ñимвол","toolbar":"Ð’Ñтавить Ñпециальный Ñимвол"},"sourcedialog":{"toolbar":"ИÑходник","title":"ИÑточник"},"sourcearea":{"toolbar":"ИÑточник"},"showblocks":{"toolbar":"Отображать блоки"},"removeformat":{"toolbar":"Убрать форматирование"},"pastetext":{"button":"Ð’Ñтавить только текÑÑ‚","pasteNotification":"Ð”Ð»Ñ Ð²Ñтавки нажмите %1. Ваш браузер не поддерживает возможноÑÑ‚ÑŒ вÑтавки через панель инÑтрументов или контекÑтное меню","title":"Ð’Ñтавить только текÑÑ‚"},"pastefromword":{"confirmCleanup":"ТекÑÑ‚, который вы желаете вÑтавить, по вÑей видимоÑти, был Ñкопирован из Word. Следует ли очиÑтить его перед вÑтавкой?","error":"Ðевозможно очиÑтить вÑтавленные данные из-за внутренней ошибки","title":"Ð’Ñтавить из Word","toolbar":"Ð’Ñтавить из Word"},"notification":{"closed":"Уведомление закрыто"},"maximize":{"maximize":"Развернуть","minimize":"Свернуть"},"magicline":{"title":"Ð’Ñтавить здеÑÑŒ параграф"},"list":{"bulletedlist":"Ð’Ñтавить / удалить маркированный ÑпиÑок","numberedlist":"Ð’Ñтавить / удалить нумерованный ÑпиÑок"},"language":{"button":"УÑтановка Ñзыка","remove":"Удалить Ñзык"},"indent":{"indent":"Увеличить отÑтуп","outdent":"Уменьшить отÑтуп"},"image2":{"alt":"Ðльтернативный текÑÑ‚","btnUpload":"Загрузить на Ñервер","captioned":"Отображать название","captionPlaceholder":"Ðазвание","infoTab":"Данные об изображении","lockRatio":"СохранÑÑ‚ÑŒ пропорции","menu":"СвойÑтва изображениÑ","pathName":"изображение","pathNameCaption":"название","resetSize":"Вернуть обычные размеры","resizer":"Ðажмите и раÑÑ‚Ñните","title":"СвойÑтва изображениÑ","uploadTab":"Загрузка файла","urlMissing":"Ðе указана ÑÑылка на изображение.","altMissing":"Ðе задан альтернативный текÑÑ‚"},"horizontalrule":{"toolbar":"Ð’Ñтавить горизонтальную линию"},"format":{"label":"Форматирование","panelTitle":"Форматирование","tag_address":"ÐдреÑ","tag_div":"Обычное (div)","tag_h1":"Заголовок 1","tag_h2":"Заголовок 2","tag_h3":"Заголовок 3","tag_h4":"Заголовок 4","tag_h5":"Заголовок 5","tag_h6":"Заголовок 6","tag_p":"Обычное","tag_pre":"Моноширинное"},"filetools":{"loadError":"Ошибка при чтении файла","networkError":"Ð¡ÐµÑ‚ÐµÐ²Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при загрузке файла","httpError404":"HTTP ошибка при загрузке файла (404: Файл не найден)","httpError403":"HTTP ошибка при загрузке файла (403: Запрещено)","httpError":"HTTP ошибка при загрузке файла (%1)","noUrlError":"Ðе определен URL Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файлов","responseError":"Ðекорректный ответ Ñервера"},"elementspath":{"eleLabel":"Путь Ñлементов","eleTitle":"Ðлемент %1"},"contextmenu":{"options":"Параметры контекÑтного меню"},"clipboard":{"copy":"Копировать","copyError":"ÐаÑтройки безопаÑноÑти вашего браузера не разрешают редактору выполнÑÑ‚ÑŒ операции по копированию текÑта. ПожалуйÑта, иÑпользуйте Ð´Ð»Ñ Ñтого клавиатуру (Ctrl/Cmd+C).","cut":"Вырезать","cutError":"ÐаÑтройки безопаÑноÑти вашего браузера не разрешают редактору выполнÑÑ‚ÑŒ операции по вырезке текÑта. ПожалуйÑта, иÑпользуйте Ð´Ð»Ñ Ñтого клавиатуру (Ctrl/Cmd+X).","paste":"Ð’Ñтавить","pasteNotification":"Ð”Ð»Ñ Ð²Ñтавки нажмите %1. Ваш браузер не поддерживает возможноÑÑ‚ÑŒ вÑтавки через панель инÑтрументов или контекÑтное меню","pasteArea":"ОблаÑÑ‚ÑŒ вÑтавки","pasteMsg":"Ð’Ñтавьте контент в Ñту облаÑÑ‚ÑŒ и нажмите OK"},"blockquote":{"toolbar":"Цитата"},"basicstyles":{"bold":"Полужирный","italic":"КурÑив","strike":"Зачеркнутый","subscript":"ПодÑтрочный индекÑ","superscript":"ÐадÑтрочный индекÑ","underline":"Подчеркнутый"},"about":{"copy":"Copyright © $1. Ð’Ñе права защищены.","dlgTitle":"О CKEditor 4","moreInfo":"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о лицензии, пожалуйÑта, перейдите на наш Ñайт:"},"editor":"Визуальный текÑтовый редактор","editorPanel":"Визуальный редактор текÑта","common":{"editorHelp":"Ðажмите ALT-0 Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñправки","browseServer":"Выбор на Ñервере","url":"СÑылка","protocol":"Протокол","upload":"Загрузка файла","uploadSubmit":"Загрузить на Ñервер","image":"Изображение","flash":"Flash","form":"Форма","checkbox":"ЧекбокÑ","radio":"Радиокнопка","textField":"ТекÑтовое поле","textarea":"МногоÑтрочное текÑтовое поле","hiddenField":"Скрытое поле","button":"Кнопка","select":"Выпадающий ÑпиÑок","imageButton":"Кнопка-изображение","notSet":"<не указано>","id":"Идентификатор","name":"ИмÑ","langDir":"Ðаправление текÑта","langDirLtr":"Слева направо (LTR)","langDirRtl":"Справа налево (RTL)","langCode":"Код Ñзыка","longDescr":"Длинное опиÑание ÑÑылки","cssClass":"КлаÑÑ CSS","advisoryTitle":"Заголовок","cssStyle":"Стиль","ok":"ОК","cancel":"Отмена","close":"Закрыть","preview":"ПредпроÑмотр","resize":"Перетащите Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°","generalTab":"ОÑновное","advancedTab":"Дополнительно","validateNumberFailed":"Ðто значение не ÑвлÑетÑÑ Ñ‡Ð¸Ñлом.","confirmNewPage":"ÐеÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны! Ð’Ñ‹ дейÑтвительно желаете перейти на другую Ñтраницу?","confirmCancel":"Ðекоторые параметры были изменены. Ð’Ñ‹ уверены, что желаете закрыть без ÑохранениÑ?","options":"Параметры","target":"Цель","targetNew":"Ðовое окно (_blank)","targetTop":"Главное окно (_top)","targetSelf":"Текущее окно (_self)","targetParent":"РодительÑкое окно (_parent)","langDirLTR":"Слева направо (LTR)","langDirRTL":"Справа налево (RTL)","styles":"Стиль","cssClasses":"CSS клаÑÑÑ‹","width":"Ширина","height":"Ð’Ñ‹Ñота","align":"Выравнивание","left":"По левому краю","right":"По правому краю","center":"По центру","justify":"По ширине","alignLeft":"По левому краю","alignRight":"По правому краю","alignCenter":"По центру","alignTop":"Поверху","alignMiddle":"ПоÑередине","alignBottom":"Понизу","alignNone":"Ðет","invalidValue":"ÐедопуÑтимое значение.","invalidHeight":"Ð’Ñ‹Ñота задаетÑÑ Ñ‡Ð¸Ñлом.","invalidWidth":"Ширина задаетÑÑ Ñ‡Ð¸Ñлом.","invalidLength":"Указанное значение Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ \"%1\" должно быть положительным чиÑлом без или Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ Ñимволом единицы Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ (%2)","invalidCssLength":"Значение, указанное в поле \"%1\", должно быть положительным целым чиÑлом. ДопуÑкаетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ единиц меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","invalidHtmlLength":"Значение, указанное в поле \"%1\", должно быть положительным целым чиÑлом. ДопуÑкаетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ единиц меры HTML (px или %).","invalidInlineStyle":"Значение, указанное Ð´Ð»Ñ ÑÑ‚Ð¸Ð»Ñ Ñлемента, должно ÑоÑтоÑÑ‚ÑŒ из одной или неÑкольких пар данных в формате \"параметр : значение\", разделённых точкой Ñ Ð·Ð°Ð¿Ñтой.","cssLengthTooltip":"Введите значение в пикÑелÑÑ…, либо чиÑло Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ единицей меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","unavailable":"%1<span class=\"cke_accessibility\">, недоÑтупно</span>","keyboard":{"8":"Backspace","13":"Ввод","16":"Shift","17":"Ctrl","18":"Alt","32":"Пробел","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"ÐšÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ","optionDefault":"По умолчанию"}}; \ No newline at end of file +CKEDITOR.lang['ru']={"widget":{"move":"Ðажмите и перетащите, чтобы перемеÑтить","label":"%1 виджет"},"undo":{"redo":"Повторить","undo":"Отменить"},"toolbar":{"toolbarCollapse":"Свернуть панель инÑтрументов","toolbarExpand":"Развернуть панель инÑтрументов","toolbarGroups":{"document":"Документ","clipboard":"Буфер обмена / Отмена дейÑтвий","editing":"Корректировка","forms":"Формы","basicstyles":"ПроÑтые Ñтили","paragraph":"Ðбзац","links":"СÑылки","insert":"Ð’Ñтавка","styles":"Стили","colors":"Цвета","tools":"ИнÑтрументы"},"toolbars":"Панели инÑтрументов редактора"},"table":{"border":"Размер границ","caption":"Заголовок","cell":{"menu":"Ячейка","insertBefore":"Ð’Ñтавить Ñчейку Ñлева","insertAfter":"Ð’Ñтавить Ñчейку Ñправа","deleteCell":"Удалить Ñчейки","merge":"Объединить Ñчейки","mergeRight":"Объединить Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹","mergeDown":"Объединить Ñ Ð½Ð¸Ð¶Ð½ÐµÐ¹","splitHorizontal":"Разделить Ñчейку по вертикали","splitVertical":"Разделить Ñчейку по горизонтали","title":"СвойÑтва Ñчейки","cellType":"Тип Ñчейки","rowSpan":"ОбъединÑет Ñтрок","colSpan":"ОбъединÑет колонок","wordWrap":"ÐŸÐµÑ€ÐµÐ½Ð¾Ñ Ð¿Ð¾ Ñловам","hAlign":"Горизонтальное выравнивание","vAlign":"Вертикальное выравнивание","alignBaseline":"По базовой линии","bgColor":"Цвет фона","borderColor":"Цвет границ","data":"Данные","header":"Заголовок","yes":"Да","no":"Ðет","invalidWidth":"Ширина Ñчейки должна быть чиÑлом.","invalidHeight":"Ð’Ñ‹Ñота Ñчейки должна быть чиÑлом.","invalidRowSpan":"КоличеÑтво объединÑемых Ñтрок должно быть задано чиÑлом.","invalidColSpan":"КоличеÑтво объединÑемых колонок должно быть задано чиÑлом.","chooseColor":"Выберите"},"cellPad":"Внутренний отÑтуп Ñчеек","cellSpace":"Внешний отÑтуп Ñчеек","column":{"menu":"Колонка","insertBefore":"Ð’Ñтавить колонку Ñлева","insertAfter":"Ð’Ñтавить колонку Ñправа","deleteColumn":"Удалить колонки"},"columns":"Колонки","deleteTable":"Удалить таблицу","headers":"Заголовки","headersBoth":"Сверху и Ñлева","headersColumn":"Ð›ÐµÐ²Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°","headersNone":"Без заголовков","headersRow":"ВерхнÑÑ Ñтрока","heightUnit":"height unit","invalidBorder":"Размер границ должен быть чиÑлом.","invalidCellPadding":"Внутренний отÑтуп Ñчеек (cellpadding) должен быть чиÑлом.","invalidCellSpacing":"Внешний отÑтуп Ñчеек (cellspacing) должен быть чиÑлом.","invalidCols":"КоличеÑтво Ñтолбцов должно быть больше 0.","invalidHeight":"Ð’Ñ‹Ñота таблицы должна быть чиÑлом.","invalidRows":"КоличеÑтво Ñтрок должно быть больше 0.","invalidWidth":"Ширина таблицы должна быть чиÑлом.","menu":"СвойÑтва таблицы","row":{"menu":"Строка","insertBefore":"Ð’Ñтавить Ñтроку Ñверху","insertAfter":"Ð’Ñтавить Ñтроку Ñнизу","deleteRow":"Удалить Ñтроки"},"rows":"Строки","summary":"Итоги","title":"СвойÑтва таблицы","toolbar":"Таблица","widthPc":"процентов","widthPx":"пикÑелей","widthUnit":"единица измерениÑ"},"stylescombo":{"label":"Стили","panelTitle":"Стили форматированиÑ","panelTitle1":"Стили блока","panelTitle2":"Стили Ñлемента","panelTitle3":"Стили объекта"},"specialchar":{"options":"Выбор Ñпециального Ñимвола","title":"Выберите Ñпециальный Ñимвол","toolbar":"Ð’Ñтавить Ñпециальный Ñимвол"},"sourcedialog":{"toolbar":"ИÑходник","title":"ИÑточник"},"sourcearea":{"toolbar":"ИÑточник"},"showblocks":{"toolbar":"Отображать блоки"},"removeformat":{"toolbar":"Убрать форматирование"},"pastetext":{"button":"Ð’Ñтавить только текÑÑ‚","pasteNotification":"Ð”Ð»Ñ Ð²Ñтавки нажмите %1. Ваш браузер не поддерживает возможноÑÑ‚ÑŒ вÑтавки через панель инÑтрументов или контекÑтное меню","title":"Ð’Ñтавить только текÑÑ‚"},"pastefromword":{"confirmCleanup":"ТекÑÑ‚, который вы желаете вÑтавить, по вÑей видимоÑти, был Ñкопирован из Word. Следует ли очиÑтить его перед вÑтавкой?","error":"Ðевозможно очиÑтить вÑтавленные данные из-за внутренней ошибки","title":"Ð’Ñтавить из Word","toolbar":"Ð’Ñтавить из Word"},"notification":{"closed":"Уведомление закрыто"},"maximize":{"maximize":"Развернуть","minimize":"Свернуть"},"magicline":{"title":"Ð’Ñтавить здеÑÑŒ параграф"},"list":{"bulletedlist":"Ð’Ñтавить / удалить маркированный ÑпиÑок","numberedlist":"Ð’Ñтавить / удалить нумерованный ÑпиÑок"},"language":{"button":"УÑтановка Ñзыка","remove":"Удалить Ñзык"},"indent":{"indent":"Увеличить отÑтуп","outdent":"Уменьшить отÑтуп"},"image2":{"alt":"Ðльтернативный текÑÑ‚","btnUpload":"Загрузить на Ñервер","captioned":"Отображать название","captionPlaceholder":"Ðазвание","infoTab":"Данные об изображении","lockRatio":"СохранÑÑ‚ÑŒ пропорции","menu":"СвойÑтва изображениÑ","pathName":"изображение","pathNameCaption":"название","resetSize":"Вернуть обычные размеры","resizer":"Ðажмите и раÑÑ‚Ñните","title":"СвойÑтва изображениÑ","uploadTab":"Загрузка файла","urlMissing":"Ðе указана ÑÑылка на изображение.","altMissing":"Ðе задан альтернативный текÑÑ‚"},"horizontalrule":{"toolbar":"Ð’Ñтавить горизонтальную линию"},"format":{"label":"Форматирование","panelTitle":"Форматирование","tag_address":"ÐдреÑ","tag_div":"Обычное (div)","tag_h1":"Заголовок 1","tag_h2":"Заголовок 2","tag_h3":"Заголовок 3","tag_h4":"Заголовок 4","tag_h5":"Заголовок 5","tag_h6":"Заголовок 6","tag_p":"Обычное","tag_pre":"Моноширинное"},"filetools":{"loadError":"Ошибка при чтении файла","networkError":"Ð¡ÐµÑ‚ÐµÐ²Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при загрузке файла","httpError404":"HTTP ошибка при загрузке файла (404: Файл не найден)","httpError403":"HTTP ошибка при загрузке файла (403: Запрещено)","httpError":"HTTP ошибка при загрузке файла (%1)","noUrlError":"Ðе определен URL Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файлов","responseError":"Ðекорректный ответ Ñервера"},"elementspath":{"eleLabel":"Путь Ñлементов","eleTitle":"Ðлемент %1"},"contextmenu":{"options":"Параметры контекÑтного меню"},"clipboard":{"copy":"Копировать","copyError":"ÐаÑтройки безопаÑноÑти вашего браузера не разрешают редактору выполнÑÑ‚ÑŒ операции по копированию текÑта. ПожалуйÑта, иÑпользуйте Ð´Ð»Ñ Ñтого клавиатуру (Ctrl/Cmd+C).","cut":"Вырезать","cutError":"ÐаÑтройки безопаÑноÑти вашего браузера не разрешают редактору выполнÑÑ‚ÑŒ операции по вырезке текÑта. ПожалуйÑта, иÑпользуйте Ð´Ð»Ñ Ñтого клавиатуру (Ctrl/Cmd+X).","paste":"Ð’Ñтавить","pasteNotification":"Ð”Ð»Ñ Ð²Ñтавки нажмите %1. Ваш браузер не поддерживает возможноÑÑ‚ÑŒ вÑтавки через панель инÑтрументов или контекÑтное меню","pasteArea":"ОблаÑÑ‚ÑŒ вÑтавки","pasteMsg":"Ð’Ñтавьте контент в Ñту облаÑÑ‚ÑŒ и нажмите OK","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Цитата"},"basicstyles":{"bold":"Полужирный","italic":"КурÑив","strike":"Зачеркнутый","subscript":"ПодÑтрочный индекÑ","superscript":"ÐадÑтрочный индекÑ","underline":"Подчеркнутый"},"about":{"copy":"Copyright © $1. Ð’Ñе права защищены.","dlgTitle":"О CKEditor 4","moreInfo":"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о лицензии, пожалуйÑта, перейдите на наш Ñайт:"},"editor":"Визуальный текÑтовый редактор","editorPanel":"Визуальный редактор текÑта","common":{"editorHelp":"Ðажмите ALT-0 Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñправки","browseServer":"Выбор на Ñервере","url":"СÑылка","protocol":"Протокол","upload":"Загрузка файла","uploadSubmit":"Загрузить на Ñервер","image":"Изображение","form":"Форма","checkbox":"ЧекбокÑ","radio":"Радиокнопка","textField":"ТекÑтовое поле","textarea":"МногоÑтрочное текÑтовое поле","hiddenField":"Скрытое поле","button":"Кнопка","select":"Выпадающий ÑпиÑок","imageButton":"Кнопка-изображение","notSet":"<не указано>","id":"Идентификатор","name":"ИмÑ","langDir":"Ðаправление текÑта","langDirLtr":"Слева направо (LTR)","langDirRtl":"Справа налево (RTL)","langCode":"Код Ñзыка","longDescr":"Длинное опиÑание ÑÑылки","cssClass":"КлаÑÑ CSS","advisoryTitle":"Заголовок","cssStyle":"Стиль","ok":"ОК","cancel":"Отмена","close":"Закрыть","preview":"ПредпроÑмотр","resize":"Перетащите Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°","generalTab":"ОÑновное","advancedTab":"Дополнительно","validateNumberFailed":"Ðто значение не ÑвлÑетÑÑ Ñ‡Ð¸Ñлом.","confirmNewPage":"ÐеÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны! Ð’Ñ‹ дейÑтвительно желаете перейти на другую Ñтраницу?","confirmCancel":"Ðекоторые параметры были изменены. Ð’Ñ‹ уверены, что желаете закрыть без ÑохранениÑ?","options":"Параметры","target":"Цель","targetNew":"Ðовое окно (_blank)","targetTop":"Главное окно (_top)","targetSelf":"Текущее окно (_self)","targetParent":"РодительÑкое окно (_parent)","langDirLTR":"Слева направо (LTR)","langDirRTL":"Справа налево (RTL)","styles":"Стиль","cssClasses":"CSS клаÑÑÑ‹","width":"Ширина","height":"Ð’Ñ‹Ñота","align":"Выравнивание","left":"По левому краю","right":"По правому краю","center":"По центру","justify":"По ширине","alignLeft":"По левому краю","alignRight":"По правому краю","alignCenter":"По центру","alignTop":"Поверху","alignMiddle":"ПоÑередине","alignBottom":"Понизу","alignNone":"Ðет","invalidValue":"ÐедопуÑтимое значение.","invalidHeight":"Ð’Ñ‹Ñота задаетÑÑ Ñ‡Ð¸Ñлом.","invalidWidth":"Ширина задаетÑÑ Ñ‡Ð¸Ñлом.","invalidLength":"Указанное значение Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ \"%1\" должно быть положительным чиÑлом без или Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ Ñимволом единицы Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ (%2)","invalidCssLength":"Значение, указанное в поле \"%1\", должно быть положительным целым чиÑлом. ДопуÑкаетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ единиц меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","invalidHtmlLength":"Значение, указанное в поле \"%1\", должно быть положительным целым чиÑлом. ДопуÑкаетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ единиц меры HTML (px или %).","invalidInlineStyle":"Значение, указанное Ð´Ð»Ñ ÑÑ‚Ð¸Ð»Ñ Ñлемента, должно ÑоÑтоÑÑ‚ÑŒ из одной или неÑкольких пар данных в формате \"параметр : значение\", разделённых точкой Ñ Ð·Ð°Ð¿Ñтой.","cssLengthTooltip":"Введите значение в пикÑелÑÑ…, либо чиÑло Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ единицей меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","unavailable":"%1<span class=\"cke_accessibility\">, недоÑтупно</span>","keyboard":{"8":"Backspace","13":"Ввод","16":"Shift","17":"Ctrl","18":"Alt","32":"Пробел","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"ÐšÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ","optionDefault":"По умолчанию"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/si.js b/core/assets/vendor/ckeditor/lang/si.js index 6ef7c1745c7c..52213c00acaa 100644 --- a/core/assets/vendor/ckeditor/lang/si.js +++ b/core/assets/vendor/ckeditor/lang/si.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['si']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"නà·à·€à¶ කිරීම","undo":"වෙනස් කිරීම"},"toolbar":{"toolbarCollapse":"මෙවලම් à¶à·“රුව à·„à·à¶šà·”ලුම.","toolbarExpand":"මෙවලම් à¶à·“රුව දීගහà·à¶»à·”ම","toolbarGroups":{"document":"ලිපිය","clipboard":"ඇමිණුම වෙනස් කිරීම","editing":"සංස්කරණය","forms":"පà·à¶»à¶¸à¶º","basicstyles":"මුලික විලà·à·ƒà¶º","paragraph":"චේදය","links":"සබà·à¶³à·’ය","insert":"ඇà¶à·”ලà¶à·Š කිරීම","styles":"විලà·à·ƒà¶º","colors":"වර්ණය","tools":"මෙවලම්"},"toolbars":"සංස්කරණ මෙවලම් à¶à·“රුව"},"table":{"border":"සීමà·à·€à·€à¶½ විà·à·à¶½à¶à·Šà·€à¶º","caption":"Caption","cell":{"menu":"කොටුව","insertBefore":"පෙර කොටුවක් ඇà¶à·”ල්කිරිම","insertAfter":"පසුව කොටුවක් ඇà¶à·”ලà¶à·Š ","deleteCell":"කොටුව මà·à¶šà·“ම","merge":"කොටු එකට යà·à¶šà·’රිම","mergeRight":"දකුණට ","mergeDown":"පහලට ","splitHorizontal":"à¶à·’රස්ව කොටු පà·à¶à·’රීම","splitVertical":"සිරස්ව කොටු පà·à¶à·’රීම","title":"කොටු ","cellType":"කොටු වර්ගය","rowSpan":"පේළි පළල","colSpan":"සිරස් පළල","wordWrap":"වචන ගà·à¶½à¶´à·”ම","hAlign":"à¶à·’රස්ව ","vAlign":"සිරස්ව ","alignBaseline":"පà·à¶¯ රේඛà·à·€","bgColor":"පසුබිම් වර්ණය","borderColor":"මà·à¶ºà·’ම් ","data":"Data","header":"à·à·“ර්ෂක","yes":"ඔව්","no":"නà·à¶","invalidWidth":"කොටු පළල සංඛ්â€à¶ºà·Šà¶à·Šà¶¸à¶š වටිනà·à¶šà¶¸à¶šà·Š විය යුà¶à·”ය","invalidHeight":"කොටු උස සංඛ්â€à¶ºà·Šà¶à·Šà¶¸à¶š වටිනà·à¶šà¶¸à¶šà·Š විය යුà¶à·”ය","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"à¶à·à¶»à¶±à·Šà¶±"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"සිරස් ","deleteTable":"වගුව මකන්න","headers":"à·à·“ර්ෂක","headersBoth":"දෙකම","headersColumn":"පළමූ සිරස් à¶à·“රුව","headersNone":"කිසිවක්ම නොවේ","headersRow":"පළමූ පේළිය","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"විලà·à·ƒà¶º","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"විà·à·šà·‚ ගුණà·à¶‚ග වීකල්ප","title":"විà·à·šà·‚ ගුණà·à¶‚ග ","toolbar":"විà·à·šà·‚ ගුණà·à¶‚ග ඇà¶à·”ලà¶à·Š "},"sourcedialog":{"toolbar":"මුලà·à·à·Šâ€à¶»à¶º","title":"මුලà·à·à·Šâ€à¶»à¶º"},"sourcearea":{"toolbar":"මුලà·à·à·Šâ€à¶»à¶º"},"showblocks":{"toolbar":"කොටස පෙන්නන්න"},"removeformat":{"toolbar":"à·ƒà·à¶šà·ƒà·“ම වෙනස් කරන්න"},"pastetext":{"button":"à·ƒà·à¶¸à·à¶±à·Šâ€à¶º අක්ෂර ලෙස අලවන්න","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"à·ƒà·à¶¸à·à¶±à·Šâ€à¶º අක්ෂර ලෙස අලවන්න"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"වචන වලින් අලවන්න","toolbar":"වචන වලින් අලවන්න"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"විà·à·à¶½ කිරීම","minimize":"කුඩ෠කිරීම"},"magicline":{"title":"චේදය ඇà¶à·”ලà¶à·Š කරන්න"},"list":{"bulletedlist":"ඇà¶à·”ලà¶à·Š / ඉවà¶à·Š කිරීම ලඉස්à¶à·”à·€","numberedlist":"ඇà¶à·”ලà¶à·Š / ඉවà¶à·Š කිරීම අන්න්කිචලඉස්à¶à·”à·€"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"අà¶à¶» පරà¶à¶»à¶º à·€à·à¶©à·’කරන්න","outdent":"අà¶à¶» පරà¶à¶»à¶º අඩුකරන්න"},"image2":{"alt":"විකල්ප ","btnUpload":"සේවà·à¶¯à·à¶ºà¶šà¶º වෙචයොමුකිරිම","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"රුපයේ à¶à·œà¶»à¶à·”රු","lockRatio":"නවà¶à¶± අනුපà·à¶à¶º ","menu":"රුපයේ ගුණ","pathName":"image","pathNameCaption":"caption","resetSize":"නà·à·€à¶à¶à·Š විà·à·à¶½à¶à·Šà·€à¶º වෙනස් කිරීම","resizer":"Click and drag to resize","title":"රුපයේ ","uploadTab":"උඩුගà¶à¶šà·’රීම","urlMissing":"රුප මුලà·à·à·Šâ€à¶» URL නà·à¶.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"à¶à·’රස් රේඛà·à·€à¶šà·Š ඇà¶à·”ලà¶à·Š කරන්න"},"format":{"label":"ආකෘà¶à·’ය","panelTitle":"චේදයේ ","tag_address":"ලිපිනය","tag_div":"à·ƒà·à¶¸à·à¶±à·Šâ€à¶º(DIV)","tag_h1":"à·à·“ර්ෂය 1","tag_h2":"à·à·“ර්ෂය 2","tag_h3":"à·à·“ර්ෂය 3","tag_h4":"à·à·“ර්ෂය 4","tag_h5":"à·à·“ර්ෂය 5","tag_h6":"à·à·“ර්ෂය 6","tag_p":"à·ƒà·à¶¸à·à¶±à·Šâ€à¶º","tag_pre":"ආකෘà¶à·’යන්"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"මුලද්â€à¶»à·€à·Šâ€à¶º මà·à¶»à·Šà¶œà¶º","eleTitle":"%1 මුල"},"contextmenu":{"options":"අනà¶à¶»à·Šà¶œ ලේඛණ විකල්ප"},"clipboard":{"copy":"පිටපà¶à·Š කරන්න","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"කපà·à¶œà¶±à·Šà¶±","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"අලවන්න","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"අලවන ප්â€à¶»à¶¯à·šà·","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"උද්ධෘචකොටස"},"basicstyles":{"bold":"à¶à¶¯ අකුරින් ලියනලද","italic":"බà·à¶°à·“අකුරින් ලියන ලද","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"යටින් ඉරි අදින ලද"},"about":{"copy":"පිටපà¶à·Š අයිà¶à·’ය සහ පිටපà¶à·Š කිරීම;$1 .සියලුම හිමිකම් ඇවිරිණි.","dlgTitle":"CKEditor ගà·à¶± විස්à¶à¶»","moreInfo":"බලපà¶à·Šâ€à¶» à¶à·œà¶»à¶à·”රු සදහ෠කරුණà·à¶šà¶» අපගේ විද්â€à¶ºà·”à¶à·Š ලිපිනයට පිවිසෙන්න:"},"editor":"පොහොසà¶à·Š වචන සංස්කරණ","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"උදව් ලබ෠ගà·à¶±à·“මට ALT බොà¶à·Šà¶à¶¸ ඔබන්න","browseServer":"සෙවුම් සේවà·à¶¯à·à¶ºà¶šà¶º","url":"URL","protocol":"මුලà·à¶´à¶à·Šâ€à¶»à¶º","upload":"උඩුගà¶à¶šà·’රීම","uploadSubmit":"සේවà·à¶¯à·à¶ºà¶šà¶º වෙචයොමුකිරිම","image":"රුපය","flash":"දීප්à¶à·’ය","form":"පà·à¶»à¶¸à¶º","checkbox":"ලකුණුකිරීමේ කොටුව","radio":"à¶à·šà¶»à·“ම් ","textField":"ලියන ප්â€à¶»à¶¯à·šà·à¶º","textarea":"අකුරු ","hiddenField":"à·ƒà·à¶Ÿà·€à·”ණු ප්â€à¶»à¶¯à·šà·à¶º","button":"බොà¶à·Šà¶à¶¸","select":"à¶à·à¶»à¶±à·Šà¶± ","imageButton":"රුප ","notSet":"<යොද෠>","id":"අංකය","name":"නම","langDir":"භà·à·‚෠දිà·à·à·€","langDirLtr":"වමේසිට දකුණුට","langDirRtl":"දකුණේ සිට වමට","langCode":"භà·à·‚෠කේà¶à¶º","longDescr":"සම්පුර්න පà·à·„à·à¶¯à·’ලි කිරීම","cssClass":"විලà·à· පà¶à·Šâ€à¶» පන්à¶à·’ය","advisoryTitle":"උපදෙස් ","cssStyle":"විලà·à·ƒà¶º","ok":"නිරදි","cancel":"අවලංගු කිරීම","close":"à·€à·à·ƒà·“ම","preview":"නà·à·€à¶ ","resize":"විà·à·à¶½à¶à·Šà·€à¶º නà·à·€à¶ වෙනස් කිරීම","generalTab":"පොදු කරුණු.","advancedTab":"දීය","validateNumberFailed":"මෙම වටිනà·à¶šà¶¸ අංකයක් නොවේ","confirmNewPage":"ආරක්ෂ෠නොකළ සියලුම දà¶à·Šà¶à¶ºà¶±à·Š මà·à¶šà·’යනුලà·à¶¶à·š. ඔබට නව පිටුවක් ලබ෠ගà·à¶±à·“මට අවà·à·Šâ€à¶ºà¶¯?","confirmCancel":"ඇà¶à¶¸à·Š විකල්පයන් වෙනස් කර ඇà¶. ඔබට මින් නික්මීමට අවà·à·Šâ€à¶ºà¶¯?","options":" විකල්ප","target":"අරමුණ","targetNew":"නව කව්ළුව","targetTop":"à·€à·à¶¯à¶œà¶à·Š කව්ළුව","targetSelf":"එම කව්ළුව(_à¶à¶¸\\\\)","targetParent":"මව් කව්ළුව(_)","langDirLTR":"වමේසිට දකුණුට","langDirRTL":"දකුණේ සිට වමට","styles":"විලà·à·ƒà¶º","cssClasses":"විලà·à·ƒà¶´à¶à·Šâ€à¶» පන්à¶à·’ය","width":"පළල","height":"උස","align":"ගà·à¶½à¶´à·”ම","left":"වම","right":"දකුණ","center":"මධ්â€à¶º","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"ඉ","alignMiddle":"මà·à¶¯","alignBottom":"පහල","alignNone":"None","invalidValue":"à·€à·à¶»à¶¯à·“ වටිනà·à¶šà¶¸à¶šà·’","invalidHeight":"උස අංකයක් විය යුà¶à·”ය","invalidWidth":"පළල අංකයක් විය යුà¶à·”ය","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"වටිනà·à¶šà¶¸à¶šà·Š නිරූපණය කිරීම \"%1\" ප්â€à¶»à¶¯à·šà·à¶º ධන සංක්â€à¶ºà·à¶à·Šà¶¸à¶š වටිනà·à¶šà¶¸à¶šà·Š හ෠නිවරදි නොවන CSS මිනුම් එකක(px, %, in, cm, mm, em, ex, pt, pc)","invalidHtmlLength":"වටිනà·à¶šà¶¸à¶šà·Š නිරූපණය කිරීම \"%1\" ප්â€à¶»à¶¯à·šà·à¶º ධන සංක්â€à¶ºà·à¶à·Šà¶¸à¶š වටිනà·à¶šà¶¸à¶šà·Š හ෠නිවරදි නොවන HTML මිනුම් එකක (px à·„à· %).","invalidInlineStyle":"වටිනà·à¶šà¶¸à¶šà·Š නිරූපණය කිරීම පේළි විලà·à·ƒà¶ºà¶ºà¶§ ආකෘà¶à·’ය අනà¶à¶»à·Šà¶œ විය යුà¶à¶º \"නම : වටිනà·à¶šà¶¸\", à¶à·’à¶à·Š කොමà·à·€à¶šà·’න් වෙන් වෙන ලද.","cssLengthTooltip":"සංක්â€à¶ºà· ඇà¶à·”ලà¶à·Š කිරීමේදී වටිනà·à¶šà¶¸ à¶à·’à¶à·Š ප්â€à¶»à¶¸à·à¶«à¶º නිවරදි CSS ඒකක(à¶à·’à¶à·Š, %, අඟල්,සෙමි, mm, em, ex, pt, pc)","unavailable":"%1<span පන්à¶à·’ය=\"ළඟ෠වියහà·à¶šà·’ ද බලන්න\">, නොමà·à¶à·’නම්</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['si']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"නà·à·€à¶ කිරීම","undo":"වෙනස් කිරීම"},"toolbar":{"toolbarCollapse":"මෙවලම් à¶à·“රුව à·„à·à¶šà·”ලුම.","toolbarExpand":"මෙවලම් à¶à·“රුව දීගහà·à¶»à·”ම","toolbarGroups":{"document":"ලිපිය","clipboard":"ඇමිණුම වෙනස් කිරීම","editing":"සංස්කරණය","forms":"පà·à¶»à¶¸à¶º","basicstyles":"මුලික විලà·à·ƒà¶º","paragraph":"චේදය","links":"සබà·à¶³à·’ය","insert":"ඇà¶à·”ලà¶à·Š කිරීම","styles":"විලà·à·ƒà¶º","colors":"වර්ණය","tools":"මෙවලම්"},"toolbars":"සංස්කරණ මෙවලම් à¶à·“රුව"},"table":{"border":"සීමà·à·€à·€à¶½ විà·à·à¶½à¶à·Šà·€à¶º","caption":"Caption","cell":{"menu":"කොටුව","insertBefore":"පෙර කොටුවක් ඇà¶à·”ල්කිරිම","insertAfter":"පසුව කොටුවක් ඇà¶à·”ලà¶à·Š ","deleteCell":"කොටුව මà·à¶šà·“ම","merge":"කොටු එකට යà·à¶šà·’රිම","mergeRight":"දකුණට ","mergeDown":"පහලට ","splitHorizontal":"à¶à·’රස්ව කොටු පà·à¶à·’රීම","splitVertical":"සිරස්ව කොටු පà·à¶à·’රීම","title":"කොටු ","cellType":"කොටු වර්ගය","rowSpan":"පේළි පළල","colSpan":"සිරස් පළල","wordWrap":"වචන ගà·à¶½à¶´à·”ම","hAlign":"à¶à·’රස්ව ","vAlign":"සිරස්ව ","alignBaseline":"පà·à¶¯ රේඛà·à·€","bgColor":"පසුබිම් වර්ණය","borderColor":"මà·à¶ºà·’ම් ","data":"Data","header":"à·à·“ර්ෂක","yes":"ඔව්","no":"නà·à¶","invalidWidth":"කොටු පළල සංඛ්â€à¶ºà·Šà¶à·Šà¶¸à¶š වටිනà·à¶šà¶¸à¶šà·Š විය යුà¶à·”ය","invalidHeight":"කොටු උස සංඛ්â€à¶ºà·Šà¶à·Šà¶¸à¶š වටිනà·à¶šà¶¸à¶šà·Š විය යුà¶à·”ය","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"à¶à·à¶»à¶±à·Šà¶±"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"සිරස් ","deleteTable":"වගුව මකන්න","headers":"à·à·“ර්ෂක","headersBoth":"දෙකම","headersColumn":"පළමූ සිරස් à¶à·“රුව","headersNone":"කිසිවක්ම නොවේ","headersRow":"පළමූ පේළිය","heightUnit":"height unit","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"stylescombo":{"label":"විලà·à·ƒà¶º","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"විà·à·šà·‚ ගුණà·à¶‚ග වීකල්ප","title":"විà·à·šà·‚ ගුණà·à¶‚ග ","toolbar":"විà·à·šà·‚ ගුණà·à¶‚ග ඇà¶à·”ලà¶à·Š "},"sourcedialog":{"toolbar":"මුලà·à·à·Šâ€à¶»à¶º","title":"මුලà·à·à·Šâ€à¶»à¶º"},"sourcearea":{"toolbar":"මුලà·à·à·Šâ€à¶»à¶º"},"showblocks":{"toolbar":"කොටස පෙන්නන්න"},"removeformat":{"toolbar":"à·ƒà·à¶šà·ƒà·“ම වෙනස් කරන්න"},"pastetext":{"button":"à·ƒà·à¶¸à·à¶±à·Šâ€à¶º අක්ෂර ලෙස අලවන්න","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"à·ƒà·à¶¸à·à¶±à·Šâ€à¶º අක්ෂර ලෙස අලවන්න"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"වචන වලින් අලවන්න","toolbar":"වචන වලින් අලවන්න"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"විà·à·à¶½ කිරීම","minimize":"කුඩ෠කිරීම"},"magicline":{"title":"චේදය ඇà¶à·”ලà¶à·Š කරන්න"},"list":{"bulletedlist":"ඇà¶à·”ලà¶à·Š / ඉවà¶à·Š කිරීම ලඉස්à¶à·”à·€","numberedlist":"ඇà¶à·”ලà¶à·Š / ඉවà¶à·Š කිරීම අන්න්කිචලඉස්à¶à·”à·€"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"අà¶à¶» පරà¶à¶»à¶º à·€à·à¶©à·’කරන්න","outdent":"අà¶à¶» පරà¶à¶»à¶º අඩුකරන්න"},"image2":{"alt":"විකල්ප ","btnUpload":"සේවà·à¶¯à·à¶ºà¶šà¶º වෙචයොමුකිරිම","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"රුපයේ à¶à·œà¶»à¶à·”රු","lockRatio":"නවà¶à¶± අනුපà·à¶à¶º ","menu":"රුපයේ ගුණ","pathName":"image","pathNameCaption":"caption","resetSize":"නà·à·€à¶à¶à·Š විà·à·à¶½à¶à·Šà·€à¶º වෙනස් කිරීම","resizer":"Click and drag to resize","title":"රුපයේ ","uploadTab":"උඩුගà¶à¶šà·’රීම","urlMissing":"රුප මුලà·à·à·Šâ€à¶» URL නà·à¶.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"à¶à·’රස් රේඛà·à·€à¶šà·Š ඇà¶à·”ලà¶à·Š කරන්න"},"format":{"label":"ආකෘà¶à·’ය","panelTitle":"චේදයේ ","tag_address":"ලිපිනය","tag_div":"à·ƒà·à¶¸à·à¶±à·Šâ€à¶º(DIV)","tag_h1":"à·à·“ර්ෂය 1","tag_h2":"à·à·“ර්ෂය 2","tag_h3":"à·à·“ර්ෂය 3","tag_h4":"à·à·“ර්ෂය 4","tag_h5":"à·à·“ර්ෂය 5","tag_h6":"à·à·“ර්ෂය 6","tag_p":"à·ƒà·à¶¸à·à¶±à·Šâ€à¶º","tag_pre":"ආකෘà¶à·’යන්"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"මුලද්â€à¶»à·€à·Šâ€à¶º මà·à¶»à·Šà¶œà¶º","eleTitle":"%1 මුල"},"contextmenu":{"options":"අනà¶à¶»à·Šà¶œ ලේඛණ විකල්ප"},"clipboard":{"copy":"පිටපà¶à·Š කරන්න","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"කපà·à¶œà¶±à·Šà¶±","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"අලවන්න","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"අලවන ප්â€à¶»à¶¯à·šà·","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"උද්ධෘචකොටස"},"basicstyles":{"bold":"à¶à¶¯ අකුරින් ලියනලද","italic":"බà·à¶°à·“අකුරින් ලියන ලද","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"යටින් ඉරි අදින ලද"},"about":{"copy":"පිටපà¶à·Š අයිà¶à·’ය සහ පිටපà¶à·Š කිරීම;$1 .සියලුම හිමිකම් ඇවිරිණි.","dlgTitle":"CKEditor ගà·à¶± විස්à¶à¶»","moreInfo":"බලපà¶à·Šâ€à¶» à¶à·œà¶»à¶à·”රු සදහ෠කරුණà·à¶šà¶» අපගේ විද්â€à¶ºà·”à¶à·Š ලිපිනයට පිවිසෙන්න:"},"editor":"පොහොසà¶à·Š වචන සංස්කරණ","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"උදව් ලබ෠ගà·à¶±à·“මට ALT බොà¶à·Šà¶à¶¸ ඔබන්න","browseServer":"සෙවුම් සේවà·à¶¯à·à¶ºà¶šà¶º","url":"URL","protocol":"මුලà·à¶´à¶à·Šâ€à¶»à¶º","upload":"උඩුගà¶à¶šà·’රීම","uploadSubmit":"සේවà·à¶¯à·à¶ºà¶šà¶º වෙචයොමුකිරිම","image":"රුපය","form":"පà·à¶»à¶¸à¶º","checkbox":"ලකුණුකිරීමේ කොටුව","radio":"à¶à·šà¶»à·“ම් ","textField":"ලියන ප්â€à¶»à¶¯à·šà·à¶º","textarea":"අකුරු ","hiddenField":"à·ƒà·à¶Ÿà·€à·”ණු ප්â€à¶»à¶¯à·šà·à¶º","button":"බොà¶à·Šà¶à¶¸","select":"à¶à·à¶»à¶±à·Šà¶± ","imageButton":"රුප ","notSet":"<යොද෠>","id":"අංකය","name":"නම","langDir":"භà·à·‚෠දිà·à·à·€","langDirLtr":"වමේසිට දකුණුට","langDirRtl":"දකුණේ සිට වමට","langCode":"භà·à·‚෠කේà¶à¶º","longDescr":"සම්පුර්න පà·à·„à·à¶¯à·’ලි කිරීම","cssClass":"විලà·à· පà¶à·Šâ€à¶» පන්à¶à·’ය","advisoryTitle":"උපදෙස් ","cssStyle":"විලà·à·ƒà¶º","ok":"නිරදි","cancel":"අවලංගු කිරීම","close":"à·€à·à·ƒà·“ම","preview":"නà·à·€à¶ ","resize":"විà·à·à¶½à¶à·Šà·€à¶º නà·à·€à¶ වෙනස් කිරීම","generalTab":"පොදු කරුණු.","advancedTab":"දීය","validateNumberFailed":"මෙම වටිනà·à¶šà¶¸ අංකයක් නොවේ","confirmNewPage":"ආරක්ෂ෠නොකළ සියලුම දà¶à·Šà¶à¶ºà¶±à·Š මà·à¶šà·’යනුලà·à¶¶à·š. ඔබට නව පිටුවක් ලබ෠ගà·à¶±à·“මට අවà·à·Šâ€à¶ºà¶¯?","confirmCancel":"ඇà¶à¶¸à·Š විකල්පයන් වෙනස් කර ඇà¶. ඔබට මින් නික්මීමට අවà·à·Šâ€à¶ºà¶¯?","options":" විකල්ප","target":"අරමුණ","targetNew":"නව කව්ළුව","targetTop":"à·€à·à¶¯à¶œà¶à·Š කව්ළුව","targetSelf":"එම කව්ළුව(_à¶à¶¸\\\\)","targetParent":"මව් කව්ළුව(_)","langDirLTR":"වමේසිට දකුණුට","langDirRTL":"දකුණේ සිට වමට","styles":"විලà·à·ƒà¶º","cssClasses":"විලà·à·ƒà¶´à¶à·Šâ€à¶» පන්à¶à·’ය","width":"පළල","height":"උස","align":"ගà·à¶½à¶´à·”ම","left":"වම","right":"දකුණ","center":"මධ්â€à¶º","justify":"Justify","alignLeft":"Align Left","alignRight":"Align Right","alignCenter":"Align Center","alignTop":"ඉ","alignMiddle":"මà·à¶¯","alignBottom":"පහල","alignNone":"None","invalidValue":"à·€à·à¶»à¶¯à·“ වටිනà·à¶šà¶¸à¶šà·’","invalidHeight":"උස අංකයක් විය යුà¶à·”ය","invalidWidth":"පළල අංකයක් විය යුà¶à·”ය","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"වටිනà·à¶šà¶¸à¶šà·Š නිරූපණය කිරීම \"%1\" ප්â€à¶»à¶¯à·šà·à¶º ධන සංක්â€à¶ºà·à¶à·Šà¶¸à¶š වටිනà·à¶šà¶¸à¶šà·Š හ෠නිවරදි නොවන CSS මිනුම් එකක(px, %, in, cm, mm, em, ex, pt, pc)","invalidHtmlLength":"වටිනà·à¶šà¶¸à¶šà·Š නිරූපණය කිරීම \"%1\" ප්â€à¶»à¶¯à·šà·à¶º ධන සංක්â€à¶ºà·à¶à·Šà¶¸à¶š වටිනà·à¶šà¶¸à¶šà·Š හ෠නිවරදි නොවන HTML මිනුම් එකක (px à·„à· %).","invalidInlineStyle":"වටිනà·à¶šà¶¸à¶šà·Š නිරූපණය කිරීම පේළි විලà·à·ƒà¶ºà¶ºà¶§ ආකෘà¶à·’ය අනà¶à¶»à·Šà¶œ විය යුà¶à¶º \"නම : වටිනà·à¶šà¶¸\", à¶à·’à¶à·Š කොමà·à·€à¶šà·’න් වෙන් වෙන ලද.","cssLengthTooltip":"සංක්â€à¶ºà· ඇà¶à·”ලà¶à·Š කිරීමේදී වටිනà·à¶šà¶¸ à¶à·’à¶à·Š ප්â€à¶»à¶¸à·à¶«à¶º නිවරදි CSS ඒකක(à¶à·’à¶à·Š, %, අඟල්,සෙමි, mm, em, ex, pt, pc)","unavailable":"%1<span පන්à¶à·’ය=\"ළඟ෠වියහà·à¶šà·’ ද බලන්න\">, නොමà·à¶à·’නම්</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/sk.js b/core/assets/vendor/ckeditor/lang/sk.js index 1b19730b5d4f..d08e18e215a6 100644 --- a/core/assets/vendor/ckeditor/lang/sk.js +++ b/core/assets/vendor/ckeditor/lang/sk.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['sk']={"widget":{"move":"Kliknite a potiahnite pre presunutie","label":"%1 widget"},"undo":{"redo":"Znovu","undo":"Späť"},"toolbar":{"toolbarCollapse":"ZbaliÅ¥ liÅ¡tu nástrojov","toolbarExpand":"RozbaliÅ¥ liÅ¡tu nástrojov","toolbarGroups":{"document":"Dokument","clipboard":"Schránka pre kopÃrovanie/Späť","editing":"Upravovanie","forms":"Formuláre","basicstyles":"Základné Å¡týly","paragraph":"Odsek","links":"Odkazy","insert":"VložiÅ¥","styles":"Å týly","colors":"Farby","tools":"Nástroje"},"toolbars":"LiÅ¡ty nástrojov editora"},"table":{"border":"Å Ãrka orámovania","caption":"Popis","cell":{"menu":"Bunka","insertBefore":"VložiÅ¥ bunku pred","insertAfter":"VložiÅ¥ bunku za","deleteCell":"VymazaÅ¥ bunky","merge":"ZlúÄiÅ¥ bunky","mergeRight":"ZlúÄiÅ¥ doprava","mergeDown":"ZlúÄiÅ¥ dole","splitHorizontal":"RozdeliÅ¥ bunky horizontálne","splitVertical":"RozdeliÅ¥ bunky vertikálne","title":"Vlastnosti bunky","cellType":"Typ bunky","rowSpan":"Rozsah riadkov","colSpan":"Rozsah stĺpcov","wordWrap":"Zalamovanie riadkov","hAlign":"Horizontálne zarovnanie","vAlign":"Vertikálne zarovnanie","alignBaseline":"Základná Äiara (baseline)","bgColor":"Farba pozadia","borderColor":"Farba orámovania","data":"Dáta","header":"HlaviÄka","yes":"Ãno","no":"Nie","invalidWidth":"Å Ãrka bunky musà byÅ¥ ÄÃslo.","invalidHeight":"Výška bunky musà byÅ¥ ÄÃslo.","invalidRowSpan":"Rozsah riadkov musà byÅ¥ celé ÄÃslo.","invalidColSpan":"Rozsah stĺpcov musà byÅ¥ celé ÄÃslo.","chooseColor":"VybraÅ¥"},"cellPad":"Odsadenie obsahu (cell padding)","cellSpace":"VzdialenosÅ¥ buniek (cell spacing)","column":{"menu":"Stĺpec","insertBefore":"VložiÅ¥ stĺpec pred","insertAfter":"VložiÅ¥ stĺpec po","deleteColumn":"ZmazaÅ¥ stĺpce"},"columns":"Stĺpce","deleteTable":"VymazaÅ¥ tabuľku","headers":"HlaviÄka","headersBoth":"Obe","headersColumn":"Prvý stĺpec","headersNone":"Žiadne","headersRow":"Prvý riadok","heightUnit":"jednotka výšky","invalidBorder":"Å Ãrka orámovania musà byÅ¥ ÄÃslo.","invalidCellPadding":"Odsadenie v bunkách (cell padding) musà byÅ¥ kladné ÄÃslo.","invalidCellSpacing":"Medzera mädzi bunkami (cell spacing) musà byÅ¥ kladné ÄÃslo.","invalidCols":"PoÄet stĺpcov musà byÅ¥ ÄÃslo väÄÅ¡ie ako 0.","invalidHeight":"Výška tabuľky musà byÅ¥ ÄÃslo.","invalidRows":"PoÄet riadkov musà byÅ¥ ÄÃslo väÄÅ¡ie ako 0.","invalidWidth":"Å irka tabuľky musà byÅ¥ ÄÃslo.","menu":"Vlastnosti tabuľky","row":{"menu":"Riadok","insertBefore":"VložiÅ¥ riadok pred","insertAfter":"VložiÅ¥ riadok po","deleteRow":"VymazaÅ¥ riadky"},"rows":"Riadky","summary":"Prehľad","title":"Vlastnosti tabuľky","toolbar":"Tabuľka","widthPc":"percent","widthPx":"pixelov","widthUnit":"jednotka Å¡Ãrky"},"stylescombo":{"label":"Å týly","panelTitle":"Formátovanie Å¡týlov","panelTitle1":"Å týly bloku","panelTitle2":"Znakové Å¡týly","panelTitle3":"Å týly objektu"},"specialchar":{"options":"Možnosti Å¡peciálneho znaku","title":"Výber Å¡peciálneho znaku","toolbar":"VložiÅ¥ Å¡peciálny znak"},"sourcedialog":{"toolbar":"Zdroj","title":"Zdroj"},"sourcearea":{"toolbar":"Zdroj"},"showblocks":{"toolbar":"UkázaÅ¥ bloky"},"removeformat":{"toolbar":"OdstrániÅ¥ formátovanie"},"pastetext":{"button":"VložiÅ¥ ako Äistý text","pasteNotification":"StlaÄte %1 na vloženie. Váš prehliadaÄ nepodporuje vloženie prostrednÃctvom tlaÄidla v nástrojovej liÅ¡te alebo voľby v kontextovom menu.","title":"VložiÅ¥ ako Äistý text"},"pastefromword":{"confirmCleanup":"Zdá sa, že vkladaný text pochádza z programu MS Word. Chcete ho pred vkladanÃm automaticky vyÄistiÅ¥?","error":"Kvôli internej chybe nebolo možné vložené dáta vyÄistiÅ¥","title":"VložiÅ¥ z Wordu","toolbar":"VložiÅ¥ z Wordu"},"notification":{"closed":"Notifikácia zatvorená."},"maximize":{"maximize":"MaximalizovaÅ¥","minimize":"MinimalizovaÅ¥"},"magicline":{"title":"Odsek vložiÅ¥ sem"},"list":{"bulletedlist":"VložiÅ¥/odstrániÅ¥ zoznam s odrážkami","numberedlist":"VložiÅ¥/odstrániÅ¥ ÄÃslovaný zoznam"},"language":{"button":"NastaviÅ¥ jazyk","remove":"OdstrániÅ¥ jazyk"},"indent":{"indent":"ZväÄÅ¡iÅ¥ odsadenie","outdent":"ZmenÅ¡iÅ¥ odsadenie"},"image2":{"alt":"AlternatÃvny text","btnUpload":"OdoslaÅ¥ to na server","captioned":"OpÃsaný obrázok","captionPlaceholder":"Popis","infoTab":"Informácie o obrázku","lockRatio":"Pomer zámky","menu":"Vlastnosti obrázka","pathName":"obrázok","pathNameCaption":"popis","resetSize":"Pôvodná veľkosÅ¥","resizer":"Kliknite a potiahnite pre zmenu veľkosti","title":"Vlastnosti obrázka","uploadTab":"NahraÅ¥","urlMissing":"Chýba URL zdroja obrázka.","altMissing":"Chýba alternatÃvny text."},"horizontalrule":{"toolbar":"VložiÅ¥ vodorovnú Äiaru"},"format":{"label":"Formát","panelTitle":"Odsek","tag_address":"Adresa","tag_div":"Normálny (DIV)","tag_h1":"Nadpis 1","tag_h2":"Nadpis 2","tag_h3":"Nadpis 3","tag_h4":"Nadpis 4","tag_h5":"Nadpis 5","tag_h6":"Nadpis 6","tag_p":"Normálny","tag_pre":"Formátovaný"},"filetools":{"loadError":"PoÄas ÄÃtania súboru nastala chyba.","networkError":"PoÄas nahrávania súboru nastala chyba siete.","httpError404":"PoÄas nahrávania súboru nastala HTTP chyba (404: Súbor nebol nájdený).","httpError403":"PoÄas nahrávania súboru nastala HTTP chyba (403: Zakázaný).","httpError":"PoÄas nahrávania súboru nastala HTTP chyba (error status: %1).","noUrlError":"URL nahrávania nie je definovaný.","responseError":"Nesprávna odpoveÄ servera."},"elementspath":{"eleLabel":"Cesta prvkov","eleTitle":"%1 prvok"},"contextmenu":{"options":"Možnosti kontextového menu"},"clipboard":{"copy":"KopÃrovaÅ¥","copyError":"BezpeÄnostné nastavenia vášho prehliadaÄa nedovoľujú editoru automaticky spustiÅ¥ operáciu kopÃrovania. Použite na to klávesnicu (Ctrl/Cmd+C).","cut":"Vystrihnúť","cutError":"BezpeÄnostné nastavenia vášho prehliadaÄa nedovoľujú editoru automaticky spustiÅ¥ operáciu vystrihnutia. Použite na to klávesnicu (Ctrl/Cmd+X).","paste":"VložiÅ¥","pasteNotification":"StlaÄte %1 na vloženie. Váš prehliadaÄ nepodporuje vloženie prostrednÃctvom tlaÄidla v nástrojovej liÅ¡te alebo voľby v kontextovom menu.","pasteArea":"Miesto pre vloženie","pasteMsg":"Vložte svoj obsah do nasledujúcej oblasti a stlaÄte OK."},"blockquote":{"toolbar":"Citácia"},"basicstyles":{"bold":"TuÄné","italic":"KurzÃva","strike":"PreÄiarknuté","subscript":"Dolný index","superscript":"Horný index","underline":"PodÄiarknuté"},"about":{"copy":"Copyright © $1. VÅ¡etky práva vyhradené.","dlgTitle":"O aplikácii CKEditor 4","moreInfo":"Pre informácie o licenciách, prosÃme, navÅ¡tÃvte naÅ¡u web stránku:"},"editor":"Editor formátovaného textu","editorPanel":"Panel editora formátovaného textu","common":{"editorHelp":"StlaÄenÃm ALT 0 spustiÅ¥ pomocnÃka","browseServer":"PrehliadaÅ¥ server","url":"URL","protocol":"Protokol","upload":"OdoslaÅ¥","uploadSubmit":"OdoslaÅ¥ na server","image":"Obrázok","flash":"Flash","form":"Formulár","checkbox":"ZaÅ¡krtávacie pole","radio":"PrepÃnaÄ","textField":"Textové pole","textarea":"Textová oblasÅ¥","hiddenField":"Skryté pole","button":"TlaÄidlo","select":"Rozbaľovacà zoznam","imageButton":"Obrázkové tlaÄidlo","notSet":"<nenastavené>","id":"Id","name":"Meno","langDir":"Orientácia jazyka","langDirLtr":"Zľava doprava (LTR)","langDirRtl":"Sprava doľava (RTL)","langCode":"Kód jazyka","longDescr":"Dlhý popis URL","cssClass":"Trieda Å¡týlu","advisoryTitle":"Pomocný titulok","cssStyle":"Å týl","ok":"OK","cancel":"ZruÅ¡iÅ¥","close":"ZatvoriÅ¥","preview":"Náhľad","resize":"ZmeniÅ¥ veľkosÅ¥","generalTab":"Hlavné","advancedTab":"RozÅ¡Ãrené","validateNumberFailed":"Hodnota nie je ÄÃslo.","confirmNewPage":"Prajete si naÄÃtat novú stránku? VÅ¡etky neuložené zmeny budú stratené. ","confirmCancel":"Niektore možnosti boli zmenené. Naozaj chcete zavrieÅ¥ okno?","options":"Možnosti","target":"Cieľ","targetNew":"Nové okno (_blank)","targetTop":"NajvrchnejÅ¡ie okno (_top)","targetSelf":"To isté okno (_self)","targetParent":"RodiÄovské okno (_parent)","langDirLTR":"Zľava doprava (LTR)","langDirRTL":"Sprava doľava (RTL)","styles":"Å týl","cssClasses":"Triedy Å¡týlu","width":"Å Ãrka","height":"Výška","align":"Zarovnanie","left":"Vľavo","right":"Vpravo","center":"Na stred","justify":"Do bloku","alignLeft":"ZarovnaÅ¥ vľavo","alignRight":"ZarovnaÅ¥ vpravo","alignCenter":"ZarovnaÅ¥ na stred","alignTop":"Nahor","alignMiddle":"Na stred","alignBottom":"Dole","alignNone":"Žiadne","invalidValue":"Neplatná hodnota.","invalidHeight":"Výška musà byÅ¥ ÄÃslo.","invalidWidth":"Å Ãrka musà byÅ¥ ÄÃslo.","invalidLength":"Hodnota uvedená v poli \"%1\" musà byÅ¥ kladné ÄÃslo a s platnou mernou jednotkou (%2), alebo bez nej.","invalidCssLength":"Å pecifikovaná hodnota pre pole \"%1\" musà byÅ¥ kladné ÄÃslo s alebo bez platnej CSS mernej jednotky (px, %, in, cm, mm, em, ex, pt alebo pc).","invalidHtmlLength":"Å pecifikovaná hodnota pre pole \"%1\" musà byÅ¥ kladné ÄÃslo s alebo bez platnej HTML mernej jednotky (px alebo %).","invalidInlineStyle":"Zadaná hodnota pre inline Å¡týl musà pozostávaÅ¥ s jedného, alebo viac dvojÃc formátu \"názov: hodnota\", oddelených bodkoÄiarkou.","cssLengthTooltip":"Vložte ÄÃslo pre hodnotu v pixeloch alebo ÄÃslo so správnou CSS jednotou (px, %, in, cm, mm, em, ex, pt alebo pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupný</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"MedzernÃk","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Klávesová skratka","optionDefault":"Predvolený"}}; \ No newline at end of file +CKEDITOR.lang['sk']={"widget":{"move":"Kliknite a potiahnite pre presunutie","label":"%1 widget"},"undo":{"redo":"Znovu","undo":"Späť"},"toolbar":{"toolbarCollapse":"ZbaliÅ¥ liÅ¡tu nástrojov","toolbarExpand":"RozbaliÅ¥ liÅ¡tu nástrojov","toolbarGroups":{"document":"Dokument","clipboard":"Schránka pre kopÃrovanie/Späť","editing":"Upravovanie","forms":"Formuláre","basicstyles":"Základné Å¡týly","paragraph":"Odsek","links":"Odkazy","insert":"VložiÅ¥","styles":"Å týly","colors":"Farby","tools":"Nástroje"},"toolbars":"LiÅ¡ty nástrojov editora"},"table":{"border":"Å Ãrka orámovania","caption":"Popis","cell":{"menu":"Bunka","insertBefore":"VložiÅ¥ bunku pred","insertAfter":"VložiÅ¥ bunku za","deleteCell":"VymazaÅ¥ bunky","merge":"ZlúÄiÅ¥ bunky","mergeRight":"ZlúÄiÅ¥ doprava","mergeDown":"ZlúÄiÅ¥ dole","splitHorizontal":"RozdeliÅ¥ bunky horizontálne","splitVertical":"RozdeliÅ¥ bunky vertikálne","title":"Vlastnosti bunky","cellType":"Typ bunky","rowSpan":"Rozsah riadkov","colSpan":"Rozsah stĺpcov","wordWrap":"Zalamovanie riadkov","hAlign":"Horizontálne zarovnanie","vAlign":"Vertikálne zarovnanie","alignBaseline":"Základná Äiara (baseline)","bgColor":"Farba pozadia","borderColor":"Farba orámovania","data":"Dáta","header":"HlaviÄka","yes":"Ãno","no":"Nie","invalidWidth":"Å Ãrka bunky musà byÅ¥ ÄÃslo.","invalidHeight":"Výška bunky musà byÅ¥ ÄÃslo.","invalidRowSpan":"Rozsah riadkov musà byÅ¥ celé ÄÃslo.","invalidColSpan":"Rozsah stĺpcov musà byÅ¥ celé ÄÃslo.","chooseColor":"VybraÅ¥"},"cellPad":"Odsadenie obsahu (cell padding)","cellSpace":"VzdialenosÅ¥ buniek (cell spacing)","column":{"menu":"Stĺpec","insertBefore":"VložiÅ¥ stĺpec pred","insertAfter":"VložiÅ¥ stĺpec po","deleteColumn":"ZmazaÅ¥ stĺpce"},"columns":"Stĺpce","deleteTable":"VymazaÅ¥ tabuľku","headers":"HlaviÄka","headersBoth":"Obe","headersColumn":"Prvý stĺpec","headersNone":"Žiadne","headersRow":"Prvý riadok","heightUnit":"jednotka výšky","invalidBorder":"Å Ãrka orámovania musà byÅ¥ ÄÃslo.","invalidCellPadding":"Odsadenie v bunkách (cell padding) musà byÅ¥ kladné ÄÃslo.","invalidCellSpacing":"Medzera mädzi bunkami (cell spacing) musà byÅ¥ kladné ÄÃslo.","invalidCols":"PoÄet stĺpcov musà byÅ¥ ÄÃslo väÄÅ¡ie ako 0.","invalidHeight":"Výška tabuľky musà byÅ¥ ÄÃslo.","invalidRows":"PoÄet riadkov musà byÅ¥ ÄÃslo väÄÅ¡ie ako 0.","invalidWidth":"Å irka tabuľky musà byÅ¥ ÄÃslo.","menu":"Vlastnosti tabuľky","row":{"menu":"Riadok","insertBefore":"VložiÅ¥ riadok pred","insertAfter":"VložiÅ¥ riadok po","deleteRow":"VymazaÅ¥ riadky"},"rows":"Riadky","summary":"Prehľad","title":"Vlastnosti tabuľky","toolbar":"Tabuľka","widthPc":"percent","widthPx":"pixelov","widthUnit":"jednotka Å¡Ãrky"},"stylescombo":{"label":"Å týly","panelTitle":"Formátovanie Å¡týlov","panelTitle1":"Å týly bloku","panelTitle2":"Znakové Å¡týly","panelTitle3":"Å týly objektu"},"specialchar":{"options":"Možnosti Å¡peciálneho znaku","title":"Výber Å¡peciálneho znaku","toolbar":"VložiÅ¥ Å¡peciálny znak"},"sourcedialog":{"toolbar":"Zdroj","title":"Zdroj"},"sourcearea":{"toolbar":"Zdroj"},"showblocks":{"toolbar":"UkázaÅ¥ bloky"},"removeformat":{"toolbar":"OdstrániÅ¥ formátovanie"},"pastetext":{"button":"VložiÅ¥ ako Äistý text","pasteNotification":"StlaÄte %1 na vloženie. Váš prehliadaÄ nepodporuje vloženie prostrednÃctvom tlaÄidla v nástrojovej liÅ¡te alebo voľby v kontextovom menu.","title":"VložiÅ¥ ako Äistý text"},"pastefromword":{"confirmCleanup":"Zdá sa, že vkladaný text pochádza z programu MS Word. Chcete ho pred vkladanÃm automaticky vyÄistiÅ¥?","error":"Kvôli internej chybe nebolo možné vložené dáta vyÄistiÅ¥","title":"VložiÅ¥ z Wordu","toolbar":"VložiÅ¥ z Wordu"},"notification":{"closed":"Notifikácia zatvorená."},"maximize":{"maximize":"MaximalizovaÅ¥","minimize":"MinimalizovaÅ¥"},"magicline":{"title":"Odsek vložiÅ¥ sem"},"list":{"bulletedlist":"VložiÅ¥/odstrániÅ¥ zoznam s odrážkami","numberedlist":"VložiÅ¥/odstrániÅ¥ ÄÃslovaný zoznam"},"language":{"button":"NastaviÅ¥ jazyk","remove":"OdstrániÅ¥ jazyk"},"indent":{"indent":"ZväÄÅ¡iÅ¥ odsadenie","outdent":"ZmenÅ¡iÅ¥ odsadenie"},"image2":{"alt":"AlternatÃvny text","btnUpload":"OdoslaÅ¥ to na server","captioned":"OpÃsaný obrázok","captionPlaceholder":"Popis","infoTab":"Informácie o obrázku","lockRatio":"Pomer zámky","menu":"Vlastnosti obrázka","pathName":"obrázok","pathNameCaption":"popis","resetSize":"Pôvodná veľkosÅ¥","resizer":"Kliknite a potiahnite pre zmenu veľkosti","title":"Vlastnosti obrázka","uploadTab":"NahraÅ¥","urlMissing":"Chýba URL zdroja obrázka.","altMissing":"Chýba alternatÃvny text."},"horizontalrule":{"toolbar":"VložiÅ¥ vodorovnú Äiaru"},"format":{"label":"Formát","panelTitle":"Odsek","tag_address":"Adresa","tag_div":"Normálny (DIV)","tag_h1":"Nadpis 1","tag_h2":"Nadpis 2","tag_h3":"Nadpis 3","tag_h4":"Nadpis 4","tag_h5":"Nadpis 5","tag_h6":"Nadpis 6","tag_p":"Normálny","tag_pre":"Formátovaný"},"filetools":{"loadError":"PoÄas ÄÃtania súboru nastala chyba.","networkError":"PoÄas nahrávania súboru nastala chyba siete.","httpError404":"PoÄas nahrávania súboru nastala HTTP chyba (404: Súbor nebol nájdený).","httpError403":"PoÄas nahrávania súboru nastala HTTP chyba (403: Zakázaný).","httpError":"PoÄas nahrávania súboru nastala HTTP chyba (error status: %1).","noUrlError":"URL nahrávania nie je definovaný.","responseError":"Nesprávna odpoveÄ servera."},"elementspath":{"eleLabel":"Cesta prvkov","eleTitle":"%1 prvok"},"contextmenu":{"options":"Možnosti kontextového menu"},"clipboard":{"copy":"KopÃrovaÅ¥","copyError":"BezpeÄnostné nastavenia vášho prehliadaÄa nedovoľujú editoru automaticky spustiÅ¥ operáciu kopÃrovania. Použite na to klávesnicu (Ctrl/Cmd+C).","cut":"Vystrihnúť","cutError":"BezpeÄnostné nastavenia vášho prehliadaÄa nedovoľujú editoru automaticky spustiÅ¥ operáciu vystrihnutia. Použite na to klávesnicu (Ctrl/Cmd+X).","paste":"VložiÅ¥","pasteNotification":"StlaÄte %1 na vloženie. Váš prehliadaÄ nepodporuje vloženie prostrednÃctvom tlaÄidla v nástrojovej liÅ¡te alebo voľby v kontextovom menu.","pasteArea":"Miesto pre vloženie","pasteMsg":"Vložte svoj obsah do nasledujúcej oblasti a stlaÄte OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citácia"},"basicstyles":{"bold":"TuÄné","italic":"KurzÃva","strike":"PreÄiarknuté","subscript":"Dolný index","superscript":"Horný index","underline":"PodÄiarknuté"},"about":{"copy":"Copyright © $1. VÅ¡etky práva vyhradené.","dlgTitle":"O aplikácii CKEditor 4","moreInfo":"Pre informácie o licenciách, prosÃme, navÅ¡tÃvte naÅ¡u web stránku:"},"editor":"Editor formátovaného textu","editorPanel":"Panel editora formátovaného textu","common":{"editorHelp":"StlaÄenÃm ALT 0 spustiÅ¥ pomocnÃka","browseServer":"PrehliadaÅ¥ server","url":"URL","protocol":"Protokol","upload":"OdoslaÅ¥","uploadSubmit":"OdoslaÅ¥ na server","image":"Obrázok","form":"Formulár","checkbox":"ZaÅ¡krtávacie pole","radio":"PrepÃnaÄ","textField":"Textové pole","textarea":"Textová oblasÅ¥","hiddenField":"Skryté pole","button":"TlaÄidlo","select":"Rozbaľovacà zoznam","imageButton":"Obrázkové tlaÄidlo","notSet":"<nenastavené>","id":"Id","name":"Meno","langDir":"Orientácia jazyka","langDirLtr":"Zľava doprava (LTR)","langDirRtl":"Sprava doľava (RTL)","langCode":"Kód jazyka","longDescr":"Dlhý popis URL","cssClass":"Trieda Å¡týlu","advisoryTitle":"Pomocný titulok","cssStyle":"Å týl","ok":"OK","cancel":"ZruÅ¡iÅ¥","close":"ZatvoriÅ¥","preview":"Náhľad","resize":"ZmeniÅ¥ veľkosÅ¥","generalTab":"Hlavné","advancedTab":"RozÅ¡Ãrené","validateNumberFailed":"Hodnota nie je ÄÃslo.","confirmNewPage":"Prajete si naÄÃtat novú stránku? VÅ¡etky neuložené zmeny budú stratené. ","confirmCancel":"Niektore možnosti boli zmenené. Naozaj chcete zavrieÅ¥ okno?","options":"Možnosti","target":"Cieľ","targetNew":"Nové okno (_blank)","targetTop":"NajvrchnejÅ¡ie okno (_top)","targetSelf":"To isté okno (_self)","targetParent":"RodiÄovské okno (_parent)","langDirLTR":"Zľava doprava (LTR)","langDirRTL":"Sprava doľava (RTL)","styles":"Å týl","cssClasses":"Triedy Å¡týlu","width":"Å Ãrka","height":"Výška","align":"Zarovnanie","left":"Vľavo","right":"Vpravo","center":"Na stred","justify":"Do bloku","alignLeft":"ZarovnaÅ¥ vľavo","alignRight":"ZarovnaÅ¥ vpravo","alignCenter":"ZarovnaÅ¥ na stred","alignTop":"Nahor","alignMiddle":"Na stred","alignBottom":"Dole","alignNone":"Žiadne","invalidValue":"Neplatná hodnota.","invalidHeight":"Výška musà byÅ¥ ÄÃslo.","invalidWidth":"Å Ãrka musà byÅ¥ ÄÃslo.","invalidLength":"Hodnota uvedená v poli \"%1\" musà byÅ¥ kladné ÄÃslo a s platnou mernou jednotkou (%2), alebo bez nej.","invalidCssLength":"Å pecifikovaná hodnota pre pole \"%1\" musà byÅ¥ kladné ÄÃslo s alebo bez platnej CSS mernej jednotky (px, %, in, cm, mm, em, ex, pt alebo pc).","invalidHtmlLength":"Å pecifikovaná hodnota pre pole \"%1\" musà byÅ¥ kladné ÄÃslo s alebo bez platnej HTML mernej jednotky (px alebo %).","invalidInlineStyle":"Zadaná hodnota pre inline Å¡týl musà pozostávaÅ¥ s jedného, alebo viac dvojÃc formátu \"názov: hodnota\", oddelených bodkoÄiarkou.","cssLengthTooltip":"Vložte ÄÃslo pre hodnotu v pixeloch alebo ÄÃslo so správnou CSS jednotou (px, %, in, cm, mm, em, ex, pt alebo pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedostupný</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"MedzernÃk","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Klávesová skratka","optionDefault":"Predvolený"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/sl.js b/core/assets/vendor/ckeditor/lang/sl.js index 97b788f9ef55..f23f2212d496 100644 --- a/core/assets/vendor/ckeditor/lang/sl.js +++ b/core/assets/vendor/ckeditor/lang/sl.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['sl']={"widget":{"move":"Kliknite in povlecite, da premaknete","label":"%1 widget"},"undo":{"redo":"Uveljavi","undo":"Razveljavi"},"toolbar":{"toolbarCollapse":"SkrÄi orodno vrstico","toolbarExpand":"RazÅ¡iri orodno vrstico","toolbarGroups":{"document":"Dokument","clipboard":"OdložiÅ¡Äe/Razveljavi","editing":"Urejanje","forms":"Obrazci","basicstyles":"Osnovni slogi","paragraph":"Odstavek","links":"Povezave","insert":"Vstavi","styles":"Slogi","colors":"Barve","tools":"Orodja"},"toolbars":"Orodne vrstice urejevalnika"},"table":{"border":"Velikost obrobe","caption":"Napis","cell":{"menu":"Celica","insertBefore":"Vstavi celico pred","insertAfter":"Vstavi celico za","deleteCell":"IzbriÅ¡i celice","merge":"Združi celice","mergeRight":"Združi desno","mergeDown":"Združi navzdol","splitHorizontal":"Razdeli celico vodoravno","splitVertical":"Razdeli celico navpiÄno","title":"Lastnosti celice","cellType":"Vrsta celice","rowSpan":"Razpon vrstic","colSpan":"Razpon stolpcev","wordWrap":"Prelom besedila","hAlign":"Vodoravna poravnava","vAlign":"NavpiÄna poravnava","alignBaseline":"Osnovnica","bgColor":"Barva ozadja","borderColor":"Barva obrobe","data":"Podatki","header":"Glava","yes":"Da","no":"Ne","invalidWidth":"Å irina celice mora biti Å¡tevilo.","invalidHeight":"ViÅ¡ina celice mora biti Å¡tevilo.","invalidRowSpan":"Razpon vrstic mora biti celo Å¡tevilo.","invalidColSpan":"Razpon stolpcev mora biti celo Å¡tevilo.","chooseColor":"Izberi"},"cellPad":"Odmik znotraj celic","cellSpace":"Razmik med celicami","column":{"menu":"Stolpec","insertBefore":"Vstavi stolpec pred","insertAfter":"Vstavi stolpec za","deleteColumn":"IzbriÅ¡i stolpce"},"columns":"Stolpci","deleteTable":"IzbriÅ¡i tabelo","headers":"Glave","headersBoth":"Oboje","headersColumn":"Prvi stolpec","headersNone":"Brez","headersRow":"Prva vrstica","heightUnit":"height unit","invalidBorder":"Å irina obrobe mora biti Å¡tevilo.","invalidCellPadding":"Odmik znotraj celic mora biti pozitivno Å¡tevilo.","invalidCellSpacing":"Razmik med celicami mora biti pozitivno Å¡tevilo.","invalidCols":"Å tevilo stolpcev mora biti veÄje od 0.","invalidHeight":"ViÅ¡ina tabele mora biti Å¡tevilo.","invalidRows":"Å tevilo vrstic mora biti veÄje od 0.","invalidWidth":"Å irina tabele mora biti Å¡tevilo.","menu":"Lastnosti tabele","row":{"menu":"Vrstica","insertBefore":"Vstavi vrstico pred","insertAfter":"Vstavi vrstico za","deleteRow":"IzbriÅ¡i vrstice"},"rows":"Vrstice","summary":"Povzetek","title":"Lastnosti tabele","toolbar":"Tabela","widthPc":"odstotkov","widthPx":"pik","widthUnit":"enota Å¡irine"},"stylescombo":{"label":"Slog","panelTitle":"Oblikovalni Stili","panelTitle1":"Slogi odstavkov","panelTitle2":"Slogi besedila","panelTitle3":"Slogi objektov"},"specialchar":{"options":"Možnosti posebnih znakov","title":"Izberi posebni znak","toolbar":"Vstavi posebni znak"},"sourcedialog":{"toolbar":"Izvorna koda","title":"Izvorna koda"},"sourcearea":{"toolbar":"Izvorna koda"},"showblocks":{"toolbar":"Prikaži ograde"},"removeformat":{"toolbar":"Odstrani oblikovanje"},"pastetext":{"button":"Prilepi kot golo besedilo","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Prilepi kot golo besedilo"},"pastefromword":{"confirmCleanup":"Besedilo, ki ga želite prilepiti, je kopirano iz Worda. Ali ga želite oÄistiti, preden ga prilepite?","error":"Ni bilo mogoÄe oÄistiti prilepljenih podatkov zaradi notranje napake","title":"Prilepi iz Worda","toolbar":"Prilepi iz Worda"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimiraj","minimize":"Minimiraj"},"magicline":{"title":"Vstavite odstavek tukaj"},"list":{"bulletedlist":"Vstavi/odstrani neoÅ¡tevilÄen seznam","numberedlist":"Vstavi/odstrani oÅ¡tevilÄen seznam"},"language":{"button":"Nastavi jezik","remove":"Odstrani jezik"},"indent":{"indent":"PoveÄaj zamik","outdent":"ZmanjÅ¡aj zamik"},"image2":{"alt":"Nadomestno besedilo","btnUpload":"PoÅ¡lji na strežnik","captioned":"Slika z napisom","captionPlaceholder":"Napis","infoTab":"Podatki o sliki","lockRatio":"Zakleni razmerje","menu":"Lastnosti slike","pathName":"slika","pathNameCaption":"napis","resetSize":"Ponastavi velikost","resizer":"Kliknite in povlecite, da spremenite velikost","title":"Lastnosti slike","uploadTab":"Naloži","urlMissing":"Manjka vir (URL) slike.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Vstavi vodoravno Ärto"},"format":{"label":"Oblika","panelTitle":"Oblika odstavka","tag_address":"Napis","tag_div":"Navaden (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Navaden","tag_pre":"Oblikovan"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Pot elementov","eleTitle":"Element %1"},"contextmenu":{"options":"Možnosti kontekstnega menija"},"clipboard":{"copy":"Kopiraj","copyError":"Varnostne nastavitve brskalnika ne dopuÅ¡Äajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Varnostne nastavitve brskalnika ne dopuÅ¡Äajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).","paste":"Prilepi","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Prilepi obmoÄje","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Citat"},"basicstyles":{"bold":"Krepko","italic":"LežeÄe","strike":"PreÄrtano","subscript":"Podpisano","superscript":"Nadpisano","underline":"PodÄrtano"},"about":{"copy":"Copyright © $1. Vse pravice pridržane.","dlgTitle":"O programu CKEditor 4","moreInfo":"Za informacije o licenciranju prosimo obiÅ¡Äite naÅ¡o spletno stran:"},"editor":"Urejevalnik obogatenega besedila","editorPanel":"PloÅ¡Äa urejevalnika obogatenega besedila","common":{"editorHelp":"Pritisnite ALT 0 za pomoÄ","browseServer":"Prebrskaj na strežniku","url":"URL","protocol":"Protokol","upload":"Naloži","uploadSubmit":"PoÅ¡lji na strežnik","image":"Slika","flash":"Flash","form":"Obrazec","checkbox":"Potrditveno polje","radio":"Izbirno polje","textField":"Besedilno polje","textarea":"Besedilno obmoÄje","hiddenField":"Skrito polje","button":"Gumb","select":"Spustno polje","imageButton":"Slikovni gumb","notSet":"<ni doloÄen>","id":"Id","name":"Ime","langDir":"Smer jezika","langDirLtr":"Od leve proti desni (LTR)","langDirRtl":"Od desne proti levi (RTL)","langCode":"Koda jezika","longDescr":"Dolg opis URL-ja","cssClass":"Razredi slogovne predloge","advisoryTitle":"Predlagani naslov","cssStyle":"Slog","ok":"V redu","cancel":"PrekliÄi","close":"Zapri","preview":"Predogled","resize":"Potegni za spremembo velikosti","generalTab":"SploÅ¡no","advancedTab":"Napredno","validateNumberFailed":"Vrednost ni Å¡tevilo.","confirmNewPage":"Vse neshranjene spremembe vsebine bodo izgubljene. Ali res želite naložiti novo stran?","confirmCancel":"Spremenili ste nekaj možnosti. Ali res želite zapreti okno?","options":"Možnosti","target":"Cilj","targetNew":"Novo okno (_blank)","targetTop":"Vrhovno okno (_top)","targetSelf":"Isto okno (_self)","targetParent":"StarÅ¡evsko okno (_parent)","langDirLTR":"Od leve proti desni (LTR)","langDirRTL":"Od desne proti levi (RTL)","styles":"Slog","cssClasses":"Razredi slogovne predloge","width":"Å irina","height":"ViÅ¡ina","align":"Poravnava","left":"Levo","right":"Desno","center":"Sredinsko","justify":"Obojestranska poravnava","alignLeft":"Leva poravnava","alignRight":"Desna poravnava","alignCenter":"Align Center","alignTop":"Na vrh","alignMiddle":"V sredino","alignBottom":"Na dno","alignNone":"Brez poravnave","invalidValue":"Neveljavna vrednost.","invalidHeight":"ViÅ¡ina mora biti Å¡tevilo.","invalidWidth":"Å irina mora biti Å¡tevilo.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Vrednost, doloÄena za polje »%1«, mora biti pozitivno Å¡tevilo z ali brez veljavne CSS-enote za merjenje (px, %, in, cm, mm, em, ex, pt ali pc).","invalidHtmlLength":"Vrednost, doloÄena za polje »%1«, mora biti pozitivno Å¡tevilo z ali brez veljavne HTML-enote za merjenje (px ali %).","invalidInlineStyle":"Vrednost, doloÄena za slog v vrstici, mora biti sestavljena iz ene ali veÄ dvojic oblike »ime : vrednost«, loÄenih s podpiÄji.","cssLengthTooltip":"Vnesite Å¡tevilo za vrednost v slikovnih pikah ali Å¡tevilo z veljavno CSS-enoto (px, %, in, cm, mm, em, ex, pt ali pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedosegljiv</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['sl']={"widget":{"move":"Kliknite in povlecite, da premaknete","label":"%1 widget"},"undo":{"redo":"Uveljavi","undo":"Razveljavi"},"toolbar":{"toolbarCollapse":"SkrÄi orodno vrstico","toolbarExpand":"RazÅ¡iri orodno vrstico","toolbarGroups":{"document":"Dokument","clipboard":"OdložiÅ¡Äe/Razveljavi","editing":"Urejanje","forms":"Obrazci","basicstyles":"Osnovni slogi","paragraph":"Odstavek","links":"Povezave","insert":"Vstavi","styles":"Slogi","colors":"Barve","tools":"Orodja"},"toolbars":"Orodne vrstice urejevalnika"},"table":{"border":"Velikost obrobe","caption":"Napis","cell":{"menu":"Celica","insertBefore":"Vstavi celico pred","insertAfter":"Vstavi celico za","deleteCell":"IzbriÅ¡i celice","merge":"Združi celice","mergeRight":"Združi desno","mergeDown":"Združi navzdol","splitHorizontal":"Razdeli celico vodoravno","splitVertical":"Razdeli celico navpiÄno","title":"Lastnosti celice","cellType":"Vrsta celice","rowSpan":"Razpon vrstic","colSpan":"Razpon stolpcev","wordWrap":"Prelom besedila","hAlign":"Vodoravna poravnava","vAlign":"NavpiÄna poravnava","alignBaseline":"Osnovnica","bgColor":"Barva ozadja","borderColor":"Barva obrobe","data":"Podatki","header":"Glava","yes":"Da","no":"Ne","invalidWidth":"Å irina celice mora biti Å¡tevilo.","invalidHeight":"ViÅ¡ina celice mora biti Å¡tevilo.","invalidRowSpan":"Razpon vrstic mora biti celo Å¡tevilo.","invalidColSpan":"Razpon stolpcev mora biti celo Å¡tevilo.","chooseColor":"Izberi"},"cellPad":"Odmik znotraj celic","cellSpace":"Razmik med celicami","column":{"menu":"Stolpec","insertBefore":"Vstavi stolpec pred","insertAfter":"Vstavi stolpec za","deleteColumn":"IzbriÅ¡i stolpce"},"columns":"Stolpci","deleteTable":"IzbriÅ¡i tabelo","headers":"Glave","headersBoth":"Oboje","headersColumn":"Prvi stolpec","headersNone":"Brez","headersRow":"Prva vrstica","heightUnit":"height unit","invalidBorder":"Å irina obrobe mora biti Å¡tevilo.","invalidCellPadding":"Odmik znotraj celic mora biti pozitivno Å¡tevilo.","invalidCellSpacing":"Razmik med celicami mora biti pozitivno Å¡tevilo.","invalidCols":"Å tevilo stolpcev mora biti veÄje od 0.","invalidHeight":"ViÅ¡ina tabele mora biti Å¡tevilo.","invalidRows":"Å tevilo vrstic mora biti veÄje od 0.","invalidWidth":"Å irina tabele mora biti Å¡tevilo.","menu":"Lastnosti tabele","row":{"menu":"Vrstica","insertBefore":"Vstavi vrstico pred","insertAfter":"Vstavi vrstico za","deleteRow":"IzbriÅ¡i vrstice"},"rows":"Vrstice","summary":"Povzetek","title":"Lastnosti tabele","toolbar":"Tabela","widthPc":"odstotkov","widthPx":"pik","widthUnit":"enota Å¡irine"},"stylescombo":{"label":"Slog","panelTitle":"Oblikovalni Stili","panelTitle1":"Slogi odstavkov","panelTitle2":"Slogi besedila","panelTitle3":"Slogi objektov"},"specialchar":{"options":"Možnosti posebnih znakov","title":"Izberi posebni znak","toolbar":"Vstavi posebni znak"},"sourcedialog":{"toolbar":"Izvorna koda","title":"Izvorna koda"},"sourcearea":{"toolbar":"Izvorna koda"},"showblocks":{"toolbar":"Prikaži ograde"},"removeformat":{"toolbar":"Odstrani oblikovanje"},"pastetext":{"button":"Prilepi kot golo besedilo","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Prilepi kot golo besedilo"},"pastefromword":{"confirmCleanup":"Besedilo, ki ga želite prilepiti, je kopirano iz Worda. Ali ga želite oÄistiti, preden ga prilepite?","error":"Ni bilo mogoÄe oÄistiti prilepljenih podatkov zaradi notranje napake","title":"Prilepi iz Worda","toolbar":"Prilepi iz Worda"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Maksimiraj","minimize":"Minimiraj"},"magicline":{"title":"Vstavite odstavek tukaj"},"list":{"bulletedlist":"Vstavi/odstrani neoÅ¡tevilÄen seznam","numberedlist":"Vstavi/odstrani oÅ¡tevilÄen seznam"},"language":{"button":"Nastavi jezik","remove":"Odstrani jezik"},"indent":{"indent":"PoveÄaj zamik","outdent":"ZmanjÅ¡aj zamik"},"image2":{"alt":"Nadomestno besedilo","btnUpload":"PoÅ¡lji na strežnik","captioned":"Slika z napisom","captionPlaceholder":"Napis","infoTab":"Podatki o sliki","lockRatio":"Zakleni razmerje","menu":"Lastnosti slike","pathName":"slika","pathNameCaption":"napis","resetSize":"Ponastavi velikost","resizer":"Kliknite in povlecite, da spremenite velikost","title":"Lastnosti slike","uploadTab":"Naloži","urlMissing":"Manjka vir (URL) slike.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Vstavi vodoravno Ärto"},"format":{"label":"Oblika","panelTitle":"Oblika odstavka","tag_address":"Napis","tag_div":"Navaden (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Navaden","tag_pre":"Oblikovan"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Pot elementov","eleTitle":"Element %1"},"contextmenu":{"options":"Možnosti kontekstnega menija"},"clipboard":{"copy":"Kopiraj","copyError":"Varnostne nastavitve brskalnika ne dopuÅ¡Äajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).","cut":"Izreži","cutError":"Varnostne nastavitve brskalnika ne dopuÅ¡Äajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).","paste":"Prilepi","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Prilepi obmoÄje","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Citat"},"basicstyles":{"bold":"Krepko","italic":"LežeÄe","strike":"PreÄrtano","subscript":"Podpisano","superscript":"Nadpisano","underline":"PodÄrtano"},"about":{"copy":"Copyright © $1. Vse pravice pridržane.","dlgTitle":"O programu CKEditor 4","moreInfo":"Za informacije o licenciranju prosimo obiÅ¡Äite naÅ¡o spletno stran:"},"editor":"Urejevalnik obogatenega besedila","editorPanel":"PloÅ¡Äa urejevalnika obogatenega besedila","common":{"editorHelp":"Pritisnite ALT 0 za pomoÄ","browseServer":"Prebrskaj na strežniku","url":"URL","protocol":"Protokol","upload":"Naloži","uploadSubmit":"PoÅ¡lji na strežnik","image":"Slika","form":"Obrazec","checkbox":"Potrditveno polje","radio":"Izbirno polje","textField":"Besedilno polje","textarea":"Besedilno obmoÄje","hiddenField":"Skrito polje","button":"Gumb","select":"Spustno polje","imageButton":"Slikovni gumb","notSet":"<ni doloÄen>","id":"Id","name":"Ime","langDir":"Smer jezika","langDirLtr":"Od leve proti desni (LTR)","langDirRtl":"Od desne proti levi (RTL)","langCode":"Koda jezika","longDescr":"Dolg opis URL-ja","cssClass":"Razredi slogovne predloge","advisoryTitle":"Predlagani naslov","cssStyle":"Slog","ok":"V redu","cancel":"PrekliÄi","close":"Zapri","preview":"Predogled","resize":"Potegni za spremembo velikosti","generalTab":"SploÅ¡no","advancedTab":"Napredno","validateNumberFailed":"Vrednost ni Å¡tevilo.","confirmNewPage":"Vse neshranjene spremembe vsebine bodo izgubljene. Ali res želite naložiti novo stran?","confirmCancel":"Spremenili ste nekaj možnosti. Ali res želite zapreti okno?","options":"Možnosti","target":"Cilj","targetNew":"Novo okno (_blank)","targetTop":"Vrhovno okno (_top)","targetSelf":"Isto okno (_self)","targetParent":"StarÅ¡evsko okno (_parent)","langDirLTR":"Od leve proti desni (LTR)","langDirRTL":"Od desne proti levi (RTL)","styles":"Slog","cssClasses":"Razredi slogovne predloge","width":"Å irina","height":"ViÅ¡ina","align":"Poravnava","left":"Levo","right":"Desno","center":"Sredinsko","justify":"Obojestranska poravnava","alignLeft":"Leva poravnava","alignRight":"Desna poravnava","alignCenter":"Align Center","alignTop":"Na vrh","alignMiddle":"V sredino","alignBottom":"Na dno","alignNone":"Brez poravnave","invalidValue":"Neveljavna vrednost.","invalidHeight":"ViÅ¡ina mora biti Å¡tevilo.","invalidWidth":"Å irina mora biti Å¡tevilo.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Vrednost, doloÄena za polje »%1«, mora biti pozitivno Å¡tevilo z ali brez veljavne CSS-enote za merjenje (px, %, in, cm, mm, em, ex, pt ali pc).","invalidHtmlLength":"Vrednost, doloÄena za polje »%1«, mora biti pozitivno Å¡tevilo z ali brez veljavne HTML-enote za merjenje (px ali %).","invalidInlineStyle":"Vrednost, doloÄena za slog v vrstici, mora biti sestavljena iz ene ali veÄ dvojic oblike »ime : vrednost«, loÄenih s podpiÄji.","cssLengthTooltip":"Vnesite Å¡tevilo za vrednost v slikovnih pikah ali Å¡tevilo z veljavno CSS-enoto (px, %, in, cm, mm, em, ex, pt ali pc).","unavailable":"%1<span class=\"cke_accessibility\">, nedosegljiv</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/sq.js b/core/assets/vendor/ckeditor/lang/sq.js index e5b0f74b094d..732f19c2e405 100644 --- a/core/assets/vendor/ckeditor/lang/sq.js +++ b/core/assets/vendor/ckeditor/lang/sq.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['sq']={"widget":{"move":"Kliko dhe tërhiqe për ta lëvizur","label":"%1 vegël"},"undo":{"redo":"Ribëje","undo":"Rizhbëje"},"toolbar":{"toolbarCollapse":"Zvogëlo Shiritin","toolbarExpand":"Zgjero Shiritin","toolbarGroups":{"document":"Dokumenti","clipboard":"Tabela Punës/Ribëje","editing":"Duke Redaktuar","forms":"Formularët","basicstyles":"Stilet Bazë","paragraph":"Paragrafi","links":"Nyjat","insert":"Shto","styles":"Stilet","colors":"Ngjyrat","tools":"Mjetet"},"toolbars":"Shiritat e Redaktuesit"},"table":{"border":"Madhësia e kornizave","caption":"Titull","cell":{"menu":"Qeli","insertBefore":"Shto Qeli Para","insertAfter":"Shto Qeli Prapa","deleteCell":"Gris Qelitë","merge":"Bashko Qelitë","mergeRight":"Bashko Djathtas","mergeDown":"Bashko Poshtë","splitHorizontal":"Ndaj Qelinë Horizontalisht","splitVertical":"Ndaj Qelinë Vertikalisht","title":"Rekuizitat e Qelisë","cellType":"Lloji i Qelisë","rowSpan":"Bashko Rreshtat","colSpan":"Bashko Kolonat","wordWrap":"Fund i Fjalës","hAlign":"Bashkimi Horizontal","vAlign":"Bashkimi Vertikal","alignBaseline":"Baza","bgColor":"Ngjyra e Prapavijës","borderColor":"Ngjyra e Kornizave","data":"Të dhënat","header":"Koka","yes":"Po","no":"Jo","invalidWidth":"Gjerësia e qelisë duhet të jetë numër.","invalidHeight":"Lartësia e qelisë duhet të jetë numër.","invalidRowSpan":"Hapësira e rreshtave duhet të jetë numër i plotë.","invalidColSpan":"Hapësira e kolonave duhet të jetë numër i plotë.","chooseColor":"Përzgjidh"},"cellPad":"Mbushja e qelisë","cellSpace":"Hapësira e qelisë","column":{"menu":"Kolona","insertBefore":"Vendos Kolonë Para","insertAfter":"Vendos Kolonë Pas","deleteColumn":"Gris Kolonat"},"columns":"Kolonat","deleteTable":"Gris Tabelën","headers":"Kokat","headersBoth":"Së bashku","headersColumn":"Kolona e parë","headersNone":"Asnjë","headersRow":"Rreshti i Parë","heightUnit":"height unit","invalidBorder":"Madhësia e kufinjve duhet të jetë numër.","invalidCellPadding":"Mbushja e qelisë duhet të jetë numër pozitiv.","invalidCellSpacing":"Hapësira e qelisë duhet të jetë numër pozitiv.","invalidCols":"Numri i kolonave duhet të jetë numër më i madh se 0.","invalidHeight":"Lartësia e tabelës duhet të jetë numër.","invalidRows":"Numri i rreshtave duhet të jetë numër më i madh se 0.","invalidWidth":"Gjerësia e tabelës duhet të jetë numër.","menu":"Karakteristikat e Tabelës","row":{"menu":"Rreshti","insertBefore":"Shto Rresht Para","insertAfter":"Shto Rresht Prapa","deleteRow":"Gris Rreshtat"},"rows":"Rreshtat","summary":"Përmbledhje","title":"Karakteristikat e Tabelës","toolbar":"Tabela","widthPc":"përqind","widthPx":"piksell","widthUnit":"njësia e gjerësisë"},"stylescombo":{"label":"Stilet","panelTitle":"Formatimi i Stileve","panelTitle1":"Stilet e Bllokut","panelTitle2":"Stilet e Brendshme","panelTitle3":"Stilet e Objektit"},"specialchar":{"options":"Mundësitë për Karaktere Speciale","title":"Përzgjidh Karakter Special","toolbar":"Vendos Karakter Special"},"sourcedialog":{"toolbar":"Burimi","title":"Burimi"},"sourcearea":{"toolbar":"Burimi"},"showblocks":{"toolbar":"Shfaq Blloqet"},"removeformat":{"toolbar":"Largo Formatin"},"pastetext":{"button":"Hidhe si tekst të thjeshtë","pasteNotification":"Shtyp %1 për të hedhur tekstin. Shfletuesi juaj nuk mbështetë hedhjen me pullë shiriti ose alternativën e menysë kontekstuale.","title":"Hidhe si Tekst të Thjeshtë"},"pastefromword":{"confirmCleanup":"Teksti që dëshironi të e hidhni siç duket është kopjuar nga Word-i. Dëshironi të e pastroni para se të e hidhni?","error":"Nuk ishte e mundur të fshiheshin të dhënat e hedhura për shkak të një gabimi të brendshëm","title":"Hidhe nga Word-i","toolbar":"Hidhe nga Word-i"},"notification":{"closed":"Njoftimi është mbyllur."},"maximize":{"maximize":"Zmadho","minimize":"Zvogëlo"},"magicline":{"title":"Shto paragrafin këtu"},"list":{"bulletedlist":"Vendos/Largo Listën me Pika","numberedlist":"Vendos/Largo Listën me Numra"},"language":{"button":"Përzgjidhni gjuhën","remove":"Largoni gjuhën"},"indent":{"indent":"Rrite Identin","outdent":"Zvogëlo Identin"},"image2":{"alt":"Tekst Alternativ","btnUpload":"Dërgo në server","captioned":"Foto e titulluar","captionPlaceholder":"Titulli","infoTab":"Informacione mbi Fotografinë","lockRatio":"Mbyll Racionin","menu":"Karakteristikat e Fotografisë","pathName":"foto","pathNameCaption":"titull","resetSize":"Rikthe Madhësinë","resizer":"Kliko dhe tërhiqe për ndryshim të madhësisë","title":"Karakteristikat e Fotografisë","uploadTab":"Ngarko","urlMissing":"Mungon URL e burimit të fotografisë.","altMissing":"Teksti alternativ mungon."},"horizontalrule":{"toolbar":"Shto Vijë Horizontale"},"format":{"label":"Formati","panelTitle":"Formati i Paragrafit","tag_address":"Adresa","tag_div":"Normal (DIV)","tag_h1":"Titulli 1","tag_h2":"Titulli 2","tag_h3":"Titulli 3","tag_h4":"Titulli 4","tag_h5":"Titulli 5","tag_h6":"Titulli 6","tag_p":"Normal","tag_pre":"Formatuar"},"filetools":{"loadError":"Gabimi u paraqit gjatë leximit të skedës.","networkError":"Gabimi në rrjetë u paraqitë gjatë ngarkimit të skedës.","httpError404":"Gabimi në HTTP u paraqit gjatë ngarkimit të skedës (404: Skeda nuk u gjetë).","httpError403":"Gabimi në HTTP u paraqitë gjatë ngarkimit të skedës (403: E ndaluar).","httpError":"Gabimi në HTTP u paraqit gjatë ngarkimit të skedës (gjendja e gabimit: %1).","noUrlError":"URL e ngarkimit nuk është vendosur.","responseError":"Përgjigje e gabuar e serverit."},"elementspath":{"eleLabel":"Rruga e elementeve","eleTitle":"%1 element"},"contextmenu":{"options":"Mundësitë e Menysë së Kontekstit"},"clipboard":{"copy":"Kopjo","copyError":"Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e kopjimit. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+C).","cut":"Preje","cutError":"Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e prerjes. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+X).","paste":"Hidhe","pasteNotification":"Shtyp %1 për të hedhur tekstin. Shfletuesi juaj nuk mbështetë hedhjen me pullë shiriti ose alternativën e menysë kontekstuale.","pasteArea":"Hapësira e Hedhjes","pasteMsg":"Hidh përmbajtjen brenda hapësirës më poshtë dhe shtyp MIRË."},"blockquote":{"toolbar":"Thonjëzat"},"basicstyles":{"bold":"Trash","italic":"Pjerrët","strike":"Nëpërmes","subscript":"Nën-skriptë","superscript":"Super-skriptë","underline":"Nënvijëzuar"},"about":{"copy":"Të drejtat e autorit © $1. Të gjitha të drejtat e rezervuara.","dlgTitle":"Rreth CKEditor 4","moreInfo":"Për informacione rreth licencave shih faqen tonë:"},"editor":"Redaktues i Pasur Teksti","editorPanel":"Paneli i redaktuesit të tekstit të plotë","common":{"editorHelp":"Shtyp ALT 0 për ndihmë","browseServer":"Shfleto në Server","url":"URL","protocol":"Protokolli","upload":"Ngarko","uploadSubmit":"E dërgo në server","image":"Foto","flash":"Objekt flash","form":"Formulari","checkbox":"Kuti përzgjedhjeje","radio":"Pullë përzgjedhjeje","textField":"Fushë teksti","textarea":"Hapësirë teksti","hiddenField":"Fushë e fshehur","button":"Pullë","select":"Fusha e përzgjedhjeve","imageButton":"Pullë fotografie","notSet":"<not set>","id":"Id","name":"Emri","langDir":"Drejtim gjuhe","langDirLtr":"Nga e majta në të djathtë (LTR)","langDirRtl":"Nga e djathta në të majtë (RTL)","langCode":"Kodi i Gjuhës","longDescr":"URL e përshkrimit të hollësishëm","cssClass":"CSS Klasat","advisoryTitle":"Titulli Konsultativ","cssStyle":"Stili","ok":"Mirë","cancel":"Anulo","close":"Mbyll","preview":"Parashih","resize":"Ndrysho madhësinë","generalTab":"Të përgjithshme","advancedTab":"Të përparuara","validateNumberFailed":"Kjo vlerë nuk është numër.","confirmNewPage":"Çdo ndryshim që nuk është ruajtur do humbasë. Je i sigurt që dëshiron të hapsh faqe të re?","confirmCancel":"Ke ndryshuar ca mundësi. Je i sigurt që dëshiron ta mbyllësh dritaren?","options":"Mundësitë","target":"Objektivi","targetNew":"Dritare e re (_blank)","targetTop":"Dritare në plan të parë (_top)","targetSelf":"E njëjta dritare (_self)","targetParent":"Dritarja prind (_parent)","langDirLTR":"Nga e majta në të djathë (LTR)","langDirRTL":"Nga e djathta në të majtë (RTL)","styles":"Stili","cssClasses":"CSS Klasat","width":"Gjerësia","height":"Lartësia","align":"Rreshtimi","left":"Majtas","right":"Djathtas","center":"Në mes","justify":"Zgjero","alignLeft":"Rreshto majtas","alignRight":"Rreshto Djathtas","alignCenter":"Rreshto në mes","alignTop":"Lart","alignMiddle":"Në mes","alignBottom":"Poshtë","alignNone":"Asnjë","invalidValue":"Vlerë e pavlefshme","invalidHeight":"Lartësia duhet të jetë një numër","invalidWidth":"Gjerësia duhet të jetë një numër","invalidLength":"Vlera e përcaktuar për fushën \"%1\" duhet të jetë pozitive me ose pa njësi matëse me vlerë (%2).","invalidCssLength":"Vlera e fushës \"%1\" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme CSS (px, %, in, cm, mm, em, ex, pt ose pc).","invalidHtmlLength":"Vlera e fushës \"%1\" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme HTML (px ose %)","invalidInlineStyle":"Vlera e përcaktuar për stilin e vijëzuar duhet përmbajtur një ose më shumë vlera me format \"emër : vlerë\", të ndara me pikëpresje.","cssLengthTooltip":"Shto një numër për vlerën në piksel ose një numër me njësi të vlefshme CSS (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, i padisponueshëm</span>","keyboard":{"8":"Prapa","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Hapësirë","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Urdhri"},"keyboardShortcut":"Shkurtesat e tastierës","optionDefault":"Parazgjedhur"}}; \ No newline at end of file +CKEDITOR.lang['sq']={"widget":{"move":"Kliko dhe tërhiqe për ta lëvizur","label":"%1 vegël"},"undo":{"redo":"Ribëje","undo":"Rizhbëje"},"toolbar":{"toolbarCollapse":"Zvogëlo Shiritin","toolbarExpand":"Zgjero Shiritin","toolbarGroups":{"document":"Dokumenti","clipboard":"Tabela Punës/Ribëje","editing":"Duke Redaktuar","forms":"Formularët","basicstyles":"Stilet Bazë","paragraph":"Paragrafi","links":"Nyjat","insert":"Shto","styles":"Stilet","colors":"Ngjyrat","tools":"Mjetet"},"toolbars":"Shiritat e Redaktuesit"},"table":{"border":"Madhësia e kornizave","caption":"Titull","cell":{"menu":"Qeli","insertBefore":"Shto Qeli Para","insertAfter":"Shto Qeli Prapa","deleteCell":"Gris Qelitë","merge":"Bashko Qelitë","mergeRight":"Bashko Djathtas","mergeDown":"Bashko Poshtë","splitHorizontal":"Ndaj Qelinë Horizontalisht","splitVertical":"Ndaj Qelinë Vertikalisht","title":"Rekuizitat e Qelisë","cellType":"Lloji i Qelisë","rowSpan":"Bashko Rreshtat","colSpan":"Bashko Kolonat","wordWrap":"Fund i Fjalës","hAlign":"Bashkimi Horizontal","vAlign":"Bashkimi Vertikal","alignBaseline":"Baza","bgColor":"Ngjyra e Prapavijës","borderColor":"Ngjyra e Kornizave","data":"Të dhënat","header":"Koka","yes":"Po","no":"Jo","invalidWidth":"Gjerësia e qelisë duhet të jetë numër.","invalidHeight":"Lartësia e qelisë duhet të jetë numër.","invalidRowSpan":"Hapësira e rreshtave duhet të jetë numër i plotë.","invalidColSpan":"Hapësira e kolonave duhet të jetë numër i plotë.","chooseColor":"Përzgjidh"},"cellPad":"Mbushja e qelisë","cellSpace":"Hapësira e qelisë","column":{"menu":"Kolona","insertBefore":"Vendos Kolonë Para","insertAfter":"Vendos Kolonë Pas","deleteColumn":"Gris Kolonat"},"columns":"Kolonat","deleteTable":"Gris Tabelën","headers":"Kokat","headersBoth":"Së bashku","headersColumn":"Kolona e parë","headersNone":"Asnjë","headersRow":"Rreshti i Parë","heightUnit":"height unit","invalidBorder":"Madhësia e kufinjve duhet të jetë numër.","invalidCellPadding":"Mbushja e qelisë duhet të jetë numër pozitiv.","invalidCellSpacing":"Hapësira e qelisë duhet të jetë numër pozitiv.","invalidCols":"Numri i kolonave duhet të jetë numër më i madh se 0.","invalidHeight":"Lartësia e tabelës duhet të jetë numër.","invalidRows":"Numri i rreshtave duhet të jetë numër më i madh se 0.","invalidWidth":"Gjerësia e tabelës duhet të jetë numër.","menu":"Karakteristikat e Tabelës","row":{"menu":"Rreshti","insertBefore":"Shto Rresht Para","insertAfter":"Shto Rresht Prapa","deleteRow":"Gris Rreshtat"},"rows":"Rreshtat","summary":"Përmbledhje","title":"Karakteristikat e Tabelës","toolbar":"Tabela","widthPc":"përqind","widthPx":"piksell","widthUnit":"njësia e gjerësisë"},"stylescombo":{"label":"Stilet","panelTitle":"Formatimi i Stileve","panelTitle1":"Stilet e Bllokut","panelTitle2":"Stilet e Brendshme","panelTitle3":"Stilet e Objektit"},"specialchar":{"options":"Mundësitë për Karaktere Speciale","title":"Përzgjidh Karakter Special","toolbar":"Vendos Karakter Special"},"sourcedialog":{"toolbar":"Burimi","title":"Burimi"},"sourcearea":{"toolbar":"Burimi"},"showblocks":{"toolbar":"Shfaq Blloqet"},"removeformat":{"toolbar":"Largo Formatin"},"pastetext":{"button":"Hidhe si tekst të thjeshtë","pasteNotification":"Shtyp %1 për të hedhur tekstin. Shfletuesi juaj nuk mbështetë hedhjen me pullë shiriti ose alternativën e menysë kontekstuale.","title":"Hidhe si Tekst të Thjeshtë"},"pastefromword":{"confirmCleanup":"Teksti që dëshironi të e hidhni siç duket është kopjuar nga Word-i. Dëshironi të e pastroni para se të e hidhni?","error":"Nuk ishte e mundur të fshiheshin të dhënat e hedhura për shkak të një gabimi të brendshëm","title":"Hidhe nga Word-i","toolbar":"Hidhe nga Word-i"},"notification":{"closed":"Njoftimi është mbyllur."},"maximize":{"maximize":"Zmadho","minimize":"Zvogëlo"},"magicline":{"title":"Shto paragrafin këtu"},"list":{"bulletedlist":"Vendos/Largo Listën me Pika","numberedlist":"Vendos/Largo Listën me Numra"},"language":{"button":"Përzgjidhni gjuhën","remove":"Largoni gjuhën"},"indent":{"indent":"Rrite Identin","outdent":"Zvogëlo Identin"},"image2":{"alt":"Tekst Alternativ","btnUpload":"Dërgo në server","captioned":"Foto e titulluar","captionPlaceholder":"Titulli","infoTab":"Informacione mbi Fotografinë","lockRatio":"Mbyll Racionin","menu":"Karakteristikat e Fotografisë","pathName":"foto","pathNameCaption":"titull","resetSize":"Rikthe Madhësinë","resizer":"Kliko dhe tërhiqe për ndryshim të madhësisë","title":"Karakteristikat e Fotografisë","uploadTab":"Ngarko","urlMissing":"Mungon URL e burimit të fotografisë.","altMissing":"Teksti alternativ mungon."},"horizontalrule":{"toolbar":"Shto Vijë Horizontale"},"format":{"label":"Formati","panelTitle":"Formati i Paragrafit","tag_address":"Adresa","tag_div":"Normal (DIV)","tag_h1":"Titulli 1","tag_h2":"Titulli 2","tag_h3":"Titulli 3","tag_h4":"Titulli 4","tag_h5":"Titulli 5","tag_h6":"Titulli 6","tag_p":"Normal","tag_pre":"Formatuar"},"filetools":{"loadError":"Gabimi u paraqit gjatë leximit të skedës.","networkError":"Gabimi në rrjetë u paraqitë gjatë ngarkimit të skedës.","httpError404":"Gabimi në HTTP u paraqit gjatë ngarkimit të skedës (404: Skeda nuk u gjetë).","httpError403":"Gabimi në HTTP u paraqitë gjatë ngarkimit të skedës (403: E ndaluar).","httpError":"Gabimi në HTTP u paraqit gjatë ngarkimit të skedës (gjendja e gabimit: %1).","noUrlError":"URL e ngarkimit nuk është vendosur.","responseError":"Përgjigje e gabuar e serverit."},"elementspath":{"eleLabel":"Rruga e elementeve","eleTitle":"%1 element"},"contextmenu":{"options":"Mundësitë e Menysë së Kontekstit"},"clipboard":{"copy":"Kopjo","copyError":"Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e kopjimit. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+C).","cut":"Preje","cutError":"Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e prerjes. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+X).","paste":"Hidhe","pasteNotification":"Shtyp %1 për të hedhur tekstin. Shfletuesi juaj nuk mbështetë hedhjen me pullë shiriti ose alternativën e menysë kontekstuale.","pasteArea":"Hapësira e Hedhjes","pasteMsg":"Hidh përmbajtjen brenda hapësirës më poshtë dhe shtyp MIRË.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Thonjëzat"},"basicstyles":{"bold":"Trash","italic":"Pjerrët","strike":"Nëpërmes","subscript":"Nën-skriptë","superscript":"Super-skriptë","underline":"Nënvijëzuar"},"about":{"copy":"Të drejtat e autorit © $1. Të gjitha të drejtat e rezervuara.","dlgTitle":"Rreth CKEditor 4","moreInfo":"Për informacione rreth licencave shih faqen tonë:"},"editor":"Redaktues i Pasur Teksti","editorPanel":"Paneli i redaktuesit të tekstit të plotë","common":{"editorHelp":"Shtyp ALT 0 për ndihmë","browseServer":"Shfleto në Server","url":"URL","protocol":"Protokolli","upload":"Ngarko","uploadSubmit":"E dërgo në server","image":"Foto","form":"Formulari","checkbox":"Kuti përzgjedhjeje","radio":"Pullë përzgjedhjeje","textField":"Fushë teksti","textarea":"Hapësirë teksti","hiddenField":"Fushë e fshehur","button":"Pullë","select":"Fusha e përzgjedhjeve","imageButton":"Pullë fotografie","notSet":"<not set>","id":"Id","name":"Emri","langDir":"Drejtim gjuhe","langDirLtr":"Nga e majta në të djathtë (LTR)","langDirRtl":"Nga e djathta në të majtë (RTL)","langCode":"Kodi i Gjuhës","longDescr":"URL e përshkrimit të hollësishëm","cssClass":"CSS Klasat","advisoryTitle":"Titulli Konsultativ","cssStyle":"Stili","ok":"Mirë","cancel":"Anulo","close":"Mbyll","preview":"Parashih","resize":"Ndrysho madhësinë","generalTab":"Të përgjithshme","advancedTab":"Të përparuara","validateNumberFailed":"Kjo vlerë nuk është numër.","confirmNewPage":"Çdo ndryshim që nuk është ruajtur do humbasë. Je i sigurt që dëshiron të hapsh faqe të re?","confirmCancel":"Ke ndryshuar ca mundësi. Je i sigurt që dëshiron ta mbyllësh dritaren?","options":"Mundësitë","target":"Objektivi","targetNew":"Dritare e re (_blank)","targetTop":"Dritare në plan të parë (_top)","targetSelf":"E njëjta dritare (_self)","targetParent":"Dritarja prind (_parent)","langDirLTR":"Nga e majta në të djathë (LTR)","langDirRTL":"Nga e djathta në të majtë (RTL)","styles":"Stili","cssClasses":"CSS Klasat","width":"Gjerësia","height":"Lartësia","align":"Rreshtimi","left":"Majtas","right":"Djathtas","center":"Në mes","justify":"Zgjero","alignLeft":"Rreshto majtas","alignRight":"Rreshto Djathtas","alignCenter":"Rreshto në mes","alignTop":"Lart","alignMiddle":"Në mes","alignBottom":"Poshtë","alignNone":"Asnjë","invalidValue":"Vlerë e pavlefshme","invalidHeight":"Lartësia duhet të jetë një numër","invalidWidth":"Gjerësia duhet të jetë një numër","invalidLength":"Vlera e përcaktuar për fushën \"%1\" duhet të jetë pozitive me ose pa njësi matëse me vlerë (%2).","invalidCssLength":"Vlera e fushës \"%1\" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme CSS (px, %, in, cm, mm, em, ex, pt ose pc).","invalidHtmlLength":"Vlera e fushës \"%1\" duhet të jetë një numër pozitiv me apo pa njësi matëse të vlefshme HTML (px ose %)","invalidInlineStyle":"Vlera e përcaktuar për stilin e vijëzuar duhet përmbajtur një ose më shumë vlera me format \"emër : vlerë\", të ndara me pikëpresje.","cssLengthTooltip":"Shto një numër për vlerën në piksel ose një numër me njësi të vlefshme CSS (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, i padisponueshëm</span>","keyboard":{"8":"Prapa","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Hapësirë","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Urdhri"},"keyboardShortcut":"Shkurtesat e tastierës","optionDefault":"Parazgjedhur"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/sr-latn.js b/core/assets/vendor/ckeditor/lang/sr-latn.js index 3dae1c5383c0..c1ae16ec1bb9 100644 --- a/core/assets/vendor/ckeditor/lang/sr-latn.js +++ b/core/assets/vendor/ckeditor/lang/sr-latn.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['sr-latn']={"widget":{"move":"Kliknite i povucite da bi pomerali","label":"%1 modul"},"undo":{"redo":"Ponovi ","undo":"Vrati"},"toolbar":{"toolbarCollapse":"Zatvori alatnu traku","toolbarExpand":"Otvori alatnu traku","toolbarGroups":{"document":"Dokument","clipboard":"Clipboard/Vrati","editing":"Uredi","forms":"Obrasci","basicstyles":"Osnovni stilovi","paragraph":"Pasus","links":"Linkovi","insert":"Dodaj","styles":"Stilovi","colors":"Boje","tools":"Alatke"},"toolbars":"UredjivaÄ alatne trake"},"table":{"border":"VeliÄina okvira","caption":"Naslov tabele","cell":{"menu":"Ćelija","insertBefore":"Ubaci levo","insertAfter":"Ubaci desno","deleteCell":"ObriÅ¡i ćelije","merge":"Spoj ćelije","mergeRight":"Spolj ćelije desno","mergeDown":"Spolj Äelije na dole","splitHorizontal":"Razdvoji ćelije vodoravno","splitVertical":"Razdvoji ćelije uspravno","title":"Karakteristike ćelija","cellType":"Tip ćelija","rowSpan":"Spoj uzdužno","colSpan":"Spoj vodoravno","wordWrap":"Brisanje dugaÄkih redova","hAlign":"Ravnanje vodoravno","vAlign":"Ravnanje uspravno","alignBaseline":"Bazna linija","bgColor":"Boja pozadine","borderColor":"Boja okvira","data":"Podatak","header":"Zaglavlje","yes":"Da","no":"Nе","invalidWidth":"U polje Å¡irina možete upisati samo brojeve. ","invalidHeight":"U polje visina možete upisati samo brojeve.","invalidRowSpan":"U polje spoj uspravno možete upistai samo brojeve.","invalidColSpan":"U polje spoj vodoravno možete upistai samo brojeve.","chooseColor":"Izaberi"},"cellPad":"Razmak ćelija","cellSpace":"Ćelijski prostor","column":{"menu":"Kolona","insertBefore":"Ubaci levo","insertAfter":"Ubaci desno","deleteColumn":"ObriÅ¡i kolone"},"columns":"Kolona","deleteTable":"IzbriÅ¡i tabelu","headers":"Zaglavlja","headersBoth":"Oba","headersColumn":"Prva kolona","headersNone":"Nema","headersRow":"Prvi red","heightUnit":"Jedinica visine","invalidBorder":"VeliÄina okvira mora biti broj.","invalidCellPadding":"Padding polja mora biti pozitivan broj.","invalidCellSpacing":"Razmak izmeÄ‘u ćelija mora biti pozitivan broj.","invalidCols":"Broj kolona mora biti broj veći od 0.","invalidHeight":"Visina tabele mora biti broj.","invalidRows":"Broj redova mora biti veći od 0.","invalidWidth":"Å irina tabele mora biti broj.","menu":"Osobine tabele","row":{"menu":"Red","insertBefore":"Ubaci iznad","insertAfter":"Ubaci ispod","deleteRow":"ObriÅ¡i redove"},"rows":"Redovi","summary":"Opis","title":"Karakteristike tabele","toolbar":"Tabela","widthPc":"procenata","widthPx":"piksela","widthUnit":"jedinica za Å¡irinu"},"stylescombo":{"label":"Stil","panelTitle":"Stilovi formatiranja","panelTitle1":"Blok stilovi","panelTitle2":"Inline stilovi","panelTitle3":"Stilovi objekta"},"specialchar":{"options":"Opcije specijalnog karaktera","title":"Odaberite specijalni karakter","toolbar":"Unesi specijalni karakter"},"sourcedialog":{"toolbar":"Izvorni kod","title":"Izvorni kod"},"sourcearea":{"toolbar":"Izvorni kod"},"showblocks":{"toolbar":"Prikaži blokove"},"removeformat":{"toolbar":"Ukloni formatiranje"},"pastetext":{"button":"Zalepi kao neformiran tekst","pasteNotification":"Pritisnite taster % 1 da bi ste nalepili. PretraživaÄ ne podržava lepljenje pomoću tastera na traci sa alatkama ili iz menija.","title":"Zalepi kao neformiran tekst"},"pastefromword":{"confirmCleanup":"Kopirani tekst je iz Word-a. Želite ga oÄistiti? ","error":"Zbog interne greÅ¡ke tekst nije oÄišćen.","title":"Zalepi iz Worda","toolbar":"Zalepi iz Worda"},"notification":{"closed":"ObaveÅ¡tenje zatvoreno"},"maximize":{"maximize":"Maksimalna veliÄina","minimize":"Minimalna veliÄina"},"magicline":{"title":"Umetnite pasus ovde."},"list":{"bulletedlist":"Nаbrajanje","numberedlist":"Numerisanje"},"language":{"button":"Podesi jezik","remove":"Odstrani jezik"},"indent":{"indent":"Uvećaj marginu","outdent":"Smanji marginu"},"image2":{"alt":"Alternativni tekst","btnUpload":"PoÅ¡alji na server","captioned":"Slika sa natpisom","captionPlaceholder":"Natpis","infoTab":"Osnovne karakteristike","lockRatio":"Zadrži odnos","menu":"Osobine slike","pathName":"Slika","pathNameCaption":"Natpis","resetSize":"Original veliÄina","resizer":"Kliknite i povucite da bi ste promenili veliÄinu","title":"Osobine slika","uploadTab":"Postavi","urlMissing":"Nedostaje URL slike","altMissing":"Nedostaje alternativni tekst"},"horizontalrule":{"toolbar":"Unesi horizontalnu liniju"},"format":{"label":"Format","panelTitle":"Format pasusa","tag_address":"Adresa","tag_div":"Normalno (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Normalno","tag_pre":"Formatirano"},"filetools":{"loadError":"DoÅ¡lo je do greÅ¡ke pri Äitanju datoteke.","networkError":"Tokom postavljanja datoteke doÅ¡lo je do mrežne greÅ¡ke","httpError404":"Tokom postavljanja datoteke doÅ¡lo je do HTTP greÅ¡ke (404: Datoteka nije pronadjena).","httpError403":"Tokom postavljanja datoteke doÅ¡lo je do HTTP greÅ¡ke (403: Zabranjena).","httpError":"Tokom postavljanja datoteke doÅ¡lo je do HTTP greÅ¡ke (status greÅ¡ke: %1).","noUrlError":"URL adresa za postavljanje nije navedena.","responseError":"Neispravan odgovor servera."},"elementspath":{"eleLabel":"Put do elemenata","eleTitle":"%1 element"},"contextmenu":{"options":"Opcije menija"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosna podeÅ¡avanja VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite preÄicu sa tastature (Ctrl/Cmd+C).","cut":"Iseci","cutError":"Sigurnosna podeÅ¡avanja VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite preÄicu sa tastature (Ctrl/Cmd+X).","paste":"Zalepi","pasteNotification":"\"Pritisnite taster %1 za lepljenje. VaÅ¡ pretraživaÄ ne dozvoljava lepljenje iz alatne trake ili menia.","pasteArea":"Prostor za lepljenje","pasteMsg":"Nalepite sadržaj u sledeći prostor i pritisnite taster OK."},"blockquote":{"toolbar":"Blok citat"},"basicstyles":{"bold":"Podebljano","italic":"Kurziv","strike":"Precrtano","subscript":"Indeks","superscript":"Stepen","underline":"PodvuÄeno"},"about":{"copy":"Copyright © $1. Sva prava zadržana.","dlgTitle":"O CKEditor 4","moreInfo":"Za informacije o licenci posetite naÅ¡u web stranicu:"},"editor":"Bogati ureÄ‘ivaÄ teksta","editorPanel":"Bogati ureÄ‘ivaÄ panel","common":{"editorHelp":"Za pomoć pritisnite ALT 0","browseServer":"Pretraži na serveru","url":"URL","protocol":"Protokol","upload":"PoÅ¡alji","uploadSubmit":"PoÅ¡alji na server","image":"Slika","flash":"FleÅ¡","form":"Formular","checkbox":"Polje za potvrdu","radio":"Radio-dugme","textField":"Tekstualno polje","textarea":"Zona teksta","hiddenField":"Skriveno polje","button":"Dugme","select":"Padajuća lista","imageButton":"Dugme sa slikom","notSet":"<nije postavljeno> ","id":"Id","name":"Naziv","langDir":"Smer pisanja","langDirLtr":"S leva na desno (LTR)","langDirRtl":"S desna na levo (RTL)","langCode":"Kôd jezika","longDescr":"Detaljan opis URL","cssClass":"CSS klase","advisoryTitle":"Advisory naslov","cssStyle":"Stil","ok":"OK","cancel":"Otkaži","close":"Zatvori","preview":"Izgled stranice","resize":"Promena veliÄine","generalTab":"OpÅ¡ti","advancedTab":"Dalje opcije","validateNumberFailed":"Ova vrednost nije broj.","confirmNewPage":"NesaÄuvane promene ovog sadržaja će biti izgubljene. Jeste li sigurni da želita da uÄitate novu stranu?","confirmCancel":"Neka podeÅ¡avanja su promenjena.Sigurno želite zatvoriti prozor?","options":"PodeÅ¡avanja","target":"Cilj","targetNew":"Novi prozor (_blank)","targetTop":"Prozor na vrhu stranice(_top)","targetSelf":"Isti prozor (_self)","targetParent":"MatiÄni prozor (_parent)","langDirLTR":"S leva na desno (LTR)","langDirRTL":"S desna na levo (RTL)","styles":"Stil","cssClasses":"CSS klase","width":"Å irina","height":"Visina","align":"Ravnanje","left":"Levo","right":"Desno","center":"Sredina","justify":"Obostrano ravnanje","alignLeft":"Levo ravnanje","alignRight":"Desno ravnanje","alignCenter":"Centralno ravnanje","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dole","alignNone":"NiÅ¡ta","invalidValue":"Nevažeća vrednost.","invalidHeight":"U polje visina mogu se upisati samo brojevi.","invalidWidth":"U polje Å¡irina mogu se upisati samo brojevi.","invalidLength":"U \"%1\" polju data vrednos treba da bude pozitivan broj, sa validnom mernom jedinicom ili bez (%2).","invalidCssLength":"Za \"%1\" data vrednost mora biti pozitivan broj, moguće oznaÄiti sa validnim CSS vrednosću (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Za \"%1\" data vrednost mora biti potitivan broj, moguće oznaÄiti sa validnim HTML vrednošću (px or %).","invalidInlineStyle":"Vrednost u inline styleu mora da sadrži barem jedan rekord u formatu \"name : value\", razdeljeni sa taÄkazapetom.","cssLengthTooltip":"Odredite broj u pixeima ili u validnim CSS vrednostima (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Taster za preÄicu","optionDefault":"Оsnovni"}}; \ No newline at end of file +CKEDITOR.lang['sr-latn']={"widget":{"move":"Kliknite i povucite da bi pomerali","label":"%1 modul"},"undo":{"redo":"Ponovi ","undo":"Vrati"},"toolbar":{"toolbarCollapse":"Zatvori alatnu traku","toolbarExpand":"Otvori alatnu traku","toolbarGroups":{"document":"Dokument","clipboard":"Clipboard/Vrati","editing":"Uredi","forms":"Obrasci","basicstyles":"Osnovni stilovi","paragraph":"Pasus","links":"Linkovi","insert":"Dodaj","styles":"Stilovi","colors":"Boje","tools":"Alatke"},"toolbars":"UredjivaÄ alatne trake"},"table":{"border":"VeliÄina okvira","caption":"Naslov tabele","cell":{"menu":"Ćelija","insertBefore":"Ubaci levo","insertAfter":"Ubaci desno","deleteCell":"ObriÅ¡i ćelije","merge":"Spoj ćelije","mergeRight":"Spolj ćelije desno","mergeDown":"Spolj Äelije na dole","splitHorizontal":"Razdvoji ćelije vodoravno","splitVertical":"Razdvoji ćelije uspravno","title":"Karakteristike ćelija","cellType":"Tip ćelija","rowSpan":"Spoj uzdužno","colSpan":"Spoj vodoravno","wordWrap":"Brisanje dugaÄkih redova","hAlign":"Ravnanje vodoravno","vAlign":"Ravnanje uspravno","alignBaseline":"Bazna linija","bgColor":"Boja pozadine","borderColor":"Boja okvira","data":"Podatak","header":"Zaglavlje","yes":"Da","no":"Nе","invalidWidth":"U polje Å¡irina možete upisati samo brojeve. ","invalidHeight":"U polje visina možete upisati samo brojeve.","invalidRowSpan":"U polje spoj uspravno možete upistai samo brojeve.","invalidColSpan":"U polje spoj vodoravno možete upistai samo brojeve.","chooseColor":"Izaberi"},"cellPad":"Razmak ćelija","cellSpace":"Ćelijski prostor","column":{"menu":"Kolona","insertBefore":"Ubaci levo","insertAfter":"Ubaci desno","deleteColumn":"ObriÅ¡i kolone"},"columns":"Kolona","deleteTable":"IzbriÅ¡i tabelu","headers":"Zaglavlja","headersBoth":"Oba","headersColumn":"Prva kolona","headersNone":"Nema","headersRow":"Prvi red","heightUnit":"Jedinica visine","invalidBorder":"VeliÄina okvira mora biti broj.","invalidCellPadding":"Padding polja mora biti pozitivan broj.","invalidCellSpacing":"Razmak izmeÄ‘u ćelija mora biti pozitivan broj.","invalidCols":"Broj kolona mora biti broj veći od 0.","invalidHeight":"Visina tabele mora biti broj.","invalidRows":"Broj redova mora biti veći od 0.","invalidWidth":"Å irina tabele mora biti broj.","menu":"Osobine tabele","row":{"menu":"Red","insertBefore":"Ubaci iznad","insertAfter":"Ubaci ispod","deleteRow":"ObriÅ¡i redove"},"rows":"Redovi","summary":"Opis","title":"Karakteristike tabele","toolbar":"Tabela","widthPc":"procenata","widthPx":"piksela","widthUnit":"jedinica za Å¡irinu"},"stylescombo":{"label":"Stil","panelTitle":"Stilovi formatiranja","panelTitle1":"Blok stilovi","panelTitle2":"Inline stilovi","panelTitle3":"Stilovi objekta"},"specialchar":{"options":"Opcije specijalnog karaktera","title":"Odaberite specijalni karakter","toolbar":"Unesi specijalni karakter"},"sourcedialog":{"toolbar":"Izvorni kod","title":"Izvorni kod"},"sourcearea":{"toolbar":"Izvorni kod"},"showblocks":{"toolbar":"Prikaži blokove"},"removeformat":{"toolbar":"Ukloni formatiranje"},"pastetext":{"button":"Zalepi kao neformiran tekst","pasteNotification":"Pritisnite taster % 1 da bi ste nalepili. PretraživaÄ ne podržava lepljenje pomoću tastera na traci sa alatkama ili iz menija.","title":"Zalepi kao neformiran tekst"},"pastefromword":{"confirmCleanup":"Kopirani tekst je iz Word-a. Želite ga oÄistiti? ","error":"Zbog interne greÅ¡ke tekst nije oÄišćen.","title":"Zalepi iz Worda","toolbar":"Zalepi iz Worda"},"notification":{"closed":"ObaveÅ¡tenje zatvoreno"},"maximize":{"maximize":"Maksimalna veliÄina","minimize":"Minimalna veliÄina"},"magicline":{"title":"Umetnite pasus ovde."},"list":{"bulletedlist":"Nаbrajanje","numberedlist":"Numerisanje"},"language":{"button":"Podesi jezik","remove":"Odstrani jezik"},"indent":{"indent":"Uvećaj marginu","outdent":"Smanji marginu"},"image2":{"alt":"Alternativni tekst","btnUpload":"PoÅ¡alji na server","captioned":"Slika sa natpisom","captionPlaceholder":"Natpis","infoTab":"Osnovne karakteristike","lockRatio":"Zadrži odnos","menu":"Osobine slike","pathName":"Slika","pathNameCaption":"Natpis","resetSize":"Original veliÄina","resizer":"Kliknite i povucite da bi ste promenili veliÄinu","title":"Osobine slika","uploadTab":"Postavi","urlMissing":"Nedostaje URL slike","altMissing":"Nedostaje alternativni tekst"},"horizontalrule":{"toolbar":"Unesi horizontalnu liniju"},"format":{"label":"Format","panelTitle":"Format pasusa","tag_address":"Adresa","tag_div":"Normalno (DIV)","tag_h1":"Naslov 1","tag_h2":"Naslov 2","tag_h3":"Naslov 3","tag_h4":"Naslov 4","tag_h5":"Naslov 5","tag_h6":"Naslov 6","tag_p":"Normalno","tag_pre":"Formatirano"},"filetools":{"loadError":"DoÅ¡lo je do greÅ¡ke pri Äitanju datoteke.","networkError":"Tokom postavljanja datoteke doÅ¡lo je do mrežne greÅ¡ke","httpError404":"Tokom postavljanja datoteke doÅ¡lo je do HTTP greÅ¡ke (404: Datoteka nije pronadjena).","httpError403":"Tokom postavljanja datoteke doÅ¡lo je do HTTP greÅ¡ke (403: Zabranjena).","httpError":"Tokom postavljanja datoteke doÅ¡lo je do HTTP greÅ¡ke (status greÅ¡ke: %1).","noUrlError":"URL adresa za postavljanje nije navedena.","responseError":"Neispravan odgovor servera."},"elementspath":{"eleLabel":"Put do elemenata","eleTitle":"%1 element"},"contextmenu":{"options":"Opcije menija"},"clipboard":{"copy":"Kopiraj","copyError":"Sigurnosna podeÅ¡avanja VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite preÄicu sa tastature (Ctrl/Cmd+C).","cut":"Iseci","cutError":"Sigurnosna podeÅ¡avanja VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite preÄicu sa tastature (Ctrl/Cmd+X).","paste":"Zalepi","pasteNotification":"\"Pritisnite taster %1 za lepljenje. VaÅ¡ pretraživaÄ ne dozvoljava lepljenje iz alatne trake ili menia.","pasteArea":"Prostor za lepljenje","pasteMsg":"Nalepite sadržaj u sledeći prostor i pritisnite taster OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Blok citat"},"basicstyles":{"bold":"Podebljano","italic":"Kurziv","strike":"Precrtano","subscript":"Indeks","superscript":"Stepen","underline":"PodvuÄeno"},"about":{"copy":"Copyright © $1. Sva prava zadržana.","dlgTitle":"O CKEditor 4","moreInfo":"Za informacije o licenci posetite naÅ¡u web stranicu:"},"editor":"Bogati ureÄ‘ivaÄ teksta","editorPanel":"Bogati ureÄ‘ivaÄ panel","common":{"editorHelp":"Za pomoć pritisnite ALT 0","browseServer":"Pretraži na serveru","url":"URL","protocol":"Protokol","upload":"PoÅ¡alji","uploadSubmit":"PoÅ¡alji na server","image":"Slika","form":"Formular","checkbox":"Polje za potvrdu","radio":"Radio-dugme","textField":"Tekstualno polje","textarea":"Zona teksta","hiddenField":"Skriveno polje","button":"Dugme","select":"Padajuća lista","imageButton":"Dugme sa slikom","notSet":"<nije postavljeno> ","id":"Id","name":"Naziv","langDir":"Smer pisanja","langDirLtr":"S leva na desno (LTR)","langDirRtl":"S desna na levo (RTL)","langCode":"Kôd jezika","longDescr":"Detaljan opis URL","cssClass":"CSS klase","advisoryTitle":"Advisory naslov","cssStyle":"Stil","ok":"OK","cancel":"Otkaži","close":"Zatvori","preview":"Izgled stranice","resize":"Promena veliÄine","generalTab":"OpÅ¡ti","advancedTab":"Dalje opcije","validateNumberFailed":"Ova vrednost nije broj.","confirmNewPage":"NesaÄuvane promene ovog sadržaja će biti izgubljene. Jeste li sigurni da želita da uÄitate novu stranu?","confirmCancel":"Neka podeÅ¡avanja su promenjena.Sigurno želite zatvoriti prozor?","options":"PodeÅ¡avanja","target":"Cilj","targetNew":"Novi prozor (_blank)","targetTop":"Prozor na vrhu stranice(_top)","targetSelf":"Isti prozor (_self)","targetParent":"MatiÄni prozor (_parent)","langDirLTR":"S leva na desno (LTR)","langDirRTL":"S desna na levo (RTL)","styles":"Stil","cssClasses":"CSS klase","width":"Å irina","height":"Visina","align":"Ravnanje","left":"Levo","right":"Desno","center":"Sredina","justify":"Obostrano ravnanje","alignLeft":"Levo ravnanje","alignRight":"Desno ravnanje","alignCenter":"Centralno ravnanje","alignTop":"Vrh","alignMiddle":"Sredina","alignBottom":"Dole","alignNone":"NiÅ¡ta","invalidValue":"Nevažeća vrednost.","invalidHeight":"U polje visina mogu se upisati samo brojevi.","invalidWidth":"U polje Å¡irina mogu se upisati samo brojevi.","invalidLength":"U \"%1\" polju data vrednos treba da bude pozitivan broj, sa validnom mernom jedinicom ili bez (%2).","invalidCssLength":"Za \"%1\" data vrednost mora biti pozitivan broj, moguće oznaÄiti sa validnim CSS vrednosću (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Za \"%1\" data vrednost mora biti potitivan broj, moguće oznaÄiti sa validnim HTML vrednošću (px or %).","invalidInlineStyle":"Vrednost u inline styleu mora da sadrži barem jedan rekord u formatu \"name : value\", razdeljeni sa taÄkazapetom.","cssLengthTooltip":"Odredite broj u pixeima ili u validnim CSS vrednostima (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Taster za preÄicu","optionDefault":"Оsnovni"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/sr.js b/core/assets/vendor/ckeditor/lang/sr.js index 189067199da3..c0733865ad25 100644 --- a/core/assets/vendor/ckeditor/lang/sr.js +++ b/core/assets/vendor/ckeditor/lang/sr.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['sr']={"widget":{"move":"Кликните и повуците да би померали","label":"%1 модул"},"undo":{"redo":"Понови ","undo":"Врати"},"toolbar":{"toolbarCollapse":"Затвори алатну траку","toolbarExpand":"Отвори алатну траку","toolbarGroups":{"document":"Документ","clipboard":"Clipboard/Врати","editing":"Уреди","forms":"ОбраÑци","basicstyles":"ОÑновни Ñтилови","paragraph":"ПаÑуÑ","links":"Линкови","insert":"Додај","styles":"Стилови","colors":"Боје","tools":"Ðлатке"},"toolbars":"Уређивач алатне траке"},"table":{"border":"Величина оквира","caption":"ÐаÑлов табеле","cell":{"menu":"Ћелија","insertBefore":"Убаци лево","insertAfter":"Убаци деÑно","deleteCell":"Обриши ћелије","merge":"Спој ћелије","mergeRight":"Спој ћелије на деÑно","mergeDown":"Спој ћелије на доле","splitHorizontal":"Раздвој ћелије водоравно","splitVertical":"Раздвој ћелије уÑправно","title":"КарактериÑтика ћелија","cellType":"Тип ћелија","rowSpan":"Спој уздужно","colSpan":"Спој водоравно","wordWrap":"БриÑање дугачких редова","hAlign":"Равнање водоравно","vAlign":"Равнање уÑправно","alignBaseline":"Базна линија","bgColor":"Боја позадине","borderColor":"Боја оквира","data":"Податак","header":"ÐаÑлов","yes":"Да","no":"Ðе","invalidWidth":"У поље ширина можете упиÑати Ñамо бројеве.","invalidHeight":"У поље виÑина можете упиÑати Ñамо бројеве.","invalidRowSpan":"У поље Ñпој уÑправно можете упиÑати Ñамо бројеве.","invalidColSpan":"У поље Ñпој водоравно можете упиÑати Ñамо бројеве.","chooseColor":"Изабери"},"cellPad":"Размак ћелија","cellSpace":"ЋелијÑки проÑтор","column":{"menu":"Колона","insertBefore":"Убаци лево","insertAfter":"Убаци деÑно","deleteColumn":"Обриши колоне"},"columns":"Kолона","deleteTable":"Обриши таблу","headers":"Поглавља","headersBoth":"Оба","headersColumn":"Прва колона","headersNone":"Ðема","headersRow":"Први ред","heightUnit":"Јединица виÑине","invalidBorder":"Величина ивице треба да буде цифра.","invalidCellPadding":"Пуњење ћелије треба да буде позитивна цифра.","invalidCellSpacing":"Размак ћелије треба да буде позитивна цифра.","invalidCols":"Број колона треба да буде цифра већа од 0.","invalidHeight":"ВиÑина табеле треба да буде цифра.","invalidRows":"Број реда треба да буде цифра већа од 0.","invalidWidth":"Ширина табеле треба да буде цифра.","menu":"КарактериÑтике табеле","row":{"menu":"Ред","insertBefore":"Убаци изнад","insertAfter":"Убаци иÑпод","deleteRow":"Обриши редове"},"rows":"Редови","summary":"OпиÑ","title":"КарактериÑтике табеле","toolbar":"Табела","widthPc":"процената","widthPx":"пикÑела","widthUnit":"јединица ширине"},"stylescombo":{"label":"Стил","panelTitle":"Стилови форматирања","panelTitle1":"Блок Ñтилови","panelTitle2":"Инлине Ñтилови","panelTitle3":"Стилови објекта"},"specialchar":{"options":"Опције Ñпецијалног карактера","title":"Одаберите Ñпецијални карактер","toolbar":"УнеÑи Ñпецијални карактер"},"sourcedialog":{"toolbar":"Изворни код","title":"Изворни код"},"sourcearea":{"toolbar":"Изворни код"},"showblocks":{"toolbar":"Прикажи блокове"},"removeformat":{"toolbar":"Уклони форматирање"},"pastetext":{"button":"Залепи као неформиран текÑÑ‚","pasteNotification":"ПритиÑните% 1 да биÑте налепили. Претраживач не подржава лепљење помоћу таÑтера на траци Ñа алаткама или из менија.","title":"Залепи као неформиран текÑÑ‚"},"pastefromword":{"confirmCleanup":"Уметнути текÑÑ‚ је копиран из Word-а. Желите га очитити? ","error":"Због интерне грешке текÑÑ‚ није очишћен.","title":"Залепи из Worda","toolbar":"Залепи из Worda"},"notification":{"closed":"Обавештење затворено"},"maximize":{"maximize":"МакÑимална величина","minimize":"Минимлна величина"},"magicline":{"title":"Уметните паÑÑƒÑ Ð¾Ð²Ð´Ðµ."},"list":{"bulletedlist":"Ðабрајање","numberedlist":"ÐумериÑање"},"language":{"button":"ПодеÑи језик","remove":"ОдÑтрани језик"},"indent":{"indent":"Увећај леву маргину","outdent":"Смањи маргину"},"image2":{"alt":"Ðлтернативни текÑÑ‚","btnUpload":"Пошаљи на Ñервер","captioned":"Слика Ñа натпиÑом","captionPlaceholder":"ÐатпиÑ","infoTab":"ОÑновне карактериÑтике","lockRatio":"Задржи одноÑ","menu":"ОÑобине Ñлика","pathName":"Слика","pathNameCaption":"ÐатпиÑ","resetSize":"Оригинална величина","resizer":"Кликните и повуците да би Ñте променили величину","title":"КарактериÑтике Ñлике","uploadTab":"ПоÑтави","urlMissing":"ÐедоÑтаје УРЛ Ñлике.","altMissing":"ÐедоÑтаје алтернативни текÑÑ‚."},"horizontalrule":{"toolbar":"УнеÑи хоризонталну линију"},"format":{"label":"Формат","panelTitle":"Формат паÑуÑа","tag_address":"ÐдреÑа","tag_div":"Ðормално (DIV)","tag_h1":"ÐаÑлов 1","tag_h2":"ÐаÑлов 2","tag_h3":" ÐаÑлов 3","tag_h4":"ÐаÑлов 4","tag_h5":"ÐаÑлов 5","tag_h6":"ÐаÑлов 6","tag_p":"Ðормално","tag_pre":"Форматирано"},"filetools":{"loadError":"Дошло је до грешке при читању датотеке.","networkError":"Током поÑтављања датотеке дошло је до мрежне грешке.","httpError404":"Током поÑтављања датотеке дошло је до ХТТП грешке (404: Датотека није пронађена).","httpError403":"Током поÑтављања датотеке дошло је до ХТТП грешке (403: Забрањена).","httpError":"Током поÑтављања датотеке дошло је до ХТТП грешке (ÑÑ‚Ð°Ñ‚ÑƒÑ Ð³Ñ€ÐµÑˆÐºÐµ: %1).","noUrlError":"УРЛ адреÑа за поÑтављање није наведена.","responseError":"ÐеиÑправан одговор Ñервера."},"elementspath":{"eleLabel":"Пут до елемената","eleTitle":"%1 eлемент"},"contextmenu":{"options":"Опције менија"},"clipboard":{"copy":"Копирај","copyError":"СигурноÑна подешавања Вашег претраживача не дозвољавају операције аутоматÑког копирања текÑта. Молимо Ð’Ð°Ñ Ð´Ð° кориÑтите пречицу Ñа таÑтатуре (Ctrl/Cmd+C).","cut":"ИÑеци","cutError":"СигурноÑна подешавања Вашег претраживача не дозвољавају операције аутоматÑког иÑецања текÑта. Молимо Ð’Ð°Ñ Ð´Ð° кориÑтите пречицу Ñа таÑтатуре (Ctrl/Cmd+X).","paste":"Залепи","pasteNotification":"ПритиÑните таÑтер %1 за лепљење. Ваш ретраживач не дозвољаба лепљење из алатне траке или мениа.","pasteArea":"Залепи зону","pasteMsg":"Ðалепите Ñадржај у Ñледећи проÑтор и притиÑните таÑтер OK."},"blockquote":{"toolbar":"Блок цитат"},"basicstyles":{"bold":"Подебљано","italic":"Курзив","strike":"Прецртано","subscript":"ИндекÑ","superscript":"Степен","underline":"Подвучено"},"about":{"copy":"Copyright © $1. Сва права задржана.","dlgTitle":"О CKEditor 4","moreInfo":"За информације о лиценци поÑетите нашу веб Ñтраницу:"},"editor":"ХТМЛ уређивач текÑта","editorPanel":"ХТМЛ уређивач панел","common":{"editorHelp":"За помоћ притиÑните ÐЛТ 0","browseServer":"Претражи на Ñерверу","url":"УРЛ","protocol":"Протокол","upload":"Пошаљи","uploadSubmit":"Пошаљи на Ñервер","image":"Слика","flash":"Флеш елемент","form":"Формулар","checkbox":"Поље за потврду","radio":"Радио-дугме","textField":"ТекÑтуално поље","textarea":"Зона текÑта","hiddenField":"Скривено поље","button":"Дугме","select":"Падајућа лиÑта","imageButton":"Дугме Ñа Ñликом","notSet":"<није поÑтављено>","id":"Ид","name":"Ðазив","langDir":"Смер пиÑања","langDirLtr":"С лева на деÑно (LTR)","langDirRtl":"С деÑна на лево (RTL)","langCode":"Kôд језика","longDescr":"Пун Ð¾Ð¿Ð¸Ñ Ð£Ð Ð›","cssClass":"ЦСС клаÑе","advisoryTitle":"Advisory наÑлов","cssStyle":"Стил","ok":"OK","cancel":"Oткажи","close":"Затвори","preview":"Изглед Ñтранице","resize":"Промена величине","generalTab":"Општи","advancedTab":"Далје опције","validateNumberFailed":"Ова вредноÑÑ‚ није број.","confirmNewPage":"ÐеÑачуване промене овог Ñадржаја ће бити изгублјене. ЈеÑте ли Ñигурни да желите да учитате нову Ñтрану","confirmCancel":"Ðека подешавања Ñу променјена. Сигурмо желите затворити обај прозор?","options":"Подешавања","target":"Циљ","targetNew":"Ðоби прозор (_blank)","targetTop":"Прозор на врху Ñтранице (_top)","targetSelf":"ИÑти прозор (_self)","targetParent":"Матични прозор(_parent)","langDirLTR":"С лева на деÑно (LTR)","langDirRTL":"С деÑна на лево (RTL)","styles":"Стил","cssClasses":"ЦСС клаÑе","width":"Ширина","height":"ВиÑина","align":"Равнање","left":"Лево","right":"ДеÑно","center":"Средина","justify":"ОбоÑтрано равнање","alignLeft":"Лево равнање","alignRight":"ДеÑно равнање","alignCenter":"Централно равнанје","alignTop":"Врх","alignMiddle":"Средина","alignBottom":"Доле","alignNone":"Ðишта","invalidValue":"Ðеважећа вредноÑÑ‚.","invalidHeight":"У поље виÑина могу Ñе упиÑати Ñамо бројеви.","invalidWidth":"У поље ширина могу Ñе упиÑати Ñамо бројеви.","invalidLength":"У \"%1\" полју дата вредноÑÑ‚ треба да будепозитиван број Ñа валидном мерном јединицом или без ње (%2).","invalidCssLength":"За \"%1\" дата вредноÑÑ‚ мора бити позитиван број, могуће означити Ñа валидним ЦСС вредошћу (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Зa \"%1\" дата вредноÑÑ‚ мора бити позитиван број, могуће означити Ñа валидним ХТМЛ вредношћу (px or %).","invalidInlineStyle":"ВреднодÑÑ‚ у инлине Ñтилу мора да Ñадржи барем један рекорд у формату \"name : value\", раздељени Ñа тачказапетом.","cssLengthTooltip":"Одредите број у пикÑелима или у валидним ЦСС вредноÑтима (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"TаÑтер за пречицу","optionDefault":"ОÑновни"}}; \ No newline at end of file +CKEDITOR.lang['sr']={"widget":{"move":"Кликните и повуците да би померали","label":"%1 модул"},"undo":{"redo":"Понови ","undo":"Врати"},"toolbar":{"toolbarCollapse":"Затвори алатну траку","toolbarExpand":"Отвори алатну траку","toolbarGroups":{"document":"Документ","clipboard":"Clipboard/Врати","editing":"Уреди","forms":"ОбраÑци","basicstyles":"ОÑновни Ñтилови","paragraph":"ПаÑуÑ","links":"Линкови","insert":"Додај","styles":"Стилови","colors":"Боје","tools":"Ðлатке"},"toolbars":"Уређивач алатне траке"},"table":{"border":"Величина оквира","caption":"ÐаÑлов табеле","cell":{"menu":"Ћелија","insertBefore":"Убаци лево","insertAfter":"Убаци деÑно","deleteCell":"Обриши ћелије","merge":"Спој ћелије","mergeRight":"Спој ћелије на деÑно","mergeDown":"Спој ћелије на доле","splitHorizontal":"Раздвој ћелије водоравно","splitVertical":"Раздвој ћелије уÑправно","title":"КарактериÑтика ћелија","cellType":"Тип ћелија","rowSpan":"Спој уздужно","colSpan":"Спој водоравно","wordWrap":"БриÑање дугачких редова","hAlign":"Равнање водоравно","vAlign":"Равнање уÑправно","alignBaseline":"Базна линија","bgColor":"Боја позадине","borderColor":"Боја оквира","data":"Податак","header":"ÐаÑлов","yes":"Да","no":"Ðе","invalidWidth":"У поље ширина можете упиÑати Ñамо бројеве.","invalidHeight":"У поље виÑина можете упиÑати Ñамо бројеве.","invalidRowSpan":"У поље Ñпој уÑправно можете упиÑати Ñамо бројеве.","invalidColSpan":"У поље Ñпој водоравно можете упиÑати Ñамо бројеве.","chooseColor":"Изабери"},"cellPad":"Размак ћелија","cellSpace":"ЋелијÑки проÑтор","column":{"menu":"Колона","insertBefore":"Убаци лево","insertAfter":"Убаци деÑно","deleteColumn":"Обриши колоне"},"columns":"Kолона","deleteTable":"Обриши таблу","headers":"Поглавља","headersBoth":"Оба","headersColumn":"Прва колона","headersNone":"Ðема","headersRow":"Први ред","heightUnit":"Јединица виÑине","invalidBorder":"Величина ивице треба да буде цифра.","invalidCellPadding":"Пуњење ћелије треба да буде позитивна цифра.","invalidCellSpacing":"Размак ћелије треба да буде позитивна цифра.","invalidCols":"Број колона треба да буде цифра већа од 0.","invalidHeight":"ВиÑина табеле треба да буде цифра.","invalidRows":"Број реда треба да буде цифра већа од 0.","invalidWidth":"Ширина табеле треба да буде цифра.","menu":"КарактериÑтике табеле","row":{"menu":"Ред","insertBefore":"Убаци изнад","insertAfter":"Убаци иÑпод","deleteRow":"Обриши редове"},"rows":"Редови","summary":"OпиÑ","title":"КарактериÑтике табеле","toolbar":"Табела","widthPc":"процената","widthPx":"пикÑела","widthUnit":"јединица ширине"},"stylescombo":{"label":"Стил","panelTitle":"Стилови форматирања","panelTitle1":"Блок Ñтилови","panelTitle2":"Инлине Ñтилови","panelTitle3":"Стилови објекта"},"specialchar":{"options":"Опције Ñпецијалног карактера","title":"Одаберите Ñпецијални карактер","toolbar":"УнеÑи Ñпецијални карактер"},"sourcedialog":{"toolbar":"Изворни код","title":"Изворни код"},"sourcearea":{"toolbar":"Изворни код"},"showblocks":{"toolbar":"Прикажи блокове"},"removeformat":{"toolbar":"Уклони форматирање"},"pastetext":{"button":"Залепи као неформиран текÑÑ‚","pasteNotification":"ПритиÑните% 1 да биÑте налепили. Претраживач не подржава лепљење помоћу таÑтера на траци Ñа алаткама или из менија.","title":"Залепи као неформиран текÑÑ‚"},"pastefromword":{"confirmCleanup":"Уметнути текÑÑ‚ је копиран из Word-а. Желите га очитити? ","error":"Због интерне грешке текÑÑ‚ није очишћен.","title":"Залепи из Worda","toolbar":"Залепи из Worda"},"notification":{"closed":"Обавештење затворено"},"maximize":{"maximize":"МакÑимална величина","minimize":"Минимлна величина"},"magicline":{"title":"Уметните паÑÑƒÑ Ð¾Ð²Ð´Ðµ."},"list":{"bulletedlist":"Ðабрајање","numberedlist":"ÐумериÑање"},"language":{"button":"ПодеÑи језик","remove":"ОдÑтрани језик"},"indent":{"indent":"Увећај леву маргину","outdent":"Смањи маргину"},"image2":{"alt":"Ðлтернативни текÑÑ‚","btnUpload":"Пошаљи на Ñервер","captioned":"Слика Ñа натпиÑом","captionPlaceholder":"ÐатпиÑ","infoTab":"ОÑновне карактериÑтике","lockRatio":"Задржи одноÑ","menu":"ОÑобине Ñлика","pathName":"Слика","pathNameCaption":"ÐатпиÑ","resetSize":"Оригинална величина","resizer":"Кликните и повуците да би Ñте променили величину","title":"КарактериÑтике Ñлике","uploadTab":"ПоÑтави","urlMissing":"ÐедоÑтаје УРЛ Ñлике.","altMissing":"ÐедоÑтаје алтернативни текÑÑ‚."},"horizontalrule":{"toolbar":"УнеÑи хоризонталну линију"},"format":{"label":"Формат","panelTitle":"Формат паÑуÑа","tag_address":"ÐдреÑа","tag_div":"Ðормално (DIV)","tag_h1":"ÐаÑлов 1","tag_h2":"ÐаÑлов 2","tag_h3":" ÐаÑлов 3","tag_h4":"ÐаÑлов 4","tag_h5":"ÐаÑлов 5","tag_h6":"ÐаÑлов 6","tag_p":"Ðормално","tag_pre":"Форматирано"},"filetools":{"loadError":"Дошло је до грешке при читању датотеке.","networkError":"Током поÑтављања датотеке дошло је до мрежне грешке.","httpError404":"Током поÑтављања датотеке дошло је до ХТТП грешке (404: Датотека није пронађена).","httpError403":"Током поÑтављања датотеке дошло је до ХТТП грешке (403: Забрањена).","httpError":"Током поÑтављања датотеке дошло је до ХТТП грешке (ÑÑ‚Ð°Ñ‚ÑƒÑ Ð³Ñ€ÐµÑˆÐºÐµ: %1).","noUrlError":"УРЛ адреÑа за поÑтављање није наведена.","responseError":"ÐеиÑправан одговор Ñервера."},"elementspath":{"eleLabel":"Пут до елемената","eleTitle":"%1 eлемент"},"contextmenu":{"options":"Опције менија"},"clipboard":{"copy":"Копирај","copyError":"СигурноÑна подешавања Вашег претраживача не дозвољавају операције аутоматÑког копирања текÑта. Молимо Ð’Ð°Ñ Ð´Ð° кориÑтите пречицу Ñа таÑтатуре (Ctrl/Cmd+C).","cut":"ИÑеци","cutError":"СигурноÑна подешавања Вашег претраживача не дозвољавају операције аутоматÑког иÑецања текÑта. Молимо Ð’Ð°Ñ Ð´Ð° кориÑтите пречицу Ñа таÑтатуре (Ctrl/Cmd+X).","paste":"Залепи","pasteNotification":"ПритиÑните таÑтер %1 за лепљење. Ваш ретраживач не дозвољаба лепљење из алатне траке или мениа.","pasteArea":"Залепи зону","pasteMsg":"Ðалепите Ñадржај у Ñледећи проÑтор и притиÑните таÑтер OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Блок цитат"},"basicstyles":{"bold":"Подебљано","italic":"Курзив","strike":"Прецртано","subscript":"ИндекÑ","superscript":"Степен","underline":"Подвучено"},"about":{"copy":"Copyright © $1. Сва права задржана.","dlgTitle":"О CKEditor 4","moreInfo":"За информације о лиценци поÑетите нашу веб Ñтраницу:"},"editor":"ХТМЛ уређивач текÑта","editorPanel":"ХТМЛ уређивач панел","common":{"editorHelp":"За помоћ притиÑните ÐЛТ 0","browseServer":"Претражи на Ñерверу","url":"УРЛ","protocol":"Протокол","upload":"Пошаљи","uploadSubmit":"Пошаљи на Ñервер","image":"Слика","form":"Формулар","checkbox":"Поље за потврду","radio":"Радио-дугме","textField":"ТекÑтуално поље","textarea":"Зона текÑта","hiddenField":"Скривено поље","button":"Дугме","select":"Падајућа лиÑта","imageButton":"Дугме Ñа Ñликом","notSet":"<није поÑтављено>","id":"Ид","name":"Ðазив","langDir":"Смер пиÑања","langDirLtr":"С лева на деÑно (LTR)","langDirRtl":"С деÑна на лево (RTL)","langCode":"Kôд језика","longDescr":"Пун Ð¾Ð¿Ð¸Ñ Ð£Ð Ð›","cssClass":"ЦСС клаÑе","advisoryTitle":"Advisory наÑлов","cssStyle":"Стил","ok":"OK","cancel":"Oткажи","close":"Затвори","preview":"Изглед Ñтранице","resize":"Промена величине","generalTab":"Општи","advancedTab":"Далје опције","validateNumberFailed":"Ова вредноÑÑ‚ није број.","confirmNewPage":"ÐеÑачуване промене овог Ñадржаја ће бити изгублјене. ЈеÑте ли Ñигурни да желите да учитате нову Ñтрану","confirmCancel":"Ðека подешавања Ñу променјена. Сигурмо желите затворити обај прозор?","options":"Подешавања","target":"Циљ","targetNew":"Ðоби прозор (_blank)","targetTop":"Прозор на врху Ñтранице (_top)","targetSelf":"ИÑти прозор (_self)","targetParent":"Матични прозор(_parent)","langDirLTR":"С лева на деÑно (LTR)","langDirRTL":"С деÑна на лево (RTL)","styles":"Стил","cssClasses":"ЦСС клаÑе","width":"Ширина","height":"ВиÑина","align":"Равнање","left":"Лево","right":"ДеÑно","center":"Средина","justify":"ОбоÑтрано равнање","alignLeft":"Лево равнање","alignRight":"ДеÑно равнање","alignCenter":"Централно равнанје","alignTop":"Врх","alignMiddle":"Средина","alignBottom":"Доле","alignNone":"Ðишта","invalidValue":"Ðеважећа вредноÑÑ‚.","invalidHeight":"У поље виÑина могу Ñе упиÑати Ñамо бројеви.","invalidWidth":"У поље ширина могу Ñе упиÑати Ñамо бројеви.","invalidLength":"У \"%1\" полју дата вредноÑÑ‚ треба да будепозитиван број Ñа валидном мерном јединицом или без ње (%2).","invalidCssLength":"За \"%1\" дата вредноÑÑ‚ мора бити позитиван број, могуће означити Ñа валидним ЦСС вредошћу (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Зa \"%1\" дата вредноÑÑ‚ мора бити позитиван број, могуће означити Ñа валидним ХТМЛ вредношћу (px or %).","invalidInlineStyle":"ВреднодÑÑ‚ у инлине Ñтилу мора да Ñадржи барем један рекорд у формату \"name : value\", раздељени Ñа тачказапетом.","cssLengthTooltip":"Одредите број у пикÑелима или у валидним ЦСС вредноÑтима (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"TаÑтер за пречицу","optionDefault":"ОÑновни"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/sv.js b/core/assets/vendor/ckeditor/lang/sv.js index 4f437ba94109..6f1533ff662d 100644 --- a/core/assets/vendor/ckeditor/lang/sv.js +++ b/core/assets/vendor/ckeditor/lang/sv.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['sv']={"widget":{"move":"Klicka och drag för att flytta","label":"%1-widget"},"undo":{"redo":"Gör om","undo":"Ã…ngra"},"toolbar":{"toolbarCollapse":"Dölj verktygsfält","toolbarExpand":"Visa verktygsfält","toolbarGroups":{"document":"Dokument","clipboard":"Urklipp/Ã¥ngra","editing":"Redigering","forms":"Formulär","basicstyles":"Basstilar","paragraph":"Paragraf","links":"Länkar","insert":"Infoga","styles":"Stilar","colors":"Färger","tools":"Verktyg"},"toolbars":"Editorns verktygsfält"},"table":{"border":"Kantstorlek","caption":"Rubrik","cell":{"menu":"Cell","insertBefore":"Lägg till cell före","insertAfter":"Lägg till cell efter","deleteCell":"Radera celler","merge":"Sammanfoga celler","mergeRight":"Sammanfoga höger","mergeDown":"Sammanfoga ner","splitHorizontal":"Dela cell horisontellt","splitVertical":"Dela cell vertikalt","title":"Egenskaper för cell","cellType":"Celltyp","rowSpan":"Rad spann","colSpan":"Kolumnen spann","wordWrap":"Radbrytning","hAlign":"Horisontell justering","vAlign":"Vertikal justering","alignBaseline":"Baslinje","bgColor":"Bakgrundsfärg","borderColor":"Ramfärg","data":"Data","header":"Rubrik","yes":"Ja","no":"Nej","invalidWidth":"Cellens bredd mÃ¥ste vara ett nummer.","invalidHeight":"Cellens höjd mÃ¥ste vara ett nummer.","invalidRowSpan":"Radutvidgning mÃ¥ste vara ett heltal.","invalidColSpan":"Kolumn mÃ¥ste vara ett heltal.","chooseColor":"Välj"},"cellPad":"Cellutfyllnad","cellSpace":"CellavstÃ¥nd","column":{"menu":"Kolumn","insertBefore":"Lägg till kolumn före","insertAfter":"Lägg till kolumn efter","deleteColumn":"Radera kolumn"},"columns":"Kolumner","deleteTable":"Radera tabell","headers":"Rubriker","headersBoth":"BÃ¥da","headersColumn":"Första kolumnen","headersNone":"Ingen","headersRow":"Första raden","heightUnit":"Enhetshöjd","invalidBorder":"Ram mÃ¥ste vara ett nummer.","invalidCellPadding":"Luft i cell mÃ¥ste vara ett nummer.","invalidCellSpacing":"Luft i cell mÃ¥ste vara ett nummer.","invalidCols":"Antal kolumner mÃ¥ste vara ett nummer större än 0.","invalidHeight":"Tabellens höjd mÃ¥ste vara ett nummer.","invalidRows":"Antal rader mÃ¥ste vara större än 0.","invalidWidth":"Tabell mÃ¥ste vara ett nummer.","menu":"Tabellegenskaper","row":{"menu":"Rad","insertBefore":"Lägg till rad före","insertAfter":"Lägg till rad efter","deleteRow":"Radera rad"},"rows":"Rader","summary":"Sammanfattning","title":"Tabellegenskaper","toolbar":"Tabell","widthPc":"procent","widthPx":"pixlar","widthUnit":"enhet bredd"},"stylescombo":{"label":"Stilar","panelTitle":"Formateringsstilar","panelTitle1":"Blockstilar","panelTitle2":"Inbäddade stilar","panelTitle3":"Objektstilar"},"specialchar":{"options":"Alternativ för utökade tecken","title":"Välj utökat tecken","toolbar":"Klistra in utökat tecken"},"sourcedialog":{"toolbar":"Källa","title":"Källa"},"sourcearea":{"toolbar":"Källa"},"showblocks":{"toolbar":"Visa block"},"removeformat":{"toolbar":"Radera formatering"},"pastetext":{"button":"Klistra in som vanlig text","pasteNotification":"Tryck pÃ¥ %1 för att klistra in. Din webbläsare stödjer inte inklistring via verktygsfältet eller snabbmenyn.","title":"Klistra in som vanlig text"},"pastefromword":{"confirmCleanup":"Texten du vill klistra in verkar vara kopierad frÃ¥n Word. Vill du rensa den innan du klistrar in den?","error":"Det var inte möjligt att städa upp den inklistrade data pÃ¥ grund av ett internt fel","title":"Klistra in frÃ¥n Word","toolbar":"Klistra in frÃ¥n Word"},"notification":{"closed":"Notifiering stängd."},"maximize":{"maximize":"Maximera","minimize":"Minimera"},"magicline":{"title":"Infoga paragraf här"},"list":{"bulletedlist":"Infoga/ta bort punktlista","numberedlist":"Infoga/ta bort numrerad lista"},"language":{"button":"Sätt sprÃ¥k","remove":"Ta bort sprÃ¥k"},"indent":{"indent":"Öka indrag","outdent":"Minska indrag"},"image2":{"alt":"Alternativ text","btnUpload":"Skicka till server","captioned":"Rubricerad bild","captionPlaceholder":"Bildtext","infoTab":"Bildinformation","lockRatio":"LÃ¥s höjd/bredd förhÃ¥llanden","menu":"Bildegenskaper","pathName":"bild","pathNameCaption":"rubrik","resetSize":"Ã…terställ storlek","resizer":"Klicka och drag för att ändra storlek","title":"Bildegenskaper","uploadTab":"Ladda upp","urlMissing":"Bildkällans URL saknas.","altMissing":"Alternativ text saknas"},"horizontalrule":{"toolbar":"Infoga horisontal linje"},"format":{"label":"Teckenformat","panelTitle":"Teckenformat","tag_address":"Adress","tag_div":"Normal (DIV)","tag_h1":"Rubrik 1","tag_h2":"Rubrik 2","tag_h3":"Rubrik 3","tag_h4":"Rubrik 4","tag_h5":"Rubrik 5","tag_h6":"Rubrik 6","tag_p":"Normal","tag_pre":"Formaterad"},"filetools":{"loadError":"Fel uppstod vid filläsning","networkError":"Nätverksfel uppstod vid filuppladdning.","httpError404":"HTTP-fel uppstod vid filuppladdning (404: Fil hittades inte).","httpError403":"HTTP-fel uppstod vid filuppladdning (403: Förbjuden).","httpError":"HTTP-fel uppstod vid filuppladdning (felstatus: %1).","noUrlError":"URL för uppladdning inte definierad.","responseError":"Felaktigt serversvar."},"elementspath":{"eleLabel":"Elementets sökväg","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Kopiera","copyError":"Säkerhetsinställningar i din webbläsare tillÃ¥ter inte Ã¥tgärden kopiera. Använd (Ctrl/Cmd+C) istället.","cut":"Klipp ut","cutError":"Säkerhetsinställningar i din webbläsare tillÃ¥ter inte Ã¥tgärden klipp ut. Använd (Ctrl/Cmd+X) istället.","paste":"Klistra in","pasteNotification":"Tryck pÃ¥ %1 för att klistra in. Din webbläsare stödjer inte inklistring via verktygsfältet eller snabbmenyn.","pasteArea":"InklistringsomrÃ¥de","pasteMsg":"Klistra in ditt innehÃ¥ll i omrÃ¥det nedan och tryck pÃ¥ OK."},"blockquote":{"toolbar":"Blockcitat"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Genomstruken","subscript":"Nedsänkta tecken","superscript":"Upphöjda tecken","underline":"Understruken"},"about":{"copy":"Copyright © $1. Alla rättigheter reserverade.","dlgTitle":"Om CKEditor 4","moreInfo":"För information om licensiering besök vÃ¥r hemsida:"},"editor":"Rich Text-editor","editorPanel":"Panel till Rich Text-editor","common":{"editorHelp":"Tryck ALT 0 för hjälp","browseServer":"Bläddra pÃ¥ server","url":"URL","protocol":"Protokoll","upload":"Ladda upp","uploadSubmit":"Skicka till server","image":"Bild","flash":"Flash","form":"Formulär","checkbox":"Kryssruta","radio":"Alternativknapp","textField":"Textfält","textarea":"Textruta","hiddenField":"Dolt fält","button":"Knapp","select":"Flervalslista","imageButton":"Bildknapp","notSet":"<ej angivet>","id":"Id","name":"Namn","langDir":"SprÃ¥kriktning","langDirLtr":"Vänster till Höger (VTH)","langDirRtl":"Höger till Vänster (HTV)","langCode":"SprÃ¥kkod","longDescr":"URL-beskrivning","cssClass":"Stilmall","advisoryTitle":"Titel","cssStyle":"Stilmall","ok":"OK","cancel":"Avbryt","close":"Stäng","preview":"Förhandsgranska","resize":"Dra för att ändra storlek","generalTab":"Allmänt","advancedTab":"Avancerad","validateNumberFailed":"Värdet är inte ett nummer.","confirmNewPage":"Alla ändringar i innehÃ¥llet kommer att förloras. Är du säker pÃ¥ att du vill ladda en ny sida?","confirmCancel":"NÃ¥gra av alternativen har ändrats. Är du säker pÃ¥ att du vill stänga dialogrutan?","options":"Alternativ","target":"MÃ¥l","targetNew":"Nytt fönster (_blank)","targetTop":"Översta fönstret (_top)","targetSelf":"Samma fönster (_self)","targetParent":"FöregÃ¥ende fönster (_parent)","langDirLTR":"Vänster till höger (LTR)","langDirRTL":"Höger till vänster (RTL)","styles":"Stil","cssClasses":"Stilmallar","width":"Bredd","height":"Höjd","align":"Justering","left":"Vänster","right":"Höger","center":"Centrerad","justify":"Justera till marginaler","alignLeft":"Vänsterjustera","alignRight":"Högerjustera","alignCenter":"Centrera","alignTop":"Överkant","alignMiddle":"Mitten","alignBottom":"Nederkant","alignNone":"Ingen","invalidValue":"Felaktigt värde.","invalidHeight":"Höjd mÃ¥ste vara ett nummer.","invalidWidth":"Bredd mÃ¥ste vara ett nummer.","invalidLength":"Värdet för fältet \"%1\" mÃ¥ste vara ett positivt nummer med eller utan en giltig mätenhet (%2).","invalidCssLength":"Värdet för fältet \"%1\" mÃ¥ste vara ett positivt nummer med eller utan CSS-mätenheter (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Värdet för fältet \"%1\" mÃ¥ste vara ett positivt nummer med eller utan godkända HTML-mätenheter (px eller %).","invalidInlineStyle":"Det angivna värdet för style mÃ¥ste innehÃ¥lla en eller flera tupler separerade med semikolon i följande format: \"name : value\"","cssLengthTooltip":"Ange ett nummer i pixlar eller ett nummer men godkänd CSS-mätenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, Ej tillgänglig</span>","keyboard":{"8":"Backsteg","13":"Retur","16":"Skift","17":"Ctrl","18":"Alt","32":"Mellanslag","35":"Slut","36":"Hem","46":"Radera","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Kommando"},"keyboardShortcut":"Kortkommando","optionDefault":"Standard"}}; \ No newline at end of file +CKEDITOR.lang['sv']={"widget":{"move":"Klicka och drag för att flytta","label":"%1-widget"},"undo":{"redo":"Gör om","undo":"Ã…ngra"},"toolbar":{"toolbarCollapse":"Dölj verktygsfält","toolbarExpand":"Visa verktygsfält","toolbarGroups":{"document":"Dokument","clipboard":"Urklipp/Ã¥ngra","editing":"Redigering","forms":"Formulär","basicstyles":"Basstilar","paragraph":"Paragraf","links":"Länkar","insert":"Infoga","styles":"Stilar","colors":"Färger","tools":"Verktyg"},"toolbars":"Editorns verktygsfält"},"table":{"border":"Kantstorlek","caption":"Rubrik","cell":{"menu":"Cell","insertBefore":"Lägg till cell före","insertAfter":"Lägg till cell efter","deleteCell":"Radera celler","merge":"Sammanfoga celler","mergeRight":"Sammanfoga höger","mergeDown":"Sammanfoga ner","splitHorizontal":"Dela cell horisontellt","splitVertical":"Dela cell vertikalt","title":"Egenskaper för cell","cellType":"Celltyp","rowSpan":"Rad spann","colSpan":"Kolumnen spann","wordWrap":"Radbrytning","hAlign":"Horisontell justering","vAlign":"Vertikal justering","alignBaseline":"Baslinje","bgColor":"Bakgrundsfärg","borderColor":"Ramfärg","data":"Data","header":"Rubrik","yes":"Ja","no":"Nej","invalidWidth":"Cellens bredd mÃ¥ste vara ett nummer.","invalidHeight":"Cellens höjd mÃ¥ste vara ett nummer.","invalidRowSpan":"Radutvidgning mÃ¥ste vara ett heltal.","invalidColSpan":"Kolumn mÃ¥ste vara ett heltal.","chooseColor":"Välj"},"cellPad":"Cellutfyllnad","cellSpace":"CellavstÃ¥nd","column":{"menu":"Kolumn","insertBefore":"Lägg till kolumn före","insertAfter":"Lägg till kolumn efter","deleteColumn":"Radera kolumn"},"columns":"Kolumner","deleteTable":"Radera tabell","headers":"Rubriker","headersBoth":"BÃ¥da","headersColumn":"Första kolumnen","headersNone":"Ingen","headersRow":"Första raden","heightUnit":"Enhetshöjd","invalidBorder":"Ram mÃ¥ste vara ett nummer.","invalidCellPadding":"Luft i cell mÃ¥ste vara ett nummer.","invalidCellSpacing":"Luft i cell mÃ¥ste vara ett nummer.","invalidCols":"Antal kolumner mÃ¥ste vara ett nummer större än 0.","invalidHeight":"Tabellens höjd mÃ¥ste vara ett nummer.","invalidRows":"Antal rader mÃ¥ste vara större än 0.","invalidWidth":"Tabell mÃ¥ste vara ett nummer.","menu":"Tabellegenskaper","row":{"menu":"Rad","insertBefore":"Lägg till rad före","insertAfter":"Lägg till rad efter","deleteRow":"Radera rad"},"rows":"Rader","summary":"Sammanfattning","title":"Tabellegenskaper","toolbar":"Tabell","widthPc":"procent","widthPx":"pixlar","widthUnit":"enhet bredd"},"stylescombo":{"label":"Stilar","panelTitle":"Formateringsstilar","panelTitle1":"Blockstilar","panelTitle2":"Inbäddade stilar","panelTitle3":"Objektstilar"},"specialchar":{"options":"Alternativ för utökade tecken","title":"Välj utökat tecken","toolbar":"Klistra in utökat tecken"},"sourcedialog":{"toolbar":"Källa","title":"Källa"},"sourcearea":{"toolbar":"Källa"},"showblocks":{"toolbar":"Visa block"},"removeformat":{"toolbar":"Radera formatering"},"pastetext":{"button":"Klistra in som vanlig text","pasteNotification":"Tryck pÃ¥ %1 för att klistra in. Din webbläsare stödjer inte inklistring via verktygsfältet eller snabbmenyn.","title":"Klistra in som vanlig text"},"pastefromword":{"confirmCleanup":"Texten du vill klistra in verkar vara kopierad frÃ¥n Word. Vill du rensa den innan du klistrar in den?","error":"Det var inte möjligt att städa upp den inklistrade data pÃ¥ grund av ett internt fel","title":"Klistra in frÃ¥n Word","toolbar":"Klistra in frÃ¥n Word"},"notification":{"closed":"Notifiering stängd."},"maximize":{"maximize":"Maximera","minimize":"Minimera"},"magicline":{"title":"Infoga paragraf här"},"list":{"bulletedlist":"Infoga/ta bort punktlista","numberedlist":"Infoga/ta bort numrerad lista"},"language":{"button":"Sätt sprÃ¥k","remove":"Ta bort sprÃ¥k"},"indent":{"indent":"Öka indrag","outdent":"Minska indrag"},"image2":{"alt":"Alternativ text","btnUpload":"Skicka till server","captioned":"Rubricerad bild","captionPlaceholder":"Bildtext","infoTab":"Bildinformation","lockRatio":"LÃ¥s höjd/bredd förhÃ¥llanden","menu":"Bildegenskaper","pathName":"bild","pathNameCaption":"rubrik","resetSize":"Ã…terställ storlek","resizer":"Klicka och drag för att ändra storlek","title":"Bildegenskaper","uploadTab":"Ladda upp","urlMissing":"Bildkällans URL saknas.","altMissing":"Alternativ text saknas"},"horizontalrule":{"toolbar":"Infoga horisontal linje"},"format":{"label":"Teckenformat","panelTitle":"Teckenformat","tag_address":"Adress","tag_div":"Normal (DIV)","tag_h1":"Rubrik 1","tag_h2":"Rubrik 2","tag_h3":"Rubrik 3","tag_h4":"Rubrik 4","tag_h5":"Rubrik 5","tag_h6":"Rubrik 6","tag_p":"Normal","tag_pre":"Formaterad"},"filetools":{"loadError":"Fel uppstod vid filläsning","networkError":"Nätverksfel uppstod vid filuppladdning.","httpError404":"HTTP-fel uppstod vid filuppladdning (404: Fil hittades inte).","httpError403":"HTTP-fel uppstod vid filuppladdning (403: Förbjuden).","httpError":"HTTP-fel uppstod vid filuppladdning (felstatus: %1).","noUrlError":"URL för uppladdning inte definierad.","responseError":"Felaktigt serversvar."},"elementspath":{"eleLabel":"Elementets sökväg","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"Kopiera","copyError":"Säkerhetsinställningar i din webbläsare tillÃ¥ter inte Ã¥tgärden kopiera. Använd (Ctrl/Cmd+C) istället.","cut":"Klipp ut","cutError":"Säkerhetsinställningar i din webbläsare tillÃ¥ter inte Ã¥tgärden klipp ut. Använd (Ctrl/Cmd+X) istället.","paste":"Klistra in","pasteNotification":"Tryck pÃ¥ %1 för att klistra in. Din webbläsare stödjer inte inklistring via verktygsfältet eller snabbmenyn.","pasteArea":"InklistringsomrÃ¥de","pasteMsg":"Klistra in ditt innehÃ¥ll i omrÃ¥det nedan och tryck pÃ¥ OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Blockcitat"},"basicstyles":{"bold":"Fet","italic":"Kursiv","strike":"Genomstruken","subscript":"Nedsänkta tecken","superscript":"Upphöjda tecken","underline":"Understruken"},"about":{"copy":"Copyright © $1. Alla rättigheter reserverade.","dlgTitle":"Om CKEditor 4","moreInfo":"För information om licensiering besök vÃ¥r hemsida:"},"editor":"Rich Text-editor","editorPanel":"Panel till Rich Text-editor","common":{"editorHelp":"Tryck ALT 0 för hjälp","browseServer":"Bläddra pÃ¥ server","url":"URL","protocol":"Protokoll","upload":"Ladda upp","uploadSubmit":"Skicka till server","image":"Bild","form":"Formulär","checkbox":"Kryssruta","radio":"Alternativknapp","textField":"Textfält","textarea":"Textruta","hiddenField":"Dolt fält","button":"Knapp","select":"Flervalslista","imageButton":"Bildknapp","notSet":"<ej angivet>","id":"Id","name":"Namn","langDir":"SprÃ¥kriktning","langDirLtr":"Vänster till Höger (VTH)","langDirRtl":"Höger till Vänster (HTV)","langCode":"SprÃ¥kkod","longDescr":"URL-beskrivning","cssClass":"Stilmall","advisoryTitle":"Titel","cssStyle":"Stilmall","ok":"OK","cancel":"Avbryt","close":"Stäng","preview":"Förhandsgranska","resize":"Dra för att ändra storlek","generalTab":"Allmänt","advancedTab":"Avancerad","validateNumberFailed":"Värdet är inte ett nummer.","confirmNewPage":"Alla ändringar i innehÃ¥llet kommer att förloras. Är du säker pÃ¥ att du vill ladda en ny sida?","confirmCancel":"NÃ¥gra av alternativen har ändrats. Är du säker pÃ¥ att du vill stänga dialogrutan?","options":"Alternativ","target":"MÃ¥l","targetNew":"Nytt fönster (_blank)","targetTop":"Översta fönstret (_top)","targetSelf":"Samma fönster (_self)","targetParent":"FöregÃ¥ende fönster (_parent)","langDirLTR":"Vänster till höger (LTR)","langDirRTL":"Höger till vänster (RTL)","styles":"Stil","cssClasses":"Stilmallar","width":"Bredd","height":"Höjd","align":"Justering","left":"Vänster","right":"Höger","center":"Centrerad","justify":"Justera till marginaler","alignLeft":"Vänsterjustera","alignRight":"Högerjustera","alignCenter":"Centrera","alignTop":"Överkant","alignMiddle":"Mitten","alignBottom":"Nederkant","alignNone":"Ingen","invalidValue":"Felaktigt värde.","invalidHeight":"Höjd mÃ¥ste vara ett nummer.","invalidWidth":"Bredd mÃ¥ste vara ett nummer.","invalidLength":"Värdet för fältet \"%1\" mÃ¥ste vara ett positivt nummer med eller utan en giltig mätenhet (%2).","invalidCssLength":"Värdet för fältet \"%1\" mÃ¥ste vara ett positivt nummer med eller utan CSS-mätenheter (px, %, in, cm, mm, em, ex, pt, eller pc).","invalidHtmlLength":"Värdet för fältet \"%1\" mÃ¥ste vara ett positivt nummer med eller utan godkända HTML-mätenheter (px eller %).","invalidInlineStyle":"Det angivna värdet för style mÃ¥ste innehÃ¥lla en eller flera tupler separerade med semikolon i följande format: \"name : value\"","cssLengthTooltip":"Ange ett nummer i pixlar eller ett nummer men godkänd CSS-mätenhet (px, %, in, cm, mm, em, ex, pt, eller pc).","unavailable":"%1<span class=\"cke_accessibility\">, Ej tillgänglig</span>","keyboard":{"8":"Backsteg","13":"Retur","16":"Skift","17":"Ctrl","18":"Alt","32":"Mellanslag","35":"Slut","36":"Hem","46":"Radera","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Kommando"},"keyboardShortcut":"Kortkommando","optionDefault":"Standard"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/th.js b/core/assets/vendor/ckeditor/lang/th.js index a8cbd86ea0ea..79acc5fbc8ca 100644 --- a/core/assets/vendor/ckeditor/lang/th.js +++ b/core/assets/vendor/ckeditor/lang/th.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['th']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"ทำซ้ำคำสั่ง","undo":"ยà¸à¹€à¸¥à¸´à¸à¸„ำสั่ง"},"toolbar":{"toolbarCollapse":"ซ่à¸à¸™à¹à¸–บเครื่à¸à¸‡à¸¡à¸·à¸","toolbarExpand":"เปิดà¹à¸–บเครื่à¸à¸‡à¸¡à¸·à¸","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"à¹à¸–บเครื่à¸à¸‡à¸¡à¸·à¸à¸Šà¹ˆà¸§à¸¢à¸žà¸´à¸¡à¸žà¹Œà¸‚้à¸à¸„วาม"},"table":{"border":"ขนาดเส้นขà¸à¸š","caption":"หัวเรื่à¸à¸‡à¸‚à¸à¸‡à¸•à¸²à¸£à¸²à¸‡","cell":{"menu":"ช่à¸à¸‡à¸•à¸²à¸£à¸²à¸‡","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"ลบช่à¸à¸‡","merge":"ผสานช่à¸à¸‡","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"ระยะà¹à¸™à¸§à¸•à¸±à¹‰à¸‡","cellSpace":"ระยะà¹à¸™à¸§à¸™à¸à¸™à¸™","column":{"menu":"คà¸à¸¥à¸±à¸¡à¸™à¹Œ","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"ลบสดมน์"},"columns":"สดมน์","deleteTable":"ลบตาราง","headers":"ส่วนหัว","headersBoth":"ทั้งสà¸à¸‡à¸à¸¢à¹ˆà¸²à¸‡","headersColumn":"คà¸à¸¥à¸±à¸¡à¸™à¹Œà¹à¸£à¸","headersNone":"None","headersRow":"à¹à¸–วà¹à¸£à¸","heightUnit":"height unit","invalidBorder":"ขนาดเส้นà¸à¸£à¸à¸šà¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸ˆà¸³à¸™à¸§à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","invalidCellPadding":"ช่à¸à¸‡à¸§à¹ˆà¸²à¸‡à¸ ายในเซลล์ต้à¸à¸‡à¹€à¸¥à¸‚จำนวนบวà¸","invalidCellSpacing":"ช่à¸à¸‡à¸§à¹ˆà¸²à¸‡à¸ ายในเซลล์ต้à¸à¸‡à¹€à¸›à¹‡à¸™à¹€à¸¥à¸‚จำนวนบวà¸","invalidCols":"จำนวนคà¸à¸¥à¸±à¸¡à¸™à¹Œà¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸ˆà¸³à¸™à¸§à¸™à¸¡à¸²à¸à¸à¸§à¹ˆà¸² 0","invalidHeight":"ส่วนสูงขà¸à¸‡à¸•à¸²à¸£à¸²à¸‡à¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","invalidRows":"จำนวนขà¸à¸‡à¹à¸–วต้à¸à¸‡à¹€à¸›à¹‡à¸™à¸ˆà¸³à¸™à¸§à¸™à¸¡à¸²à¸à¸à¸§à¹ˆà¸² 0","invalidWidth":"ความà¸à¸§à¹‰à¸²à¸‡à¸•à¸²à¸£à¸²à¸‡à¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","menu":"คุณสมบัติขà¸à¸‡ ตาราง","row":{"menu":"à¹à¸–ว","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"ลบà¹à¸–ว"},"rows":"à¹à¸–ว","summary":"สรุปความ","title":"คุณสมบัติขà¸à¸‡ ตาราง","toolbar":"ตาราง","widthPc":"เปà¸à¸£à¹Œà¹€à¸‹à¹‡à¸™","widthPx":"จุดสี","widthUnit":"หน่วยความà¸à¸§à¹‰à¸²à¸‡"},"stylescombo":{"label":"ลัà¸à¸©à¸“ะ","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"à¹à¸—รà¸à¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©","toolbar":"à¹à¸—รà¸à¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©"},"sourcedialog":{"toolbar":"ดูรหัส HTML","title":"ดูรหัส HTML"},"sourcearea":{"toolbar":"ดูรหัส HTML"},"showblocks":{"toolbar":"à¹à¸ªà¸”งบล็à¸à¸„ข้à¸à¸¡à¸¹à¸¥"},"removeformat":{"toolbar":"ล้างรูปà¹à¸šà¸š"},"pastetext":{"button":"วางà¹à¸šà¸šà¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¸˜à¸£à¸£à¸¡à¸”า","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"วางà¹à¸šà¸šà¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¸˜à¸£à¸£à¸¡à¸”า"},"pastefromword":{"confirmCleanup":"ข้à¸à¸„วามที่คุณต้à¸à¸‡à¸à¸²à¸£à¸§à¸²à¸‡à¸¥à¸‡à¹„ปเป็นข้à¸à¸„วามที่คัดลà¸à¸à¸¡à¸²à¸ˆà¸²à¸à¹‚ปรà¹à¸à¸£à¸¡à¹„มโครซà¸à¸Ÿà¸—์เวิร์ด คุณต้à¸à¸‡à¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¸„่าข้à¸à¸„วามดังà¸à¸¥à¹ˆà¸²à¸§à¸à¹ˆà¸à¸™à¸§à¸²à¸‡à¸¥à¸‡à¹„ปหรืà¸à¹„ม่?","error":"ไม่สามารถล้างข้à¸à¸¡à¸¹à¸¥à¸—ี่ต้à¸à¸‡à¸à¸²à¸£à¸§à¸²à¸‡à¹„ด้เนื่à¸à¸‡à¸ˆà¸²à¸à¹€à¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดภายในระบบ","title":"วางสำเนาจาà¸à¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¹€à¸§à¸´à¸£à¹Œà¸”","toolbar":"วางสำเนาจาà¸à¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¹€à¸§à¸´à¸£à¹Œà¸”"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"ขยายใหà¸à¹ˆ","minimize":"ย่à¸à¸‚นาด"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์","numberedlist":"ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸•à¸±à¸§à¹€à¸¥à¸‚"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"เพิ่มระยะย่à¸à¸«à¸™à¹‰à¸²","outdent":"ลดระยะย่à¸à¸«à¸™à¹‰à¸²"},"image2":{"alt":"คำประà¸à¸à¸šà¸£à¸¹à¸›à¸ าพ","btnUpload":"à¸à¸±à¸žà¹‚หลดไฟล์ไปเà¸à¹‡à¸šà¹„ว้ที่เครื่à¸à¸‡à¹à¸¡à¹ˆà¸‚่าย (เซิร์ฟเวà¸à¸£à¹Œ)","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"ข้à¸à¸¡à¸¹à¸¥à¸‚à¸à¸‡à¸£à¸¹à¸›à¸ าพ","lockRatio":"à¸à¸³à¸«à¸™à¸”à¸à¸±à¸•à¸£à¸²à¸ªà¹ˆà¸§à¸™ à¸à¸§à¹‰à¸²à¸‡-สูง à¹à¸šà¸šà¸„งที่","menu":"คุณสมบัติขà¸à¸‡ รูปภาพ","pathName":"image","pathNameCaption":"caption","resetSize":"à¸à¸³à¸«à¸™à¸”รูปเท่าขนาดจริง","resizer":"Click and drag to resize","title":"คุณสมบัติขà¸à¸‡ รูปภาพ","uploadTab":"à¸à¸±à¸žà¹‚หลดไฟล์","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"à¹à¸—รà¸à¹€à¸ªà¹‰à¸™à¸„ั่นบรรทัด"},"format":{"label":"รูปà¹à¸šà¸š","panelTitle":"รูปà¹à¸šà¸š","tag_address":"Address","tag_div":"Paragraph (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"สำเนา","copyError":"ไม่สามารถสำเนาข้à¸à¸„วามที่เลืà¸à¸à¹„ว้ได้เนื่à¸à¸‡à¸ˆà¸²à¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าระดับความปลà¸à¸”ภัย. à¸à¸£à¸¸à¸“าใช้ปุ่มลัดเพื่à¸à¸§à¸²à¸‡à¸‚้à¸à¸„วามà¹à¸—น (à¸à¸”ปุ่ม Ctrl/Cmd à¹à¸¥à¸°à¸•à¸±à¸§ C พร้à¸à¸¡à¸à¸±à¸™).","cut":"ตัด","cutError":"ไม่สามารถตัดข้à¸à¸„วามที่เลืà¸à¸à¹„ว้ได้เนื่à¸à¸‡à¸ˆà¸²à¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าระดับความปลà¸à¸”ภัย. à¸à¸£à¸¸à¸“าใช้ปุ่มลัดเพื่à¸à¸§à¸²à¸‡à¸‚้à¸à¸„วามà¹à¸—น (à¸à¸”ปุ่ม Ctrl/Cmd à¹à¸¥à¸°à¸•à¸±à¸§ X พร้à¸à¸¡à¸à¸±à¸™).","paste":"วาง","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"ตัวหนา","italic":"ตัวเà¸à¸µà¸¢à¸‡","strike":"ตัวขีดเส้นทับ","subscript":"ตัวห้à¸à¸¢","superscript":"ตัวยà¸","underline":"ตัวขีดเส้นใต้"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"à¸à¸” ALT 0 หาà¸à¸•à¹‰à¸à¸‡à¸à¸²à¸£à¸„วามช่วยเหลืà¸","browseServer":"เปิดหน้าต่างจัดà¸à¸²à¸£à¹„ฟล์à¸à¸±à¸žà¹‚หลด","url":"ที่à¸à¸¢à¸¹à¹ˆà¸à¹‰à¸²à¸‡à¸à¸´à¸‡ URL","protocol":"โปรโตคà¸à¸¥","upload":"à¸à¸±à¸žà¹‚หลดไฟล์","uploadSubmit":"à¸à¸±à¸žà¹‚หลดไฟล์ไปเà¸à¹‡à¸šà¹„ว้ที่เครื่à¸à¸‡à¹à¸¡à¹ˆà¸‚่าย (เซิร์ฟเวà¸à¸£à¹Œ)","image":"รูปภาพ","flash":"ไฟล์ Flash","form":"à¹à¸šà¸šà¸Ÿà¸à¸£à¹Œà¸¡","checkbox":"เช็คบ๊à¸à¸","radio":"เรดิโà¸à¸šà¸±à¸•à¸•à¸à¸™","textField":"เท็à¸à¸‹à¹Œà¸Ÿà¸´à¸¥à¸”์","textarea":"เท็à¸à¸‹à¹Œà¹à¸à¹€à¸£à¸µà¸¢","hiddenField":"ฮิดเดนฟิลด์","button":"ปุ่ม","select":"à¹à¸–บตัวเลืà¸à¸","imageButton":"ปุ่มà¹à¸šà¸šà¸£à¸¹à¸›à¸ าพ","notSet":"<ไม่ระบุ>","id":"ไà¸à¸”ี","name":"ชื่à¸","langDir":"à¸à¸²à¸£à¹€à¸‚ียน-à¸à¹ˆà¸²à¸™à¸ าษา","langDirLtr":"จาà¸à¸‹à¹‰à¸²à¸¢à¹„ปขวา (LTR)","langDirRtl":"จาà¸à¸‚วามาซ้าย (RTL)","langCode":"รหัสภาษา","longDescr":"คำà¸à¸˜à¸´à¸šà¸²à¸¢à¸›à¸£à¸°à¸à¸à¸š URL","cssClass":"คลาสขà¸à¸‡à¹„ฟล์à¸à¸³à¸«à¸™à¸”ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล","advisoryTitle":"คำเà¸à¸£à¸´à¹ˆà¸™à¸™à¸³","cssStyle":"ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล","ok":"ตà¸à¸¥à¸‡","cancel":"ยà¸à¹€à¸¥à¸´à¸","close":"ปิด","preview":"ดูหน้าเà¸à¸à¸ªà¸²à¸£à¸•à¸±à¸§à¸à¸¢à¹ˆà¸²à¸‡","resize":"ปรับขนาด","generalTab":"ทั่วไป","advancedTab":"ขั้นสูง","validateNumberFailed":"ค่านี้ไม่ใช่ตัวเลข","confirmNewPage":"à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¹ƒà¸”ๆ ในเนื้à¸à¸«à¸²à¸™à¸µà¹‰ ที่ไม่ได้ถูà¸à¸šà¸±à¸™à¸—ึà¸à¹„ว้ จะสูà¸à¸«à¸²à¸¢à¸—ั้งหมด คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸ˆà¸°à¹€à¸£à¸µà¸¢à¸à¸«à¸™à¹‰à¸²à¹ƒà¸«à¸¡à¹ˆ?","confirmCancel":"ตัวเลืà¸à¸à¸šà¸²à¸‡à¸•à¸±à¸§à¸¡à¸µà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸ˆà¸°à¸›à¸´à¸”à¸à¸¥à¹ˆà¸à¸‡à¹‚ต้ตà¸à¸šà¸™à¸µà¹‰?","options":"ตัวเลืà¸à¸","target":"à¸à¸²à¸£à¹€à¸›à¸´à¸”หน้าลิงค์","targetNew":"หน้าต่างใหม่ (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"หน้าต่างเดียวà¸à¸±à¸™ (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"จาà¸à¸‹à¹‰à¸²à¸¢à¹„ปขวา (LTR)","langDirRTL":"จาà¸à¸‚วามาซ้าย (RTL)","styles":"ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล","cssClasses":"คลาสขà¸à¸‡à¹„ฟล์à¸à¸³à¸«à¸™à¸”ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล","width":"ความà¸à¸§à¹‰à¸²à¸‡","height":"ความสูง","align":"à¸à¸²à¸£à¸ˆà¸±à¸”วาง","left":"ชิดซ้าย","right":"ชิดขวา","center":"à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡","justify":"நியாயபà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯","alignLeft":"จัดชิดซ้าย","alignRight":"จัดชิดขวา","alignCenter":"Align Center","alignTop":"บนสุด","alignMiddle":"à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡à¹à¸™à¸§à¸•à¸±à¹‰à¸‡","alignBottom":"ชิดด้านล่าง","alignNone":"None","invalidValue":"ค่าไม่ถูà¸à¸•à¹‰à¸à¸‡","invalidHeight":"ความสูงต้à¸à¸‡à¹€à¸›à¹‡à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","invalidWidth":"ความà¸à¸§à¹‰à¸²à¸‡à¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['th']={"widget":{"move":"Click and drag to move","label":"%1 widget"},"undo":{"redo":"ทำซ้ำคำสั่ง","undo":"ยà¸à¹€à¸¥à¸´à¸à¸„ำสั่ง"},"toolbar":{"toolbarCollapse":"ซ่à¸à¸™à¹à¸–บเครื่à¸à¸‡à¸¡à¸·à¸","toolbarExpand":"เปิดà¹à¸–บเครื่à¸à¸‡à¸¡à¸·à¸","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"à¹à¸–บเครื่à¸à¸‡à¸¡à¸·à¸à¸Šà¹ˆà¸§à¸¢à¸žà¸´à¸¡à¸žà¹Œà¸‚้à¸à¸„วาม"},"table":{"border":"ขนาดเส้นขà¸à¸š","caption":"หัวเรื่à¸à¸‡à¸‚à¸à¸‡à¸•à¸²à¸£à¸²à¸‡","cell":{"menu":"ช่à¸à¸‡à¸•à¸²à¸£à¸²à¸‡","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"ลบช่à¸à¸‡","merge":"ผสานช่à¸à¸‡","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"ระยะà¹à¸™à¸§à¸•à¸±à¹‰à¸‡","cellSpace":"ระยะà¹à¸™à¸§à¸™à¸à¸™à¸™","column":{"menu":"คà¸à¸¥à¸±à¸¡à¸™à¹Œ","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"ลบสดมน์"},"columns":"สดมน์","deleteTable":"ลบตาราง","headers":"ส่วนหัว","headersBoth":"ทั้งสà¸à¸‡à¸à¸¢à¹ˆà¸²à¸‡","headersColumn":"คà¸à¸¥à¸±à¸¡à¸™à¹Œà¹à¸£à¸","headersNone":"None","headersRow":"à¹à¸–วà¹à¸£à¸","heightUnit":"height unit","invalidBorder":"ขนาดเส้นà¸à¸£à¸à¸šà¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸ˆà¸³à¸™à¸§à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","invalidCellPadding":"ช่à¸à¸‡à¸§à¹ˆà¸²à¸‡à¸ ายในเซลล์ต้à¸à¸‡à¹€à¸¥à¸‚จำนวนบวà¸","invalidCellSpacing":"ช่à¸à¸‡à¸§à¹ˆà¸²à¸‡à¸ ายในเซลล์ต้à¸à¸‡à¹€à¸›à¹‡à¸™à¹€à¸¥à¸‚จำนวนบวà¸","invalidCols":"จำนวนคà¸à¸¥à¸±à¸¡à¸™à¹Œà¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸ˆà¸³à¸™à¸§à¸™à¸¡à¸²à¸à¸à¸§à¹ˆà¸² 0","invalidHeight":"ส่วนสูงขà¸à¸‡à¸•à¸²à¸£à¸²à¸‡à¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","invalidRows":"จำนวนขà¸à¸‡à¹à¸–วต้à¸à¸‡à¹€à¸›à¹‡à¸™à¸ˆà¸³à¸™à¸§à¸™à¸¡à¸²à¸à¸à¸§à¹ˆà¸² 0","invalidWidth":"ความà¸à¸§à¹‰à¸²à¸‡à¸•à¸²à¸£à¸²à¸‡à¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","menu":"คุณสมบัติขà¸à¸‡ ตาราง","row":{"menu":"à¹à¸–ว","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"ลบà¹à¸–ว"},"rows":"à¹à¸–ว","summary":"สรุปความ","title":"คุณสมบัติขà¸à¸‡ ตาราง","toolbar":"ตาราง","widthPc":"เปà¸à¸£à¹Œà¹€à¸‹à¹‡à¸™","widthPx":"จุดสี","widthUnit":"หน่วยความà¸à¸§à¹‰à¸²à¸‡"},"stylescombo":{"label":"ลัà¸à¸©à¸“ะ","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"specialchar":{"options":"Special Character Options","title":"à¹à¸—รà¸à¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©","toolbar":"à¹à¸—รà¸à¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©"},"sourcedialog":{"toolbar":"ดูรหัส HTML","title":"ดูรหัส HTML"},"sourcearea":{"toolbar":"ดูรหัส HTML"},"showblocks":{"toolbar":"à¹à¸ªà¸”งบล็à¸à¸„ข้à¸à¸¡à¸¹à¸¥"},"removeformat":{"toolbar":"ล้างรูปà¹à¸šà¸š"},"pastetext":{"button":"วางà¹à¸šà¸šà¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¸˜à¸£à¸£à¸¡à¸”า","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"วางà¹à¸šà¸šà¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¸˜à¸£à¸£à¸¡à¸”า"},"pastefromword":{"confirmCleanup":"ข้à¸à¸„วามที่คุณต้à¸à¸‡à¸à¸²à¸£à¸§à¸²à¸‡à¸¥à¸‡à¹„ปเป็นข้à¸à¸„วามที่คัดลà¸à¸à¸¡à¸²à¸ˆà¸²à¸à¹‚ปรà¹à¸à¸£à¸¡à¹„มโครซà¸à¸Ÿà¸—์เวิร์ด คุณต้à¸à¸‡à¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¸„่าข้à¸à¸„วามดังà¸à¸¥à¹ˆà¸²à¸§à¸à¹ˆà¸à¸™à¸§à¸²à¸‡à¸¥à¸‡à¹„ปหรืà¸à¹„ม่?","error":"ไม่สามารถล้างข้à¸à¸¡à¸¹à¸¥à¸—ี่ต้à¸à¸‡à¸à¸²à¸£à¸§à¸²à¸‡à¹„ด้เนื่à¸à¸‡à¸ˆà¸²à¸à¹€à¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดภายในระบบ","title":"วางสำเนาจาà¸à¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¹€à¸§à¸´à¸£à¹Œà¸”","toolbar":"วางสำเนาจาà¸à¸•à¸±à¸§à¸à¸±à¸à¸©à¸£à¹€à¸§à¸´à¸£à¹Œà¸”"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"ขยายใหà¸à¹ˆ","minimize":"ย่à¸à¸‚นาด"},"magicline":{"title":"Insert paragraph here"},"list":{"bulletedlist":"ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์","numberedlist":"ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸•à¸±à¸§à¹€à¸¥à¸‚"},"language":{"button":"Set language","remove":"Remove language"},"indent":{"indent":"เพิ่มระยะย่à¸à¸«à¸™à¹‰à¸²","outdent":"ลดระยะย่à¸à¸«à¸™à¹‰à¸²"},"image2":{"alt":"คำประà¸à¸à¸šà¸£à¸¹à¸›à¸ าพ","btnUpload":"à¸à¸±à¸žà¹‚หลดไฟล์ไปเà¸à¹‡à¸šà¹„ว้ที่เครื่à¸à¸‡à¹à¸¡à¹ˆà¸‚่าย (เซิร์ฟเวà¸à¸£à¹Œ)","captioned":"Captioned image","captionPlaceholder":"Caption","infoTab":"ข้à¸à¸¡à¸¹à¸¥à¸‚à¸à¸‡à¸£à¸¹à¸›à¸ าพ","lockRatio":"à¸à¸³à¸«à¸™à¸”à¸à¸±à¸•à¸£à¸²à¸ªà¹ˆà¸§à¸™ à¸à¸§à¹‰à¸²à¸‡-สูง à¹à¸šà¸šà¸„งที่","menu":"คุณสมบัติขà¸à¸‡ รูปภาพ","pathName":"image","pathNameCaption":"caption","resetSize":"à¸à¸³à¸«à¸™à¸”รูปเท่าขนาดจริง","resizer":"Click and drag to resize","title":"คุณสมบัติขà¸à¸‡ รูปภาพ","uploadTab":"à¸à¸±à¸žà¹‚หลดไฟล์","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"à¹à¸—รà¸à¹€à¸ªà¹‰à¸™à¸„ั่นบรรทัด"},"format":{"label":"รูปà¹à¸šà¸š","panelTitle":"รูปà¹à¸šà¸š","tag_address":"Address","tag_div":"Paragraph (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"contextmenu":{"options":"Context Menu Options"},"clipboard":{"copy":"สำเนา","copyError":"ไม่สามารถสำเนาข้à¸à¸„วามที่เลืà¸à¸à¹„ว้ได้เนื่à¸à¸‡à¸ˆà¸²à¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าระดับความปลà¸à¸”ภัย. à¸à¸£à¸¸à¸“าใช้ปุ่มลัดเพื่à¸à¸§à¸²à¸‡à¸‚้à¸à¸„วามà¹à¸—น (à¸à¸”ปุ่ม Ctrl/Cmd à¹à¸¥à¸°à¸•à¸±à¸§ C พร้à¸à¸¡à¸à¸±à¸™).","cut":"ตัด","cutError":"ไม่สามารถตัดข้à¸à¸„วามที่เลืà¸à¸à¹„ว้ได้เนื่à¸à¸‡à¸ˆà¸²à¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าระดับความปลà¸à¸”ภัย. à¸à¸£à¸¸à¸“าใช้ปุ่มลัดเพื่à¸à¸§à¸²à¸‡à¸‚้à¸à¸„วามà¹à¸—น (à¸à¸”ปุ่ม Ctrl/Cmd à¹à¸¥à¸°à¸•à¸±à¸§ X พร้à¸à¸¡à¸à¸±à¸™).","paste":"วาง","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Paste Area","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Block Quote"},"basicstyles":{"bold":"ตัวหนา","italic":"ตัวเà¸à¸µà¸¢à¸‡","strike":"ตัวขีดเส้นทับ","subscript":"ตัวห้à¸à¸¢","superscript":"ตัวยà¸","underline":"ตัวขีดเส้นใต้"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"About CKEditor 4","moreInfo":"For licensing information please visit our web site:"},"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"à¸à¸” ALT 0 หาà¸à¸•à¹‰à¸à¸‡à¸à¸²à¸£à¸„วามช่วยเหลืà¸","browseServer":"เปิดหน้าต่างจัดà¸à¸²à¸£à¹„ฟล์à¸à¸±à¸žà¹‚หลด","url":"ที่à¸à¸¢à¸¹à¹ˆà¸à¹‰à¸²à¸‡à¸à¸´à¸‡ URL","protocol":"โปรโตคà¸à¸¥","upload":"à¸à¸±à¸žà¹‚หลดไฟล์","uploadSubmit":"à¸à¸±à¸žà¹‚หลดไฟล์ไปเà¸à¹‡à¸šà¹„ว้ที่เครื่à¸à¸‡à¹à¸¡à¹ˆà¸‚่าย (เซิร์ฟเวà¸à¸£à¹Œ)","image":"รูปภาพ","form":"à¹à¸šà¸šà¸Ÿà¸à¸£à¹Œà¸¡","checkbox":"เช็คบ๊à¸à¸","radio":"เรดิโà¸à¸šà¸±à¸•à¸•à¸à¸™","textField":"เท็à¸à¸‹à¹Œà¸Ÿà¸´à¸¥à¸”์","textarea":"เท็à¸à¸‹à¹Œà¹à¸à¹€à¸£à¸µà¸¢","hiddenField":"ฮิดเดนฟิลด์","button":"ปุ่ม","select":"à¹à¸–บตัวเลืà¸à¸","imageButton":"ปุ่มà¹à¸šà¸šà¸£à¸¹à¸›à¸ าพ","notSet":"<ไม่ระบุ>","id":"ไà¸à¸”ี","name":"ชื่à¸","langDir":"à¸à¸²à¸£à¹€à¸‚ียน-à¸à¹ˆà¸²à¸™à¸ าษา","langDirLtr":"จาà¸à¸‹à¹‰à¸²à¸¢à¹„ปขวา (LTR)","langDirRtl":"จาà¸à¸‚วามาซ้าย (RTL)","langCode":"รหัสภาษา","longDescr":"คำà¸à¸˜à¸´à¸šà¸²à¸¢à¸›à¸£à¸°à¸à¸à¸š URL","cssClass":"คลาสขà¸à¸‡à¹„ฟล์à¸à¸³à¸«à¸™à¸”ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล","advisoryTitle":"คำเà¸à¸£à¸´à¹ˆà¸™à¸™à¸³","cssStyle":"ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล","ok":"ตà¸à¸¥à¸‡","cancel":"ยà¸à¹€à¸¥à¸´à¸","close":"ปิด","preview":"ดูหน้าเà¸à¸à¸ªà¸²à¸£à¸•à¸±à¸§à¸à¸¢à¹ˆà¸²à¸‡","resize":"ปรับขนาด","generalTab":"ทั่วไป","advancedTab":"ขั้นสูง","validateNumberFailed":"ค่านี้ไม่ใช่ตัวเลข","confirmNewPage":"à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¹ƒà¸”ๆ ในเนื้à¸à¸«à¸²à¸™à¸µà¹‰ ที่ไม่ได้ถูà¸à¸šà¸±à¸™à¸—ึà¸à¹„ว้ จะสูà¸à¸«à¸²à¸¢à¸—ั้งหมด คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸ˆà¸°à¹€à¸£à¸µà¸¢à¸à¸«à¸™à¹‰à¸²à¹ƒà¸«à¸¡à¹ˆ?","confirmCancel":"ตัวเลืà¸à¸à¸šà¸²à¸‡à¸•à¸±à¸§à¸¡à¸µà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸ˆà¸°à¸›à¸´à¸”à¸à¸¥à¹ˆà¸à¸‡à¹‚ต้ตà¸à¸šà¸™à¸µà¹‰?","options":"ตัวเลืà¸à¸","target":"à¸à¸²à¸£à¹€à¸›à¸´à¸”หน้าลิงค์","targetNew":"หน้าต่างใหม่ (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"หน้าต่างเดียวà¸à¸±à¸™ (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"จาà¸à¸‹à¹‰à¸²à¸¢à¹„ปขวา (LTR)","langDirRTL":"จาà¸à¸‚วามาซ้าย (RTL)","styles":"ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล","cssClasses":"คลาสขà¸à¸‡à¹„ฟล์à¸à¸³à¸«à¸™à¸”ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล","width":"ความà¸à¸§à¹‰à¸²à¸‡","height":"ความสูง","align":"à¸à¸²à¸£à¸ˆà¸±à¸”วาง","left":"ชิดซ้าย","right":"ชิดขวา","center":"à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡","justify":"நியாயபà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯","alignLeft":"จัดชิดซ้าย","alignRight":"จัดชิดขวา","alignCenter":"Align Center","alignTop":"บนสุด","alignMiddle":"à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡à¹à¸™à¸§à¸•à¸±à¹‰à¸‡","alignBottom":"ชิดด้านล่าง","alignNone":"None","invalidValue":"ค่าไม่ถูà¸à¸•à¹‰à¸à¸‡","invalidHeight":"ความสูงต้à¸à¸‡à¹€à¸›à¹‡à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","invalidWidth":"ความà¸à¸§à¹‰à¸²à¸‡à¸•à¹‰à¸à¸‡à¹€à¸›à¹‡à¸™à¸•à¸±à¸§à¹€à¸¥à¸‚","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Delete","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/tr.js b/core/assets/vendor/ckeditor/lang/tr.js index 193cc902d536..87e679a945c8 100644 --- a/core/assets/vendor/ckeditor/lang/tr.js +++ b/core/assets/vendor/ckeditor/lang/tr.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['tr']={"widget":{"move":"Taşımak için, tıklayın ve sürükleyin","label":"%1 Grafik BeleÅŸeni"},"undo":{"redo":"Tekrarla","undo":"Geri Al"},"toolbar":{"toolbarCollapse":"Araç çubuklarını topla","toolbarExpand":"Araç çubuklarını aç","toolbarGroups":{"document":"Belge","clipboard":"Pano/Geri al","editing":"Düzenleme","forms":"Formlar","basicstyles":"Temel Stiller","paragraph":"Paragraf","links":"BaÄŸlantılar","insert":"Ekle","styles":"Stiller","colors":"Renkler","tools":"Araçlar"},"toolbars":"Araç çubukları Editörü"},"table":{"border":"Kenar Kalınlığı","caption":"BaÅŸlık","cell":{"menu":"Hücre","insertBefore":"Hücre Ekle - Önce","insertAfter":"Hücre Ekle - Sonra","deleteCell":"Hücre Sil","merge":"Hücreleri BirleÅŸtir","mergeRight":"BirleÅŸtir - SaÄŸdaki Ä°le ","mergeDown":"BirleÅŸtir - AÅŸağıdaki Ä°le ","splitHorizontal":"Hücreyi Yatay Böl","splitVertical":"Hücreyi Dikey Böl","title":"Hücre Özellikleri","cellType":"Hücre Tipi","rowSpan":"Satırlar Mesafesi (Span)","colSpan":"Sütünlar Mesafesi (Span)","wordWrap":"Kelime Kaydırma","hAlign":"Düşey Hizalama","vAlign":"YataÅŸ Hizalama","alignBaseline":"Tabana","bgColor":"Arkaplan Rengi","borderColor":"Çerçeve Rengi","data":"Veri","header":"BaÅŸlık","yes":"Evet","no":"Hayır","invalidWidth":"Hücre geniÅŸliÄŸi sayı olmalıdır.","invalidHeight":"Hücre yüksekliÄŸi sayı olmalıdır.","invalidRowSpan":"Satırların mesafesi tam sayı olmalıdır.","invalidColSpan":"Sütünların mesafesi tam sayı olmalıdır.","chooseColor":"Seçiniz"},"cellPad":"Izgara yazı arası","cellSpace":"Izgara kalınlığı","column":{"menu":"Sütun","insertBefore":"Kolon Ekle - Önce","insertAfter":"Kolon Ekle - Sonra","deleteColumn":"Sütun Sil"},"columns":"Sütunlar","deleteTable":"Tabloyu Sil","headers":"BaÅŸlıklar","headersBoth":"Her Ä°kisi","headersColumn":"Ä°lk Sütun","headersNone":"Yok","headersRow":"Ä°lk Satır","heightUnit":"yükseklik birimi","invalidBorder":"Çerceve büyüklüklüğü sayı olmalıdır.","invalidCellPadding":"Hücre aralığı (padding) sayı olmalıdır.","invalidCellSpacing":"Hücre boÅŸluÄŸu (spacing) sayı olmalıdır.","invalidCols":"Sütün sayısı 0 sayısından büyük olmalıdır.","invalidHeight":"Tablo yüksekliÄŸi sayı olmalıdır.","invalidRows":"Satır sayısı 0 sayısından büyük olmalıdır.","invalidWidth":"Tablo geniÅŸliÄŸi sayı olmalıdır.","menu":"Tablo Özellikleri","row":{"menu":"Satır","insertBefore":"Satır Ekle - Önce","insertAfter":"Satır Ekle - Sonra","deleteRow":"Satır Sil"},"rows":"Satırlar","summary":"Özet","title":"Tablo Özellikleri","toolbar":"Tablo","widthPc":"yüzde","widthPx":"piksel","widthUnit":"geniÅŸlik birimi"},"stylescombo":{"label":"Biçem","panelTitle":"Stilleri Düzenliyor","panelTitle1":"Blok Stilleri","panelTitle2":"Inline Stilleri","panelTitle3":"Nesne Stilleri"},"specialchar":{"options":"Özel Karakter Seçenekleri","title":"Özel Karakter Seç","toolbar":"Özel Karakter Ekle"},"sourcedialog":{"toolbar":"Kaynak","title":"Kaynak"},"sourcearea":{"toolbar":"Kaynak"},"showblocks":{"toolbar":"Blokları Göster"},"removeformat":{"toolbar":"Biçimi Kaldır"},"pastetext":{"button":"Düz metin olarak yapıştır","pasteNotification":"%1 tuÅŸuna yapıştırmak için tıklayın. Tarayıcınız, Araç ÇubuÄŸu yada İçerik Menüsünü kullanarak yapıştırmayı desteklemiyor.","title":"Düz metin olarak yapıştır"},"pastefromword":{"confirmCleanup":"Yapıştırmaya çalıştığınız metin Word'den kopyalanmıştır. Yapıştırmadan önce silmek istermisiniz?","error":"Yapıştırmadaki veri bilgisi hata düzelene kadar silinmeyecektir","title":"Word'den Yapıştır","toolbar":"Word'den Yapıştır"},"notification":{"closed":"Uyarılar kapatıldı."},"maximize":{"maximize":"Büyült","minimize":"Küçült"},"magicline":{"title":"ParaÄŸrafı buraya ekle"},"list":{"bulletedlist":"Simgeli Liste","numberedlist":"Numaralı Liste"},"language":{"button":"Dili seç","remove":"Dili kaldır"},"indent":{"indent":"Sekme Arttır","outdent":"Sekme Azalt"},"image2":{"alt":"Alternatif Yazı","btnUpload":"Sunucuya Yolla","captioned":"BaÅŸlıklı resim","captionPlaceholder":"BaÅŸlık","infoTab":"Resim Bilgisi","lockRatio":"Oranı Kilitle","menu":"Resim Özellikleri","pathName":"Resim","pathNameCaption":"baÅŸlık","resetSize":"Boyutu BaÅŸa Döndür","resizer":"Boyutlandırmak için, tıklayın ve sürükleyin","title":"Resim Özellikleri","uploadTab":"Karşıya Yükle","urlMissing":"Resmin URL kaynağı bulunamadı.","altMissing":"Alternatif yazı eksik."},"horizontalrule":{"toolbar":"Yatay Satır Ekle"},"format":{"label":"Biçim","panelTitle":"Biçim","tag_address":"Adres","tag_div":"Paragraf (DIV)","tag_h1":"BaÅŸlık 1","tag_h2":"BaÅŸlık 2","tag_h3":"BaÅŸlık 3","tag_h4":"BaÅŸlık 4","tag_h5":"BaÅŸlık 5","tag_h6":"BaÅŸlık 6","tag_p":"Normal","tag_pre":"Biçimli"},"filetools":{"loadError":"Dosya okunurken hata oluÅŸtu.","networkError":"Dosya gönderilirken aÄŸ hatası oluÅŸtu.","httpError404":"Dosya gönderilirken HTTP hatası oluÅŸtu (404: Dosya bulunamadı).","httpError403":"Dosya gönderilirken HTTP hatası oluÅŸtu (403: Yasaklı).","httpError":"Dosya gönderilirken HTTP hatası oluÅŸtu (hata durumu: %1).","noUrlError":"Gönderilecek URL belirtilmedi.","responseError":"Sunucu cevap veremedi."},"elementspath":{"eleLabel":"Elementlerin yolu","eleTitle":"%1 elementi"},"contextmenu":{"options":"İçerik Menüsü Seçenekleri"},"clipboard":{"copy":"Kopyala","copyError":"Tarayıcı yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama iÅŸlemine izin vermiyor. Ä°ÅŸlem için (Ctrl/Cmd+C) tuÅŸlarını kullanın.","cut":"Kes","cutError":"Tarayıcı yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme iÅŸlemine izin vermiyor. Ä°ÅŸlem için (Ctrl/Cmd+X) tuÅŸlarını kullanın.","paste":"Yapıştır","pasteNotification":"%1 tuÅŸuna yapıştırmak için tıklayın. Tarayıcınız, Araç ÇubuÄŸu yada İçerik Menüsünü kullanarak yapıştırmayı desteklemiyor.","pasteArea":"Yapıştırma Alanı","pasteMsg":"İçeriÄŸinizi alttaki bulunan alana yapıştırın ve TAMAM butonuna tıklayın"},"blockquote":{"toolbar":"Blok OluÅŸtur"},"basicstyles":{"bold":"Kalın","italic":"Ä°talik","strike":"Ãœstü Çizgili","subscript":"Alt Simge","superscript":"Ãœst Simge","underline":"Altı Çizgili"},"about":{"copy":"Copyright © $1. Tüm hakları saklıdır.","dlgTitle":"CKEditor Hakkında","moreInfo":"Lisanslama hakkında daha fazla bilgi almak için lütfen sitemizi ziyaret edin:"},"editor":"Zengin Metin Editörü","editorPanel":"Zengin Metin Editör Paneli","common":{"editorHelp":"Yardım için ALT 0 tuÅŸlarına basın","browseServer":"Sunucuya Gözat","url":"URL","protocol":"Protokol","upload":"Karşıya Yükle","uploadSubmit":"Sunucuya Gönder","image":"Resim","flash":"Flash","form":"Form","checkbox":"Seçim Kutusu","radio":"Seçenek Düğmesi","textField":"Metin Kutusu","textarea":"Metin Alanı","hiddenField":"Gizli Alan","button":"Düğme","select":"Seçme Alanı","imageButton":"Resim Düğmesi","notSet":"<tanımlanmamış>","id":"Kimlik","name":"Ä°sim","langDir":"Dil Yönü","langDirLtr":"Soldan SaÄŸa (LTR)","langDirRtl":"SaÄŸdan Sola (RTL)","langCode":" Dil Kodu","longDescr":"Uzun Açıklamalı URL","cssClass":"Stil Sınıfları","advisoryTitle":"Öneri BaÅŸlığı","cssStyle":"Stil","ok":"Tamam","cancel":"Ä°ptal","close":"Kapat","preview":"Önizleme","resize":"Yeniden Boyutlandır","generalTab":"Genel","advancedTab":"GeliÅŸmiÅŸ","validateNumberFailed":"Bu deÄŸer bir sayı deÄŸildir.","confirmNewPage":"Bu içerikle ilgili kaydedilmemiÅŸ tüm bilgiler kaybolacaktır. Yeni bir sayfa yüklemek istediÄŸinizden emin misiniz?","confirmCancel":"Bazı seçenekleri deÄŸiÅŸtirdiniz. Ä°letiÅŸim penceresini kapatmak istediÄŸinizden emin misiniz?","options":"Seçenekler","target":"Hedef","targetNew":"Yeni Pencere (_blank)","targetTop":"En Ãœstteki Pencere (_top)","targetSelf":"Aynı Pencere (_self)","targetParent":"Ãœst Pencere (_parent)","langDirLTR":"Soldan SaÄŸa (LTR)","langDirRTL":"SaÄŸdan Sola (RTL)","styles":"Stil","cssClasses":"Stil Sınıfları","width":"GeniÅŸlik","height":"Yükseklik","align":"Hizalama","left":"Sol","right":"SaÄŸ","center":"Ortala","justify":"Ä°ki Kenara Yaslanmış","alignLeft":"Sola Dayalı","alignRight":"SaÄŸa Dayalı","alignCenter":"Ortaya Hizala","alignTop":"Ãœst","alignMiddle":"Orta","alignBottom":"Alt","alignNone":"Hiçbiri","invalidValue":"Geçersiz deÄŸer.","invalidHeight":"Yükseklik deÄŸeri bir sayı olmalıdır.","invalidWidth":"GeniÅŸlik deÄŸeri bir sayı olmalıdır.","invalidLength":"\"%1\" alanı için belirtilen deÄŸer, geçerli bir ölçü birimi olsun veya olmasın (%2) pozitif bir sayı olmalıdır.","invalidCssLength":"\"%1\" alanı için verilen deÄŸer, geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt, veya pc) içeren veya içermeyen pozitif bir sayı olmalıdır.","invalidHtmlLength":"\"%1\" alanı için belirttiÄŸiniz sayı, HTML (px veya %) birimi olsun yada olmasın pozitif bir deÄŸeri olmalıdır.","invalidInlineStyle":"Satıriçi stil için verilen deÄŸer, \"isim : deÄŸer\" biçiminde birbirinden noktalı virgüllerle ayrılan bir veya daha fazla deÄŸiÅŸkenler grubundan oluÅŸmalıdır.","cssLengthTooltip":"Piksel türünde bir sayı veya geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt veya pc) içeren bir sayı girin.","unavailable":"%1<span class=\"cke_accessibility\">, kullanılamaz</span>","keyboard":{"8":"Silme TuÅŸu","13":"GiriÅŸ TuÅŸu","16":"Ãœst Karater TuÅŸu","17":"Kontrol TuÅŸu","18":"Alt TuÅŸu","32":"BoÅŸluk TuÅŸu","35":"En Sona TuÅŸu","36":"En BaÅŸa TuÅŸu","46":"Silme TuÅŸu","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Komut TuÅŸu"},"keyboardShortcut":"Klavye Kısayolu","optionDefault":"Varsayılan"}}; \ No newline at end of file +CKEDITOR.lang['tr']={"widget":{"move":"Taşımak için, tıklayın ve sürükleyin","label":"%1 Grafik BeleÅŸeni"},"undo":{"redo":"Tekrarla","undo":"Geri Al"},"toolbar":{"toolbarCollapse":"Araç çubuklarını topla","toolbarExpand":"Araç çubuklarını aç","toolbarGroups":{"document":"Belge","clipboard":"Pano/Geri al","editing":"Düzenleme","forms":"Formlar","basicstyles":"Temel Stiller","paragraph":"Paragraf","links":"BaÄŸlantılar","insert":"Ekle","styles":"Stiller","colors":"Renkler","tools":"Araçlar"},"toolbars":"Araç çubukları Editörü"},"table":{"border":"Kenar Kalınlığı","caption":"BaÅŸlık","cell":{"menu":"Hücre","insertBefore":"Hücre Ekle - Önce","insertAfter":"Hücre Ekle - Sonra","deleteCell":"Hücre Sil","merge":"Hücreleri BirleÅŸtir","mergeRight":"BirleÅŸtir - SaÄŸdaki Ä°le ","mergeDown":"BirleÅŸtir - AÅŸağıdaki Ä°le ","splitHorizontal":"Hücreyi Yatay Böl","splitVertical":"Hücreyi Dikey Böl","title":"Hücre Özellikleri","cellType":"Hücre Tipi","rowSpan":"Satırlar Mesafesi (Span)","colSpan":"Sütünlar Mesafesi (Span)","wordWrap":"Kelime Kaydırma","hAlign":"Düşey Hizalama","vAlign":"YataÅŸ Hizalama","alignBaseline":"Tabana","bgColor":"Arkaplan Rengi","borderColor":"Çerçeve Rengi","data":"Veri","header":"BaÅŸlık","yes":"Evet","no":"Hayır","invalidWidth":"Hücre geniÅŸliÄŸi sayı olmalıdır.","invalidHeight":"Hücre yüksekliÄŸi sayı olmalıdır.","invalidRowSpan":"Satırların mesafesi tam sayı olmalıdır.","invalidColSpan":"Sütünların mesafesi tam sayı olmalıdır.","chooseColor":"Seçiniz"},"cellPad":"Izgara yazı arası","cellSpace":"Izgara kalınlığı","column":{"menu":"Sütun","insertBefore":"Kolon Ekle - Önce","insertAfter":"Kolon Ekle - Sonra","deleteColumn":"Sütun Sil"},"columns":"Sütunlar","deleteTable":"Tabloyu Sil","headers":"BaÅŸlıklar","headersBoth":"Her Ä°kisi","headersColumn":"Ä°lk Sütun","headersNone":"Yok","headersRow":"Ä°lk Satır","heightUnit":"yükseklik birimi","invalidBorder":"Çerceve büyüklüklüğü sayı olmalıdır.","invalidCellPadding":"Hücre aralığı (padding) sayı olmalıdır.","invalidCellSpacing":"Hücre boÅŸluÄŸu (spacing) sayı olmalıdır.","invalidCols":"Sütün sayısı 0 sayısından büyük olmalıdır.","invalidHeight":"Tablo yüksekliÄŸi sayı olmalıdır.","invalidRows":"Satır sayısı 0 sayısından büyük olmalıdır.","invalidWidth":"Tablo geniÅŸliÄŸi sayı olmalıdır.","menu":"Tablo Özellikleri","row":{"menu":"Satır","insertBefore":"Satır Ekle - Önce","insertAfter":"Satır Ekle - Sonra","deleteRow":"Satır Sil"},"rows":"Satırlar","summary":"Özet","title":"Tablo Özellikleri","toolbar":"Tablo","widthPc":"yüzde","widthPx":"piksel","widthUnit":"geniÅŸlik birimi"},"stylescombo":{"label":"Biçem","panelTitle":"Stilleri Düzenliyor","panelTitle1":"Blok Stilleri","panelTitle2":"Inline Stilleri","panelTitle3":"Nesne Stilleri"},"specialchar":{"options":"Özel Karakter Seçenekleri","title":"Özel Karakter Seç","toolbar":"Özel Karakter Ekle"},"sourcedialog":{"toolbar":"Kaynak","title":"Kaynak"},"sourcearea":{"toolbar":"Kaynak"},"showblocks":{"toolbar":"Blokları Göster"},"removeformat":{"toolbar":"Biçimi Kaldır"},"pastetext":{"button":"Düz metin olarak yapıştır","pasteNotification":"%1 tuÅŸuna yapıştırmak için tıklayın. Tarayıcınız, Araç ÇubuÄŸu yada İçerik Menüsünü kullanarak yapıştırmayı desteklemiyor.","title":"Düz metin olarak yapıştır"},"pastefromword":{"confirmCleanup":"Yapıştırmaya çalıştığınız metin Word'den kopyalanmıştır. Yapıştırmadan önce silmek istermisiniz?","error":"Yapıştırmadaki veri bilgisi hata düzelene kadar silinmeyecektir","title":"Word'den Yapıştır","toolbar":"Word'den Yapıştır"},"notification":{"closed":"Uyarılar kapatıldı."},"maximize":{"maximize":"Büyült","minimize":"Küçült"},"magicline":{"title":"ParaÄŸrafı buraya ekle"},"list":{"bulletedlist":"Simgeli Liste","numberedlist":"Numaralı Liste"},"language":{"button":"Dili seç","remove":"Dili kaldır"},"indent":{"indent":"Sekme Arttır","outdent":"Sekme Azalt"},"image2":{"alt":"Alternatif Yazı","btnUpload":"Sunucuya Yolla","captioned":"BaÅŸlıklı resim","captionPlaceholder":"BaÅŸlık","infoTab":"Resim Bilgisi","lockRatio":"Oranı Kilitle","menu":"Resim Özellikleri","pathName":"Resim","pathNameCaption":"baÅŸlık","resetSize":"Boyutu BaÅŸa Döndür","resizer":"Boyutlandırmak için, tıklayın ve sürükleyin","title":"Resim Özellikleri","uploadTab":"Karşıya Yükle","urlMissing":"Resmin URL kaynağı bulunamadı.","altMissing":"Alternatif yazı eksik."},"horizontalrule":{"toolbar":"Yatay Satır Ekle"},"format":{"label":"Biçim","panelTitle":"Biçim","tag_address":"Adres","tag_div":"Paragraf (DIV)","tag_h1":"BaÅŸlık 1","tag_h2":"BaÅŸlık 2","tag_h3":"BaÅŸlık 3","tag_h4":"BaÅŸlık 4","tag_h5":"BaÅŸlık 5","tag_h6":"BaÅŸlık 6","tag_p":"Normal","tag_pre":"Biçimli"},"filetools":{"loadError":"Dosya okunurken hata oluÅŸtu.","networkError":"Dosya gönderilirken aÄŸ hatası oluÅŸtu.","httpError404":"Dosya gönderilirken HTTP hatası oluÅŸtu (404: Dosya bulunamadı).","httpError403":"Dosya gönderilirken HTTP hatası oluÅŸtu (403: Yasaklı).","httpError":"Dosya gönderilirken HTTP hatası oluÅŸtu (hata durumu: %1).","noUrlError":"Gönderilecek URL belirtilmedi.","responseError":"Sunucu cevap veremedi."},"elementspath":{"eleLabel":"Elementlerin yolu","eleTitle":"%1 elementi"},"contextmenu":{"options":"İçerik Menüsü Seçenekleri"},"clipboard":{"copy":"Kopyala","copyError":"Tarayıcı yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama iÅŸlemine izin vermiyor. Ä°ÅŸlem için (Ctrl/Cmd+C) tuÅŸlarını kullanın.","cut":"Kes","cutError":"Tarayıcı yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme iÅŸlemine izin vermiyor. Ä°ÅŸlem için (Ctrl/Cmd+X) tuÅŸlarını kullanın.","paste":"Yapıştır","pasteNotification":"%1 tuÅŸuna yapıştırmak için tıklayın. Tarayıcınız, Araç ÇubuÄŸu yada İçerik Menüsünü kullanarak yapıştırmayı desteklemiyor.","pasteArea":"Yapıştırma Alanı","pasteMsg":"İçeriÄŸinizi alttaki bulunan alana yapıştırın ve TAMAM butonuna tıklayın","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Blok OluÅŸtur"},"basicstyles":{"bold":"Kalın","italic":"Ä°talik","strike":"Ãœstü Çizgili","subscript":"Alt Simge","superscript":"Ãœst Simge","underline":"Altı Çizgili"},"about":{"copy":"Copyright © $1. Tüm hakları saklıdır.","dlgTitle":"CKEditor Hakkında","moreInfo":"Lisanslama hakkında daha fazla bilgi almak için lütfen sitemizi ziyaret edin:"},"editor":"Zengin Metin Editörü","editorPanel":"Zengin Metin Editör Paneli","common":{"editorHelp":"Yardım için ALT 0 tuÅŸlarına basın","browseServer":"Sunucuya Gözat","url":"URL","protocol":"Protokol","upload":"Karşıya Yükle","uploadSubmit":"Sunucuya Gönder","image":"Resim","form":"Form","checkbox":"Seçim Kutusu","radio":"Seçenek Düğmesi","textField":"Metin Kutusu","textarea":"Metin Alanı","hiddenField":"Gizli Alan","button":"Düğme","select":"Seçme Alanı","imageButton":"Resim Düğmesi","notSet":"<tanımlanmamış>","id":"Kimlik","name":"Ä°sim","langDir":"Dil Yönü","langDirLtr":"Soldan SaÄŸa (LTR)","langDirRtl":"SaÄŸdan Sola (RTL)","langCode":" Dil Kodu","longDescr":"Uzun Açıklamalı URL","cssClass":"Stil Sınıfları","advisoryTitle":"Öneri BaÅŸlığı","cssStyle":"Stil","ok":"Tamam","cancel":"Ä°ptal","close":"Kapat","preview":"Önizleme","resize":"Yeniden Boyutlandır","generalTab":"Genel","advancedTab":"GeliÅŸmiÅŸ","validateNumberFailed":"Bu deÄŸer bir sayı deÄŸildir.","confirmNewPage":"Bu içerikle ilgili kaydedilmemiÅŸ tüm bilgiler kaybolacaktır. Yeni bir sayfa yüklemek istediÄŸinizden emin misiniz?","confirmCancel":"Bazı seçenekleri deÄŸiÅŸtirdiniz. Ä°letiÅŸim penceresini kapatmak istediÄŸinizden emin misiniz?","options":"Seçenekler","target":"Hedef","targetNew":"Yeni Pencere (_blank)","targetTop":"En Ãœstteki Pencere (_top)","targetSelf":"Aynı Pencere (_self)","targetParent":"Ãœst Pencere (_parent)","langDirLTR":"Soldan SaÄŸa (LTR)","langDirRTL":"SaÄŸdan Sola (RTL)","styles":"Stil","cssClasses":"Stil Sınıfları","width":"GeniÅŸlik","height":"Yükseklik","align":"Hizalama","left":"Sol","right":"SaÄŸ","center":"Ortala","justify":"Ä°ki Kenara Yaslanmış","alignLeft":"Sola Dayalı","alignRight":"SaÄŸa Dayalı","alignCenter":"Ortaya Hizala","alignTop":"Ãœst","alignMiddle":"Orta","alignBottom":"Alt","alignNone":"Hiçbiri","invalidValue":"Geçersiz deÄŸer.","invalidHeight":"Yükseklik deÄŸeri bir sayı olmalıdır.","invalidWidth":"GeniÅŸlik deÄŸeri bir sayı olmalıdır.","invalidLength":"\"%1\" alanı için belirtilen deÄŸer, geçerli bir ölçü birimi olsun veya olmasın (%2) pozitif bir sayı olmalıdır.","invalidCssLength":"\"%1\" alanı için verilen deÄŸer, geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt, veya pc) içeren veya içermeyen pozitif bir sayı olmalıdır.","invalidHtmlLength":"\"%1\" alanı için belirttiÄŸiniz sayı, HTML (px veya %) birimi olsun yada olmasın pozitif bir deÄŸeri olmalıdır.","invalidInlineStyle":"Satıriçi stil için verilen deÄŸer, \"isim : deÄŸer\" biçiminde birbirinden noktalı virgüllerle ayrılan bir veya daha fazla deÄŸiÅŸkenler grubundan oluÅŸmalıdır.","cssLengthTooltip":"Piksel türünde bir sayı veya geçerli bir CSS ölçü birimi (px, %, in, cm, mm, em, ex, pt veya pc) içeren bir sayı girin.","unavailable":"%1<span class=\"cke_accessibility\">, kullanılamaz</span>","keyboard":{"8":"Silme TuÅŸu","13":"GiriÅŸ TuÅŸu","16":"Ãœst Karater TuÅŸu","17":"Kontrol TuÅŸu","18":"Alt TuÅŸu","32":"BoÅŸluk TuÅŸu","35":"En Sona TuÅŸu","36":"En BaÅŸa TuÅŸu","46":"Silme TuÅŸu","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Komut TuÅŸu"},"keyboardShortcut":"Klavye Kısayolu","optionDefault":"Varsayılan"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/tt.js b/core/assets/vendor/ckeditor/lang/tt.js index daa734694589..13fbd5e97d63 100644 --- a/core/assets/vendor/ckeditor/lang/tt.js +++ b/core/assets/vendor/ckeditor/lang/tt.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['tt']={"widget":{"move":"Күчереп куер өчен баÑып шудырыгыз","label":"%1 widget"},"undo":{"redo":"Кабатлау","undo":"Кайтару"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Документ","clipboard":"Ðлмашу буферы/Кайтару","editing":"Төзәтү","forms":"Формалар","basicstyles":"Төп Ñтильләр","paragraph":"Параграф","links":"Сылталамалар","insert":"Ó¨ÑÑ‚Ó™Ò¯","styles":"Стильләр","colors":"ТөÑләр","tools":"Кораллар"},"toolbars":"Editor toolbars"},"table":{"border":"Чик калынлыгы","caption":"ИÑем","cell":{"menu":"Күзәнәк","insertBefore":"Ðлдына күзәнәк Ó©ÑÑ‚Ó™Ò¯","insertAfter":"Ðртына күзәнәк Ó©ÑÑ‚Ó™Ò¯","deleteCell":"Күзәнәкләрне бетерү","merge":"Күзәнәкләрне берләштерү","mergeRight":"Уң Ñктагы белән берләштерү","mergeDown":"ÐÑтагы белән берләштерү","splitHorizontal":"Күзәнәкне юлларга бүлү","splitVertical":"Күзәнәкне баганаларга бүлү","title":"Күзәнәк үзлекләре","cellType":"Күзәнәк төре","rowSpan":"Юлларны берләштерү","colSpan":"Баганаларны берләштерү","wordWrap":"ТекÑтны күчерү","hAlign":"Ятма тигезләү","vAlign":"ÐÑма тигезләү","alignBaseline":"ТаÑныч Ñызыгы","bgColor":"Фон Ñ‚Ó©Ñе","borderColor":"Чик Ñ‚Ó©Ñе","data":"Мәгълүмат","header":"Башлык","yes":"Әйе","no":"Юк","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Сайлау"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Багана","insertBefore":"Сулдан баганалар Ó©ÑÑ‚Ó™Ò¯","insertAfter":"Уңнан баганалар Ó©ÑÑ‚Ó™Ò¯","deleteColumn":"Баганаларны бетерү"},"columns":"Баганалар","deleteTable":"Таблицаны бетерү","headers":"Башлыклар","headersBoth":"ИкеÑе дә","headersColumn":"Беренче багана","headersNone":"Һичбер","headersRow":"Беренче юл","heightUnit":"height unit","invalidBorder":"Чик киңлеге Ñан булырга тиеш.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Күзәнәкләр аралары уңай Ñан булырга тиеш.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Таблица биеклеге Ñан булырга тиеш.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Таблица киңлеге Ñан булырга тиеш","menu":"Таблица үзлекләре","row":{"menu":"Юл","insertBefore":"Ó¨Ñтән юллар Ó©ÑÑ‚Ó™Ò¯","insertAfter":"ÐÑтан юллар Ó©ÑÑ‚Ó™Ò¯","deleteRow":"Юлларны бетерү"},"rows":"Юллар","summary":"Йомгаклау","title":"Таблица үзлекләре","toolbar":"Таблица","widthPc":"процент","widthPx":"Ðокталар","widthUnit":"киңлек берәмлеге"},"stylescombo":{"label":"Стильләр","panelTitle":"Форматлау Ñтильләре","panelTitle1":"Блоклар Ñтильләре","panelTitle2":"Ðчке Ñтильләр","panelTitle3":"Объектлар Ñтильләре"},"specialchar":{"options":"МахÑÑƒÑ Ñимвол үзлекләре","title":"МахÑÑƒÑ Ñимвол Ñайлау","toolbar":"МахÑÑƒÑ Ñимвол Ó©ÑÑ‚Ó™Ò¯"},"sourcedialog":{"toolbar":"Чыганак","title":"Чыганак"},"sourcearea":{"toolbar":"Чыганак"},"showblocks":{"toolbar":"Блокларны күрÑәтү"},"removeformat":{"toolbar":"Форматлауны бетерү"},"pastetext":{"button":"ФорматлауÑыз текÑÑ‚ Ó©ÑÑ‚Ó™Ò¯","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"ФорматлауÑыз текÑÑ‚ Ó©ÑÑ‚Ó™Ò¯"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Word'тан Ó©ÑÑ‚Ó™Ò¯","toolbar":"Word'тан Ó©ÑÑ‚Ó™Ò¯"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Зурайту","minimize":"Кечерәйтү"},"magicline":{"title":"Бирегә параграф Ó©ÑÑ‚Ó™Ò¯"},"list":{"bulletedlist":"Маркерлы тезмә Ó©ÑÑ‚Ó™Ò¯/бетерү","numberedlist":" Ðомерланган тезмә Ó©ÑÑ‚Ó™Ò¯/бетерү"},"language":{"button":"Тел Ñайлау","remove":"Телне бетерү"},"indent":{"indent":"ОтÑтупны арттыру","outdent":"ОтÑтупны кечерәйтү"},"image2":{"alt":"Ðльтернатив текÑÑ‚","btnUpload":"Серверга җибәрү","captioned":"ИÑеме куелган Ñ€Ó™Ñем","captionPlaceholder":"ИÑем","infoTab":"Ð Ó™Ñем таÑвирламаÑÑ‹","lockRatio":"Lock Ratio","menu":"Ð Ó™Ñем үзлекләре","pathName":"Ñ€Ó™Ñем","pathNameCaption":"иÑем","resetSize":"Баштагы зурлык","resizer":"Күчереп куер өчен баÑып шудырыгыз","title":"Ð Ó™Ñем үзлекләре","uploadTab":"Йөкләү","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Ятма Ñызык Ó©ÑÑ‚Ó™Ò¯"},"format":{"label":"Форматлау","panelTitle":"Параграф форматлавы","tag_address":"ÐдреÑ","tag_div":"Гади (DIV)","tag_h1":"Башлам 1","tag_h2":"Башлам 2","tag_h3":"Башлам 3","tag_h4":"Башлам 4","tag_h5":"Башлам 5","tag_h6":"Башлам 6","tag_p":"Гади","tag_pre":"Форматлаулы"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 Ñлемент"},"contextmenu":{"options":"КонтекÑÑ‚ меню үзлекләре"},"clipboard":{"copy":"Күчермәләү","copyError":"Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне Ñ‚Ñ‹Ñ. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.","cut":"КиÑеп алу","cutError":"Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне Ñ‚Ñ‹Ñ. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.","paste":"Ó¨ÑÑ‚Ó™Ò¯","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Ó¨ÑÑ‚Ó™Ò¯ мәйданы","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Өземтә блогы"},"basicstyles":{"bold":"Калын","italic":"КурÑив","strike":"Сызылган","subscript":"ÐÑкы индекÑ","superscript":"Ó¨Ñке индекÑ","underline":"ÐÑтына Ñызылган"},"about":{"copy":"Copyright © $1. Бар хокуклар Ñакланган","dlgTitle":"CKEditor турында","moreInfo":"For licensing information please visit our web site:"},"editor":"Форматлаулы текÑÑ‚ өлкәÑе","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Ярдәм өчен ALT 0 баÑыгыз","browseServer":"Сервер карап чыгу","url":"Сылталама","protocol":"Протокол","upload":"Йөкләү","uploadSubmit":"Серверга җибәрү","image":"Ð Ó™Ñем","flash":"Флеш","form":"Форма","checkbox":"ЧекбокÑ","radio":"Радио төймә","textField":"ТекÑÑ‚ кыры","textarea":"ТекÑÑ‚ мәйданы","hiddenField":"Яшерен кыр","button":"Төймə","select":"Сайлау кыры","imageButton":"Ð Ó™Ñемле төймə","notSet":"<билгеләнмәгән>","id":"Id","name":"ИÑем","langDir":"Язылыш юнəлеше","langDirLtr":"Сулдан уңга Ñзылыш (LTR)","langDirRtl":"Уңнан Ñулга Ñзылыш (RTL)","langCode":"Тел коды","longDescr":"Җентекле таÑвирламага Ñылталама","cssClass":"Стильләр клаÑÑлары","advisoryTitle":"Киңәш иÑем","cssStyle":"Стиль","ok":"Тәмам","cancel":"Баш тарту","close":"Чыгу","preview":"Карап алу","resize":"Зурлыкны үзгәртү","generalTab":"Төп","advancedTab":"Киңәйтелгән көйләүләр","validateNumberFailed":"Әлеге кыйммәт Ñан түгел.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Үзлекләр","target":"МакÑат","targetNew":"Яңа тәрәзә (_blank)","targetTop":"Ó¨Ñке тәрәзә (_top)","targetSelf":"Шул үк тәрәзә (_self)","targetParent":"Ðна тәрәзә (_parent)","langDirLTR":"Сулдан уңга Ñзылыш (LTR)","langDirRTL":"Уңнан Ñулга Ñзылыш (RTL)","styles":"Стиль","cssClasses":"Стильләр клаÑÑлары","width":"Киңлек","height":"Биеклек","align":"Тигезләү","left":"Сул Ñкка","right":"Уң Ñкка","center":"Үзәккә","justify":"Киңлеккә карап тигезләү","alignLeft":"Сул Ñк кырыйдан тигезләү","alignRight":"Уң Ñк кырыйдан тигезләү","alignCenter":"Align Center","alignTop":"Ó¨Ñкә","alignMiddle":"Уртага","alignBottom":"ÐÑка","alignNone":"Һичбер","invalidValue":"Ð”Ó©Ñ€ÐµÑ Ð±ÑƒÐ»Ð¼Ð°Ð³Ð°Ð½ кыйммәт.","invalidHeight":"Биеклек Ñан булырга тиеш.","invalidWidth":"Киңлек Ñан булырга тиеш.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Кайтару","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Бетерү","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file +CKEDITOR.lang['tt']={"widget":{"move":"Күчереп куер өчен баÑып шудырыгыз","label":"%1 widget"},"undo":{"redo":"Кабатлау","undo":"Кайтару"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Документ","clipboard":"Ðлмашу буферы/Кайтару","editing":"Төзәтү","forms":"Формалар","basicstyles":"Төп Ñтильләр","paragraph":"Параграф","links":"Сылталамалар","insert":"Ó¨ÑÑ‚Ó™Ò¯","styles":"Стильләр","colors":"ТөÑләр","tools":"Кораллар"},"toolbars":"Editor toolbars"},"table":{"border":"Чик калынлыгы","caption":"ИÑем","cell":{"menu":"Күзәнәк","insertBefore":"Ðлдына күзәнәк Ó©ÑÑ‚Ó™Ò¯","insertAfter":"Ðртына күзәнәк Ó©ÑÑ‚Ó™Ò¯","deleteCell":"Күзәнәкләрне бетерү","merge":"Күзәнәкләрне берләштерү","mergeRight":"Уң Ñктагы белән берләштерү","mergeDown":"ÐÑтагы белән берләштерү","splitHorizontal":"Күзәнәкне юлларга бүлү","splitVertical":"Күзәнәкне баганаларга бүлү","title":"Күзәнәк үзлекләре","cellType":"Күзәнәк төре","rowSpan":"Юлларны берләштерү","colSpan":"Баганаларны берләштерү","wordWrap":"ТекÑтны күчерү","hAlign":"Ятма тигезләү","vAlign":"ÐÑма тигезләү","alignBaseline":"ТаÑныч Ñызыгы","bgColor":"Фон Ñ‚Ó©Ñе","borderColor":"Чик Ñ‚Ó©Ñе","data":"Мәгълүмат","header":"Башлык","yes":"Әйе","no":"Юк","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Сайлау"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Багана","insertBefore":"Сулдан баганалар Ó©ÑÑ‚Ó™Ò¯","insertAfter":"Уңнан баганалар Ó©ÑÑ‚Ó™Ò¯","deleteColumn":"Баганаларны бетерү"},"columns":"Баганалар","deleteTable":"Таблицаны бетерү","headers":"Башлыклар","headersBoth":"ИкеÑе дә","headersColumn":"Беренче багана","headersNone":"Һичбер","headersRow":"Беренче юл","heightUnit":"height unit","invalidBorder":"Чик киңлеге Ñан булырга тиеш.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Күзәнәкләр аралары уңай Ñан булырга тиеш.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Таблица биеклеге Ñан булырга тиеш.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Таблица киңлеге Ñан булырга тиеш","menu":"Таблица үзлекләре","row":{"menu":"Юл","insertBefore":"Ó¨Ñтән юллар Ó©ÑÑ‚Ó™Ò¯","insertAfter":"ÐÑтан юллар Ó©ÑÑ‚Ó™Ò¯","deleteRow":"Юлларны бетерү"},"rows":"Юллар","summary":"Йомгаклау","title":"Таблица үзлекләре","toolbar":"Таблица","widthPc":"процент","widthPx":"Ðокталар","widthUnit":"киңлек берәмлеге"},"stylescombo":{"label":"Стильләр","panelTitle":"Форматлау Ñтильләре","panelTitle1":"Блоклар Ñтильләре","panelTitle2":"Ðчке Ñтильләр","panelTitle3":"Объектлар Ñтильләре"},"specialchar":{"options":"МахÑÑƒÑ Ñимвол үзлекләре","title":"МахÑÑƒÑ Ñимвол Ñайлау","toolbar":"МахÑÑƒÑ Ñимвол Ó©ÑÑ‚Ó™Ò¯"},"sourcedialog":{"toolbar":"Чыганак","title":"Чыганак"},"sourcearea":{"toolbar":"Чыганак"},"showblocks":{"toolbar":"Блокларны күрÑәтү"},"removeformat":{"toolbar":"Форматлауны бетерү"},"pastetext":{"button":"ФорматлауÑыз текÑÑ‚ Ó©ÑÑ‚Ó™Ò¯","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"ФорматлауÑыз текÑÑ‚ Ó©ÑÑ‚Ó™Ò¯"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Word'тан Ó©ÑÑ‚Ó™Ò¯","toolbar":"Word'тан Ó©ÑÑ‚Ó™Ò¯"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Зурайту","minimize":"Кечерәйтү"},"magicline":{"title":"Бирегә параграф Ó©ÑÑ‚Ó™Ò¯"},"list":{"bulletedlist":"Маркерлы тезмә Ó©ÑÑ‚Ó™Ò¯/бетерү","numberedlist":" Ðомерланган тезмә Ó©ÑÑ‚Ó™Ò¯/бетерү"},"language":{"button":"Тел Ñайлау","remove":"Телне бетерү"},"indent":{"indent":"ОтÑтупны арттыру","outdent":"ОтÑтупны кечерәйтү"},"image2":{"alt":"Ðльтернатив текÑÑ‚","btnUpload":"Серверга җибәрү","captioned":"ИÑеме куелган Ñ€Ó™Ñем","captionPlaceholder":"ИÑем","infoTab":"Ð Ó™Ñем таÑвирламаÑÑ‹","lockRatio":"Lock Ratio","menu":"Ð Ó™Ñем үзлекләре","pathName":"Ñ€Ó™Ñем","pathNameCaption":"иÑем","resetSize":"Баштагы зурлык","resizer":"Күчереп куер өчен баÑып шудырыгыз","title":"Ð Ó™Ñем үзлекләре","uploadTab":"Йөкләү","urlMissing":"Image source URL is missing.","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Ятма Ñызык Ó©ÑÑ‚Ó™Ò¯"},"format":{"label":"Форматлау","panelTitle":"Параграф форматлавы","tag_address":"ÐдреÑ","tag_div":"Гади (DIV)","tag_h1":"Башлам 1","tag_h2":"Башлам 2","tag_h3":"Башлам 3","tag_h4":"Башлам 4","tag_h5":"Башлам 5","tag_h6":"Башлам 6","tag_p":"Гади","tag_pre":"Форматлаулы"},"filetools":{"loadError":"Error occurred during file read.","networkError":"Network error occurred during file upload.","httpError404":"HTTP error occurred during file upload (404: File not found).","httpError403":"HTTP error occurred during file upload (403: Forbidden).","httpError":"HTTP error occurred during file upload (error status: %1).","noUrlError":"Upload URL is not defined.","responseError":"Incorrect server response."},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 Ñлемент"},"contextmenu":{"options":"КонтекÑÑ‚ меню үзлекләре"},"clipboard":{"copy":"Күчермәләү","copyError":"Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне Ñ‚Ñ‹Ñ. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.","cut":"КиÑеп алу","cutError":"Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне Ñ‚Ñ‹Ñ. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.","paste":"Ó¨ÑÑ‚Ó™Ò¯","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Ó¨ÑÑ‚Ó™Ò¯ мәйданы","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Өземтә блогы"},"basicstyles":{"bold":"Калын","italic":"КурÑив","strike":"Сызылган","subscript":"ÐÑкы индекÑ","superscript":"Ó¨Ñке индекÑ","underline":"ÐÑтына Ñызылган"},"about":{"copy":"Copyright © $1. Бар хокуклар Ñакланган","dlgTitle":"CKEditor турында","moreInfo":"For licensing information please visit our web site:"},"editor":"Форматлаулы текÑÑ‚ өлкәÑе","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Ярдәм өчен ALT 0 баÑыгыз","browseServer":"Сервер карап чыгу","url":"Сылталама","protocol":"Протокол","upload":"Йөкләү","uploadSubmit":"Серверга җибәрү","image":"Ð Ó™Ñем","form":"Форма","checkbox":"ЧекбокÑ","radio":"Радио төймә","textField":"ТекÑÑ‚ кыры","textarea":"ТекÑÑ‚ мәйданы","hiddenField":"Яшерен кыр","button":"Төймə","select":"Сайлау кыры","imageButton":"Ð Ó™Ñемле төймə","notSet":"<билгеләнмәгән>","id":"Id","name":"ИÑем","langDir":"Язылыш юнəлеше","langDirLtr":"Сулдан уңга Ñзылыш (LTR)","langDirRtl":"Уңнан Ñулга Ñзылыш (RTL)","langCode":"Тел коды","longDescr":"Җентекле таÑвирламага Ñылталама","cssClass":"Стильләр клаÑÑлары","advisoryTitle":"Киңәш иÑем","cssStyle":"Стиль","ok":"Тәмам","cancel":"Баш тарту","close":"Чыгу","preview":"Карап алу","resize":"Зурлыкны үзгәртү","generalTab":"Төп","advancedTab":"Киңәйтелгән көйләүләр","validateNumberFailed":"Әлеге кыйммәт Ñан түгел.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Үзлекләр","target":"МакÑат","targetNew":"Яңа тәрәзә (_blank)","targetTop":"Ó¨Ñке тәрәзә (_top)","targetSelf":"Шул үк тәрәзә (_self)","targetParent":"Ðна тәрәзә (_parent)","langDirLTR":"Сулдан уңга Ñзылыш (LTR)","langDirRTL":"Уңнан Ñулга Ñзылыш (RTL)","styles":"Стиль","cssClasses":"Стильләр клаÑÑлары","width":"Киңлек","height":"Биеклек","align":"Тигезләү","left":"Сул Ñкка","right":"Уң Ñкка","center":"Үзәккә","justify":"Киңлеккә карап тигезләү","alignLeft":"Сул Ñк кырыйдан тигезләү","alignRight":"Уң Ñк кырыйдан тигезләү","alignCenter":"Align Center","alignTop":"Ó¨Ñкә","alignMiddle":"Уртага","alignBottom":"ÐÑка","alignNone":"Һичбер","invalidValue":"Ð”Ó©Ñ€ÐµÑ Ð±ÑƒÐ»Ð¼Ð°Ð³Ð°Ð½ кыйммәт.","invalidHeight":"Биеклек Ñан булырга тиеш.","invalidWidth":"Киңлек Ñан булырга тиеш.","invalidLength":"Value specified for the \"%1\" field must be a positive number with or without a valid measurement unit (%2).","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>","keyboard":{"8":"Кайтару","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"Бетерү","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Keyboard shortcut","optionDefault":"Default"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/ug.js b/core/assets/vendor/ckeditor/lang/ug.js index 97d3aa45bb82..f0ff94d37e51 100644 --- a/core/assets/vendor/ckeditor/lang/ug.js +++ b/core/assets/vendor/ckeditor/lang/ug.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['ug']={"widget":{"move":"يۆتكەشتە Ú†Ûكىپ سۆرەÚ","label":"1% بÛزەك"},"undo":{"redo":"قايتىلا ","undo":"ÙŠÛنىۋال"},"toolbar":{"toolbarCollapse":"قورال بالداقنى قاتلا","toolbarExpand":"قورال بالداقنى ياي","toolbarGroups":{"document":"پۈتۈك","clipboard":"چاپلاش تاختىسى/ÙŠÛنىۋال","editing":"تەھرىر","forms":"جەدۋەل","basicstyles":"ئاساسىي ئۇسلۇب","paragraph":"ئابزاس","links":"ئۇلانما","insert":"قىستۇر","styles":"ئۇسلۇب","colors":"رەÚ","tools":"قورال"},"toolbars":"قورال بالداق"},"table":{"border":"گىرۋەك","caption":"ماۋزۇ","cell":{"menu":"كاتەكچە","insertBefore":"سولغا كاتەكچە قىستۇر","insertAfter":"ئوÚغا كاتەكچە قىستۇر","deleteCell":"كەتەكچە ئۆچۈر","merge":"كاتەكچە بىرلەشتۈر","mergeRight":"كاتەكچىنى ئوÚغا بىرلەشتۈر","mergeDown":"كاتەكچىنى ئاستىغا بىرلەشتۈر","splitHorizontal":"كاتەكچىنى توغرىسىغا بىرلەشتۈر","splitVertical":"كاتەكچىنى بويىغا بىرلەشتۈر","title":"كاتەكچە خاسلىقى","cellType":"كاتەكچە تىپى","rowSpan":"بويىغا چات ئارىسى قۇر سانى","colSpan":"توغرىسىغا چات ئارىسى ئىستون سانى","wordWrap":"ئۆزلۈكىدىن قۇر قاتلا","hAlign":"توغرىسىغا توغرىلا","vAlign":"بويىغا توغرىلا","alignBaseline":"ئاساسىي سىزىق","bgColor":"تەگلىك رەÚÚ¯Ù‰","borderColor":"گىرۋەك رەÚÚ¯Ù‰","data":"سانلىق مەلۇمات","header":"جەدۋەل باشى","yes":"ھەئە","no":"ياق","invalidWidth":"كاتەكچە ÙƒÛ•Úلىكى چوقۇم سان بولىدۇ","invalidHeight":"كاتەكچە ئÛگىزلىكى چوقۇم سان بولىدۇ","invalidRowSpan":"قۇر چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ ","invalidColSpan":"ئىستون چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ","chooseColor":"تاللاÚ"},"cellPad":"يان ئارىلىق","cellSpace":"ئارىلىق","column":{"menu":"ئىستون","insertBefore":"سولغا ئىستون قىستۇر","insertAfter":"ئوÚغا ئىستون قىستۇر","deleteColumn":"ئىستون ئۆچۈر"},"columns":"ئىستون سانى","deleteTable":"جەدۋەل ئۆچۈر","headers":"ماۋزۇ كاتەكچە","headersBoth":"بىرىنچى ئىستون Û‹Û• بىرىنچى قۇر","headersColumn":"بىرىنچى ئىستون","headersNone":"يوق","headersRow":"بىرىنچى قۇر","heightUnit":"height unit","invalidBorder":"گىرۋەك توملۇقى چوقۇم سان بولىدۇ","invalidCellPadding":"كاتەكچىگە چوقۇم سان تولدۇرۇلىدۇ","invalidCellSpacing":"كاتەكچە ئارىلىقى چوقۇم سان بولىدۇ","invalidCols":"بەلگىلەنگەن قۇر سانى چوقۇم نۆلدىن Ú†ÙˆÚ Ø¨ÙˆÙ„Ù‰Ø¯Û‡","invalidHeight":"جەدۋەل ئÛگىزلىكى چوقۇم سان بولىدۇ","invalidRows":"بەلگىلەنگەن ئىستون سانى چوقۇم نۆلدىن Ú†ÙˆÚ Ø¨ÙˆÙ„Ù‰Ø¯Û‡","invalidWidth":"جەدۋەل ÙƒÛ•Úلىكى چوقۇم سان بولىدۇ","menu":"جەدۋەل خاسلىقى","row":{"menu":"قۇر","insertBefore":"ئۈستىگە قۇر قىستۇر","insertAfter":"ئاستىغا قۇر قىستۇر","deleteRow":"قۇر ئۆچۈر"},"rows":"قۇر سانى","summary":"ئۈزۈندە","title":"جەدۋەل خاسلىقى","toolbar":"جەدۋەل","widthPc":"پىرسەنت","widthPx":"پىكسÛÙ„","widthUnit":"ÙƒÛ•Úلىك بىرلىكى"},"stylescombo":{"label":"ئۇسلۇب","panelTitle":"ئۇسلۇب","panelTitle1":"بۆلەك دەرىجىسىدىكى ئÛÙ„ÛÙ…Ûنت ئۇسلۇبى","panelTitle2":"ئىچكى باغلانما ئÛÙ„ÛÙ…Ûنت ئۇسلۇبى","panelTitle3":"Ù†Û•Ú (Object) ئÛÙ„ÛÙ…Ûنت ئۇسلۇبى"},"specialchar":{"options":"ئالاھىدە ھەرپ تاللانمىسى","title":"ئالاھىدە ھەرپ تاللاÚ","toolbar":"ئالاھىدە ھەرپ قىستۇر"},"sourcedialog":{"toolbar":"مەنبە","title":"مەنبە"},"sourcearea":{"toolbar":"مەنبە"},"showblocks":{"toolbar":"بۆلەكنى كۆرسەت"},"removeformat":{"toolbar":"پىچىمنى چىقىرىۋەت"},"pastetext":{"button":"پىچىمى يوق تÛكىست سۈپىتىدە چاپلا","pasteNotification":"چاپلانغىنى 1% . Ø³Ù‰Ø²Ù†Ù‰Ú ØªÙˆØ± كۆرگۈچىÚىز قۇرال تەكچىسى Û‹Û• سىيرىلما تاللاپ چاپلاش ئىقتىدارىنى قوللىمايدىكەن .","title":"پىچىمى يوق تÛكىست سۈپىتىدە چاپلا"},"pastefromword":{"confirmCleanup":"سىز چاپلىماقچى بولغان مەزمۇن MS Word تىن كەلگەندەك قىلىدۇ، MS Word پىچىمىنى تازىلىۋەتكەندىن ÙƒÛيىن ئاندىن چاپلامدۇ؟","error":"ئىچكى خاتالىق سەۋەبىدىن چاپلايدىغان سانلىق مەلۇماتنى تازىلىيالمايدۇ","title":"MS Word تىن چاپلا","toolbar":"MS Word تىن چاپلا"},"notification":{"closed":"ئوقتۇرۇش تاقالدى."},"maximize":{"maximize":"Ú†ÙˆÚايت","minimize":"كىچىكلەت"},"magicline":{"title":"بۇ جايغا ئابزاس قىستۇر"},"list":{"bulletedlist":"تۈر بەلگە تىزىمى","numberedlist":"تەرتىپ نومۇر تىزىمى"},"language":{"button":"تىل تەÚØ´Û•Ùƒ","remove":"تىلنى چىقىرىۋەت"},"indent":{"indent":"تارايت","outdent":"ÙƒÛ•Úەيت"},"image2":{"alt":"تÛكىست ئالماشتۇر","btnUpload":"مۇلازىمÛتىرغا يۈكلە","captioned":"ماۋزۇلۇق سۈرەت","captionPlaceholder":"ماۋزۇ","infoTab":"سۈرەت","lockRatio":"نىسبەتنى قۇلۇپلا","menu":"سۈرەت خاسلىقى","pathName":"رەسىم","pathNameCaption":"ماۋزۇ","resetSize":"ئەسلى Ú†ÙˆÚÙ„Û‡Ù‚","resizer":"Ú†Ûكىپ تۇرۇپ سۆرەپ Ú†ÙˆÚ ÙƒÙ‰Ú†Ù‰ÙƒÙ„Ù‰ÙƒÙ‰Ù†Ù‰ تەÚشىگىلى بولىدۇ","title":"سۈرەت خاسلىقى","uploadTab":"يۈكلە","urlMissing":"Ø³ÛˆØ±Û•ØªÙ†Ù‰Ú Ø¦Û•Ø³Ù„Ù‰ ھۆججەت ئادرÛسى ÙƒÛ•Ù…","altMissing":"باشقا تÛكىست كەمچىل"},"horizontalrule":{"toolbar":"توغرا سىزىق قىستۇر"},"format":{"label":"پىچىم","panelTitle":"پىچىم","tag_address":"ئادرÛس","tag_div":"ئابزاس (DIV)","tag_h1":"ماۋزۇ 1","tag_h2":"ماۋزۇ 2","tag_h3":"ماۋزۇ 3","tag_h4":"ماۋزۇ 4","tag_h5":"ماۋزۇ 5","tag_h6":"ماۋزۇ 6","tag_p":"ئادەتتىكى","tag_pre":"تىزىلغان پىچىم"},"filetools":{"loadError":"ھۆججەت ئوقۇشتا خاتالىق كۆرۈلدى","networkError":"ھۆججەت يۈكلەشتە تور خاتالىقى كۆرۈلدى.","httpError404":"ھۆججەت يۈكلىگەندە HTTP خاتالىقى كۆرۈلدى (404: ھۆججەت تÛپىلمىدى).","httpError403":"ھۆججەت يۈكلىگەندە HTTP خاتالىقى كۆرۈلدى (403: چەكلەنگەن).","httpError":"ھۆججەت يۈكلىگەندە HTTP خاتالىقى كۆرۈلدى (404: خاتالىق نىسپىتى: 1%).","noUrlError":"چىقىردىغان ئۇلانما تەÚشەلمىگەن .","responseError":"مۇلازىمىتىردا ئىنكاس يوق ."},"elementspath":{"eleLabel":"ئÛÙ„ÛÙ…Ûنت يولى","eleTitle":"%1 ئÛÙ„ÛÙ…Ûنت"},"contextmenu":{"options":"قىسقا يول تىزىملىك تاللانمىسى"},"clipboard":{"copy":"كۆچۈر","copyError":"تور كۆرگۈÚÙ‰Ø²Ù†Ù‰Ú Ø¨Ù‰Ø®Û•ØªÛ•Ø±Ù„Ù‰Ùƒ تەÚشىكى ØªÛ•Ú¾Ø±Ù‰Ø±Ù„Ù‰Ú¯ÛˆÚ†Ù†Ù‰Ú ÙƒÛ†Ú†ÛˆØ± مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تÛز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاÚ","cut":"كەس","cutError":"تور كۆرگۈÚÙ‰Ø²Ù†Ù‰Ú Ø¨Ù‰Ø®Û•ØªÛ•Ø±Ù„Ù‰Ùƒ تەÚشىكى ØªÛ•Ú¾Ø±Ù‰Ø±Ù„Ù‰Ú¯ÛˆÚ†Ù†Ù‰Ú ÙƒÛ•Ø³ مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تÛز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاÚ","paste":"چاپلا","pasteNotification":"چاپلانغىنى 1% . Ø³Ù‰Ø²Ù†Ù‰Ú ØªÙˆØ± كۆرگۈچىÚىز قۇرال تەكچىسى Û‹Û• سىيرىلما تاللاپ چاپلاش ئىقتىدارىنى قوللىمايدىكەن .","pasteArea":"چاپلاش دائىرىسى","pasteMsg":"مەزمۇنىÚىزنى تۆۋەندىكى رايونغا چاپلاپ ئاندىن OK نى بÛØ³Ù‰Ú ."},"blockquote":{"toolbar":"بۆلەك نەقىل"},"basicstyles":{"bold":"توم","italic":"يانتۇ","strike":"ئۆچۈرۈش سىزىقى","subscript":"تۆۋەن ئىندÛكس","superscript":"يۇقىرى ئىندÛكس","underline":"ئاستى سىزىق"},"about":{"copy":"Copyright © $1. نەشر ھوقۇقىغا ئىگە","dlgTitle":"CKEditor تەھرىرلىگۈچى 4 ھەقىدە","moreInfo":"تور تۇرايىمىزنى زىيارەت قىلىپ ÙƒÛلىشىمگە ئائىت تÛخىمۇ ÙƒÛ†Ù¾ ئۇچۇرغا ئÛرىشىÚ"},"editor":"تەھرىرلىگۈچ","editorPanel":"مول تÛكست تەھرىرلىگۈچ تاختىسى","common":{"editorHelp":"ALT+0 نى بÛسىپ ياردەمنى كۆرۈÚ","browseServer":"كۆرسىتىش مۇلازىمÛتىر","url":"ئەسلى ھۆججەت","protocol":"ÙƒÛلىشىم","upload":"يۈكلە","uploadSubmit":"مۇلازىمÛتىرغا يۈكلە","image":"سۈرەت","flash":"چاقماق","form":"جەدۋەل","checkbox":"ÙƒÛ†Ù¾ تاللاش رامكىسى","radio":"يەككە تاللاش توپچىسى","textField":"يەككە قۇر تÛكىست","textarea":"ÙƒÛ†Ù¾ قۇر تÛكىست","hiddenField":"يوشۇرۇن دائىرە","button":"توپچا","select":"تىزىم/تىزىملىك","imageButton":"سۈرەت دائىرە","notSet":"‹تەÚشەلمىگەن›","id":"ID","name":"ئات","langDir":"تىل يۆنىلىشى","langDirLtr":"سولدىن ئوÚغا (LTR)","langDirRtl":"ئوÚدىن سولغا (RTL)","langCode":"تىل كودى","longDescr":"تەپسىلىي چۈشەندۈرۈش ئادرÛسى","cssClass":"ئۇسلۇب Ø®Ù‰Ù„Ù‰Ù†Ù‰Ú Ø¦Ø§ØªÙ‰","advisoryTitle":"ماۋزۇ","cssStyle":"قۇر ئىچىدىكى ئۇسلۇبى","ok":"جەزملە","cancel":"ۋاز ÙƒÛ•Ú†","close":"تاقا","preview":"ئالدىن كۆزەت","resize":"Ú†ÙˆÚلۇقىنى ئۆزگەرت","generalTab":"ئادەتتىكى","advancedTab":"ئالىي","validateNumberFailed":"سان پىچىمىدا كىرگۈزۈش زۆرۈر","confirmNewPage":"نۆۋەتتىكى پۈتۈك مەزمۇنى ساقلانمىدى، ÙŠÛÚÙ‰ پۈتۈك قۇرامسىز؟","confirmCancel":"قىسمەن ئۆزگەرتىش ساقلانمىدى، بۇ سۆزلەشكۈنى تاقامسىز؟","options":"تاللانما","target":"نىشان كۆزنەك","targetNew":"ÙŠÛÚÙ‰ كۆزنەك (_blank)","targetTop":"پۈتۈن بەت (_top)","targetSelf":"مەزكۇر كۆزنەك (_self)","targetParent":"ئاتا كۆزنەك (_parent)","langDirLTR":"سولدىن ئوÚغا (LTR)","langDirRTL":"ئوÚدىن سولغا (RTL)","styles":"ئۇسلۇبلار","cssClasses":"ئۇسلۇب خىللىرى","width":"ÙƒÛ•Úلىك","height":"ئÛگىزلىك","align":"توغرىلىنىشى","left":"سول","right":"ئوÚ","center":"ئوتتۇرا","justify":"ئىككى تەرەپتىن توغرىلا","alignLeft":"سولغا توغرىلا","alignRight":"ئوÚغا توغرىلا","alignCenter":"Align Center","alignTop":"ئۈستى","alignMiddle":"ئوتتۇرا","alignBottom":"ئاستى","alignNone":"يوق","invalidValue":"ئىناۋەتسىز قىممەت.","invalidHeight":"ئÛگىزلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر","invalidWidth":"ÙƒÛ•Úلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر","invalidLength":"بەلگىلەنگەن قىممەت \"1%\" سۆز بۆلىكىدىكى ئÛنىقسىز ماتىريال ياكى مۇسبەت سانلار (2%).","invalidCssLength":"بۇ سۆز بۆلىكى چوقۇم مۇۋاپىق بولغان CSS ئۇزۇنلۇق قىممىتى بولۇشى زۆرۈر، بىرلىكى (px, %, in, cm, mm, em, ex, pt ياكى pc)","invalidHtmlLength":"بۇ سۆز بۆلىكى چوقۇم بىرىكمە HTML ئۇزۇنلۇق قىممىتى بولۇشى ÙƒÛرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px ياكى %)","invalidInlineStyle":"ئىچكى باغلانما ئۇسلۇبى چوقۇم Ú†Ûكىتلىك Ù¾Û•Ø´ بىلەن ئايرىلغان بىر ياكى ÙƒÛ†Ù¾ «خاسلىق ئاتى:خاسلىق قىممىتى» پىچىمىدا بولۇشى لازىم","cssLengthTooltip":"بۇ سۆز بۆلىكى بىرىكمە CSS ئۇزۇنلۇق قىممىتى بولۇشى ÙƒÛرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px, %, in, cm, mm, em, ex, pt ياكى pc)","unavailable":"%1<span class=\\\\\"cke_accessibility\\\\\">ØŒ ئىشلەتكىلى بولمايدۇ</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"ئۆچۈر","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"تÛزلەتمە كونۇپكا","optionDefault":"سۈكۈتتىكى"}}; \ No newline at end of file +CKEDITOR.lang['ug']={"widget":{"move":"يۆتكەشتە Ú†Ûكىپ سۆرەÚ","label":"1% بÛزەك"},"undo":{"redo":"قايتىلا ","undo":"ÙŠÛنىۋال"},"toolbar":{"toolbarCollapse":"قورال بالداقنى قاتلا","toolbarExpand":"قورال بالداقنى ياي","toolbarGroups":{"document":"پۈتۈك","clipboard":"چاپلاش تاختىسى/ÙŠÛنىۋال","editing":"تەھرىر","forms":"جەدۋەل","basicstyles":"ئاساسىي ئۇسلۇب","paragraph":"ئابزاس","links":"ئۇلانما","insert":"قىستۇر","styles":"ئۇسلۇب","colors":"رەÚ","tools":"قورال"},"toolbars":"قورال بالداق"},"table":{"border":"گىرۋەك","caption":"ماۋزۇ","cell":{"menu":"كاتەكچە","insertBefore":"سولغا كاتەكچە قىستۇر","insertAfter":"ئوÚغا كاتەكچە قىستۇر","deleteCell":"كەتەكچە ئۆچۈر","merge":"كاتەكچە بىرلەشتۈر","mergeRight":"كاتەكچىنى ئوÚغا بىرلەشتۈر","mergeDown":"كاتەكچىنى ئاستىغا بىرلەشتۈر","splitHorizontal":"كاتەكچىنى توغرىسىغا بىرلەشتۈر","splitVertical":"كاتەكچىنى بويىغا بىرلەشتۈر","title":"كاتەكچە خاسلىقى","cellType":"كاتەكچە تىپى","rowSpan":"بويىغا چات ئارىسى قۇر سانى","colSpan":"توغرىسىغا چات ئارىسى ئىستون سانى","wordWrap":"ئۆزلۈكىدىن قۇر قاتلا","hAlign":"توغرىسىغا توغرىلا","vAlign":"بويىغا توغرىلا","alignBaseline":"ئاساسىي سىزىق","bgColor":"تەگلىك رەÚÚ¯Ù‰","borderColor":"گىرۋەك رەÚÚ¯Ù‰","data":"سانلىق مەلۇمات","header":"جەدۋەل باشى","yes":"ھەئە","no":"ياق","invalidWidth":"كاتەكچە ÙƒÛ•Úلىكى چوقۇم سان بولىدۇ","invalidHeight":"كاتەكچە ئÛگىزلىكى چوقۇم سان بولىدۇ","invalidRowSpan":"قۇر چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ ","invalidColSpan":"ئىستون چات ئارىسى چوقۇم پۈتۈن سان بولىدۇ","chooseColor":"تاللاÚ"},"cellPad":"يان ئارىلىق","cellSpace":"ئارىلىق","column":{"menu":"ئىستون","insertBefore":"سولغا ئىستون قىستۇر","insertAfter":"ئوÚغا ئىستون قىستۇر","deleteColumn":"ئىستون ئۆچۈر"},"columns":"ئىستون سانى","deleteTable":"جەدۋەل ئۆچۈر","headers":"ماۋزۇ كاتەكچە","headersBoth":"بىرىنچى ئىستون Û‹Û• بىرىنچى قۇر","headersColumn":"بىرىنچى ئىستون","headersNone":"يوق","headersRow":"بىرىنچى قۇر","heightUnit":"height unit","invalidBorder":"گىرۋەك توملۇقى چوقۇم سان بولىدۇ","invalidCellPadding":"كاتەكچىگە چوقۇم سان تولدۇرۇلىدۇ","invalidCellSpacing":"كاتەكچە ئارىلىقى چوقۇم سان بولىدۇ","invalidCols":"بەلگىلەنگەن قۇر سانى چوقۇم نۆلدىن Ú†ÙˆÚ Ø¨ÙˆÙ„Ù‰Ø¯Û‡","invalidHeight":"جەدۋەل ئÛگىزلىكى چوقۇم سان بولىدۇ","invalidRows":"بەلگىلەنگەن ئىستون سانى چوقۇم نۆلدىن Ú†ÙˆÚ Ø¨ÙˆÙ„Ù‰Ø¯Û‡","invalidWidth":"جەدۋەل ÙƒÛ•Úلىكى چوقۇم سان بولىدۇ","menu":"جەدۋەل خاسلىقى","row":{"menu":"قۇر","insertBefore":"ئۈستىگە قۇر قىستۇر","insertAfter":"ئاستىغا قۇر قىستۇر","deleteRow":"قۇر ئۆچۈر"},"rows":"قۇر سانى","summary":"ئۈزۈندە","title":"جەدۋەل خاسلىقى","toolbar":"جەدۋەل","widthPc":"پىرسەنت","widthPx":"پىكسÛÙ„","widthUnit":"ÙƒÛ•Úلىك بىرلىكى"},"stylescombo":{"label":"ئۇسلۇب","panelTitle":"ئۇسلۇب","panelTitle1":"بۆلەك دەرىجىسىدىكى ئÛÙ„ÛÙ…Ûنت ئۇسلۇبى","panelTitle2":"ئىچكى باغلانما ئÛÙ„ÛÙ…Ûنت ئۇسلۇبى","panelTitle3":"Ù†Û•Ú (Object) ئÛÙ„ÛÙ…Ûنت ئۇسلۇبى"},"specialchar":{"options":"ئالاھىدە ھەرپ تاللانمىسى","title":"ئالاھىدە ھەرپ تاللاÚ","toolbar":"ئالاھىدە ھەرپ قىستۇر"},"sourcedialog":{"toolbar":"مەنبە","title":"مەنبە"},"sourcearea":{"toolbar":"مەنبە"},"showblocks":{"toolbar":"بۆلەكنى كۆرسەت"},"removeformat":{"toolbar":"پىچىمنى چىقىرىۋەت"},"pastetext":{"button":"پىچىمى يوق تÛكىست سۈپىتىدە چاپلا","pasteNotification":"چاپلانغىنى 1% . Ø³Ù‰Ø²Ù†Ù‰Ú ØªÙˆØ± كۆرگۈچىÚىز قۇرال تەكچىسى Û‹Û• سىيرىلما تاللاپ چاپلاش ئىقتىدارىنى قوللىمايدىكەن .","title":"پىچىمى يوق تÛكىست سۈپىتىدە چاپلا"},"pastefromword":{"confirmCleanup":"سىز چاپلىماقچى بولغان مەزمۇن MS Word تىن كەلگەندەك قىلىدۇ، MS Word پىچىمىنى تازىلىۋەتكەندىن ÙƒÛيىن ئاندىن چاپلامدۇ؟","error":"ئىچكى خاتالىق سەۋەبىدىن چاپلايدىغان سانلىق مەلۇماتنى تازىلىيالمايدۇ","title":"MS Word تىن چاپلا","toolbar":"MS Word تىن چاپلا"},"notification":{"closed":"ئوقتۇرۇش تاقالدى."},"maximize":{"maximize":"Ú†ÙˆÚايت","minimize":"كىچىكلەت"},"magicline":{"title":"بۇ جايغا ئابزاس قىستۇر"},"list":{"bulletedlist":"تۈر بەلگە تىزىمى","numberedlist":"تەرتىپ نومۇر تىزىمى"},"language":{"button":"تىل تەÚØ´Û•Ùƒ","remove":"تىلنى چىقىرىۋەت"},"indent":{"indent":"تارايت","outdent":"ÙƒÛ•Úەيت"},"image2":{"alt":"تÛكىست ئالماشتۇر","btnUpload":"مۇلازىمÛتىرغا يۈكلە","captioned":"ماۋزۇلۇق سۈرەت","captionPlaceholder":"ماۋزۇ","infoTab":"سۈرەت","lockRatio":"نىسبەتنى قۇلۇپلا","menu":"سۈرەت خاسلىقى","pathName":"رەسىم","pathNameCaption":"ماۋزۇ","resetSize":"ئەسلى Ú†ÙˆÚÙ„Û‡Ù‚","resizer":"Ú†Ûكىپ تۇرۇپ سۆرەپ Ú†ÙˆÚ ÙƒÙ‰Ú†Ù‰ÙƒÙ„Ù‰ÙƒÙ‰Ù†Ù‰ تەÚشىگىلى بولىدۇ","title":"سۈرەت خاسلىقى","uploadTab":"يۈكلە","urlMissing":"Ø³ÛˆØ±Û•ØªÙ†Ù‰Ú Ø¦Û•Ø³Ù„Ù‰ ھۆججەت ئادرÛسى ÙƒÛ•Ù…","altMissing":"باشقا تÛكىست كەمچىل"},"horizontalrule":{"toolbar":"توغرا سىزىق قىستۇر"},"format":{"label":"پىچىم","panelTitle":"پىچىم","tag_address":"ئادرÛس","tag_div":"ئابزاس (DIV)","tag_h1":"ماۋزۇ 1","tag_h2":"ماۋزۇ 2","tag_h3":"ماۋزۇ 3","tag_h4":"ماۋزۇ 4","tag_h5":"ماۋزۇ 5","tag_h6":"ماۋزۇ 6","tag_p":"ئادەتتىكى","tag_pre":"تىزىلغان پىچىم"},"filetools":{"loadError":"ھۆججەت ئوقۇشتا خاتالىق كۆرۈلدى","networkError":"ھۆججەت يۈكلەشتە تور خاتالىقى كۆرۈلدى.","httpError404":"ھۆججەت يۈكلىگەندە HTTP خاتالىقى كۆرۈلدى (404: ھۆججەت تÛپىلمىدى).","httpError403":"ھۆججەت يۈكلىگەندە HTTP خاتالىقى كۆرۈلدى (403: چەكلەنگەن).","httpError":"ھۆججەت يۈكلىگەندە HTTP خاتالىقى كۆرۈلدى (404: خاتالىق نىسپىتى: 1%).","noUrlError":"چىقىردىغان ئۇلانما تەÚشەلمىگەن .","responseError":"مۇلازىمىتىردا ئىنكاس يوق ."},"elementspath":{"eleLabel":"ئÛÙ„ÛÙ…Ûنت يولى","eleTitle":"%1 ئÛÙ„ÛÙ…Ûنت"},"contextmenu":{"options":"قىسقا يول تىزىملىك تاللانمىسى"},"clipboard":{"copy":"كۆچۈر","copyError":"تور كۆرگۈÚÙ‰Ø²Ù†Ù‰Ú Ø¨Ù‰Ø®Û•ØªÛ•Ø±Ù„Ù‰Ùƒ تەÚشىكى ØªÛ•Ú¾Ø±Ù‰Ø±Ù„Ù‰Ú¯ÛˆÚ†Ù†Ù‰Ú ÙƒÛ†Ú†ÛˆØ± مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تÛز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاÚ","cut":"كەس","cutError":"تور كۆرگۈÚÙ‰Ø²Ù†Ù‰Ú Ø¨Ù‰Ø®Û•ØªÛ•Ø±Ù„Ù‰Ùƒ تەÚشىكى ØªÛ•Ú¾Ø±Ù‰Ø±Ù„Ù‰Ú¯ÛˆÚ†Ù†Ù‰Ú ÙƒÛ•Ø³ مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تÛز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاÚ","paste":"چاپلا","pasteNotification":"چاپلانغىنى 1% . Ø³Ù‰Ø²Ù†Ù‰Ú ØªÙˆØ± كۆرگۈچىÚىز قۇرال تەكچىسى Û‹Û• سىيرىلما تاللاپ چاپلاش ئىقتىدارىنى قوللىمايدىكەن .","pasteArea":"چاپلاش دائىرىسى","pasteMsg":"مەزمۇنىÚىزنى تۆۋەندىكى رايونغا چاپلاپ ئاندىن OK نى بÛØ³Ù‰Ú .","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"بۆلەك نەقىل"},"basicstyles":{"bold":"توم","italic":"يانتۇ","strike":"ئۆچۈرۈش سىزىقى","subscript":"تۆۋەن ئىندÛكس","superscript":"يۇقىرى ئىندÛكس","underline":"ئاستى سىزىق"},"about":{"copy":"Copyright © $1. نەشر ھوقۇقىغا ئىگە","dlgTitle":"CKEditor تەھرىرلىگۈچى 4 ھەقىدە","moreInfo":"تور تۇرايىمىزنى زىيارەت قىلىپ ÙƒÛلىشىمگە ئائىت تÛخىمۇ ÙƒÛ†Ù¾ ئۇچۇرغا ئÛرىشىÚ"},"editor":"تەھرىرلىگۈچ","editorPanel":"مول تÛكست تەھرىرلىگۈچ تاختىسى","common":{"editorHelp":"ALT+0 نى بÛسىپ ياردەمنى كۆرۈÚ","browseServer":"كۆرسىتىش مۇلازىمÛتىر","url":"ئەسلى ھۆججەت","protocol":"ÙƒÛلىشىم","upload":"يۈكلە","uploadSubmit":"مۇلازىمÛتىرغا يۈكلە","image":"سۈرەت","form":"جەدۋەل","checkbox":"ÙƒÛ†Ù¾ تاللاش رامكىسى","radio":"يەككە تاللاش توپچىسى","textField":"يەككە قۇر تÛكىست","textarea":"ÙƒÛ†Ù¾ قۇر تÛكىست","hiddenField":"يوشۇرۇن دائىرە","button":"توپچا","select":"تىزىم/تىزىملىك","imageButton":"سۈرەت دائىرە","notSet":"‹تەÚشەلمىگەن›","id":"ID","name":"ئات","langDir":"تىل يۆنىلىشى","langDirLtr":"سولدىن ئوÚغا (LTR)","langDirRtl":"ئوÚدىن سولغا (RTL)","langCode":"تىل كودى","longDescr":"تەپسىلىي چۈشەندۈرۈش ئادرÛسى","cssClass":"ئۇسلۇب Ø®Ù‰Ù„Ù‰Ù†Ù‰Ú Ø¦Ø§ØªÙ‰","advisoryTitle":"ماۋزۇ","cssStyle":"قۇر ئىچىدىكى ئۇسلۇبى","ok":"جەزملە","cancel":"ۋاز ÙƒÛ•Ú†","close":"تاقا","preview":"ئالدىن كۆزەت","resize":"Ú†ÙˆÚلۇقىنى ئۆزگەرت","generalTab":"ئادەتتىكى","advancedTab":"ئالىي","validateNumberFailed":"سان پىچىمىدا كىرگۈزۈش زۆرۈر","confirmNewPage":"نۆۋەتتىكى پۈتۈك مەزمۇنى ساقلانمىدى، ÙŠÛÚÙ‰ پۈتۈك قۇرامسىز؟","confirmCancel":"قىسمەن ئۆزگەرتىش ساقلانمىدى، بۇ سۆزلەشكۈنى تاقامسىز؟","options":"تاللانما","target":"نىشان كۆزنەك","targetNew":"ÙŠÛÚÙ‰ كۆزنەك (_blank)","targetTop":"پۈتۈن بەت (_top)","targetSelf":"مەزكۇر كۆزنەك (_self)","targetParent":"ئاتا كۆزنەك (_parent)","langDirLTR":"سولدىن ئوÚغا (LTR)","langDirRTL":"ئوÚدىن سولغا (RTL)","styles":"ئۇسلۇبلار","cssClasses":"ئۇسلۇب خىللىرى","width":"ÙƒÛ•Úلىك","height":"ئÛگىزلىك","align":"توغرىلىنىشى","left":"سول","right":"ئوÚ","center":"ئوتتۇرا","justify":"ئىككى تەرەپتىن توغرىلا","alignLeft":"سولغا توغرىلا","alignRight":"ئوÚغا توغرىلا","alignCenter":"Align Center","alignTop":"ئۈستى","alignMiddle":"ئوتتۇرا","alignBottom":"ئاستى","alignNone":"يوق","invalidValue":"ئىناۋەتسىز قىممەت.","invalidHeight":"ئÛگىزلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر","invalidWidth":"ÙƒÛ•Úلىك چوقۇم رەقەم پىچىمىدا بولۇشى زۆرۈر","invalidLength":"بەلگىلەنگەن قىممەت \"1%\" سۆز بۆلىكىدىكى ئÛنىقسىز ماتىريال ياكى مۇسبەت سانلار (2%).","invalidCssLength":"بۇ سۆز بۆلىكى چوقۇم مۇۋاپىق بولغان CSS ئۇزۇنلۇق قىممىتى بولۇشى زۆرۈر، بىرلىكى (px, %, in, cm, mm, em, ex, pt ياكى pc)","invalidHtmlLength":"بۇ سۆز بۆلىكى چوقۇم بىرىكمە HTML ئۇزۇنلۇق قىممىتى بولۇشى ÙƒÛرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px ياكى %)","invalidInlineStyle":"ئىچكى باغلانما ئۇسلۇبى چوقۇم Ú†Ûكىتلىك Ù¾Û•Ø´ بىلەن ئايرىلغان بىر ياكى ÙƒÛ†Ù¾ «خاسلىق ئاتى:خاسلىق قىممىتى» پىچىمىدا بولۇشى لازىم","cssLengthTooltip":"بۇ سۆز بۆلىكى بىرىكمە CSS ئۇزۇنلۇق قىممىتى بولۇشى ÙƒÛرەك. ئۆز ئىچىگە ئالىدىغان بىرلىك (px, %, in, cm, mm, em, ex, pt ياكى pc)","unavailable":"%1<span class=\\\\\"cke_accessibility\\\\\">ØŒ ئىشلەتكىلى بولمايدۇ</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Space","35":"End","36":"Home","46":"ئۆچۈر","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"تÛزلەتمە كونۇپكا","optionDefault":"سۈكۈتتىكى"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/uk.js b/core/assets/vendor/ckeditor/lang/uk.js index bf32429ac1d7..860495eae4e6 100644 --- a/core/assets/vendor/ckeditor/lang/uk.js +++ b/core/assets/vendor/ckeditor/lang/uk.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['uk']={"widget":{"move":"Клікніть Ñ– потÑгніть Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ","label":"%1 віджет"},"undo":{"redo":"Повторити","undo":"Повернути"},"toolbar":{"toolbarCollapse":"Згорнути панель інÑтрументів","toolbarExpand":"Розгорнути панель інÑтрументів","toolbarGroups":{"document":"Документ","clipboard":"Буфер обміну / СкаÑувати","editing":"РедагуваннÑ","forms":"Форми","basicstyles":"ОÑновний Стиль","paragraph":"Параграф","links":"ПоÑиланнÑ","insert":"Ð’Ñтавити","styles":"Стилі","colors":"Кольори","tools":"ІнÑтрументи"},"toolbars":"Панель інÑтрументів редактора"},"table":{"border":"Розмір рамки","caption":"Заголовок таблиці","cell":{"menu":"Комірки","insertBefore":"Ð’Ñтавити комірку перед","insertAfter":"Ð’Ñтавити комірку піÑлÑ","deleteCell":"Видалити комірки","merge":"Об'єднати комірки","mergeRight":"Об'єднати Ñправа","mergeDown":"Об'єднати донизу","splitHorizontal":"Розділити комірку по горизонталі","splitVertical":"Розділити комірку по вертикалі","title":"ВлаÑтивоÑÑ‚Ñ– комірки","cellType":"Тип комірки","rowSpan":"Об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ€Ñдків","colSpan":"Об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñтовпців","wordWrap":"ÐвтоперенеÑÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑту","hAlign":"Гориз. вирівнюваннÑ","vAlign":"Верт. вирівнюваннÑ","alignBaseline":"По базовій лінії","bgColor":"Колір фону","borderColor":"Колір рамки","data":"Дані","header":"Заголовок","yes":"Так","no":"ÐÑ–","invalidWidth":"Ширина комірки повинна бути цілим чиÑлом.","invalidHeight":"ВиÑота комірки повинна бути цілим чиÑлом.","invalidRowSpan":"КількіÑÑ‚ÑŒ об'єднуваних Ñ€Ñдків повинна бути цілим чиÑлом.","invalidColSpan":"КількіÑÑ‚ÑŒ об'єднуваних Ñтовбців повинна бути цілим чиÑлом.","chooseColor":"Обрати"},"cellPad":"Внутр. відÑтуп","cellSpace":"Проміжок","column":{"menu":"Стовбці","insertBefore":"Ð’Ñтавити Ñтовбець перед","insertAfter":"Ð’Ñтавити Ñтовбець піÑлÑ","deleteColumn":"Видалити Ñтовбці"},"columns":"Стовбці","deleteTable":"Видалити таблицю","headers":"Заголовки Ñтовбців/Ñ€Ñдків","headersBoth":"Стовбці Ñ– Ñ€Ñдки","headersColumn":"Стовбці","headersNone":"Без заголовків","headersRow":"Ð Ñдки","heightUnit":"Ð¾Ð´Ð¸Ð½Ð¸Ñ†Ñ Ð²Ð¸Ñоти","invalidBorder":"Розмір рамки повинен бути цілим чиÑлом.","invalidCellPadding":"Внутр. відÑтуп комірки повинен бути цілим чиÑлом.","invalidCellSpacing":"Проміжок між комірками повинен бути цілим чиÑлом.","invalidCols":"КількіÑÑ‚ÑŒ Ñтовбців повинна бути більшою 0.","invalidHeight":"ВиÑота таблиці повинна бути цілим чиÑлом.","invalidRows":"КількіÑÑ‚ÑŒ Ñ€Ñдків повинна бути більшою 0.","invalidWidth":"Ширина таблиці повинна бути цілим чиÑлом.","menu":"ВлаÑтивоÑÑ‚Ñ– таблиці","row":{"menu":"Ð Ñдки","insertBefore":"Ð’Ñтавити Ñ€Ñдок перед","insertAfter":"Ð’Ñтавити Ñ€Ñдок піÑлÑ","deleteRow":"Видалити Ñ€Ñдки"},"rows":"Ð Ñдки","summary":"Детальний Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ таблиці","title":"ВлаÑтивоÑÑ‚Ñ– таблиці","toolbar":"ТаблицÑ","widthPc":"відÑотків","widthPx":"пікÑелів","widthUnit":"Ð¾Ð´Ð¸Ð½Ð¸Ñ†Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð¸"},"stylescombo":{"label":"Стиль","panelTitle":"Стилі форматуваннÑ","panelTitle1":"Блочні Ñтилі","panelTitle2":"Ð Ñдкові Ñтилі","panelTitle3":"Об'єктні Ñтилі"},"specialchar":{"options":"Опції","title":"Оберіть Ñпеціальний Ñимвол","toolbar":"Спеціальний Ñимвол"},"sourcedialog":{"toolbar":"Джерело","title":"Джерело"},"sourcearea":{"toolbar":"Джерело"},"showblocks":{"toolbar":"Показувати блоки"},"removeformat":{"toolbar":"Видалити форматуваннÑ"},"pastetext":{"button":"Ð’Ñтавити тільки текÑÑ‚","pasteNotification":"ÐатиÑніть %1, щоб вÑтавити. Ваш браузер не підтримує вÑтавку за допомогою кнопки панелі інÑтрументів або пункту контекÑтного меню.","title":"Ð’Ñтавити тільки текÑÑ‚"},"pastefromword":{"confirmCleanup":"ТекÑÑ‚, що Ви намагаєтеÑÑŒ вÑтавити, Ñхожий на Ñкопійований з Word. Бажаєте очиÑтити його Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ вÑтавлÑннÑм?","error":"Ðеможливо очиÑтити Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· внутрішню помилку.","title":"Ð’Ñтавити з Word","toolbar":"Ð’Ñтавити з Word"},"notification":{"closed":"Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¾."},"maximize":{"maximize":"МакÑимізувати","minimize":"Мінімізувати"},"magicline":{"title":"Ð’Ñтавити абзац"},"list":{"bulletedlist":"Ð’Ñтавити/видалити маркований ÑпиÑок","numberedlist":"Ð’Ñтавити/видалити нумерований ÑпиÑок"},"language":{"button":"УÑтановити мову","remove":"Вилучити мову"},"indent":{"indent":"Збільшити відÑтуп","outdent":"Зменшити відÑтуп"},"image2":{"alt":"Ðльтернативний текÑÑ‚","btnUpload":"ÐадіÑлати на Ñервер","captioned":"ПідпиÑане зображеннÑ","captionPlaceholder":"Заголовок","infoTab":"Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ зображеннÑ","lockRatio":"Зберегти пропорції","menu":"ВлаÑтивоÑÑ‚Ñ– зображеннÑ","pathName":"ЗображеннÑ","pathNameCaption":"заголовок","resetSize":"ОчиÑтити Ð¿Ð¾Ð»Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð²","resizer":"Клікніть та потÑгніть Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ розмірів","title":"ВлаÑтивоÑÑ‚Ñ– зображеннÑ","uploadTab":"ÐадіÑлати","urlMissing":"Вкажіть URL зображеннÑ.","altMissing":"Ðльтернативний текÑÑ‚ відÑутній."},"horizontalrule":{"toolbar":"Горизонтальна лініÑ"},"format":{"label":"ФорматуваннÑ","panelTitle":"Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð³Ñ€Ð°Ñ„Ð°","tag_address":"ÐдреÑа","tag_div":"Ðормальний (div)","tag_h1":"Заголовок 1","tag_h2":"Заголовок 2","tag_h3":"Заголовок 3","tag_h4":"Заголовок 4","tag_h5":"Заголовок 5","tag_h6":"Заголовок 6","tag_p":"Ðормальний","tag_pre":"Форматований"},"filetools":{"loadError":"Виникла помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ","networkError":"Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ виникла помилка мережі.","httpError404":"Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ виникла помилка HTTP (404: Файл не знайдено).","httpError403":"Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ виникла помилка HTTP (403: ДоÑтуп заборонено).","httpError":"Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ виникла помилка (ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸: %1).","noUrlError":"URL Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ визначений.","responseError":"Ðевірна відповідь Ñервера."},"elementspath":{"eleLabel":"ШлÑÑ…","eleTitle":"%1 елемент"},"contextmenu":{"options":"Опції контекÑтного меню"},"clipboard":{"copy":"Копіювати","copyError":"ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸ Вашого браузера не дозволÑÑŽÑ‚ÑŒ редактору автоматично виконувати операції копіюваннÑ. Будь лаÑка, викориÑтовуйте клавіатуру Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ (Ctrl/Cmd+C).","cut":"Вирізати","cutError":"ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸ Вашого браузера не дозволÑÑŽÑ‚ÑŒ редактору автоматично виконувати операції вирізуваннÑ. Будь лаÑка, викориÑтовуйте клавіатуру Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ (Ctrl/Cmd+X)","paste":"Ð’Ñтавити","pasteNotification":"ÐатиÑніть %1, щоб вÑтавити. Ваш браузер не підтримує вÑтавку за допомогою кнопки панелі інÑтрументів або пункту контекÑтного меню.","pasteArea":"ОблаÑÑ‚ÑŒ вÑтавки","pasteMsg":"Ð’Ñтавте вміÑÑ‚ у облаÑÑ‚ÑŒ нижче та натиÑніть OK."},"blockquote":{"toolbar":"Цитата"},"basicstyles":{"bold":"Жирний","italic":"КурÑив","strike":"ЗакреÑлений","subscript":"Ðижній індекÑ","superscript":"Верхній індекÑ","underline":"ПідкреÑлений"},"about":{"copy":"Copyright © $1. Ð’ÑÑ– права заÑтережено.","dlgTitle":"Про CKEditor 4","moreInfo":"Щодо інформації з Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ñ–Ñ‚Ð°Ð¹Ñ‚Ðµ на наш Ñайт:"},"editor":"ТекÑтовий редактор","editorPanel":"Панель розширеного текÑтового редактора","common":{"editorHelp":"натиÑніть ALT 0 Ð´Ð»Ñ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¸","browseServer":"ОглÑд Сервера","url":"URL","protocol":"Протокол","upload":"ÐадіÑлати","uploadSubmit":"ÐадіÑлати на Ñервер","image":"ЗображеннÑ","flash":"Flash","form":"Форма","checkbox":"Галочка","radio":"Кнопка вибору","textField":"ТекÑтове поле","textarea":"ТекÑтова облаÑÑ‚ÑŒ","hiddenField":"Приховане поле","button":"Кнопка","select":"СпиÑок","imageButton":"Кнопка із зображеннÑм","notSet":"<не визначено>","id":"Ідентифікатор","name":"Ім'Ñ","langDir":"ÐапрÑмок мови","langDirLtr":"Зліва направо (LTR)","langDirRtl":"Справа наліво (RTL)","langCode":"Код мови","longDescr":"Довгий Ð¾Ð¿Ð¸Ñ URL","cssClass":"ÐšÐ»Ð°Ñ CSS","advisoryTitle":"Заголовок","cssStyle":"Стиль CSS","ok":"ОК","cancel":"СкаÑувати","close":"Закрити","preview":"Попередній переглÑд","resize":"ПотÑгніть Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ розмірів","generalTab":"ОÑновне","advancedTab":"Додаткове","validateNumberFailed":"Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ Ñ” цілим чиÑлом.","confirmNewPage":"Ð’ÑÑ– незбережені зміни будуть втрачені. Ви впевнені, що хочете завантажити нову Ñторінку?","confirmCancel":"ДеÑкі опції змінено. Закрити вікно без Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½?","options":"Опції","target":"Ціль","targetNew":"Ðове вікно (_blank)","targetTop":"Поточне вікно (_top)","targetSelf":"Поточний фрейм/вікно (_self)","targetParent":"БатьківÑький фрейм/вікно (_parent)","langDirLTR":"Зліва направо (LTR)","langDirRTL":"Справа наліво (RTL)","styles":"Стиль CSS","cssClasses":"ÐšÐ»Ð°Ñ CSS","width":"Ширина","height":"ВиÑота","align":"ВирівнюваннÑ","left":"По лівому краю","right":"По правому краю","center":"По центру","justify":"По ширині","alignLeft":"По лівому краю","alignRight":"По правому краю","alignCenter":"По центру","alignTop":"По верхньому краю","alignMiddle":"По Ñередині","alignBottom":"По нижньому краю","alignNone":"Ðема","invalidValue":"Ðевірне значеннÑ.","invalidHeight":"ВиÑота повинна бути цілим чиÑлом.","invalidWidth":"Ширина повинна бути цілим чиÑлом.","invalidLength":"Вказане Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ \"%1\" має бути позитивним чиÑлом без або з коректним Ñимволом одиниці виміру (%2).","invalidCssLength":"ЗначеннÑ, вказане Ð´Ð»Ñ \"%1\" в полі повинно бути позитивним чиÑлом або без дійÑного виміру CSS блоку (px, %, in, cm, mm, em, ex, pt або pc).","invalidHtmlLength":"ЗначеннÑ, вказане Ð´Ð»Ñ \"%1\" в полі повинно бути позитивним чиÑлом або без дійÑного виміру HTML блоку (px або %).","invalidInlineStyle":"ЗначеннÑ, вказане Ð´Ð»Ñ Ð²Ð±ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñтилю повинне ÑкладатиÑÑ Ð· одного чи кількох кортежів у форматі \"ім'Ñ : значеннÑ\", розділених крапкою з комою.","cssLengthTooltip":"Введіть номер Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð² пікÑелÑÑ… або чиÑло з дійÑною одиниці CSS (px, %, in, cm, mm, em, ex, pt або pc).","unavailable":"%1<span class=\"cke_accessibility\">, не доÑтупне</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Пробіл","35":"End","36":"Home","46":"Видалити","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Ð¡Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ","optionDefault":"Типово"}}; \ No newline at end of file +CKEDITOR.lang['uk']={"widget":{"move":"Клікніть Ñ– потÑгніть Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ","label":"%1 віджет"},"undo":{"redo":"Повторити","undo":"Повернути"},"toolbar":{"toolbarCollapse":"Згорнути панель інÑтрументів","toolbarExpand":"Розгорнути панель інÑтрументів","toolbarGroups":{"document":"Документ","clipboard":"Буфер обміну / СкаÑувати","editing":"РедагуваннÑ","forms":"Форми","basicstyles":"ОÑновний Стиль","paragraph":"Параграф","links":"ПоÑиланнÑ","insert":"Ð’Ñтавити","styles":"Стилі","colors":"Кольори","tools":"ІнÑтрументи"},"toolbars":"Панель інÑтрументів редактора"},"table":{"border":"Розмір рамки","caption":"Заголовок таблиці","cell":{"menu":"Комірки","insertBefore":"Ð’Ñтавити комірку перед","insertAfter":"Ð’Ñтавити комірку піÑлÑ","deleteCell":"Видалити комірки","merge":"Об'єднати комірки","mergeRight":"Об'єднати Ñправа","mergeDown":"Об'єднати донизу","splitHorizontal":"Розділити комірку по горизонталі","splitVertical":"Розділити комірку по вертикалі","title":"ВлаÑтивоÑÑ‚Ñ– комірки","cellType":"Тип комірки","rowSpan":"Об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ€Ñдків","colSpan":"Об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñтовпців","wordWrap":"ÐвтоперенеÑÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑту","hAlign":"Гориз. вирівнюваннÑ","vAlign":"Верт. вирівнюваннÑ","alignBaseline":"По базовій лінії","bgColor":"Колір фону","borderColor":"Колір рамки","data":"Дані","header":"Заголовок","yes":"Так","no":"ÐÑ–","invalidWidth":"Ширина комірки повинна бути цілим чиÑлом.","invalidHeight":"ВиÑота комірки повинна бути цілим чиÑлом.","invalidRowSpan":"КількіÑÑ‚ÑŒ об'єднуваних Ñ€Ñдків повинна бути цілим чиÑлом.","invalidColSpan":"КількіÑÑ‚ÑŒ об'єднуваних Ñтовбців повинна бути цілим чиÑлом.","chooseColor":"Обрати"},"cellPad":"Внутр. відÑтуп","cellSpace":"Проміжок","column":{"menu":"Стовбці","insertBefore":"Ð’Ñтавити Ñтовбець перед","insertAfter":"Ð’Ñтавити Ñтовбець піÑлÑ","deleteColumn":"Видалити Ñтовбці"},"columns":"Стовбці","deleteTable":"Видалити таблицю","headers":"Заголовки Ñтовбців/Ñ€Ñдків","headersBoth":"Стовбці Ñ– Ñ€Ñдки","headersColumn":"Стовбці","headersNone":"Без заголовків","headersRow":"Ð Ñдки","heightUnit":"Ð¾Ð´Ð¸Ð½Ð¸Ñ†Ñ Ð²Ð¸Ñоти","invalidBorder":"Розмір рамки повинен бути цілим чиÑлом.","invalidCellPadding":"Внутр. відÑтуп комірки повинен бути цілим чиÑлом.","invalidCellSpacing":"Проміжок між комірками повинен бути цілим чиÑлом.","invalidCols":"КількіÑÑ‚ÑŒ Ñтовбців повинна бути більшою 0.","invalidHeight":"ВиÑота таблиці повинна бути цілим чиÑлом.","invalidRows":"КількіÑÑ‚ÑŒ Ñ€Ñдків повинна бути більшою 0.","invalidWidth":"Ширина таблиці повинна бути цілим чиÑлом.","menu":"ВлаÑтивоÑÑ‚Ñ– таблиці","row":{"menu":"Ð Ñдки","insertBefore":"Ð’Ñтавити Ñ€Ñдок перед","insertAfter":"Ð’Ñтавити Ñ€Ñдок піÑлÑ","deleteRow":"Видалити Ñ€Ñдки"},"rows":"Ð Ñдки","summary":"Детальний Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ таблиці","title":"ВлаÑтивоÑÑ‚Ñ– таблиці","toolbar":"ТаблицÑ","widthPc":"відÑотків","widthPx":"пікÑелів","widthUnit":"Ð¾Ð´Ð¸Ð½Ð¸Ñ†Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð¸"},"stylescombo":{"label":"Стиль","panelTitle":"Стилі форматуваннÑ","panelTitle1":"Блочні Ñтилі","panelTitle2":"Ð Ñдкові Ñтилі","panelTitle3":"Об'єктні Ñтилі"},"specialchar":{"options":"Опції","title":"Оберіть Ñпеціальний Ñимвол","toolbar":"Спеціальний Ñимвол"},"sourcedialog":{"toolbar":"Джерело","title":"Джерело"},"sourcearea":{"toolbar":"Джерело"},"showblocks":{"toolbar":"Показувати блоки"},"removeformat":{"toolbar":"Видалити форматуваннÑ"},"pastetext":{"button":"Ð’Ñтавити тільки текÑÑ‚","pasteNotification":"ÐатиÑніть %1, щоб вÑтавити. Ваш браузер не підтримує вÑтавку за допомогою кнопки панелі інÑтрументів або пункту контекÑтного меню.","title":"Ð’Ñтавити тільки текÑÑ‚"},"pastefromword":{"confirmCleanup":"ТекÑÑ‚, що Ви намагаєтеÑÑŒ вÑтавити, Ñхожий на Ñкопійований з Word. Бажаєте очиÑтити його Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ вÑтавлÑннÑм?","error":"Ðеможливо очиÑтити Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· внутрішню помилку.","title":"Ð’Ñтавити з Word","toolbar":"Ð’Ñтавити з Word"},"notification":{"closed":"Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¾."},"maximize":{"maximize":"МакÑимізувати","minimize":"Мінімізувати"},"magicline":{"title":"Ð’Ñтавити абзац"},"list":{"bulletedlist":"Ð’Ñтавити/видалити маркований ÑпиÑок","numberedlist":"Ð’Ñтавити/видалити нумерований ÑпиÑок"},"language":{"button":"УÑтановити мову","remove":"Вилучити мову"},"indent":{"indent":"Збільшити відÑтуп","outdent":"Зменшити відÑтуп"},"image2":{"alt":"Ðльтернативний текÑÑ‚","btnUpload":"ÐадіÑлати на Ñервер","captioned":"ПідпиÑане зображеннÑ","captionPlaceholder":"Заголовок","infoTab":"Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ зображеннÑ","lockRatio":"Зберегти пропорції","menu":"ВлаÑтивоÑÑ‚Ñ– зображеннÑ","pathName":"ЗображеннÑ","pathNameCaption":"заголовок","resetSize":"ОчиÑтити Ð¿Ð¾Ð»Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð²","resizer":"Клікніть та потÑгніть Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ розмірів","title":"ВлаÑтивоÑÑ‚Ñ– зображеннÑ","uploadTab":"ÐадіÑлати","urlMissing":"Вкажіть URL зображеннÑ.","altMissing":"Ðльтернативний текÑÑ‚ відÑутній."},"horizontalrule":{"toolbar":"Горизонтальна лініÑ"},"format":{"label":"ФорматуваннÑ","panelTitle":"Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð³Ñ€Ð°Ñ„Ð°","tag_address":"ÐдреÑа","tag_div":"Ðормальний (div)","tag_h1":"Заголовок 1","tag_h2":"Заголовок 2","tag_h3":"Заголовок 3","tag_h4":"Заголовок 4","tag_h5":"Заголовок 5","tag_h6":"Заголовок 6","tag_p":"Ðормальний","tag_pre":"Форматований"},"filetools":{"loadError":"Виникла помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ","networkError":"Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ виникла помилка мережі.","httpError404":"Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ виникла помилка HTTP (404: Файл не знайдено).","httpError403":"Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ виникла помилка HTTP (403: ДоÑтуп заборонено).","httpError":"Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ виникла помилка (ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸: %1).","noUrlError":"URL Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ визначений.","responseError":"Ðевірна відповідь Ñервера."},"elementspath":{"eleLabel":"ШлÑÑ…","eleTitle":"%1 елемент"},"contextmenu":{"options":"Опції контекÑтного меню"},"clipboard":{"copy":"Копіювати","copyError":"ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸ Вашого браузера не дозволÑÑŽÑ‚ÑŒ редактору автоматично виконувати операції копіюваннÑ. Будь лаÑка, викориÑтовуйте клавіатуру Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ (Ctrl/Cmd+C).","cut":"Вирізати","cutError":"ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸ Вашого браузера не дозволÑÑŽÑ‚ÑŒ редактору автоматично виконувати операції вирізуваннÑ. Будь лаÑка, викориÑтовуйте клавіатуру Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ (Ctrl/Cmd+X)","paste":"Ð’Ñтавити","pasteNotification":"ÐатиÑніть %1, щоб вÑтавити. Ваш браузер не підтримує вÑтавку за допомогою кнопки панелі інÑтрументів або пункту контекÑтного меню.","pasteArea":"ОблаÑÑ‚ÑŒ вÑтавки","pasteMsg":"Ð’Ñтавте вміÑÑ‚ у облаÑÑ‚ÑŒ нижче та натиÑніть OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Цитата"},"basicstyles":{"bold":"Жирний","italic":"КурÑив","strike":"ЗакреÑлений","subscript":"Ðижній індекÑ","superscript":"Верхній індекÑ","underline":"ПідкреÑлений"},"about":{"copy":"Copyright © $1. Ð’ÑÑ– права заÑтережено.","dlgTitle":"Про CKEditor 4","moreInfo":"Щодо інформації з Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ñ–Ñ‚Ð°Ð¹Ñ‚Ðµ на наш Ñайт:"},"editor":"ТекÑтовий редактор","editorPanel":"Панель розширеного текÑтового редактора","common":{"editorHelp":"натиÑніть ALT 0 Ð´Ð»Ñ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¸","browseServer":"ОглÑд Сервера","url":"URL","protocol":"Протокол","upload":"ÐадіÑлати","uploadSubmit":"ÐадіÑлати на Ñервер","image":"ЗображеннÑ","form":"Форма","checkbox":"Галочка","radio":"Кнопка вибору","textField":"ТекÑтове поле","textarea":"ТекÑтова облаÑÑ‚ÑŒ","hiddenField":"Приховане поле","button":"Кнопка","select":"СпиÑок","imageButton":"Кнопка із зображеннÑм","notSet":"<не визначено>","id":"Ідентифікатор","name":"Ім'Ñ","langDir":"ÐапрÑмок мови","langDirLtr":"Зліва направо (LTR)","langDirRtl":"Справа наліво (RTL)","langCode":"Код мови","longDescr":"Довгий Ð¾Ð¿Ð¸Ñ URL","cssClass":"ÐšÐ»Ð°Ñ CSS","advisoryTitle":"Заголовок","cssStyle":"Стиль CSS","ok":"ОК","cancel":"СкаÑувати","close":"Закрити","preview":"Попередній переглÑд","resize":"ПотÑгніть Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ розмірів","generalTab":"ОÑновне","advancedTab":"Додаткове","validateNumberFailed":"Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ Ñ” цілим чиÑлом.","confirmNewPage":"Ð’ÑÑ– незбережені зміни будуть втрачені. Ви впевнені, що хочете завантажити нову Ñторінку?","confirmCancel":"ДеÑкі опції змінено. Закрити вікно без Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½?","options":"Опції","target":"Ціль","targetNew":"Ðове вікно (_blank)","targetTop":"Поточне вікно (_top)","targetSelf":"Поточний фрейм/вікно (_self)","targetParent":"БатьківÑький фрейм/вікно (_parent)","langDirLTR":"Зліва направо (LTR)","langDirRTL":"Справа наліво (RTL)","styles":"Стиль CSS","cssClasses":"ÐšÐ»Ð°Ñ CSS","width":"Ширина","height":"ВиÑота","align":"ВирівнюваннÑ","left":"По лівому краю","right":"По правому краю","center":"По центру","justify":"По ширині","alignLeft":"По лівому краю","alignRight":"По правому краю","alignCenter":"По центру","alignTop":"По верхньому краю","alignMiddle":"По Ñередині","alignBottom":"По нижньому краю","alignNone":"Ðема","invalidValue":"Ðевірне значеннÑ.","invalidHeight":"ВиÑота повинна бути цілим чиÑлом.","invalidWidth":"Ширина повинна бути цілим чиÑлом.","invalidLength":"Вказане Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ \"%1\" має бути позитивним чиÑлом без або з коректним Ñимволом одиниці виміру (%2).","invalidCssLength":"ЗначеннÑ, вказане Ð´Ð»Ñ \"%1\" в полі повинно бути позитивним чиÑлом або без дійÑного виміру CSS блоку (px, %, in, cm, mm, em, ex, pt або pc).","invalidHtmlLength":"ЗначеннÑ, вказане Ð´Ð»Ñ \"%1\" в полі повинно бути позитивним чиÑлом або без дійÑного виміру HTML блоку (px або %).","invalidInlineStyle":"ЗначеннÑ, вказане Ð´Ð»Ñ Ð²Ð±ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñтилю повинне ÑкладатиÑÑ Ð· одного чи кількох кортежів у форматі \"ім'Ñ : значеннÑ\", розділених крапкою з комою.","cssLengthTooltip":"Введіть номер Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð² пікÑелÑÑ… або чиÑло з дійÑною одиниці CSS (px, %, in, cm, mm, em, ex, pt або pc).","unavailable":"%1<span class=\"cke_accessibility\">, не доÑтупне</span>","keyboard":{"8":"Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Пробіл","35":"End","36":"Home","46":"Видалити","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"Ð¡Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ","optionDefault":"Типово"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/vi.js b/core/assets/vendor/ckeditor/lang/vi.js index 7aebae57ee5e..8beef433f3a2 100644 --- a/core/assets/vendor/ckeditor/lang/vi.js +++ b/core/assets/vendor/ckeditor/lang/vi.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['vi']={"widget":{"move":"Nhấp chuá»™t và kéo để di chuyển","label":"%1 widget"},"undo":{"redo":"Là m lại thao tác","undo":"Khôi phục thao tác"},"toolbar":{"toolbarCollapse":"Thu gá»n thanh công cụ","toolbarExpand":"Mở rá»™ng thnah công cụ","toolbarGroups":{"document":"Tà i liệu","clipboard":"Clipboard/Undo","editing":"Chỉnh sá»a","forms":"Bảng biểu","basicstyles":"Kiểu cÆ¡ bản","paragraph":"Äoạn","links":"Liên kết","insert":"Chèn","styles":"Kiểu","colors":"Mà u sắc","tools":"Công cụ"},"toolbars":"Thanh công cụ"},"table":{"border":"KÃch thÆ°á»›c Ä‘Æ°á»ng viá»n","caption":"Äầu Ä‘á»","cell":{"menu":"Ô","insertBefore":"Chèn ô PhÃa trÆ°á»›c","insertAfter":"Chèn ô PhÃa sau","deleteCell":"Xoá ô","merge":"Kết hợp ô","mergeRight":"Kết hợp sang phải","mergeDown":"Kết hợp xuống dÆ°á»›i","splitHorizontal":"Phân tách ô theo chiá»u ngang","splitVertical":"Phân tách ô theo chiá»u dá»c","title":"Thuá»™c tÃnh của ô","cellType":"Kiểu của ô","rowSpan":"Kết hợp hà ng","colSpan":"Kết hợp cá»™t","wordWrap":"Chữ liá»n hà ng","hAlign":"Canh lá» ngang","vAlign":"Canh lá» dá»c","alignBaseline":"ÄÆ°á»ng cÆ¡ sở","bgColor":"Mà u ná»n","borderColor":"Mà u viá»n","data":"Dữ liệu","header":"Äầu Ä‘á»","yes":"Có","no":"Không","invalidWidth":"Chiá»u rá»™ng của ô phải là má»™t số nguyên.","invalidHeight":"Chiá»u cao của ô phải là má»™t số nguyên.","invalidRowSpan":"Số hà ng kết hợp phải là má»™t số nguyên.","invalidColSpan":"Số cá»™t kết hợp phải là má»™t số nguyên.","chooseColor":"Chá»n mà u"},"cellPad":"Khoảng đệm giữ ô và ná»™i dung","cellSpace":"Khoảng cách giữa các ô","column":{"menu":"Cá»™t","insertBefore":"Chèn cá»™t phÃa trÆ°á»›c","insertAfter":"Chèn cá»™t phÃa sau","deleteColumn":"Xoá cá»™t"},"columns":"Số cá»™t","deleteTable":"Xóa bảng","headers":"Äầu Ä‘á»","headersBoth":"Cả hai","headersColumn":"Cá»™t đầu tiên","headersNone":"Không có","headersRow":"Hà ng đầu tiên","heightUnit":"height unit","invalidBorder":"KÃch cỡ của Ä‘Æ°á»ng biên phải là má»™t số nguyên.","invalidCellPadding":"Khoảng đệm giữa ô và ná»™i dung phải là má»™t số nguyên.","invalidCellSpacing":"Khoảng cách giữa các ô phải là má»™t số nguyên.","invalidCols":"Số lượng cá»™t phải là má»™t số lá»›n hÆ¡n 0.","invalidHeight":"Chiá»u cao của bảng phải là má»™t số nguyên.","invalidRows":"Số lượng hà ng phải là má»™t số lá»›n hÆ¡n 0.","invalidWidth":"Chiá»u rá»™ng của bảng phải là má»™t số nguyên.","menu":"Thuá»™c tÃnh bảng","row":{"menu":"Hà ng","insertBefore":"Chèn hà ng phÃa trÆ°á»›c","insertAfter":"Chèn hà ng phÃa sau","deleteRow":"Xoá hà ng"},"rows":"Số hà ng","summary":"Tóm lược","title":"Thuá»™c tÃnh bảng","toolbar":"Bảng","widthPc":"Phần trăm (%)","widthPx":"Äiểm ảnh (px)","widthUnit":"ÄÆ¡n vị"},"stylescombo":{"label":"Kiểu","panelTitle":"Phong cách định dạng","panelTitle1":"Kiểu khối","panelTitle2":"Kiểu trá»±c tiếp","panelTitle3":"Kiểu đối tượng"},"specialchar":{"options":"Tùy chá»n các ký tá»± đặc biệt","title":"Hãy chá»n ký tá»± đặc biệt","toolbar":"Chèn ký tá»± đặc biệt"},"sourcedialog":{"toolbar":"Mã HTML","title":"Mã HTML"},"sourcearea":{"toolbar":"Mã HTML"},"showblocks":{"toolbar":"Hiển thị các khối"},"removeformat":{"toolbar":"Xoá định dạng"},"pastetext":{"button":"Dán theo định dạng văn bản thuần","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Dán theo định dạng văn bản thuần"},"pastefromword":{"confirmCleanup":"Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỠđịnh dạng Word trÆ°á»›c khi dán?","error":"Không thể để là m sạch các dữ liệu dán do má»™t lá»—i ná»™i bá»™","title":"Dán vá»›i định dạng Word","toolbar":"Dán vá»›i định dạng Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Phóng to tối Ä‘a","minimize":"Thu nhá»"},"magicline":{"title":"Chèn Ä‘oạn và o đây"},"list":{"bulletedlist":"Chèn/Xoá Danh sách không thứ tá»±","numberedlist":"Chèn/Xoá Danh sách có thứ tá»±"},"language":{"button":"Thiết láºp ngôn ngữ","remove":"Loại bá» ngôn ngữ"},"indent":{"indent":"Dịch và o trong","outdent":"Dịch ra ngoà i"},"image2":{"alt":"Chú thÃch ảnh","btnUpload":"Tải lên máy chủ","captioned":"Ảnh có chú thÃch","captionPlaceholder":"Nhãn","infoTab":"Thông tin của ảnh","lockRatio":"Giữ nguyên tá»· lệ","menu":"Thuá»™c tÃnh của ảnh","pathName":"ảnh","pathNameCaption":"chú thÃch","resetSize":"KÃch thÆ°á»›c gốc","resizer":"Kéo rê để thay đổi kÃch cỡ","title":"Thuá»™c tÃnh của ảnh","uploadTab":"Tải lên","urlMissing":"Thiếu Ä‘Æ°á»ng dẫn hình ảnh","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Chèn Ä‘Æ°á»ng phân cách ngang"},"format":{"label":"Äịnh dạng","panelTitle":"Äịnh dạng","tag_address":"Address","tag_div":"Bình thÆ°á»ng (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Bình thÆ°á»ng (P)","tag_pre":"Äã thiết láºp"},"filetools":{"loadError":"Lá»—i xảy ra khi Ä‘ang Ä‘á»c file","networkError":"Lá»—i kết nối xảy ra khi Ä‘ang tải file lên","httpError404":"Lá»—i HTTP xảy ra khi Ä‘ang tải file lên (404: Không tìm thấy file)","httpError403":"Lá»—i HTTP xảy ra khi Ä‘ang tải file lên (403: Bị cấm)","httpError":"Lá»—i HTTP xảy ra khi Ä‘ang tải file lên (tình trạng lá»—i: %1)","noUrlError":"ÄÆ°á»ng dẫn tải lên không hoạt Ä‘á»™ng","responseError":"Phản hồi từ server sai"},"elementspath":{"eleLabel":"Nhãn thà nh phần","eleTitle":"%1 thà nh phần"},"contextmenu":{"options":"Tùy chá»n menu bổ xung"},"clipboard":{"copy":"Sao chép","copyError":"Các thiết láºp bảo máºt của trình duyệt không cho phép trình biên táºp tá»± Ä‘á»™ng thá»±c thi lệnh sao chép. Hãy sá» dụng bà n phÃm cho lệnh nà y (Ctrl/Cmd+C).","cut":"Cắt","cutError":"Các thiết láºp bảo máºt của trình duyệt không cho phép trình biên táºp tá»± Ä‘á»™ng thá»±c thi lệnh cắt. Hãy sá» dụng bà n phÃm cho lệnh nà y (Ctrl/Cmd+X).","paste":"Dán","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Khu vá»±c dán","pasteMsg":"Paste your content inside the area below and press OK."},"blockquote":{"toolbar":"Khối trÃch dẫn"},"basicstyles":{"bold":"Äáºm","italic":"Nghiêng","strike":"Gạch xuyên ngang","subscript":"Chỉ số dÆ°á»›i","superscript":"Chỉ số trên","underline":"Gạch chân"},"about":{"copy":"Bản quyá»n © $1. Giữ toà n quyá»n.","dlgTitle":"Thông tin vá» CKEditor 4","moreInfo":"Vui lòng ghé thăm trang web của chúng tôi để có thông tin vá» giấy phép:"},"editor":"Bá»™ soạn thảo văn bản có định dạng","editorPanel":"Bảng Ä‘iá»u khiển Rich Text Editor","common":{"editorHelp":"Nhấn ALT + 0 để được giúp đỡ","browseServer":"Duyệt máy chủ","url":"URL","protocol":"Giao thức","upload":"Tải lên","uploadSubmit":"Tải lên máy chủ","image":"Hình ảnh","flash":"Flash","form":"Biểu mẫu","checkbox":"Nút kiểm","radio":"Nút chá»n","textField":"TrÆ°á»ng văn bản","textarea":"Vùng văn bản","hiddenField":"TrÆ°á»ng ẩn","button":"Nút","select":"Ô chá»n","imageButton":"Nút hình ảnh","notSet":"<không thiết láºp>","id":"Äịnh danh","name":"Tên","langDir":"HÆ°á»›ng ngôn ngữ","langDirLtr":"Trái sang phải (LTR)","langDirRtl":"Phải sang trái (RTL)","langCode":"Mã ngôn ngữ","longDescr":"Mô tả URL","cssClass":"Lá»›p Stylesheet","advisoryTitle":"Nhan Ä‘á» hÆ°á»›ng dẫn","cssStyle":"Kiểu ","ok":"Äồng ý","cancel":"Bá» qua","close":"Äóng","preview":"Xem trÆ°á»›c","resize":"Kéo rê để thay đổi kÃch cỡ","generalTab":"Tab chung","advancedTab":"Tab mở rá»™ng","validateNumberFailed":"Giá trị nà y không phải là số.","confirmNewPage":"Má»i thay đổi không được lÆ°u lại, ná»™i dung nà y sẽ bị mất. Bạn có chắc chắn muốn tải má»™t trang má»›i?","confirmCancel":"Má»™t và i tùy chá»n đã bị thay đổi. Bạn có chắc chắn muốn đóng há»™p thoại?","options":"Tùy chá»n","target":"ÄÃch đến","targetNew":"Cá»a sổ má»›i (_blank)","targetTop":"Cá»a sổ trên cùng (_top)","targetSelf":"Tại trang (_self)","targetParent":"Cá»a sổ cha (_parent)","langDirLTR":"Trái sang phải (LTR)","langDirRTL":"Phải sang trái (RTL)","styles":"Kiểu","cssClasses":"Lá»›p CSS","width":"Chiá»u rá»™ng","height":"Chiá»u cao","align":"Vị trÃ","left":"Trái","right":"Phải","center":"Giữa","justify":"Sắp chữ","alignLeft":"Canh trái","alignRight":"Canh phải","alignCenter":"Canh giữa","alignTop":"Trên","alignMiddle":"Giữa","alignBottom":"DÆ°á»›i","alignNone":"Không","invalidValue":"Giá trị không hợp lệ.","invalidHeight":"Chiá»u cao phải là số nguyên.","invalidWidth":"Chiá»u rá»™ng phải là số nguyên.","invalidLength":"Giá trị cho trÆ°á»ng \"%1\" phải là má»™t số dÆ°Æ¡ng có hoặc không có Ä‘Æ¡n vị Ä‘o lÆ°á»ng hợp lệ (%2)","invalidCssLength":"Giá trị quy định cho trÆ°á»ng \"%1\" phải là má»™t số dÆ°Æ¡ng có hoặc không có má»™t Ä‘Æ¡n vị Ä‘o CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).","invalidHtmlLength":"Giá trị quy định cho trÆ°á»ng \"%1\" phải là má»™t số dÆ°Æ¡ng có hoặc không có má»™t Ä‘Æ¡n vị Ä‘o HTML hợp lệ (px hoặc %).","invalidInlineStyle":"Giá trị quy định cho kiểu ná»™i tuyến phải bao gồm má»™t hoặc nhiá»u dữ liệu vá»›i định dạng \"tên:giá trị\", cách nhau bằng dấu chấm phẩy.","cssLengthTooltip":"Nháºp má»™t giá trị theo pixel hoặc má»™t số vá»›i má»™t Ä‘Æ¡n vị CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).","unavailable":"%1<span class=\"cke_accessibility\">, không có</span>","keyboard":{"8":"PhÃm Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Cách","35":"End","36":"Home","46":"Xóa","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"PhÃm tắt","optionDefault":"Mặc định"}}; \ No newline at end of file +CKEDITOR.lang['vi']={"widget":{"move":"Nhấp chuá»™t và kéo để di chuyển","label":"%1 widget"},"undo":{"redo":"Là m lại thao tác","undo":"Khôi phục thao tác"},"toolbar":{"toolbarCollapse":"Thu gá»n thanh công cụ","toolbarExpand":"Mở rá»™ng thnah công cụ","toolbarGroups":{"document":"Tà i liệu","clipboard":"Clipboard/Undo","editing":"Chỉnh sá»a","forms":"Bảng biểu","basicstyles":"Kiểu cÆ¡ bản","paragraph":"Äoạn","links":"Liên kết","insert":"Chèn","styles":"Kiểu","colors":"Mà u sắc","tools":"Công cụ"},"toolbars":"Thanh công cụ"},"table":{"border":"KÃch thÆ°á»›c Ä‘Æ°á»ng viá»n","caption":"Äầu Ä‘á»","cell":{"menu":"Ô","insertBefore":"Chèn ô PhÃa trÆ°á»›c","insertAfter":"Chèn ô PhÃa sau","deleteCell":"Xoá ô","merge":"Kết hợp ô","mergeRight":"Kết hợp sang phải","mergeDown":"Kết hợp xuống dÆ°á»›i","splitHorizontal":"Phân tách ô theo chiá»u ngang","splitVertical":"Phân tách ô theo chiá»u dá»c","title":"Thuá»™c tÃnh của ô","cellType":"Kiểu của ô","rowSpan":"Kết hợp hà ng","colSpan":"Kết hợp cá»™t","wordWrap":"Chữ liá»n hà ng","hAlign":"Canh lá» ngang","vAlign":"Canh lá» dá»c","alignBaseline":"ÄÆ°á»ng cÆ¡ sở","bgColor":"Mà u ná»n","borderColor":"Mà u viá»n","data":"Dữ liệu","header":"Äầu Ä‘á»","yes":"Có","no":"Không","invalidWidth":"Chiá»u rá»™ng của ô phải là má»™t số nguyên.","invalidHeight":"Chiá»u cao của ô phải là má»™t số nguyên.","invalidRowSpan":"Số hà ng kết hợp phải là má»™t số nguyên.","invalidColSpan":"Số cá»™t kết hợp phải là má»™t số nguyên.","chooseColor":"Chá»n mà u"},"cellPad":"Khoảng đệm giữ ô và ná»™i dung","cellSpace":"Khoảng cách giữa các ô","column":{"menu":"Cá»™t","insertBefore":"Chèn cá»™t phÃa trÆ°á»›c","insertAfter":"Chèn cá»™t phÃa sau","deleteColumn":"Xoá cá»™t"},"columns":"Số cá»™t","deleteTable":"Xóa bảng","headers":"Äầu Ä‘á»","headersBoth":"Cả hai","headersColumn":"Cá»™t đầu tiên","headersNone":"Không có","headersRow":"Hà ng đầu tiên","heightUnit":"height unit","invalidBorder":"KÃch cỡ của Ä‘Æ°á»ng biên phải là má»™t số nguyên.","invalidCellPadding":"Khoảng đệm giữa ô và ná»™i dung phải là má»™t số nguyên.","invalidCellSpacing":"Khoảng cách giữa các ô phải là má»™t số nguyên.","invalidCols":"Số lượng cá»™t phải là má»™t số lá»›n hÆ¡n 0.","invalidHeight":"Chiá»u cao của bảng phải là má»™t số nguyên.","invalidRows":"Số lượng hà ng phải là má»™t số lá»›n hÆ¡n 0.","invalidWidth":"Chiá»u rá»™ng của bảng phải là má»™t số nguyên.","menu":"Thuá»™c tÃnh bảng","row":{"menu":"Hà ng","insertBefore":"Chèn hà ng phÃa trÆ°á»›c","insertAfter":"Chèn hà ng phÃa sau","deleteRow":"Xoá hà ng"},"rows":"Số hà ng","summary":"Tóm lược","title":"Thuá»™c tÃnh bảng","toolbar":"Bảng","widthPc":"Phần trăm (%)","widthPx":"Äiểm ảnh (px)","widthUnit":"ÄÆ¡n vị"},"stylescombo":{"label":"Kiểu","panelTitle":"Phong cách định dạng","panelTitle1":"Kiểu khối","panelTitle2":"Kiểu trá»±c tiếp","panelTitle3":"Kiểu đối tượng"},"specialchar":{"options":"Tùy chá»n các ký tá»± đặc biệt","title":"Hãy chá»n ký tá»± đặc biệt","toolbar":"Chèn ký tá»± đặc biệt"},"sourcedialog":{"toolbar":"Mã HTML","title":"Mã HTML"},"sourcearea":{"toolbar":"Mã HTML"},"showblocks":{"toolbar":"Hiển thị các khối"},"removeformat":{"toolbar":"Xoá định dạng"},"pastetext":{"button":"Dán theo định dạng văn bản thuần","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","title":"Dán theo định dạng văn bản thuần"},"pastefromword":{"confirmCleanup":"Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỠđịnh dạng Word trÆ°á»›c khi dán?","error":"Không thể để là m sạch các dữ liệu dán do má»™t lá»—i ná»™i bá»™","title":"Dán vá»›i định dạng Word","toolbar":"Dán vá»›i định dạng Word"},"notification":{"closed":"Notification closed."},"maximize":{"maximize":"Phóng to tối Ä‘a","minimize":"Thu nhá»"},"magicline":{"title":"Chèn Ä‘oạn và o đây"},"list":{"bulletedlist":"Chèn/Xoá Danh sách không thứ tá»±","numberedlist":"Chèn/Xoá Danh sách có thứ tá»±"},"language":{"button":"Thiết láºp ngôn ngữ","remove":"Loại bá» ngôn ngữ"},"indent":{"indent":"Dịch và o trong","outdent":"Dịch ra ngoà i"},"image2":{"alt":"Chú thÃch ảnh","btnUpload":"Tải lên máy chủ","captioned":"Ảnh có chú thÃch","captionPlaceholder":"Nhãn","infoTab":"Thông tin của ảnh","lockRatio":"Giữ nguyên tá»· lệ","menu":"Thuá»™c tÃnh của ảnh","pathName":"ảnh","pathNameCaption":"chú thÃch","resetSize":"KÃch thÆ°á»›c gốc","resizer":"Kéo rê để thay đổi kÃch cỡ","title":"Thuá»™c tÃnh của ảnh","uploadTab":"Tải lên","urlMissing":"Thiếu Ä‘Æ°á»ng dẫn hình ảnh","altMissing":"Alternative text is missing."},"horizontalrule":{"toolbar":"Chèn Ä‘Æ°á»ng phân cách ngang"},"format":{"label":"Äịnh dạng","panelTitle":"Äịnh dạng","tag_address":"Address","tag_div":"Bình thÆ°á»ng (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Bình thÆ°á»ng (P)","tag_pre":"Äã thiết láºp"},"filetools":{"loadError":"Lá»—i xảy ra khi Ä‘ang Ä‘á»c file","networkError":"Lá»—i kết nối xảy ra khi Ä‘ang tải file lên","httpError404":"Lá»—i HTTP xảy ra khi Ä‘ang tải file lên (404: Không tìm thấy file)","httpError403":"Lá»—i HTTP xảy ra khi Ä‘ang tải file lên (403: Bị cấm)","httpError":"Lá»—i HTTP xảy ra khi Ä‘ang tải file lên (tình trạng lá»—i: %1)","noUrlError":"ÄÆ°á»ng dẫn tải lên không hoạt Ä‘á»™ng","responseError":"Phản hồi từ server sai"},"elementspath":{"eleLabel":"Nhãn thà nh phần","eleTitle":"%1 thà nh phần"},"contextmenu":{"options":"Tùy chá»n menu bổ xung"},"clipboard":{"copy":"Sao chép","copyError":"Các thiết láºp bảo máºt của trình duyệt không cho phép trình biên táºp tá»± Ä‘á»™ng thá»±c thi lệnh sao chép. Hãy sá» dụng bà n phÃm cho lệnh nà y (Ctrl/Cmd+C).","cut":"Cắt","cutError":"Các thiết láºp bảo máºt của trình duyệt không cho phép trình biên táºp tá»± Ä‘á»™ng thá»±c thi lệnh cắt. Hãy sá» dụng bà n phÃm cho lệnh nà y (Ctrl/Cmd+X).","paste":"Dán","pasteNotification":"Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.","pasteArea":"Khu vá»±c dán","pasteMsg":"Paste your content inside the area below and press OK.","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"Khối trÃch dẫn"},"basicstyles":{"bold":"Äáºm","italic":"Nghiêng","strike":"Gạch xuyên ngang","subscript":"Chỉ số dÆ°á»›i","superscript":"Chỉ số trên","underline":"Gạch chân"},"about":{"copy":"Bản quyá»n © $1. Giữ toà n quyá»n.","dlgTitle":"Thông tin vá» CKEditor 4","moreInfo":"Vui lòng ghé thăm trang web của chúng tôi để có thông tin vá» giấy phép:"},"editor":"Bá»™ soạn thảo văn bản có định dạng","editorPanel":"Bảng Ä‘iá»u khiển Rich Text Editor","common":{"editorHelp":"Nhấn ALT + 0 để được giúp đỡ","browseServer":"Duyệt máy chủ","url":"URL","protocol":"Giao thức","upload":"Tải lên","uploadSubmit":"Tải lên máy chủ","image":"Hình ảnh","form":"Biểu mẫu","checkbox":"Nút kiểm","radio":"Nút chá»n","textField":"TrÆ°á»ng văn bản","textarea":"Vùng văn bản","hiddenField":"TrÆ°á»ng ẩn","button":"Nút","select":"Ô chá»n","imageButton":"Nút hình ảnh","notSet":"<không thiết láºp>","id":"Äịnh danh","name":"Tên","langDir":"HÆ°á»›ng ngôn ngữ","langDirLtr":"Trái sang phải (LTR)","langDirRtl":"Phải sang trái (RTL)","langCode":"Mã ngôn ngữ","longDescr":"Mô tả URL","cssClass":"Lá»›p Stylesheet","advisoryTitle":"Nhan Ä‘á» hÆ°á»›ng dẫn","cssStyle":"Kiểu ","ok":"Äồng ý","cancel":"Bá» qua","close":"Äóng","preview":"Xem trÆ°á»›c","resize":"Kéo rê để thay đổi kÃch cỡ","generalTab":"Tab chung","advancedTab":"Tab mở rá»™ng","validateNumberFailed":"Giá trị nà y không phải là số.","confirmNewPage":"Má»i thay đổi không được lÆ°u lại, ná»™i dung nà y sẽ bị mất. Bạn có chắc chắn muốn tải má»™t trang má»›i?","confirmCancel":"Má»™t và i tùy chá»n đã bị thay đổi. Bạn có chắc chắn muốn đóng há»™p thoại?","options":"Tùy chá»n","target":"ÄÃch đến","targetNew":"Cá»a sổ má»›i (_blank)","targetTop":"Cá»a sổ trên cùng (_top)","targetSelf":"Tại trang (_self)","targetParent":"Cá»a sổ cha (_parent)","langDirLTR":"Trái sang phải (LTR)","langDirRTL":"Phải sang trái (RTL)","styles":"Kiểu","cssClasses":"Lá»›p CSS","width":"Chiá»u rá»™ng","height":"Chiá»u cao","align":"Vị trÃ","left":"Trái","right":"Phải","center":"Giữa","justify":"Sắp chữ","alignLeft":"Canh trái","alignRight":"Canh phải","alignCenter":"Canh giữa","alignTop":"Trên","alignMiddle":"Giữa","alignBottom":"DÆ°á»›i","alignNone":"Không","invalidValue":"Giá trị không hợp lệ.","invalidHeight":"Chiá»u cao phải là số nguyên.","invalidWidth":"Chiá»u rá»™ng phải là số nguyên.","invalidLength":"Giá trị cho trÆ°á»ng \"%1\" phải là má»™t số dÆ°Æ¡ng có hoặc không có Ä‘Æ¡n vị Ä‘o lÆ°á»ng hợp lệ (%2)","invalidCssLength":"Giá trị quy định cho trÆ°á»ng \"%1\" phải là má»™t số dÆ°Æ¡ng có hoặc không có má»™t Ä‘Æ¡n vị Ä‘o CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).","invalidHtmlLength":"Giá trị quy định cho trÆ°á»ng \"%1\" phải là má»™t số dÆ°Æ¡ng có hoặc không có má»™t Ä‘Æ¡n vị Ä‘o HTML hợp lệ (px hoặc %).","invalidInlineStyle":"Giá trị quy định cho kiểu ná»™i tuyến phải bao gồm má»™t hoặc nhiá»u dữ liệu vá»›i định dạng \"tên:giá trị\", cách nhau bằng dấu chấm phẩy.","cssLengthTooltip":"Nháºp má»™t giá trị theo pixel hoặc má»™t số vá»›i má»™t Ä‘Æ¡n vị CSS hợp lệ (px, %, in, cm, mm, em, ex, pt, hoặc pc).","unavailable":"%1<span class=\"cke_accessibility\">, không có</span>","keyboard":{"8":"PhÃm Backspace","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"Cách","35":"End","36":"Home","46":"Xóa","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"PhÃm tắt","optionDefault":"Mặc định"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/zh-cn.js b/core/assets/vendor/ckeditor/lang/zh-cn.js index 7fed836ddc88..ccb0f6d03e50 100644 --- a/core/assets/vendor/ckeditor/lang/zh-cn.js +++ b/core/assets/vendor/ckeditor/lang/zh-cn.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['zh-cn']={"widget":{"move":"点击并拖拽以移动","label":"%1 å°éƒ¨ä»¶"},"undo":{"redo":"é‡åš","undo":"撤消"},"toolbar":{"toolbarCollapse":"折å 工具æ ","toolbarExpand":"展开工具æ ","toolbarGroups":{"document":"文档","clipboard":"剪贴æ¿/撤销","editing":"编辑","forms":"表å•","basicstyles":"åŸºæœ¬æ ¼å¼","paragraph":"段è½","links":"链接","insert":"æ’å…¥","styles":"æ ·å¼","colors":"颜色","tools":"工具"},"toolbars":"工具æ "},"table":{"border":"边框","caption":"æ ‡é¢˜","cell":{"menu":"å•å…ƒæ ¼","insertBefore":"在左侧æ’å…¥å•å…ƒæ ¼","insertAfter":"在å³ä¾§æ’å…¥å•å…ƒæ ¼","deleteCell":"åˆ é™¤å•å…ƒæ ¼","merge":"åˆå¹¶å•å…ƒæ ¼","mergeRight":"å‘å³åˆå¹¶å•å…ƒæ ¼","mergeDown":"å‘下åˆå¹¶å•å…ƒæ ¼","splitHorizontal":"水平拆分å•å…ƒæ ¼","splitVertical":"垂直拆分å•å…ƒæ ¼","title":"å•å…ƒæ ¼å±žæ€§","cellType":"å•å…ƒæ ¼ç±»åž‹","rowSpan":"纵跨行数","colSpan":"横跨列数","wordWrap":"自动æ¢è¡Œ","hAlign":"水平对é½","vAlign":"垂直对é½","alignBaseline":"基线","bgColor":"背景颜色","borderColor":"边框颜色","data":"æ•°æ®","header":"表头","yes":"是","no":"å¦","invalidWidth":"å•å…ƒæ ¼å®½åº¦å¿…须为数å—æ ¼å¼","invalidHeight":"å•å…ƒæ ¼é«˜åº¦å¿…须为数å—æ ¼å¼","invalidRowSpan":"è¡Œè·¨åº¦å¿…é¡»ä¸ºæ•´æ•°æ ¼å¼","invalidColSpan":"åˆ—è·¨åº¦å¿…é¡»ä¸ºæ•´æ•°æ ¼å¼","chooseColor":"选择"},"cellPad":"è¾¹è·","cellSpace":"é—´è·","column":{"menu":"列","insertBefore":"在左侧æ’入列","insertAfter":"在å³ä¾§æ’入列","deleteColumn":"åˆ é™¤åˆ—"},"columns":"列数","deleteTable":"åˆ é™¤è¡¨æ ¼","headers":"æ ‡é¢˜å•å…ƒæ ¼","headersBoth":"第一列和第一行","headersColumn":"第一列","headersNone":"æ— ","headersRow":"第一行","heightUnit":"高度å•ä½","invalidBorder":"边框粗细必须为数å—æ ¼å¼","invalidCellPadding":"å•å…ƒæ ¼å¡«å……必须为数å—æ ¼å¼","invalidCellSpacing":"å•å…ƒæ ¼é—´è·å¿…须为数å—æ ¼å¼","invalidCols":"指定的行数必须大于零","invalidHeight":"è¡¨æ ¼é«˜åº¦å¿…é¡»ä¸ºæ•°å—æ ¼å¼","invalidRows":"指定的列数必须大于零","invalidWidth":"è¡¨æ ¼å®½åº¦å¿…é¡»ä¸ºæ•°å—æ ¼å¼","menu":"è¡¨æ ¼å±žæ€§","row":{"menu":"è¡Œ","insertBefore":"在上方æ’入行","insertAfter":"在下方æ’入行","deleteRow":"åˆ é™¤è¡Œ"},"rows":"行数","summary":"摘è¦","title":"è¡¨æ ¼å±žæ€§","toolbar":"è¡¨æ ¼","widthPc":"百分比","widthPx":"åƒç´ ","widthUnit":"宽度å•ä½"},"stylescombo":{"label":"æ ·å¼","panelTitle":"æ ·å¼","panelTitle1":"å—çº§å…ƒç´ æ ·å¼","panelTitle2":"内è”å…ƒç´ æ ·å¼","panelTitle3":"å¯¹è±¡å…ƒç´ æ ·å¼"},"specialchar":{"options":"特殊符å·é€‰é¡¹","title":"选择特殊符å·","toolbar":"æ’入特殊符å·"},"sourcedialog":{"toolbar":"æºç ","title":"æºç "},"sourcearea":{"toolbar":"æºç "},"showblocks":{"toolbar":"显示区å—"},"removeformat":{"toolbar":"æ¸…é™¤æ ¼å¼"},"pastetext":{"button":"ç²˜è´´ä¸ºæ— æ ¼å¼æ–‡æœ¬","pasteNotification":"您的æµè§ˆå™¨ä¸æ”¯æŒé€šè¿‡å·¥å…·æ 或å³é”®èœå•è¿›è¡Œç²˜è´´ï¼Œè¯·æŒ‰ %1 进行粘贴。","title":"ç²˜è´´ä¸ºæ— æ ¼å¼æ–‡æœ¬"},"pastefromword":{"confirmCleanup":"您è¦ç²˜è´´çš„内容好åƒæ˜¯æ¥è‡ª MS Word,是å¦è¦æ¸…除 MS Word æ ¼å¼åŽå†ç²˜è´´ï¼Ÿ","error":"ç”±äºŽå†…éƒ¨é”™è¯¯æ— æ³•æ¸…ç†è¦ç²˜è´´çš„æ•°æ®","title":"从 MS Word 粘贴","toolbar":"从 MS Word 粘贴"},"notification":{"closed":"通知已关é—"},"maximize":{"maximize":"å…¨å±","minimize":"最å°åŒ–"},"magicline":{"title":"在这æ’入段è½"},"list":{"bulletedlist":"项目列表","numberedlist":"ç¼–å·åˆ—表"},"language":{"button":"设置è¯è¨€","remove":"移除è¯è¨€"},"indent":{"indent":"å¢žåŠ ç¼©è¿›é‡","outdent":"å‡å°‘缩进é‡"},"image2":{"alt":"替æ¢æ–‡æœ¬","btnUpload":"ä¸Šä¼ åˆ°æœåŠ¡å™¨","captioned":"å¸¦æ ‡é¢˜å›¾åƒ","captionPlaceholder":"æ ‡é¢˜","infoTab":"图åƒä¿¡æ¯","lockRatio":"é”定比例","menu":"图åƒå±žæ€§","pathName":"图åƒ","pathNameCaption":"æ ‡é¢˜","resetSize":"原始尺寸","resizer":"点击并拖拽以改å˜å°ºå¯¸","title":"图åƒå±žæ€§","uploadTab":"ä¸Šä¼ ","urlMissing":"缺少图åƒæºæ–‡ä»¶åœ°å€","altMissing":"缺少替æ¢æ–‡æœ¬"},"horizontalrule":{"toolbar":"æ’入水平线"},"format":{"label":"æ ¼å¼","panelTitle":"æ ¼å¼","tag_address":"地å€","tag_div":"段è½(DIV)","tag_h1":"æ ‡é¢˜ 1","tag_h2":"æ ‡é¢˜ 2","tag_h3":"æ ‡é¢˜ 3","tag_h4":"æ ‡é¢˜ 4","tag_h5":"æ ‡é¢˜ 5","tag_h6":"æ ‡é¢˜ 6","tag_p":"普通","tag_pre":"å·²ç¼–æŽ’æ ¼å¼"},"filetools":{"loadError":"读å–文件时å‘生错误","networkError":"ä¸Šä¼ æ–‡ä»¶æ—¶å‘生网络错误","httpError404":"ä¸Šä¼ æ–‡ä»¶æ—¶å‘生 HTTP 错误(404ï¼šæ— æ³•æ‰¾åˆ°æ–‡ä»¶ï¼‰","httpError403":"ä¸Šä¼ æ–‡ä»¶æ—¶å‘生 HTTP 错误(403:ç¦æ¢è®¿é—®ï¼‰","httpError":"ä¸Šä¼ æ–‡ä»¶æ—¶å‘生 HTTP 错误(错误代ç :%1)","noUrlError":"ä¸Šä¼ çš„ URL 未定义","responseError":"ä¸æ£ç¡®çš„æœåŠ¡å™¨å“应"},"elementspath":{"eleLabel":"å…ƒç´ è·¯å¾„","eleTitle":"%1 å…ƒç´ "},"contextmenu":{"options":"å¿«æ·èœå•é€‰é¡¹"},"clipboard":{"copy":"å¤åˆ¶","copyError":"您的æµè§ˆå™¨å®‰å…¨è®¾ç½®ä¸å…许编辑器自动执行å¤åˆ¶æ“作,请使用键盘快æ·é”®(Ctrl/Cmd+C)æ¥å®Œæˆã€‚","cut":"剪切","cutError":"您的æµè§ˆå™¨å®‰å…¨è®¾ç½®ä¸å…许编辑器自动执行剪切æ“作,请使用键盘快æ·é”®(Ctrl/Cmd+X)æ¥å®Œæˆã€‚","paste":"粘贴","pasteNotification":"您的æµè§ˆå™¨ä¸æ”¯æŒé€šè¿‡å·¥å…·æ 或å³é”®èœå•è¿›è¡Œç²˜è´´ï¼Œè¯·æŒ‰ %1 进行粘贴。","pasteArea":"粘贴区域","pasteMsg":"将您的内容粘贴到下方区域,然åŽæŒ‰ç¡®å®šã€‚"},"blockquote":{"toolbar":"å—引用"},"basicstyles":{"bold":"åŠ ç²—","italic":"倾斜","strike":"åˆ é™¤çº¿","subscript":"ä¸‹æ ‡","superscript":"ä¸Šæ ‡","underline":"下划线"},"about":{"copy":"版æƒæ‰€æœ‰ © $1。<br />ä¿ç•™æ‰€æœ‰æƒåˆ©ã€‚","dlgTitle":"关于 CKEditor 4","moreInfo":"相关授æƒè®¸å¯ä¿¡æ¯è¯·è®¿é—®æˆ‘们的网站:"},"editor":"所è§å³æ‰€å¾—编辑器","editorPanel":"所è§å³æ‰€å¾—编辑器é¢æ¿","common":{"editorHelp":"按 ALT+0 获得帮助","browseServer":"æµè§ˆæœåŠ¡å™¨","url":"URL","protocol":"åè®®","upload":"ä¸Šä¼ ","uploadSubmit":"ä¸Šä¼ åˆ°æœåŠ¡å™¨","image":"图åƒ","flash":"Flash","form":"表å•","checkbox":"å¤é€‰æ¡†","radio":"å•é€‰æŒ‰é’®","textField":"å•è¡Œæ–‡æœ¬","textarea":"多行文本","hiddenField":"éšè—域","button":"按钮","select":"列表/èœå•","imageButton":"图åƒæŒ‰é’®","notSet":"<没有设置>","id":"ID","name":"å称","langDir":"è¯è¨€æ–¹å‘","langDirLtr":"ä»Žå·¦åˆ°å³ (LTR)","langDirRtl":"从å³åˆ°å·¦ (RTL)","langCode":"è¯è¨€ä»£ç ","longDescr":"详细说明 URL","cssClass":"æ ·å¼ç±»å称","advisoryTitle":"æ ‡é¢˜","cssStyle":"è¡Œå†…æ ·å¼","ok":"确定","cancel":"å–消","close":"å…³é—","preview":"预览","resize":"拖拽以改å˜å¤§å°","generalTab":"常规","advancedTab":"高级","validateNumberFailed":"需è¦è¾“入数å—æ ¼å¼","confirmNewPage":"当å‰æ–‡æ¡£å†…容未ä¿å˜ï¼Œæ˜¯å¦ç¡®è®¤æ–°å»ºæ–‡æ¡£ï¼Ÿ","confirmCancel":"部分修改尚未ä¿å˜ï¼Œæ˜¯å¦ç¡®è®¤å…³é—对è¯æ¡†ï¼Ÿ","options":"选项","target":"ç›®æ ‡çª—å£","targetNew":"æ–°çª—å£ (_blank)","targetTop":"整页 (_top)","targetSelf":"æœ¬çª—å£ (_self)","targetParent":"çˆ¶çª—å£ (_parent)","langDirLTR":"ä»Žå·¦åˆ°å³ (LTR)","langDirRTL":"从å³åˆ°å·¦ (RTL)","styles":"æ ·å¼","cssClasses":"æ ·å¼ç±»","width":"宽度","height":"高度","align":"对é½æ–¹å¼","left":"左对é½","right":"å³å¯¹é½","center":"å±…ä¸","justify":"两端对é½","alignLeft":"左对é½","alignRight":"å³å¯¹é½","alignCenter":"å±…ä¸","alignTop":"顶端","alignMiddle":"å±…ä¸","alignBottom":"底部","alignNone":"æ— ","invalidValue":"æ— æ•ˆçš„å€¼ã€‚","invalidHeight":"高度必须为数å—æ ¼å¼","invalidWidth":"宽度必须为数å—æ ¼å¼","invalidLength":"为 \"%1\" å—段设置的值必须是一个æ£æ•°æˆ–者没有一个有效的度é‡å•ä½ (%2)。","invalidCssLength":"æ¤â€œ%1â€å—段的值必须为æ£æ•°ï¼Œå¯ä»¥åŒ…å«æˆ–ä¸åŒ…å«ä¸€ä¸ªæœ‰æ•ˆçš„ CSS 长度å•ä½(px, %, in, cm, mm, em, ex, pt 或 pc)","invalidHtmlLength":"æ¤â€œ%1â€å—段的值必须为æ£æ•°ï¼Œå¯ä»¥åŒ…å«æˆ–ä¸åŒ…å«ä¸€ä¸ªæœ‰æ•ˆçš„ HTML 长度å•ä½(px 或 %)","invalidInlineStyle":"内è”æ ·å¼å¿…é¡»ä¸ºæ ¼å¼æ˜¯ä»¥åˆ†å·åˆ†éš”的一个或多个“属性å : 属性值â€ã€‚","cssLengthTooltip":"输入一个表示åƒç´ 值的数å—ï¼Œæˆ–åŠ ä¸Šä¸€ä¸ªæœ‰æ•ˆçš„ CSS 长度å•ä½(px, %, in, cm, mm, em, ex, pt 或 pc)。","unavailable":"%1<span class=\"cke_accessibility\">,ä¸å¯ç”¨</span>","keyboard":{"8":"é€€æ ¼é”®","13":"回车键","16":"Shift","17":"Ctrl","18":"Alt","32":"ç©ºæ ¼é”®","35":"行尾键","36":"行首键","46":"åˆ é™¤é”®","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"å¿«æ·é”®","optionDefault":"默认"}}; \ No newline at end of file +CKEDITOR.lang['zh-cn']={"widget":{"move":"点击并拖拽以移动","label":"%1 å°éƒ¨ä»¶"},"undo":{"redo":"é‡åš","undo":"撤消"},"toolbar":{"toolbarCollapse":"折å 工具æ ","toolbarExpand":"展开工具æ ","toolbarGroups":{"document":"文档","clipboard":"剪贴æ¿/撤销","editing":"编辑","forms":"表å•","basicstyles":"åŸºæœ¬æ ¼å¼","paragraph":"段è½","links":"链接","insert":"æ’å…¥","styles":"æ ·å¼","colors":"颜色","tools":"工具"},"toolbars":"工具æ "},"table":{"border":"边框","caption":"æ ‡é¢˜","cell":{"menu":"å•å…ƒæ ¼","insertBefore":"在左侧æ’å…¥å•å…ƒæ ¼","insertAfter":"在å³ä¾§æ’å…¥å•å…ƒæ ¼","deleteCell":"åˆ é™¤å•å…ƒæ ¼","merge":"åˆå¹¶å•å…ƒæ ¼","mergeRight":"å‘å³åˆå¹¶å•å…ƒæ ¼","mergeDown":"å‘下åˆå¹¶å•å…ƒæ ¼","splitHorizontal":"水平拆分å•å…ƒæ ¼","splitVertical":"垂直拆分å•å…ƒæ ¼","title":"å•å…ƒæ ¼å±žæ€§","cellType":"å•å…ƒæ ¼ç±»åž‹","rowSpan":"纵跨行数","colSpan":"横跨列数","wordWrap":"自动æ¢è¡Œ","hAlign":"水平对é½","vAlign":"垂直对é½","alignBaseline":"基线","bgColor":"背景颜色","borderColor":"边框颜色","data":"æ•°æ®","header":"表头","yes":"是","no":"å¦","invalidWidth":"å•å…ƒæ ¼å®½åº¦å¿…须为数å—æ ¼å¼","invalidHeight":"å•å…ƒæ ¼é«˜åº¦å¿…须为数å—æ ¼å¼","invalidRowSpan":"è¡Œè·¨åº¦å¿…é¡»ä¸ºæ•´æ•°æ ¼å¼","invalidColSpan":"åˆ—è·¨åº¦å¿…é¡»ä¸ºæ•´æ•°æ ¼å¼","chooseColor":"选择"},"cellPad":"è¾¹è·","cellSpace":"é—´è·","column":{"menu":"列","insertBefore":"在左侧æ’入列","insertAfter":"在å³ä¾§æ’入列","deleteColumn":"åˆ é™¤åˆ—"},"columns":"列数","deleteTable":"åˆ é™¤è¡¨æ ¼","headers":"æ ‡é¢˜å•å…ƒæ ¼","headersBoth":"第一列和第一行","headersColumn":"第一列","headersNone":"æ— ","headersRow":"第一行","heightUnit":"高度å•ä½","invalidBorder":"边框粗细必须为数å—æ ¼å¼","invalidCellPadding":"å•å…ƒæ ¼å¡«å……必须为数å—æ ¼å¼","invalidCellSpacing":"å•å…ƒæ ¼é—´è·å¿…须为数å—æ ¼å¼","invalidCols":"指定的行数必须大于零","invalidHeight":"è¡¨æ ¼é«˜åº¦å¿…é¡»ä¸ºæ•°å—æ ¼å¼","invalidRows":"指定的列数必须大于零","invalidWidth":"è¡¨æ ¼å®½åº¦å¿…é¡»ä¸ºæ•°å—æ ¼å¼","menu":"è¡¨æ ¼å±žæ€§","row":{"menu":"è¡Œ","insertBefore":"在上方æ’入行","insertAfter":"在下方æ’入行","deleteRow":"åˆ é™¤è¡Œ"},"rows":"行数","summary":"摘è¦","title":"è¡¨æ ¼å±žæ€§","toolbar":"è¡¨æ ¼","widthPc":"百分比","widthPx":"åƒç´ ","widthUnit":"宽度å•ä½"},"stylescombo":{"label":"æ ·å¼","panelTitle":"æ ·å¼","panelTitle1":"å—çº§å…ƒç´ æ ·å¼","panelTitle2":"内è”å…ƒç´ æ ·å¼","panelTitle3":"å¯¹è±¡å…ƒç´ æ ·å¼"},"specialchar":{"options":"特殊符å·é€‰é¡¹","title":"选择特殊符å·","toolbar":"æ’入特殊符å·"},"sourcedialog":{"toolbar":"æºç ","title":"æºç "},"sourcearea":{"toolbar":"æºç "},"showblocks":{"toolbar":"显示区å—"},"removeformat":{"toolbar":"æ¸…é™¤æ ¼å¼"},"pastetext":{"button":"ç²˜è´´ä¸ºæ— æ ¼å¼æ–‡æœ¬","pasteNotification":"您的æµè§ˆå™¨ä¸æ”¯æŒé€šè¿‡å·¥å…·æ 或å³é”®èœå•è¿›è¡Œç²˜è´´ï¼Œè¯·æŒ‰ %1 进行粘贴。","title":"ç²˜è´´ä¸ºæ— æ ¼å¼æ–‡æœ¬"},"pastefromword":{"confirmCleanup":"您è¦ç²˜è´´çš„内容好åƒæ˜¯æ¥è‡ª MS Word,是å¦è¦æ¸…除 MS Word æ ¼å¼åŽå†ç²˜è´´ï¼Ÿ","error":"ç”±äºŽå†…éƒ¨é”™è¯¯æ— æ³•æ¸…ç†è¦ç²˜è´´çš„æ•°æ®","title":"从 MS Word 粘贴","toolbar":"从 MS Word 粘贴"},"notification":{"closed":"通知已关é—"},"maximize":{"maximize":"å…¨å±","minimize":"最å°åŒ–"},"magicline":{"title":"在这æ’入段è½"},"list":{"bulletedlist":"项目列表","numberedlist":"ç¼–å·åˆ—表"},"language":{"button":"设置è¯è¨€","remove":"移除è¯è¨€"},"indent":{"indent":"å¢žåŠ ç¼©è¿›é‡","outdent":"å‡å°‘缩进é‡"},"image2":{"alt":"替æ¢æ–‡æœ¬","btnUpload":"ä¸Šä¼ åˆ°æœåŠ¡å™¨","captioned":"å¸¦æ ‡é¢˜å›¾åƒ","captionPlaceholder":"æ ‡é¢˜","infoTab":"图åƒä¿¡æ¯","lockRatio":"é”定比例","menu":"图åƒå±žæ€§","pathName":"图åƒ","pathNameCaption":"æ ‡é¢˜","resetSize":"原始尺寸","resizer":"点击并拖拽以改å˜å°ºå¯¸","title":"图åƒå±žæ€§","uploadTab":"ä¸Šä¼ ","urlMissing":"缺少图åƒæºæ–‡ä»¶åœ°å€","altMissing":"缺少替æ¢æ–‡æœ¬"},"horizontalrule":{"toolbar":"æ’入水平线"},"format":{"label":"æ ¼å¼","panelTitle":"æ ¼å¼","tag_address":"地å€","tag_div":"段è½(DIV)","tag_h1":"æ ‡é¢˜ 1","tag_h2":"æ ‡é¢˜ 2","tag_h3":"æ ‡é¢˜ 3","tag_h4":"æ ‡é¢˜ 4","tag_h5":"æ ‡é¢˜ 5","tag_h6":"æ ‡é¢˜ 6","tag_p":"普通","tag_pre":"å·²ç¼–æŽ’æ ¼å¼"},"filetools":{"loadError":"读å–文件时å‘生错误","networkError":"ä¸Šä¼ æ–‡ä»¶æ—¶å‘生网络错误","httpError404":"ä¸Šä¼ æ–‡ä»¶æ—¶å‘生 HTTP 错误(404ï¼šæ— æ³•æ‰¾åˆ°æ–‡ä»¶ï¼‰","httpError403":"ä¸Šä¼ æ–‡ä»¶æ—¶å‘生 HTTP 错误(403:ç¦æ¢è®¿é—®ï¼‰","httpError":"ä¸Šä¼ æ–‡ä»¶æ—¶å‘生 HTTP 错误(错误代ç :%1)","noUrlError":"ä¸Šä¼ çš„ URL 未定义","responseError":"ä¸æ£ç¡®çš„æœåŠ¡å™¨å“应"},"elementspath":{"eleLabel":"å…ƒç´ è·¯å¾„","eleTitle":"%1 å…ƒç´ "},"contextmenu":{"options":"å¿«æ·èœå•é€‰é¡¹"},"clipboard":{"copy":"å¤åˆ¶","copyError":"您的æµè§ˆå™¨å®‰å…¨è®¾ç½®ä¸å…许编辑器自动执行å¤åˆ¶æ“作,请使用键盘快æ·é”®(Ctrl/Cmd+C)æ¥å®Œæˆã€‚","cut":"剪切","cutError":"您的æµè§ˆå™¨å®‰å…¨è®¾ç½®ä¸å…许编辑器自动执行剪切æ“作,请使用键盘快æ·é”®(Ctrl/Cmd+X)æ¥å®Œæˆã€‚","paste":"粘贴","pasteNotification":"您的æµè§ˆå™¨ä¸æ”¯æŒé€šè¿‡å·¥å…·æ 或å³é”®èœå•è¿›è¡Œç²˜è´´ï¼Œè¯·æŒ‰ %1 进行粘贴。","pasteArea":"粘贴区域","pasteMsg":"将您的内容粘贴到下方区域,然åŽæŒ‰ç¡®å®šã€‚","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"å—引用"},"basicstyles":{"bold":"åŠ ç²—","italic":"倾斜","strike":"åˆ é™¤çº¿","subscript":"ä¸‹æ ‡","superscript":"ä¸Šæ ‡","underline":"下划线"},"about":{"copy":"版æƒæ‰€æœ‰ © $1。<br />ä¿ç•™æ‰€æœ‰æƒåˆ©ã€‚","dlgTitle":"关于 CKEditor 4","moreInfo":"相关授æƒè®¸å¯ä¿¡æ¯è¯·è®¿é—®æˆ‘们的网站:"},"editor":"所è§å³æ‰€å¾—编辑器","editorPanel":"所è§å³æ‰€å¾—编辑器é¢æ¿","common":{"editorHelp":"按 ALT+0 获得帮助","browseServer":"æµè§ˆæœåŠ¡å™¨","url":"URL","protocol":"åè®®","upload":"ä¸Šä¼ ","uploadSubmit":"ä¸Šä¼ åˆ°æœåŠ¡å™¨","image":"图åƒ","form":"表å•","checkbox":"å¤é€‰æ¡†","radio":"å•é€‰æŒ‰é’®","textField":"å•è¡Œæ–‡æœ¬","textarea":"多行文本","hiddenField":"éšè—域","button":"按钮","select":"列表/èœå•","imageButton":"图åƒæŒ‰é’®","notSet":"<没有设置>","id":"ID","name":"å称","langDir":"è¯è¨€æ–¹å‘","langDirLtr":"ä»Žå·¦åˆ°å³ (LTR)","langDirRtl":"从å³åˆ°å·¦ (RTL)","langCode":"è¯è¨€ä»£ç ","longDescr":"详细说明 URL","cssClass":"æ ·å¼ç±»å称","advisoryTitle":"æ ‡é¢˜","cssStyle":"è¡Œå†…æ ·å¼","ok":"确定","cancel":"å–消","close":"å…³é—","preview":"预览","resize":"拖拽以改å˜å¤§å°","generalTab":"常规","advancedTab":"高级","validateNumberFailed":"需è¦è¾“入数å—æ ¼å¼","confirmNewPage":"当å‰æ–‡æ¡£å†…容未ä¿å˜ï¼Œæ˜¯å¦ç¡®è®¤æ–°å»ºæ–‡æ¡£ï¼Ÿ","confirmCancel":"部分修改尚未ä¿å˜ï¼Œæ˜¯å¦ç¡®è®¤å…³é—对è¯æ¡†ï¼Ÿ","options":"选项","target":"ç›®æ ‡çª—å£","targetNew":"æ–°çª—å£ (_blank)","targetTop":"整页 (_top)","targetSelf":"æœ¬çª—å£ (_self)","targetParent":"çˆ¶çª—å£ (_parent)","langDirLTR":"ä»Žå·¦åˆ°å³ (LTR)","langDirRTL":"从å³åˆ°å·¦ (RTL)","styles":"æ ·å¼","cssClasses":"æ ·å¼ç±»","width":"宽度","height":"高度","align":"对é½æ–¹å¼","left":"左对é½","right":"å³å¯¹é½","center":"å±…ä¸","justify":"两端对é½","alignLeft":"左对é½","alignRight":"å³å¯¹é½","alignCenter":"å±…ä¸","alignTop":"顶端","alignMiddle":"å±…ä¸","alignBottom":"底部","alignNone":"æ— ","invalidValue":"æ— æ•ˆçš„å€¼ã€‚","invalidHeight":"高度必须为数å—æ ¼å¼","invalidWidth":"宽度必须为数å—æ ¼å¼","invalidLength":"为 \"%1\" å—段设置的值必须是一个æ£æ•°æˆ–者没有一个有效的度é‡å•ä½ (%2)。","invalidCssLength":"æ¤â€œ%1â€å—段的值必须为æ£æ•°ï¼Œå¯ä»¥åŒ…å«æˆ–ä¸åŒ…å«ä¸€ä¸ªæœ‰æ•ˆçš„ CSS 长度å•ä½(px, %, in, cm, mm, em, ex, pt 或 pc)","invalidHtmlLength":"æ¤â€œ%1â€å—段的值必须为æ£æ•°ï¼Œå¯ä»¥åŒ…å«æˆ–ä¸åŒ…å«ä¸€ä¸ªæœ‰æ•ˆçš„ HTML 长度å•ä½(px 或 %)","invalidInlineStyle":"内è”æ ·å¼å¿…é¡»ä¸ºæ ¼å¼æ˜¯ä»¥åˆ†å·åˆ†éš”的一个或多个“属性å : 属性值â€ã€‚","cssLengthTooltip":"输入一个表示åƒç´ 值的数å—ï¼Œæˆ–åŠ ä¸Šä¸€ä¸ªæœ‰æ•ˆçš„ CSS 长度å•ä½(px, %, in, cm, mm, em, ex, pt 或 pc)。","unavailable":"%1<span class=\"cke_accessibility\">,ä¸å¯ç”¨</span>","keyboard":{"8":"é€€æ ¼é”®","13":"回车键","16":"Shift","17":"Ctrl","18":"Alt","32":"ç©ºæ ¼é”®","35":"行尾键","36":"行首键","46":"åˆ é™¤é”®","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command"},"keyboardShortcut":"å¿«æ·é”®","optionDefault":"默认"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/lang/zh.js b/core/assets/vendor/ckeditor/lang/zh.js index 1c2ca39dc629..898c6a208902 100644 --- a/core/assets/vendor/ckeditor/lang/zh.js +++ b/core/assets/vendor/ckeditor/lang/zh.js @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.lang['zh']={"widget":{"move":"拖曳以移動","label":"%1 å°å·¥å…·"},"undo":{"redo":"å–消復原","undo":"復原"},"toolbar":{"toolbarCollapse":"摺疊工具列","toolbarExpand":"展開工具列","toolbarGroups":{"document":"文件","clipboard":"剪貼簿/復原","editing":"編輯é¸é …","forms":"æ ¼å¼","basicstyles":"基本樣å¼","paragraph":"段è½","links":"連çµ","insert":"æ’å…¥","styles":"樣å¼","colors":"é¡è‰²","tools":"工具"},"toolbars":"編輯器工具列"},"table":{"border":"框線大å°","caption":"標題","cell":{"menu":"儲å˜æ ¼","insertBefore":"å‰æ–¹æ’入儲å˜æ ¼","insertAfter":"後方æ’入儲å˜æ ¼","deleteCell":"刪除儲å˜æ ¼","merge":"åˆä½µå„²å˜æ ¼","mergeRight":"å‘å³åˆä½µ","mergeDown":"å‘下åˆä½µ","splitHorizontal":"水平分割儲å˜æ ¼","splitVertical":"垂直分割儲å˜æ ¼","title":"儲å˜æ ¼å±¬æ€§","cellType":"儲å˜æ ¼é¡žåž‹","rowSpan":"行全長","colSpan":"列全長","wordWrap":"自動斷行","hAlign":"æ°´å¹³å°é½Š","vAlign":"åž‚ç›´å°é½Š","alignBaseline":"基準線","bgColor":"背景é¡è‰²","borderColor":"框線é¡è‰²","data":"資料","header":"é 首","yes":"是","no":"å¦","invalidWidth":"儲å˜æ ¼å¯¬åº¦å¿…é ˆç‚ºæ•¸å—。","invalidHeight":"儲å˜æ ¼é«˜åº¦å¿…é ˆç‚ºæ•¸å—。","invalidRowSpan":"è¡Œå…¨é•·å¿…é ˆæ˜¯æ•´æ•¸ã€‚","invalidColSpan":"åˆ—å…¨é•·å¿…é ˆæ˜¯æ•´æ•¸ã€‚","chooseColor":"é¸æ“‡"},"cellPad":"儲å˜æ ¼é‚Šè·","cellSpace":"儲å˜æ ¼é–“è·","column":{"menu":"列","insertBefore":"左方æ’入列","insertAfter":"å³æ–¹æ’入列","deleteColumn":"刪除列"},"columns":"列","deleteTable":"åˆªé™¤è¡¨æ ¼","headers":"é 首","headersBoth":"åŒæ™‚","headersColumn":"第一列","headersNone":"ç„¡","headersRow":"第一行","heightUnit":"height unit","invalidBorder":"框線大å°å¿…é ˆæ˜¯æ•´æ•¸ã€‚","invalidCellPadding":"儲å˜æ ¼é‚Šè·å¿…é ˆç‚ºæ£æ•¸ã€‚","invalidCellSpacing":"儲å˜æ ¼é–“è·å¿…é ˆç‚ºæ£æ•¸ã€‚","invalidCols":"åˆ—æ•¸é ˆç‚ºå¤§æ–¼ 0 çš„æ£æ•´æ•¸ã€‚","invalidHeight":"è¡¨æ ¼é«˜åº¦å¿…é ˆç‚ºæ•¸å—。","invalidRows":"è¡Œæ•¸é ˆç‚ºå¤§æ–¼ 0 çš„æ£æ•´æ•¸ã€‚","invalidWidth":"è¡¨æ ¼å¯¬åº¦å¿…é ˆç‚ºæ•¸å—。","menu":"è¡¨æ ¼å±¬æ€§","row":{"menu":"è¡Œ","insertBefore":"上方æ’入行","insertAfter":"下方æ’入行","deleteRow":"刪除行"},"rows":"è¡Œ","summary":"總çµ","title":"è¡¨æ ¼å±¬æ€§","toolbar":"è¡¨æ ¼","widthPc":"百分比","widthPx":"åƒç´ ","widthUnit":"寬度單ä½"},"stylescombo":{"label":"樣å¼","panelTitle":"æ ¼å¼åŒ–樣å¼","panelTitle1":"å€å¡Šæ¨£å¼","panelTitle2":"內嵌樣å¼","panelTitle3":"物件樣å¼"},"specialchar":{"options":"特殊å—å…ƒé¸é …","title":"é¸å–特殊å—å…ƒ","toolbar":"æ’入特殊å—å…ƒ"},"sourcedialog":{"toolbar":"原始碼","title":"原始碼"},"sourcearea":{"toolbar":"原始碼"},"showblocks":{"toolbar":"顯示å€å¡Š"},"removeformat":{"toolbar":"ç§»é™¤æ ¼å¼"},"pastetext":{"button":"è²¼æˆç´”æ–‡å—","pasteNotification":"請按下「%1ã€è²¼ä¸Šã€‚您的ç€è¦½å™¨ä¸æ”¯æ´å·¥å…·åˆ—按鈕或是內容功能表é¸é …。 ","title":"è²¼æˆç´”æ–‡å—"},"pastefromword":{"confirmCleanup":"您想貼上的文å—似乎是自 Word 複製而來,請å•æ‚¨æ˜¯å¦è¦å…ˆæ¸…除 Word çš„æ ¼å¼å¾Œå†è¡Œè²¼ä¸Šï¼Ÿ","error":"由於發生內部錯誤,無法清除清除 Word çš„æ ¼å¼ã€‚","title":"自 Word 貼上","toolbar":"自 Word 貼上"},"notification":{"closed":"通知已關閉。"},"maximize":{"maximize":"最大化","minimize":"最å°åŒ–"},"magicline":{"title":"在æ¤æ’入段è½"},"list":{"bulletedlist":"æ’å…¥/ç§»é™¤é …ç›®ç¬¦è™Ÿæ¸…å–®","numberedlist":"æ’å…¥/移除編號清單清單"},"language":{"button":"è¨å®šèªžè¨€","remove":"移除語言"},"indent":{"indent":"å¢žåŠ ç¸®æŽ’","outdent":"減少縮排"},"image2":{"alt":"替代文å—","btnUpload":"傳é€è‡³ä¼ºæœå™¨","captioned":"å·²åŠ æ¨™é¡Œä¹‹åœ–ç‰‡","captionPlaceholder":"標題","infoTab":"å½±åƒè³‡è¨Š","lockRatio":"固定比例","menu":"å½±åƒå±¬æ€§","pathName":"圖片","pathNameCaption":"標題","resetSize":"é‡è¨å¤§å°","resizer":"拖曳以改變大å°","title":"å½±åƒå±¬æ€§","uploadTab":"上傳","urlMissing":"éºå¤±åœ–片來æºä¹‹ URL ","altMissing":"替代文å—éºå¤±ã€‚"},"horizontalrule":{"toolbar":"æ’入水平線"},"format":{"label":"æ ¼å¼","panelTitle":"段è½æ ¼å¼","tag_address":"地å€","tag_div":"標準 (DIV)","tag_h1":"標題 1","tag_h2":"標題 2","tag_h3":"標題 3","tag_h4":"標題 4","tag_h5":"標題 5","tag_h6":"標題 6","tag_p":"標準","tag_pre":"æ ¼å¼è¨å®š"},"filetools":{"loadError":"在讀å–檔案時發生錯誤。","networkError":"在上傳檔案時發生網路錯誤。","httpError404":"在上傳檔案時發生 HTTP 錯誤(404:檔案找ä¸åˆ°ï¼‰ã€‚","httpError403":"在上傳檔案時發生 HTTP 錯誤(403:ç¦æ¢ï¼‰ã€‚","httpError":"在上傳檔案時發生 HTTP 錯誤(錯誤狀態:%1)。","noUrlError":"上傳的 URL 未被定義。","responseError":"ä¸æ£ç¢ºçš„伺æœå™¨å›žæ‡‰ã€‚"},"elementspath":{"eleLabel":"元件路徑","eleTitle":"%1 個元件"},"contextmenu":{"options":"內容功能表é¸é …"},"clipboard":{"copy":"複製","copyError":"ç€è¦½å™¨çš„安全性è¨å®šä¸å…許編輯器自動執行複製動作。請使用éµç›¤å¿«æ·éµ (Ctrl/Cmd+C) 複製。","cut":"剪下","cutError":"ç€è¦½å™¨çš„安全性è¨å®šä¸å…許編輯器自動執行剪下動作。請使用é盤快æ·éµ (Ctrl/Cmd+X) 剪下。","paste":"貼上","pasteNotification":"請按下「%1ã€è²¼ä¸Šã€‚您的ç€è¦½å™¨ä¸æ”¯æ´å·¥å…·åˆ—按鈕或是內容功能表é¸é …。","pasteArea":"貼上å€","pasteMsg":"請將您的內容貼於下方å€åŸŸä¸ä¸¦æŒ‰ä¸‹ã€ŒOKã€ã€‚"},"blockquote":{"toolbar":"引用段è½"},"basicstyles":{"bold":"ç²—é«”","italic":"斜體","strike":"刪除線","subscript":"下標","superscript":"上標","underline":"底線"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"關於 CKEditor 4","moreInfo":"關於授權資訊,請åƒé–±æˆ‘們的網站:"},"editor":"RTF 編輯器","editorPanel":"RTF 編輯器é¢æ¿","common":{"editorHelp":"按下 ALT 0 å–得說明。","browseServer":"ç€è¦½ä¼ºæœå™¨","url":"URL","protocol":"通訊å”定","upload":"上傳","uploadSubmit":"傳é€è‡³ä¼ºæœå™¨","image":"圖åƒ","flash":"Flash","form":"è¡¨æ ¼","checkbox":"æ ¸å–方塊","radio":"é¸é …按鈕","textField":"æ–‡å—欄ä½","textarea":"æ–‡å—å€åŸŸ","hiddenField":"éš±è—欄ä½","button":"按鈕","select":"é¸å–欄ä½","imageButton":"å½±åƒæŒ‰éˆ•","notSet":"<未è¨å®š>","id":"ID","name":"å稱","langDir":"語言方å‘","langDirLtr":"ç”±å·¦è‡³å³ (LTR)","langDirRtl":"ç”±å³è‡³å·¦ (RTL)","langCode":"語言代碼","longDescr":"完整æè¿° URL","cssClass":"樣å¼è¡¨é¡žåˆ¥","advisoryTitle":"標題","cssStyle":"樣å¼","ok":"確定","cancel":"å–消","close":"關閉","preview":"é 覽","resize":"調整大å°","generalTab":"一般","advancedTab":"進階","validateNumberFailed":"æ¤å€¼ä¸æ˜¯æ•¸å€¼ã€‚","confirmNewPage":"ç¾å˜çš„修改尚未儲å˜ï¼Œè¦é–‹æ–°æª”案?","confirmCancel":"部份é¸é …尚未儲å˜ï¼Œè¦é—œé–‰å°è©±æ¡†ï¼Ÿ","options":"é¸é …","target":"目標","targetNew":"開新視窗 (_blank)","targetTop":"最上層視窗 (_top)","targetSelf":"相åŒè¦–窗 (_self)","targetParent":"父視窗 (_parent)","langDirLTR":"ç”±å·¦è‡³å³ (LTR)","langDirRTL":"ç”±å³è‡³å·¦ (RTL)","styles":"樣å¼","cssClasses":"樣å¼è¡¨é¡žåˆ¥","width":"寬度","height":"高度","align":"å°é½Šæ–¹å¼","left":"é å·¦å°é½Š","right":"é å³å°é½Š","center":"ç½®ä¸å°é½Š","justify":"å·¦å³å°é½Š","alignLeft":"é å·¦å°é½Š","alignRight":"é å³å°é½Š","alignCenter":"ç½®ä¸å°é½Š","alignTop":"é ‚ç«¯","alignMiddle":"ä¸é–“å°é½Š","alignBottom":"底端","alignNone":"ç„¡","invalidValue":"無效值。","invalidHeight":"é«˜åº¦å¿…é ˆç‚ºæ•¸å—。","invalidWidth":"å¯¬åº¦å¿…é ˆç‚ºæ•¸å—。","invalidLength":"為「%1ã€æ¬„ä½æŒ‡å®šçš„å€¼å¿…é ˆç‚ºæ£å€¼ï¼Œå¯åŒ…å«æˆ–ä¸åŒ…å«æ¸¬é‡å–®ä½ï¼ˆ%2)。","invalidCssLength":"「%1ã€çš„值應為æ£æ•¸ï¼Œä¸¦å¯åŒ…å«æœ‰æ•ˆçš„ CSS å–®ä½ (px, %, in, cm, mm, em, ex, pt, 或 pc)。","invalidHtmlLength":"「%1ã€çš„值應為æ£æ•¸ï¼Œä¸¦å¯åŒ…å«æœ‰æ•ˆçš„ HTML å–®ä½ (px 或 %)。","invalidInlineStyle":"行內樣å¼çš„值應包å«ä¸€å€‹ä»¥ä¸Šçš„è®Šæ•¸å€¼çµ„ï¼Œå…¶æ ¼å¼å¦‚「å稱:值ã€ï¼Œä¸¦ä»¥åˆ†è™Ÿå€éš”之。","cssLengthTooltip":"請輸入數值,單ä½æ˜¯åƒç´ 或有效的 CSS å–®ä½ (px, %, in, cm, mm, em, ex, pt, 或 pc)。","unavailable":"%1<span class=\"cke_accessibility\">,無法使用</span>","keyboard":{"8":"é€€æ ¼éµ","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"空白éµ","35":"End","36":"Home","46":"刪除","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command éµ"},"keyboardShortcut":"éµç›¤å¿«æ·éµ","optionDefault":"é è¨"}}; \ No newline at end of file +CKEDITOR.lang['zh']={"widget":{"move":"拖曳以移動","label":"%1 å°å·¥å…·"},"undo":{"redo":"å–消復原","undo":"復原"},"toolbar":{"toolbarCollapse":"摺疊工具列","toolbarExpand":"展開工具列","toolbarGroups":{"document":"文件","clipboard":"剪貼簿/復原","editing":"編輯é¸é …","forms":"æ ¼å¼","basicstyles":"基本樣å¼","paragraph":"段è½","links":"連çµ","insert":"æ’å…¥","styles":"樣å¼","colors":"é¡è‰²","tools":"工具"},"toolbars":"編輯器工具列"},"table":{"border":"框線大å°","caption":"標題","cell":{"menu":"儲å˜æ ¼","insertBefore":"å‰æ–¹æ’入儲å˜æ ¼","insertAfter":"後方æ’入儲å˜æ ¼","deleteCell":"刪除儲å˜æ ¼","merge":"åˆä½µå„²å˜æ ¼","mergeRight":"å‘å³åˆä½µ","mergeDown":"å‘下åˆä½µ","splitHorizontal":"水平分割儲å˜æ ¼","splitVertical":"垂直分割儲å˜æ ¼","title":"儲å˜æ ¼å±¬æ€§","cellType":"儲å˜æ ¼é¡žåž‹","rowSpan":"行全長","colSpan":"列全長","wordWrap":"自動斷行","hAlign":"æ°´å¹³å°é½Š","vAlign":"åž‚ç›´å°é½Š","alignBaseline":"基準線","bgColor":"背景é¡è‰²","borderColor":"框線é¡è‰²","data":"資料","header":"é 首","yes":"是","no":"å¦","invalidWidth":"儲å˜æ ¼å¯¬åº¦å¿…é ˆç‚ºæ•¸å—。","invalidHeight":"儲å˜æ ¼é«˜åº¦å¿…é ˆç‚ºæ•¸å—。","invalidRowSpan":"è¡Œå…¨é•·å¿…é ˆæ˜¯æ•´æ•¸ã€‚","invalidColSpan":"åˆ—å…¨é•·å¿…é ˆæ˜¯æ•´æ•¸ã€‚","chooseColor":"é¸æ“‡"},"cellPad":"儲å˜æ ¼é‚Šè·","cellSpace":"儲å˜æ ¼é–“è·","column":{"menu":"列","insertBefore":"左方æ’入列","insertAfter":"å³æ–¹æ’入列","deleteColumn":"刪除列"},"columns":"列","deleteTable":"åˆªé™¤è¡¨æ ¼","headers":"é 首","headersBoth":"åŒæ™‚","headersColumn":"第一列","headersNone":"ç„¡","headersRow":"第一行","heightUnit":"height unit","invalidBorder":"框線大å°å¿…é ˆæ˜¯æ•´æ•¸ã€‚","invalidCellPadding":"儲å˜æ ¼é‚Šè·å¿…é ˆç‚ºæ£æ•¸ã€‚","invalidCellSpacing":"儲å˜æ ¼é–“è·å¿…é ˆç‚ºæ£æ•¸ã€‚","invalidCols":"åˆ—æ•¸é ˆç‚ºå¤§æ–¼ 0 çš„æ£æ•´æ•¸ã€‚","invalidHeight":"è¡¨æ ¼é«˜åº¦å¿…é ˆç‚ºæ•¸å—。","invalidRows":"è¡Œæ•¸é ˆç‚ºå¤§æ–¼ 0 çš„æ£æ•´æ•¸ã€‚","invalidWidth":"è¡¨æ ¼å¯¬åº¦å¿…é ˆç‚ºæ•¸å—。","menu":"è¡¨æ ¼å±¬æ€§","row":{"menu":"è¡Œ","insertBefore":"上方æ’入行","insertAfter":"下方æ’入行","deleteRow":"刪除行"},"rows":"è¡Œ","summary":"總çµ","title":"è¡¨æ ¼å±¬æ€§","toolbar":"è¡¨æ ¼","widthPc":"百分比","widthPx":"åƒç´ ","widthUnit":"寬度單ä½"},"stylescombo":{"label":"樣å¼","panelTitle":"æ ¼å¼åŒ–樣å¼","panelTitle1":"å€å¡Šæ¨£å¼","panelTitle2":"內嵌樣å¼","panelTitle3":"物件樣å¼"},"specialchar":{"options":"特殊å—å…ƒé¸é …","title":"é¸å–特殊å—å…ƒ","toolbar":"æ’入特殊å—å…ƒ"},"sourcedialog":{"toolbar":"原始碼","title":"原始碼"},"sourcearea":{"toolbar":"原始碼"},"showblocks":{"toolbar":"顯示å€å¡Š"},"removeformat":{"toolbar":"ç§»é™¤æ ¼å¼"},"pastetext":{"button":"è²¼æˆç´”æ–‡å—","pasteNotification":"請按下「%1ã€è²¼ä¸Šã€‚您的ç€è¦½å™¨ä¸æ”¯æ´å·¥å…·åˆ—按鈕或是內容功能表é¸é …。 ","title":"è²¼æˆç´”æ–‡å—"},"pastefromword":{"confirmCleanup":"您想貼上的文å—似乎是自 Word 複製而來,請å•æ‚¨æ˜¯å¦è¦å…ˆæ¸…除 Word çš„æ ¼å¼å¾Œå†è¡Œè²¼ä¸Šï¼Ÿ","error":"由於發生內部錯誤,無法清除清除 Word çš„æ ¼å¼ã€‚","title":"自 Word 貼上","toolbar":"自 Word 貼上"},"notification":{"closed":"通知已關閉。"},"maximize":{"maximize":"最大化","minimize":"最å°åŒ–"},"magicline":{"title":"在æ¤æ’入段è½"},"list":{"bulletedlist":"æ’å…¥/ç§»é™¤é …ç›®ç¬¦è™Ÿæ¸…å–®","numberedlist":"æ’å…¥/移除編號清單清單"},"language":{"button":"è¨å®šèªžè¨€","remove":"移除語言"},"indent":{"indent":"å¢žåŠ ç¸®æŽ’","outdent":"減少縮排"},"image2":{"alt":"替代文å—","btnUpload":"傳é€è‡³ä¼ºæœå™¨","captioned":"å·²åŠ æ¨™é¡Œä¹‹åœ–ç‰‡","captionPlaceholder":"標題","infoTab":"å½±åƒè³‡è¨Š","lockRatio":"固定比例","menu":"å½±åƒå±¬æ€§","pathName":"圖片","pathNameCaption":"標題","resetSize":"é‡è¨å¤§å°","resizer":"拖曳以改變大å°","title":"å½±åƒå±¬æ€§","uploadTab":"上傳","urlMissing":"éºå¤±åœ–片來æºä¹‹ URL ","altMissing":"替代文å—éºå¤±ã€‚"},"horizontalrule":{"toolbar":"æ’入水平線"},"format":{"label":"æ ¼å¼","panelTitle":"段è½æ ¼å¼","tag_address":"地å€","tag_div":"標準 (DIV)","tag_h1":"標題 1","tag_h2":"標題 2","tag_h3":"標題 3","tag_h4":"標題 4","tag_h5":"標題 5","tag_h6":"標題 6","tag_p":"標準","tag_pre":"æ ¼å¼è¨å®š"},"filetools":{"loadError":"在讀å–檔案時發生錯誤。","networkError":"在上傳檔案時發生網路錯誤。","httpError404":"在上傳檔案時發生 HTTP 錯誤(404:檔案找ä¸åˆ°ï¼‰ã€‚","httpError403":"在上傳檔案時發生 HTTP 錯誤(403:ç¦æ¢ï¼‰ã€‚","httpError":"在上傳檔案時發生 HTTP 錯誤(錯誤狀態:%1)。","noUrlError":"上傳的 URL 未被定義。","responseError":"ä¸æ£ç¢ºçš„伺æœå™¨å›žæ‡‰ã€‚"},"elementspath":{"eleLabel":"元件路徑","eleTitle":"%1 個元件"},"contextmenu":{"options":"內容功能表é¸é …"},"clipboard":{"copy":"複製","copyError":"ç€è¦½å™¨çš„安全性è¨å®šä¸å…許編輯器自動執行複製動作。請使用éµç›¤å¿«æ·éµ (Ctrl/Cmd+C) 複製。","cut":"剪下","cutError":"ç€è¦½å™¨çš„安全性è¨å®šä¸å…許編輯器自動執行剪下動作。請使用é盤快æ·éµ (Ctrl/Cmd+X) 剪下。","paste":"貼上","pasteNotification":"請按下「%1ã€è²¼ä¸Šã€‚您的ç€è¦½å™¨ä¸æ”¯æ´å·¥å…·åˆ—按鈕或是內容功能表é¸é …。","pasteArea":"貼上å€","pasteMsg":"請將您的內容貼於下方å€åŸŸä¸ä¸¦æŒ‰ä¸‹ã€ŒOKã€ã€‚","fileFormatNotSupportedNotification":"This file format is not supported. You can try with one of the supported formats: ${formats}."},"blockquote":{"toolbar":"引用段è½"},"basicstyles":{"bold":"ç²—é«”","italic":"斜體","strike":"刪除線","subscript":"下標","superscript":"上標","underline":"底線"},"about":{"copy":"Copyright © $1. All rights reserved.","dlgTitle":"關於 CKEditor 4","moreInfo":"關於授權資訊,請åƒé–±æˆ‘們的網站:"},"editor":"RTF 編輯器","editorPanel":"RTF 編輯器é¢æ¿","common":{"editorHelp":"按下 ALT 0 å–得說明。","browseServer":"ç€è¦½ä¼ºæœå™¨","url":"URL","protocol":"通訊å”定","upload":"上傳","uploadSubmit":"傳é€è‡³ä¼ºæœå™¨","image":"圖åƒ","form":"è¡¨æ ¼","checkbox":"æ ¸å–方塊","radio":"é¸é …按鈕","textField":"æ–‡å—欄ä½","textarea":"æ–‡å—å€åŸŸ","hiddenField":"éš±è—欄ä½","button":"按鈕","select":"é¸å–欄ä½","imageButton":"å½±åƒæŒ‰éˆ•","notSet":"<未è¨å®š>","id":"ID","name":"å稱","langDir":"語言方å‘","langDirLtr":"ç”±å·¦è‡³å³ (LTR)","langDirRtl":"ç”±å³è‡³å·¦ (RTL)","langCode":"語言代碼","longDescr":"完整æè¿° URL","cssClass":"樣å¼è¡¨é¡žåˆ¥","advisoryTitle":"標題","cssStyle":"樣å¼","ok":"確定","cancel":"å–消","close":"關閉","preview":"é 覽","resize":"調整大å°","generalTab":"一般","advancedTab":"進階","validateNumberFailed":"æ¤å€¼ä¸æ˜¯æ•¸å€¼ã€‚","confirmNewPage":"ç¾å˜çš„修改尚未儲å˜ï¼Œè¦é–‹æ–°æª”案?","confirmCancel":"部份é¸é …尚未儲å˜ï¼Œè¦é—œé–‰å°è©±æ¡†ï¼Ÿ","options":"é¸é …","target":"目標","targetNew":"開新視窗 (_blank)","targetTop":"最上層視窗 (_top)","targetSelf":"相åŒè¦–窗 (_self)","targetParent":"父視窗 (_parent)","langDirLTR":"ç”±å·¦è‡³å³ (LTR)","langDirRTL":"ç”±å³è‡³å·¦ (RTL)","styles":"樣å¼","cssClasses":"樣å¼è¡¨é¡žåˆ¥","width":"寬度","height":"高度","align":"å°é½Šæ–¹å¼","left":"é å·¦å°é½Š","right":"é å³å°é½Š","center":"ç½®ä¸å°é½Š","justify":"å·¦å³å°é½Š","alignLeft":"é å·¦å°é½Š","alignRight":"é å³å°é½Š","alignCenter":"ç½®ä¸å°é½Š","alignTop":"é ‚ç«¯","alignMiddle":"ä¸é–“å°é½Š","alignBottom":"底端","alignNone":"ç„¡","invalidValue":"無效值。","invalidHeight":"é«˜åº¦å¿…é ˆç‚ºæ•¸å—。","invalidWidth":"å¯¬åº¦å¿…é ˆç‚ºæ•¸å—。","invalidLength":"為「%1ã€æ¬„ä½æŒ‡å®šçš„å€¼å¿…é ˆç‚ºæ£å€¼ï¼Œå¯åŒ…å«æˆ–ä¸åŒ…å«æ¸¬é‡å–®ä½ï¼ˆ%2)。","invalidCssLength":"「%1ã€çš„值應為æ£æ•¸ï¼Œä¸¦å¯åŒ…å«æœ‰æ•ˆçš„ CSS å–®ä½ (px, %, in, cm, mm, em, ex, pt, 或 pc)。","invalidHtmlLength":"「%1ã€çš„值應為æ£æ•¸ï¼Œä¸¦å¯åŒ…å«æœ‰æ•ˆçš„ HTML å–®ä½ (px 或 %)。","invalidInlineStyle":"行內樣å¼çš„值應包å«ä¸€å€‹ä»¥ä¸Šçš„è®Šæ•¸å€¼çµ„ï¼Œå…¶æ ¼å¼å¦‚「å稱:值ã€ï¼Œä¸¦ä»¥åˆ†è™Ÿå€éš”之。","cssLengthTooltip":"請輸入數值,單ä½æ˜¯åƒç´ 或有效的 CSS å–®ä½ (px, %, in, cm, mm, em, ex, pt, 或 pc)。","unavailable":"%1<span class=\"cke_accessibility\">,無法使用</span>","keyboard":{"8":"é€€æ ¼éµ","13":"Enter","16":"Shift","17":"Ctrl","18":"Alt","32":"空白éµ","35":"End","36":"Home","46":"刪除","112":"F1","113":"F2","114":"F3","115":"F4","116":"F5","117":"F6","118":"F7","119":"F8","120":"F9","121":"F10","122":"F11","123":"F12","124":"F13","125":"F14","126":"F15","127":"F16","128":"F17","129":"F18","130":"F19","131":"F20","132":"F21","133":"F22","134":"F23","135":"F24","224":"Command éµ"},"keyboardShortcut":"éµç›¤å¿«æ·éµ","optionDefault":"é è¨"}}; \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js index 87d215891cf1..773cf1831245 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","ar",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"عام",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"الاوامر",items:[{name:"تراجع",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:"نص غامق",legend:"Press ${bold}"},{name:"نص مائل",legend:"Press ${italic}"},{name:"نص تØته خط",legend:"Press ${underline}"}, -{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"هروب",pageUp:"اعلى الصÙØØ©",pageDown:"اسÙÙ„ الصÙØØ©",leftArrow:"السهم الايسر",upArrow:"السهم العلوي",rightArrow:"السهم الأيمن",downArrow:"السهم السÙلي",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"مضروب",add:"إضاÙØ©",subtract:"طرØ",decimalPoint:"Decimal Point",divide:"تقسيم",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"الÙاصلة المنقوطة",equalSign:'علامة "يساوي"',comma:"Ùاصلة",dash:"شرطة",period:"نقطة",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"اÙØªØ Ø§Ù„Ù‚ÙˆØ³",backSlash:"Backslash",closeBracket:"اغلق القوس",singleQuote:"Single Quote"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","ar",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"عام",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"الاوامر",items:[{name:"تراجع",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:"نص غامق",legend:"Press ${bold}"},{name:"نص مائل",legend:"Press ${italic}"},{name:"نص تØته خط",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"هروب",pageUp:"اعلى الصÙØØ©",pageDown:"اسÙÙ„ الصÙØØ©", +leftArrow:"السهم الايسر",upArrow:"السهم العلوي",rightArrow:"السهم الأيمن",downArrow:"السهم السÙلي",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"مضروب",add:"إضاÙØ©",subtract:"طرØ",decimalPoint:"Decimal Point",divide:"تقسيم",f1:"F1",f2:"F2",f3:"F3", +f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"الÙاصلة المنقوطة",equalSign:'علامة "يساوي"',comma:"Ùاصلة",dash:"شرطة",period:"نقطة",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"اÙØªØ Ø§Ù„Ù‚ÙˆØ³",backSlash:"Backslash",closeBracket:"اغلق القوس",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js index a7820948414e..2c62d9b4214b 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js @@ -2,8 +2,8 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","bg",{title:"ИнÑтрукции за доÑтъпноÑÑ‚",contents:"Съдържание на помощта. За да затворите този диалогов прозорец, натиÑнете ESC.",legend:[{name:"Общо",items:[{name:"Лента Ñ Ð¸Ð½Ñтрументи за редактора",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Диалог на редактора", -legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"КонтекÑтно меню на редактора",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +CKEDITOR.plugins.setLang("a11yhelp","bg",{title:"ИнÑтрукции за доÑтъпноÑÑ‚",contents:"Съдържание на помощта. За да затворите този диалогов прозорец, натиÑнете ESC.",legend:[{name:"Общо",items:[{name:"Лента Ñ Ð¸Ð½Ñтрументи за редактора",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Диалог на редактора",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"КонтекÑтно меню на редактора",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, {name:"СпиÑъчно меню на редактора",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Лента Ñ Ð¿ÑŠÑ‚ на елемент на редактора",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, {name:"Команди",items:[{name:"Команда за отмÑна",legend:"ÐатиÑни ${undo}"},{name:"Команда за пренаправÑне",legend:"ÐатиÑни ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js index da0af02f02f9..477f7f5c71a6 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","en-gb",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","en-gb",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", +leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", +f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/en.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/en.js index d991f057b4c0..2f819a6811d2 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/en.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","en",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","en",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", +leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", +f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js index 7d8cbaef65aa..06663dcbccf2 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","fo",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Falda",add:"Pluss",subtract:"Frádráttar",decimalPoint:"Decimal Point",divide:"Býta",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Javnatekn",comma:"Komma",dash:"Dash",period:"Punktum",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","fo",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", +leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Falda",add:"Pluss",subtract:"Frádráttar",decimalPoint:"Decimal Point",divide:"Býta",f1:"F1",f2:"F2",f3:"F3", +f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Javnatekn",comma:"Komma",dash:"Dash",period:"Punktum",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js index 5dd832448f8e..a50327115e5c 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","gu",{title:"àªàª•à«àª•à«àª·à«‡àª¬àª¿àª²àª¿àªŸà«€ ની વિગતો",contents:"હેલà«àªª. આ બંધ કરવા ESC દબાવો.",legend:[{name:"જનરલ",items:[{name:"àªàª¡àª¿àªŸàª° ટૂલબાર",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"àªàª¡àª¿àªŸàª° ડાયલોગ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"કમાંડસ",items:[{name:"અનà«àª¡à«àª‚ કમાંડ",legend:"$ દબાવો {undo}"},{name:"ફરી કરો કમાંડ",legend:"$ દબાવો {redo}"},{name:"બોલà«àª¦àª¨à«‹ કમાંડ",legend:"$ દબાવો {bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","gu",{title:"àªàª•à«àª•à«àª·à«‡àª¬àª¿àª²àª¿àªŸà«€ ની વિગતો",contents:"હેલà«àªª. આ બંધ કરવા ESC દબાવો.",legend:[{name:"જનરલ",items:[{name:"àªàª¡àª¿àªŸàª° ટૂલબાર",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"àªàª¡àª¿àªŸàª° ડાયલોગ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"કમાંડસ",items:[{name:"અનà«àª¡à«àª‚ કમાંડ",legend:"$ દબાવો {undo}"},{name:"ફરી કરો કમાંડ",legend:"$ દબાવો {redo}"},{name:"બોલà«àª¦àª¨à«‹ કમાંડ",legend:"$ દબાવો {bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", +leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", +f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js index 4c75879281d2..91ba7273edb3 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","hi",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"सामानà¥à¤¯",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","hi",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"सामानà¥à¤¯",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", +leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", +f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/km.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/km.js index 4c6c0e7d3d73..c66191759abd 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/km.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","km",{title:"Accessibility Instructions",contents:"មាážáž·áž€áž¶â€‹áž‡áŸ†áž“ួយ។ ដើម្បី​បិទ​ផ្ទាំង​នáŸáŸ‡ សូម​ចុច ESC ។",legend:[{name:"ទូទៅ",items:[{name:"របារ​ឧបករណáŸâ€‹áž€áž˜áŸ’មវិធី​និពន្ធ",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"ផ្ទាំង​កម្មវិធីនិពន្ធ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"ម៉ីនុយបរិបទអ្នកកែសម្រួល",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"ប្រអប់បញ្ជីអ្នកកែសម្រួល",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"ពាក្យបញ្ជា",items:[{name:"ការ​បញ្ជា​មិនធ្វើវិញ",legend:"ចុច ${undo}"},{name:"ការបញ្ជា​ធ្វើវិញ",legend:"ចុច ${redo}"},{name:"ការបញ្ជា​អក្សរ​ដិáž",legend:"ចុច ${bold}"},{name:"ការបញ្ជា​អក្សរ​ទ្រáŸáž",legend:"ចុច ${italic}"},{name:"ពាក្យបញ្ជា​បន្ទាážáŸ‹â€‹áž–ីក្រោម", -legend:"ចុច ${underline}"},{name:"ពាក្យបញ្ជា​ážáŸ†ážŽ",legend:"ចុច ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:"ជំនួយ​ពី​ភាព​ងាយស្រួល",legend:"ជួយ ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"ផ្អាក",capslock:"Caps Lock",escape:"ចាកចáŸáž‰",pageUp:"ទំពáŸážšâ€‹áž›áž¾",pageDown:"ទំពáŸážšâ€‹áž€áŸ’រោម",leftArrow:"ព្រួញ​ឆ្វáŸáž„",upArrow:"ព្រួញ​លើ",rightArrow:"ព្រួញ​ស្ដាំ",downArrow:"ព្រួញ​ក្រោម",insert:"បញ្ចូល",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"ជ្រើស​គ្រាប់​ចុច",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"គុណ",add:"បន្ážáŸ‚ម",subtract:"ដក",decimalPoint:"ចំណុចទសភាគ",divide:"ចែក",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"បិទ​រំកិល",semiColon:"ចុច​ក្បៀស",equalSign:"សញ្ញា​អឺរ៉ូ",comma:"ក្បៀស",dash:"Dash",period:"ចុច",forwardSlash:"Forward Slash",graveAccent:"Grave Accent", -openBracket:"ážáž„្កៀប​បើក",backSlash:"Backslash",closeBracket:"ážáž„្កៀប​បិទ",singleQuote:"បន្ážáž€áŸ‹â€‹áž˜áž½áž™"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","km",{title:"Accessibility Instructions",contents:"មាážáž·áž€áž¶â€‹áž‡áŸ†áž“ួយ។ ដើម្បី​បិទ​ផ្ទាំង​នáŸáŸ‡ សូម​ចុច ESC ។",legend:[{name:"ទូទៅ",items:[{name:"របារ​ឧបករណáŸâ€‹áž€áž˜áŸ’មវិធី​និពន្ធ",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"ផ្ទាំង​កម្មវិធីនិពន្ធ",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"ម៉ីនុយបរិបទអ្នកកែសម្រួល",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"ប្រអប់បញ្ជីអ្នកកែសម្រួល",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"ពាក្យបញ្ជា",items:[{name:"ការ​បញ្ជា​មិនធ្វើវិញ",legend:"ចុច ${undo}"},{name:"ការបញ្ជា​ធ្វើវិញ",legend:"ចុច ${redo}"},{name:"ការបញ្ជា​អក្សរ​ដិáž",legend:"ចុច ${bold}"},{name:"ការបញ្ជា​អក្សរ​ទ្រáŸáž",legend:"ចុច ${italic}"},{name:"ពាក្យបញ្ជា​បន្ទាážáŸ‹â€‹áž–ីក្រោម",legend:"ចុច ${underline}"},{name:"ពាក្យបញ្ជា​ážáŸ†ážŽ",legend:"ចុច ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"ជំនួយ​ពី​ភាព​ងាយស្រួល",legend:"ជួយ ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"ផ្អាក",capslock:"Caps Lock",escape:"ចាកចáŸáž‰",pageUp:"ទំពáŸážšâ€‹áž›áž¾",pageDown:"ទំពáŸážšâ€‹áž€áŸ’រោម", +leftArrow:"ព្រួញ​ឆ្វáŸáž„",upArrow:"ព្រួញ​លើ",rightArrow:"ព្រួញ​ស្ដាំ",downArrow:"ព្រួញ​ក្រោម",insert:"បញ្ចូល",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"ជ្រើស​គ្រាប់​ចុច",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"គុណ",add:"បន្ážáŸ‚ម",subtract:"ដក",decimalPoint:"ចំណុចទសភាគ",divide:"ចែក",f1:"F1",f2:"F2",f3:"F3",f4:"F4", +f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"បិទ​រំកិល",semiColon:"ចុច​ក្បៀស",equalSign:"សញ្ញា​អឺរ៉ូ",comma:"ក្បៀស",dash:"Dash",period:"ចុច",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"ážáž„្កៀប​បើក",backSlash:"Backslash",closeBracket:"ážáž„្កៀប​បិទ",singleQuote:"បន្ážáž€áŸ‹â€‹áž˜áž½áž™"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js index 795c3d89f27e..10ae387a1493 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","lt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Bendros savybÄ—s",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","lt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Bendros savybÄ—s",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", +leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", +f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js index 77c320c1516b..93a4ce0bb48c 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js @@ -2,8 +2,8 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","mk",{title:"ИнÑтрукции за приÑтапноÑÑ‚",contents:"Содржина на делот за помош. За да го затворите овој дијалог притиÑнете ESC.",legend:[{name:"Општо",items:[{name:"Мени за уредувачот",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Дијалот за едиторот", -legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"КонтекÑÑ‚-мени на уредувачот",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +CKEDITOR.plugins.setLang("a11yhelp","mk",{title:"ИнÑтрукции за приÑтапноÑÑ‚",contents:"Содржина на делот за помош. За да го затворите овој дијалог притиÑнете ESC.",legend:[{name:"Општо",items:[{name:"Мени за уредувачот",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Дијалот за едиторот",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"КонтекÑÑ‚-мени на уредувачот",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, {name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, {name:"Ðаредби",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Пауза",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Up", diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js index 1f9dc1b9523a..cc74e95902a0 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","mn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Ерөнхий",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", -legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","mn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Ерөнхий",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", +leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", +f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/th.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/th.js index 78c0fd647211..37dcd180be61 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/th.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","th",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"ทั่วไป",items:[{name:"à¹à¸–บเครื่à¸à¸‡à¸¡à¸·à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹€à¸„รื่à¸à¸‡à¸¡à¸·à¸à¸Šà¹ˆà¸§à¸¢à¸žà¸´à¸¡à¸žà¹Œ",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"คำสั่ง",items:[{name:"เลิà¸à¸—ำคำสั่ง",legend:"วาง ${undo}"},{name:"คำสั่งสำหรับทำซ้ำ",legend:"วาง ${redo}"},{name:"คำสั่งสำหรับตัวหนา",legend:"วาง ${bold}"},{name:"คำสั่งสำหรับตัวเà¸à¸µà¸¢à¸‡",legend:"วาง ${italic}"},{name:"คำสั่งสำหรับขีดเส้นใต้", -legend:"วาง ${underline}"},{name:"คำสั่งสำหรับลิงà¸à¹Œ",legend:"วาง ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", -numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", -graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","th",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"ทั่วไป",items:[{name:"à¹à¸–บเครื่à¸à¸‡à¸¡à¸·à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹€à¸„รื่à¸à¸‡à¸¡à¸·à¸à¸Šà¹ˆà¸§à¸¢à¸žà¸´à¸¡à¸žà¹Œ",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"คำสั่ง",items:[{name:"เลิà¸à¸—ำคำสั่ง",legend:"วาง ${undo}"},{name:"คำสั่งสำหรับทำซ้ำ",legend:"วาง ${redo}"},{name:"คำสั่งสำหรับตัวหนา",legend:"วาง ${bold}"},{name:"คำสั่งสำหรับตัวเà¸à¸µà¸¢à¸‡",legend:"วาง ${italic}"},{name:"คำสั่งสำหรับขีดเส้นใต้",legend:"วาง ${underline}"},{name:"คำสั่งสำหรับลิงà¸à¹Œ",legend:"วาง ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", +leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", +f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js index a6b51b13f42f..42f10d0eaa71 100644 --- a/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js +++ b/core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js @@ -2,10 +2,10 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("a11yhelp","tt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Гомуми",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."}, -{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."},{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."}, -{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]},{name:"Командалар",items:[{name:"Кайтару",legend:"${undo} баÑыгыз"},{name:"Кабатлау",legend:"${redo} баÑыгыз"},{name:"Калын",legend:"${bold} баÑыгыз"},{name:"КурÑив",legend:"${italic} баÑыгыз"},{name:"ÐÑтына Ñызылган",legend:"${underline} баÑыгыз"}, -{name:"Сылталама",legend:"${link} баÑыгыз"},{name:" Toolbar Collapse command",legend:"${toolbarCollapse} баÑыгыз"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, -{name:" Accessibility Help",legend:"${a11yHelp} баÑыгыз"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Тыныш",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"Сул Ñкка ук",upArrow:"Ó¨Ñкә таба ук",rightArrow:"Уң Ñкка ук",downArrow:"ÐÑка таба ук",insert:"Ó¨ÑÑ‚Ó™Ò¯",leftWindowKey:"Сул Windows төймəÑе",rightWindowKey:"Уң Windows төймəÑе",selectKey:"Select төймəÑе",numpad0:"Numpad 0", -numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Тапкырлау",add:"Кушу",subtract:"Ðлу",decimalPoint:"Унарлы нокта",divide:"Бүлү",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ðокталы өтер",equalSign:"Тигезлек билгеÑе",comma:"Өтер",dash:"Сызык",period:"Дәрәҗә", -forwardSlash:"Кыек Ñызык",graveAccent:"ГравиÑ",openBracket:"Ò–Ó™Ñ Ð°Ñ‡Ñƒ",backSlash:"Кире кыек Ñызык",closeBracket:"Ò–Ó™Ñ Ñбу",singleQuote:"Бер иңле куштырнаклар"}); \ No newline at end of file +CKEDITOR.plugins.setLang("a11yhelp","tt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Гомуми",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.The focus will be moved back to the editing area upon activating the toolbar button."}, +{name:"Editor Dialog",legend:"Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively."},{name:"Editor Context Menu",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC."}, +{name:"Editor List Box",legend:"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box."},{name:"Editor Element Path Bar",legend:"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor."}]}, +{name:"Командалар",items:[{name:"Кайтару",legend:"${undo} баÑыгыз"},{name:"Кабатлау",legend:"${redo} баÑыгыз"},{name:"Калын",legend:"${bold} баÑыгыз"},{name:"КурÑив",legend:"${italic} баÑыгыз"},{name:"ÐÑтына Ñызылган",legend:"${underline} баÑыгыз"},{name:"Сылталама",legend:"${link} баÑыгыз"},{name:" Toolbar Collapse command",legend:"${toolbarCollapse} баÑыгыз"},{name:" Access previous focus space command",legend:"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, +{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"${a11yHelp} баÑыгыз"},{name:" Paste as plain text",legend:"Press ${pastetext}",legendEdge:"Press ${pastetext}, followed by ${paste}"}]}],tab:"Tab",pause:"Тыныш",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", +leftArrow:"Сул Ñкка ук",upArrow:"Ó¨Ñкә таба ук",rightArrow:"Уң Ñкка ук",downArrow:"ÐÑка таба ук",insert:"Ó¨ÑÑ‚Ó™Ò¯",leftWindowKey:"Сул Windows төймəÑе",rightWindowKey:"Уң Windows төймəÑе",selectKey:"Select төймəÑе",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Тапкырлау",add:"Кушу",subtract:"Ðлу",decimalPoint:"Унарлы нокта",divide:"Бүлү",f1:"F1",f2:"F2", +f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ðокталы өтер",equalSign:"Тигезлек билгеÑе",comma:"Өтер",dash:"Сызык",period:"Дәрәҗә",forwardSlash:"Кыек Ñызык",graveAccent:"ГравиÑ",openBracket:"Ò–Ó™Ñ Ð°Ñ‡Ñƒ",backSlash:"Кире кыек Ñызык",closeBracket:"Ò–Ó™Ñ Ñбу",singleQuote:"Бер иңле куштырнаклар"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/plugins/specialchar/dialogs/lang/id.js b/core/assets/vendor/ckeditor/plugins/specialchar/dialogs/lang/id.js index f2c02cacd3f4..a52221961c83 100644 --- a/core/assets/vendor/ckeditor/plugins/specialchar/dialogs/lang/id.js +++ b/core/assets/vendor/ckeditor/plugins/specialchar/dialogs/lang/id.js @@ -2,12 +2,12 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.plugins.setLang("specialchar","id",{euro:"Tanda Euro",lsquo:"Left single quotation mark",rsquo:"Right single quotation mark",ldquo:"Left double quotation mark",rdquo:"Right double quotation mark",ndash:"En dash",mdash:"Em dash",iexcl:"Inverted exclamation mark",cent:"Cent sign",pound:"Pound sign",curren:"Currency sign",yen:"Tanda Yen",brvbar:"Broken bar",sect:"Section sign",uml:"Diaeresis",copy:"Tanda Hak Cipta",ordf:"Feminine ordinal indicator",laquo:"Left-pointing double angle quotation mark", -not:"Not sign",reg:"Tanda Telah Terdaftar",macr:"Macron",deg:"Degree sign",sup2:"Superscript two",sup3:"Superscript three",acute:"Acute accent",micro:"Micro sign",para:"Pilcrow sign",middot:"Middle dot",cedil:"Cedilla",sup1:"Superscript one",ordm:"Masculine ordinal indicator",raquo:"Right-pointing double angle quotation mark",frac14:"Vulgar fraction one quarter",frac12:"Vulgar fraction one half",frac34:"Vulgar fraction three quarters",iquest:"Inverted question mark",Agrave:"Latin capital letter A with grave accent", -Aacute:"Latin capital letter A with acute accent",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above",AElig:"Latin capital letter Æ",Ccedil:"Latin capital letter C with cedilla",Egrave:"Latin capital letter E with grave accent",Eacute:"Latin capital letter E with acute accent",Ecirc:"Latin capital letter E with circumflex",Euml:"Latin capital letter E with diaeresis",Igrave:"Latin capital letter I with grave accent", -Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis",times:"Multiplication sign",Oslash:"Latin capital letter O with stroke", -Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex",atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis", -aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex",iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth", -ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Division sign",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex",uuml:"Latin small letter u with diaeresis", -yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark",hellip:"Horizontal ellipsis", -trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file +CKEDITOR.plugins.setLang("specialchar","id",{euro:"Tanda Euro",lsquo:"Tanda kutip tunggal kiri",rsquo:"Tanda kutip tunggal kanan",ldquo:"Tanda kutip ganda kiri",rdquo:"Tanda kutip ganda kanan",ndash:"Tanda hubung",mdash:"Sisipan",iexcl:"Tanda seru terbalik",cent:"Tanda cent",pound:"Tanda pound",curren:"Tanda mata uang",yen:"Tanda Yen",brvbar:"Broken bar",sect:"Penanda bagian",uml:"Diaeresis",copy:"Tanda Hak Cipta",ordf:"Indikator ordinal feminin",laquo:"Tanda kutip sudut ganda mengarah ke kiri",not:"Bukan tanda", +reg:"Tanda Telah Terdaftar",macr:"Garis makron",deg:"Tanda derajat",sup2:"Superskrip dua",sup3:"Superskrip tiga",acute:"Aksen akut",micro:"Tanda mikro",para:"Tanda Pilcrow",middot:"Titik tengah",cedil:"Cedilla",sup1:"Superskrip satu",ordm:"Indikator ordinal maskulin",raquo:"Tanda kutip sudut ganda menunjuk ke kanan",frac14:"Bilangan Pecahan seperempat",frac12:"Bilangan Pecahan setengah",frac34:"Bilangan Pecahan tigaperempat",iquest:"Tanda baca terbalik",Agrave:"Huruf kapital Latin A dengan aksen grave", +Aacute:"Huruf kapital Latin A dengan aksen acute",Acirc:"Huruf kapital Latin A dengan circumflex",Atilde:"Huruf kapital Latin A dengan tilde",Auml:"Huruf kapital Latin A dengan diaeresis",Aring:"Huruf kapital Latin A dengan cincin di atas",AElig:"huruf kapital latin Æ",Ccedil:"Huruf kapital latin C dengan cedilla",Egrave:"Huruf kapital Latin E dengan aksen grave",Eacute:"Huruf kapital Latin E dengan aksen acute",Ecirc:"Huruf kapital Latin E dengan circumflex",Euml:"Latin capital letter E with diaeresis", +Igrave:"Latin capital letter I with grave accent",Iacute:"Latin capital letter I with acute accent",Icirc:"Latin capital letter I with circumflex",Iuml:"Latin capital letter I with diaeresis",ETH:"Latin capital letter Eth",Ntilde:"Latin capital letter N with tilde",Ograve:"Latin capital letter O with grave accent",Oacute:"Latin capital letter O with acute accent",Ocirc:"Latin capital letter O with circumflex",Otilde:"Latin capital letter O with tilde",Ouml:"Latin capital letter O with diaeresis", +times:"Tanda perkalian",Oslash:"Latin capital letter O with stroke",Ugrave:"Latin capital letter U with grave accent",Uacute:"Latin capital letter U with acute accent",Ucirc:"Latin capital letter U with circumflex",Uuml:"Latin capital letter U with diaeresis",Yacute:"Latin capital letter Y with acute accent",THORN:"Latin capital letter Thorn",szlig:"Latin small letter sharp s",agrave:"Latin small letter a with grave accent",aacute:"Latin small letter a with acute accent",acirc:"Latin small letter a with circumflex", +atilde:"Latin small letter a with tilde",auml:"Latin small letter a with diaeresis",aring:"Latin small letter a with ring above",aelig:"Latin small letter æ",ccedil:"Latin small letter c with cedilla",egrave:"Latin small letter e with grave accent",eacute:"Latin small letter e with acute accent",ecirc:"Latin small letter e with circumflex",euml:"Latin small letter e with diaeresis",igrave:"Latin small letter i with grave accent",iacute:"Latin small letter i with acute accent",icirc:"Latin small letter i with circumflex", +iuml:"Latin small letter i with diaeresis",eth:"Latin small letter eth",ntilde:"Latin small letter n with tilde",ograve:"Latin small letter o with grave accent",oacute:"Latin small letter o with acute accent",ocirc:"Latin small letter o with circumflex",otilde:"Latin small letter o with tilde",ouml:"Latin small letter o with diaeresis",divide:"Tanda bagi",oslash:"Latin small letter o with stroke",ugrave:"Latin small letter u with grave accent",uacute:"Latin small letter u with acute accent",ucirc:"Latin small letter u with circumflex", +uuml:"Latin small letter u with diaeresis",yacute:"Latin small letter y with acute accent",thorn:"Latin small letter thorn",yuml:"Latin small letter y with diaeresis",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",372:"Latin capital letter W with circumflex",374:"Latin capital letter Y with circumflex",373:"Latin small letter w with circumflex",375:"Latin small letter y with circumflex",sbquo:"Single low-9 quotation mark",8219:"Single high-reversed-9 quotation mark",bdquo:"Double low-9 quotation mark", +hellip:"Horizontal ellipsis",trade:"Trade mark sign",9658:"Black right-pointing pointer",bull:"Bullet",rarr:"Rightwards arrow",rArr:"Rightwards double arrow",hArr:"Left right double arrow",diams:"Black diamond suit",asymp:"Almost equal to"}); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/skins/moono-lisa/dialog.css b/core/assets/vendor/ckeditor/skins/moono-lisa/dialog.css index a84955c01768..c1fe4f0b848e 100644 --- a/core/assets/vendor/ckeditor/skins/moono-lisa/dialog.css +++ b/core/assets/vendor/ckeditor/skins/moono-lisa/dialog.css @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:3px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:1px solid #bcbcbc;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last,.cke_dialog_flash_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px} \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_ie.css b/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_ie.css index e170145c4c5c..6dd4af00cd7c 100644 --- a/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_ie.css +++ b/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_ie.css @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:3px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:1px solid #bcbcbc;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last,.cke_dialog_flash_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_ie8.css b/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_ie8.css index 9294abae206f..c41203111161 100644 --- a/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_ie8.css +++ b/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_ie8.css @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:3px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:1px solid #bcbcbc;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last,.cke_dialog_flash_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button{min-height:18px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{min-height:18px}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus{padding-top:4px;padding-bottom:2px}select.cke_dialog_ui_input_select{width:100%!important}select.cke_dialog_ui_input_select:focus{margin-left:1px;width:100%!important;padding-top:2px;padding-bottom:2px} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button{min-height:18px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{min-height:18px}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus{padding-top:4px;padding-bottom:2px}select.cke_dialog_ui_input_select{width:100%!important}select.cke_dialog_ui_input_select:focus{margin-left:1px;width:100%!important;padding-top:2px;padding-bottom:2px} \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_iequirks.css b/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_iequirks.css index 33314412be81..9afcbef6dbf4 100644 --- a/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_iequirks.css +++ b/core/assets/vendor/ckeditor/skins/moono-lisa/dialog_iequirks.css @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:3px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:1px solid #bcbcbc;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last,.cke_dialog_flash_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/skins/moono-lisa/editor.css b/core/assets/vendor/ckeditor/skins/moono-lisa/editor.css index 5272fa8ad206..cd1a0aa9a202 100644 --- a/core/assets/vendor/ckeditor/skins/moono-lisa/editor.css +++ b/core/assets/vendor/ckeditor/skins/moono-lisa/editor.css @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=L7CE) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=L7CE) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=L7CE) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=L7CE) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=L7CE) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=L7CE) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=L7CE) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=L7CE) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=L7CE) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=L7CE) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=L7CE) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=L7CE) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=L7CE) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=L7CE) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=L7CE) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=L7CE) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -2256px!important} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=LAHG) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=LAHG) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=LAHG) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=LAHG) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=LAHG) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=LAHG) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=LAHG) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=LAHG) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=LAHG) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=LAHG) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=LAHG) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=LAHG) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=LAHG) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=LAHG) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=LAHG) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=LAHG) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -2256px!important} \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/skins/moono-lisa/editor_gecko.css b/core/assets/vendor/ckeditor/skins/moono-lisa/editor_gecko.css index 3db9bbdf803f..8cdff5cf80aa 100644 --- a/core/assets/vendor/ckeditor/skins/moono-lisa/editor_gecko.css +++ b/core/assets/vendor/ckeditor/skins/moono-lisa/editor_gecko.css @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=L7CE) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=L7CE) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=L7CE) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=L7CE) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=L7CE) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=L7CE) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=L7CE) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=L7CE) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=L7CE) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=L7CE) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=L7CE) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=L7CE) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=L7CE) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=L7CE) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=L7CE) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=L7CE) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -2256px!important}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=LAHG) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=LAHG) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=LAHG) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=LAHG) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=LAHG) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=LAHG) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=LAHG) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=LAHG) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=LAHG) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=LAHG) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=LAHG) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=LAHG) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=LAHG) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=LAHG) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=LAHG) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=LAHG) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -2256px!important}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px} \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/skins/moono-lisa/editor_ie.css b/core/assets/vendor/ckeditor/skins/moono-lisa/editor_ie.css index a09753327f7f..20033c2b9a9b 100644 --- a/core/assets/vendor/ckeditor/skins/moono-lisa/editor_ie.css +++ b/core/assets/vendor/ckeditor/skins/moono-lisa/editor_ie.css @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=L7CE) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=L7CE) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=L7CE) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=L7CE) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=L7CE) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=L7CE) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=L7CE) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=L7CE) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=L7CE) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=L7CE) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=L7CE) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=L7CE) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=L7CE) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=L7CE) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=L7CE) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=L7CE) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -2256px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=LAHG) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=LAHG) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=LAHG) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=LAHG) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=LAHG) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=LAHG) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=LAHG) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=LAHG) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=LAHG) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=LAHG) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=LAHG) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=LAHG) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=LAHG) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=LAHG) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=LAHG) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=LAHG) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -2256px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/skins/moono-lisa/editor_ie8.css b/core/assets/vendor/ckeditor/skins/moono-lisa/editor_ie8.css index 959cd0fe053f..e385adf24184 100644 --- a/core/assets/vendor/ckeditor/skins/moono-lisa/editor_ie8.css +++ b/core/assets/vendor/ckeditor/skins/moono-lisa/editor_ie8.css @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=L7CE) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=L7CE) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=L7CE) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=L7CE) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=L7CE) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=L7CE) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=L7CE) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=L7CE) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=L7CE) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=L7CE) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=L7CE) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=L7CE) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=L7CE) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=L7CE) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=L7CE) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=L7CE) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -2256px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbar{position:relative}.cke_rtl .cke_toolbar_end{right:auto;left:0}.cke_toolbar_end:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:1px;right:2px}.cke_rtl .cke_toolbar_end:after{right:auto;left:2px}.cke_hc .cke_toolbar_end:after{top:2px;right:5px;border-color:#000}.cke_hc.cke_rtl .cke_toolbar_end:after{right:auto;left:5px}.cke_combo+.cke_toolbar_end:after,.cke_toolbar.cke_toolbar_last .cke_toolbar_end:after{content:none;border:0}.cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:0}.cke_rtl .cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:auto;left:0} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=LAHG) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=LAHG) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=LAHG) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=LAHG) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=LAHG) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=LAHG) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=LAHG) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=LAHG) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=LAHG) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=LAHG) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=LAHG) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=LAHG) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=LAHG) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=LAHG) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=LAHG) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=LAHG) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -2256px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbar{position:relative}.cke_rtl .cke_toolbar_end{right:auto;left:0}.cke_toolbar_end:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:1px;right:2px}.cke_rtl .cke_toolbar_end:after{right:auto;left:2px}.cke_hc .cke_toolbar_end:after{top:2px;right:5px;border-color:#000}.cke_hc.cke_rtl .cke_toolbar_end:after{right:auto;left:5px}.cke_combo+.cke_toolbar_end:after,.cke_toolbar.cke_toolbar_last .cke_toolbar_end:after{content:none;border:0}.cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:0}.cke_rtl .cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:auto;left:0} \ No newline at end of file diff --git a/core/assets/vendor/ckeditor/skins/moono-lisa/editor_iequirks.css b/core/assets/vendor/ckeditor/skins/moono-lisa/editor_iequirks.css index e0bbd038eddd..eedc04958930 100644 --- a/core/assets/vendor/ckeditor/skins/moono-lisa/editor_iequirks.css +++ b/core/assets/vendor/ckeditor/skins/moono-lisa/editor_iequirks.css @@ -2,4 +2,4 @@ Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=L7CE) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=L7CE) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=L7CE) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=L7CE) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=L7CE) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=L7CE) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=L7CE) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=L7CE) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=L7CE) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=L7CE) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=L7CE) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=L7CE) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=L7CE) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=L7CE) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=L7CE) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=L7CE) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=L7CE) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=L7CE) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=L7CE) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=L7CE) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=L7CE) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=L7CE) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=L7CE) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=L7CE) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=L7CE) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=L7CE) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=L7CE) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=L7CE) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=L7CE) no-repeat 0 -2256px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=LAHG) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=LAHG) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=LAHG) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=LAHG) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=LAHG) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=LAHG) no-repeat 0 -144px!important}.cke_button__blockquote_icon{background:url(icons.png?t=LAHG) no-repeat 0 -168px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -192px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=LAHG) no-repeat 0 -216px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -240px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=LAHG) no-repeat 0 -264px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -288px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=LAHG) no-repeat 0 -312px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=LAHG) no-repeat 0 -336px!important}.cke_button__image_icon{background:url(icons.png?t=LAHG) no-repeat 0 -360px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -384px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -408px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -432px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=LAHG) no-repeat 0 -456px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=LAHG) no-repeat 0 -480px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=LAHG) no-repeat 0 -504px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=LAHG) no-repeat 0 -528px!important}.cke_button__justifyright_icon{background:url(icons.png?t=LAHG) no-repeat 0 -552px!important}.cke_button__language_icon{background:url(icons.png?t=LAHG) no-repeat 0 -576px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -600px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -624px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -648px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=LAHG) no-repeat 0 -672px!important}.cke_button__maximize_icon{background:url(icons.png?t=LAHG) no-repeat 0 -696px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -720px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=LAHG) no-repeat 0 -744px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -768px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=LAHG) no-repeat 0 -792px!important}.cke_button__removeformat_icon{background:url(icons.png?t=LAHG) no-repeat 0 -816px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -840px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=LAHG) no-repeat 0 -864px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -888px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=LAHG) no-repeat 0 -912px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -936px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=LAHG) no-repeat 0 -960px!important}.cke_button__specialchar_icon{background:url(icons.png?t=LAHG) no-repeat 0 -984px!important}.cke_button__table_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1008px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1032px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1056px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1080px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1104px!important}.cke_button__simplebox_icon{background:url(icons.png?t=LAHG) no-repeat 0 -1128px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -360px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -408px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -480px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -576px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -624px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -696px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -744px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -816px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -864px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -1104px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=LAHG) no-repeat 0 -2256px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0} \ No newline at end of file diff --git a/core/core.libraries.yml b/core/core.libraries.yml index 826fa73e4d12..a7384a8972eb 100644 --- a/core/core.libraries.yml +++ b/core/core.libraries.yml @@ -14,10 +14,10 @@ backbone: ckeditor: remote: https://github.com/ckeditor/ckeditor4 - version: "4.16.2" + version: "4.17.1" license: name: GNU-GPL-2.0-or-later - url: https://raw.githubusercontent.com/ckeditor/ckeditor4/4.16.2/LICENSE.md + url: https://raw.githubusercontent.com/ckeditor/ckeditor4/4.17.1/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor/ckeditor.js: { preprocess: false, minified: true } -- GitLab From 159085e52f5564c7c37b0ea1d44e724ce0da5034 Mon Sep 17 00:00:00 2001 From: xjm <xjm@65776.no-reply.drupal.org> Date: Wed, 17 Nov 2021 18:33:29 -0600 Subject: [PATCH 43/69] Drupal 9.3.0-beta2 --- composer.lock | 9 +++------ composer/Metapackage/CoreRecommended/composer.json | 2 +- composer/Metapackage/PinnedDevDependencies/composer.json | 2 +- composer/Template/LegacyProject/composer.json | 2 +- composer/Template/RecommendedProject/composer.json | 2 +- core/lib/Drupal.php | 2 +- 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/composer.lock b/composer.lock index cb861893d50e..efd806b0e220 100644 --- a/composer.lock +++ b/composer.lock @@ -531,7 +531,7 @@ }, { "name": "drupal/core", - "version": "9.3.x-dev", + "version": "9.3.0-beta2", "dist": { "type": "path", "url": "core", @@ -788,7 +788,7 @@ }, { "name": "drupal/core-project-message", - "version": "9.3.x-dev", + "version": "9.3.0-beta2", "dist": { "type": "path", "url": "composer/Plugin/ProjectMessage", @@ -821,7 +821,7 @@ }, { "name": "drupal/core-vendor-hardening", - "version": "9.3.x-dev", + "version": "9.3.0-beta2", "dist": { "type": "path", "url": "composer/Plugin/VendorHardening", @@ -7903,9 +7903,6 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { - "drupal/core": 20, - "drupal/core-project-message": 20, - "drupal/core-vendor-hardening": 20, "symfony/phpunit-bridge": 10, "symfony/var-dumper": 10 }, diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 743923090dd0..4676e9384a96 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-strict": "*" }, "require": { - "drupal/core": "9.3.x-dev", + "drupal/core": "9.3.0-beta2", "asm89/stack-cors": "1.3.0", "composer/semver": "3.2.6", "doctrine/annotations": "1.13.2", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index a3e1ab67fcfe..15d747e9dd66 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-require-dev": "*" }, "require": { - "drupal/core": "9.3.x-dev", + "drupal/core": "9.3.0-beta2", "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.3.1", diff --git a/composer/Template/LegacyProject/composer.json b/composer/Template/LegacyProject/composer.json index 1b1a2af337ab..afc7c7f0dcf1 100644 --- a/composer/Template/LegacyProject/composer.json +++ b/composer/Template/LegacyProject/composer.json @@ -27,7 +27,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "beta", "prefer-stable": true, "config": { "sort-packages": true diff --git a/composer/Template/RecommendedProject/composer.json b/composer/Template/RecommendedProject/composer.json index 99e9f55f2394..8b2984364d5f 100644 --- a/composer/Template/RecommendedProject/composer.json +++ b/composer/Template/RecommendedProject/composer.json @@ -26,7 +26,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "beta", "prefer-stable": true, "config": { "sort-packages": true diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php index 4ffa6c6f0b0b..7dcb41dcba2b 100644 --- a/core/lib/Drupal.php +++ b/core/lib/Drupal.php @@ -75,7 +75,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '9.3.0-dev'; + const VERSION = '9.3.0-beta2'; /** * Core API compatibility. -- GitLab From aa988ef4659095a5255d6288c718352a056af989 Mon Sep 17 00:00:00 2001 From: xjm <xjm@65776.no-reply.drupal.org> Date: Wed, 17 Nov 2021 18:33:30 -0600 Subject: [PATCH 44/69] Back to dev. --- composer.lock | 9 ++++++--- composer/Metapackage/CoreRecommended/composer.json | 2 +- composer/Metapackage/PinnedDevDependencies/composer.json | 2 +- composer/Template/LegacyProject/composer.json | 2 +- composer/Template/RecommendedProject/composer.json | 2 +- core/lib/Drupal.php | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/composer.lock b/composer.lock index efd806b0e220..cb861893d50e 100644 --- a/composer.lock +++ b/composer.lock @@ -531,7 +531,7 @@ }, { "name": "drupal/core", - "version": "9.3.0-beta2", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "core", @@ -788,7 +788,7 @@ }, { "name": "drupal/core-project-message", - "version": "9.3.0-beta2", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "composer/Plugin/ProjectMessage", @@ -821,7 +821,7 @@ }, { "name": "drupal/core-vendor-hardening", - "version": "9.3.0-beta2", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "composer/Plugin/VendorHardening", @@ -7903,6 +7903,9 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { + "drupal/core": 20, + "drupal/core-project-message": 20, + "drupal/core-vendor-hardening": 20, "symfony/phpunit-bridge": 10, "symfony/var-dumper": 10 }, diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 4676e9384a96..743923090dd0 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-strict": "*" }, "require": { - "drupal/core": "9.3.0-beta2", + "drupal/core": "9.3.x-dev", "asm89/stack-cors": "1.3.0", "composer/semver": "3.2.6", "doctrine/annotations": "1.13.2", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index 15d747e9dd66..a3e1ab67fcfe 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-require-dev": "*" }, "require": { - "drupal/core": "9.3.0-beta2", + "drupal/core": "9.3.x-dev", "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.3.1", diff --git a/composer/Template/LegacyProject/composer.json b/composer/Template/LegacyProject/composer.json index afc7c7f0dcf1..1b1a2af337ab 100644 --- a/composer/Template/LegacyProject/composer.json +++ b/composer/Template/LegacyProject/composer.json @@ -27,7 +27,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "beta", + "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true diff --git a/composer/Template/RecommendedProject/composer.json b/composer/Template/RecommendedProject/composer.json index 8b2984364d5f..99e9f55f2394 100644 --- a/composer/Template/RecommendedProject/composer.json +++ b/composer/Template/RecommendedProject/composer.json @@ -26,7 +26,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "beta", + "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php index 7dcb41dcba2b..4ffa6c6f0b0b 100644 --- a/core/lib/Drupal.php +++ b/core/lib/Drupal.php @@ -75,7 +75,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '9.3.0-beta2'; + const VERSION = '9.3.0-dev'; /** * Core API compatibility. -- GitLab From ce8e734ad346a4ab02bef4349aa84f03efdf853f Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Thu, 18 Nov 2021 16:20:04 +0000 Subject: [PATCH 45/69] Issue #3248014 by daffie, andypost: [Symfony 6] The Drupal\Tests\media\Kernel\OEmbedIframeControllerTest fails (cherry picked from commit 507fc5fe009895dc719527ff5272d06b60f18d80) --- core/modules/media/src/Controller/OEmbedIframeController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/media/src/Controller/OEmbedIframeController.php b/core/modules/media/src/Controller/OEmbedIframeController.php index a32533f5d31d..a19d2b65e9be 100644 --- a/core/modules/media/src/Controller/OEmbedIframeController.php +++ b/core/modules/media/src/Controller/OEmbedIframeController.php @@ -121,8 +121,8 @@ public static function create(ContainerInterface $container) { */ public function render(Request $request) { $url = $request->query->get('url'); - $max_width = $request->query->getInt('max_width', NULL); - $max_height = $request->query->getInt('max_height', NULL); + $max_width = $request->query->getInt('max_width'); + $max_height = $request->query->getInt('max_height'); // Hash the URL and max dimensions, and ensure it is equal to the hash // parameter passed in the query string. -- GitLab From 2126f4c7649c01d775482b85f3e3434d897eb7fc Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Fri, 19 Nov 2021 09:49:33 +0000 Subject: [PATCH 46/69] Issue #3207567 by Spokje, quietone, guilhermevp, yogeshmpawar, daffie, alexpott: Fix Drupal.Commenting.FunctionComment.MissingParamComment (cherry picked from commit 576bd7543d19002c76fe4488c57d972e69c45671) --- .../Scaffold/Operations/OperationFactory.php | 1 + .../Annotation/AnnotationInterface.php | 2 + .../Bridge/ZfExtensionManagerSfContainer.php | 1 + core/lib/Drupal/Component/Gettext/PoItem.php | 8 ++ core/lib/Drupal/Component/Utility/Random.php | 1 + core/lib/Drupal/Core/Access/AccessManager.php | 1 + core/lib/Drupal/Core/Ajax/RemoveCommand.php | 1 + .../Cache/Context/IsFrontPathCacheContext.php | 1 + core/lib/Drupal/Core/Composer/Composer.php | 3 + .../Core/Config/ConfigInstallerInterface.php | 1 + .../Drupal/Core/Datetime/Element/Datelist.php | 2 + .../Drupal/Core/Datetime/Element/Datetime.php | 1 + .../Query/ConditionAggregateInterface.php | 14 +++ .../Core/Entity/Query/ConditionInterface.php | 9 ++ .../Drupal/Core/Entity/Query/Sql/Tables.php | 2 + .../AuthenticationSubscriber.php | 1 + .../ExceptionTestSiteSubscriber.php | 1 + .../FinishResponseSubscriber.php | 1 + core/lib/Drupal/Core/Form/FormSubmitter.php | 1 + .../lib/Drupal/Core/Locale/CountryManager.php | 1 + .../Drupal/Core/Lock/LockBackendInterface.php | 1 + .../lib/Drupal/Core/Menu/LocalTaskManager.php | 1 + .../Core/Render/Element/InlineTemplate.php | 1 + .../Enhancer/ParamConversionEnhancer.php | 1 + .../Drupal/Core/Routing/RoutePreloader.php | 1 + core/lib/Drupal/Core/Test/TestDiscovery.php | 1 + core/lib/Drupal/Core/Updater/Updater.php | 1 + .../Drupal/Core/Updater/UpdaterInterface.php | 1 + .../Validation/ConstraintValidatorFactory.php | 1 + core/modules/ban/src/Form/BanAdmin.php | 1 + .../src/EventSubscriber.php | 2 + .../Functional/ConfigTranslationUiTest.php | 2 + .../tests/src/Unit/ConfigNamesMapperTest.php | 1 + .../Kernel/FieldLayoutEntityDisplayTest.php | 3 + .../file/src/Upload/FileUploadResult.php | 3 + .../jsonapi/tests/src/Functional/UserTest.php | 2 + core/modules/locale/src/PluralFormula.php | 2 + .../src/Event/MigratePreRowSaveEvent.php | 1 + .../tests/src/Kernel/process/ExtractTest.php | 2 + .../Kernel/process/HandleMultiplesTest.php | 2 + .../NodeAdminRouteSubscriber.php | 1 + .../node/src/Plugin/views/argument/Nid.php | 1 + .../Kernel/Migrate/d7/MigrateNodeTypeTest.php | 5 + .../tests/src/Kernel/QuickEditTestBase.php | 1 + .../serialization/src/Encoder/XmlEncoder.php | 1 + ...ntityReferenceFieldItemNormalizerTrait.php | 1 + .../ContentEntityNormalizerTest.php | 4 + .../system/src/Form/ModulesListForm.php | 1 + .../src/Form/SystemMenuOffCanvasForm.php | 3 + .../system/src/PhpStorage/MockPhpStorage.php | 1 + .../system/src/SystemConfigSubscriber.php | 1 + .../src/Tests/Routing/MockAliasManager.php | 4 - .../src/EarlyRenderingTestController.php | 1 + .../FormTestMachineNameValidationForm.php | 1 + .../EventSubscriber/ThemeTestSubscriber.php | 1 + .../AssertPageCacheContextsAndTagsTrait.php | 1 + .../tests/src/Kernel/Common/UrlTest.php | 1 + .../Kernel/Extension/ModuleHandlerTest.php | 1 + .../modules/user/src/UserStorageInterface.php | 1 + .../src/Functional/UserPasswordResetTest.php | 1 + core/modules/views/src/Analyzer.php | 1 + .../views/argument_validator/Entity.php | 1 + .../views/display/DisplayRouterInterface.php | 1 + .../views/src/Plugin/views/filter/Combine.php | 1 + .../Plugin/views/filter/FilterPluginBase.php | 3 +- .../views/src/Tests/TestHelperPlugin.php | 1 + .../src/Plugin/views/join/JoinTest.php | 1 + .../src/Plugin/views/query/QueryTest.php | 1 + .../Handler/FieldRenderedEntityTest.php | 1 + .../tests/src/Kernel/ViewExecutableTest.php | 1 + core/modules/views_ui/src/ViewEditForm.php | 1 + .../src/Functional/ArgumentValidatorTest.php | 1 + .../FunctionalJavascript/ViewsListingTest.php | 1 + core/modules/workflows/src/State.php | 1 + core/phpcs.xml.dist | 1 - .../Template/ComposerProjectTemplatesTest.php | 2 + .../KernelTests/Core/Command/DbDumpTest.php | 1 + .../Core/Entity/EntityQueryAggregateTest.php | 2 + .../Core/Routing/ExceptionHandlingTest.php | 1 + .../Component/Datetime/DateTimePlusTest.php | 1 + .../StubPluginManagerBaseWithMapper.php | 1 + .../Component/Utility/ReflectionTest.php | 2 + .../Plugin/Scaffold/ScaffoldTestResult.php | 2 + .../Context/IsFrontPathCacheContextTest.php | 1 + .../Config/Entity/ConfigEntityStorageTest.php | 2 + .../Compiler/BackendCompilerPassTest.php | 3 + .../Tests/Core/Entity/EntityTypeTest.php | 1 + .../KeyValueEntityStorageTest.php | 2 + .../Routing/DefaultHtmlRouteProviderTest.php | 2 + .../RssResponseRelativeUrlFilterTest.php | 2 + .../Core/Extension/ExtensionDiscoveryTest.php | 3 + .../Core/Extension/ExtensionListTest.php | 1 + .../Drupal/Tests/Core/File/FileSystemTest.php | 3 + .../Core/Form/FormStateDecoratorBaseTest.php | 114 ++++++++---------- .../Tests/Core/Form/SubformStateTest.php | 4 + .../Tests/Core/Http/ClientFactoryTest.php | 3 + .../Core/Plugin/DefaultPluginManagerTest.php | 1 + .../TestDerivativeDiscoveryWithObject.php | 3 + .../Core/Render/RendererPlaceholdersTest.php | 1 + .../RecursiveContextualValidatorTest.php | 1 + core/tests/Drupal/Tests/Core/UrlTest.php | 5 + core/tests/Drupal/Tests/DocumentElement.php | 4 + core/tests/Drupal/Tests/UnitTestCase.php | 3 + 103 files changed, 236 insertions(+), 67 deletions(-) diff --git a/composer/Plugin/Scaffold/Operations/OperationFactory.php b/composer/Plugin/Scaffold/Operations/OperationFactory.php index b256e0e15fba..0f54a35c51c5 100644 --- a/composer/Plugin/Scaffold/Operations/OperationFactory.php +++ b/composer/Plugin/Scaffold/Operations/OperationFactory.php @@ -124,6 +124,7 @@ protected function createAppendOp(PackageInterface $package, OperationData $oper * * @param Drupal\Composer\Plugin\Scaffold\ScaffoldFilePath $file * Scaffold file to check. + * * @return bool * True if the file exists and has content. */ diff --git a/core/lib/Drupal/Component/Annotation/AnnotationInterface.php b/core/lib/Drupal/Component/Annotation/AnnotationInterface.php index 1168510d6550..eb44b398193e 100644 --- a/core/lib/Drupal/Component/Annotation/AnnotationInterface.php +++ b/core/lib/Drupal/Component/Annotation/AnnotationInterface.php @@ -23,6 +23,7 @@ public function getProvider(); * Sets the name of the provider of the annotated class. * * @param string $provider + * The provider of the annotated class. */ public function setProvider($provider); @@ -44,6 +45,7 @@ public function getClass(); * Sets the class of the annotated class. * * @param string $class + * The class of the annotated class. */ public function setClass($class); diff --git a/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php b/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php index 396e8439076e..2e9fdd310cf1 100644 --- a/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php +++ b/core/lib/Drupal/Component/Bridge/ZfExtensionManagerSfContainer.php @@ -124,6 +124,7 @@ public function setContainer(ContainerInterface $container = NULL) { /** * @param $class + * The class to set as standalone. */ public function setStandalone($class) { if (!is_subclass_of($class, ReaderManagerInterface::class) && !is_subclass_of($class, WriterManagerInterface::class)) { diff --git a/core/lib/Drupal/Component/Gettext/PoItem.php b/core/lib/Drupal/Component/Gettext/PoItem.php index 5e7d6f6444da..3ef8a2acea81 100644 --- a/core/lib/Drupal/Component/Gettext/PoItem.php +++ b/core/lib/Drupal/Component/Gettext/PoItem.php @@ -77,6 +77,7 @@ public function getLangcode() { * Set the language code of the current language. * * @param string $langcode + * The language code of the current language. */ public function setLangcode($langcode) { $this->langcode = $langcode; @@ -95,6 +96,7 @@ public function getContext() { * Set the context this translation belongs to. * * @param string $context + * The context this translation belongs to. */ public function setContext($context) { $this->context = $context; @@ -115,6 +117,7 @@ public function getSource() { * plurals. * * @param string|array $source + * The source string or the array of strings if the translation has plurals. */ public function setSource($source) { $this->source = $source; @@ -135,6 +138,8 @@ public function getTranslation() { * plurals. * * @param string|array $translation + * The translation string or the array of strings if the translation has + * plurals. */ public function setTranslation($translation) { $this->translation = $translation; @@ -144,6 +149,7 @@ public function setTranslation($translation) { * Set if the translation has plural values. * * @param bool $plural + * TRUE, if the translation has plural values. FALSE otherwise. */ public function setPlural($plural) { $this->plural = $plural; @@ -171,6 +177,7 @@ public function getComment() { * Set the comment of this translation. * * @param string $comment + * The comment of this translation. */ public function setComment($comment) { $this->comment = $comment; @@ -180,6 +187,7 @@ public function setComment($comment) { * Create the PoItem from a structured array. * * @param array $values + * A structured array to create the PoItem from. */ public function setFromArray(array $values = []) { if (isset($values['context'])) { diff --git a/core/lib/Drupal/Component/Utility/Random.php b/core/lib/Drupal/Component/Utility/Random.php index 06fa8b0c9545..16190d8f6694 100644 --- a/core/lib/Drupal/Component/Utility/Random.php +++ b/core/lib/Drupal/Component/Utility/Random.php @@ -249,6 +249,7 @@ public function sentences($min_word_count, $capitalize = FALSE) { * Generate paragraphs separated by double new line. * * @param int $paragraph_count + * The number of paragraphs to create. Defaults to 12. * * @return string */ diff --git a/core/lib/Drupal/Core/Access/AccessManager.php b/core/lib/Drupal/Core/Access/AccessManager.php index 14b5c87d7c6b..7650fb672417 100644 --- a/core/lib/Drupal/Core/Access/AccessManager.php +++ b/core/lib/Drupal/Core/Access/AccessManager.php @@ -66,6 +66,7 @@ class AccessManager implements AccessManagerInterface { * @param \Drupal\Core\Session\AccountInterface $current_user * The current user. * @param CheckProviderInterface $check_provider + * The check access provider. */ public function __construct(RouteProviderInterface $route_provider, ParamConverterManagerInterface $paramconverter_manager, AccessArgumentsResolverFactoryInterface $arguments_resolver_factory, AccountInterface $current_user, CheckProviderInterface $check_provider) { $this->routeProvider = $route_provider; diff --git a/core/lib/Drupal/Core/Ajax/RemoveCommand.php b/core/lib/Drupal/Core/Ajax/RemoveCommand.php index d7f86ddd257f..47993c9f6e0b 100644 --- a/core/lib/Drupal/Core/Ajax/RemoveCommand.php +++ b/core/lib/Drupal/Core/Ajax/RemoveCommand.php @@ -29,6 +29,7 @@ class RemoveCommand implements CommandInterface { * Constructs a RemoveCommand object. * * @param string $selector + * The selector. */ public function __construct($selector) { $this->selector = $selector; diff --git a/core/lib/Drupal/Core/Cache/Context/IsFrontPathCacheContext.php b/core/lib/Drupal/Core/Cache/Context/IsFrontPathCacheContext.php index 141b13a63f10..6a0afab504d8 100644 --- a/core/lib/Drupal/Core/Cache/Context/IsFrontPathCacheContext.php +++ b/core/lib/Drupal/Core/Cache/Context/IsFrontPathCacheContext.php @@ -21,6 +21,7 @@ class IsFrontPathCacheContext implements CacheContextInterface { * Constructs an IsFrontPathCacheContext object. * * @param \Drupal\Core\Path\PathMatcherInterface $path_matcher + * The path matcher. */ public function __construct(PathMatcherInterface $path_matcher) { $this->pathMatcher = $path_matcher; diff --git a/core/lib/Drupal/Core/Composer/Composer.php b/core/lib/Drupal/Core/Composer/Composer.php index 3041dab3a777..0048296d8478 100644 --- a/core/lib/Drupal/Core/Composer/Composer.php +++ b/core/lib/Drupal/Core/Composer/Composer.php @@ -87,6 +87,7 @@ class Composer { * Add vendor classes to Composer's static classmap. * * @param \Composer\Script\Event $event + * The event. */ public static function preAutoloadDump(Event $event) { // Get the configured vendor directory. @@ -159,6 +160,7 @@ public static function preAutoloadDump(Event $event) { * Ensures that .htaccess and web.config files are present in Composer root. * * @param \Composer\Script\Event $event + * The event. */ public static function ensureHtaccess(Event $event) { @@ -295,6 +297,7 @@ protected static function deleteRecursive($path) { * Fires the drupal-phpunit-upgrade script event if necessary. * * @param \Composer\Script\Event $event + * The event. */ public static function upgradePHPUnit(Event $event) { $repository = $event->getComposer()->getRepositoryManager()->getLocalRepository(); diff --git a/core/lib/Drupal/Core/Config/ConfigInstallerInterface.php b/core/lib/Drupal/Core/Config/ConfigInstallerInterface.php index daa99bb4519c..0b383a76fa7d 100644 --- a/core/lib/Drupal/Core/Config/ConfigInstallerInterface.php +++ b/core/lib/Drupal/Core/Config/ConfigInstallerInterface.php @@ -70,6 +70,7 @@ public function installCollectionDefaultConfig($collection); * Sets the configuration storage that provides the default configuration. * * @param \Drupal\Core\Config\StorageInterface $storage + * The storage. * * @return $this */ diff --git a/core/lib/Drupal/Core/Datetime/Element/Datelist.php b/core/lib/Drupal/Core/Datetime/Element/Datelist.php index bbb1676d70e1..add7a73ae153 100644 --- a/core/lib/Drupal/Core/Datetime/Element/Datelist.php +++ b/core/lib/Drupal/Core/Datetime/Element/Datelist.php @@ -350,7 +350,9 @@ protected static function checkEmptyInputs($input, $parts) { * Rounds minutes and seconds to nearest requested value. * * @param $date + * The date. * @param $increment + * The value to round to. * * @return */ diff --git a/core/lib/Drupal/Core/Datetime/Element/Datetime.php b/core/lib/Drupal/Core/Datetime/Element/Datetime.php index e1d0aea4720a..11c5f2a69f60 100644 --- a/core/lib/Drupal/Core/Datetime/Element/Datetime.php +++ b/core/lib/Drupal/Core/Datetime/Element/Datetime.php @@ -387,6 +387,7 @@ public static function validateDatetime(&$element, FormStateInterface $form_stat * This is centralized for a consistent method of creating these examples. * * @param string $format + * The date format. * * @return string */ diff --git a/core/lib/Drupal/Core/Entity/Query/ConditionAggregateInterface.php b/core/lib/Drupal/Core/Entity/Query/ConditionAggregateInterface.php index 0c49c2811a3f..3cdf00c971fd 100644 --- a/core/lib/Drupal/Core/Entity/Query/ConditionAggregateInterface.php +++ b/core/lib/Drupal/Core/Entity/Query/ConditionAggregateInterface.php @@ -19,10 +19,16 @@ public function getConjunction(); * Adds a condition. * * @param string|ConditionAggregateInterface $field + * The field. * @param string $function + * (optional) The function. * @param mixed $value + * (optional) The value. * @param string $operator + * (optional) The operator. * @param string $langcode + * (optional) For which language the entity should be prepared, defaults to + * the current content language. * * @return $this * The called object. @@ -35,8 +41,12 @@ public function condition($field, $function = NULL, $value = NULL, $operator = N * Queries for the existence of a field. * * @param string $field + * The field to query for existence. * @param string $function + * The function. * @param string $langcode + * (optional) For which language the entity should be prepared, defaults to + * the current content language. * * @return \Drupal\Core\Entity\Query\ConditionInterface * @@ -48,8 +58,12 @@ public function exists($field, $function, $langcode = NULL); * Queries for the nonexistence of a field. * * @param string $field + * The field to query for nonexistence. * @param string $function + * The function. * @param string $langcode + * (optional) For which language the entity should be prepared, defaults to + * the current content language. * * @return \Drupal\Core\Entity\Query\ConditionInterface * diff --git a/core/lib/Drupal/Core/Entity/Query/ConditionInterface.php b/core/lib/Drupal/Core/Entity/Query/ConditionInterface.php index d0817fc79354..c2893e64fdd7 100644 --- a/core/lib/Drupal/Core/Entity/Query/ConditionInterface.php +++ b/core/lib/Drupal/Core/Entity/Query/ConditionInterface.php @@ -27,9 +27,14 @@ public function count(); * Adds a condition. * * @param string|\Drupal\Core\Entity\Query\ConditionInterface $field + * The field. * @param mixed $value + * (optional) The value. * @param string $operator + * (optional) The operator. * @param string $langcode + * (optional) For which language the entity should be prepared, defaults to + * the current content language. * * @return $this * @@ -41,7 +46,10 @@ public function condition($field, $value = NULL, $operator = NULL, $langcode = N * Queries for the existence of a field. * * @param string $field + * The field to query for existence. * @param string $langcode + * (optional) For which language the entity should be prepared, defaults to + * the current content language. * * @return $this * @@ -53,6 +61,7 @@ public function exists($field, $langcode = NULL); * Queries for the nonexistence of a field. * * @param string $field + * The field to query for nonexistence. * @param string $langcode * (optional) For which language the entity should be prepared, defaults to * the current content language. diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php b/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php index 43b7be38a3ad..91b43bef9396 100644 --- a/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php +++ b/core/lib/Drupal/Core/Entity/Query/Sql/Tables.php @@ -66,6 +66,7 @@ class Tables implements TablesInterface { /** * @param \Drupal\Core\Database\Query\SelectInterface $sql_query + * The SQL query. */ public function __construct(SelectInterface $sql_query) { $this->sqlQuery = $sql_query; @@ -454,6 +455,7 @@ protected function addJoin($type, $table, $join_condition, $langcode, $delta = N * @param string $table * The table name. * @param string $entity_type_id + * The entity type ID. * * @return array|false * An associative array of table field mapping for the given table, keyed by diff --git a/core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php index b592c1ad09ae..129cd692bf56 100644 --- a/core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/AuthenticationSubscriber.php @@ -125,6 +125,7 @@ public function onExceptionSendChallenge(ExceptionEvent $event) { * Detect disallowed authentication methods on access denied exceptions. * * @param \Symfony\Component\HttpKernel\Event\ExceptionEvent $event + * The event. */ public function onExceptionAccessDenied(ExceptionEvent $event) { if (isset($this->filter) && $event->isMainRequest()) { diff --git a/core/lib/Drupal/Core/EventSubscriber/ExceptionTestSiteSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ExceptionTestSiteSubscriber.php index 00ef848c0f51..2f9745c5c88f 100644 --- a/core/lib/Drupal/Core/EventSubscriber/ExceptionTestSiteSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/ExceptionTestSiteSubscriber.php @@ -32,6 +32,7 @@ protected function getHandledFormats() { * vestigial and can be removed. * * @param \Symfony\Component\HttpKernel\Event\ExceptionEvent $event + * The event. */ public function on500(ExceptionEvent $event) { $exception = $event->getThrowable(); diff --git a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php index d00270f793ad..9d70038a787f 100644 --- a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php @@ -213,6 +213,7 @@ public function onRespond(ResponseEvent $event) { * @see \Symfony\Component\HttpFoundation\ResponseHeaderBag::computeCacheControlValue() * * @param \Symfony\Component\HttpFoundation\Response $response + * The response object. * * @return bool * TRUE when Cache-Control header was set explicitly on the given response. diff --git a/core/lib/Drupal/Core/Form/FormSubmitter.php b/core/lib/Drupal/Core/Form/FormSubmitter.php index 94dadbb48274..b5638ce9578c 100644 --- a/core/lib/Drupal/Core/Form/FormSubmitter.php +++ b/core/lib/Drupal/Core/Form/FormSubmitter.php @@ -33,6 +33,7 @@ class FormSubmitter implements FormSubmitterInterface { * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack * The request stack. * @param \Drupal\Core\Routing\UrlGeneratorInterface $url_generator + * The URL generator. */ public function __construct(RequestStack $request_stack, UrlGeneratorInterface $url_generator) { $this->requestStack = $request_stack; diff --git a/core/lib/Drupal/Core/Locale/CountryManager.php b/core/lib/Drupal/Core/Locale/CountryManager.php index b5b01acfe0de..cc80581b0e68 100644 --- a/core/lib/Drupal/Core/Locale/CountryManager.php +++ b/core/lib/Drupal/Core/Locale/CountryManager.php @@ -25,6 +25,7 @@ class CountryManager implements CountryManagerInterface { * Constructor. * * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler + * The module handler. */ public function __construct(ModuleHandlerInterface $module_handler) { $this->moduleHandler = $module_handler; diff --git a/core/lib/Drupal/Core/Lock/LockBackendInterface.php b/core/lib/Drupal/Core/Lock/LockBackendInterface.php index dcc8ea4e7420..5f74cdda9c04 100644 --- a/core/lib/Drupal/Core/Lock/LockBackendInterface.php +++ b/core/lib/Drupal/Core/Lock/LockBackendInterface.php @@ -127,6 +127,7 @@ public function wait($name, $delay = 30); * Releases the given lock. * * @param string $name + * The lock name. */ public function release($name); diff --git a/core/lib/Drupal/Core/Menu/LocalTaskManager.php b/core/lib/Drupal/Core/Menu/LocalTaskManager.php index f0d42fb7be6e..6fb8bdfe935b 100644 --- a/core/lib/Drupal/Core/Menu/LocalTaskManager.php +++ b/core/lib/Drupal/Core/Menu/LocalTaskManager.php @@ -389,6 +389,7 @@ public function getLocalTasks($route_name, $level = 0) { * @param string $route_name * The route name of the local task to determine the active status. * @param array $route_parameters + * The parameter for the route. * * @return bool * Returns TRUE if the passed route_name and route_parameters is considered diff --git a/core/lib/Drupal/Core/Render/Element/InlineTemplate.php b/core/lib/Drupal/Core/Render/Element/InlineTemplate.php index ddef29673a92..d53a317e92cd 100644 --- a/core/lib/Drupal/Core/Render/Element/InlineTemplate.php +++ b/core/lib/Drupal/Core/Render/Element/InlineTemplate.php @@ -43,6 +43,7 @@ public function getInfo() { * Renders a twig string directly. * * @param array $element + * The element. * * @return array */ diff --git a/core/lib/Drupal/Core/Routing/Enhancer/ParamConversionEnhancer.php b/core/lib/Drupal/Core/Routing/Enhancer/ParamConversionEnhancer.php index 3d268e481697..445c4fe3f48c 100644 --- a/core/lib/Drupal/Core/Routing/Enhancer/ParamConversionEnhancer.php +++ b/core/lib/Drupal/Core/Routing/Enhancer/ParamConversionEnhancer.php @@ -73,6 +73,7 @@ protected function copyRawVariables(array $defaults) { * Catches failed parameter conversions and throw a 404 instead. * * @param \Symfony\Component\HttpKernel\Event\ExceptionEvent $event + * The event. */ public function onException(ExceptionEvent $event) { $exception = $event->getThrowable(); diff --git a/core/lib/Drupal/Core/Routing/RoutePreloader.php b/core/lib/Drupal/Core/Routing/RoutePreloader.php index 9a8fba810c03..f9bc874b69ea 100644 --- a/core/lib/Drupal/Core/Routing/RoutePreloader.php +++ b/core/lib/Drupal/Core/Routing/RoutePreloader.php @@ -55,6 +55,7 @@ class RoutePreloader implements EventSubscriberInterface { * @param \Drupal\Core\State\StateInterface $state * The state key value store. * @param \Drupal\Core\Cache\CacheBackendInterface $cache + * The cache backend. */ public function __construct(RouteProviderInterface $route_provider, StateInterface $state, CacheBackendInterface $cache) { $this->routeProvider = $route_provider; diff --git a/core/lib/Drupal/Core/Test/TestDiscovery.php b/core/lib/Drupal/Core/Test/TestDiscovery.php index 1b12a47c7c65..cf0ca32f2810 100644 --- a/core/lib/Drupal/Core/Test/TestDiscovery.php +++ b/core/lib/Drupal/Core/Test/TestDiscovery.php @@ -389,6 +389,7 @@ public static function getTestInfo($classname, $doc_comment = NULL) { * Parses the phpDoc summary line of a test class. * * @param string $doc_comment + * The documentation comment. * * @return string * The parsed phpDoc summary line. An empty string is returned if no summary diff --git a/core/lib/Drupal/Core/Updater/Updater.php b/core/lib/Drupal/Core/Updater/Updater.php index 46ea7ea8cd83..65c7409bbc62 100644 --- a/core/lib/Drupal/Core/Updater/Updater.php +++ b/core/lib/Drupal/Core/Updater/Updater.php @@ -155,6 +155,7 @@ protected static function getExtensionInfo($directory) { * provide their canonical name. * * @param string $directory + * The full directory path. * * @return string * The name of the project. diff --git a/core/lib/Drupal/Core/Updater/UpdaterInterface.php b/core/lib/Drupal/Core/Updater/UpdaterInterface.php index 09e3bec9072e..6e0bdaf32f9f 100644 --- a/core/lib/Drupal/Core/Updater/UpdaterInterface.php +++ b/core/lib/Drupal/Core/Updater/UpdaterInterface.php @@ -49,6 +49,7 @@ public static function getRootDirectoryRelativePath(); * Determines if the Updater can handle the project provided in $directory. * * @param string $directory + * The directory. * * @return bool * TRUE if the project is installed, FALSE if not. diff --git a/core/lib/Drupal/Core/Validation/ConstraintValidatorFactory.php b/core/lib/Drupal/Core/Validation/ConstraintValidatorFactory.php index 4e6bfe309132..218033e58046 100644 --- a/core/lib/Drupal/Core/Validation/ConstraintValidatorFactory.php +++ b/core/lib/Drupal/Core/Validation/ConstraintValidatorFactory.php @@ -19,6 +19,7 @@ class ConstraintValidatorFactory extends BaseConstraintValidatorFactory { * Constructs a new ConstraintValidatorFactory. * * @param \Drupal\Core\DependencyInjection\ClassResolverInterface $class_resolver + * The class resolver. */ public function __construct(ClassResolverInterface $class_resolver) { $this->classResolver = $class_resolver; diff --git a/core/modules/ban/src/Form/BanAdmin.php b/core/modules/ban/src/Form/BanAdmin.php index 9a55d02dbe27..a92954e9d200 100644 --- a/core/modules/ban/src/Form/BanAdmin.php +++ b/core/modules/ban/src/Form/BanAdmin.php @@ -24,6 +24,7 @@ class BanAdmin extends FormBase { * Constructs a new BanAdmin object. * * @param \Drupal\ban\BanIpManagerInterface $ip_manager + * The ban IP manager. */ public function __construct(BanIpManagerInterface $ip_manager) { $this->ipManager = $ip_manager; diff --git a/core/modules/config/tests/config_import_test/src/EventSubscriber.php b/core/modules/config/tests/config_import_test/src/EventSubscriber.php index 6b72b8ac992e..a0691c3f0edc 100644 --- a/core/modules/config/tests/config_import_test/src/EventSubscriber.php +++ b/core/modules/config/tests/config_import_test/src/EventSubscriber.php @@ -84,6 +84,7 @@ public function onConfigImporterMissingContentTwo(MissingContentEvent $event) { * Reacts to a config save and records information in state for testing. * * @param \Drupal\Core\Config\ConfigCrudEvent $event + * The event. */ public function onConfigSave(ConfigCrudEvent $event) { $config = $event->getConfig(); @@ -116,6 +117,7 @@ public function onConfigSave(ConfigCrudEvent $event) { * Reacts to a config delete and records information in state for testing. * * @param \Drupal\Core\Config\ConfigCrudEvent $event + * The event. */ public function onConfigDelete(ConfigCrudEvent $event) { $config = $event->getConfig(); diff --git a/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php index 025f933eb44f..50a74e205691 100644 --- a/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php +++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php @@ -1147,7 +1147,9 @@ protected function getTranslation($config_name, $key, $langcode) { * Sets site name and slogan for default language, helps in tests. * * @param string $site_name + * The site name. * @param string $site_slogan + * The site slogan. */ protected function setSiteInformation($site_name, $site_slogan) { $edit = [ diff --git a/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php b/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php index 728063ad5756..ea273e39fd40 100644 --- a/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php +++ b/core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php @@ -675,6 +675,7 @@ public function getInternalLangcode() { * Sets the list of configuration names. * * @param array $config_names + * The configuration names. */ public function setConfigNames(array $config_names) { $this->pluginDefinition['names'] = $config_names; diff --git a/core/modules/field_layout/tests/src/Kernel/FieldLayoutEntityDisplayTest.php b/core/modules/field_layout/tests/src/Kernel/FieldLayoutEntityDisplayTest.php index 1f94b9da38fa..0042c7b0585a 100644 --- a/core/modules/field_layout/tests/src/Kernel/FieldLayoutEntityDisplayTest.php +++ b/core/modules/field_layout/tests/src/Kernel/FieldLayoutEntityDisplayTest.php @@ -176,8 +176,11 @@ public function testPreSave() { * Asserts than an entity has the correct values. * * @param mixed $expected + * The expected values. * @param array $values + * The actual values. * @param string $message + * (optional) An error message. */ public static function assertEntityValues($expected, array $values, $message = '') { diff --git a/core/modules/file/src/Upload/FileUploadResult.php b/core/modules/file/src/Upload/FileUploadResult.php index 8481002cf602..8a00935da17e 100644 --- a/core/modules/file/src/Upload/FileUploadResult.php +++ b/core/modules/file/src/Upload/FileUploadResult.php @@ -51,6 +51,7 @@ public function setSecurityRename(): FileUploadResult { * Sets the sanitized filename. * * @param string $sanitizedFilename + * The sanitized filename. * * @return $this */ @@ -72,6 +73,7 @@ public function getOriginalFilename(): string { * Sets the original filename. * * @param string $originalFilename + * The original filename. * * @return $this */ @@ -84,6 +86,7 @@ public function setOriginalFilename(string $originalFilename): FileUploadResult * Sets the File entity. * * @param \Drupal\file\FileInterface $file + * A file entity. * * @return $this */ diff --git a/core/modules/jsonapi/tests/src/Functional/UserTest.php b/core/modules/jsonapi/tests/src/Functional/UserTest.php index 2184c3bcb4b8..21a2d99d0b58 100644 --- a/core/modules/jsonapi/tests/src/Functional/UserTest.php +++ b/core/modules/jsonapi/tests/src/Functional/UserTest.php @@ -803,7 +803,9 @@ protected function makeNormalizationInvalid(array $document, $entity_key) { /** * @param \Drupal\user\UserInterface $account + * The user account. * @param string $cancel_method + * The cancel method. */ private function sendDeleteRequestForUser(UserInterface $account, string $cancel_method) { $url = Url::fromRoute(sprintf('jsonapi.%s.individual', static::$resourceTypeName), ['entity' => $account->uuid()]); diff --git a/core/modules/locale/src/PluralFormula.php b/core/modules/locale/src/PluralFormula.php index 0913a69cdaf7..fc7fd88519fa 100644 --- a/core/modules/locale/src/PluralFormula.php +++ b/core/modules/locale/src/PluralFormula.php @@ -42,7 +42,9 @@ class PluralFormula implements PluralFormulaInterface { /** * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager + * The language manager. * @param \Drupal\Core\State\StateInterface $state + * The state. */ public function __construct(LanguageManagerInterface $language_manager, StateInterface $state) { $this->languageManager = $language_manager; diff --git a/core/modules/migrate/src/Event/MigratePreRowSaveEvent.php b/core/modules/migrate/src/Event/MigratePreRowSaveEvent.php index 98a1c0a53edf..397ceb5e372d 100644 --- a/core/modules/migrate/src/Event/MigratePreRowSaveEvent.php +++ b/core/modules/migrate/src/Event/MigratePreRowSaveEvent.php @@ -26,6 +26,7 @@ class MigratePreRowSaveEvent extends EventBase { * @param \Drupal\migrate\MigrateMessageInterface $message * The current migrate message service. * @param \Drupal\migrate\Row $row + * The current row. */ public function __construct(MigrationInterface $migration, MigrateMessageInterface $message, Row $row) { parent::__construct($migration, $message); diff --git a/core/modules/migrate/tests/src/Kernel/process/ExtractTest.php b/core/modules/migrate/tests/src/Kernel/process/ExtractTest.php index 8dc73f492449..c85f8aab1a57 100644 --- a/core/modules/migrate/tests/src/Kernel/process/ExtractTest.php +++ b/core/modules/migrate/tests/src/Kernel/process/ExtractTest.php @@ -57,7 +57,9 @@ public function getDefinition() { * @dataProvider multipleValueProviderSource * * @param array $source_data + * The source data. * @param array $expected_data + * The expected results. */ public function testMultipleValueExplode(array $source_data, array $expected_data) { $definition = $this->getDefinition(); diff --git a/core/modules/migrate/tests/src/Kernel/process/HandleMultiplesTest.php b/core/modules/migrate/tests/src/Kernel/process/HandleMultiplesTest.php index caae69de613c..1319a7bf8a77 100644 --- a/core/modules/migrate/tests/src/Kernel/process/HandleMultiplesTest.php +++ b/core/modules/migrate/tests/src/Kernel/process/HandleMultiplesTest.php @@ -85,7 +85,9 @@ public function getDefinition() { * @dataProvider scalarAndMultipleValuesProviderSource * * @param array $source_data + * The source data. * @param array $expected_data + * The expected results. */ public function testScalarAndMultipleValues(array $source_data, array $expected_data) { $definition = $this->getDefinition(); diff --git a/core/modules/node/src/EventSubscriber/NodeAdminRouteSubscriber.php b/core/modules/node/src/EventSubscriber/NodeAdminRouteSubscriber.php index 722c70549d09..a726ae8a649e 100644 --- a/core/modules/node/src/EventSubscriber/NodeAdminRouteSubscriber.php +++ b/core/modules/node/src/EventSubscriber/NodeAdminRouteSubscriber.php @@ -58,6 +58,7 @@ protected function alterRoutes(RouteCollection $collection) { * Rebuilds the router when node.settings:use_admin_theme is changed. * * @param \Drupal\Core\Config\ConfigCrudEvent $event + * The event object. */ public function onConfigSave(ConfigCrudEvent $event) { if ($event->getConfig()->getName() === 'node.settings' && $event->isChanged('use_admin_theme')) { diff --git a/core/modules/node/src/Plugin/views/argument/Nid.php b/core/modules/node/src/Plugin/views/argument/Nid.php index 382b66643ed9..4a8c1e2b18c1 100644 --- a/core/modules/node/src/Plugin/views/argument/Nid.php +++ b/core/modules/node/src/Plugin/views/argument/Nid.php @@ -30,6 +30,7 @@ class Nid extends NumericArgument { * @param mixed $plugin_definition * The plugin implementation definition. * @param \Drupal\node\NodeStorageInterface $node_storage + * The node storage handler. */ public function __construct(array $configuration, $plugin_id, $plugin_definition, NodeStorageInterface $node_storage) { parent::__construct($configuration, $plugin_id, $plugin_definition); diff --git a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTypeTest.php b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTypeTest.php index b1080a9de36b..94a579c8703b 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTypeTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTypeTest.php @@ -42,10 +42,15 @@ protected function setUp(): void { * @param string $help * The expected help text. * @param bool $display_submitted + * If submission information is displayed. * @param bool $new_revision + * If this is a new revision. * @param array $expected_available_menus + * The expected menus. * @param string $expected_parent + * The expected menu parents. * @param string|null $body_label + * (optional) The label for the body field. */ protected function assertEntity($id, $label, $description, $help, $display_submitted, $new_revision, $expected_available_menus, $expected_parent, $body_label = NULL) { /** @var \Drupal\node\NodeTypeInterface $entity */ diff --git a/core/modules/quickedit/tests/src/Kernel/QuickEditTestBase.php b/core/modules/quickedit/tests/src/Kernel/QuickEditTestBase.php index abcf71d7fcbc..b92af125ac4d 100644 --- a/core/modules/quickedit/tests/src/Kernel/QuickEditTestBase.php +++ b/core/modules/quickedit/tests/src/Kernel/QuickEditTestBase.php @@ -65,6 +65,7 @@ protected function setUp() { * @param string $label * The field's label (used everywhere: widget label, formatter label). * @param array $field_settings + * The field's settings. * @param string $widget_type * The widget type. * @param array $widget_settings diff --git a/core/modules/serialization/src/Encoder/XmlEncoder.php b/core/modules/serialization/src/Encoder/XmlEncoder.php index f80955b54c03..bdcb184d3e8c 100644 --- a/core/modules/serialization/src/Encoder/XmlEncoder.php +++ b/core/modules/serialization/src/Encoder/XmlEncoder.php @@ -55,6 +55,7 @@ public function getBaseEncoder() { * Sets the base encoder instance. * * @param \Symfony\Component\Serializer\Encoder\XmlEncoder $encoder + * The XML encoder. */ public function setBaseEncoder($encoder) { $this->baseEncoder = $encoder; diff --git a/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizerTrait.php b/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizerTrait.php index 1acfd70a7a44..6f4ec68d4470 100644 --- a/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizerTrait.php +++ b/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizerTrait.php @@ -20,6 +20,7 @@ protected function normalizeRootReferenceValue(&$values, EntityReferenceItem $fi * Determines if a field item references a taxonomy term. * * @param \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item + * The entity reference item. * * @return bool */ diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/ContentEntityNormalizerTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/ContentEntityNormalizerTest.php index 5f20476b74aa..888499c4fd8a 100644 --- a/core/modules/serialization/tests/src/Unit/Normalizer/ContentEntityNormalizerTest.php +++ b/core/modules/serialization/tests/src/Unit/Normalizer/ContentEntityNormalizerTest.php @@ -122,6 +122,7 @@ public function testNormalizeWithAccountContext() { * Creates a mock content entity. * * @param $definitions + * The properties the will be returned. * * @return \PHPUnit\Framework\MockObject\MockObject */ @@ -145,8 +146,11 @@ public function createMockForContentEntity($definitions) { * Creates a mock field list item. * * @param bool $access + * The value that access() will return. * @param bool $internal + * The value that isInternal() will return. * @param \Drupal\Core\Session\AccountInterface $user_context + * The user context used for the access check. * * @return \Drupal\Core\Field\FieldItemListInterface|\PHPUnit\Framework\MockObject\MockObject */ diff --git a/core/modules/system/src/Form/ModulesListForm.php b/core/modules/system/src/Form/ModulesListForm.php index ec50babddce8..d38749400b56 100644 --- a/core/modules/system/src/Form/ModulesListForm.php +++ b/core/modules/system/src/Form/ModulesListForm.php @@ -238,6 +238,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { * @param \Drupal\Core\Extension\Extension $module * The module for which to build the form row. * @param $distribution + * The distribution. * * @return array * The form row for the given module. diff --git a/core/modules/system/src/Form/SystemMenuOffCanvasForm.php b/core/modules/system/src/Form/SystemMenuOffCanvasForm.php index a561a5bd9a5a..8a500853ae62 100644 --- a/core/modules/system/src/Form/SystemMenuOffCanvasForm.php +++ b/core/modules/system/src/Form/SystemMenuOffCanvasForm.php @@ -61,8 +61,11 @@ class SystemMenuOffCanvasForm extends PluginFormBase implements ContainerInjecti * SystemMenuOffCanvasForm constructor. * * @param \Drupal\Core\Entity\EntityStorageInterface $menu_storage + * The menu storage handler. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager + * The entity type manager. * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation + * The string translation handler. * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory * The config factory. */ diff --git a/core/modules/system/src/PhpStorage/MockPhpStorage.php b/core/modules/system/src/PhpStorage/MockPhpStorage.php index cb3c42f8a42a..349191334c0f 100644 --- a/core/modules/system/src/PhpStorage/MockPhpStorage.php +++ b/core/modules/system/src/PhpStorage/MockPhpStorage.php @@ -18,6 +18,7 @@ class MockPhpStorage { * Constructs a MockPhpStorage object. * * @param array $configuration + * The storage configuration. */ public function __construct(array $configuration) { $this->configuration = $configuration; diff --git a/core/modules/system/src/SystemConfigSubscriber.php b/core/modules/system/src/SystemConfigSubscriber.php index 0ab0d15fc610..76830b70a6e2 100644 --- a/core/modules/system/src/SystemConfigSubscriber.php +++ b/core/modules/system/src/SystemConfigSubscriber.php @@ -36,6 +36,7 @@ public function __construct(RouteBuilderInterface $router_builder) { * Rebuilds the router when the default or admin theme is changed. * * @param \Drupal\Core\Config\ConfigCrudEvent $event + * The configuration event. */ public function onConfigSave(ConfigCrudEvent $event) { $saved_config = $event->getConfig(); diff --git a/core/modules/system/src/Tests/Routing/MockAliasManager.php b/core/modules/system/src/Tests/Routing/MockAliasManager.php index b52b0b44c768..5299281d44f9 100644 --- a/core/modules/system/src/Tests/Routing/MockAliasManager.php +++ b/core/modules/system/src/Tests/Routing/MockAliasManager.php @@ -71,10 +71,6 @@ public function getPathByAlias($alias, $langcode = NULL) { /** * {@inheritdoc} - * @param $path - * @param null $langcode - * - * @return */ public function getAliasByPath($path, $langcode = NULL) { if ($path[0] !== '/') { diff --git a/core/modules/system/tests/modules/early_rendering_controller_test/src/EarlyRenderingTestController.php b/core/modules/system/tests/modules/early_rendering_controller_test/src/EarlyRenderingTestController.php index a6aeb389e679..00f3ef9848ec 100644 --- a/core/modules/system/tests/modules/early_rendering_controller_test/src/EarlyRenderingTestController.php +++ b/core/modules/system/tests/modules/early_rendering_controller_test/src/EarlyRenderingTestController.php @@ -32,6 +32,7 @@ class EarlyRenderingTestController extends ControllerBase { * Constructs an EarlyRenderingTestController. * * @param \Drupal\Core\Render\RendererInterface $renderer + * The renderer. */ public function __construct(RendererInterface $renderer) { $this->renderer = $renderer; diff --git a/core/modules/system/tests/modules/form_test/src/Form/FormTestMachineNameValidationForm.php b/core/modules/system/tests/modules/form_test/src/Form/FormTestMachineNameValidationForm.php index 470683ce9b75..22cbb7cf456f 100644 --- a/core/modules/system/tests/modules/form_test/src/Form/FormTestMachineNameValidationForm.php +++ b/core/modules/system/tests/modules/form_test/src/Form/FormTestMachineNameValidationForm.php @@ -121,6 +121,7 @@ public function buildAjaxSnackConfigureForm(array $form, FormStateInterface $for * Loading stub for machine name. * * @param $machine_name + * The machine name. * * @return bool */ diff --git a/core/modules/system/tests/modules/theme_test/src/EventSubscriber/ThemeTestSubscriber.php b/core/modules/system/tests/modules/theme_test/src/EventSubscriber/ThemeTestSubscriber.php index 2cc0d369761a..337ab4c3b151 100644 --- a/core/modules/system/tests/modules/theme_test/src/EventSubscriber/ThemeTestSubscriber.php +++ b/core/modules/system/tests/modules/theme_test/src/EventSubscriber/ThemeTestSubscriber.php @@ -40,6 +40,7 @@ class ThemeTestSubscriber implements EventSubscriberInterface { * Constructs a new ThemeTestSubscriber. * * @param \Drupal\Core\Routing\RouteMatchInterface $current_route_match + * The route match handler. * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer. */ diff --git a/core/modules/system/tests/src/Functional/Cache/AssertPageCacheContextsAndTagsTrait.php b/core/modules/system/tests/src/Functional/Cache/AssertPageCacheContextsAndTagsTrait.php index dc375371a8e8..fefd3a462b5e 100644 --- a/core/modules/system/tests/src/Functional/Cache/AssertPageCacheContextsAndTagsTrait.php +++ b/core/modules/system/tests/src/Functional/Cache/AssertPageCacheContextsAndTagsTrait.php @@ -149,6 +149,7 @@ protected function assertCacheContexts(array $expected_contexts, $message = NULL * Asserts the max age header. * * @param int $max_age + * The maximum age of the cache. */ protected function assertCacheMaxAge($max_age) { $this->assertSession()->responseHeaderContains('Cache-Control', 'max-age:' . $max_age); diff --git a/core/modules/system/tests/src/Kernel/Common/UrlTest.php b/core/modules/system/tests/src/Kernel/Common/UrlTest.php index 447d056e3a01..76c5ffc45cd3 100644 --- a/core/modules/system/tests/src/Kernel/Common/UrlTest.php +++ b/core/modules/system/tests/src/Kernel/Common/UrlTest.php @@ -166,6 +166,7 @@ public function testLinkRenderArrayText() { * Checks for class existence in link. * * @param $attribute + * Attribute to be checked. * @param $link * URL to search. * @param $class diff --git a/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php b/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php index 8ba2ac6072b5..ff33361d4f45 100644 --- a/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php +++ b/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php @@ -59,6 +59,7 @@ public function testModuleList() { * @param array $expected_values * The expected values, sorted by weight and module name. * @param $condition + * The condition being tested, such as 'After adding a module'. */ protected function assertModuleList(array $expected_values, $condition) { $expected_values = array_values(array_unique($expected_values)); diff --git a/core/modules/user/src/UserStorageInterface.php b/core/modules/user/src/UserStorageInterface.php index 4cfd26b1a815..07121687af8f 100644 --- a/core/modules/user/src/UserStorageInterface.php +++ b/core/modules/user/src/UserStorageInterface.php @@ -14,6 +14,7 @@ interface UserStorageInterface extends ContentEntityStorageInterface { * Update the last login timestamp of the user. * * @param \Drupal\user\UserInterface $account + * The user account. */ public function updateLastLoginTimestamp(UserInterface $account); diff --git a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php index 31c0db9ed3d2..775f2806c1d3 100644 --- a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php +++ b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php @@ -498,6 +498,7 @@ public function assertValidPasswordReset($name) { * Helper function to make assertions about an invalid password reset. * * @param string $name + * The user name. */ public function assertNoValidPasswordReset($name) { // This message is the same as the valid reset for privacy reasons. diff --git a/core/modules/views/src/Analyzer.php b/core/modules/views/src/Analyzer.php index 360a08f1bbdc..42ae3ccb6300 100644 --- a/core/modules/views/src/Analyzer.php +++ b/core/modules/views/src/Analyzer.php @@ -107,6 +107,7 @@ public function formatMessages(array $messages) { * for items that are definitely broken are much more useful. * * @param string $message + * The message. * @param string $type * The type of message. This should be "ok", "warning" or "error". Other * values can be used but how they are treated by the output routine diff --git a/core/modules/views/src/Plugin/views/argument_validator/Entity.php b/core/modules/views/src/Plugin/views/argument_validator/Entity.php index d41de8482786..ba0bb219623d 100644 --- a/core/modules/views/src/Plugin/views/argument_validator/Entity.php +++ b/core/modules/views/src/Plugin/views/argument_validator/Entity.php @@ -209,6 +209,7 @@ public function validateArgument($argument) { * Validates an individual entity against class access settings. * * @param \Drupal\Core\Entity\EntityInterface $entity + * The entity. * * @return bool * True if validated. diff --git a/core/modules/views/src/Plugin/views/display/DisplayRouterInterface.php b/core/modules/views/src/Plugin/views/display/DisplayRouterInterface.php index e78198d84aaf..189d2424cb85 100644 --- a/core/modules/views/src/Plugin/views/display/DisplayRouterInterface.php +++ b/core/modules/views/src/Plugin/views/display/DisplayRouterInterface.php @@ -27,6 +27,7 @@ public function collectRoutes(RouteCollection $collection); * the method can specify to break the search. * * @param \Symfony\Component\Routing\RouteCollection $collection + * The route collection. * * @return array * Returns a list of "$view_id.$display_id" elements which got overridden. diff --git a/core/modules/views/src/Plugin/views/filter/Combine.php b/core/modules/views/src/Plugin/views/filter/Combine.php index 400be23aba1b..36dab819e57f 100644 --- a/core/modules/views/src/Plugin/views/filter/Combine.php +++ b/core/modules/views/src/Plugin/views/filter/Combine.php @@ -150,6 +150,7 @@ protected function opContains($expression) { * expressions. * * @param string $expression + * The expression to add to the query. */ protected function opContainsWord($expression) { $placeholder = $this->placeholder(); diff --git a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php index 4207ef9ea68a..3e5370beebde 100644 --- a/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php +++ b/core/modules/views/src/Plugin/views/filter/FilterPluginBase.php @@ -748,8 +748,9 @@ protected function buildGroupValidate($form, FormStateInterface $form_state) { * @param string $identifier * The identifier to check. * @param \Drupal\Core\Form\FormStateInterface $form_state + * (optional) The current state of the form. * @param array $form_group - * The form element to set any errors on. + * (optional) The form element to set any errors on. * * @return string */ diff --git a/core/modules/views/src/Tests/TestHelperPlugin.php b/core/modules/views/src/Tests/TestHelperPlugin.php index 86560630fcce..51d20bd68c50 100644 --- a/core/modules/views/src/Tests/TestHelperPlugin.php +++ b/core/modules/views/src/Tests/TestHelperPlugin.php @@ -31,6 +31,7 @@ public function testSetOptionDefaults(&$storage, $options, $level = 0) { * Allows to set the defined options. * * @param array $options + * The options to set. * * @return $this */ diff --git a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/join/JoinTest.php b/core/modules/views/tests/modules/views_test_data/src/Plugin/views/join/JoinTest.php index ed96decd57de..025a7748f35d 100644 --- a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/join/JoinTest.php +++ b/core/modules/views/tests/modules/views_test_data/src/Plugin/views/join/JoinTest.php @@ -30,6 +30,7 @@ public function getJoinValue() { * Sets the joinValue property. * * @param int $join_value + * The value of the join. */ public function setJoinValue($join_value) { $this->joinValue = $join_value; diff --git a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/query/QueryTest.php b/core/modules/views/tests/modules/views_test_data/src/Plugin/views/query/QueryTest.php index 2d475c97b127..cf1e5dc18d66 100644 --- a/core/modules/views/tests/modules/views_test_data/src/Plugin/views/query/QueryTest.php +++ b/core/modules/views/tests/modules/views_test_data/src/Plugin/views/query/QueryTest.php @@ -82,6 +82,7 @@ public function ensureTable($table, $relationship = NULL, JoinPluginBase $join = * Implements Drupal\views\Plugin\views\query\QueryPluginBase::build(). * * @param \Drupal\views\ViewExecutable $view + * The view executable. */ public function build(ViewExecutable $view) { $this->view = $view; diff --git a/core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php b/core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php index 46897992b1f4..241c65cec516 100644 --- a/core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php +++ b/core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php @@ -167,6 +167,7 @@ protected function assertCacheabilityMetadata($build) { * Ensures that the config dependencies are calculated the right way. * * @param \Drupal\views\Entity\View $storage + * The view storage. */ protected function assertConfigDependencies(View $storage) { $storage->calculateDependencies(); diff --git a/core/modules/views/tests/src/Kernel/ViewExecutableTest.php b/core/modules/views/tests/src/Kernel/ViewExecutableTest.php index 3b1eac8136ee..92e4b51d2590 100644 --- a/core/modules/views/tests/src/Kernel/ViewExecutableTest.php +++ b/core/modules/views/tests/src/Kernel/ViewExecutableTest.php @@ -361,6 +361,7 @@ public function testDestroy() { * Asserts that expected view properties have been unset by destroy(). * * @param \Drupal\views\ViewExecutable $view + * The view executable. */ protected function assertViewDestroy(ViewExecutable $view) { $reflection = new \ReflectionClass($view); diff --git a/core/modules/views_ui/src/ViewEditForm.php b/core/modules/views_ui/src/ViewEditForm.php index c5cd2381dc3c..c22ca7d82c6d 100644 --- a/core/modules/views_ui/src/ViewEditForm.php +++ b/core/modules/views_ui/src/ViewEditForm.php @@ -394,6 +394,7 @@ public function getDisplayTab($view) { * @param \Drupal\views_ui\ViewUI $view * The ViewUI entity. * @param array $display + * The display. * * @return array * A renderable page build array. diff --git a/core/modules/views_ui/tests/src/Functional/ArgumentValidatorTest.php b/core/modules/views_ui/tests/src/Functional/ArgumentValidatorTest.php index af0e5bf6bb50..f2f7a1e454f2 100644 --- a/core/modules/views_ui/tests/src/Functional/ArgumentValidatorTest.php +++ b/core/modules/views_ui/tests/src/Functional/ArgumentValidatorTest.php @@ -49,6 +49,7 @@ public function testSpecifyValidation() { * both with and without specify_validation turned on. * * @param bool $specify_validation + * The form validation. */ protected function saveArgumentHandlerWithValidationOptions($specify_validation) { $options = [ diff --git a/core/modules/views_ui/tests/src/FunctionalJavascript/ViewsListingTest.php b/core/modules/views_ui/tests/src/FunctionalJavascript/ViewsListingTest.php index 1a4cde7ed6e6..641d2fc4abd7 100644 --- a/core/modules/views_ui/tests/src/FunctionalJavascript/ViewsListingTest.php +++ b/core/modules/views_ui/tests/src/FunctionalJavascript/ViewsListingTest.php @@ -133,6 +133,7 @@ public function testFilterViewsListing() { * Removes any non-visible elements from the passed array. * * @param array $elements + * The elements. * * @return array */ diff --git a/core/modules/workflows/src/State.php b/core/modules/workflows/src/State.php index 57f830e92250..e4e65579bf23 100644 --- a/core/modules/workflows/src/State.php +++ b/core/modules/workflows/src/State.php @@ -103,6 +103,7 @@ public function getTransitions() { * Helper method to convert a State value object to a label. * * @param \Drupal\workflows\StateInterface $state + * The state. * * @return string * The label of the state. diff --git a/core/phpcs.xml.dist b/core/phpcs.xml.dist index 5db0cfbabd86..de9eefb69260 100644 --- a/core/phpcs.xml.dist +++ b/core/phpcs.xml.dist @@ -68,7 +68,6 @@ <rule ref="Drupal.Commenting.FunctionComment"> <exclude name="Drupal.Commenting.FunctionComment.InvalidNoReturn"/> <exclude name="Drupal.Commenting.FunctionComment.Missing"/> - <exclude name="Drupal.Commenting.FunctionComment.MissingParamComment"/> <exclude name="Drupal.Commenting.FunctionComment.MissingParamType"/> <exclude name="Drupal.Commenting.FunctionComment.MissingReturnComment"/> <exclude name="Drupal.Commenting.FunctionComment.MissingReturnType"/> diff --git a/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php b/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php index 53a5c2308c3c..04c5ff9bc007 100644 --- a/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php +++ b/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php @@ -256,7 +256,9 @@ public function testTemplateCreateProject($project, $package_dir, $docroot_dir) * Assert that the VERSION constant in Drupal.php is the expected value. * * @param string $expectedVersion + * The expected version. * @param string $dir + * The path to the site root. */ protected function assertDrupalVersion($expectedVersion, $dir) { $drupal_php_path = $dir . '/core/lib/Drupal.php'; diff --git a/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php b/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php index b66e3452931d..3b19ba554259 100644 --- a/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php +++ b/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php @@ -220,6 +220,7 @@ public function testScriptLoad() { * Helper function to get a simplified schema for a given table. * * @param string $table + * The table name. * * @return array * Array keyed by field name, with the values being the field type. diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php index 796f6ca1391e..9a50a78fe6aa 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php @@ -624,6 +624,8 @@ public function testRepeatedExecution() { * @param array $expected * An array of the expected results. * @param bool $sorted + * (optiOnal) Whether the array keys of the expected are sorted, defaults to + * FALSE. */ protected function assertResults($expected, $sorted = FALSE) { $found = TRUE; diff --git a/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php b/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php index d8b1c4163527..a0bd58876670 100644 --- a/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php +++ b/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php @@ -128,6 +128,7 @@ public function testExceptionResponseGeneratedForOriginalRequest() { * Sets the given path to use as the 404 page and triggers a 404. * * @param string $path + * The path to test. * * @return \Drupal\Core\Render\HtmlResponse * diff --git a/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php b/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php index 5918bafece67..a2c80f893497 100644 --- a/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php +++ b/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php @@ -231,6 +231,7 @@ public function assertDateTimestamp($date, $input, $initial, $transform) { * @param string $timezone * Timezone argument for DateTimePlus. * @param string $format + * PHP date() type format for parsing the input. * @param string $format_date * Format argument for DateTimePlus::format(). * @param string $expected diff --git a/core/tests/Drupal/Tests/Component/Plugin/StubPluginManagerBaseWithMapper.php b/core/tests/Drupal/Tests/Component/Plugin/StubPluginManagerBaseWithMapper.php index d3f3f94b0781..025c684ae745 100644 --- a/core/tests/Drupal/Tests/Component/Plugin/StubPluginManagerBaseWithMapper.php +++ b/core/tests/Drupal/Tests/Component/Plugin/StubPluginManagerBaseWithMapper.php @@ -14,6 +14,7 @@ final class StubPluginManagerBaseWithMapper extends PluginManagerBase { * Constructs a new instance. * * @param \Drupal\Component\Plugin\Mapper\MapperInterface $mapper + * The plugin mapper interface. */ public function __construct(MapperInterface $mapper) { $this->mapper = $mapper; diff --git a/core/tests/Drupal/Tests/Component/Utility/ReflectionTest.php b/core/tests/Drupal/Tests/Component/Utility/ReflectionTest.php index 7deb10328ed3..0a52a305f8e1 100644 --- a/core/tests/Drupal/Tests/Component/Utility/ReflectionTest.php +++ b/core/tests/Drupal/Tests/Component/Utility/ReflectionTest.php @@ -13,7 +13,9 @@ class ReflectionTest extends TestCase { /** * @param string|null $expected + * The expected value of the parameter. * @param \ReflectionParameter $parameter + * The reflection parameter. * * @covers ::getParameterClassName * @dataProvider providerGetParameterClassName diff --git a/core/tests/Drupal/Tests/Composer/Plugin/Scaffold/ScaffoldTestResult.php b/core/tests/Drupal/Tests/Composer/Plugin/Scaffold/ScaffoldTestResult.php index c68322a2d73d..a82bcf4fbe36 100644 --- a/core/tests/Drupal/Tests/Composer/Plugin/Scaffold/ScaffoldTestResult.php +++ b/core/tests/Drupal/Tests/Composer/Plugin/Scaffold/ScaffoldTestResult.php @@ -14,7 +14,9 @@ class ScaffoldTestResult { * Holds the location of the scaffold fixture and the stdout from the test. * * @param string $docroot + * The location of the scaffold fixture. * @param string $scaffoldOutput + * The stdout from the test. */ public function __construct($docroot, $scaffoldOutput) { $this->docroot = $docroot; diff --git a/core/tests/Drupal/Tests/Core/Cache/Context/IsFrontPathCacheContextTest.php b/core/tests/Drupal/Tests/Core/Cache/Context/IsFrontPathCacheContextTest.php index 5ccb18566f3b..84fe9b1b33d5 100644 --- a/core/tests/Drupal/Tests/Core/Cache/Context/IsFrontPathCacheContextTest.php +++ b/core/tests/Drupal/Tests/Core/Cache/Context/IsFrontPathCacheContextTest.php @@ -32,6 +32,7 @@ public function testGetContextNotFront() { * Creates a PathMatcherInterface prophecy. * * @param bool $is_front + * Whether the page is the front page. * * @return \Prophecy\Prophecy\ObjectProphecy */ diff --git a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php index 8f6c3aa359ea..8f237c60e785 100644 --- a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php +++ b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php @@ -247,6 +247,7 @@ public function testCreateWithExplicitLanguage() { * @covers ::doSave * * @param \Drupal\Core\Entity\EntityInterface $entity + * The entity to test. * * @return \Drupal\Core\Entity\EntityInterface * @@ -299,6 +300,7 @@ public function testSaveInsert(EntityInterface $entity) { * @covers ::doSave * * @param \Drupal\Core\Entity\EntityInterface $entity + * The entity to test. * * @return \Drupal\Core\Entity\EntityInterface * diff --git a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php b/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php index bfc7dee4ab2e..fa9a371d001b 100644 --- a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php +++ b/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php @@ -116,6 +116,7 @@ public function providerTestProcess() { * bag so the setParameter() call effects the parent container as well. * * @param $service + * The service definition. * * @return \Symfony\Component\DependencyInjection\ContainerBuilder */ @@ -135,6 +136,7 @@ protected function getSqliteContainer($service) { * bag so the setParameter() call effects the parent container as well. * * @param $service + * The service definition. * * @return \Symfony\Component\DependencyInjection\ContainerBuilder */ @@ -152,6 +154,7 @@ protected function getMysqlContainer($service) { * bag so the setParameter() call effects the parent container as well. * * @param $service + * The service definition. * * @return \Symfony\Component\DependencyInjection\ContainerBuilder */ diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php index e85c4391de3b..a05fe7cac13a 100644 --- a/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php @@ -483,6 +483,7 @@ public function testConstraintMethods() { * Asserts there on no public properties on the object instance. * * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type + * The entity type. */ protected function assertNoPublicProperties(EntityTypeInterface $entity_type) { $reflection = new \ReflectionObject($entity_type); diff --git a/core/tests/Drupal/Tests/Core/Entity/KeyValueStore/KeyValueEntityStorageTest.php b/core/tests/Drupal/Tests/Core/Entity/KeyValueStore/KeyValueEntityStorageTest.php index 3131893fcc19..62c9d27935a5 100644 --- a/core/tests/Drupal/Tests/Core/Entity/KeyValueStore/KeyValueEntityStorageTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/KeyValueStore/KeyValueEntityStorageTest.php @@ -222,6 +222,7 @@ public function testCreate() { * @covers ::doSave * * @param \Drupal\Core\Entity\EntityInterface $entity + * The entity. * * @return \Drupal\Core\Entity\EntityInterface * @@ -265,6 +266,7 @@ public function testSaveInsert(EntityInterface $entity) { * @covers ::doSave * * @param \Drupal\Core\Entity\EntityInterface $entity + * The entity. * * @return \Drupal\Core\Entity\EntityInterface * diff --git a/core/tests/Drupal/Tests/Core/Entity/Routing/DefaultHtmlRouteProviderTest.php b/core/tests/Drupal/Tests/Core/Entity/Routing/DefaultHtmlRouteProviderTest.php index e15d795bc396..3ec83076c03e 100644 --- a/core/tests/Drupal/Tests/Core/Entity/Routing/DefaultHtmlRouteProviderTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/Routing/DefaultHtmlRouteProviderTest.php @@ -335,6 +335,8 @@ public function testGetEntityTypeIdKeyTypeNotFieldable() { /** * @param \Prophecy\Prophecy\ObjectProphecy $base_entity_type + * (optional) The prophesize base entity type. + * * @return \Prophecy\Prophecy\ObjectProphecy */ protected function getEntityType(ObjectProphecy $base_entity_type = NULL) { diff --git a/core/tests/Drupal/Tests/Core/EventSubscriber/RssResponseRelativeUrlFilterTest.php b/core/tests/Drupal/Tests/Core/EventSubscriber/RssResponseRelativeUrlFilterTest.php index 89b609609732..92d85f05310b 100644 --- a/core/tests/Drupal/Tests/Core/EventSubscriber/RssResponseRelativeUrlFilterTest.php +++ b/core/tests/Drupal/Tests/Core/EventSubscriber/RssResponseRelativeUrlFilterTest.php @@ -108,7 +108,9 @@ public function providerTestOnResponse() { * @dataProvider providerTestOnResponse * * @param string $content + * The content for the request. * @param string $expected_content + * The expected content from the response. */ public function testOnResponse($content, $expected_content) { $event = new ResponseEvent( diff --git a/core/tests/Drupal/Tests/Core/Extension/ExtensionDiscoveryTest.php b/core/tests/Drupal/Tests/Core/Extension/ExtensionDiscoveryTest.php index f40c2ac48d08..7d6eaf054107 100644 --- a/core/tests/Drupal/Tests/Core/Extension/ExtensionDiscoveryTest.php +++ b/core/tests/Drupal/Tests/Core/Extension/ExtensionDiscoveryTest.php @@ -102,6 +102,7 @@ public function testExtensionDiscoveryCache() { * Adds example files to the filesystem structure. * * @param array $filesystem_structure + * An associative array where each key represents a directory. * * @return string[][] * Format: $[$type][$name] = $yml_file @@ -174,9 +175,11 @@ protected function populateFilesystemStructure(array &$filesystem_structure) { /** * @param array $filesystem_structure + * An associative array where each key represents a directory. * @param string[] $pieces * Fragments of the file path. * @param string $content + * The contents of the file. */ protected function addFileToFilesystemStructure(array &$filesystem_structure, array $pieces, $content) { $piece = array_shift($pieces); diff --git a/core/tests/Drupal/Tests/Core/Extension/ExtensionListTest.php b/core/tests/Drupal/Tests/Core/Extension/ExtensionListTest.php index 929ad62b1df7..a1ebab060ce1 100644 --- a/core/tests/Drupal/Tests/Core/Extension/ExtensionListTest.php +++ b/core/tests/Drupal/Tests/Core/Extension/ExtensionListTest.php @@ -333,6 +333,7 @@ class TestExtension extends ExtensionList { /** * @param \Drupal\Core\Extension\ExtensionDiscovery $extension_discovery + * The extension discovery class. */ public function setExtensionDiscovery(ExtensionDiscovery $extension_discovery) { $this->extensionDiscovery = $extension_discovery; diff --git a/core/tests/Drupal/Tests/Core/File/FileSystemTest.php b/core/tests/Drupal/Tests/Core/File/FileSystemTest.php index 1b5a49543ab3..465c60adb4f7 100644 --- a/core/tests/Drupal/Tests/Core/File/FileSystemTest.php +++ b/core/tests/Drupal/Tests/Core/File/FileSystemTest.php @@ -133,8 +133,11 @@ public function providerTestBasename() { * Asserts that the file permissions of a given URI matches. * * @param int $expected_mode + * The expected file mode. * @param string $uri + * The URI to test. * @param string $message + * An optional error message. */ protected function assertFilePermissions($expected_mode, $uri, $message = '') { // Mask out all but the last three octets. diff --git a/core/tests/Drupal/Tests/Core/Form/FormStateDecoratorBaseTest.php b/core/tests/Drupal/Tests/Core/Form/FormStateDecoratorBaseTest.php index 63dff16a8d42..f8d2db7677f1 100644 --- a/core/tests/Drupal/Tests/Core/Form/FormStateDecoratorBaseTest.php +++ b/core/tests/Drupal/Tests/Core/Form/FormStateDecoratorBaseTest.php @@ -71,8 +71,6 @@ public function testSetFormState() { * @covers ::setAlwaysProcess * * @dataProvider providerSingleBooleanArgument - * - * @param bool $always_process */ public function testSetAlwaysProcess($always_process) { $this->decoratedFormState->setAlwaysProcess($always_process) @@ -85,8 +83,6 @@ public function testSetAlwaysProcess($always_process) { * @covers ::getAlwaysProcess * * @dataProvider providerSingleBooleanArgument - * - * @param bool $always_process */ public function testGetAlwaysProcess($always_process) { $this->decoratedFormState->getAlwaysProcess() @@ -129,8 +125,6 @@ public function testGetButtons() { * @covers ::setCached * * @dataProvider providerSingleBooleanArgument - * - * @param bool $cache */ public function testSetCached($cache) { $this->decoratedFormState->setCached($cache) @@ -143,8 +137,6 @@ public function testSetCached($cache) { * @covers ::isCached * * @dataProvider providerSingleBooleanArgument - * - * @param bool $cache */ public function testIsCached($cache) { $this->decoratedFormState->isCached() @@ -157,8 +149,6 @@ public function testIsCached($cache) { * @covers ::setCached * * @dataProvider providerSingleBooleanArgument - * - * @param bool $cache */ public function testSetCachedWithLogicException($cache) { $this->decoratedFormState->setCached($cache) @@ -193,6 +183,8 @@ public function testSetExecuted() { * @dataProvider providerSingleBooleanArgument * * @param bool $executed + * Any valid value for \Drupal\Core\Form\FormStateInterface::isExecuted()'s + * return value. */ public function testIsExecuted($executed) { $this->decoratedFormState->isExecuted() @@ -240,8 +232,6 @@ public function testGetGroups() { * @covers ::setHasFileElement * * @dataProvider providerSingleBooleanArgument - * - * @param bool $has_file_element */ public function testSetHasFileElement($has_file_element) { $this->decoratedFormState->setHasFileElement($has_file_element) @@ -254,8 +244,6 @@ public function testSetHasFileElement($has_file_element) { * @covers ::hasFileElement * * @dataProvider providerSingleBooleanArgument - * - * @param bool $has_file_element */ public function testHasFileElement($has_file_element) { $this->decoratedFormState->hasFileElement() @@ -269,11 +257,6 @@ public function testHasFileElement($has_file_element) { * @covers ::setLimitValidationErrors * * @dataProvider providerLimitValidationErrors - * - * @param array[]|null $limit_validation_errors - * Any valid value for - * \Drupal\Core\Form\FormStateInterface::setLimitValidationErrors()'s - * $limit_validation_errors argument; */ public function testSetLimitValidationErrors($limit_validation_errors) { $this->decoratedFormState->setLimitValidationErrors($limit_validation_errors) @@ -286,11 +269,6 @@ public function testSetLimitValidationErrors($limit_validation_errors) { * @covers ::getLimitValidationErrors * * @dataProvider providerLimitValidationErrors - * - * @param array[]|null $limit_validation_errors - * Any valid value for - * \Drupal\Core\Form\FormStateInterface::getLimitValidationErrors()'s - * return value; */ public function testGetLimitValidationErrors($limit_validation_errors) { $this->decoratedFormState->getLimitValidationErrors() @@ -318,8 +296,6 @@ public function providerLimitValidationErrors() { * @covers ::setMethod * * @dataProvider providerSingleBooleanArgument - * - * @param bool $method */ public function testSetMethod($method) { $this->decoratedFormState->setMethod($method) @@ -332,10 +308,6 @@ public function testSetMethod($method) { * @covers ::isMethodType * * @dataProvider providerIsMethodType - * - * @param bool $expected_return_value - * @param string $method_type - * Either "GET" or "POST". */ public function testIsMethodType($expected_return_value, $method_type) { $this->decoratedFormState->isMethodType($method_type) @@ -361,8 +333,6 @@ public function providerIsMethodType() { * @covers ::setRequestMethod * * @dataProvider providerSetRequestMethod - * - * @param bool $method */ public function testSetRequestMethod($method) { $this->decoratedFormState->setRequestMethod($method) @@ -385,8 +355,6 @@ public function providerSetRequestMethod() { * @covers ::setValidationEnforced * * @dataProvider providerSingleBooleanArgument - * - * @param bool $must_validate */ public function testSetValidationEnforced($must_validate) { $this->decoratedFormState->setValidationEnforced($must_validate) @@ -399,8 +367,6 @@ public function testSetValidationEnforced($must_validate) { * @covers ::isValidationEnforced * * @dataProvider providerSingleBooleanArgument - * - * @param bool $must_validate */ public function testIsValidationEnforced($must_validate) { $this->decoratedFormState->isValidationEnforced() @@ -414,8 +380,6 @@ public function testIsValidationEnforced($must_validate) { * @covers ::disableRedirect * * @dataProvider providerSingleBooleanArgument - * - * @param bool $no_redirect */ public function testDisableRedirect($no_redirect) { $this->decoratedFormState->disableRedirect($no_redirect) @@ -428,8 +392,6 @@ public function testDisableRedirect($no_redirect) { * @covers ::isRedirectDisabled * * @dataProvider providerSingleBooleanArgument - * - * @param bool $no_redirect */ public function testIsRedirectDisabled($no_redirect) { $this->decoratedFormState->isRedirectDisabled() @@ -443,8 +405,6 @@ public function testIsRedirectDisabled($no_redirect) { * @covers ::setProcessInput * * @dataProvider providerSingleBooleanArgument - * - * @param bool $process_input */ public function testSetProcessInput($process_input) { $this->decoratedFormState->setProcessInput($process_input) @@ -457,8 +417,6 @@ public function testSetProcessInput($process_input) { * @covers ::isProcessingInput * * @dataProvider providerSingleBooleanArgument - * - * @param bool $process_input */ public function testIsProcessingInput($process_input) { $this->decoratedFormState->isProcessingInput() @@ -472,8 +430,6 @@ public function testIsProcessingInput($process_input) { * @covers ::setProgrammed * * @dataProvider providerSingleBooleanArgument - * - * @param bool $programmed */ public function testSetProgrammed($programmed) { $this->decoratedFormState->setProgrammed($programmed) @@ -486,8 +442,6 @@ public function testSetProgrammed($programmed) { * @covers ::isProgrammed * * @dataProvider providerSingleBooleanArgument - * - * @param bool $programmed */ public function testIsProgrammed($programmed) { $this->decoratedFormState->isProgrammed() @@ -501,8 +455,6 @@ public function testIsProgrammed($programmed) { * @covers ::setProgrammedBypassAccessCheck * * @dataProvider providerSingleBooleanArgument - * - * @param bool $programmed_bypass_access_check */ public function testSetProgrammedBypassAccessCheck($programmed_bypass_access_check) { $this->decoratedFormState->setProgrammedBypassAccessCheck($programmed_bypass_access_check) @@ -515,8 +467,6 @@ public function testSetProgrammedBypassAccessCheck($programmed_bypass_access_che * @covers ::isBypassingProgrammedAccessChecks * * @dataProvider providerSingleBooleanArgument - * - * @param bool $programmed_bypass_access_check */ public function testIsBypassingProgrammedAccessChecks($programmed_bypass_access_check) { $this->decoratedFormState->isBypassingProgrammedAccessChecks() @@ -646,6 +596,9 @@ public function testSetSubmitted() { * @dataProvider providerSingleBooleanArgument * * @param bool $submitted + * Any valid value for + * \Drupal\Core\Form\FormStateInterface::isSubmitted()'s return + * value. */ public function testIsSubmitted($submitted) { $this->decoratedFormState->isSubmitted() @@ -689,7 +642,13 @@ public function testGetTemporary() { * @dataProvider providerSetTemporaryValue * * @param string $key + * Any valid value for + * \Drupal\Core\Form\FormStateInterface::setTemporaryValue()'s $key + * argument. * @param mixed $value + * Any valid value for + * \Drupal\Core\Form\FormStateInterface::setTemporaryValue()'s $value + * argument. */ public function testSetTemporaryValue($key, $value) { $this->decoratedFormState->setTemporaryValue($key, $value) @@ -714,7 +673,13 @@ public function providerSetTemporaryValue() { * @dataProvider providerGetTemporaryValue * * @param string $key + * Any valid value for + * \Drupal\Core\Form\FormStateInterface::getTemporaryValue()'s $key + * argument. * @param mixed $value + * (optional) Any valid value for + * \Drupal\Core\Form\FormStateInterface::getTemporaryValue()'s return + * value. */ public function testGetTemporaryValue($key, $value = NULL) { // Use PHPUnit for mocking, because Prophecy cannot mock methods that return @@ -746,7 +711,13 @@ public function providerGetTemporaryValue() { * @dataProvider providerHasTemporaryValue * * @param bool $exists + * Any valid value for + * \Drupal\Core\Form\FormStateInterface::hasTemporaryValue()'s return + * value. * @param string $key + * Any valid value for + * \Drupal\Core\Form\FormStateInterface::hasTemporaryValue()'s $key + * argument. */ public function testHasTemporaryValue($exists, $key) { $this->decoratedFormState->hasTemporaryValue($key) @@ -835,6 +806,9 @@ public function testGetValidateHandlers() { * @dataProvider providerSingleBooleanArgument * * @param bool $complete + * Any valid value for + * \Drupal\Core\Form\FormStateInterface::setValidationComplete()'s $complete + * argument. */ public function testSetValidationComplete($complete) { $this->decoratedFormState->setValidationComplete($complete) @@ -849,6 +823,9 @@ public function testSetValidationComplete($complete) { * @dataProvider providerSingleBooleanArgument * * @param bool $complete + * Any valid value for + * \Drupal\Core\Form\FormStateInterface::isValidationComplete()'s return + * value. */ public function testIsValidationComplete($complete) { $this->decoratedFormState->isValidationComplete() @@ -864,9 +841,17 @@ public function testIsValidationComplete($complete) { * @dataProvider providerLoadInclude * * @param string|false $expected + * Any valid value for \Drupal\Core\Form\FormStateInterface::loadInclude()'s + * return value. * @param string $module + * Any valid value for \Drupal\Core\Form\FormStateInterface::loadInclude()'s + * $module argument. * @param string $type + * Any valid value for \Drupal\Core\Form\FormStateInterface::loadInclude()'s + * $type argument. * @param string|null $name + * Any valid value for \Drupal\Core\Form\FormStateInterface::loadInclude()'s + * $name argument. */ public function testLoadInclude($expected, $module, $type, $name) { $this->decoratedFormState->loadInclude($module, $type, $name) @@ -947,7 +932,11 @@ public function testGetCompleteForm() { * @dataProvider providerSet * * @param string $key + * Any valid value for \Drupal\Core\Form\FormStateInterface::set()'s $key + * argument. * @param mixed $value + * Any valid value for \Drupal\Core\Form\FormStateInterface::set()'s $value + * argument. */ public function testSet($key, $value) { $this->decoratedFormState->set($key, $value) @@ -972,7 +961,11 @@ public function providerSet() { * @dataProvider providerGet * * @param string $key + * Any valid value for \Drupal\Core\Form\FormStateInterface::get()'s $key + * argument. * @param mixed $value + * (optional) Any valid value for + * \Drupal\Core\Form\FormStateInterface::get()'s return value. */ public function testGet($key, $value = NULL) { @@ -1005,7 +998,11 @@ public function providerGet() { * @dataProvider providerHas * * @param bool $exists + * Any valid value for \Drupal\Core\Form\FormStateInterface::has()'s return + * value. * @param string $key + * Any valid value for \Drupal\Core\Form\FormStateInterface::has()'s $key + * argument. */ public function testHas($exists, $key) { $this->decoratedFormState->has($key) @@ -1285,6 +1282,8 @@ public function testSetRedirectUrl() { * @dataProvider providerGetRedirect * * @param bool $expected + * Any valid value for \Drupal\Core\Form\FormStateInterface::getRedirect()'s + * return value. */ public function testGetRedirect($expected) { $this->decoratedFormState->getRedirect() @@ -1380,6 +1379,8 @@ public function testGetErrors() { * @dataProvider providerSingleBooleanArgument * * @param bool $rebuild + * Any valid value for \Drupal\Core\Form\FormStateInterface::setRebuild()'s + * $rebuild argument. */ public function testSetRebuild($rebuild) { $this->decoratedFormState->setRebuild($rebuild) @@ -1392,8 +1393,6 @@ public function testSetRebuild($rebuild) { * @covers ::isRebuilding * * @dataProvider providerSingleBooleanArgument - * - * @param bool $rebuild */ public function testIsRebuilding($rebuild) { $this->decoratedFormState->isRebuilding() @@ -1407,8 +1406,6 @@ public function testIsRebuilding($rebuild) { * @covers ::setInvalidToken * * @dataProvider providerSingleBooleanArgument - * - * @param bool $expected */ public function testSetInvalidToken($expected) { $this->decoratedFormState->setInvalidToken($expected) @@ -1421,8 +1418,6 @@ public function testSetInvalidToken($expected) { * @covers ::hasInvalidToken * * @dataProvider providerSingleBooleanArgument - * - * @param bool $expected */ public function testHasInvalidToken($expected) { $this->decoratedFormState->hasInvalidToken() @@ -1436,9 +1431,6 @@ public function testHasInvalidToken($expected) { * @covers ::prepareCallback * * @dataProvider providerPrepareCallback - * - * @param string|callable $unprepared_callback - * @param callable $prepared_callback */ public function testPrepareCallback($unprepared_callback, callable $prepared_callback) { $this->decoratedFormState->prepareCallback(Argument::is($unprepared_callback)) diff --git a/core/tests/Drupal/Tests/Core/Form/SubformStateTest.php b/core/tests/Drupal/Tests/Core/Form/SubformStateTest.php index 7bb7d86d808d..6d5318402d92 100644 --- a/core/tests/Drupal/Tests/Core/Form/SubformStateTest.php +++ b/core/tests/Drupal/Tests/Core/Form/SubformStateTest.php @@ -61,7 +61,9 @@ class SubformStateTest extends UnitTestCase { * @dataProvider providerGetValues * * @param string[] $parents + * The parents. * @param string $expected + * The expected state values. */ public function testGetValues(array $parents, $expected) { $parent_form_state = new FormState(); @@ -98,7 +100,9 @@ public function providerGetValues() { * @dataProvider providerGetValuesBroken * * @param string[] $parents + * The parents. * @param string $expected + * The expected state values. */ public function testGetValuesBroken(array $parents, $expected) { $this->expectException(\UnexpectedValueException::class); diff --git a/core/tests/Drupal/Tests/Core/Http/ClientFactoryTest.php b/core/tests/Drupal/Tests/Core/Http/ClientFactoryTest.php index 3203ba27632c..4e98232d9426 100644 --- a/core/tests/Drupal/Tests/Core/Http/ClientFactoryTest.php +++ b/core/tests/Drupal/Tests/Core/Http/ClientFactoryTest.php @@ -34,8 +34,11 @@ protected function setUp(): void { * @dataProvider providerTestCreateFromOptions * * @param array $settings_config + * The settings configuration. * @param array $parameter_config + * The parameter configuration. * @param array $expected_config_keys + * The expected config keys. */ public function testCreateFromOptions($settings_config, $parameter_config, $expected_config_keys) { if ($settings_config) { diff --git a/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php b/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php index 6504157720b4..33881211195f 100644 --- a/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php +++ b/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php @@ -509,6 +509,7 @@ class ObjectDefinition extends PluginDefinition { * ObjectDefinition constructor. * * @param array $definition + * An associative array defining the plugin. */ public function __construct(array $definition) { // This class does not exist but plugin definitions must provide a class. diff --git a/core/tests/Drupal/Tests/Core/Plugin/Discovery/TestDerivativeDiscoveryWithObject.php b/core/tests/Drupal/Tests/Core/Plugin/Discovery/TestDerivativeDiscoveryWithObject.php index 1bb64cc5cc24..f05142de62de 100644 --- a/core/tests/Drupal/Tests/Core/Plugin/Discovery/TestDerivativeDiscoveryWithObject.php +++ b/core/tests/Drupal/Tests/Core/Plugin/Discovery/TestDerivativeDiscoveryWithObject.php @@ -12,7 +12,9 @@ class TestDerivativeDiscoveryWithObject implements DeriverInterface { /** * {@inheritdoc} * @param string $derivative_id + * The ID for the derivative. * @param array $base_plugin_definition + * An associative array defining the base plugin. * * @return array */ @@ -24,6 +26,7 @@ public function getDerivativeDefinition($derivative_id, $base_plugin_definition) /** * {@inheritdoc} * @param array $base_plugin_definition + * An associative array defining the base plugin. * * @return array */ diff --git a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php index d13b41614008..a6626959fa5e 100644 --- a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php +++ b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php @@ -548,6 +548,7 @@ protected function generatePlaceholderElement() { /** * @param false|array $cid_parts + * The cid parts. * @param string[] $bubbled_cache_contexts * Additional cache contexts that were bubbled when the placeholder was * rendered. diff --git a/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php b/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php index 7153be5a57e0..53aea79e045e 100644 --- a/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php +++ b/core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php @@ -189,6 +189,7 @@ public function testPropertiesValidateWithMultipleLevels() { * @param array $tree * An array of value, constraints and properties. * @param string $name + * The name to use for the object. * * @return \Drupal\Core\TypedData\TypedDataInterface|\PHPUnit\Framework\MockObject\MockObject */ diff --git a/core/tests/Drupal/Tests/Core/UrlTest.php b/core/tests/Drupal/Tests/Core/UrlTest.php index fcdabf14c953..45fbd0f33ede 100644 --- a/core/tests/Drupal/Tests/Core/UrlTest.php +++ b/core/tests/Drupal/Tests/Core/UrlTest.php @@ -491,6 +491,7 @@ public function testMergeOptions() { * Tests the access() method for routed URLs. * * @param bool $access + * The access value. * * @covers ::access * @covers ::accessManager @@ -522,6 +523,7 @@ public function testAccessUnrouted() { * Tests the renderAccess() method. * * @param bool $access + * The access value. * * @covers ::renderAccess * @dataProvider accessProvider @@ -832,7 +834,9 @@ public function testFromRouteUriWithMissingRouteName() { * Creates a mock access manager for the access tests. * * @param bool $access + * The access value. * @param \Drupal\Core\Session\AccountInterface|null $account + * The account to test. * * @return \Drupal\Core\Access\AccessManagerInterface|\PHPUnit\Framework\MockObject\MockObject */ @@ -863,6 +867,7 @@ class TestUrl extends Url { * Sets the access manager. * * @param \Drupal\Core\Access\AccessManagerInterface $access_manager + * The access manager. */ public function setAccessManager(AccessManagerInterface $access_manager) { $this->accessManager = $access_manager; diff --git a/core/tests/Drupal/Tests/DocumentElement.php b/core/tests/Drupal/Tests/DocumentElement.php index 27c4283a24d5..d7b1617f254f 100644 --- a/core/tests/Drupal/Tests/DocumentElement.php +++ b/core/tests/Drupal/Tests/DocumentElement.php @@ -1,5 +1,9 @@ <?php +// phpcs:ignoreFile Portions of this file are a direct copy of +// \Behat\Mink\Element\DocumentElement which uses a different code style than +// Drupal. + namespace Drupal\Tests; use Behat\Mink\Driver\BrowserKitDriver; diff --git a/core/tests/Drupal/Tests/UnitTestCase.php b/core/tests/Drupal/Tests/UnitTestCase.php index b06ae8dd2b06..fed556fe3d1e 100644 --- a/core/tests/Drupal/Tests/UnitTestCase.php +++ b/core/tests/Drupal/Tests/UnitTestCase.php @@ -101,8 +101,11 @@ protected function getRandomGenerator() { * Asserts if two arrays are equal by sorting them first. * * @param array $expected + * An expected results array. * @param array $actual + * The actual array value. * @param string $message + * An optional error message. * * @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use * ::assertEquals, ::assertEqualsCanonicalizing, or ::assertSame instead. -- GitLab From 179990225f38be74f46230b2ea031fe526d5f8fc Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Fri, 19 Nov 2021 09:59:33 +0000 Subject: [PATCH 47/69] Issue #3221082 by Wim Leers, lauriii, bnjmnm: Build Drupal's CKEditor 5 plugins as part of core's `yarn build` (cherry picked from commit 046c1863e35f29f803186cb29bd9f848945eecca) --- core/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/package.json b/core/package.json index 1d132c75e27e..39bc19f1b0c3 100644 --- a/core/package.json +++ b/core/package.json @@ -8,8 +8,8 @@ "node": ">= 12.0" }, "scripts": { - "build": "yarn build:css & yarn build:js & yarn build:jqueryui", - "watch": "yarn watch:css & yarn watch:js", + "build": "yarn build:css & yarn build:js & yarn build:jqueryui & yarn build:ckeditor5", + "watch": "yarn watch:css & yarn watch:js & yarn watch:ckeditor5", "build:css": "node ./scripts/css/postcss-build.js", "watch:css": "node ./scripts/css/postcss-watch.js", "build:js": "cross-env BABEL_ENV=legacy node ./scripts/js/babel-es6-build.js", @@ -29,8 +29,8 @@ "spellcheck:make-drupal-dict": "rm -f misc/cspell/dictionary.txt && touch misc/cspell/dictionary.txt && yarn -s spellcheck:core --unique --wordsOnly | tr '[:upper:]' '[:lower:]' | tr -d \\\\\\\\ | LC_ALL=C sort -u -o misc/cspell/dictionary.txt", "spellcheck:core": "cspell \"**/*\" \".*\" \"../composer/**/*\" \"../composer.json\"", "vendor-update": "node ./scripts/js/assets.js", - "ckeditor5:watch": "webpack --mode development --config ./modules/ckeditor5/webpack.config.js --watch", - "ckeditor5:build": "webpack --config ./modules/ckeditor5/webpack.config.js" + "watch:ckeditor5": "webpack --mode development --config ./modules/ckeditor5/webpack.config.js --watch", + "build:ckeditor5": "webpack --config ./modules/ckeditor5/webpack.config.js" }, "devDependencies": { "@babel/core": "^7.0.0", -- GitLab From 3f5645f319bcabab050cd6635cd9793c4bdf1f30 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Fri, 19 Nov 2021 17:33:09 +0000 Subject: [PATCH 48/69] Issue #3250335 by alexpott, beatrizrodrigues, paulocs, longwave: #date_date_callbacks is broken in Drupal 9.3 (cherry picked from commit 1a8a51aca00ea949c7dc3196adbfc565396c0440) --- .../Drupal/Core/Datetime/Element/Datetime.php | 4 +- .../Core/Datetime/DatetimeElementFormTest.php | 56 ++++++++++--------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/core/lib/Drupal/Core/Datetime/Element/Datetime.php b/core/lib/Drupal/Core/Datetime/Element/Datetime.php index 11c5f2a69f60..845fe259b45e 100644 --- a/core/lib/Drupal/Core/Datetime/Element/Datetime.php +++ b/core/lib/Drupal/Core/Datetime/Element/Datetime.php @@ -274,7 +274,7 @@ public static function processDatetime(&$element, FormStateInterface $form_state if (!empty($element['#date_date_callbacks'])) { foreach ($element['#date_date_callbacks'] as $callback) { $message = sprintf('DateTime element #date_date_callbacks callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in drupal:9.3.0 and will be removed in drupal:10.0.0. See https://www.drupal.org/node/3217966', Variable::callableToString($callback)); - StaticTrustedCallbackHelper::callback($callback, [$element, $form_state, $date], $message, TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION); + StaticTrustedCallbackHelper::callback($callback, [&$element, $form_state, $date], $message, TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION); } } } @@ -305,7 +305,7 @@ public static function processDatetime(&$element, FormStateInterface $form_state if (!empty($element['#date_time_callbacks'])) { foreach ($element['#date_time_callbacks'] as $callback) { $message = sprintf('DateTime element #date_time_callbacks callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in drupal:9.3.0 and will be removed in drupal:10.0.0. See https://www.drupal.org/node/3217966', Variable::callableToString($callback)); - StaticTrustedCallbackHelper::callback($callback, [$element, $form_state, $date], $message, TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION); + StaticTrustedCallbackHelper::callback($callback, [&$element, $form_state, $date], $message, TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION); } } } diff --git a/core/tests/Drupal/KernelTests/Core/Datetime/DatetimeElementFormTest.php b/core/tests/Drupal/KernelTests/Core/Datetime/DatetimeElementFormTest.php index 5fc87a4d9193..524c57570158 100644 --- a/core/tests/Drupal/KernelTests/Core/Datetime/DatetimeElementFormTest.php +++ b/core/tests/Drupal/KernelTests/Core/Datetime/DatetimeElementFormTest.php @@ -5,6 +5,7 @@ use Drupal\Component\Utility\Variable; use Drupal\Core\Datetime\DrupalDateTime; use Drupal\Core\Form\FormInterface; +use Drupal\Core\Form\FormState; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Security\TrustedCallbackInterface; use Drupal\KernelTests\KernelTestBase; @@ -16,20 +17,6 @@ */ class DatetimeElementFormTest extends KernelTestBase implements FormInterface, TrustedCallbackInterface { - /** - * Tracks whether a date-time date callback was executed. - * - * @var bool - */ - protected $dateCallbackExecuted = FALSE; - - /** - * Tracks whether a date-time time callback was executed. - * - * @var bool - */ - protected $timeCallbackExecuted = FALSE; - /** * Modules to enable. * @@ -54,29 +41,41 @@ public function getFormId() { /** * {@inheritdoc} */ - public function datetimeDateCallbackTrusted() { - $this->dateCallbackExecuted = TRUE; + public function datetimeDateCallbackTrusted(array &$element, FormStateInterface $form_state, DrupalDateTime $date = NULL) { + $element['datetimeDateCallbackExecuted'] = [ + '#value' => TRUE, + ]; + $form_state->set('datetimeDateCallbackExecuted', TRUE); } /** * {@inheritdoc} */ - public function datetimeDateCallback() { - $this->dateCallbackExecuted = TRUE; + public function datetimeDateCallback(array &$element, FormStateInterface $form_state, DrupalDateTime $date = NULL) { + $element['datetimeDateCallbackExecuted'] = [ + '#value' => TRUE, + ]; + $form_state->set('datetimeDateCallbackExecuted', TRUE); } /** * {@inheritdoc} */ - public function datetimeTimeCallbackTrusted() { - $this->timeCallbackExecuted = TRUE; + public function datetimeTimeCallbackTrusted(array &$element, FormStateInterface $form_state, DrupalDateTime $date = NULL) { + $element['timeCallbackExecuted'] = [ + '#value' => TRUE, + ]; + $form_state->set('timeCallbackExecuted', TRUE); } /** * {@inheritdoc} */ - public function datetimeTimeCallback() { - $this->timeCallbackExecuted = TRUE; + public function datetimeTimeCallback(array &$element, FormStateInterface $form_state, DrupalDateTime $date = NULL) { + $element['timeCallbackExecuted'] = [ + '#value' => TRUE, + ]; + $form_state->set('timeCallbackExecuted', TRUE); } /** @@ -133,11 +132,14 @@ public function validateForm(array &$form, FormStateInterface $form_state) {} * Tests that default handlers are added even if custom are specified. */ public function testDatetimeElement() { - $form = \Drupal::formBuilder()->getForm($this); + $form_state = new FormState(); + $form = \Drupal::formBuilder()->buildForm($this, $form_state); $this->render($form); - $this->assertTrue($this->dateCallbackExecuted); - $this->assertTrue($this->timeCallbackExecuted); + $this->assertTrue($form['datetime_element']['datetimeDateCallbackExecuted']['#value']); + $this->assertTrue($form['datetime_element']['timeCallbackExecuted']['#value']); + $this->assertTrue($form_state->get('datetimeDateCallbackExecuted')); + $this->assertTrue($form_state->get('timeCallbackExecuted')); } /** @@ -161,8 +163,8 @@ public function testDatetimeElementUntrustedCallbacks(string $date_callback = 'd } $this->render($form); - $this->assertTrue($this->dateCallbackExecuted); - $this->assertTrue($this->timeCallbackExecuted); + $this->assertTrue($form['datetime_element']['datetimeDateCallbackExecuted']['#value']); + $this->assertTrue($form['datetime_element']['timeCallbackExecuted']['#value']); } /** -- GitLab From 5cc55e82f1887db0c588f8aadf92c17e5441eaa8 Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Mon, 22 Nov 2021 09:01:31 +1000 Subject: [PATCH 49/69] Issue #3250349 by alexpott: \Drupal\Core\Datetime\Element\Datelist::processDatelist() does not use trusted callbacks - #date_date_callbacks only partially converted to TrustedCallbackInterface in 9.3.x (cherry picked from commit bb48626815ebe0b99c91c8db5c6c3e1dcfbac5c2) --- .../Drupal/Core/Datetime/Element/Datelist.php | 11 +- .../Core/Datetime/DatelistElementFormTest.php | 140 ++++++++++++++++++ 2 files changed, 148 insertions(+), 3 deletions(-) create mode 100644 core/tests/Drupal/KernelTests/Core/Datetime/DatelistElementFormTest.php diff --git a/core/lib/Drupal/Core/Datetime/Element/Datelist.php b/core/lib/Drupal/Core/Datetime/Element/Datelist.php index add7a73ae153..610c2d48dfe2 100644 --- a/core/lib/Drupal/Core/Datetime/Element/Datelist.php +++ b/core/lib/Drupal/Core/Datetime/Element/Datelist.php @@ -3,9 +3,13 @@ namespace Drupal\Core\Datetime\Element; use Drupal\Component\Utility\NestedArray; +use Drupal\Component\Utility\Variable; use Drupal\Core\Datetime\DateHelper; use Drupal\Core\Datetime\DrupalDateTime; use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Security\DoTrustedCallbackTrait; +use Drupal\Core\Security\StaticTrustedCallbackHelper; +use Drupal\Core\Security\TrustedCallbackInterface; /** * Provides a datelist element. @@ -14,6 +18,8 @@ */ class Datelist extends DateElementBase { + use DoTrustedCallbackTrait; + /** * {@inheritdoc} */ @@ -261,9 +267,8 @@ public static function processDatelist(&$element, FormStateInterface $form_state // Allows custom callbacks to alter the element. if (!empty($element['#date_date_callbacks'])) { foreach ($element['#date_date_callbacks'] as $callback) { - if (function_exists($callback)) { - $callback($element, $form_state, $date); - } + $message = sprintf('Datelist element #date_date_callbacks callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in drupal:9.3.0 and will be removed in drupal:10.0.0. See https://www.drupal.org/node/3217966', Variable::callableToString($callback)); + StaticTrustedCallbackHelper::callback($callback, [&$element, $form_state, $date], $message, TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION); } } diff --git a/core/tests/Drupal/KernelTests/Core/Datetime/DatelistElementFormTest.php b/core/tests/Drupal/KernelTests/Core/Datetime/DatelistElementFormTest.php new file mode 100644 index 000000000000..2b8eaa561f43 --- /dev/null +++ b/core/tests/Drupal/KernelTests/Core/Datetime/DatelistElementFormTest.php @@ -0,0 +1,140 @@ +<?php + +namespace Drupal\KernelTests\Core\Datetime; + +use Drupal\Component\Utility\Variable; +use Drupal\Core\Datetime\DrupalDateTime; +use Drupal\Core\Form\FormInterface; +use Drupal\Core\Form\FormState; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Security\TrustedCallbackInterface; +use Drupal\KernelTests\KernelTestBase; + +/** + * Tests Datelist functionality. + * + * @group Form + */ +class DatelistElementFormTest extends KernelTestBase implements FormInterface, TrustedCallbackInterface { + + /** + * Modules to enable. + * + * @var array + */ + protected static $modules = ['datetime', 'system']; + + /** + * Sets up the test. + */ + protected function setUp(): void { + parent::setUp(); + } + + /** + * {@inheritdoc} + */ + public function getFormId() { + return 'test_datelist_element'; + } + + /** + * {@inheritdoc} + */ + public function datelistDateCallbackTrusted(array &$element, FormStateInterface $form_state, DrupalDateTime $date = NULL) { + $element['datelistDateCallbackExecuted'] = [ + '#value' => TRUE, + ]; + $form_state->set('datelistDateCallbackExecuted', TRUE); + } + + /** + * {@inheritdoc} + */ + public function datelistDateCallback(array &$element, FormStateInterface $form_state, DrupalDateTime $date = NULL) { + $element['datelistDateCallbackExecuted'] = [ + '#value' => TRUE, + ]; + $form_state->set('datelistDateCallbackExecuted', TRUE); + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, FormStateInterface $form_state, string $date_callback = 'datelistDateCallbackTrusted') { + + $form['datelist_element'] = [ + '#title' => 'datelist test', + '#type' => 'datelist', + '#default_value' => new DrupalDateTime('2000-01-01 00:00:00'), + '#date_part_order' => [ + 'month', + 'day', + 'year', + 'hour', + 'minute', 'ampm', + ], + '#date_text_parts' => ['year'], + '#date_year_range' => '2010:2020', + '#date_increment' => 15, + '#date_date_callbacks' => [[$this, $date_callback]], + ]; + + $form['submit'] = [ + '#type' => 'submit', + '#value' => t('Submit'), + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) {} + + /** + * Form validation handler. + * + * @param array $form + * An associative array containing the structure of the form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The current state of the form. + */ + public function validateForm(array &$form, FormStateInterface $form_state) {} + + /** + * Tests that trusted callbacks are executed. + */ + public function testDatelistElement() { + $form_state = new FormState(); + $form = \Drupal::formBuilder()->buildForm($this, $form_state); + $this->render($form); + + $this->assertTrue($form['datelist_element']['datelistDateCallbackExecuted']['#value']); + $this->assertTrue($form_state->get('datelistDateCallbackExecuted')); + } + + /** + * Tests that deprecations are raised if untrusted callbacks are used. + * + * @group legacy + */ + public function testDatelistElementUntrustedCallbacks() : void { + $form = \Drupal::formBuilder()->getForm($this, 'datelistDateCallback'); + $this->expectDeprecation(sprintf('Datelist element #date_date_callbacks callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in drupal:9.3.0 and will be removed in drupal:10.0.0. See https://www.drupal.org/node/3217966', Variable::callableToString([$this, 'datelistDateCallback']))); + $this->render($form); + + $this->assertTrue($form['datelist_element']['datelistDateCallbackExecuted']['#value']); + } + + /** + * {@inheritdoc} + */ + public static function trustedCallbacks() { + return [ + 'datelistDateCallbackTrusted', + ]; + } + +} -- GitLab From afc5a87e79ce7c5ba790bb1b8684d4788d11b05c Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 22 Nov 2021 10:07:08 +0000 Subject: [PATCH 50/69] Issue #3231040 by alexpott, Anul, longwave, bbrala, catch: (revert) Remove DependencySerializationTrait from JSON API exceptions (cherry picked from commit 4aa86df958fd38f4c76f6b3d2dea2640d310b852) --- .../jsonapi/src/Exception/EntityAccessDeniedHttpException.php | 2 ++ .../jsonapi/src/Exception/UnprocessableHttpEntityException.php | 3 +++ 2 files changed, 5 insertions(+) diff --git a/core/modules/jsonapi/src/Exception/EntityAccessDeniedHttpException.php b/core/modules/jsonapi/src/Exception/EntityAccessDeniedHttpException.php index c227709900c1..74ab245e5114 100644 --- a/core/modules/jsonapi/src/Exception/EntityAccessDeniedHttpException.php +++ b/core/modules/jsonapi/src/Exception/EntityAccessDeniedHttpException.php @@ -5,6 +5,7 @@ use Drupal\Core\Access\AccessResultInterface; use Drupal\Core\Access\AccessResultReasonInterface; use Drupal\Core\Cache\CacheableMetadata; +use Drupal\Core\DependencyInjection\DependencySerializationTrait; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Http\Exception\CacheableAccessDeniedHttpException; use Drupal\jsonapi\JsonApiResource\ResourceIdentifier; @@ -22,6 +23,7 @@ */ class EntityAccessDeniedHttpException extends CacheableAccessDeniedHttpException implements ResourceIdentifierInterface { + use DependencySerializationTrait; use ResourceIdentifierTrait; /** diff --git a/core/modules/jsonapi/src/Exception/UnprocessableHttpEntityException.php b/core/modules/jsonapi/src/Exception/UnprocessableHttpEntityException.php index eae202c553f1..b9d5a6f58389 100644 --- a/core/modules/jsonapi/src/Exception/UnprocessableHttpEntityException.php +++ b/core/modules/jsonapi/src/Exception/UnprocessableHttpEntityException.php @@ -3,6 +3,7 @@ namespace Drupal\jsonapi\Exception; use Drupal\Core\Entity\EntityConstraintViolationListInterface; +use Drupal\Core\DependencyInjection\DependencySerializationTrait; use Symfony\Component\HttpKernel\Exception\HttpException; /** @@ -22,6 +23,8 @@ */ class UnprocessableHttpEntityException extends HttpException { + use DependencySerializationTrait; + /** * The constraint violations associated with this exception. * -- GitLab From 2eec3dc4cb417e97df1b196845ec0ae11ac12da0 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 22 Nov 2021 11:41:37 +0000 Subject: [PATCH 51/69] Issue #3171570 by kostyashupenko, mherchel: Remove Olivero's custom hard-coding of the image style within article content type's full view mode (cherry picked from commit afdff8f981dccbde545fb5b12d58f11386789c4d) --- core/themes/olivero/olivero.theme | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/core/themes/olivero/olivero.theme b/core/themes/olivero/olivero.theme index dafb21e4217b..2032f818892e 100644 --- a/core/themes/olivero/olivero.theme +++ b/core/themes/olivero/olivero.theme @@ -487,20 +487,6 @@ function olivero_preprocess_field__node__created(&$variables) { } } -/** - * Implements hook_preprocess_HOOK(). - */ -function olivero_preprocess_field__node__field_image__article(&$variables) { - if ($variables['element']['#view_mode'] == 'full') { - $image_style = \Drupal::entityTypeManager()->getStorage('image_style')->load('wide'); - if ($image_style) { - foreach (Element::children($variables['items']) as $key) { - $variables['items'][$key]['content']['#image_style'] = 'wide'; - } - } - } -} - /** * Implements hook_preprocess_HOOK() for setting classes. */ -- GitLab From 37a54000b8cbf6c6df37ada0ee1d6beacc8d4544 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 22 Nov 2021 15:25:32 +0000 Subject: [PATCH 52/69] Issue #3138078 by mondrake, larowlan, longwave, xjm: [D9.3 beta - w/c Nov 8, 2021] Add a 'void' return typehint to custom assert* methods (cherry picked from commit 92836c436bf7d866c15bdcada064ab201d4b2d07) --- .../Kernel/Migrate/d6/MigrateActionsTest.php | 4 +- .../Kernel/Migrate/d7/MigrateActionsTest.php | 4 +- .../tests/src/Functional/BigPipeTest.php | 38 ++++++++++---- .../tests/src/Kernel/BlockViewBuilderTest.php | 4 +- .../Kernel/Migrate/d6/MigrateBlockTest.php | 6 ++- .../Kernel/Migrate/d7/MigrateBlockTest.php | 6 ++- .../Views/BlockContentFieldFilterTest.php | 4 +- .../Views/BlockContentIntegrationTest.php | 4 +- .../MigrateBlockContentEntityDisplayTest.php | 4 +- ...grateBlockContentEntityFormDisplayTest.php | 4 +- .../BookJavascriptTest.php | 4 +- .../tests/src/Kernel/BookMultilingualTest.php | 8 ++- .../tests/src/Kernel/CKEditorTest.php | 4 +- .../src/FunctionalJavascript/MediaTest.php | 6 ++- .../tests/src/Functional/CommentPagerTest.php | 4 +- .../src/Functional/CommentThreadingTest.php | 8 ++- .../Views/CommentFieldFilterTest.php | 4 +- .../src/Kernel/CommentValidationTest.php | 4 +- .../d6/MigrateCommentEntityDisplayTest.php | 4 +- ...ateCommentEntityFormDisplaySubjectTest.php | 8 ++- .../MigrateCommentEntityFormDisplayTest.php | 4 +- .../d6/MigrateCommentFieldInstanceTest.php | 10 ++-- .../Migrate/d6/MigrateCommentFieldTest.php | 4 +- .../Migrate/d6/MigrateCommentTypeTest.php | 4 +- .../d7/MigrateCommentEntityDisplayTest.php | 4 +- ...ateCommentEntityFormDisplaySubjectTest.php | 8 ++- .../MigrateCommentEntityFormDisplayTest.php | 4 +- .../d7/MigrateCommentFieldInstanceTest.php | 10 ++-- .../Migrate/d7/MigrateCommentFieldTest.php | 4 +- .../Migrate/d7/MigrateCommentTypeTest.php | 4 +- .../Functional/ConfigTranslationUiTest.php | 5 +- .../src/Functional/Views/ContactLinkTest.php | 4 +- .../Migrate/MigrateContactCategoryTest.php | 4 +- .../src/Functional/ModerationLocaleTest.php | 16 ++++-- .../ViewsModerationStateFilterTest.php | 8 ++- ...ontentModerationStateStorageSchemaTest.php | 4 +- .../src/Kernel/ContentModerationStateTest.php | 4 +- .../src/Kernel/DefaultRevisionStateTest.php | 4 +- .../ModerationStateFieldItemListTest.php | 4 +- .../Kernel/ViewsModerationStateFilterTest.php | 8 ++- .../Kernel/ViewsModerationStateSortTest.php | 4 +- .../WorkspacesContentModerationStateTest.php | 2 +- ...slationOutdatedRevisionTranslationTest.php | 4 +- .../ContentTranslationSettingsTest.php | 6 ++- .../ContentTranslationWorkflowsTest.php | 6 ++- ...ontentTranslationFieldSyncRevisionTest.php | 8 ++- .../d6/MigrateTaxonomyTermTranslationTest.php | 24 +++++---- .../ContextualDynamicContextTest.php | 8 ++- .../src/FunctionalJavascript/EditModeTest.php | 8 ++- .../EntityTest/EntityTestDateonlyTest.php | 2 +- .../EntityTest/EntityTestDatetimeTest.php | 2 +- .../EntityTest/EntityTestDateRangeTest.php | 2 +- .../src/Functional/DbLogResourceTest.php | 2 +- .../dblog/tests/src/Functional/DbLogTest.php | 4 +- .../Functional/EditorUploadImageScaleTest.php | 8 +-- .../EntityReferenceAdminTest.php | 4 +- ...erenceFieldTranslatedReferenceViewTest.php | 8 ++- .../EntityReferenceIntegrationTest.php | 4 +- .../src/Functional/Number/NumberFieldTest.php | 5 +- .../EntityReferenceAdminTest.php | 4 +- .../EntityReference/Views/SelectionTest.php | 4 +- .../d6/MigrateFieldFormatterSettingsTest.php | 4 +- .../d7/MigrateFieldFormatterSettingsTest.php | 12 +++-- .../Migrate/d7/MigrateFieldInstanceTest.php | 16 ++++-- ...MigrateFieldInstanceWidgetSettingsTest.php | 10 ++-- .../Kernel/Migrate/d7/MigrateFieldTest.php | 4 +- .../Migrate/d7/MigrateViewModesTest.php | 4 +- ...dStorageConfigAccessControlHandlerTest.php | 4 +- .../FunctionalJavascript/FieldLayoutTest.php | 4 +- .../Kernel/FieldLayoutEntityDisplayTest.php | 6 ++- .../tests/src/Functional/FieldUIRouteTest.php | 4 +- .../src/Functional/ManageDisplayTest.php | 42 ++++++++-------- .../Functional/ManageFieldsFunctionalTest.php | 12 +++-- .../ManageDisplayTest.php | 7 ++- .../tests/src/Kernel/EntityDisplayTest.php | 20 +++----- .../src/Functional/FileFieldPathTest.php | 4 +- .../src/Kernel/Migrate/d6/MigrateFileTest.php | 16 +++--- .../tests/src/Functional/FilterFormTest.php | 24 ++++----- .../filter/tests/src/Kernel/FilterAPITest.php | 6 ++- .../tests/src/Kernel/FilterKernelTest.php | 15 ++++-- .../Migrate/d7/MigrateFilterFormatTest.php | 4 +- .../src/Functional/HelpTopicSearchTest.php | 4 +- .../tests/src/Kernel/ImageFormatterTest.php | 4 +- .../Migrate/d6/MigrateImageCacheTest.php | 17 ++++--- .../Migrate/d7/MigrateImageStylesTest.php | 2 +- .../tests/src/Functional/FileUploadTest.php | 4 +- .../jsonapi/tests/src/Functional/NodeTest.php | 8 ++- .../src/Functional/RestJsonApiUnsupported.php | 2 +- .../jsonapi/tests/src/Functional/UserTest.php | 4 +- ...eContentTaxonomyVocabularySettingsTest.php | 4 +- .../Kernel/Migrate/d6/MigrateLanguageTest.php | 4 +- ...eContentTaxonomyVocabularySettingsTest.php | 4 +- .../Functional/LayoutBuilderAccessTest.php | 2 +- .../src/Functional/LayoutBuilderTest.php | 4 +- .../src/Functional/LayoutSectionTest.php | 4 +- .../FunctionalJavascript/BlockFilterTest.php | 4 +- .../BlockFormMessagesTest.php | 4 +- .../ContentPreviewToggleTest.php | 8 ++- .../ContextualLinksTest.php | 8 ++- .../InlineBlockPrivateFilesTest.php | 19 ++++--- .../FunctionalJavascript/InlineBlockTest.php | 8 ++- .../LayoutBuilderDisableInteractionsTest.php | 16 ++++-- .../LayoutBuilderTest.php | 4 +- .../LayoutBuilderUiTest.php | 8 +-- .../MoveBlockFormTest.php | 8 ++- .../TestMultiWidthLayoutsTest.php | 4 +- .../tests/src/Unit/SectionTest.php | 4 +- .../tests/src/Functional/LinkFieldTest.php | 8 ++- .../tests/src/Functional/LinkFieldUITest.php | 8 ++- .../LocaleConfigTranslationTest.php | 4 +- .../src/Kernel/LocaleConfigSubscriberTest.php | 22 +++++--- .../src/Functional/MediaRevisionTest.php | 4 +- .../src/Functional/MediaUiFunctionalTest.php | 16 ++++-- .../CKEditorIntegrationTest.php | 14 ++++-- .../MediaSourceImageTest.php | 4 +- .../Kernel/MediaAccessControlHandlerTest.php | 4 +- .../MediaLibraryDisplayModeTest.php | 8 ++- .../ContentModerationTest.php | 8 ++- .../src/Kernel/MediaLibraryAccessTest.php | 2 +- .../src/Kernel/MediaLibraryWidgetTest.php | 6 ++- .../tests/src/Kernel/MenuLinksTest.php | 4 +- .../Kernel/Migrate/d6/MigrateMenuLinkTest.php | 8 ++- .../tests/src/Kernel/HighWaterTest.php | 8 ++- .../Kernel/MigrateEntityContentBaseTest.php | 4 +- .../tests/src/Kernel/TrackChangesTest.php | 8 ++- .../tests/src/Unit/process/FileCopyTest.php | 6 ++- .../migrate/DestinationCategoryTest.php | 4 +- .../migrate/source/ContentEntityTest.php | 4 +- .../MigrateUpgradeFormStepsTest.php | 4 +- .../tests/src/Functional/d6/Upgrade6Test.php | 4 +- .../tests/src/Functional/d7/Upgrade7Test.php | 4 +- .../Functional/NodeAccessBaseTableTest.php | 6 ++- .../NodeAccessGrantsCacheContextTest.php | 4 +- .../NodeDisplayConfigurableTest.php | 4 +- .../tests/src/Functional/NodeTestBase.php | 6 ++- .../src/Functional/Views/FrontPageTest.php | 4 +- .../Functional/Views/NodeFieldFilterTest.php | 4 +- .../Functional/Views/NodeIntegrationTest.php | 4 +- .../src/Functional/Views/NodeLanguageTest.php | 4 +- .../Migrate/d6/MigrateNodeCompleteTest.php | 4 +- .../Migrate/d6/MigrateNodeRevisionTest.php | 50 ++++++++++--------- .../Migrate/d7/MigrateNodeCompleteTest.php | 4 +- .../Migrate/d7/MigrateNodeRevisionTest.php | 20 ++++---- .../src/Kernel/Migrate/d7/MigrateNodeTest.php | 10 ++-- .../Migrate/d7/MigrateNodeTitleLabelTest.php | 4 +- .../Kernel/Migrate/d7/MigrateNodeTypeTest.php | 8 +-- .../tests/src/Kernel/NodeAccessTestBase.php | 6 ++- .../src/Functional/OptionsFieldUITest.php | 10 ++-- .../Functional/PathContentModerationTest.php | 4 +- .../Kernel/Migrate/d6/MigrateUrlAliasTest.php | 4 +- .../src/Functional/UrlAlterFunctionalTest.php | 16 +++--- .../QuickEditEndPointAccessTest.php | 4 +- .../LayoutBuilderQuickEditTest.php | 6 +-- .../src/Functional/StandardProfileTest.php | 12 +++-- .../Migrate/d7/MigrateRdfMappingTest.php | 4 +- .../ResponsiveImageFieldDisplayTest.php | 2 +- .../src/Functional/SearchAdminThemeTest.php | 4 +- .../src/Functional/SearchCommentTest.php | 4 +- .../SearchConfigSettingsFormTest.php | 10 ++-- .../SearchMultilingualEntityTest.php | 8 ++- .../Migrate/d7/MigrateSearchPageTest.php | 4 +- ...EntityReferenceFieldItemNormalizerTest.php | 4 +- .../OverriddenConfigurationTest.php | 4 +- .../src/Functional/ShortcutLinksTest.php | 11 +--- .../Migrate/d7/MigrateShortcutSetTest.php | 4 +- .../Kernel/Migrate/d7/MigrateShortcutTest.php | 14 +++--- .../Migrate/d6/MigrateNodeCounterTest.php | 4 +- .../Migrate/d7/MigrateNodeCounterTest.php | 4 +- .../src/Functional/Ajax/FrameworkTest.php | 8 +-- .../src/Functional/Batch/ProcessingTest.php | 11 ++-- .../Cache/SessionExistsCacheContextTest.php | 4 +- .../Common/NoJavaScriptAnonymousTest.php | 4 +- .../EntityReferenceSelectionAccessTest.php | 4 +- .../src/Functional/Form/ConfirmFormTest.php | 8 +-- .../tests/src/Functional/Form/FormTest.php | 4 +- .../src/Functional/Mail/HtmlToTextTest.php | 12 +++-- .../src/Functional/Menu/LocalActionTest.php | 4 +- .../src/Functional/Menu/LocalTasksTest.php | 15 +++--- .../Module/InstallUninstallTest.php | 24 ++++++--- .../tests/src/Functional/Pager/PagerTest.php | 12 +++-- .../Render/HtmlResponseAttachmentsTest.php | 12 +++-- .../SecurityAdvisoryTest.php | 8 +++ .../Session/SessionAuthenticationTest.php | 4 +- .../Functional/Session/SessionHttpsTest.php | 8 +-- .../src/Functional/Session/SessionTest.php | 8 ++- .../Functional/System/ErrorHandlerTest.php | 12 +++-- .../src/Functional/System/HtaccessTest.php | 4 +- .../tests/src/Functional/System/ThemeTest.php | 2 +- .../src/Functional/Theme/ThemeUiTest.php | 4 +- .../Theme/TwigRegistryLoaderTest.php | 4 +- .../src/Functional/Theme/TwigTransTest.php | 4 +- .../UpdateSystem/UpdateScriptTest.php | 12 +++-- .../FunctionalJavascript/OffCanvasTest.php | 4 +- .../Kernel/Common/FormElementsRenderTest.php | 4 +- .../src/Kernel/Common/PageRenderTest.php | 4 +- .../Kernel/Entity/ConfigEntityImportTest.php | 4 +- .../Kernel/Extension/ModuleHandlerTest.php | 6 ++- .../src/Kernel/Migrate/d7/MigrateMenuTest.php | 6 ++- .../SecurityAdvisoriesFetcherTest.php | 2 + .../src/Kernel/Theme/TwigNamespaceTest.php | 4 +- .../tests/src/Functional/TermAccessTest.php | 6 ++- .../tests/src/Functional/TermParentsTest.php | 8 ++- .../Views/RelationshipNodeTermDataTest.php | 4 +- .../Views/TaxonomyFieldFilterTest.php | 4 +- .../Views/TaxonomyTermFilterDepthTest.php | 4 +- .../MigrateTermLocalizedTranslationTest.php | 18 ++++--- .../Migrate/d7/MigrateTaxonomyTermTest.php | 14 +++--- .../d7/MigrateTaxonomyTermTranslationTest.php | 14 ++++-- .../d7/MigrateTaxonomyVocabularyTest.php | 8 +-- .../MigrateTermLocalizedTranslationTest.php | 16 +++--- .../src/Kernel/TaxonomyQueryAlterTest.php | 4 +- .../Views/TaxonomyTermArgumentDepthTest.php | 2 + .../Views/TaxonomyTermFilterDepthTest.php | 2 + .../TextareaWithSummaryTest.php | 4 +- .../text/tests/src/Kernel/TextSummaryTest.php | 4 +- .../src/Functional/ToolbarAdminMenuTest.php | 4 +- .../Functional/ToolbarCacheContextsTest.php | 4 +- .../FunctionalJavascript/TourLegacyTest.php | 4 +- .../tests/src/Functional/TrackerTest.php | 4 +- .../src/Functional/UpdateContribTest.php | 4 +- .../src/Functional/RestRegisterUserTest.php | 2 +- .../src/Functional/UserLoginHttpTest.php | 12 +++-- .../tests/src/Functional/UserLoginTest.php | 9 ++-- .../src/Functional/UserPasswordResetTest.php | 16 ++++-- .../src/Functional/UserRegistrationTest.php | 4 +- .../d6/MigrateUserPictureD6FileTest.php | 20 ++++---- .../Kernel/Migrate/d6/MigrateUserRoleTest.php | 8 ++- .../Kernel/Migrate/d7/MigrateUserRoleTest.php | 6 ++- .../src/Kernel/Migrate/d7/MigrateUserTest.php | 14 +++--- .../src/Kernel/UserAccountFormFieldsTest.php | 4 +- .../tests/src/Kernel/UserValidationTest.php | 8 ++- .../tests/src/Unit/PermissionHandlerTest.php | 4 +- .../src/Unit/UserAccessControlHandlerTest.php | 4 +- .../Entity/FieldEntityTranslationTest.php | 4 +- .../FieldRenderedEntityTranslationTest.php | 4 +- .../src/Functional/Handler/FieldWebTest.php | 12 ++--- .../Functional/Plugin/DisplayPageWebTest.php | 4 +- .../src/Functional/Plugin/ExposedFormTest.php | 8 ++- .../src/Functional/SearchIntegrationTest.php | 6 +-- .../PaginationAJAXTest.php | 4 +- .../CacheableMetadataCalculationTest.php | 4 +- .../src/Kernel/Entity/EntityViewsDataTest.php | 44 +++++++++++----- .../Entity/LatestRevisionFilterTest.php | 4 +- .../Kernel/Entity/RowEntityRenderersTest.php | 8 +-- ...sEntitySchemaSubscriberIntegrationTest.php | 4 +- .../Kernel/Handler/AreaDisplayLinkTest.php | 16 ++++-- .../src/Kernel/Handler/FieldDateTest.php | 15 ++++-- .../src/Kernel/Handler/FieldKernelTest.php | 18 +++---- .../Handler/FieldRenderedEntityTest.php | 8 ++- .../views/tests/src/Kernel/ModuleTest.php | 5 +- .../tests/src/Kernel/Plugin/StyleGridTest.php | 4 +- .../tests/src/Kernel/PluginInstanceTest.php | 4 +- .../src/Kernel/RenderCacheIntegrationTest.php | 8 ++- .../tests/src/Kernel/ViewExecutableTest.php | 4 +- .../Controller/ViewAjaxControllerTest.php | 4 +- .../src/Functional/ExposedFormUITest.php | 10 ++-- .../tests/src/Functional/HandlerTest.php | 4 +- .../src/Functional/RearrangeFieldsTest.php | 8 +-- .../src/FunctionalJavascript/PreviewTest.php | 8 ++- .../src/Functional/PathWorkspacesTest.php | 8 ++- .../src/Kernel/WorkspaceIntegrationTest.php | 16 ++++-- .../UninstallDefaultContentTest.php | 6 +-- .../src/Functional/DemoUmamiProfileTest.php | 2 +- .../StandardJavascriptTest.php | 2 +- .../Template/ComposerProjectTemplatesTest.php | 4 +- .../Ajax/AjaxTest.php | 8 ++- .../Ajax/CommandsTest.php | 4 +- .../Ajax/MessageCommandTest.php | 8 ++- .../Core/JsMessageTest.php | 4 +- .../TableDrag/TableDragTest.php | 16 ++++-- .../Bootstrap/UncaughtExceptionTest.php | 8 ++- .../KernelTests/Config/DefaultConfigTest.php | 4 +- .../KernelTests/Core/Ajax/CommandsTest.php | 10 ++-- .../Asset/LibraryDiscoveryIntegrationTest.php | 21 ++++---- .../Core/Config/ConfigDiffTest.php | 4 +- .../Core/Database/ConnectionUnitTest.php | 8 ++- .../KernelTests/Core/Database/SchemaTest.php | 20 +++++--- .../Core/Database/TransactionTest.php | 16 +++--- .../Core/Datetime/Element/TimezoneTest.php | 8 ++- .../Entity/BundleConstraintValidatorTest.php | 4 +- .../Core/Entity/ConfigEntityQueryTest.php | 4 +- .../Entity/EntityAccessControlHandlerTest.php | 4 +- .../KernelTests/Core/Entity/EntityApiTest.php | 4 +- .../Core/Entity/EntityCrudHookTest.php | 6 ++- .../Entity/EntityFieldDefaultValueTest.php | 4 +- .../Core/Entity/EntityQueryAggregateTest.php | 10 ++-- .../Entity/EntityQueryRelationshipTest.php | 4 +- .../Core/Entity/EntityQueryTest.php | 16 ++++-- .../Core/Entity/EntityReferenceFieldTest.php | 12 +++-- .../Core/Entity/EntityRepositoryTest.php | 4 +- .../Core/Entity/EntityUUIDTest.php | 4 +- .../Entity/FieldTranslationSqlStorageTest.php | 4 +- .../FieldableEntityDefinitionUpdateTest.php | 32 +++++++++--- .../RevisionableContentEntityBaseTest.php | 4 +- .../KernelTests/Core/Field/FieldItemTest.php | 6 ++- .../KernelTests/Core/File/HtaccessTest.php | 4 +- .../Core/Menu/MenuTreeStorageTest.php | 4 +- .../Render/Element/RenderElementTypesTest.php | 4 +- .../Component/Datetime/DateTimePlusTest.php | 4 +- .../Tests/Component/DrupalComponentTest.php | 6 ++- .../Tests/Component/Graph/GraphTest.php | 32 +++++++----- .../Tests/Component/Utility/SortArrayTest.php | 4 +- .../Tests/Component/Utility/XssTest.php | 12 ++--- .../Scaffold/Functional/ScaffoldTest.php | 16 ++++-- .../Tests/Core/Access/AccessResultTest.php | 5 +- .../Drupal/Tests/Core/Common/TagsTest.php | 4 +- .../Drupal/Tests/Core/Config/ConfigTest.php | 12 +++-- .../Controller/ControllerResolverTest.php | 6 ++- ...ityFormDisplayAccessControlHandlerTest.php | 4 +- .../Tests/Core/Entity/EntityTypeTest.php | 4 +- .../Tests/Core/Entity/EntityUrlTest.php | 4 +- .../Drupal/Tests/Core/File/FileSystemTest.php | 4 +- .../FormAjaxSubscriberTest.php | 35 +++++++------ ...EntityContextDefinitionIsSatisfiedTest.php | 4 +- .../Core/Render/RendererPlaceholdersTest.php | 4 +- .../Drupal/Tests/Core/Render/RendererTest.php | 6 ++- .../Tests/Core/Routing/UrlGeneratorTest.php | 8 +-- .../Core/Security/RequestSanitizerTest.php | 4 +- .../Tests/Core/Template/AttributeTest.php | 16 ++++-- .../Tests/Core/Utility/LinkGeneratorTest.php | 9 ++-- 320 files changed, 1615 insertions(+), 783 deletions(-) diff --git a/core/modules/action/tests/src/Kernel/Migrate/d6/MigrateActionsTest.php b/core/modules/action/tests/src/Kernel/Migrate/d6/MigrateActionsTest.php index ee6f39740366..239c5ab0d864 100644 --- a/core/modules/action/tests/src/Kernel/Migrate/d6/MigrateActionsTest.php +++ b/core/modules/action/tests/src/Kernel/Migrate/d6/MigrateActionsTest.php @@ -57,8 +57,10 @@ public function testActions() { * The expected Action type. * @param array $configuration * The expected Action configuration. + * + * @internal */ - protected function assertEntity($id, $label, $type, $configuration) { + protected function assertEntity(string $id, string $label, string $type, array $configuration): void { $action = Action::load($id); $this->assertInstanceOf(Action::class, $action); diff --git a/core/modules/action/tests/src/Kernel/Migrate/d7/MigrateActionsTest.php b/core/modules/action/tests/src/Kernel/Migrate/d7/MigrateActionsTest.php index 85a6977d4232..920af405338a 100644 --- a/core/modules/action/tests/src/Kernel/Migrate/d7/MigrateActionsTest.php +++ b/core/modules/action/tests/src/Kernel/Migrate/d7/MigrateActionsTest.php @@ -57,8 +57,10 @@ public function testActions() { * The expected Action type. * @param array $configuration * The expected Action configuration. + * + * @internal */ - protected function assertEntity($id, $label, $type, $configuration) { + protected function assertEntity(string $id, string $label, string $type, array $configuration): void { $action = Action::load($id); $this->assertInstanceOf(Action::class, $action); diff --git a/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php b/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php index 21a39eb5a45a..dcb68b48430b 100644 --- a/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php +++ b/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php @@ -327,7 +327,10 @@ public function testBigPipeMultiOccurrencePlaceholders() { $this->assertSession()->responseNotContains('The count is 3.'); } - protected function assertBigPipeResponseHeadersPresent() { + /** + * @internal + */ + protected function assertBigPipeResponseHeadersPresent(): void { // Check that Cache-Control header set to "private". $this->assertSession()->responseHeaderContains('Cache-Control', 'private'); $this->assertSession()->responseHeaderEquals('Surrogate-Control', 'no-store, content="BigPipe/1.0"'); @@ -340,8 +343,10 @@ protected function assertBigPipeResponseHeadersPresent() { * @param array $expected_big_pipe_nojs_placeholders * Keys: BigPipe no-JS placeholder markup. Values: expected replacement * markup. + * + * @internal */ - protected function assertBigPipeNoJsPlaceholders(array $expected_big_pipe_nojs_placeholders) { + protected function assertBigPipeNoJsPlaceholders(array $expected_big_pipe_nojs_placeholders): void { $this->assertSetsEqual(array_keys($expected_big_pipe_nojs_placeholders), array_map('rawurldecode', explode(' ', $this->getSession()->getResponseHeader('BigPipe-Test-No-Js-Placeholders')))); foreach ($expected_big_pipe_nojs_placeholders as $big_pipe_nojs_placeholder => $expected_replacement) { // Checking whether the replacement for the BigPipe no-JS placeholder @@ -361,8 +366,10 @@ protected function assertBigPipeNoJsPlaceholders(array $expected_big_pipe_nojs_p * @param array $expected_big_pipe_placeholder_stream_order * Keys: BigPipe placeholder IDs. Values: expected AJAX response. Keys are * defined in the order that they are expected to be rendered & streamed. + * + * @internal */ - protected function assertBigPipePlaceholders(array $expected_big_pipe_placeholders, array $expected_big_pipe_placeholder_stream_order) { + protected function assertBigPipePlaceholders(array $expected_big_pipe_placeholders, array $expected_big_pipe_placeholder_stream_order): void { $this->assertSetsEqual(array_keys($expected_big_pipe_placeholders), explode(' ', $this->getSession()->getResponseHeader('BigPipe-Test-Placeholders'))); $placeholder_positions = []; $placeholder_replacement_positions = []; @@ -437,36 +444,49 @@ protected function getTestCases($has_session = TRUE) { /** * Asserts whether arrays A and B are equal, when treated as sets. + * + * @todo This method is broken. Fix it in + * https://www.drupal.org/project/drupal/issues/3144926 + * + * @internal */ - protected function assertSetsEqual(array $a, array $b) { - return count($a) == count($b) && !array_diff_assoc($a, $b); + protected function assertSetsEqual(array $a, array $b): void { + $result = count($a) == count($b) && !array_diff_assoc($a, $b); } /** * Asserts whether a BigPipe no-JS cookie exists or not. + * + * @internal */ - protected function assertBigPipeNoJsCookieExists($expected) { + protected function assertBigPipeNoJsCookieExists(string $expected): void { $this->assertCookieExists('big_pipe_nojs', $expected, 'BigPipe no-JS'); } /** * Asserts whether a session cookie exists or not. + * + * @internal */ - protected function assertSessionCookieExists($expected) { + protected function assertSessionCookieExists(string $expected): void { $this->assertCookieExists($this->getSessionName(), $expected, 'Session'); } /** * Asserts whether a cookie exists on the client or not. + * + * @internal */ - protected function assertCookieExists($cookie_name, $expected, $cookie_label) { + protected function assertCookieExists(string $cookie_name, string $expected, string $cookie_label): void { $this->assertEquals($expected, !empty($this->getSession()->getCookie($cookie_name)), $expected ? "$cookie_label cookie exists." : "$cookie_label cookie does not exist."); } /** * Calls ::performMetaRefresh() and asserts the responses. + * + * @internal */ - protected function assertBigPipeNoJsMetaRefreshRedirect() { + protected function assertBigPipeNoJsMetaRefreshRedirect(): void { $original_url = $this->getSession()->getCurrentUrl(); // Disable automatic following of redirects by the HTTP client, so that this diff --git a/core/modules/block/tests/src/Kernel/BlockViewBuilderTest.php b/core/modules/block/tests/src/Kernel/BlockViewBuilderTest.php index df7fba45a3a4..03b728da7f98 100644 --- a/core/modules/block/tests/src/Kernel/BlockViewBuilderTest.php +++ b/core/modules/block/tests/src/Kernel/BlockViewBuilderTest.php @@ -288,8 +288,10 @@ public function testBlockViewBuilderBuildAlter() { * The expected cache tags. * @param int $expected_max_age * The expected max-age. + * + * @internal */ - protected function assertBlockRenderedWithExpectedCacheability(array $expected_keys, array $expected_contexts, array $expected_tags, $expected_max_age) { + protected function assertBlockRenderedWithExpectedCacheability(array $expected_keys, array $expected_contexts, array $expected_tags, int $expected_max_age): void { $required_cache_contexts = ['languages:' . LanguageInterface::TYPE_INTERFACE, 'theme', 'user.permissions']; // Check that the expected cacheability metadata is present in: diff --git a/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php b/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php index daa3f107b646..ecbea2ffb909 100644 --- a/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php +++ b/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php @@ -69,14 +69,16 @@ protected function setUp(): void { * The display region. * @param string $theme * The theme. - * @param string $weight + * @param int $weight * The block weight. * @param array $settings * (optional) The block settings. * @param bool $status * Whether the block is expected to be enabled or disabled. + * + * @internal */ - public function assertEntity($id, $visibility, $region, $theme, $weight, array $settings = NULL, $status = TRUE) { + public function assertEntity(string $id, array $visibility, string $region, string $theme, int $weight, array $settings = NULL, bool $status = TRUE): void { $block = Block::load($id); $this->assertInstanceOf(Block::class, $block); $this->assertSame($visibility, $block->getVisibility()); diff --git a/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockTest.php b/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockTest.php index 991d02142c12..a9f31b4ca3d8 100644 --- a/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockTest.php +++ b/core/modules/block/tests/src/Kernel/Migrate/d7/MigrateBlockTest.php @@ -73,7 +73,7 @@ protected function setUp(): void { * The display region. * @param string $theme * The theme. - * @param string $weight + * @param int $weight * The block weight. * @param string $label * The block label. @@ -81,8 +81,10 @@ protected function setUp(): void { * The block label display setting. * @param bool $status * Whether the block is expected to be enabled or disabled. + * + * @internal */ - public function assertEntity($id, $plugin_id, array $roles, $pages, $region, $theme, $weight, $label, $label_display, $status = TRUE) { + public function assertEntity(string $id, string $plugin_id, array $roles, string $pages, string $region, string $theme, int $weight, string $label, string $label_display, bool $status = TRUE): void { $block = Block::load($id); $this->assertInstanceOf(Block::class, $block); /** @var \Drupal\block\BlockInterface $block */ diff --git a/core/modules/block_content/tests/src/Functional/Views/BlockContentFieldFilterTest.php b/core/modules/block_content/tests/src/Functional/Views/BlockContentFieldFilterTest.php index 280f0e81371b..60249e60e47f 100644 --- a/core/modules/block_content/tests/src/Functional/Views/BlockContentFieldFilterTest.php +++ b/core/modules/block_content/tests/src/Functional/Views/BlockContentFieldFilterTest.php @@ -99,8 +99,10 @@ public function testFilters() { * that translation should be shown on the given page. * @param string $message * Message suffix to display. + * + * @internal */ - protected function assertPageCounts($path, $counts, $message) { + protected function assertPageCounts(string $path, array $counts, string $message): void { // Get the text of the page. $this->drupalGet($path); $text = $this->getTextContent(); diff --git a/core/modules/block_content/tests/src/Functional/Views/BlockContentIntegrationTest.php b/core/modules/block_content/tests/src/Functional/Views/BlockContentIntegrationTest.php index e3053e4be304..f47660906dad 100644 --- a/core/modules/block_content/tests/src/Functional/Views/BlockContentIntegrationTest.php +++ b/core/modules/block_content/tests/src/Functional/Views/BlockContentIntegrationTest.php @@ -59,8 +59,10 @@ public function testBlockContentViewTypeArgument() { * * @param array $expected_ids * An array of block_content IDs. + * + * @internal */ - protected function assertIds(array $expected_ids = []) { + protected function assertIds(array $expected_ids = []): void { $result = $this->xpath('//span[@class="field-content"]'); $ids = []; foreach ($result as $element) { diff --git a/core/modules/block_content/tests/src/Kernel/Migrate/MigrateBlockContentEntityDisplayTest.php b/core/modules/block_content/tests/src/Kernel/Migrate/MigrateBlockContentEntityDisplayTest.php index 509230d98f13..32bb55a038ad 100644 --- a/core/modules/block_content/tests/src/Kernel/Migrate/MigrateBlockContentEntityDisplayTest.php +++ b/core/modules/block_content/tests/src/Kernel/Migrate/MigrateBlockContentEntityDisplayTest.php @@ -38,8 +38,10 @@ protected function setUp(): void { * The entity ID. * @param string $component_id * The ID of the display component. + * + * @internal */ - protected function assertDisplay($id, $component_id) { + protected function assertDisplay(string $id, string $component_id): void { $component = EntityViewDisplay::load($id)->getComponent($component_id); $this->assertIsArray($component); $this->assertSame('hidden', $component['label']); diff --git a/core/modules/block_content/tests/src/Kernel/Migrate/MigrateBlockContentEntityFormDisplayTest.php b/core/modules/block_content/tests/src/Kernel/Migrate/MigrateBlockContentEntityFormDisplayTest.php index eb424395c8db..6d21b99d9d15 100644 --- a/core/modules/block_content/tests/src/Kernel/Migrate/MigrateBlockContentEntityFormDisplayTest.php +++ b/core/modules/block_content/tests/src/Kernel/Migrate/MigrateBlockContentEntityFormDisplayTest.php @@ -38,8 +38,10 @@ protected function setUp(): void { * The entity ID. * @param string $component_id * The ID of the form component. + * + * @internal */ - protected function assertDisplay($id, $component_id) { + protected function assertDisplay(string $id, string $component_id): void { $component = EntityFormDisplay::load($id)->getComponent($component_id); $this->assertIsArray($component); $this->assertSame('text_textarea_with_summary', $component['type']); diff --git a/core/modules/book/tests/src/FunctionalJavascript/BookJavascriptTest.php b/core/modules/book/tests/src/FunctionalJavascript/BookJavascriptTest.php index cb4ac799b426..33f0c253f45e 100644 --- a/core/modules/book/tests/src/FunctionalJavascript/BookJavascriptTest.php +++ b/core/modules/book/tests/src/FunctionalJavascript/BookJavascriptTest.php @@ -143,9 +143,11 @@ public function testBookOrdering() { * @throws \Behat\Mink\Exception\ExpectationException * When any of the given string is not found. * + * @internal + * * @todo Remove this once https://www.drupal.org/node/2817657 is committed. */ - protected function assertOrderInPage(array $items) { + protected function assertOrderInPage(array $items): void { $session = $this->getSession(); $text = $session->getPage()->getHtml(); $strings = []; diff --git a/core/modules/book/tests/src/Kernel/BookMultilingualTest.php b/core/modules/book/tests/src/Kernel/BookMultilingualTest.php index 38bcdcffc382..033b9ae65bfb 100644 --- a/core/modules/book/tests/src/Kernel/BookMultilingualTest.php +++ b/core/modules/book/tests/src/Kernel/BookMultilingualTest.php @@ -289,6 +289,8 @@ protected function setCurrentLanguage(string $langcode): void { * A book tree item. * @param string $langcode * The language code for the requested translation. + * + * @internal */ protected function assertBookItemIsCorrectlyTranslated(array $item, string $langcode): void { $this->assertNodeLinkIsCorrectlyTranslated($item['original_link']['nid'], $item['title'], $item['url'], $langcode); @@ -305,6 +307,8 @@ protected function assertBookItemIsCorrectlyTranslated(array $item, string $lang * The URL being tested. * @param string $langcode * The language code. + * + * @internal */ protected function assertNodeLinkIsCorrectlyTranslated(int $nid, string $title, Url $url, string $langcode): void { $node = Node::load($nid); @@ -324,8 +328,10 @@ protected function assertNodeLinkIsCorrectlyTranslated(int $nid, string $title, * The node ID. * @param string $indent * The indentation before the actual table of contents label. + * + * @internal */ - protected function assertToCEntryIsCorrectlyTranslated(array $toc, string $langcode, int $nid, string $indent) { + protected function assertToCEntryIsCorrectlyTranslated(array $toc, string $langcode, int $nid, string $indent): void { $node = Node::load($nid); $node_label = $node->getTranslation($langcode)->label(); $this->assertSame($indent . ' ' . $node_label, $toc[$nid]); diff --git a/core/modules/ckeditor/tests/src/Kernel/CKEditorTest.php b/core/modules/ckeditor/tests/src/Kernel/CKEditorTest.php index f70fd87d0740..3f852ef8e313 100644 --- a/core/modules/ckeditor/tests/src/Kernel/CKEditorTest.php +++ b/core/modules/ckeditor/tests/src/Kernel/CKEditorTest.php @@ -473,8 +473,10 @@ public function testExternalStylesheets() { * @param string $langcode * Language code to assert for. Defaults to French. That is the default * language set in this assertion. + * + * @internal */ - protected function assertCKEditorLanguage($langcode = 'fr') { + protected function assertCKEditorLanguage(string $langcode = 'fr'): void { // Set French as the site default language. ConfigurableLanguage::createFromLangcode('fr')->save(); $this->config('system.site')->set('default_langcode', 'fr')->save(); diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php index 0d3f6fe7542a..8fb14f18d9da 100644 --- a/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php @@ -664,11 +664,13 @@ public function testViewMode() { * * @param string $attribute * The attribute to check. - * @param mixed $value + * @param string|null $value * Either a string value or if NULL, asserts that <drupal-media> element * doesn't have the attribute. + * + * @internal */ - protected function assertSourceAttributeSame($attribute, $value) { + protected function assertSourceAttributeSame(string $attribute, ?string $value): void { $dom = $this->getEditorDataAsDom(); $drupal_media = (new \DOMXPath($dom))->query('//drupal-media'); $this->assertNotEmpty($drupal_media); diff --git a/core/modules/comment/tests/src/Functional/CommentPagerTest.php b/core/modules/comment/tests/src/Functional/CommentPagerTest.php index ef4fe3c018fe..aea7bb10d5db 100644 --- a/core/modules/comment/tests/src/Functional/CommentPagerTest.php +++ b/core/modules/comment/tests/src/Functional/CommentPagerTest.php @@ -210,8 +210,10 @@ public function testCommentOrderingThreading() { * An array of comments, must be of the type CommentInterface. * @param array $expected_order * An array of keys from $comments describing the expected order. + * + * @internal */ - public function assertCommentOrder(array $comments, array $expected_order) { + public function assertCommentOrder(array $comments, array $expected_order): void { $expected_cids = []; // First, rekey the expected order by cid. diff --git a/core/modules/comment/tests/src/Functional/CommentThreadingTest.php b/core/modules/comment/tests/src/Functional/CommentThreadingTest.php index 00ccd29c2498..55ad7b4168b0 100644 --- a/core/modules/comment/tests/src/Functional/CommentThreadingTest.php +++ b/core/modules/comment/tests/src/Functional/CommentThreadingTest.php @@ -131,8 +131,10 @@ public function testCommentThreading() { * The comment ID to check. * @param int $pid * The expected parent comment ID. + * + * @internal */ - protected function assertParentLink($cid, $pid) { + protected function assertParentLink(int $cid, int $pid): void { // This pattern matches a markup structure like: // @code // <a id="comment-2"></a> @@ -152,8 +154,10 @@ protected function assertParentLink($cid, $pid) { * * @param int $cid * The comment ID to check. + * + * @internal */ - protected function assertNoParentLink($cid) { + protected function assertNoParentLink(int $cid): void { // This pattern matches a markup structure like: // @code // <a id="comment-2"></a> diff --git a/core/modules/comment/tests/src/Functional/Views/CommentFieldFilterTest.php b/core/modules/comment/tests/src/Functional/Views/CommentFieldFilterTest.php index 9be47fc8e215..623d75c1c4f7 100644 --- a/core/modules/comment/tests/src/Functional/Views/CommentFieldFilterTest.php +++ b/core/modules/comment/tests/src/Functional/Views/CommentFieldFilterTest.php @@ -108,8 +108,10 @@ public function testFilters() { * that translation should be shown on the given page. * @param string $message * Message suffix to display. + * + * @internal */ - protected function assertPageCounts($path, $counts, $message) { + protected function assertPageCounts(string $path, array $counts, string $message): void { // Get the text of the page. $this->drupalGet($path); $text = $this->getTextContent(); diff --git a/core/modules/comment/tests/src/Kernel/CommentValidationTest.php b/core/modules/comment/tests/src/Kernel/CommentValidationTest.php index 39b842400dae..2e6af3207013 100644 --- a/core/modules/comment/tests/src/Kernel/CommentValidationTest.php +++ b/core/modules/comment/tests/src/Kernel/CommentValidationTest.php @@ -189,8 +189,10 @@ public function testValidation() { * The field that violates the maximum length. * @param int $length * Number of characters that was exceeded. + * + * @internal */ - protected function assertLengthViolation(CommentInterface $comment, $field_name, $length) { + protected function assertLengthViolation(CommentInterface $comment, string $field_name, int $length): void { $violations = $comment->validate(); $this->assertCount(1, $violations, "Violation found when $field_name is too long."); $this->assertEquals("{$field_name}.0.value", $violations[0]->getPropertyPath()); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityDisplayTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityDisplayTest.php index b4a670562f1c..f2741270cec9 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityDisplayTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityDisplayTest.php @@ -41,8 +41,10 @@ protected function setUp(): void { * The entity ID. * @param string $component_id * The ID of the display component. + * + * @internal */ - protected function assertDisplay($id, $component_id) { + protected function assertDisplay(string $id, string $component_id): void { $component = EntityViewDisplay::load($id)->getComponent($component_id); $this->assertIsArray($component); $this->assertSame('hidden', $component['label']); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityFormDisplaySubjectTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityFormDisplaySubjectTest.php index a57c2250fb42..57fb3d3849b2 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityFormDisplaySubjectTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityFormDisplaySubjectTest.php @@ -35,8 +35,10 @@ protected function setUp(): void { * * @param string $id * The entity form display ID. + * + * @internal */ - protected function assertSubjectVisible($id) { + protected function assertSubjectVisible(string $id): void { $component = EntityFormDisplay::load($id)->getComponent('subject'); $this->assertIsArray($component); $this->assertSame('string_textfield', $component['type']); @@ -48,8 +50,10 @@ protected function assertSubjectVisible($id) { * * @param string $id * The entity form display ID. + * + * @internal */ - protected function assertSubjectNotVisible($id) { + protected function assertSubjectNotVisible(string $id): void { $component = EntityFormDisplay::load($id)->getComponent('subject'); $this->assertNull($component); } diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityFormDisplayTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityFormDisplayTest.php index 5438c938c25b..8c1bec00d645 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityFormDisplayTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentEntityFormDisplayTest.php @@ -40,8 +40,10 @@ protected function setUp(): void { * The entity ID. * @param string $component_id * The ID of the form component. + * + * @internal */ - protected function assertDisplay($id, $component_id) { + protected function assertDisplay(string $id, string $component_id): void { $component = EntityFormDisplay::load($id)->getComponent($component_id); $this->assertIsArray($component); $this->assertSame('comment_default', $component['type']); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentFieldInstanceTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentFieldInstanceTest.php index fab1c5120412..2bea5867d017 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentFieldInstanceTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentFieldInstanceTest.php @@ -45,14 +45,16 @@ protected function setUp(): void { * The field's default_mode setting. * @param int $per_page * The field's per_page setting. - * @param bool $anonymous + * @param int $anonymous * The field's anonymous setting. - * @param int $form_location + * @param bool $form_location * The field's form_location setting. - * @param bool $preview + * @param int $preview * The field's preview setting. + * + * @internal */ - protected function assertEntity($bundle, $field_name, $default_value, $default_mode, $per_page, $anonymous, $form_location, $preview) { + protected function assertEntity(string $bundle, string $field_name, int $default_value, int $default_mode, int $per_page, int $anonymous, bool $form_location, int $preview): void { $entity = FieldConfig::load("node.$bundle.$field_name"); $this->assertInstanceOf(FieldConfig::class, $entity); $this->assertSame('node', $entity->getTargetEntityTypeId()); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentFieldTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentFieldTest.php index e2a865cd7c98..f16e1da2e954 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentFieldTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentFieldTest.php @@ -35,8 +35,10 @@ protected function setUp(): void { * * @param string $comment_type * The comment type. + * + * @internal */ - protected function assertEntity($comment_type) { + protected function assertEntity(string $comment_type): void { $entity = FieldStorageConfig::load('node.' . $comment_type); $this->assertInstanceOf(FieldStorageConfig::class, $entity); $this->assertSame('node', $entity->getTargetEntityTypeId()); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentTypeTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentTypeTest.php index 359116b88222..0fe36155d818 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentTypeTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d6/MigrateCommentTypeTest.php @@ -25,8 +25,10 @@ class MigrateCommentTypeTest extends MigrateDrupal6TestBase { * The entity ID. * @param string $label * The entity label. + * + * @internal */ - protected function assertEntity($id, $label) { + protected function assertEntity(string $id, string $label): void { $entity = CommentType::load($id); $this->assertInstanceOf(CommentType::class, $entity); $this->assertSame($label, $entity->label()); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityDisplayTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityDisplayTest.php index 1ace7293f0f8..83709fdf0a34 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityDisplayTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityDisplayTest.php @@ -39,8 +39,10 @@ protected function setUp(): void { * The entity ID. * @param string $component_id * The ID of the display component. + * + * @internal */ - protected function assertDisplay($id, $component_id) { + protected function assertDisplay(string $id, string $component_id): void { $component = EntityViewDisplay::load($id)->getComponent($component_id); $this->assertIsArray($component); $this->assertSame('hidden', $component['label']); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityFormDisplaySubjectTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityFormDisplaySubjectTest.php index c0a1de628cd4..803198349885 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityFormDisplaySubjectTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityFormDisplaySubjectTest.php @@ -32,8 +32,10 @@ protected function setUp(): void { * * @param string $id * The entity form display ID. + * + * @internal */ - protected function assertSubjectVisible($id) { + protected function assertSubjectVisible(string $id): void { $component = EntityFormDisplay::load($id)->getComponent('subject'); $this->assertIsArray($component); $this->assertSame('string_textfield', $component['type']); @@ -45,8 +47,10 @@ protected function assertSubjectVisible($id) { * * @param string $id * The entity form display ID. + * + * @internal */ - protected function assertSubjectNotVisible($id) { + protected function assertSubjectNotVisible(string $id): void { $component = EntityFormDisplay::load($id)->getComponent('subject'); $this->assertNull($component); } diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityFormDisplayTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityFormDisplayTest.php index 05d1651bc973..51c7dbdf9171 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityFormDisplayTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentEntityFormDisplayTest.php @@ -39,8 +39,10 @@ protected function setUp(): void { * The entity ID. * @param string $component_id * The ID of the form component. + * + * @internal */ - protected function assertDisplay($id, $component_id) { + protected function assertDisplay(string $id, string $component_id): void { $component = EntityFormDisplay::load($id)->getComponent($component_id); $this->assertIsArray($component); $this->assertSame('comment_default', $component['type']); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentFieldInstanceTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentFieldInstanceTest.php index e1fd26c66cba..ccf447a33ea7 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentFieldInstanceTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentFieldInstanceTest.php @@ -44,14 +44,16 @@ protected function setUp(): void { * The field's default_mode setting. * @param int $per_page * The field's per_page setting. - * @param bool $anonymous + * @param int $anonymous * The field's anonymous setting. - * @param int $form_location + * @param bool $form_location * The field's form_location setting. - * @param bool $preview + * @param int $preview * The field's preview setting. + * + * @internal */ - protected function assertEntity($bundle, $field_name, $default_value, $default_mode, $per_page, $anonymous, $form_location, $preview) { + protected function assertEntity(string $bundle, string $field_name, int $default_value, int $default_mode, int $per_page, int $anonymous, bool $form_location, int $preview): void { $entity = FieldConfig::load("node.$bundle.$field_name"); $this->assertInstanceOf(FieldConfig::class, $entity); $this->assertSame('node', $entity->getTargetEntityTypeId()); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentFieldTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentFieldTest.php index 25e67d239f8f..be068b9f41b5 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentFieldTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentFieldTest.php @@ -32,8 +32,10 @@ protected function setUp(): void { * * @param string $comment_type * The comment type. + * + * @internal */ - protected function assertEntity($comment_type) { + protected function assertEntity(string $comment_type): void { $entity = FieldStorageConfig::load('node.' . $comment_type); $this->assertInstanceOf(FieldStorageConfig::class, $entity); $this->assertSame('node', $entity->getTargetEntityTypeId()); diff --git a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentTypeTest.php b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentTypeTest.php index 0da71b7b14bb..93d899aaf2bb 100644 --- a/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentTypeTest.php +++ b/core/modules/comment/tests/src/Kernel/Migrate/d7/MigrateCommentTypeTest.php @@ -25,8 +25,10 @@ class MigrateCommentTypeTest extends MigrateDrupal7TestBase { * The entity ID. * @param string $label * The entity label. + * + * @internal */ - protected function assertEntity($id, $label) { + protected function assertEntity(string $id, string $label): void { $entity = CommentType::load($id); $this->assertInstanceOf(CommentType::class, $entity); $this->assertSame($label, $entity->label()); diff --git a/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php index 50a74e205691..1fd76ccaff37 100644 --- a/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php +++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php @@ -1186,10 +1186,9 @@ protected function renderContextualLinks($ids, $current_path) { * @param string $id * The HTML ID of the textarea. * - * @return bool - * TRUE if the assertion passed; FALSE otherwise. + * @internal */ - protected function assertDisabledTextarea($id) { + protected function assertDisabledTextarea(string $id): void { $textarea = $this->assertSession()->fieldDisabled($id); $this->assertSame('textarea', $textarea->getTagName()); $this->assertSame('This field has been disabled because you do not have sufficient permissions to edit it.', $textarea->getText()); diff --git a/core/modules/contact/tests/src/Functional/Views/ContactLinkTest.php b/core/modules/contact/tests/src/Functional/Views/ContactLinkTest.php index 6a8da2203b91..ea07bc57b5d1 100644 --- a/core/modules/contact/tests/src/Functional/Views/ContactLinkTest.php +++ b/core/modules/contact/tests/src/Functional/Views/ContactLinkTest.php @@ -98,8 +98,10 @@ public function testContactLink() { * All user objects used by the test. * @param array $names * Users which should have contact links. + * + * @internal */ - public function assertContactLinks(array $accounts, array $names) { + public function assertContactLinks(array $accounts, array $names): void { $this->assertSession()->elementsCount('xpath', '//div[contains(@class, "views-field-contact")]//a', count($names)); foreach ($names as $name) { $account_url = $accounts[$name]->toUrl('contact-form')->toString(); diff --git a/core/modules/contact/tests/src/Kernel/Migrate/MigrateContactCategoryTest.php b/core/modules/contact/tests/src/Kernel/Migrate/MigrateContactCategoryTest.php index c6b3ea5ed3f7..178cbc6643d2 100644 --- a/core/modules/contact/tests/src/Kernel/Migrate/MigrateContactCategoryTest.php +++ b/core/modules/contact/tests/src/Kernel/Migrate/MigrateContactCategoryTest.php @@ -41,8 +41,10 @@ protected function setUp(): void { * The expected reply message. * @param int $expected_weight * The contact form's expected weight. + * + * @internal */ - protected function assertEntity($id, $expected_label, array $expected_recipients, $expected_reply, $expected_weight) { + protected function assertEntity(string $id, string $expected_label, array $expected_recipients, string $expected_reply, int $expected_weight): void { /** @var \Drupal\contact\ContactFormInterface $entity */ $entity = ContactForm::load($id); $this->assertInstanceOf(ContactFormInterface::class, $entity); diff --git a/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php index a23011d2137f..caa404af6a5c 100644 --- a/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php +++ b/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php @@ -505,8 +505,10 @@ protected function loadTranslation(NodeInterface $node, $langcode) { * * @param \Drupal\node\NodeInterface $node * A node object. + * + * @internal */ - public function assertLatestVersionPage(NodeInterface $node) { + public function assertLatestVersionPage(NodeInterface $node): void { $this->assertEquals($node->toUrl('latest-version')->setAbsolute()->toString(), $this->getSession()->getCurrentUrl()); $this->assertModerationForm($node); } @@ -519,8 +521,10 @@ public function assertLatestVersionPage(NodeInterface $node) { * @param bool $moderation_form * (optional) Whether the page should contain the moderation form. Defaults * to FALSE. + * + * @internal */ - public function assertNotLatestVersionPage(NodeInterface $node, $moderation_form = FALSE) { + public function assertNotLatestVersionPage(NodeInterface $node, bool $moderation_form = FALSE): void { $this->assertNotEquals($node->toUrl('latest-version')->setAbsolute()->toString(), $this->getSession()->getCurrentUrl()); if ($moderation_form) { $this->assertModerationForm($node, FALSE); @@ -538,8 +542,10 @@ public function assertNotLatestVersionPage(NodeInterface $node, $moderation_form * @param bool $latest_tab * (optional) Whether the node form is expected to be displayed on the * latest version page or on the node view page. Defaults to the former. + * + * @internal */ - public function assertModerationForm(NodeInterface $node, $latest_tab = TRUE) { + public function assertModerationForm(NodeInterface $node, bool $latest_tab = TRUE): void { $this->drupalGet($node->toUrl()); $this->assertEquals(!$latest_tab, $this->hasModerationForm()); $this->drupalGet($node->toUrl('latest-version')); @@ -551,8 +557,10 @@ public function assertModerationForm(NodeInterface $node, $latest_tab = TRUE) { * * @param \Drupal\node\NodeInterface $node * A node object. + * + * @internal */ - public function assertNoModerationForm(NodeInterface $node) { + public function assertNoModerationForm(NodeInterface $node): void { $this->drupalGet($node->toUrl()); $this->assertFalse($this->hasModerationForm()); $this->drupalGet($node->toUrl('latest-version')); diff --git a/core/modules/content_moderation/tests/src/Functional/ViewsModerationStateFilterTest.php b/core/modules/content_moderation/tests/src/Functional/ViewsModerationStateFilterTest.php index b78e0938b08c..286bbcfedcc0 100644 --- a/core/modules/content_moderation/tests/src/Functional/ViewsModerationStateFilterTest.php +++ b/core/modules/content_moderation/tests/src/Functional/ViewsModerationStateFilterTest.php @@ -327,8 +327,10 @@ public function testFilterRenderCache() { * @param bool $check_size * (optional) Whether to check that size of the select element is not * greater than 8. Defaults to FALSE. + * + * @internal */ - protected function assertFilterStates($states, $check_size = FALSE) { + protected function assertFilterStates(array $states, bool $check_size = FALSE): void { $this->drupalGet('/filter-test-path'); $assert_session = $this->assertSession(); @@ -355,8 +357,10 @@ protected function assertFilterStates($states, $check_size = FALSE) { * An array of workflow IDs to check. * @param \Drupal\views\ViewEntityInterface $view * A view configuration object. + * + * @internal */ - protected function assertWorkflowDependencies(array $workflow_ids, ViewEntityInterface $view) { + protected function assertWorkflowDependencies(array $workflow_ids, ViewEntityInterface $view): void { $dependencies = $view->getDependencies(); $expected = []; diff --git a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php index 343bfe55b436..c7b84fd6bae6 100644 --- a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php @@ -124,8 +124,10 @@ public function testUniqueKeys() { * An array of entity values. * @param bool $has_exception * If an exception should be triggered when saving the entity. + * + * @internal */ - protected function assertStorageException(array $values, $has_exception) { + protected function assertStorageException(array $values, bool $has_exception): void { $defaults = [ 'moderation_state' => 'draft', 'workflow' => 'editorial', diff --git a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php index c238eb3d445c..6c260ef930a3 100644 --- a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php @@ -777,8 +777,10 @@ protected function reloadEntity(EntityInterface $entity, $revision_id = FALSE) { * @param bool|null $published * (optional) Whether to check if the entity is published or not. Defaults * to TRUE. + * + * @internal */ - protected function assertDefaultRevision(EntityInterface $entity, $revision_id, $published = TRUE) { + protected function assertDefaultRevision(EntityInterface $entity, int $revision_id, $published = TRUE): void { // Get the default revision. $entity = $this->reloadEntity($entity); $this->assertEquals($revision_id, $entity->getRevisionId()); diff --git a/core/modules/content_moderation/tests/src/Kernel/DefaultRevisionStateTest.php b/core/modules/content_moderation/tests/src/Kernel/DefaultRevisionStateTest.php index 065973a242cd..307dfc8b2fb5 100644 --- a/core/modules/content_moderation/tests/src/Kernel/DefaultRevisionStateTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/DefaultRevisionStateTest.php @@ -123,8 +123,10 @@ public function testMultilingual() { * The state the content moderation state revision should be in. * @param string $expected_workflow * The workflow the content moderation state revision should be using. + * + * @internal */ - protected function assertModerationState($revision_id, $langcode, $expected_state, $expected_workflow = 'editorial') { + protected function assertModerationState(int $revision_id, string $langcode, string $expected_state, string $expected_workflow = 'editorial'): void { $moderation_state_storage = $this->entityTypeManager->getStorage('content_moderation_state'); $query = $moderation_state_storage->getQuery()->accessCheck(FALSE); diff --git a/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php b/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php index a59b485d698f..623534e72235 100644 --- a/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php @@ -162,8 +162,10 @@ public function testAssignNullItemList() { /** * Assert the set of expectations when the moderation state field is emptied. + * + * @internal */ - protected function assertEmptiedModerationFieldItemList() { + protected function assertEmptiedModerationFieldItemList(): void { $this->assertTrue($this->testNode->moderation_state->isEmpty()); // Test the empty value causes a violation in the entity. $violations = $this->testNode->validate(); diff --git a/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateFilterTest.php b/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateFilterTest.php index 800073be049f..c42b798977cd 100644 --- a/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateFilterTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateFilterTest.php @@ -321,8 +321,10 @@ public function testStateFilterStatesList() { * * @param string[] $states * The states which should appear in the filter. + * + * @internal */ - protected function assertPluginStates($states) { + protected function assertPluginStates(array $states): void { $plugin = Views::pluginManager('filter')->createInstance('moderation_state_filter', []); $view = Views::getView('test_content_moderation_state_filter_base_table'); $plugin->init($view, $view->getDisplay()); @@ -338,8 +340,10 @@ protected function assertPluginStates($states) { * An array of filters to apply to the view. * @param string $view_id * The view to execute for the results. + * + * @internal */ - protected function assertNodesWithFilters(array $nodes, array $filters, $view_id = 'test_content_moderation_state_filter_base_table') { + protected function assertNodesWithFilters(array $nodes, array $filters, string $view_id = 'test_content_moderation_state_filter_base_table'): void { $view = Views::getView($view_id); $view->setExposedInput($filters); $view->execute(); diff --git a/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateSortTest.php b/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateSortTest.php index 6ddbec3eeddf..b27c4d62eecf 100644 --- a/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateSortTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/ViewsModerationStateSortTest.php @@ -165,8 +165,10 @@ public function testSortRevisionBaseTable() { * The sort order. * @param array $expected * The expected results array. + * + * @internal */ - protected function assertSortResults($view_id, $column, $order, array $expected) { + protected function assertSortResults(string $view_id, string $column, string $order, array $expected): void { // Test with exposed input. $view = Views::getView($view_id); $view->setExposedInput([ diff --git a/core/modules/content_moderation/tests/src/Kernel/WorkspacesContentModerationStateTest.php b/core/modules/content_moderation/tests/src/Kernel/WorkspacesContentModerationStateTest.php index 79cf23286c45..ce4730820114 100644 --- a/core/modules/content_moderation/tests/src/Kernel/WorkspacesContentModerationStateTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/WorkspacesContentModerationStateTest.php @@ -253,7 +253,7 @@ protected function createContentType(array $values = []) { /** * {@inheritdoc} */ - protected function assertDefaultRevision(EntityInterface $entity, $revision_id, $published = TRUE) { + protected function assertDefaultRevision(EntityInterface $entity, int $revision_id, $published = TRUE): void { // In the context of a workspace, the default revision ID is always the // latest workspace-specific revision, so we need to adjust the expectation // of the parent assertion. diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationOutdatedRevisionTranslationTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationOutdatedRevisionTranslationTest.php index 01e4e9766f5a..07dacff667ba 100644 --- a/core/modules/content_translation/tests/src/Functional/ContentTranslationOutdatedRevisionTranslationTest.php +++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationOutdatedRevisionTranslationTest.php @@ -85,8 +85,10 @@ public function testFlagAsOutdatedHidden() { /** * Checks whether the flag widget is displayed. + * + * @internal */ - protected function assertFlagWidget() { + protected function assertFlagWidget(): void { $this->assertSession()->pageTextNotContains('Flag other translations as outdated'); $this->assertSession()->pageTextContains('Translations cannot be flagged as outdated when content is moderated.'); } diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationSettingsTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationSettingsTest.php index 974e396e01e2..de65d5464f7e 100644 --- a/core/modules/content_translation/tests/src/Functional/ContentTranslationSettingsTest.php +++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationSettingsTest.php @@ -253,14 +253,16 @@ public function testAccountLanguageSettingsUI() { * * @param string $entity_type * The entity type for which to check translatability. - * @param string $bundle + * @param string|null $bundle * The bundle for which to check translatability. * @param bool $enabled * TRUE if translatability should be enabled, FALSE otherwise. * @param array $edit * An array of values to submit to the content translation settings page. + * + * @internal */ - protected function assertSettings($entity_type, $bundle, $enabled, $edit) { + protected function assertSettings(string $entity_type, ?string $bundle, bool $enabled, array $edit): void { $this->drupalGet('admin/config/regional/content-language'); $this->submitForm($edit, 'Save configuration'); $args = ['@entity_type' => $entity_type, '@bundle' => $bundle, '@enabled' => $enabled ? 'enabled' : 'disabled']; diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php index 9360122fb2bd..6291989f4116 100644 --- a/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php +++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationWorkflowsTest.php @@ -414,10 +414,12 @@ protected function doTestWorkflows(UserInterface $user, $expected_status) { /** * Assert that the current page does not contain shared form elements. + * + * @internal */ - protected function assertNoSharedElements() { + protected function assertNoSharedElements(): void { $language_none = LanguageInterface::LANGCODE_NOT_SPECIFIED; - return $this->assertSession()->fieldNotExists("field_test_text[$language_none][0][value]"); + $this->assertSession()->fieldNotExists("field_test_text[$language_none][0][value]"); } } diff --git a/core/modules/content_translation/tests/src/Kernel/ContentTranslationFieldSyncRevisionTest.php b/core/modules/content_translation/tests/src/Kernel/ContentTranslationFieldSyncRevisionTest.php index 2c7f8a9a3736..a689935c413f 100644 --- a/core/modules/content_translation/tests/src/Kernel/ContentTranslationFieldSyncRevisionTest.php +++ b/core/modules/content_translation/tests/src/Kernel/ContentTranslationFieldSyncRevisionTest.php @@ -449,8 +449,10 @@ protected function createRevision(ContentEntityInterface $translation, $default * * @param \Drupal\Core\Entity\EntityConstraintViolationListInterface $violations * A list of violations. + * + * @internal */ - protected function assertViolations(EntityConstraintViolationListInterface $violations) { + protected function assertViolations(EntityConstraintViolationListInterface $violations): void { $entity_type_id = $this->storage->getEntityTypeId(); $settings = $this->contentTranslationManager->getBundleTranslationSettings($entity_type_id, $entity_type_id); $message = !empty($settings['untranslatable_fields_hide']) ? @@ -478,8 +480,10 @@ protected function assertViolations(EntityConstraintViolationListInterface $viol * - target ID (it) * - alt (en) * - alt (it) + * + * @internal */ - protected function assertLatestRevisionFieldValues($entity_id, array $expected_values) { + protected function assertLatestRevisionFieldValues(int $entity_id, array $expected_values): void { /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */ $entity = $this->storage->loadRevision($this->storage->getLatestRevisionId($entity_id)); @[$revision_id, $target_id_en, $target_id_it, $alt_en, $alt_it] = $expected_values; diff --git a/core/modules/content_translation/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTranslationTest.php b/core/modules/content_translation/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTranslationTest.php index 3f70a6590b77..6f4449880245 100644 --- a/core/modules/content_translation/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTranslationTest.php +++ b/core/modules/content_translation/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTranslationTest.php @@ -72,8 +72,10 @@ protected function setUp(): void { * The value the migrated entity field should have. * @param int $expected_term_reference_tid * The term reference ID the migrated entity field should have. + * + * @internal */ - protected function assertEntity($id, $expected_language, $expected_label, $expected_vid, $expected_description = '', $expected_format = NULL, $expected_weight = 0, $expected_parents = [], $expected_field_integer_value = NULL, $expected_term_reference_tid = NULL) { + protected function assertEntity(int $id, string $expected_language, string $expected_label, string $expected_vid, string $expected_description = '', string $expected_format = NULL, int $expected_weight = 0, array $expected_parents = [], int $expected_field_integer_value = NULL, int $expected_term_reference_tid = NULL): void { /** @var \Drupal\taxonomy\TermInterface $entity */ $entity = Term::load($id); $this->assertInstanceOf(TermInterface::class, $entity); @@ -82,7 +84,7 @@ protected function assertEntity($id, $expected_language, $expected_label, $expec $this->assertSame($expected_vid, $entity->bundle()); $this->assertSame($expected_description, $entity->getDescription()); $this->assertSame($expected_format, $entity->getFormat()); - $this->assertSame($expected_weight, $entity->getWeight()); + $this->assertSame($expected_weight, (int) $entity->getWeight()); $this->assertHierarchy($expected_vid, $id, $expected_parents); } @@ -95,8 +97,10 @@ protected function assertEntity($id, $expected_language, $expected_label, $expec * ID of the term to check. * @param array $parent_ids * The expected parent term IDs. + * + * @internal */ - protected function assertHierarchy($vid, $tid, array $parent_ids) { + protected function assertHierarchy(string $vid, int $tid, array $parent_ids): void { if (!isset($this->treeData[$vid])) { $tree = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid); $this->treeData[$vid] = []; @@ -119,13 +123,13 @@ protected function assertHierarchy($vid, $tid, array $parent_ids) { * Tests the Drupal 6 i18n taxonomy term to Drupal 8 migration. */ public function testTranslatedTaxonomyTerms() { - $this->assertEntity(1, 'zu', 'zu - term 1 of vocabulary 1', 'vocabulary_1_i_0_', 'zu - description of term 1 of vocabulary 1', NULL, '0', []); - $this->assertEntity(2, 'fr', 'fr - term 2 of vocabulary 2', 'vocabulary_2_i_1_', 'fr - description of term 2 of vocabulary 2', NULL, '3', []); - $this->assertEntity(3, 'fr', 'fr - term 3 of vocabulary 2', 'vocabulary_2_i_1_', 'fr - description of term 3 of vocabulary 2', NULL, '4', ['2']); - $this->assertEntity(4, 'en', 'term 4 of vocabulary 3', 'vocabulary_3_i_2_', 'description of term 4 of vocabulary 3', NULL, '6', []); - $this->assertEntity(5, 'en', 'term 5 of vocabulary 3', 'vocabulary_3_i_2_', 'description of term 5 of vocabulary 3', NULL, '7', ['4']); - $this->assertEntity(6, 'en', 'term 6 of vocabulary 3', 'vocabulary_3_i_2_', 'description of term 6 of vocabulary 3', NULL, '8', ['4', '5']); - $this->assertEntity(7, 'fr', 'fr - term 2 of vocabulary 1', 'vocabulary_1_i_0_', 'fr - desc of term 2 vocab 1', NULL, '0', []); + $this->assertEntity(1, 'zu', 'zu - term 1 of vocabulary 1', 'vocabulary_1_i_0_', 'zu - description of term 1 of vocabulary 1', NULL, 0, []); + $this->assertEntity(2, 'fr', 'fr - term 2 of vocabulary 2', 'vocabulary_2_i_1_', 'fr - description of term 2 of vocabulary 2', NULL, 3, []); + $this->assertEntity(3, 'fr', 'fr - term 3 of vocabulary 2', 'vocabulary_2_i_1_', 'fr - description of term 3 of vocabulary 2', NULL, 4, ['2']); + $this->assertEntity(4, 'en', 'term 4 of vocabulary 3', 'vocabulary_3_i_2_', 'description of term 4 of vocabulary 3', NULL, 6, []); + $this->assertEntity(5, 'en', 'term 5 of vocabulary 3', 'vocabulary_3_i_2_', 'description of term 5 of vocabulary 3', NULL, 7, ['4']); + $this->assertEntity(6, 'en', 'term 6 of vocabulary 3', 'vocabulary_3_i_2_', 'description of term 6 of vocabulary 3', NULL, 8, ['4', '5']); + $this->assertEntity(7, 'fr', 'fr - term 2 of vocabulary 1', 'vocabulary_1_i_0_', 'fr - desc of term 2 vocab 1', NULL, 0, []); } } diff --git a/core/modules/contextual/tests/src/Functional/ContextualDynamicContextTest.php b/core/modules/contextual/tests/src/Functional/ContextualDynamicContextTest.php index 34e3e61b2f80..6e4755b62321 100644 --- a/core/modules/contextual/tests/src/Functional/ContextualDynamicContextTest.php +++ b/core/modules/contextual/tests/src/Functional/ContextualDynamicContextTest.php @@ -222,8 +222,10 @@ public function testTokenProtection() { * * @param string $id * A contextual link id. + * + * @internal */ - protected function assertContextualLinkPlaceHolder($id) { + protected function assertContextualLinkPlaceHolder(string $id): void { $this->assertSession()->elementAttributeContains( 'css', 'div[data-contextual-id="' . $id . '"]', @@ -237,8 +239,10 @@ protected function assertContextualLinkPlaceHolder($id) { * * @param string $id * A contextual link id. + * + * @internal */ - protected function assertNoContextualLinkPlaceHolder($id) { + protected function assertNoContextualLinkPlaceHolder(string $id): void { $this->assertSession()->elementNotExists('css', 'div[data-contextual-id="' . $id . '"]'); } diff --git a/core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php b/core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php index 219b30dc76b9..6cb1b68c3842 100644 --- a/core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php +++ b/core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php @@ -100,8 +100,10 @@ protected function pressToolbarEditButton() { /** * Asserts that the correct message was announced when entering edit mode. + * + * @internal */ - protected function assertAnnounceEditMode() { + protected function assertAnnounceEditMode(): void { $web_assert = $this->assertSession(); // Wait for contextual trigger button. $web_assert->waitForElementVisible('css', '.contextual trigger'); @@ -111,8 +113,10 @@ protected function assertAnnounceEditMode() { /** * Assert that the correct message was announced when leaving edit mode. + * + * @internal */ - protected function assertAnnounceLeaveEditMode() { + protected function assertAnnounceLeaveEditMode(): void { $web_assert = $this->assertSession(); $page = $this->getSession()->getPage(); // Wait till all the contextual links are hidden. diff --git a/core/modules/datetime/tests/src/Functional/EntityResource/EntityTest/EntityTestDateonlyTest.php b/core/modules/datetime/tests/src/Functional/EntityResource/EntityTest/EntityTestDateonlyTest.php index 9439f8cf4a23..04e38fd0163e 100644 --- a/core/modules/datetime/tests/src/Functional/EntityResource/EntityTest/EntityTestDateonlyTest.php +++ b/core/modules/datetime/tests/src/Functional/EntityResource/EntityTest/EntityTestDateonlyTest.php @@ -117,7 +117,7 @@ protected function getNormalizedPostEntity() { /** * {@inheritdoc} */ - protected function assertNormalizationEdgeCases($method, Url $url, array $request_options) { + protected function assertNormalizationEdgeCases($method, Url $url, array $request_options): void { parent::assertNormalizationEdgeCases($method, $url, $request_options); if ($this->entity->getEntityType()->hasKey('bundle')) { diff --git a/core/modules/datetime/tests/src/Functional/EntityResource/EntityTest/EntityTestDatetimeTest.php b/core/modules/datetime/tests/src/Functional/EntityResource/EntityTest/EntityTestDatetimeTest.php index f9313f112265..2030900cf421 100644 --- a/core/modules/datetime/tests/src/Functional/EntityResource/EntityTest/EntityTestDatetimeTest.php +++ b/core/modules/datetime/tests/src/Functional/EntityResource/EntityTest/EntityTestDatetimeTest.php @@ -117,7 +117,7 @@ protected function getNormalizedPostEntity() { /** * {@inheritdoc} */ - protected function assertNormalizationEdgeCases($method, Url $url, array $request_options) { + protected function assertNormalizationEdgeCases($method, Url $url, array $request_options): void { parent::assertNormalizationEdgeCases($method, $url, $request_options); if ($this->entity->getEntityType()->hasKey('bundle')) { diff --git a/core/modules/datetime_range/tests/src/Functional/EntityResource/EntityTest/EntityTestDateRangeTest.php b/core/modules/datetime_range/tests/src/Functional/EntityResource/EntityTest/EntityTestDateRangeTest.php index 15bc81744593..636221f95117 100644 --- a/core/modules/datetime_range/tests/src/Functional/EntityResource/EntityTest/EntityTestDateRangeTest.php +++ b/core/modules/datetime_range/tests/src/Functional/EntityResource/EntityTest/EntityTestDateRangeTest.php @@ -118,7 +118,7 @@ protected function getNormalizedPostEntity() { /** * {@inheritdoc} */ - protected function assertNormalizationEdgeCases($method, Url $url, array $request_options) { + protected function assertNormalizationEdgeCases($method, Url $url, array $request_options): void { parent::assertNormalizationEdgeCases($method, $url, $request_options); if ($this->entity->getEntityType()->hasKey('bundle')) { diff --git a/core/modules/dblog/tests/src/Functional/DbLogResourceTest.php b/core/modules/dblog/tests/src/Functional/DbLogResourceTest.php index 12cd954f96a3..4294949ef995 100644 --- a/core/modules/dblog/tests/src/Functional/DbLogResourceTest.php +++ b/core/modules/dblog/tests/src/Functional/DbLogResourceTest.php @@ -118,7 +118,7 @@ protected function setUpAuthorization($method) { /** * {@inheritdoc} */ - protected function assertNormalizationEdgeCases($method, Url $url, array $request_options) {} + protected function assertNormalizationEdgeCases($method, Url $url, array $request_options): void {} /** * {@inheritdoc} diff --git a/core/modules/dblog/tests/src/Functional/DbLogTest.php b/core/modules/dblog/tests/src/Functional/DbLogTest.php index 4b7ef3c2266f..f83931cf4de1 100644 --- a/core/modules/dblog/tests/src/Functional/DbLogTest.php +++ b/core/modules/dblog/tests/src/Functional/DbLogTest.php @@ -819,8 +819,10 @@ protected function getSeverityConstant($class) { * The database log message to check. * @param string $message * The message to pass to simpletest. + * + * @internal */ - protected function assertLogMessage($log_message, $message) { + protected function assertLogMessage(string $log_message, string $message): void { $message_text = Unicode::truncate($log_message, 56, TRUE, TRUE); $this->assertSession()->linkExists($message_text, 0, $message); } diff --git a/core/modules/editor/tests/src/Functional/EditorUploadImageScaleTest.php b/core/modules/editor/tests/src/Functional/EditorUploadImageScaleTest.php index 4196769ac856..e983ea88fd48 100644 --- a/core/modules/editor/tests/src/Functional/EditorUploadImageScaleTest.php +++ b/core/modules/editor/tests/src/Functional/EditorUploadImageScaleTest.php @@ -214,12 +214,14 @@ protected function uploadImage($uri) { /** * Asserts whether the saved maximum dimensions equal the ones provided. * - * @param string $width + * @param int|null $width * The expected width of the uploaded image. - * @param string $height + * @param int|null $height * The expected height of the uploaded image. + * + * @internal */ - protected function assertSavedMaxDimensions($width, $height) { + protected function assertSavedMaxDimensions(?int $width, ?int $height): void { $image_upload_settings = Editor::load('basic_html')->getImageUploadSettings(); $expected = [ 'width' => $image_upload_settings['max_dimensions']['width'], diff --git a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAdminTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAdminTest.php index a9b551084e8a..22c1d958a50b 100644 --- a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAdminTest.php +++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAdminTest.php @@ -398,8 +398,10 @@ protected function createEntityReferenceField($target_type, $bundles = []) { * The field name. * @param array $expected_options * An array of expected options. + * + * @internal */ - protected function assertFieldSelectOptions($name, array $expected_options) { + protected function assertFieldSelectOptions(string $name, array $expected_options): void { $options = $this->assertSession()->selectExists($name)->findAll('xpath', 'option'); array_walk($options, function (NodeElement &$option) { $option = $option->getValue(); diff --git a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php index 58b51dc7e0b7..e69abc86d91c 100644 --- a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php +++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php @@ -175,8 +175,10 @@ public function testEntityReferenceDisplay() { /** * Assert entity reference display. + * + * @internal */ - protected function assertEntityReferenceDisplay() { + protected function assertEntityReferenceDisplay(): void { $url = $this->referrerEntity->toUrl(); $translation_url = $this->referrerEntity->toUrl('canonical', ['language' => ConfigurableLanguage::load($this->translateToLangcode)]); @@ -192,8 +194,10 @@ protected function assertEntityReferenceDisplay() { /** * Assert entity reference form display. + * + * @internal */ - protected function assertEntityReferenceFormDisplay() { + protected function assertEntityReferenceFormDisplay(): void { $this->drupalLogin($this->webUser); $url = $this->referrerEntity->toUrl('edit-form'); $translation_url = $this->referrerEntity->toUrl('edit-form', ['language' => ConfigurableLanguage::load($this->translateToLangcode)]); diff --git a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceIntegrationTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceIntegrationTest.php index dd6f8d5900f9..bf0ebc2b6d6d 100644 --- a/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceIntegrationTest.php +++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceIntegrationTest.php @@ -196,8 +196,10 @@ public function testSupportedEntityTypesAndWidgets() { * The name of the test entity. * @param \Drupal\Core\Entity\EntityInterface[] $referenced_entities * An array of referenced entities. + * + * @internal */ - protected function assertFieldValues($entity_name, $referenced_entities) { + protected function assertFieldValues(string $entity_name, array $referenced_entities): void { $entity = current($this->container->get('entity_type.manager')->getStorage( $this->entityType)->loadByProperties(['name' => $entity_name])); diff --git a/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php b/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php index 595aba8e22c8..98253c179f95 100644 --- a/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php +++ b/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php @@ -4,6 +4,7 @@ use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; +use Drupal\field\FieldConfigInterface; use Drupal\Tests\BrowserTestBase; /** @@ -426,8 +427,10 @@ public function testCreateNumberDecimalField() { /** * Helper function to set the minimum value of a field. + * + * @internal */ - public function assertSetMinimumValue($field, $minimum_value) { + public function assertSetMinimumValue(FieldConfigInterface $field, int $minimum_value): void { $field_configuration_url = 'entity_test/structure/entity_test/fields/entity_test.entity_test.' . $field->getName(); // Set the minimum value. diff --git a/core/modules/field/tests/src/FunctionalJavascript/EntityReference/EntityReferenceAdminTest.php b/core/modules/field/tests/src/FunctionalJavascript/EntityReference/EntityReferenceAdminTest.php index 3273c7a15321..f19f4ed37c41 100644 --- a/core/modules/field/tests/src/FunctionalJavascript/EntityReference/EntityReferenceAdminTest.php +++ b/core/modules/field/tests/src/FunctionalJavascript/EntityReference/EntityReferenceAdminTest.php @@ -352,8 +352,10 @@ public function testFieldAdminHandler() { * The field name. * @param array $expected_options * An array of expected options. + * + * @internal */ - protected function assertFieldSelectOptions($name, array $expected_options) { + protected function assertFieldSelectOptions(string $name, array $expected_options): void { $field = $this->assertSession()->selectExists($name); $options = $field->findAll('xpath', 'option'); $optgroups = $field->findAll('xpath', 'optgroup'); diff --git a/core/modules/field/tests/src/Kernel/EntityReference/Views/SelectionTest.php b/core/modules/field/tests/src/Kernel/EntityReference/Views/SelectionTest.php index 58c1594ef65f..2e0b3a102340 100644 --- a/core/modules/field/tests/src/Kernel/EntityReference/Views/SelectionTest.php +++ b/core/modules/field/tests/src/Kernel/EntityReference/Views/SelectionTest.php @@ -150,8 +150,10 @@ public function testAnchorTagStripping() { * * @param array $result * Query results keyed by node type and nid. + * + * @internal */ - protected function assertResults(array $result) { + protected function assertResults(array $result): void { foreach ($result as $node_type => $values) { foreach ($values as $nid => $label) { $this->assertSame($node_type, $this->nodes[$nid]->bundle()); diff --git a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldFormatterSettingsTest.php b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldFormatterSettingsTest.php index b78961183c80..83fac6e47f23 100644 --- a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldFormatterSettingsTest.php +++ b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldFormatterSettingsTest.php @@ -34,8 +34,10 @@ protected function setUp(): void { * The display ID. * @param string $component_id * The component ID. + * + * @internal */ - protected function assertComponentNotExists($display_id, $component_id) { + protected function assertComponentNotExists(string $display_id, string $component_id): void { $component = EntityViewDisplay::load($display_id)->getComponent($component_id); $this->assertNull($component); } diff --git a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldFormatterSettingsTest.php b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldFormatterSettingsTest.php index 162039c390df..3df1b43de0b9 100644 --- a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldFormatterSettingsTest.php +++ b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldFormatterSettingsTest.php @@ -43,8 +43,10 @@ protected function setUp(): void { * * @param string $id * The view display ID. + * + * @internal */ - protected function assertEntity($id) { + protected function assertEntity(string $id): void { $display = EntityViewDisplay::load($id); $this->assertInstanceOf(EntityViewDisplayInterface::class, $display); } @@ -62,8 +64,10 @@ protected function assertEntity($id) { * The expected label of the component. * @param int $weight * The expected weight of the component. + * + * @internal */ - protected function assertComponent($display_id, $component_id, $type, $label, $weight) { + protected function assertComponent(string $display_id, string $component_id, string $type, string $label, int $weight): void { $component = EntityViewDisplay::load($display_id)->getComponent($component_id); $this->assertIsArray($component); $this->assertSame($type, $component['type']); @@ -78,8 +82,10 @@ protected function assertComponent($display_id, $component_id, $type, $label, $w * The display ID. * @param string $component_id * The component ID. + * + * @internal */ - protected function assertComponentNotExists($display_id, $component_id) { + protected function assertComponentNotExists(string $display_id, string $component_id): void { $component = EntityViewDisplay::load($display_id)->getComponent($component_id); $this->assertNull($component); } diff --git a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceTest.php b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceTest.php index 31264bcde6bf..8679f83f6dcc 100644 --- a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceTest.php +++ b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceTest.php @@ -50,8 +50,10 @@ protected function setUp(): void { * Whether or not the field is required. * @param bool $expected_translatable * Whether or not the field is expected to be translatable. + * + * @internal */ - protected function assertEntity($id, $expected_label, $expected_field_type, $is_required, $expected_translatable) { + protected function assertEntity(string $id, string $expected_label, string $expected_field_type, bool $is_required, bool $expected_translatable): void { [$expected_entity_type, $expected_bundle, $expected_name] = explode('.', $id); /** @var \Drupal\field\FieldConfigInterface $field */ @@ -70,12 +72,14 @@ protected function assertEntity($id, $expected_label, $expected_field_type, $is_ /** * Asserts the settings of a link field config entity. * - * @param $id + * @param string $id * The entity ID in the form ENTITY_TYPE.BUNDLE.FIELD_NAME. - * @param $title_setting + * @param int $title_setting * The expected title setting. + * + * @internal */ - protected function assertLinkFields($id, $title_setting) { + protected function assertLinkFields(string $id, int $title_setting): void { $field = FieldConfig::load($id); $this->assertSame($title_setting, $field->getSetting('title')); } @@ -87,8 +91,10 @@ protected function assertLinkFields($id, $title_setting) { * The entity ID in the form ENTITY_TYPE.BUNDLE.FIELD_NAME. * @param string[] $target_bundles * An array of expected target bundles. + * + * @internal */ - protected function assertEntityReferenceFields($id, array $target_bundles) { + protected function assertEntityReferenceFields(string $id, array $target_bundles): void { $field = FieldConfig::load($id); $handler_settings = $field->getSetting('handler_settings'); $this->assertArrayHasKey('target_bundles', $handler_settings); diff --git a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceWidgetSettingsTest.php b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceWidgetSettingsTest.php index f04f1e5c0297..bf0226773134 100644 --- a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceWidgetSettingsTest.php +++ b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldInstanceWidgetSettingsTest.php @@ -49,8 +49,10 @@ protected function setUp(): void { * The expected entity type to which the display settings are attached. * @param string $expected_bundle * The expected bundle to which the display settings are attached. + * + * @internal */ - protected function assertEntity($id, $expected_entity_type, $expected_bundle) { + protected function assertEntity(string $id, string $expected_entity_type, string $expected_bundle): void { /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $entity */ $entity = EntityFormDisplay::load($id); $this->assertInstanceOf(EntityFormDisplayInterface::class, $entity); @@ -67,10 +69,12 @@ protected function assertEntity($id, $expected_entity_type, $expected_bundle) { * The component ID. * @param string $widget_type * The expected widget type. - * @param string $weight + * @param int $weight * The expected weight of the component. + * + * @internal */ - protected function assertComponent($display_id, $component_id, $widget_type, $weight) { + protected function assertComponent(string $display_id, string $component_id, string $widget_type, int $weight): void { $component = EntityFormDisplay::load($display_id)->getComponent($component_id); $this->assertIsArray($component); $this->assertSame($widget_type, $component['type']); diff --git a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldTest.php b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldTest.php index a08996a480ea..cdc96c455bc0 100644 --- a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldTest.php +++ b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldTest.php @@ -42,8 +42,10 @@ class MigrateFieldTest extends MigrateDrupal7TestBase { * Whether or not the field is expected to be translatable. * @param int $expected_cardinality * The expected cardinality of the field. + * + * @internal */ - protected function assertEntity($id, $expected_type, $expected_translatable, $expected_cardinality) { + protected function assertEntity(string $id, string $expected_type, bool $expected_translatable, int $expected_cardinality): void { [$expected_entity_type, $expected_name] = explode('.', $id); /** @var \Drupal\field\FieldStorageConfigInterface $field */ diff --git a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateViewModesTest.php b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateViewModesTest.php index 4bdd5f5897c1..1e7229481574 100644 --- a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateViewModesTest.php +++ b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateViewModesTest.php @@ -34,8 +34,10 @@ protected function setUp(): void { * The expected label of the view mode. * @param string $entity_type * The expected entity type ID which owns the view mode. + * + * @internal */ - protected function assertEntity($id, $label, $entity_type) { + protected function assertEntity(string $id, string $label, string $entity_type): void { /** @var \Drupal\Core\Entity\EntityViewModeInterface $view_mode */ $view_mode = EntityViewMode::load($id); $this->assertInstanceOf(EntityViewModeInterface::class, $view_mode); diff --git a/core/modules/field/tests/src/Unit/FieldStorageConfigAccessControlHandlerTest.php b/core/modules/field/tests/src/Unit/FieldStorageConfigAccessControlHandlerTest.php index f613d08cd18b..fc94687a725d 100644 --- a/core/modules/field/tests/src/Unit/FieldStorageConfigAccessControlHandlerTest.php +++ b/core/modules/field/tests/src/Unit/FieldStorageConfigAccessControlHandlerTest.php @@ -164,8 +164,10 @@ protected function setUp(): void { * A list of allowed operations. * @param \Drupal\Core\Session\AccountInterface $user * The account to use for get access. + * + * @internal */ - public function assertAllowOperations(array $allow_operations, AccountInterface $user) { + public function assertAllowOperations(array $allow_operations, AccountInterface $user): void { foreach (['view', 'update', 'delete'] as $operation) { $expected = in_array($operation, $allow_operations); $actual = $this->accessControlHandler->access($this->entity, $operation, $user); diff --git a/core/modules/field_layout/tests/src/FunctionalJavascript/FieldLayoutTest.php b/core/modules/field_layout/tests/src/FunctionalJavascript/FieldLayoutTest.php index 7ad41defd3c1..467114bc7254 100644 --- a/core/modules/field_layout/tests/src/FunctionalJavascript/FieldLayoutTest.php +++ b/core/modules/field_layout/tests/src/FunctionalJavascript/FieldLayoutTest.php @@ -306,8 +306,10 @@ protected function getRegionTitles() { * The field selector, one of field id|name|label|value. * @param string $region_name * The machine name of the region. + * + * @internal */ - protected function assertFieldInRegion($field_selector, $region_name) { + protected function assertFieldInRegion(string $field_selector, string $region_name): void { $region_element = $this->getSession()->getPage()->find('css', ".layout__region--$region_name"); $this->assertNotNull($region_element); $this->assertSession()->fieldExists($field_selector, $region_element); diff --git a/core/modules/field_layout/tests/src/Kernel/FieldLayoutEntityDisplayTest.php b/core/modules/field_layout/tests/src/Kernel/FieldLayoutEntityDisplayTest.php index 0042c7b0585a..3232d45ce829 100644 --- a/core/modules/field_layout/tests/src/Kernel/FieldLayoutEntityDisplayTest.php +++ b/core/modules/field_layout/tests/src/Kernel/FieldLayoutEntityDisplayTest.php @@ -175,14 +175,16 @@ public function testPreSave() { /** * Asserts than an entity has the correct values. * - * @param mixed $expected + * @param array $expected * The expected values. * @param array $values * The actual values. * @param string $message * (optional) An error message. + * + * @internal */ - public static function assertEntityValues($expected, array $values, $message = '') { + public static function assertEntityValues(array $expected, array $values, string $message = ''): void { static::assertArrayHasKey('uuid', $values); unset($values['uuid']); diff --git a/core/modules/field_ui/tests/src/Functional/FieldUIRouteTest.php b/core/modules/field_ui/tests/src/Functional/FieldUIRouteTest.php index 5c073ae73900..ea72a387a13b 100644 --- a/core/modules/field_ui/tests/src/Functional/FieldUIRouteTest.php +++ b/core/modules/field_ui/tests/src/Functional/FieldUIRouteTest.php @@ -108,8 +108,10 @@ public function testFieldUIRoutes() { /** * Asserts that local tasks exists. + * + * @internal */ - public function assertLocalTasks() { + public function assertLocalTasks(): void { $this->assertSession()->linkExists('Settings'); $this->assertSession()->linkExists('Manage fields'); $this->assertSession()->linkExists('Manage display'); diff --git a/core/modules/field_ui/tests/src/Functional/ManageDisplayTest.php b/core/modules/field_ui/tests/src/Functional/ManageDisplayTest.php index d0cbe7fba862..864733e8b399 100644 --- a/core/modules/field_ui/tests/src/Functional/ManageDisplayTest.php +++ b/core/modules/field_ui/tests/src/Functional/ManageDisplayTest.php @@ -220,18 +220,17 @@ public function testNoFieldsDisplayOverview() { * * @param \Drupal\Core\Entity\EntityInterface $node * The node. - * @param $view_mode + * @param string $view_mode * The view mode in which the node should be displayed. - * @param $text + * @param string $text * Plain text to look for. - * @param $message + * @param string $message * Message to display. * - * @return - * TRUE on pass, FALSE on fail. + * @internal */ - public function assertNodeViewText(EntityInterface $node, $view_mode, $text, $message) { - return $this->assertNodeViewTextHelper($node, $view_mode, $text, $message, FALSE); + public function assertNodeViewText(EntityInterface $node, string $view_mode, string $text, string $message): void { + $this->assertNodeViewTextHelper($node, $view_mode, $text, $message, FALSE); } /** @@ -239,18 +238,17 @@ public function assertNodeViewText(EntityInterface $node, $view_mode, $text, $me * * @param \Drupal\Core\Entity\EntityInterface $node * The node. - * @param $view_mode + * @param string $view_mode * The view mode in which the node should be displayed. - * @param $text + * @param string $text * Plain text to look for. - * @param $message + * @param string $message * Message to display. * - * @return - * TRUE on pass, FALSE on fail. + * @internal */ - public function assertNodeViewNoText(EntityInterface $node, $view_mode, $text, $message) { - return $this->assertNodeViewTextHelper($node, $view_mode, $text, $message, TRUE); + public function assertNodeViewNoText(EntityInterface $node, string $view_mode, string $text, string $message): void { + $this->assertNodeViewTextHelper($node, $view_mode, $text, $message, TRUE); } /** @@ -261,16 +259,18 @@ public function assertNodeViewNoText(EntityInterface $node, $view_mode, $text, $ * * @param \Drupal\Core\Entity\EntityInterface $node * The node. - * @param $view_mode + * @param string $view_mode * The view mode in which the node should be displayed. - * @param $text + * @param string $text * Plain text to look for. - * @param $message + * @param string $message * Message to display. - * @param $not_exists + * @param bool $not_exists * TRUE if this text should not exist, FALSE if it should. + * + * @internal */ - public function assertNodeViewTextHelper(EntityInterface $node, $view_mode, $text, $message, $not_exists) { + public function assertNodeViewTextHelper(EntityInterface $node, string $view_mode, string $text, string $message, bool $not_exists): void { // Make sure caches on the tester side are refreshed after changes // submitted on the tested side. \Drupal::service('entity_field.manager')->clearCachedFieldDefinitions(); @@ -297,8 +297,10 @@ public function assertNodeViewTextHelper(EntityInterface $node, $view_mode, $tex * The field name. * @param array $expected_options * An array of expected options. + * + * @internal */ - protected function assertFieldSelectOptions($name, array $expected_options) { + protected function assertFieldSelectOptions(string $name, array $expected_options): void { $xpath = $this->assertSession()->buildXPathQuery('//select[@name=:name]', [':name' => $name]); $fields = $this->xpath($xpath); if ($fields) { diff --git a/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php b/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php index 1d54d2847135..1cc2b5adb848 100644 --- a/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php +++ b/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php @@ -439,16 +439,18 @@ protected function addPersistentFieldStorage() { /** * Asserts field settings are as expected. * - * @param $bundle + * @param string $bundle * The bundle name for the field. - * @param $field_name + * @param string $field_name * The field name for the field. - * @param $string + * @param string $string * The settings text. - * @param $entity_type + * @param string $entity_type * The entity type for the field. + * + * @internal */ - public function assertFieldSettings($bundle, $field_name, $string = 'dummy test string', $entity_type = 'node') { + public function assertFieldSettings(string $bundle, string $field_name, string $string = 'dummy test string', string $entity_type = 'node'): void { // Assert field storage settings. $field_storage = FieldStorageConfig::loadByName($entity_type, $field_name); $this->assertSame($string, $field_storage->getSetting('test_field_storage_setting'), 'Field storage settings were found.'); diff --git a/core/modules/field_ui/tests/src/FunctionalJavascript/ManageDisplayTest.php b/core/modules/field_ui/tests/src/FunctionalJavascript/ManageDisplayTest.php index c0ee1aff261e..97489fb8fcbf 100644 --- a/core/modules/field_ui/tests/src/FunctionalJavascript/ManageDisplayTest.php +++ b/core/modules/field_ui/tests/src/FunctionalJavascript/ManageDisplayTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\field_ui\FunctionalJavascript; +use Behat\Mink\Element\NodeElement; use Drupal\Core\Entity\Entity\EntityFormDisplay; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; @@ -387,10 +388,12 @@ public function testWidgetUI() { * The select field to validate. * @param array $expected_options * An array of expected options. - * @param null $selected + * @param string|null $selected * The default value to validate. + * + * @internal */ - protected function assertFieldSelectOptions($field, array $expected_options, $selected = NULL) { + protected function assertFieldSelectOptions(NodeElement $field, array $expected_options, ?string $selected = NULL): void { /** @var \Behat\Mink\Element\NodeElement[] $select_options */ $select_options = $field->findAll('xpath', 'option'); diff --git a/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php b/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php index 84ad60cd3c0b..358c1f04e15b 100644 --- a/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php +++ b/core/modules/field_ui/tests/src/Kernel/EntityDisplayTest.php @@ -649,11 +649,10 @@ public function testComponentDependencies() { * @param \Drupal\Core\Entity\Display\EntityDisplayInterface $display * The entity display object to get dependencies from. * - * @return bool - * TRUE if the assertion succeeded, FALSE otherwise. + * @internal */ - protected function assertDependency($type, $key, EntityDisplayInterface $display) { - return $this->assertDependencyHelper(TRUE, $type, $key, $display); + protected function assertDependency(string $type, string $key, EntityDisplayInterface $display): void { + $this->assertDependencyHelper(TRUE, $type, $key, $display); } /** @@ -666,11 +665,10 @@ protected function assertDependency($type, $key, EntityDisplayInterface $display * @param \Drupal\Core\Entity\Display\EntityDisplayInterface $display * The entity display object to get dependencies from. * - * @return bool - * TRUE if the assertion succeeded, FALSE otherwise. + * @internal */ - protected function assertNoDependency($type, $key, EntityDisplayInterface $display) { - return $this->assertDependencyHelper(FALSE, $type, $key, $display); + protected function assertNoDependency(string $type, string $key, EntityDisplayInterface $display): void { + $this->assertDependencyHelper(FALSE, $type, $key, $display); } /** @@ -685,10 +683,9 @@ protected function assertNoDependency($type, $key, EntityDisplayInterface $displ * @param \Drupal\Core\Entity\Display\EntityDisplayInterface $display * The entity display object to get dependencies from. * - * @return bool - * TRUE if the assertion succeeded. + * @internal */ - protected function assertDependencyHelper($assertion, $type, $key, EntityDisplayInterface $display) { + protected function assertDependencyHelper(bool $assertion, string $type, string $key, EntityDisplayInterface $display): void { $all_dependencies = $display->getDependencies(); $dependencies = !empty($all_dependencies[$type]) ? $all_dependencies[$type] : []; $context = $display instanceof EntityViewDisplayInterface ? 'View' : 'Form'; @@ -696,7 +693,6 @@ protected function assertDependencyHelper($assertion, $type, $key, EntityDisplay $args = ['@context' => $context, '@id' => $display->id(), '@type' => $type, '@key' => $key]; $message = $assertion ? new FormattableMarkup("@context display '@id' depends on @type '@key'.", $args) : new FormattableMarkup("@context display '@id' do not depend on @type '@key'.", $args); $this->assertTrue($value, $message); - return TRUE; } } diff --git a/core/modules/file/tests/src/Functional/FileFieldPathTest.php b/core/modules/file/tests/src/Functional/FileFieldPathTest.php index f89e9982b8bd..4a139ab7da51 100644 --- a/core/modules/file/tests/src/Functional/FileFieldPathTest.php +++ b/core/modules/file/tests/src/Functional/FileFieldPathTest.php @@ -85,8 +85,10 @@ public function testUploadPath() { * Where the file was actually uploaded. * @param string $message * The message to display with this assertion. + * + * @internal */ - public function assertPathMatch($expected_path, $actual_path, $message) { + public function assertPathMatch(string $expected_path, string $actual_path, string $message): void { // Strip off the extension of the expected path to allow for _0, _1, etc. // suffixes when the file hits a duplicate name. $pos = strrpos($expected_path, '.'); diff --git a/core/modules/file/tests/src/Kernel/Migrate/d6/MigrateFileTest.php b/core/modules/file/tests/src/Kernel/Migrate/d6/MigrateFileTest.php index 29f4914fa766..9141f031a706 100644 --- a/core/modules/file/tests/src/Kernel/Migrate/d6/MigrateFileTest.php +++ b/core/modules/file/tests/src/Kernel/Migrate/d6/MigrateFileTest.php @@ -49,26 +49,28 @@ protected function setUp(): void { * The expected MIME type. * @param int $uid * The expected file owner ID. + * + * @internal */ - protected function assertEntity($fid, $name, $size, $uri, $type, $uid) { + protected function assertEntity(int $fid, string $name, int $size, string $uri, string $type, int $uid): void { /** @var \Drupal\file\FileInterface $file */ $file = File::load($fid); $this->assertInstanceOf(FileInterface::class, $file); $this->assertSame($name, $file->getFilename()); - $this->assertSame($size, $file->getSize()); + $this->assertSame($size, (int) $file->getSize()); $this->assertSame($uri, $file->getFileUri()); $this->assertSame($type, $file->getMimeType()); - $this->assertSame($uid, $file->getOwnerId()); + $this->assertSame($uid, (int) $file->getOwnerId()); } /** * Tests the Drupal 6 files to Drupal 8 migration. */ public function testFiles() { - $this->assertEntity(1, 'Image1.png', '39325', 'public://image-1.png', 'image/png', '1'); - $this->assertEntity(2, 'Image2.jpg', '1831', 'public://image-2.jpg', 'image/jpeg', '1'); - $this->assertEntity(3, 'image-3.jpg', '1831', 'public://image-3.jpg', 'image/jpeg', '1'); - $this->assertEntity(4, 'html-1.txt', '24', 'public://html-1.txt', 'text/plain', '1'); + $this->assertEntity(1, 'Image1.png', 39325, 'public://image-1.png', 'image/png', 1); + $this->assertEntity(2, 'Image2.jpg', 1831, 'public://image-2.jpg', 'image/jpeg', 1); + $this->assertEntity(3, 'image-3.jpg', 1831, 'public://image-3.jpg', 'image/jpeg', 1); + $this->assertEntity(4, 'html-1.txt', 24, 'public://html-1.txt', 'text/plain', 1); // Ensure temporary file was not migrated. $this->assertNull(File::load(6)); diff --git a/core/modules/filter/tests/src/Functional/FilterFormTest.php b/core/modules/filter/tests/src/Functional/FilterFormTest.php index e7f9247e0680..bfe9f2bb631d 100644 --- a/core/modules/filter/tests/src/Functional/FilterFormTest.php +++ b/core/modules/filter/tests/src/Functional/FilterFormTest.php @@ -175,8 +175,10 @@ protected function doFilterFormTestAsNonAdmin() { * * @param string $id * The HTML ID of the select element. + * + * @internal */ - protected function assertNoSelect($id) { + protected function assertNoSelect(string $id): void { $this->assertSession()->elementNotExists('xpath', "//select[@id=$id]"); } @@ -190,10 +192,9 @@ protected function assertNoSelect($id) { * @param string $selected * The value of the selected option. * - * @return bool - * TRUE if the assertion passed; FALSE otherwise. + * @internal */ - protected function assertOptions($id, array $expected_options, $selected) { + protected function assertOptions(string $id, array $expected_options, string $selected): void { $select = $this->assertSession()->selectExists($id); $found_options = $select->findAll('css', 'option'); $found_options = array_map(function ($item) { @@ -212,10 +213,9 @@ protected function assertOptions($id, array $expected_options, $selected) { * An array of option values that are contained in the select element * besides the "- Select -" option. * - * @return bool - * TRUE if the assertion passed; FALSE otherwise. + * @internal */ - protected function assertRequiredSelectAndOptions($id, array $options) { + protected function assertRequiredSelectAndOptions(string $id, array $options): void { $select = $this->assertSession()->selectExists($id); $this->assertSame('required', $select->getAttribute('required')); // A required select element has a "- Select -" option whose key is an empty @@ -230,10 +230,9 @@ protected function assertRequiredSelectAndOptions($id, array $options) { * @param string $id * The HTML ID of the textarea. * - * @return bool - * TRUE if the assertion passed; FALSE otherwise. + * @internal */ - protected function assertEnabledTextarea($id) { + protected function assertEnabledTextarea(string $id): void { $textarea = $this->assertSession()->fieldEnabled($id); $this->assertSame('textarea', $textarea->getTagName()); } @@ -244,10 +243,9 @@ protected function assertEnabledTextarea($id) { * @param string $id * The HTML ID of the textarea. * - * @return bool - * TRUE if the assertion passed; FALSE otherwise. + * @internal */ - protected function assertDisabledTextarea($id) { + protected function assertDisabledTextarea(string $id): void { $textarea = $this->assertSession()->fieldDisabled($id); $this->assertSame('textarea', $textarea->getTagName()); $this->assertSame('This field has been disabled because you do not have sufficient permissions to edit it.', $textarea->getText()); diff --git a/core/modules/filter/tests/src/Kernel/FilterAPITest.php b/core/modules/filter/tests/src/Kernel/FilterAPITest.php index 76255f6f7ebd..34a2ed13f406 100644 --- a/core/modules/filter/tests/src/Kernel/FilterAPITest.php +++ b/core/modules/filter/tests/src/Kernel/FilterAPITest.php @@ -430,10 +430,12 @@ public function testFilterFormatPreSave() { * * @param \Symfony\Component\Validator\ConstraintViolationListInterface $violations * The violations to assert. - * @param mixed $invalid_value + * @param string $invalid_value * The expected invalid value. + * + * @internal */ - public function assertFilterFormatViolation(ConstraintViolationListInterface $violations, $invalid_value) { + public function assertFilterFormatViolation(ConstraintViolationListInterface $violations, string $invalid_value): void { $filter_format_violation_found = FALSE; foreach ($violations as $violation) { if ($violation->getRoot() instanceof FilterFormatDataType && $violation->getInvalidValue() === $invalid_value) { diff --git a/core/modules/filter/tests/src/Kernel/FilterKernelTest.php b/core/modules/filter/tests/src/Kernel/FilterKernelTest.php index f51f86a6710d..c7f9b5fadfb8 100644 --- a/core/modules/filter/tests/src/Kernel/FilterKernelTest.php +++ b/core/modules/filter/tests/src/Kernel/FilterKernelTest.php @@ -9,6 +9,7 @@ use Drupal\editor\EditorXssFilter\Standard; use Drupal\filter\Entity\FilterFormat; use Drupal\filter\FilterPluginCollection; +use Drupal\filter\Plugin\FilterInterface; use Drupal\KernelTests\KernelTestBase; /** @@ -860,7 +861,7 @@ public function testUrlFilter() { /** * Asserts multiple filter output expectations for multiple input strings. * - * @param FilterInterface $filter + * @param \Drupal\filter\Plugin\FilterInterface $filter * An input filter object. * @param array $tests * An associative array, whereas each key is an arbitrary input string and @@ -875,8 +876,10 @@ public function testUrlFilter() { * ), * ); * @endcode + * + * @internal */ - public function assertFilteredString($filter, $tests) { + public function assertFilteredString(FilterInterface $filter, array $tests): void { foreach ($tests as $source => $tasks) { $result = $filter->process($source, $filter)->getProcessedText(); foreach ($tasks as $value => $is_expected) { @@ -1141,8 +1144,10 @@ public function testHtmlCorrectorFilter() { * (optional) Message to display if failed. Defaults to an empty string. * @param string $group * (optional) The group this message belongs to. Defaults to 'Other'. + * + * @internal */ - public function assertNormalized($haystack, $needle, $message = '', $group = 'Other') { + public function assertNormalized(string $haystack, string $needle, string $message = '', string $group = 'Other'): void { $this->assertStringContainsString($needle, strtolower(Html::decodeEntities($haystack)), $message); } @@ -1163,8 +1168,10 @@ public function assertNormalized($haystack, $needle, $message = '', $group = 'Ot * (optional) Message to display if failed. Defaults to an empty string. * @param string $group * (optional) The group this message belongs to. Defaults to 'Other'. + * + * @internal */ - public function assertNoNormalized($haystack, $needle, $message = '', $group = 'Other') { + public function assertNoNormalized(string $haystack, string $needle, string $message = '', string $group = 'Other'): void { $this->assertStringNotContainsString($needle, strtolower(Html::decodeEntities($haystack)), $message); } diff --git a/core/modules/filter/tests/src/Kernel/Migrate/d7/MigrateFilterFormatTest.php b/core/modules/filter/tests/src/Kernel/Migrate/d7/MigrateFilterFormatTest.php index c32885eae14b..72fd8dcd6213 100644 --- a/core/modules/filter/tests/src/Kernel/Migrate/d7/MigrateFilterFormatTest.php +++ b/core/modules/filter/tests/src/Kernel/Migrate/d7/MigrateFilterFormatTest.php @@ -67,8 +67,10 @@ public static function migrateDumpAlter(KernelTestBase $test) { * The weight of the filter. * @param bool $status * The status of the filter. + * + * @internal */ - protected function assertEntity($id, $label, array $enabled_filters, $weight, $status) { + protected function assertEntity(string $id, string $label, array $enabled_filters, int $weight, bool $status): void { /** @var \Drupal\filter\FilterFormatInterface $entity */ $entity = FilterFormat::load($id); $this->assertInstanceOf(FilterFormatInterface::class, $entity); diff --git a/core/modules/help_topics/tests/src/Functional/HelpTopicSearchTest.php b/core/modules/help_topics/tests/src/Functional/HelpTopicSearchTest.php index 84e34b3af4fe..4aac99d5bd07 100644 --- a/core/modules/help_topics/tests/src/Functional/HelpTopicSearchTest.php +++ b/core/modules/help_topics/tests/src/Functional/HelpTopicSearchTest.php @@ -290,8 +290,10 @@ public function testUninstallSearch() { * * @param int $count * The expected number of search results. + * + * @internal */ - protected function assertSearchResultsCount($count) { + protected function assertSearchResultsCount(int $count): void { $this->assertSession()->elementsCount('css', '.help_search-results > li', $count); } diff --git a/core/modules/image/tests/src/Kernel/ImageFormatterTest.php b/core/modules/image/tests/src/Kernel/ImageFormatterTest.php index da0e59845fe4..0def1eea4163 100644 --- a/core/modules/image/tests/src/Kernel/ImageFormatterTest.php +++ b/core/modules/image/tests/src/Kernel/ImageFormatterTest.php @@ -206,8 +206,10 @@ public function testImageFormatterUrlOptions() { * The renderable array. Must have a #cache[tags] element. * @param array $cache_tags * The expected cache tags. + * + * @internal */ - protected function assertCacheTags(array $renderable, array $cache_tags) { + protected function assertCacheTags(array $renderable, array $cache_tags): void { $diff = array_diff($cache_tags, $renderable['#cache']['tags']); $this->assertEmpty($diff); } diff --git a/core/modules/image/tests/src/Kernel/Migrate/d6/MigrateImageCacheTest.php b/core/modules/image/tests/src/Kernel/Migrate/d6/MigrateImageCacheTest.php index c4e3d5d46c41..89009fd05886 100644 --- a/core/modules/image/tests/src/Kernel/Migrate/d6/MigrateImageCacheTest.php +++ b/core/modules/image/tests/src/Kernel/Migrate/d6/MigrateImageCacheTest.php @@ -4,6 +4,7 @@ use Drupal\Core\Database\Database; use Drupal\image\Entity\ImageStyle; +use Drupal\image\ImageEffectPluginCollection; use Drupal\migrate\Plugin\MigrationInterface; use Drupal\migrate\Exception\RequirementsException; use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase; @@ -141,27 +142,27 @@ public function testInvalidCropValues() { /** * Assert that a given image effect is migrated. * - * @param array $collection + * @param \Drupal\image\ImageEffectPluginCollection $collection * Collection of effects - * @param $id + * @param string $id * Id that should exist in the collection. - * @param $config + * @param array $config * Expected configuration for the collection. * - * @return bool + * @internal */ - protected function assertImageEffect($collection, $id, $config) { + protected function assertImageEffect(ImageEffectPluginCollection $collection, string $id, array $config): void { /** @var \Drupal\image\ConfigurableImageEffectBase $effect */ foreach ($collection as $effect) { $effect_config = $effect->getConfiguration(); if ($effect_config['id'] == $id && $effect_config['data'] == $config) { - // We found this effect so succeed and return. - return TRUE; + // We found this effect so the assertion is successful. + return; } } // The loop did not find the effect so we it was not imported correctly. - return $this->fail('Effect ' . $id . ' did not import correctly'); + $this->fail('Effect ' . $id . ' did not import correctly'); } } diff --git a/core/modules/image/tests/src/Kernel/Migrate/d7/MigrateImageStylesTest.php b/core/modules/image/tests/src/Kernel/Migrate/d7/MigrateImageStylesTest.php index 11d2a88e14da..df0f6c7d0433 100644 --- a/core/modules/image/tests/src/Kernel/Migrate/d7/MigrateImageStylesTest.php +++ b/core/modules/image/tests/src/Kernel/Migrate/d7/MigrateImageStylesTest.php @@ -49,7 +49,7 @@ public function testImageStylesMigration() { * @param array $expected_effect_config * An array of expected configuration for each effect in the image style */ - protected function assertEntity($id, $label, array $expected_effect_plugins, array $expected_effect_config) { + protected function assertEntity(string $id, string $label, array $expected_effect_plugins, array $expected_effect_config): void { $style = ImageStyle::load($id); $this->assertInstanceOf(ImageStyleInterface::class, $style); /** @var \Drupal\image\ImageStyleInterface $style */ diff --git a/core/modules/jsonapi/tests/src/Functional/FileUploadTest.php b/core/modules/jsonapi/tests/src/Functional/FileUploadTest.php index 5627ae8a4d1e..a44424b61c40 100644 --- a/core/modules/jsonapi/tests/src/Functional/FileUploadTest.php +++ b/core/modules/jsonapi/tests/src/Functional/FileUploadTest.php @@ -910,8 +910,10 @@ protected function setUpAuthorization($method) { * The expected data. * @param \Psr\Http\Message\ResponseInterface $response * The file upload response. + * + * @internal */ - protected function assertResponseData(array $expected, ResponseInterface $response) { + protected function assertResponseData(array $expected, ResponseInterface $response): void { static::recursiveKSort($expected); $actual = Json::decode((string) $response->getBody()); static::recursiveKSort($actual); diff --git a/core/modules/jsonapi/tests/src/Functional/NodeTest.php b/core/modules/jsonapi/tests/src/Functional/NodeTest.php index 3f1418bf4c62..411e0738d6fd 100644 --- a/core/modules/jsonapi/tests/src/Functional/NodeTest.php +++ b/core/modules/jsonapi/tests/src/Functional/NodeTest.php @@ -370,8 +370,10 @@ public function testGetIndividual() { * Asserts that normalizations are cached in an incremental way. * * @throws \Drupal\Core\Entity\EntityStorageException + * + * @internal */ - protected function assertCacheableNormalizations() { + protected function assertCacheableNormalizations(): void { // Save the entity to invalidate caches. $this->entity->save(); $uuid = $this->entity->uuid(); @@ -407,8 +409,10 @@ protected function assertCacheableNormalizations() { * * @param string[] $field_names * The field names. + * + * @internal */ - protected function assertNormalizedFieldsAreCached($field_names) { + protected function assertNormalizedFieldsAreCached(array $field_names): void { $cache = \Drupal::service('render_cache')->get([ '#cache' => [ 'keys' => ['node--camelids', $this->entity->uuid()], diff --git a/core/modules/jsonapi/tests/src/Functional/RestJsonApiUnsupported.php b/core/modules/jsonapi/tests/src/Functional/RestJsonApiUnsupported.php index e0a79f3f5611..d58bc02b2f70 100644 --- a/core/modules/jsonapi/tests/src/Functional/RestJsonApiUnsupported.php +++ b/core/modules/jsonapi/tests/src/Functional/RestJsonApiUnsupported.php @@ -112,7 +112,7 @@ public function testApiJsonNotSupportedInRest() { /** * {@inheritdoc} */ - protected function assertNormalizationEdgeCases($method, Url $url, array $request_options) {} + protected function assertNormalizationEdgeCases($method, Url $url, array $request_options): void {} /** * {@inheritdoc} diff --git a/core/modules/jsonapi/tests/src/Functional/UserTest.php b/core/modules/jsonapi/tests/src/Functional/UserTest.php index 21a2d99d0b58..365905b28e6e 100644 --- a/core/modules/jsonapi/tests/src/Functional/UserTest.php +++ b/core/modules/jsonapi/tests/src/Functional/UserTest.php @@ -315,8 +315,10 @@ public function testPatchDxForSecuritySensitiveBaseFields() { * The username to log in with. * @param string $password * The password to log in with. + * + * @internal */ - protected function assertRpcLogin($username, $password) { + protected function assertRpcLogin(string $username, string $password): void { $request_body = [ 'name' => $username, 'pass' => $password, diff --git a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageContentTaxonomyVocabularySettingsTest.php b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageContentTaxonomyVocabularySettingsTest.php index b7df98402bb3..dc56e20b0543 100644 --- a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageContentTaxonomyVocabularySettingsTest.php +++ b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageContentTaxonomyVocabularySettingsTest.php @@ -66,8 +66,10 @@ public function testLanguageContentTaxonomy() { * The expected state of language alterable. * @param array $third_party_settings * The content translation setting. + * + * @internal */ - public function assertLanguageContentSettings($target_entity, $bundle, $default_langcode, $language_alterable, array $third_party_settings) { + public function assertLanguageContentSettings(string $target_entity, string $bundle, string $default_langcode, bool $language_alterable, array $third_party_settings): void { $config = ContentLanguageSettings::load($target_entity . "." . $bundle); $this->assertInstanceOf(ContentLanguageSettings::class, $config); $this->assertSame($target_entity, $config->getTargetEntityTypeId()); diff --git a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageTest.php b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageTest.php index 57e0728f5957..957b1e986b13 100644 --- a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageTest.php +++ b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageTest.php @@ -28,8 +28,10 @@ class MigrateLanguageTest extends MigrateDrupal6TestBase { * ConfigurableLanguageInterface). Defaults to LTR. * @param int $weight * (optional) The weight of the language. Defaults to 0. + * + * @internal */ - protected function assertLanguage($id, $label, $direction = ConfigurableLanguageInterface::DIRECTION_LTR, $weight = 0) { + protected function assertLanguage(string $id, string $label, string $direction = ConfigurableLanguageInterface::DIRECTION_LTR, int $weight = 0): void { /** @var \Drupal\language\ConfigurableLanguageInterface $language */ $language = ConfigurableLanguage::load($id); $this->assertInstanceOf(ConfigurableLanguageInterface::class, $language); diff --git a/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageContentTaxonomyVocabularySettingsTest.php b/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageContentTaxonomyVocabularySettingsTest.php index 591cb5d9f0e0..2cacadd2394a 100644 --- a/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageContentTaxonomyVocabularySettingsTest.php +++ b/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageContentTaxonomyVocabularySettingsTest.php @@ -67,8 +67,10 @@ public function testLanguageContentTaxonomy() { * The expected state of language alterable. * @param array $third_party_settings * The content translation setting. + * + * @internal */ - public function assertLanguageContentSettings($target_entity, $bundle, $default_langcode, $language_alterable, array $third_party_settings) { + public function assertLanguageContentSettings(string $target_entity, string $bundle, string $default_langcode, bool $language_alterable, array $third_party_settings): void { $config = ContentLanguageSettings::load($target_entity . '.' . $bundle); $this->assertInstanceOf(ContentLanguageSettings::class, $config); $this->assertSame($target_entity, $config->getTargetEntityTypeId()); diff --git a/core/modules/layout_builder/tests/src/Functional/LayoutBuilderAccessTest.php b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderAccessTest.php index 2f92dbee69f7..dcf482eb8c3c 100644 --- a/core/modules/layout_builder/tests/src/Functional/LayoutBuilderAccessTest.php +++ b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderAccessTest.php @@ -279,7 +279,7 @@ public function providerTestAccessWithoutBundles() { * @param bool $expected_access * The expected access. */ - private function assertExpectedAccess($expected_access) { + private function assertExpectedAccess(bool $expected_access): void { $expected_status_code = $expected_access ? 200 : 403; $this->assertSession()->statusCodeEquals($expected_status_code); } diff --git a/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php index 085942a95489..d4314d7ecbb0 100644 --- a/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php +++ b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderTest.php @@ -1452,8 +1452,10 @@ public function testRemovingSectionWithoutLayoutLabel() { /** * Asserts that the correct layouts are available. + * + * @internal */ - protected function assertCorrectLayouts() { + protected function assertCorrectLayouts(): void { $assert_session = $this->assertSession(); // Ensure the layouts provided by layout_builder are available. $expected_layouts_hrefs = [ diff --git a/core/modules/layout_builder/tests/src/Functional/LayoutSectionTest.php b/core/modules/layout_builder/tests/src/Functional/LayoutSectionTest.php index 75fd60283905..c22938cb8b87 100644 --- a/core/modules/layout_builder/tests/src/Functional/LayoutSectionTest.php +++ b/core/modules/layout_builder/tests/src/Functional/LayoutSectionTest.php @@ -293,8 +293,10 @@ public function testLayoutDeletingBundle() { * A string of cache tags to be found in the header. * @param string $expected_dynamic_cache * The expected dynamic cache header. Either 'HIT', 'MISS' or 'UNCACHEABLE'. + * + * @internal */ - protected function assertLayoutSection($expected_selector, $expected_content, $expected_cache_contexts = '', $expected_cache_tags = '', $expected_dynamic_cache = 'MISS') { + protected function assertLayoutSection($expected_selector, $expected_content, string $expected_cache_contexts = '', string $expected_cache_tags = '', string $expected_dynamic_cache = 'MISS'): void { $assert_session = $this->assertSession(); // Find the given selector. foreach ((array) $expected_selector as $selector) { diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFilterTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFilterTest.php index d50e1fa400be..d4402a796583 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFilterTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFilterTest.php @@ -149,8 +149,10 @@ protected function filterVisibleElements(array $elements) { * * @param string $expected_message * The text expected to be present in #drupal-live-announce. + * + * @internal */ - protected function assertAnnounceContains($expected_message) { + protected function assertAnnounceContains(string $expected_message): void { $assert_session = $this->assertSession(); $this->assertNotEmpty($assert_session->waitForElement('css', "#drupal-live-announce:contains('$expected_message')")); } diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php index 4fccd1c8427e..c5e7c0cb4543 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php @@ -91,8 +91,10 @@ public function testValidationMessage() { /** * Asserts that the validation messages are shown correctly. + * + * @internal */ - protected function assertMessagesDisplayed() { + protected function assertMessagesDisplayed(): void { $assert_session = $this->assertSession(); $page = $this->getSession()->getPage(); $messages_locator = '#drupal-off-canvas .messages--error'; diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php index 01b76696c534..0d472adc8219 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/ContentPreviewToggleTest.php @@ -123,8 +123,10 @@ public function testContentPreviewToggle() { /** * Checks if contextual links are working properly. + * + * @internal */ - protected function assertContextualLinks() { + protected function assertContextualLinks(): void { $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); @@ -141,8 +143,10 @@ protected function assertContextualLinks() { * * @param string[] $items * An ordered list of strings that should appear in the blocks. + * + * @internal */ - protected function assertOrderInPage(array $items) { + protected function assertOrderInPage(array $items): void { $session = $this->getSession(); $page = $session->getPage(); $blocks = $page->findAll('css', '[data-layout-content-preview-placeholder-label]'); diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/ContextualLinksTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/ContextualLinksTest.php index fc73d5f23feb..948723323374 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/ContextualLinksTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/ContextualLinksTest.php @@ -123,8 +123,10 @@ protected function addBlock($block_name) { /** * Asserts the contextual links are correct in Layout Builder UI. + * + * @internal */ - protected function assertCorrectContextualLinksInUi() { + protected function assertCorrectContextualLinksInUi(): void { $assert_session = $this->assertSession(); $page = $this->getSession()->getPage(); $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.block-views-blocktest-block-view-block-2')); @@ -139,8 +141,10 @@ protected function assertCorrectContextualLinksInUi() { /** * Asserts the contextual links are correct on the canonical entity route. + * + * @internal */ - protected function assertCorrectContextualLinksInNode() { + protected function assertCorrectContextualLinksInNode(): void { $assert_session = $this->assertSession(); $page = $this->getSession()->getPage(); diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockPrivateFilesTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockPrivateFilesTest.php index 90bd6a5e7788..5727e9b8a403 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockPrivateFilesTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockPrivateFilesTest.php @@ -97,7 +97,7 @@ public function testPrivateFiles() { $this->assertSaveLayout(); $this->drupalGet('node/1'); - $private_href1 = $this->assertFileAccessibleOnNode($file); + $private_href1 = $this->getFileHrefAccessibleOnNode($file); // Remove the inline block with the private file. $this->drupalGet('node/1/layout'); @@ -121,7 +121,7 @@ public function testPrivateFiles() { $this->assertSaveLayout(); $this->drupalGet('node/1'); - $private_href2 = $this->assertFileAccessibleOnNode($file2); + $private_href2 = $this->getFileHrefAccessibleOnNode($file2); $this->createNewNodeRevision(1); @@ -131,7 +131,7 @@ public function testPrivateFiles() { $this->assertSaveLayout(); $this->drupalGet('node/1'); - $private_href3 = $this->assertFileAccessibleOnNode($file3); + $private_href3 = $this->getFileHrefAccessibleOnNode($file3); // $file2 is on a previous revision of the block which is on a previous // revision of the node. The user does not have access to view the previous @@ -154,7 +154,7 @@ public function testPrivateFiles() { $this->assertSaveLayout(); $this->drupalGet('node/2'); - $private_href4 = $this->assertFileAccessibleOnNode($file4); + $private_href4 = $this->getFileHrefAccessibleOnNode($file4); $this->createNewNodeRevision(2); @@ -236,7 +236,7 @@ protected function createPrivateFile($file_name) { } /** - * Asserts a file is accessible on the page. + * Returns the href of a file, asserting it is accessible on the page. * * @param \Drupal\file\FileInterface $file * The file entity. @@ -244,17 +244,16 @@ protected function createPrivateFile($file_name) { * @return string * The file href. */ - protected function assertFileAccessibleOnNode(FileInterface $file) { - $assert_session = $this->assertSession(); + protected function getFileHrefAccessibleOnNode(FileInterface $file): string { $page = $this->getSession()->getPage(); - $assert_session->linkExists($file->label()); + $this->assertSession()->linkExists($file->label()); $private_href = $page->findLink($file->label())->getAttribute('href'); $page->clickLink($file->label()); - $assert_session->pageTextContains($this->getFileSecret($file)); + $this->assertSession()->pageTextContains($this->getFileSecret($file)); // Access file directly. $this->drupalGet($private_href); - $assert_session->pageTextContains($this->getFileSecret($file)); + $this->assertSession()->pageTextContains($this->getFileSecret($file)); return $private_href; } diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTest.php index bbcd3cf5127a..773ad3a396a1 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/InlineBlockTest.php @@ -316,8 +316,10 @@ public function testInlineBlocksRevisioningIntegrity() { * The revision ID to assert. * @param array $content * The content items to assert on the page. + * + * @internal */ - protected function assertNodeRevisionContent($revision_id, array $content) { + protected function assertNodeRevisionContent(int $revision_id, array $content): void { $this->drupalGet("node/1/revisions/$revision_id/view"); foreach ($content as $content_item) { $this->assertSession()->pageTextContains($content_item); @@ -331,8 +333,10 @@ protected function assertNodeRevisionContent($revision_id, array $content) { * The block title. * @param int $expected_revision_count * The revision count. + * + * @internal */ - protected function assertBlockRevisionCountByTitle($block_title, $expected_revision_count) { + protected function assertBlockRevisionCountByTitle(string $block_title, int $expected_revision_count): void { $actual_revision_count = $this->blockStorage->getQuery() ->accessCheck(FALSE) ->condition('info', $block_title) diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderDisableInteractionsTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderDisableInteractionsTest.php index 773715c932e3..083b9682a3dc 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderDisableInteractionsTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderDisableInteractionsTest.php @@ -173,8 +173,10 @@ protected function addBlock($block_link_text, $rendered_locator) { * * @param \Behat\Mink\Element\NodeElement $element * Element being checked for. + * + * @internal */ - protected function assertElementUnclickable(NodeElement $element) { + protected function assertElementUnclickable(NodeElement $element): void { try { $element->click(); $tag_name = $element->getTagName(); @@ -188,8 +190,10 @@ protected function assertElementUnclickable(NodeElement $element) { /** * Asserts that forms, links, and iframes in preview are non-interactive. + * + * @internal */ - protected function assertLinksFormIframeNotInteractive() { + protected function assertLinksFormIframeNotInteractive(): void { $assert_session = $this->assertSession(); $page = $this->getSession()->getPage(); @@ -204,8 +208,10 @@ protected function assertLinksFormIframeNotInteractive() { /** * Confirms that Layout Builder contextual links remain active. + * + * @internal */ - protected function assertContextualLinksClickable() { + protected function assertContextualLinksClickable(): void { $assert_session = $this->assertSession(); $page = $this->getSession()->getPage(); $this->drupalGet($this->getUrl()); @@ -233,8 +239,10 @@ protected function assertContextualLinksClickable() { * This is confirmed by clicking a contextual link then moving the mouse * pointer. If mouseup is working properly, the draggable element will not * be moved by the pointer moving. + * + * @internal */ - protected function assertContextualLinkRetainsMouseup() { + protected function assertContextualLinkRetainsMouseup(): void { $assert_session = $this->assertSession(); $page = $this->getSession()->getPage(); $body_field_selector = '.block-field-blocknodebundle-with-section-fieldbody'; diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderTest.php index 1562216da593..35c8b8090c69 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderTest.php @@ -477,7 +477,7 @@ private function openAddBlockForm($block_title) { * @param string $expected_form_id * The expected form ID. */ - private function assertOffCanvasFormAfterWait($expected_form_id) { + private function assertOffCanvasFormAfterWait(string $expected_form_id): void { $this->assertSession()->assertWaitOnAjaxRequest(); $off_canvas = $this->assertSession()->waitForElementVisible('css', '#drupal-off-canvas'); $this->assertNotNull($off_canvas); @@ -503,7 +503,7 @@ private function markCurrentPage() { * * @todo Remove in https://www.drupal.org/project/drupal/issues/2909782. */ - private function assertPageNotReloaded() { + private function assertPageNotReloaded(): void { $this->assertSession()->pageTextContains($this->pageReloadMarker); } diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php index 6523bd636797..77af692cc51a 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php @@ -105,8 +105,10 @@ public function testUnsavedChangesMessage() { * * @param string $path * The path to a Layout Builder UI page. + * + * @internal */ - protected function assertModifiedLayout($path) { + protected function assertModifiedLayout(string $path): void { $assert_session = $this->assertSession(); $page = $this->getSession()->getPage(); @@ -267,7 +269,7 @@ public function testNewExtraField() { * @param string $selector * The highlighted element must also match this selector. */ - private function assertHighlightedElement($selector) { + private function assertHighlightedElement(string $selector): void { $assert_session = $this->assertSession(); $page = $this->getSession()->getPage(); @@ -281,7 +283,7 @@ private function assertHighlightedElement($selector) { /** * Waits for the dialog to close and confirms no highlights are present. */ - private function assertHighlightNotExists() { + private function assertHighlightNotExists(): void { $assert_session = $this->assertSession(); $assert_session->assertNoElementAfterWait('css', '#drupal-off-canvas'); diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/MoveBlockFormTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/MoveBlockFormTest.php index 3b857b10e5ba..f7b302e7355b 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/MoveBlockFormTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/MoveBlockFormTest.php @@ -142,8 +142,10 @@ public function testMoveBlock() { * * @param string[] $expected_block_labels * The expected block labels. + * + * @internal */ - protected function assertBlockTable(array $expected_block_labels) { + protected function assertBlockTable(array $expected_block_labels): void { $page = $this->getSession()->getPage(); $this->assertSession()->assertWaitOnAjaxRequest(); $block_tds = $page->findAll('css', '.layout-builder-components-table__block-label'); @@ -202,8 +204,10 @@ protected function findRowHandle($block_label) { * The region. * @param array $expected_block_selectors * The block selectors. + * + * @internal */ - protected function assertRegionBlocksOrder($section_delta, $region, array $expected_block_selectors) { + protected function assertRegionBlocksOrder(int $section_delta, string $region, array $expected_block_selectors): void { $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/TestMultiWidthLayoutsTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/TestMultiWidthLayoutsTest.php index 2fd7cd7a7839..9ec01e7cb0d3 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/TestMultiWidthLayoutsTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/TestMultiWidthLayoutsTest.php @@ -112,8 +112,10 @@ public function testWidthChange() { * * @param string $width_class * The width class. + * + * @internal */ - protected function assertWidthClassApplied($width_class) { + protected function assertWidthClassApplied(string $width_class): void { $this->assertNotEmpty($this->assertSession()->waitForElementVisible('css', ".{$width_class}[data-layout-delta=\"0\"]")); } diff --git a/core/modules/layout_builder/tests/src/Unit/SectionTest.php b/core/modules/layout_builder/tests/src/Unit/SectionTest.php index 2e21947de9dd..7e3c5b130280 100644 --- a/core/modules/layout_builder/tests/src/Unit/SectionTest.php +++ b/core/modules/layout_builder/tests/src/Unit/SectionTest.php @@ -188,8 +188,10 @@ public function testInsertComponentInvalidDelta() { * The expected sections. * @param \Drupal\layout_builder\Section $section * The section storage to check. + * + * @internal */ - protected function assertComponents(array $expected, Section $section) { + protected function assertComponents(array $expected, Section $section): void { $result = $section->getComponents(); $this->assertEquals($expected, $result); $this->assertSame(array_keys($expected), array_keys($result)); diff --git a/core/modules/link/tests/src/Functional/LinkFieldTest.php b/core/modules/link/tests/src/Functional/LinkFieldTest.php index 2e4044abfa93..80b03928006a 100644 --- a/core/modules/link/tests/src/Functional/LinkFieldTest.php +++ b/core/modules/link/tests/src/Functional/LinkFieldTest.php @@ -211,8 +211,10 @@ public function testURLValidation() { * The field name. * @param array $valid_entries * An array of valid URL entries. + * + * @internal */ - protected function assertValidEntries($field_name, array $valid_entries) { + protected function assertValidEntries(string $field_name, array $valid_entries): void { foreach ($valid_entries as $uri => $string) { $edit = [ "{$field_name}[0][uri]" => $uri, @@ -233,8 +235,10 @@ protected function assertValidEntries($field_name, array $valid_entries) { * The field name. * @param array $invalid_entries * An array of invalid URL entries. + * + * @internal */ - protected function assertInvalidEntries($field_name, array $invalid_entries) { + protected function assertInvalidEntries(string $field_name, array $invalid_entries): void { foreach ($invalid_entries as $invalid_value => $error_message) { $edit = [ "{$field_name}[0][uri]" => $invalid_value, diff --git a/core/modules/link/tests/src/Functional/LinkFieldUITest.php b/core/modules/link/tests/src/Functional/LinkFieldUITest.php index 7045a04fa3d7..177fa62a8ac1 100644 --- a/core/modules/link/tests/src/Functional/LinkFieldUITest.php +++ b/core/modules/link/tests/src/Functional/LinkFieldUITest.php @@ -218,8 +218,10 @@ public function runFieldUIItem($cardinality, $link_type, $title, $label, $field_ * The name of the field to check. * @param string $text * The text to check. + * + * @internal */ - protected function assertFieldContainsRawText($field_name, $text) { + protected function assertFieldContainsRawText(string $field_name, string $text): void { $this->assertTrue((bool) preg_match('/' . preg_quote($text, '/') . '/ui', $this->getFieldHtml($field_name))); } @@ -230,8 +232,10 @@ protected function assertFieldContainsRawText($field_name, $text) { * The name of the field to check. * @param string $text * The text to check. + * + * @internal */ - protected function assertNoFieldContainsRawText($field_name, $text) { + protected function assertNoFieldContainsRawText(string $field_name, string $text): void { $this->assertFalse((bool) preg_match('/' . preg_quote($text, '/') . '/ui', $this->getFieldHtml($field_name))); } diff --git a/core/modules/locale/tests/src/Functional/LocaleConfigTranslationTest.php b/core/modules/locale/tests/src/Functional/LocaleConfigTranslationTest.php index b9f6f3bababb..886710312b58 100644 --- a/core/modules/locale/tests/src/Functional/LocaleConfigTranslationTest.php +++ b/core/modules/locale/tests/src/Functional/LocaleConfigTranslationTest.php @@ -247,8 +247,10 @@ public function testOptionalConfiguration() { * @param bool $optional * Whether to assume a sample of the optional default configuration is * present. + * + * @internal */ - protected function assertNodeConfig($required, $optional) { + protected function assertNodeConfig(bool $required, bool $optional): void { // Check the required default configuration in node module. $string = $this->storage->findString(['source' => 'Make content sticky', 'context' => '', 'type' => 'configuration']); if ($required) { diff --git a/core/modules/locale/tests/src/Kernel/LocaleConfigSubscriberTest.php b/core/modules/locale/tests/src/Kernel/LocaleConfigSubscriberTest.php index 9084e1d52979..f059508eed3a 100644 --- a/core/modules/locale/tests/src/Kernel/LocaleConfigSubscriberTest.php +++ b/core/modules/locale/tests/src/Kernel/LocaleConfigSubscriberTest.php @@ -386,8 +386,10 @@ protected function deleteLocaleTranslationData($config_name, $key, $source_value * The configuration name. * @param string $langcode * The language code. + * + * @internal */ - protected function assertNoConfigOverride($config_name, $langcode) { + protected function assertNoConfigOverride(string $config_name, string $langcode): void { $config_langcode = $this->configFactory->getEditable($config_name)->get('langcode'); $override = $this->languageManager->getLanguageConfigOverride($langcode, $config_name); $this->assertNotEquals($langcode, $config_langcode); @@ -401,12 +403,14 @@ protected function assertNoConfigOverride($config_name, $langcode) { * The configuration name. * @param string $key * The configuration key. - * @param string $value + * @param string|array $value * The configuration value. * @param string $langcode * The language code. + * + * @internal */ - protected function assertConfigOverride($config_name, $key, $value, $langcode) { + protected function assertConfigOverride(string $config_name, string $key, $value, string $langcode): void { $config_langcode = $this->configFactory->getEditable($config_name)->get('langcode'); $override = $this->languageManager->getLanguageConfigOverride($langcode, $config_name); $this->assertNotEquals($langcode, $config_langcode); @@ -424,8 +428,10 @@ protected function assertConfigOverride($config_name, $key, $value, $langcode) { * The configuration value. * @param string $langcode * The language code. + * + * @internal */ - protected function assertActiveConfig($config_name, $key, $value, $langcode) { + protected function assertActiveConfig(string $config_name, string $key, string $value, string $langcode): void { $config = $this->configFactory->getEditable($config_name); $this->assertEquals($langcode, $config->get('langcode')); $this->assertSame($value, $config->get($key)); @@ -438,8 +444,10 @@ protected function assertActiveConfig($config_name, $key, $value, $langcode) { * The configuration name. * @param string $langcode * The language code. + * + * @internal */ - protected function assertNoTranslation($config_name, $langcode) { + protected function assertNoTranslation(string $config_name, string $langcode): void { $strings = $this->stringStorage->getTranslations([ 'type' => 'configuration', 'name' => $config_name, @@ -461,8 +469,10 @@ protected function assertNoTranslation($config_name, $langcode) { * @param bool $customized * Whether or not the string should be asserted to be customized or not * customized. + * + * @internal */ - protected function assertTranslation($config_name, $translation, $langcode, $customized = TRUE) { + protected function assertTranslation(string $config_name, $translation, string $langcode, bool $customized = TRUE): void { // Make sure a string exists. $strings = $this->stringStorage->getTranslations([ 'type' => 'configuration', diff --git a/core/modules/media/tests/src/Functional/MediaRevisionTest.php b/core/modules/media/tests/src/Functional/MediaRevisionTest.php index f3361c76b49f..d3c89fc72a3d 100644 --- a/core/modules/media/tests/src/Functional/MediaRevisionTest.php +++ b/core/modules/media/tests/src/Functional/MediaRevisionTest.php @@ -190,8 +190,10 @@ protected function createMediaRevision(MediaInterface $media) { * The entity in question. * @param int $expected_revisions * The expected number of revisions. + * + * @internal */ - protected function assertRevisionCount(EntityInterface $entity, $expected_revisions) { + protected function assertRevisionCount(EntityInterface $entity, int $expected_revisions): void { $entity_type = $entity->getEntityType(); $count = $this->container diff --git a/core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php b/core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php index 828f2e0317b1..5446c3a3ca7e 100644 --- a/core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php +++ b/core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php @@ -475,8 +475,10 @@ public function testMediaCreateRedirect() { * A list of the help texts to check. * @param string $selector * (optional) The selector to search. + * + * @internal */ - public function assertHelpTexts(array $texts, $selector = '') { + public function assertHelpTexts(array $texts, string $selector = ''): void { $assert_session = $this->assertSession(); foreach ($texts as $text) { // We only want to escape single quotes, so use str_replace() rather than @@ -496,8 +498,10 @@ public function assertHelpTexts(array $texts, $selector = '') { * * @param string[] $texts * A list of the help texts to check. + * + * @internal */ - public function assertNoHelpTexts(array $texts) { + public function assertNoHelpTexts(array $texts): void { $assert_session = $this->assertSession(); foreach ($texts as $text) { $assert_session->pageTextNotContains($text); @@ -514,8 +518,10 @@ public function assertNoHelpTexts(array $texts) { * @param string[] $attributes * An associative array of any expected attributes, keyed by the * attribute name. + * + * @internal */ - protected function assertHelpLink(NodeElement $element, $text, array $attributes = []) { + protected function assertHelpLink(NodeElement $element, string $text, array $attributes = []): void { // Find all the links inside the element. $link = $element->findLink($text); @@ -532,8 +538,10 @@ protected function assertHelpLink(NodeElement $element, $text, array $attributes * The element to search. * @param string $text * The link text. + * + * @internal */ - protected function assertNoHelpLink(NodeElement $element, $text) { + protected function assertNoHelpLink(NodeElement $element, string $text): void { $assert_session = $this->assertSession(); // Assert that the link and its text are not present anywhere on the page. $assert_session->elementNotExists('named', ['link', $text], $element); diff --git a/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php b/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php index d192edcde704..5785a13a680d 100644 --- a/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php +++ b/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php @@ -1415,11 +1415,13 @@ protected function leaveSourceMode() { * * @param string $attribute * The attribute to check. - * @param mixed $value + * @param string|null $value * Either a string value or if NULL, asserts that <drupal-media> element * doesn't have the attribute. + * + * @internal */ - protected function assertSourceAttributeSame($attribute, $value) { + protected function assertSourceAttributeSame(string $attribute, ?string $value): void { $this->assertNotEmpty($drupal_media = $this->getDrupalMediaFromSource()); if ($value === NULL) { $this->assertFalse($drupal_media->hasAttribute($attribute)); @@ -1524,8 +1526,10 @@ protected function openContextMenu($instance_id = 'edit-body-0-value') { * * @param string $label * The `aria-label` attribute value of the context menu item. + * + * @internal */ - protected function assertContextMenuItemExists($label) { + protected function assertContextMenuItemExists(string $label): void { $this->assertSession()->elementExists('xpath', '//a[@aria-label="' . $label . '"]'); } @@ -1534,8 +1538,10 @@ protected function assertContextMenuItemExists($label) { * * @param string $label * The `aria-label` attribute value of the context menu item. + * + * @internal */ - protected function assertContextMenuItemNotExists($label) { + protected function assertContextMenuItemNotExists(string $label): void { $this->assertSession()->elementNotExists('xpath', '//a[@aria-label="' . $label . '"]'); } diff --git a/core/modules/media/tests/src/FunctionalJavascript/MediaSourceImageTest.php b/core/modules/media/tests/src/FunctionalJavascript/MediaSourceImageTest.php index e4a0f942c4e0..9f17c9245e2d 100644 --- a/core/modules/media/tests/src/FunctionalJavascript/MediaSourceImageTest.php +++ b/core/modules/media/tests/src/FunctionalJavascript/MediaSourceImageTest.php @@ -159,8 +159,10 @@ public function testMediaImageSource() { * * @param string $media_type_id * The media type ID. + * + * @internal */ - protected function assertViewDisplayConfigured($media_type_id) { + protected function assertViewDisplayConfigured(string $media_type_id): void { $assert_session = $this->assertSession(); $type = MediaType::load($media_type_id); $display = EntityViewDisplay::load('media.' . $media_type_id . '.' . EntityDisplayRepositoryInterface::DEFAULT_DISPLAY_MODE); diff --git a/core/modules/media/tests/src/Kernel/MediaAccessControlHandlerTest.php b/core/modules/media/tests/src/Kernel/MediaAccessControlHandlerTest.php index 59fa8af6ace9..f6d00a3da6d8 100644 --- a/core/modules/media/tests/src/Kernel/MediaAccessControlHandlerTest.php +++ b/core/modules/media/tests/src/Kernel/MediaAccessControlHandlerTest.php @@ -92,8 +92,10 @@ public function testCreateAccess(array $permissions, AccessResultInterface $expe * Expected cache tags. * @param \Drupal\Core\Access\AccessResultInterface $actual * The actual access result. + * + * @internal */ - protected function assertAccess(AccessResultInterface $expected_access_result, array $expected_cache_contexts, array $expected_cache_tags, AccessResultInterface $actual) { + protected function assertAccess(AccessResultInterface $expected_access_result, array $expected_cache_contexts, array $expected_cache_tags, AccessResultInterface $actual): void { $this->assertSame($expected_access_result->isAllowed(), $actual->isAllowed()); $this->assertSame($expected_access_result->isForbidden(), $actual->isForbidden()); $this->assertSame($expected_access_result->isNeutral(), $actual->isNeutral()); diff --git a/core/modules/media_library/tests/src/Functional/MediaLibraryDisplayModeTest.php b/core/modules/media_library/tests/src/Functional/MediaLibraryDisplayModeTest.php index b24dcc6903b8..e83c5e31831b 100644 --- a/core/modules/media_library/tests/src/Functional/MediaLibraryDisplayModeTest.php +++ b/core/modules/media_library/tests/src/Functional/MediaLibraryDisplayModeTest.php @@ -222,8 +222,10 @@ public function testDisplayModes() { * @param bool $has_source_field * Whether the media library form display should contain the source field or * not. + * + * @internal */ - protected function assertFormDisplay($type_id, $has_name, $has_source_field) { + protected function assertFormDisplay(string $type_id, bool $has_name, bool $has_source_field): void { // These components are added by default and invisible. $components = [ 'revision_log_message', @@ -254,8 +256,10 @@ protected function assertFormDisplay($type_id, $has_name, $has_source_field) { * The media type ID. * @param string $image_style * The ID of the image style that should be configured for the thumbnail. + * + * @internal */ - protected function assertViewDisplay($type_id, $image_style) { + protected function assertViewDisplay(string $type_id, string $image_style): void { $view_display = EntityViewDisplay::load('media.' . $type_id . '.media_library'); $this->assertInstanceOf(EntityViewDisplay::class, $view_display); // Assert the media library view display contains only the thumbnail. diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php index 07b8f514f19c..dd21529b76eb 100644 --- a/core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php +++ b/core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php @@ -312,8 +312,10 @@ public function testWidget() { /** * Asserts all media items are visible. + * + * @internal */ - protected function assertAllMedia() { + protected function assertAllMedia(): void { $assert_session = $this->assertSession(); $assert_session->pageTextContains('Hoglet'); $assert_session->pageTextContains('Panda'); @@ -322,8 +324,10 @@ protected function assertAllMedia() { /** * Asserts only published media items are visible. + * + * @internal */ - protected function assertOnlyPublishedMedia() { + protected function assertOnlyPublishedMedia(): void { $assert_session = $this->assertSession(); $assert_session->pageTextNotContains('Hoglet'); $assert_session->pageTextContains('Panda'); diff --git a/core/modules/media_library/tests/src/Kernel/MediaLibraryAccessTest.php b/core/modules/media_library/tests/src/Kernel/MediaLibraryAccessTest.php index b8fa3d268c2c..7ed7e1975c10 100644 --- a/core/modules/media_library/tests/src/Kernel/MediaLibraryAccessTest.php +++ b/core/modules/media_library/tests/src/Kernel/MediaLibraryAccessTest.php @@ -412,7 +412,7 @@ public function testAddFormAccess(): void { * @param string[] $expected_cache_contexts * (optional) The expected cache contexts attached to the access result. */ - private function assertAccess(AccessResult $access_result, $is_allowed, $expected_reason = NULL, array $expected_cache_tags = [], array $expected_cache_contexts = []) { + private function assertAccess(AccessResult $access_result, bool $is_allowed, string $expected_reason = NULL, array $expected_cache_tags = [], array $expected_cache_contexts = []): void { $this->assertSame($is_allowed, $access_result->isAllowed()); if ($access_result instanceof AccessResultReasonInterface && isset($expected_reason)) { $this->assertSame($expected_reason, $access_result->getReason()); diff --git a/core/modules/media_library/tests/src/Kernel/MediaLibraryWidgetTest.php b/core/modules/media_library/tests/src/Kernel/MediaLibraryWidgetTest.php index e5fc54ff9e20..57e3ef47f652 100644 --- a/core/modules/media_library/tests/src/Kernel/MediaLibraryWidgetTest.php +++ b/core/modules/media_library/tests/src/Kernel/MediaLibraryWidgetTest.php @@ -4,10 +4,12 @@ use Drupal\Core\Field\BaseFieldDefinition; use Drupal\Core\Form\FormState; +use Drupal\Core\Session\AccountInterface; use Drupal\entity_test\Entity\EntityTest; use Drupal\entity_test\Entity\EntityTestRev; use Drupal\KernelTests\KernelTestBase; use Drupal\media\Entity\MediaType; +use Drupal\media_library\MediaLibraryState; use Drupal\Tests\user\Traits\UserCreationTrait; /** @@ -128,8 +130,10 @@ public function testRevisionableWidgetAccess() { * The media library state. * * @throws \Exception + * + * @internal */ - protected function assertMediaLibraryStateAccess($access, $user, $state) { + protected function assertMediaLibraryStateAccess(bool $access, AccountInterface $user, MediaLibraryState $state): void { $ui_builder = $this->container->get('media_library.ui_builder'); $access_result = $ui_builder->checkAccess($user, $state); $this->assertEquals($access, $access_result->isAllowed()); diff --git a/core/modules/menu_link_content/tests/src/Kernel/MenuLinksTest.php b/core/modules/menu_link_content/tests/src/Kernel/MenuLinksTest.php index 61279cb7a76c..894bb59993d1 100644 --- a/core/modules/menu_link_content/tests/src/Kernel/MenuLinksTest.php +++ b/core/modules/menu_link_content/tests/src/Kernel/MenuLinksTest.php @@ -120,8 +120,10 @@ public function createLinkHierarchy($module = 'menu_test') { /** * Assert that at set of links is properly parented. + * + * @internal */ - public function assertMenuLinkParents($links, $expected_hierarchy) { + public function assertMenuLinkParents(array $links, array $expected_hierarchy): void { foreach ($expected_hierarchy as $id => $parent) { /** @var \Drupal\Core\Menu\MenuLinkInterface $menu_link_plugin */ $menu_link_plugin = $this->menuLinkManager->createInstance($links[$id]); diff --git a/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTest.php b/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTest.php index bc72be37598d..c21a085fd5b0 100644 --- a/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTest.php +++ b/core/modules/menu_link_content/tests/src/Kernel/Migrate/d6/MigrateMenuLinkTest.php @@ -53,7 +53,7 @@ protected function setUp(): void { * The expected title of the link. * @param string $menu * The expected ID of the menu to which the link will belong. - * @param string $description + * @param string|null $description * The link's expected description. * @param bool $enabled * Whether the link is enabled. @@ -66,10 +66,9 @@ protected function setUp(): void { * @param int $weight * The expected weight of the link. * - * @return \Drupal\menu_link_content\MenuLinkContentInterface - * The menu link content. + * @internal */ - protected function assertEntity($id, $title, $menu, $description, $enabled, $expanded, array $attributes, $uri, $weight) { + protected function assertEntity(string $id, string $title, string $menu, ?string $description, bool $enabled, bool $expanded, array $attributes, string $uri, int $weight): void { /** @var \Drupal\menu_link_content\MenuLinkContentInterface $menu_link */ $menu_link = MenuLinkContent::load($id); $this->assertInstanceOf(MenuLinkContentInterface::class, $menu_link); @@ -81,7 +80,6 @@ protected function assertEntity($id, $title, $menu, $description, $enabled, $exp $this->assertSame($attributes, $menu_link->link->options); $this->assertSame($uri, $menu_link->link->uri); $this->assertSame($weight, $menu_link->getWeight()); - return $menu_link; } /** diff --git a/core/modules/migrate/tests/src/Kernel/HighWaterTest.php b/core/modules/migrate/tests/src/Kernel/HighWaterTest.php index f45a662758f1..0793ea3652e2 100644 --- a/core/modules/migrate/tests/src/Kernel/HighWaterTest.php +++ b/core/modules/migrate/tests/src/Kernel/HighWaterTest.php @@ -267,8 +267,10 @@ public function testHighWaterUpdate() { * * @param string $title * Title of the node. + * + * @internal */ - protected function assertNodeExists($title) { + protected function assertNodeExists(string $title): void { self::assertTrue($this->nodeExists($title)); } @@ -277,8 +279,10 @@ protected function assertNodeExists($title) { * * @param string $title * Title of the node. + * + * @internal */ - protected function assertNodeDoesNotExist($title) { + protected function assertNodeDoesNotExist(string $title): void { self::assertFalse($this->nodeExists($title)); } diff --git a/core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php b/core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php index 1123737bcfa5..b5fb3ec25024 100644 --- a/core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php +++ b/core/modules/migrate/tests/src/Kernel/MigrateEntityContentBaseTest.php @@ -67,8 +67,10 @@ protected function setUp(): void { * The expected default translation language code. * @param string[] $others * The expected other translation language codes. + * + * @internal */ - protected function assertTranslations($id, $default, $others = []) { + protected function assertTranslations(int $id, string $default, array $others = []): void { $entity = $this->storage->load($id); $this->assertNotEmpty($entity, "Entity exists"); $this->assertEquals($default, $entity->language()->getId(), "Entity default translation"); diff --git a/core/modules/migrate/tests/src/Kernel/TrackChangesTest.php b/core/modules/migrate/tests/src/Kernel/TrackChangesTest.php index 04d45b8c04d6..1f8f80c1afbd 100644 --- a/core/modules/migrate/tests/src/Kernel/TrackChangesTest.php +++ b/core/modules/migrate/tests/src/Kernel/TrackChangesTest.php @@ -153,8 +153,10 @@ public function testTrackChanges() { * Property to evaluate. * @param string $value * Value to evaluate. + * + * @internal */ - protected function assertTermExists($property, $value) { + protected function assertTermExists(string $property, string $value): void { self::assertTrue($this->termExists($property, $value)); } @@ -165,8 +167,10 @@ protected function assertTermExists($property, $value) { * Property to evaluate. * @param string $value * Value to evaluate. + * + * @internal */ - protected function assertTermDoesNotExist($property, $value) { + protected function assertTermDoesNotExist(string $property, string $value): void { self::assertFalse($this->termExists($property, $value)); } diff --git a/core/modules/migrate/tests/src/Unit/process/FileCopyTest.php b/core/modules/migrate/tests/src/Unit/process/FileCopyTest.php index dc7cce130bfa..72d55143b45d 100644 --- a/core/modules/migrate/tests/src/Unit/process/FileCopyTest.php +++ b/core/modules/migrate/tests/src/Unit/process/FileCopyTest.php @@ -48,10 +48,12 @@ public function providerFileProcessBaseConstructor() { * * @param array $configuration * The plugin configuration. - * @param $expected + * @param int $expected * The expected value of the plugin configuration. + * + * @internal */ - protected function assertPlugin($configuration, $expected) { + protected function assertPlugin(array $configuration, int $expected): void { $stream_wrapper_manager = $this->prophesize(StreamWrapperManagerInterface::class)->reveal(); $file_system = $this->prophesize(FileSystemInterface::class)->reveal(); $download_plugin = $this->prophesize(MigrateProcessInterface::class)->reveal(); diff --git a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/DestinationCategoryTest.php b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/DestinationCategoryTest.php index eb07400d312a..900a374d4910 100644 --- a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/DestinationCategoryTest.php +++ b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/DestinationCategoryTest.php @@ -67,8 +67,10 @@ public function testD7Categories() { * * @param \Drupal\migrate\Plugin\MigrationInterface[] $migrations * The migrations. + * + * @internal */ - protected function assertCategories($migrations) { + protected function assertCategories(array $migrations): void { foreach ($migrations as $id => $migration) { $object_classes = class_parents($migration->getDestinationPlugin()); $object_classes[] = get_class($migration->getDestinationPlugin()); diff --git a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php index 34a486053512..73cad339dc48 100644 --- a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php +++ b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php @@ -186,8 +186,10 @@ protected function setUp(): void { * The source plugin. * @param array $configuration * The source plugin configuration (Nope, no getter available). + * + * @internal */ - protected function assertIds(MigrateSourceInterface $source, array $configuration) { + protected function assertIds(MigrateSourceInterface $source, array $configuration): void { $ids = $source->getIds(); [, $entity_type_id] = explode(PluginBase::DERIVATIVE_SEPARATOR, $source->getPluginId()); $entity_type = \Drupal::entityTypeManager()->getDefinition($entity_type_id); diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeFormStepsTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeFormStepsTest.php index 1d86b61ef8b3..f25d28e11d8f 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeFormStepsTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeFormStepsTest.php @@ -127,8 +127,10 @@ public function testMigrateUpgradeReviewPage() { * The WebAssert object. * @param string $expected * The expected response text. + * + * @internal */ - protected function assertFirstForm(WebAssert $session, $expected) { + protected function assertFirstForm(WebAssert $session, string $expected): void { $paths = [ '', '/incremental', diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php index 31feae3cccf5..4ee6cda5a7f6 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php @@ -210,8 +210,10 @@ public function testUpgradeAndIncremental() { /** * Tests that follow-up migrations have been run successfully. + * + * @internal */ - protected function assertFollowUpMigrationResults() { + protected function assertFollowUpMigrationResults(): void { $node = Node::load(10); $this->assertSame('12', $node->get('field_reference')->target_id); $this->assertSame('12', $node->get('field_reference_2')->target_id); diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php index 7f1a26fd93fa..864c5dd8e477 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php @@ -234,8 +234,10 @@ public function testUpgradeAndIncremental() { /** * Tests that follow-up migrations have been run successfully. + * + * @internal */ - protected function assertFollowUpMigrationResults() { + protected function assertFollowUpMigrationResults(): void { $node = Node::load(2); $this->assertSame('4', $node->get('field_reference')->target_id); $this->assertSame('6', $node->get('field_reference_2')->target_id); diff --git a/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php b/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php index a20379f16822..ac042c114582 100644 --- a/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php +++ b/core/modules/node/tests/src/Functional/NodeAccessBaseTableTest.php @@ -207,12 +207,14 @@ public function testNodeAccessBasic() { /** * Checks taxonomy/term listings to ensure only accessible nodes are listed. * - * @param $is_admin + * @param bool $is_admin * A boolean indicating whether the current user is an administrator. If * TRUE, all nodes should be listed. If FALSE, only public nodes and the * user's own private nodes should be listed. + * + * @internal */ - protected function assertTaxonomyPage($is_admin) { + protected function assertTaxonomyPage(bool $is_admin): void { foreach ([$this->publicTid, $this->privateTid] as $tid_is_private => $tid) { $this->drupalGet("taxonomy/term/$tid"); $this->nidsVisible = []; diff --git a/core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php b/core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php index e647190921fc..746a750fe39b 100644 --- a/core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php +++ b/core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php @@ -76,8 +76,10 @@ protected function setUp(): void { * * @param array $expected * Expected values, keyed by user ID, expected cache contexts as values. + * + * @internal */ - protected function assertUserCacheContext(array $expected) { + protected function assertUserCacheContext(array $expected): void { foreach ($expected as $uid => $context) { if ($uid > 0) { $this->drupalLogin($this->userMapping[$uid]); diff --git a/core/modules/node/tests/src/Functional/NodeDisplayConfigurableTest.php b/core/modules/node/tests/src/Functional/NodeDisplayConfigurableTest.php index dc788da0a76f..c85042d625c3 100644 --- a/core/modules/node/tests/src/Functional/NodeDisplayConfigurableTest.php +++ b/core/modules/node/tests/src/Functional/NodeDisplayConfigurableTest.php @@ -114,8 +114,10 @@ public function testDisplayConfigurable(string $theme, string $metadata_region, * The region of the node html content where meta data is expected. * @param bool $field_classes * If TRUE, check for field--name-XXX classes. + * + * @internal */ - protected function assertNodeHtml(NodeInterface $node, UserInterface $user, bool $is_inline, string $metadata_region, bool $field_classes) { + protected function assertNodeHtml(NodeInterface $node, UserInterface $user, bool $is_inline, string $metadata_region, bool $field_classes): void { $assert = $this->assertSession(); $html_element = $is_inline ? 'span' : 'div'; diff --git a/core/modules/node/tests/src/Functional/NodeTestBase.php b/core/modules/node/tests/src/Functional/NodeTestBase.php index 6705134a22fb..44dc2faec0eb 100644 --- a/core/modules/node/tests/src/Functional/NodeTestBase.php +++ b/core/modules/node/tests/src/Functional/NodeTestBase.php @@ -56,6 +56,8 @@ protected function setUp() { * The node object to check. * @param \Drupal\Core\Session\AccountInterface $account * The user account for which to check access. + * + * @internal */ public function assertNodeAccess(array $ops, NodeInterface $node, AccountInterface $account) { foreach ($ops as $op => $result) { @@ -75,8 +77,10 @@ public function assertNodeAccess(array $ops, NodeInterface $node, AccountInterfa * @param string|null $langcode * (optional) The language code indicating which translation of the node * to check. If NULL, the untranslated (fallback) access is checked. + * + * @internal */ - public function assertNodeCreateAccess($bundle, $result, AccountInterface $account, $langcode = NULL) { + public function assertNodeCreateAccess(string $bundle, bool $result, AccountInterface $account, ?string $langcode = NULL) { $this->assertEquals($this->accessHandler->createAccess($bundle, $account, ['langcode' => $langcode]), $result, $this->nodeAccessAssertMessage('create', $result, $langcode)); } diff --git a/core/modules/node/tests/src/Functional/Views/FrontPageTest.php b/core/modules/node/tests/src/Functional/Views/FrontPageTest.php index bf1cc6ac20d7..1ee1b6606dce 100644 --- a/core/modules/node/tests/src/Functional/Views/FrontPageTest.php +++ b/core/modules/node/tests/src/Functional/Views/FrontPageTest.php @@ -166,8 +166,10 @@ public function testFrontPage() { * An array of nids which should not be part of the resultset. * @param string $message * (optional) A custom message to display with the assertion. + * + * @internal */ - protected function assertNotInResultSet(ViewExecutable $view, array $not_expected_nids, $message = '') { + protected function assertNotInResultSet(ViewExecutable $view, array $not_expected_nids, string $message = ''): void { $found_nids = array_filter($view->result, function ($row) use ($not_expected_nids) { return in_array($row->nid, $not_expected_nids); }); diff --git a/core/modules/node/tests/src/Functional/Views/NodeFieldFilterTest.php b/core/modules/node/tests/src/Functional/Views/NodeFieldFilterTest.php index 33105bebc3b8..e94a11ecb3ac 100644 --- a/core/modules/node/tests/src/Functional/Views/NodeFieldFilterTest.php +++ b/core/modules/node/tests/src/Functional/Views/NodeFieldFilterTest.php @@ -97,8 +97,10 @@ public function testFilters() { * that translation should be shown on the given page. * @param string $message * Message suffix to display. + * + * @internal */ - protected function assertPageCounts($path, $counts, $message) { + protected function assertPageCounts(string $path, array $counts, string $message): void { // Disable read more links. \Drupal::service('entity_display.repository') ->getViewDisplay('node', 'page', 'teaser') diff --git a/core/modules/node/tests/src/Functional/Views/NodeIntegrationTest.php b/core/modules/node/tests/src/Functional/Views/NodeIntegrationTest.php index dec8d923967f..ea0cfe411acc 100644 --- a/core/modules/node/tests/src/Functional/Views/NodeIntegrationTest.php +++ b/core/modules/node/tests/src/Functional/Views/NodeIntegrationTest.php @@ -59,8 +59,10 @@ public function testNodeViewTypeArgument() { * * @param array $expected_nids * An array of node IDs. + * + * @internal */ - protected function assertNids(array $expected_nids = []) { + protected function assertNids(array $expected_nids = []): void { $result = $this->xpath('//span[@class="field-content"]'); $nids = []; foreach ($result as $element) { diff --git a/core/modules/node/tests/src/Functional/Views/NodeLanguageTest.php b/core/modules/node/tests/src/Functional/Views/NodeLanguageTest.php index 986f59cbc09f..c5bd79ccb953 100644 --- a/core/modules/node/tests/src/Functional/Views/NodeLanguageTest.php +++ b/core/modules/node/tests/src/Functional/Views/NodeLanguageTest.php @@ -281,8 +281,10 @@ public function testNativeLanguageField() { * * @param bool $native * (optional) Whether to assert the language name in its native form. + * + * @internal */ - protected function assertLanguageNames($native = FALSE) { + protected function assertLanguageNames(bool $native = FALSE): void { $this->drupalGet('test-language'); if ($native) { $this->assertSession()->pageTextContains('Français'); diff --git a/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeCompleteTest.php b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeCompleteTest.php index 298df46b55f9..324feb7cd707 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeCompleteTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeCompleteTest.php @@ -96,8 +96,10 @@ public function testNodeCompleteMigration() { * An array of revision data matching a node_field_revision table row. * @param array $data * An array of revision data. + * + * @internal */ - protected function assertRevision(array $revision, array $data) { + protected function assertRevision(array $revision, array $data): void { /** @var \Drupal\node\NodeInterface $actual */ $actual = $this->nodeStorage->loadRevision($revision['vid']) ->getTranslation($revision['langcode']); diff --git a/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeRevisionTest.php b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeRevisionTest.php index d975e9e4b8fa..ed3bc55add43 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeRevisionTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeRevisionTest.php @@ -42,19 +42,21 @@ protected function setUp(): void { * The revision language. * @param string $title * The expected title. - * @param string $log + * @param string|null $log * The revision log message. * @param int $timestamp * The revision's time stamp. + * + * @internal */ - protected function assertRevision($id, $langcode, $title, $log, $timestamp) { + protected function assertRevision(int $id, string $langcode, string $title, ?string $log, int $timestamp): void { /** @var \Drupal\node\NodeInterface $revision */ $revision = $this->nodeStorage->loadRevision($id) ->getTranslation($langcode); $this->assertInstanceOf(NodeInterface::class, $revision); $this->assertSame($title, $revision->getTitle()); $this->assertSame($log, $revision->revision_log->value); - $this->assertSame($timestamp, $revision->getRevisionCreationTime()); + $this->assertSame($timestamp, (int) $revision->getRevisionCreationTime()); } /** @@ -73,27 +75,27 @@ public function testNodeRevision() { $this->assertSame('modified rev 3', $node->revision_log->value); $this->assertSame('1420861423', $node->getRevisionCreationTime()); - $this->assertRevision(1, 'und', 'Test title', NULL, '1390095702'); - $this->assertRevision(3, 'und', 'Test title rev 3', NULL, '1420718386'); - $this->assertRevision(4, 'und', 'Test page title rev 4', NULL, '1390095701'); - $this->assertRevision(5, 'und', 'Test title rev 2', 'modified rev 2', '1390095703'); - $this->assertRevision(6, 'und', 'Node 4', NULL, '1390095701'); - $this->assertRevision(7, 'und', 'Node 5', NULL, '1390095701'); - $this->assertRevision(8, 'und', 'Node 6', NULL, '1390095701'); - $this->assertRevision(9, 'und', 'Node 7', NULL, '1390095701'); - $this->assertRevision(10, 'und', 'Node 8', NULL, '1390095701'); - $this->assertRevision(11, 'und', 'Node 9', NULL, '1390095701'); - $this->assertRevision(12, 'und', 'Once upon a time', NULL, '1444671588'); - $this->assertRevision(13, 'en', 'The Real McCoy', NULL, '1444238808'); - $this->assertRevision(15, 'zu', 'Abantu zulu', NULL, '1444238808'); - $this->assertRevision(17, 'und', 'United Federation of Planets', NULL, '1493066668'); - $this->assertRevision(18, 'und', 'Klingon Empire', NULL, '1493066677'); - $this->assertRevision(19, 'und', 'Romulan Empire', NULL, '1493066684'); - $this->assertRevision(20, 'und', 'Ferengi Commerce Authority', NULL, '1493066693'); - $this->assertRevision(21, 'und', 'Ambassador Sarek', NULL, '1494966544'); - $this->assertRevision(22, 'und', 'New Forum Topic', NULL, '1501955771'); - $this->assertRevision(2001, 'und', 'Test title rev 3', 'modified rev 3', '1420861423'); - $this->assertRevision(2002, 'en', 'John Smith - EN', NULL, '1534014650'); + $this->assertRevision(1, 'und', 'Test title', NULL, 1390095702); + $this->assertRevision(3, 'und', 'Test title rev 3', NULL, 1420718386); + $this->assertRevision(4, 'und', 'Test page title rev 4', NULL, 1390095701); + $this->assertRevision(5, 'und', 'Test title rev 2', 'modified rev 2', 1390095703); + $this->assertRevision(6, 'und', 'Node 4', NULL, 1390095701); + $this->assertRevision(7, 'und', 'Node 5', NULL, 1390095701); + $this->assertRevision(8, 'und', 'Node 6', NULL, 1390095701); + $this->assertRevision(9, 'und', 'Node 7', NULL, 1390095701); + $this->assertRevision(10, 'und', 'Node 8', NULL, 1390095701); + $this->assertRevision(11, 'und', 'Node 9', NULL, 1390095701); + $this->assertRevision(12, 'und', 'Once upon a time', NULL, 1444671588); + $this->assertRevision(13, 'en', 'The Real McCoy', NULL, 1444238808); + $this->assertRevision(15, 'zu', 'Abantu zulu', NULL, 1444238808); + $this->assertRevision(17, 'und', 'United Federation of Planets', NULL, 1493066668); + $this->assertRevision(18, 'und', 'Klingon Empire', NULL, 1493066677); + $this->assertRevision(19, 'und', 'Romulan Empire', NULL, 1493066684); + $this->assertRevision(20, 'und', 'Ferengi Commerce Authority', NULL, 1493066693); + $this->assertRevision(21, 'und', 'Ambassador Sarek', NULL, 1494966544); + $this->assertRevision(22, 'und', 'New Forum Topic', NULL, 1501955771); + $this->assertRevision(2001, 'und', 'Test title rev 3', 'modified rev 3', 1420861423); + $this->assertRevision(2002, 'en', 'John Smith - EN', NULL, 1534014650); // Test that the revision translations are not migrated and there should not // be a revision with id of 2003. diff --git a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeCompleteTest.php b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeCompleteTest.php index 1d38c9710445..3f5039c9a9c3 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeCompleteTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeCompleteTest.php @@ -194,8 +194,10 @@ public function testRollbackNodeComplete() { * An array of revision data matching a node_field_revision table row. * @param array $data * An array of revision data. + * + * @internal */ - protected function assertRevision(array $revision, array $data) { + protected function assertRevision(array $revision, array $data): void { /** @var \Drupal\node\NodeInterface $actual */ $actual = $this->nodeStorage->loadRevision($revision['vid']) ->getTranslation($revision['langcode']); diff --git a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTest.php b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTest.php index 50cabf5f185f..04656656c2ac 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTest.php @@ -92,30 +92,32 @@ protected function getFileMigrationInfo() { * The revision language. * @param string $title * The expected title. - * @param string $log + * @param string|null $log * The revision log message. * @param int $timestamp * The revision's time stamp. + * + * @internal */ - protected function assertRevision($id, $langcode, $title, $log, $timestamp) { + protected function assertRevision(int $id, string $langcode, string $title, ?string $log, int $timestamp): void { $revision = $this->nodeStorage->loadRevision($id); $this->assertInstanceOf(NodeInterface::class, $revision); $this->assertSame($title, $revision->getTitle()); $this->assertSame($langcode, $revision->language()->getId()); $this->assertSame($log, $revision->revision_log->value); - $this->assertSame($timestamp, $revision->getRevisionCreationTime()); + $this->assertSame($timestamp, (int) $revision->getRevisionCreationTime()); } /** * Tests the migration of node revisions with translated nodes. */ public function testNodeRevisions() { - $this->assertRevision(1, 'en', 'An English Node', NULL, '1441032132'); - $this->assertRevision(2, 'en', 'The thing about Deep Space 9 (1st rev)', 'DS9 1st rev', '1564543588'); - $this->assertRevision(4, 'is', 'is - The thing about Firefly (1st rev)', 'is - Firefly 1st rev', '1478755274'); - $this->assertRevision(6, 'en', 'Comments are closed :-(', NULL, '1504715414'); - $this->assertRevision(7, 'en', 'Comments are open :-)', NULL, '1504715432'); - $this->assertRevision(8, 'en', 'The number 47', NULL, '1552126363'); + $this->assertRevision(1, 'en', 'An English Node', NULL, 1441032132); + $this->assertRevision(2, 'en', 'The thing about Deep Space 9 (1st rev)', 'DS9 1st rev', 1564543588); + $this->assertRevision(4, 'is', 'is - The thing about Firefly (1st rev)', 'is - Firefly 1st rev', 1478755274); + $this->assertRevision(6, 'en', 'Comments are closed :-(', NULL, 1504715414); + $this->assertRevision(7, 'en', 'Comments are open :-)', NULL, 1504715432); + $this->assertRevision(8, 'en', 'The number 47', NULL, 1552126363); // Test that the revision translation are not migrated and there should not // be a revision with id of 9. diff --git a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTest.php b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTest.php index 0c62e6251dec..f91b9f720796 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTest.php @@ -103,8 +103,10 @@ protected function getFileMigrationInfo() { * Whether the node is expected to be promoted to the front page. * @param bool $sticky * Whether the node is expected to be sticky. + * + * @internal */ - protected function assertEntity($id, $type, $langcode, $title, $uid, $status, $created, $changed, $promoted, $sticky) { + protected function assertEntity(string $id, string $type, string $langcode, string $title, int $uid, bool $status, int $created, int $changed, bool $promoted, bool $sticky): void { /** @var \Drupal\node\NodeInterface $node */ $node = Node::load($id); $this->assertInstanceOf(NodeInterface::class, $node); @@ -130,12 +132,14 @@ protected function assertEntity($id, $type, $langcode, $title, $uid, $status, $c * The expected title. * @param int $uid * The revision author ID. - * @param string $log + * @param string|null $log * The revision log message. * @param int $timestamp * The revision's time stamp. + * + * @internal */ - protected function assertRevision($id, $title, $uid, $log, $timestamp) { + protected function assertRevision(int $id, string $title, int $uid, ?string $log, int $timestamp): void { $revision = \Drupal::entityTypeManager()->getStorage('node')->loadRevision($id); $this->assertInstanceOf(NodeInterface::class, $revision); $this->assertEquals($title, $revision->getTitle()); diff --git a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTitleLabelTest.php b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTitleLabelTest.php index e0c6773c4cef..9b79ea1092a9 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTitleLabelTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTitleLabelTest.php @@ -30,8 +30,10 @@ protected function setUp(): void { * The override ID. * @param string $label * The label's expected (overridden) value. + * + * @internal */ - protected function assertEntity($id, $label) { + protected function assertEntity(string $id, string $label): void { $override = BaseFieldOverride::load($id); $this->assertInstanceOf(BaseFieldOverride::class, $override); /** @var \Drupal\Core\Field\Entity\BaseFieldOverride $override */ diff --git a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTypeTest.php b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTypeTest.php index 94a579c8703b..70f2a26e1b52 100644 --- a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTypeTest.php +++ b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeTypeTest.php @@ -45,14 +45,16 @@ protected function setUp(): void { * If submission information is displayed. * @param bool $new_revision * If this is a new revision. - * @param array $expected_available_menus + * @param array|null $expected_available_menus * The expected menus. - * @param string $expected_parent + * @param string|null $expected_parent * The expected menu parents. * @param string|null $body_label * (optional) The label for the body field. + * + * @internal */ - protected function assertEntity($id, $label, $description, $help, $display_submitted, $new_revision, $expected_available_menus, $expected_parent, $body_label = NULL) { + protected function assertEntity(string $id, string $label, string $description, string $help, bool $display_submitted, bool $new_revision, ?array $expected_available_menus, ?string $expected_parent, ?string $body_label = NULL): void { /** @var \Drupal\node\NodeTypeInterface $entity */ $entity = NodeType::load($id); $this->assertInstanceOf(NodeTypeInterface::class, $entity); diff --git a/core/modules/node/tests/src/Kernel/NodeAccessTestBase.php b/core/modules/node/tests/src/Kernel/NodeAccessTestBase.php index 3ee8ba16f323..32eca5d6ba2b 100644 --- a/core/modules/node/tests/src/Kernel/NodeAccessTestBase.php +++ b/core/modules/node/tests/src/Kernel/NodeAccessTestBase.php @@ -91,6 +91,8 @@ protected function setUp() { * The node object to check. * @param \Drupal\Core\Session\AccountInterface $account * The user account for which to check access. + * + * @internal */ public function assertNodeAccess(array $ops, NodeInterface $node, AccountInterface $account) { foreach ($ops as $op => $result) { @@ -111,8 +113,10 @@ public function assertNodeAccess(array $ops, NodeInterface $node, AccountInterfa * @param string|null $langcode * (optional) The language code indicating which translation of the node * to check. If NULL, the untranslated (fallback) access is checked. + * + * @internal */ - public function assertNodeCreateAccess($bundle, $result, AccountInterface $account, $langcode = NULL) { + public function assertNodeCreateAccess(string $bundle, bool $result, AccountInterface $account, ?string $langcode = NULL) { $this->assertEquals($result, $this->accessHandler->createAccess($bundle, $account, [ 'langcode' => $langcode, ]), $this->nodeAccessAssertMessage('create', $result, $langcode)); diff --git a/core/modules/options/tests/src/Functional/OptionsFieldUITest.php b/core/modules/options/tests/src/Functional/OptionsFieldUITest.php index e3d732464eee..23e965bd4174 100644 --- a/core/modules/options/tests/src/Functional/OptionsFieldUITest.php +++ b/core/modules/options/tests/src/Functional/OptionsFieldUITest.php @@ -306,16 +306,18 @@ protected function createOptionsField($type) { /** * Tests a string input for the 'allowed values' form element. * - * @param $input_string + * @param string $input_string * The input string, in the pipe-linefeed format expected by the form * element. - * @param $result + * @param array|string $result * Either an expected resulting array in * $field->getSetting('allowed_values'), or an expected error message. - * @param $message + * @param string $message * Message to display. + * + * @internal */ - public function assertAllowedValuesInput($input_string, $result, $message) { + public function assertAllowedValuesInput(string $input_string, $result, string $message): void { $edit = ['settings[allowed_values]' => $input_string]; $this->drupalGet($this->adminPath); $this->submitForm($edit, 'Save field settings'); diff --git a/core/modules/path/tests/src/Functional/PathContentModerationTest.php b/core/modules/path/tests/src/Functional/PathContentModerationTest.php index dbc9b0f788cd..46e9a92d2e01 100644 --- a/core/modules/path/tests/src/Functional/PathContentModerationTest.php +++ b/core/modules/path/tests/src/Functional/PathContentModerationTest.php @@ -234,8 +234,10 @@ public function testTranslatedModeratedNodeAlias() { * * @param string[] $paths * An array of paths to check for. + * + * @internal */ - public function assertPathsAreAccessible(array $paths) { + public function assertPathsAreAccessible(array $paths): void { foreach ($paths as $path) { $this->drupalGet($path); $this->assertSession()->statusCodeEquals(200); diff --git a/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php b/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php index 43bc7e72d312..065d229f1fba 100644 --- a/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php +++ b/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php @@ -58,8 +58,10 @@ protected function setUp(): void { * The path conditions. * @param \Drupal\path_alias\PathAliasInterface $path_alias * The path alias. + * + * @internal */ - private function assertPath($pid, $conditions, PathAliasInterface $path_alias) { + private function assertPath(int $pid, array $conditions, PathAliasInterface $path_alias): void { $this->assertSame($pid, (int) $path_alias->id()); $this->assertSame($conditions['alias'], $path_alias->getAlias()); $this->assertSame($conditions['langcode'], $path_alias->get('langcode')->value); diff --git a/core/modules/path_alias/tests/src/Functional/UrlAlterFunctionalTest.php b/core/modules/path_alias/tests/src/Functional/UrlAlterFunctionalTest.php index cfac219e1da9..9accbe0435fb 100644 --- a/core/modules/path_alias/tests/src/Functional/UrlAlterFunctionalTest.php +++ b/core/modules/path_alias/tests/src/Functional/UrlAlterFunctionalTest.php @@ -93,12 +93,14 @@ public function testUrlAlter() { /** * Assert that an outbound path is altered to an expected value. * - * @param $original + * @param string $original * A string with the original path that is run through generateFrommPath(). - * @param $final + * @param string $final * A string with the expected result after generateFrommPath(). + * + * @internal */ - protected function assertUrlOutboundAlter($original, $final) { + protected function assertUrlOutboundAlter(string $original, string $final): void { // Test outbound altering. $result = $this->container->get('path_processor_manager')->processOutbound($original); $this->assertSame($final, $result, new FormattableMarkup('Altered outbound URL %original, expected %final, and got %result.', ['%original' => $original, '%final' => $final, '%result' => $result])); @@ -107,12 +109,14 @@ protected function assertUrlOutboundAlter($original, $final) { /** * Assert that an inbound path is altered to an expected value. * - * @param $original + * @param string $original * The original path before it has been altered by inbound URL processing. - * @param $final + * @param string $final * A string with the expected result. + * + * @internal */ - protected function assertUrlInboundAlter($original, $final) { + protected function assertUrlInboundAlter(string $original, string $final): void { // Test inbound altering. $result = $this->container->get('path_alias.manager')->getPathByAlias($original); $this->assertSame($final, $result, new FormattableMarkup('Altered inbound URL %original, expected %final, and got %result.', ['%original' => $original, '%final' => $final, '%result' => $result])); diff --git a/core/modules/quickedit/tests/src/Functional/QuickEditEndPointAccessTest.php b/core/modules/quickedit/tests/src/Functional/QuickEditEndPointAccessTest.php index 1cb90adf40db..dbff08aa289f 100644 --- a/core/modules/quickedit/tests/src/Functional/QuickEditEndPointAccessTest.php +++ b/core/modules/quickedit/tests/src/Functional/QuickEditEndPointAccessTest.php @@ -76,8 +76,10 @@ public function testEndPointAccess() { * The URL to check. * @param array $body * The payload to send with the request. + * + * @internal */ - protected function assertAccessIsBlocked($url, array $body) { + protected function assertAccessIsBlocked(string $url, array $body): void { $client = $this->getHttpClient(); $message = ['message' => "The 'access in-place editing' permission is required."]; diff --git a/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderQuickEditTest.php b/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderQuickEditTest.php index daa5a192c4d9..05744d77eafc 100644 --- a/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderQuickEditTest.php +++ b/core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderQuickEditTest.php @@ -214,14 +214,14 @@ protected function enableLayouts($path) { /** * {@inheritdoc} */ - protected function assertEntityInstanceFieldStates($entity_type_id, $entity_id, $entity_instance_id, array $expected_field_states) { + protected function assertEntityInstanceFieldStates($entity_type_id, $entity_id, $entity_instance_id, array $expected_field_states): void { parent::assertEntityInstanceFieldStates($entity_type_id, $entity_id, $entity_instance_id, $this->replaceLayoutBuilderFieldIdKeys($expected_field_states)); } /** * {@inheritdoc} */ - protected function assertEntityInstanceFieldMarkup($expected_field_attributes) { + protected function assertEntityInstanceFieldMarkup($expected_field_attributes): void { if (func_num_args() === 4) { $expected_field_attributes = func_get_arg(3); @trigger_error('Calling ' . __METHOD__ . '() with 4 arguments is deprecated in drupal:9.1.0 and will throw an error in drupal:10.0.0. See https://www.drupal.org/project/drupal/issues/3037436', E_USER_DEPRECATED); @@ -327,7 +327,7 @@ protected function disableLayoutBuilder($path) { * @param string[] $fields * The fields test. */ - private function assertQuickEditInit(array $fields) { + private function assertQuickEditInit(array $fields): void { $this->assertNotEmpty($fields); $node = $this->article; $this->drupalGet('node/' . $node->id()); diff --git a/core/modules/rdf/tests/src/Functional/StandardProfileTest.php b/core/modules/rdf/tests/src/Functional/StandardProfileTest.php index 7b9d268f2ad1..7148aa38d2c2 100644 --- a/core/modules/rdf/tests/src/Functional/StandardProfileTest.php +++ b/core/modules/rdf/tests/src/Functional/StandardProfileTest.php @@ -338,8 +338,10 @@ protected function doTermRdfaTests() { * The word to use in the test assertion message. * * @throws \Drupal\Core\Entity\EntityMalformedException + * + * @internal */ - protected function assertRdfaCommonNodeProperties(NodeInterface $node, $message_prefix) { + protected function assertRdfaCommonNodeProperties(NodeInterface $node, string $message_prefix): void { $this->drupalGet($node->toUrl()); $uri = $node->toUrl('canonical', ['absolute' => TRUE])->toString(); @@ -390,8 +392,10 @@ protected function assertRdfaCommonNodeProperties(NodeInterface $node, $message_ * * @param string $message_prefix * The word to use in the test assertion message. + * + * @internal */ - protected function assertRdfaArticleProperties($message_prefix) { + protected function assertRdfaArticleProperties(string $message_prefix): void { // Tags. $expected_value = [ 'type' => 'uri', @@ -415,8 +419,10 @@ protected function assertRdfaArticleProperties($message_prefix) { /** * Tests output for comment properties on nodes in full page view mode. + * + * @internal */ - protected function assertRdfaNodeCommentProperties() { + protected function assertRdfaNodeCommentProperties(): void { $this->drupalGet($this->article->toUrl()); // Relationship between node and comment. diff --git a/core/modules/rdf/tests/src/Kernel/Migrate/d7/MigrateRdfMappingTest.php b/core/modules/rdf/tests/src/Kernel/Migrate/d7/MigrateRdfMappingTest.php index 59c2157e86c9..bad3a45e4166 100644 --- a/core/modules/rdf/tests/src/Kernel/Migrate/d7/MigrateRdfMappingTest.php +++ b/core/modules/rdf/tests/src/Kernel/Migrate/d7/MigrateRdfMappingTest.php @@ -49,8 +49,10 @@ protected function setUp(): void { * The expected RDF types. * @param array[] $field_mappings * The expected RDF field mappings. + * + * @internal */ - protected function assertRdfMapping($entity_type, $bundle, $types, $field_mappings) { + protected function assertRdfMapping(string $entity_type, string $bundle, array $types, array $field_mappings): void { $rdf_mapping = rdf_get_mapping($entity_type, $bundle); $this->assertInstanceOf(RdfMappingInterface::class, $rdf_mapping); $this->assertSame($types, $rdf_mapping->getBundleMapping()); diff --git a/core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php b/core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php index b56b027fece9..ba2708ceda6e 100644 --- a/core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php +++ b/core/modules/responsive_image/tests/src/Functional/ResponsiveImageFieldDisplayTest.php @@ -469,7 +469,7 @@ public function testResponsiveImageFieldFormattersOneSource() { * @param string $link_type * The link type to test. Either 'file' or 'content'. */ - private function assertResponsiveImageFieldFormattersLink($link_type) { + private function assertResponsiveImageFieldFormattersLink(string $link_type): void { $field_name = mb_strtolower($this->randomMachineName()); $field_settings = ['alt_field_required' => 0]; $this->createImageField($field_name, 'article', ['uri_scheme' => 'public'], $field_settings); diff --git a/core/modules/search/tests/src/Functional/SearchAdminThemeTest.php b/core/modules/search/tests/src/Functional/SearchAdminThemeTest.php index 10f35c8ccd86..5f6c12ea7e8c 100644 --- a/core/modules/search/tests/src/Functional/SearchAdminThemeTest.php +++ b/core/modules/search/tests/src/Functional/SearchAdminThemeTest.php @@ -93,8 +93,10 @@ public function testSearchUsingAdminTheme() { * * @param bool $is_admin * TRUE to test for administrative theme, FALSE otherwise. + * + * @internal */ - protected function assertAdminTheme($is_admin) { + protected function assertAdminTheme(bool $is_admin): void { if ($is_admin) { $this->assertSession()->responseContains('core/themes/' . $this->adminTheme); } diff --git a/core/modules/search/tests/src/Functional/SearchCommentTest.php b/core/modules/search/tests/src/Functional/SearchCommentTest.php index d0148ca933e7..b07904e922e3 100644 --- a/core/modules/search/tests/src/Functional/SearchCommentTest.php +++ b/core/modules/search/tests/src/Functional/SearchCommentTest.php @@ -307,8 +307,10 @@ public function setRolePermissions($rid, $access_comments = FALSE, $search_conte /** * Update search index and search for comment. + * + * @internal */ - public function assertCommentAccess($assume_access, $message) { + public function assertCommentAccess(bool $assume_access, string $message): void { // Invoke search index update. \Drupal::service('search.index')->markForReindex('node_search', $this->node->id()); $this->cronRun(); diff --git a/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php b/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php index 35d0fd16cd01..a5d4a7f71c68 100644 --- a/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php +++ b/core/modules/search/tests/src/Functional/SearchConfigSettingsFormTest.php @@ -408,17 +408,17 @@ protected function verifySearchPageOperations($id, $edit, $delete, $disable, $en /** * Checks that the default search page matches expectations. * - * @param string $expected + * @param string|false $expected * The expected search page. * @param string $message * (optional) A message to display with the assertion. - * @param string $group - * (optional) The group this message is in. + * + * @internal */ - protected function assertDefaultSearch($expected, $message = '', $group = 'Other') { + protected function assertDefaultSearch($expected, string $message = ''): void { /** @var \Drupal\search\SearchPageRepositoryInterface $search_page_repository */ $search_page_repository = \Drupal::service('search.search_page_repository'); - $this->assertSame($expected, $search_page_repository->getDefaultSearchPage(), $message, $group); + $this->assertSame($expected, $search_page_repository->getDefaultSearchPage(), $message); } /** diff --git a/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php b/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php index 7fcefbe50f5d..a8dbc5d130ba 100644 --- a/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php +++ b/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php @@ -284,8 +284,10 @@ public function testMultilingualSearch() { * Count of total items to verify. * @param string $message * Message to use, something like "after updating the search index". + * + * @internal */ - protected function assertIndexCounts($remaining, $total, $message) { + protected function assertIndexCounts(int $remaining, int $total, string $message): void { // Check status via plugin method call. $status = $this->plugin->indexStatus(); $this->assertEquals($remaining, $status['remaining'], 'Remaining items ' . $message . ' is ' . $remaining); @@ -320,8 +322,10 @@ protected function assertIndexCounts($remaining, $total, $message) { * Count of "foo" items to assert. * @param string $message * Message suffix to use. + * + * @internal */ - protected function assertDatabaseCounts($count_node, $count_foo, $message) { + protected function assertDatabaseCounts(int $count_node, int $count_foo, string $message): void { // Count number of distinct nodes by ID. $connection = Database::getConnection(); $results = $connection->select('search_dataset', 'i') diff --git a/core/modules/search/tests/src/Kernel/Migrate/d7/MigrateSearchPageTest.php b/core/modules/search/tests/src/Kernel/Migrate/d7/MigrateSearchPageTest.php index 16106e75302f..d3e8ee38ea98 100644 --- a/core/modules/search/tests/src/Kernel/Migrate/d7/MigrateSearchPageTest.php +++ b/core/modules/search/tests/src/Kernel/Migrate/d7/MigrateSearchPageTest.php @@ -31,8 +31,10 @@ class MigrateSearchPageTest extends MigrateDrupal7TestBase { * The expected status of the search page. * @param array $expected_config * An array of expected configuration for the search page. + * + * @internal */ - protected function assertEntity($id, $path, $status = FALSE, array $expected_config = NULL) { + protected function assertEntity(string $id, string $path, bool $status = FALSE, array $expected_config = NULL): void { /** @var \Drupal\search\Entity\SearchPage $search_page */ $search_page = SearchPage::load($id); $this->assertSame($id, $search_page->id()); diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php index 617dce5271d7..459ad5da43a6 100644 --- a/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php +++ b/core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php @@ -427,8 +427,10 @@ public function testDenormalizeWithId() { * * @param array $data * The data to denormalize. + * + * @internal */ - protected function assertDenormalize(array $data) { + protected function assertDenormalize(array $data): void { $this->fieldItem->getParent() ->willReturn($this->prophesize(FieldItemListInterface::class)->reveal()); $this->fieldItem->getFieldDefinition()->willReturn($this->fieldDefinition->reveal()); diff --git a/core/modules/settings_tray/tests/src/FunctionalJavascript/OverriddenConfigurationTest.php b/core/modules/settings_tray/tests/src/FunctionalJavascript/OverriddenConfigurationTest.php index cfe5c1566bb2..8d17f3a65270 100644 --- a/core/modules/settings_tray/tests/src/FunctionalJavascript/OverriddenConfigurationTest.php +++ b/core/modules/settings_tray/tests/src/FunctionalJavascript/OverriddenConfigurationTest.php @@ -156,8 +156,10 @@ public function testOverriddenBlock() { * The overridden block. * @param string $override_text * The override text that should appear in the block. + * + * @internal */ - protected function assertOverriddenBlockDisabled(Block $overridden_block, $override_text) { + protected function assertOverriddenBlockDisabled(Block $overridden_block, string $override_text): void { $web_assert = $this->assertSession(); $page = $this->getSession()->getPage(); $block_selector = $this->getBlockSelector($overridden_block); diff --git a/core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php b/core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php index a3029053f4e2..4dc879b389fd 100644 --- a/core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php +++ b/core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php @@ -462,20 +462,13 @@ public function testShortcutBlockAccess() { * (optional) A message to display with the assertion. Do not translate * messages: use new FormattableMarkup() to embed variables in the message text, not * t(). If left blank, a default message will be displayed. - * @param string $group - * (optional) The group this message is in, which is displayed in a column - * in test output. Use 'Debug' to indicate this is debugging output. Do not - * translate this string. Defaults to 'Other'; most tests do not override - * this default. * - * @return bool - * TRUE if the assertion succeeded. + * @internal */ - protected function assertShortcutQuickLink($label, $index = 0, $message = '', $group = 'Other') { + protected function assertShortcutQuickLink(string $label, int $index = 0, string $message = ''): void { $links = $this->xpath('//a[normalize-space()=:label]', [':label' => $label]); $message = ($message ? $message : new FormattableMarkup('Shortcut quick link with label %label found.', ['%label' => $label])); $this->assertArrayHasKey($index, $links, $message); - return TRUE; } } diff --git a/core/modules/shortcut/tests/src/Kernel/Migrate/d7/MigrateShortcutSetTest.php b/core/modules/shortcut/tests/src/Kernel/Migrate/d7/MigrateShortcutSetTest.php index 61b438abbc5e..c932114e6e96 100644 --- a/core/modules/shortcut/tests/src/Kernel/Migrate/d7/MigrateShortcutSetTest.php +++ b/core/modules/shortcut/tests/src/Kernel/Migrate/d7/MigrateShortcutSetTest.php @@ -54,8 +54,10 @@ public function testShortcutSetMigration() { * The expected shortcut set label. * @param int $expected_size * The number of shortcuts expected to be in the set. + * + * @internal */ - protected function assertEntity($id, $label, $expected_size) { + protected function assertEntity(string $id, string $label, int $expected_size): void { $shortcut_set = ShortcutSet::load($id); $this->assertInstanceOf(ShortcutSetInterface::class, $shortcut_set); /** @var \Drupal\shortcut\ShortcutSetInterface $shortcut_set */ diff --git a/core/modules/shortcut/tests/src/Kernel/Migrate/d7/MigrateShortcutTest.php b/core/modules/shortcut/tests/src/Kernel/Migrate/d7/MigrateShortcutTest.php index 6e1b4fefe03e..bf9d9bbf1b3b 100644 --- a/core/modules/shortcut/tests/src/Kernel/Migrate/d7/MigrateShortcutTest.php +++ b/core/modules/shortcut/tests/src/Kernel/Migrate/d7/MigrateShortcutTest.php @@ -48,13 +48,15 @@ protected function setUp(): void { * The expected weight of the shortcut. * @param string $url * The expected URL of the shortcut. + * + * @internal */ - protected function assertEntity($id, $title, $weight, $url) { + protected function assertEntity(int $id, string $title, int $weight, string $url): void { $shortcut = Shortcut::load($id); $this->assertInstanceOf(ShortcutInterface::class, $shortcut); /** @var \Drupal\shortcut\ShortcutInterface $shortcut */ $this->assertSame($title, $shortcut->getTitle()); - $this->assertSame($weight, $shortcut->getWeight()); + $this->assertSame($weight, (int) $shortcut->getWeight()); $this->assertSame($url, $shortcut->getUrl()->toString()); } @@ -63,10 +65,10 @@ protected function assertEntity($id, $title, $weight, $url) { */ public function testShortcutMigration() { // Check if the 4 shortcuts were migrated correctly. - $this->assertEntity(1, 'Add content', '-20', '/node/add'); - $this->assertEntity(2, 'Find content', '-19', '/admin/content'); - $this->assertEntity(3, 'Help', '-49', '/admin/help'); - $this->assertEntity(4, 'People', '-50', '/admin/people'); + $this->assertEntity(1, 'Add content', -20, '/node/add'); + $this->assertEntity(2, 'Find content', -19, '/admin/content'); + $this->assertEntity(3, 'Help', -49, '/admin/help'); + $this->assertEntity(4, 'People', -50, '/admin/people'); } } diff --git a/core/modules/statistics/tests/src/Kernel/Migrate/d6/MigrateNodeCounterTest.php b/core/modules/statistics/tests/src/Kernel/Migrate/d6/MigrateNodeCounterTest.php index 7e31b6a308f9..f42079f74a73 100644 --- a/core/modules/statistics/tests/src/Kernel/Migrate/d6/MigrateNodeCounterTest.php +++ b/core/modules/statistics/tests/src/Kernel/Migrate/d6/MigrateNodeCounterTest.php @@ -77,8 +77,10 @@ public function testStatisticsSettings() { * The expected day count. * @param int $timestamp * The expected timestamp. + * + * @internal */ - protected function assertNodeCounter($nid, $total_count, $day_count, $timestamp) { + protected function assertNodeCounter(int $nid, int $total_count, int $day_count, int $timestamp): void { /** @var \Drupal\statistics\StatisticsViewsResult $statistics */ $statistics = $this->container->get('statistics.storage.node')->fetchView($nid); $this->assertSame($total_count, $statistics->getTotalCount()); diff --git a/core/modules/statistics/tests/src/Kernel/Migrate/d7/MigrateNodeCounterTest.php b/core/modules/statistics/tests/src/Kernel/Migrate/d7/MigrateNodeCounterTest.php index f2041654f285..7f8c319831e5 100644 --- a/core/modules/statistics/tests/src/Kernel/Migrate/d7/MigrateNodeCounterTest.php +++ b/core/modules/statistics/tests/src/Kernel/Migrate/d7/MigrateNodeCounterTest.php @@ -68,8 +68,10 @@ public function testStatisticsSettings() { * The expected day count. * @param int $timestamp * The expected timestamp. + * + * @internal */ - protected function assertNodeCounter($nid, $total_count, $day_count, $timestamp) { + protected function assertNodeCounter(int $nid, int $total_count, int $day_count, int $timestamp): void { /** @var \Drupal\statistics\StatisticsViewsResult $statistics */ $statistics = $this->container->get('statistics.storage.node')->fetchView($nid); $this->assertSame($total_count, $statistics->getTotalCount()); diff --git a/core/modules/system/tests/src/Functional/Ajax/FrameworkTest.php b/core/modules/system/tests/src/Functional/Ajax/FrameworkTest.php index 402ac866622e..de95fb576168 100644 --- a/core/modules/system/tests/src/Functional/Ajax/FrameworkTest.php +++ b/core/modules/system/tests/src/Functional/Ajax/FrameworkTest.php @@ -107,12 +107,14 @@ public function testAJAXRenderError() { * the actual command contains additional settings that aren't part of * $needle. * - * @param $haystack + * @param array $haystack * An array of rendered Ajax commands returned by the server. - * @param $needle + * @param array $needle * Array of info we're expecting in one of those commands. + * + * @internal */ - protected function assertCommand($haystack, $needle) { + protected function assertCommand(array $haystack, array $needle): void { $found = FALSE; foreach ($haystack as $command) { // If the command has additional settings that we're not testing for, do diff --git a/core/modules/system/tests/src/Functional/Batch/ProcessingTest.php b/core/modules/system/tests/src/Functional/Batch/ProcessingTest.php index e624e4c1decf..430883e7cbd1 100644 --- a/core/modules/system/tests/src/Functional/Batch/ProcessingTest.php +++ b/core/modules/system/tests/src/Functional/Batch/ProcessingTest.php @@ -221,16 +221,13 @@ public function testBatchLargePercentage() { * Triggers a pass if the texts were found in order in the raw content. * * @param $texts - * Array of raw strings to look for . - * @param $message - * Message to display. + * Array of raw strings to look for. * - * @return - * TRUE on pass, FALSE on fail. + * @internal */ - public function assertBatchMessages($texts, $message) { + public function assertBatchMessages(array $texts): void { $pattern = '|' . implode('.*', $texts) . '|s'; - return $this->assertSession()->responseMatches($pattern); + $this->assertSession()->responseMatches($pattern); } /** diff --git a/core/modules/system/tests/src/Functional/Cache/SessionExistsCacheContextTest.php b/core/modules/system/tests/src/Functional/Cache/SessionExistsCacheContextTest.php index e7561716cbb4..dca3999efc59 100644 --- a/core/modules/system/tests/src/Functional/Cache/SessionExistsCacheContextTest.php +++ b/core/modules/system/tests/src/Functional/Cache/SessionExistsCacheContextTest.php @@ -62,8 +62,10 @@ public function testCacheContext() { /** * Asserts whether a session cookie is present on the client or not. + * + * @internal */ - public function assertSessionCookieOnClient($expected_present) { + public function assertSessionCookieOnClient(bool $expected_present): void { $this->assertEquals($expected_present, (bool) $this->getSession()->getCookie($this->getSessionName()), 'Session cookie exists.'); } diff --git a/core/modules/system/tests/src/Functional/Common/NoJavaScriptAnonymousTest.php b/core/modules/system/tests/src/Functional/Common/NoJavaScriptAnonymousTest.php index 148d025e8dfe..4e064969f8fd 100644 --- a/core/modules/system/tests/src/Functional/Common/NoJavaScriptAnonymousTest.php +++ b/core/modules/system/tests/src/Functional/Common/NoJavaScriptAnonymousTest.php @@ -47,8 +47,10 @@ public function testNoJavaScript() { /** * Passes if no JavaScript is found on the page. + * + * @internal */ - protected function assertNoJavaScript() { + protected function assertNoJavaScript(): void { // Ensure drupalSettings is not set. $settings = $this->getDrupalSettings(); $this->assertTrue(empty($settings), 'drupalSettings is not set.'); diff --git a/core/modules/system/tests/src/Functional/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php b/core/modules/system/tests/src/Functional/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php index 1ab19c710c1b..8f6a4fcaa34c 100644 --- a/core/modules/system/tests/src/Functional/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php +++ b/core/modules/system/tests/src/Functional/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php @@ -91,8 +91,10 @@ protected function setUp(): void { * An array of tests to run. * @param string $handler_name * The name of the entity type selection handler being tested. + * + * @internal */ - protected function assertReferenceable(array $selection_options, $tests, $handler_name) { + protected function assertReferenceable(array $selection_options, array $tests, string $handler_name): void { $handler = \Drupal::service('plugin.manager.entity_reference_selection')->getInstance($selection_options); foreach ($tests as $test) { diff --git a/core/modules/system/tests/src/Functional/Form/ConfirmFormTest.php b/core/modules/system/tests/src/Functional/Form/ConfirmFormTest.php index 5be7c331889d..1cd9a8eb7482 100644 --- a/core/modules/system/tests/src/Functional/Form/ConfirmFormTest.php +++ b/core/modules/system/tests/src/Functional/Form/ConfirmFormTest.php @@ -79,13 +79,13 @@ public function testConfirmFormWithExternalDestination() { * The url to check for. * @param string $message * The assert message. - * @param string $group - * The assertion group. + * + * @internal */ - public function assertCancelLinkUrl(Url $url, $message = '', $group = 'Other') { + public function assertCancelLinkUrl(Url $url, string $message = ''): void { $links = $this->xpath('//a[@href=:url]', [':url' => $url->toString()]); $message = ($message ? $message : new FormattableMarkup('Cancel link with URL %url found.', ['%url' => $url->toString()])); - $this->assertTrue(isset($links[0]), $message, $group); + $this->assertTrue(isset($links[0]), $message); } } diff --git a/core/modules/system/tests/src/Functional/Form/FormTest.php b/core/modules/system/tests/src/Functional/Form/FormTest.php index 860ff8dd0077..7c4eddd2fd38 100644 --- a/core/modules/system/tests/src/Functional/Form/FormTest.php +++ b/core/modules/system/tests/src/Functional/Form/FormTest.php @@ -790,8 +790,10 @@ public function testDisabledElements() { /** * Assert that the values submitted to a form matches the default values of the elements. + * + * @internal */ - public function assertFormValuesDefault($values, $form) { + public function assertFormValuesDefault(array $values, array $form): void { foreach (Element::children($form) as $key) { if (isset($form[$key]['#default_value'])) { if (isset($form[$key]['#expected_value'])) { diff --git a/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php b/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php index ca1af095f3ba..ecb9e2605470 100644 --- a/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php +++ b/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php @@ -41,18 +41,20 @@ protected function stringToHtml($text) { /** * Helper function to test \Drupal\Core\Mail\MailFormatHelper::htmlToText(). * - * @param $html + * @param string $html * The source HTML string to be converted. - * @param $text + * @param string $text * The expected result of converting $html to text. - * @param $message + * @param string $message * A text message to display in the assertion message. - * @param $allowed_tags + * @param array|null $allowed_tags * (optional) An array of allowed tags, or NULL to default to the full * set of tags supported by * \Drupal\Core\Mail\MailFormatHelper::htmlToText(). + * + * @internal */ - protected function assertHtmlToText($html, $text, $message, $allowed_tags = NULL) { + protected function assertHtmlToText(string $html, string $text, string $message, ?array $allowed_tags = NULL): void { preg_match_all('/<([a-z0-6]+)/', mb_strtolower($html), $matches); $tested_tags = implode(', ', array_unique($matches[1])); $message .= ' (' . $tested_tags . ')'; diff --git a/core/modules/system/tests/src/Functional/Menu/LocalActionTest.php b/core/modules/system/tests/src/Functional/Menu/LocalActionTest.php index fcea5966ad92..f4ca2ab86ef8 100644 --- a/core/modules/system/tests/src/Functional/Menu/LocalActionTest.php +++ b/core/modules/system/tests/src/Functional/Menu/LocalActionTest.php @@ -70,8 +70,10 @@ public function testLocalAction() { * * @param array $actions * A list of expected action link titles, keyed by the hrefs. + * + * @internal */ - protected function assertLocalAction(array $actions) { + protected function assertLocalAction(array $actions): void { $elements = $this->xpath('//a[contains(@class, :class)]', [ ':class' => 'button-action', ]); diff --git a/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php b/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php index 7c74f5aaedf8..c9ddfb282402 100644 --- a/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php +++ b/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php @@ -51,8 +51,10 @@ protected function setUp(): void { * @param int $level * (optional) The local tasks level to assert; 0 for primary, 1 for * secondary. Defaults to 0. + * + * @internal */ - protected function assertLocalTasks(array $routes, $level = 0) { + protected function assertLocalTasks(array $routes, int $level = 0): void { $elements = $this->xpath('//*[contains(@class, :class)]//a', [ ':class' => $level == 0 ? 'tabs primary' : 'tabs secondary', ]); @@ -71,15 +73,14 @@ protected function assertLocalTasks(array $routes, $level = 0) { * @param string $title * The expected title. * - * @return bool - * TRUE if the local task exists on the page. + * @internal */ - protected function assertLocalTaskAppears($title) { + protected function assertLocalTaskAppears(string $title): void { // SimpleXML gives us the unescaped text, not the actual escaped markup, // so use a pattern instead to check the raw content. // This behavior is a bug in libxml, see // https://bugs.php.net/bug.php?id=49437. - return $this->assertSession()->responseMatches('@<a [^>]*>' . preg_quote($title, '@') . '</a>@'); + $this->assertSession()->responseMatches('@<a [^>]*>' . preg_quote($title, '@') . '</a>@'); } /** @@ -88,8 +89,10 @@ protected function assertLocalTaskAppears($title) { * @param int $level * (optional) The local tasks level to assert; 0 for primary, 1 for * secondary. Defaults to 0. + * + * @internal */ - protected function assertNoLocalTasks($level = 0) { + protected function assertNoLocalTasks(int $level = 0): void { $elements = $this->xpath('//*[contains(@class, :class)]//a', [ ':class' => $level == 0 ? 'tabs primary' : 'tabs secondary', ]); diff --git a/core/modules/system/tests/src/Functional/Module/InstallUninstallTest.php b/core/modules/system/tests/src/Functional/Module/InstallUninstallTest.php index 9b6a3cb856f3..11030908cc23 100644 --- a/core/modules/system/tests/src/Functional/Module/InstallUninstallTest.php +++ b/core/modules/system/tests/src/Functional/Module/InstallUninstallTest.php @@ -231,8 +231,10 @@ public function testInstallUninstall() { * * @param string $name * Name of the module to check. + * + * @internal */ - protected function assertModuleNotInstalled($name) { + protected function assertModuleNotInstalled(string $name): void { $this->assertModules([$name], FALSE); $this->assertModuleTablesDoNotExist($name); } @@ -242,8 +244,10 @@ protected function assertModuleNotInstalled($name) { * * @param string $name * Name of the module to check. + * + * @internal */ - protected function assertModuleSuccessfullyInstalled($name) { + protected function assertModuleSuccessfullyInstalled(string $name): void { $this->assertModules([$name], TRUE); $this->assertModuleTablesExist($name); $this->assertModuleConfig($name); @@ -257,8 +261,10 @@ protected function assertModuleSuccessfullyInstalled($name) { * @param string $package * (optional) The package of the module to uninstall. Defaults * to 'Core'. + * + * @internal */ - protected function assertSuccessfulUninstall($module, $package = 'Core') { + protected function assertSuccessfulUninstall(string $module, string $package = 'Core'): void { $edit = []; $edit['uninstall[' . $module . ']'] = TRUE; $this->drupalGet('admin/modules/uninstall'); @@ -286,8 +292,10 @@ protected function assertSuccessfulUninstall($module, $package = 'Core') { * * @param string $module * The module that got installed. + * + * @internal */ - protected function assertInstallModuleUpdates($module) { + protected function assertInstallModuleUpdates(string $module): void { /** @var \Drupal\Core\Update\UpdateRegistry $post_update_registry */ $post_update_registry = \Drupal::service('update.post_update_registry'); $all_update_functions = $post_update_registry->getPendingUpdateFunctions(); @@ -323,8 +331,10 @@ protected function assertInstallModuleUpdates($module) { * * @param string $module * The module that got installed. + * + * @internal */ - protected function assertUninstallModuleUpdates($module) { + protected function assertUninstallModuleUpdates(string $module): void { /** @var \Drupal\Core\Update\UpdateRegistry $post_update_registry */ $post_update_registry = \Drupal::service('update.post_update_registry'); $all_update_functions = $post_update_registry->getPendingUpdateFunctions(); @@ -350,8 +360,10 @@ protected function assertUninstallModuleUpdates($module) { * Machine name of the module to verify. * @param string $name * Human-readable name of the module to verify. + * + * @internal */ - protected function assertHelp($module, $name) { + protected function assertHelp(string $module, string $name): void { $this->drupalGet('admin/help/' . $module); $this->assertSession()->statusCodeEquals(200); $this->assertSession()->pageTextContains($name . ' module'); diff --git a/core/modules/system/tests/src/Functional/Pager/PagerTest.php b/core/modules/system/tests/src/Functional/Pager/PagerTest.php index cc570726c37b..d6f09f2174bb 100644 --- a/core/modules/system/tests/src/Functional/Pager/PagerTest.php +++ b/core/modules/system/tests/src/Functional/Pager/PagerTest.php @@ -216,8 +216,10 @@ public function testPagerEllipsis() { * * @param int $current_page * The current pager page the internal browser is on. + * + * @internal */ - protected function assertPagerItems($current_page) { + protected function assertPagerItems(int $current_page): void { $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']); $this->assertNotEmpty($elements, 'Pager found.'); @@ -319,8 +321,10 @@ protected function assertPagerItems($current_page) { * The class to assert. * @param string $message * (optional) A verbose message to output. + * + * @internal */ - protected function assertClass(NodeElement $element, $class, $message = NULL) { + protected function assertClass(NodeElement $element, string $class, string $message = NULL): void { if (!isset($message)) { $message = "Class .$class found."; } @@ -336,8 +340,10 @@ protected function assertClass(NodeElement $element, $class, $message = NULL) { * The class to assert. * @param string $message * (optional) A verbose message to output. + * + * @internal */ - protected function assertNoClass(NodeElement $element, $class, $message = NULL) { + protected function assertNoClass(NodeElement $element, string $class, string $message = NULL): void { if (!isset($message)) { $message = "Class .$class not found."; } diff --git a/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php b/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php index 9921fe04a900..a66e3d023260 100644 --- a/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php +++ b/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php @@ -101,8 +101,10 @@ public function testRenderCachedBlock() { /** * Helper function to make assertions about added HTTP headers. + * + * @internal */ - protected function assertTeapotHeaders() { + protected function assertTeapotHeaders(): void { $this->assertSession()->responseHeaderEquals('X-Test-Teapot', 'Teapot Mode Active'); $this->assertSession()->responseHeaderEquals('X-Test-Teapot-Replace', 'Teapot replaced'); $this->assertSession()->responseHeaderEquals('X-Test-Teapot-No-Replace', 'This value is not replaced'); @@ -110,8 +112,10 @@ protected function assertTeapotHeaders() { /** * Helper function to make assertions about the presence of an RSS feed. + * + * @internal */ - protected function assertFeed() { + protected function assertFeed(): void { // Discover the DOM element for the feed link. $test_meta = $this->xpath('//head/link[@href="test://url"]'); $this->assertCount(1, $test_meta, 'Link has URL.'); @@ -135,8 +139,10 @@ protected function assertFeed() { /** * Helper function to make assertions about HTML head elements. + * + * @internal */ - protected function assertHead() { + protected function assertHead(): void { // Discover the DOM element for the meta link. $test_meta = $this->xpath('//head/meta[@test-attribute="testvalue"]'); $this->assertCount(1, $test_meta, 'There\'s only one test attribute.'); diff --git a/core/modules/system/tests/src/Functional/SecurityAdvisories/SecurityAdvisoryTest.php b/core/modules/system/tests/src/Functional/SecurityAdvisories/SecurityAdvisoryTest.php index 4d6cb3928cc6..c96f119d5f41 100644 --- a/core/modules/system/tests/src/Functional/SecurityAdvisories/SecurityAdvisoryTest.php +++ b/core/modules/system/tests/src/Functional/SecurityAdvisories/SecurityAdvisoryTest.php @@ -217,6 +217,8 @@ public function testPsa(): void { * The expected links' text. * @param int $error_or_warning * Whether the links are a warning or an error. Should be one of the REQUIREMENT_* constants. + * + * @internal */ private function assertAdminPageLinks(array $expected_link_texts, int $error_or_warning): void { $assert = $this->assertSession(); @@ -241,6 +243,8 @@ private function assertAdminPageLinks(array $expected_link_texts, int $error_or_ * The expected links' text. * @param int $error_or_warning * Whether the links are a warning or an error. Should be one of the REQUIREMENT_* constants. + * + * @internal */ private function assertStatusReportLinks(array $expected_link_texts, int $error_or_warning): void { $this->drupalGet(Url::fromRoute('system.status')); @@ -260,6 +264,8 @@ private function assertStatusReportLinks(array $expected_link_texts, int $error_ * The advisory links. * @param array $routes * The routes to test. + * + * @internal */ private function assertAdvisoriesNotDisplayed(array $links, array $routes = ['system.status', 'system.admin']): void { foreach ($routes as $route) { @@ -281,6 +287,8 @@ private function assertAdvisoriesNotDisplayed(array $links, array $routes = ['sy * The expected error messages. * * @see \Drupal\advisory_feed_test\TestSystemLoggerChannel::log() + * + * @internal */ protected function assertServiceAdvisoryLoggedErrors(array $expected_messages): void { $state = $this->container->get('state'); diff --git a/core/modules/system/tests/src/Functional/Session/SessionAuthenticationTest.php b/core/modules/system/tests/src/Functional/Session/SessionAuthenticationTest.php index 55219cd376f5..5b7c31c92f87 100644 --- a/core/modules/system/tests/src/Functional/Session/SessionAuthenticationTest.php +++ b/core/modules/system/tests/src/Functional/Session/SessionAuthenticationTest.php @@ -103,8 +103,10 @@ public function testBasicAuthSession() { * A response object containing the session values and the user ID. * @param string $expected * The expected session value. + * + * @internal */ - protected function assertSessionData($response, $expected) { + protected function assertSessionData(string $response, string $expected): void { $response = json_decode($response, TRUE); $this->assertEquals(['test_value' => $expected], $response['session'], 'The session data matches the expected value.'); diff --git a/core/modules/system/tests/src/Functional/Session/SessionHttpsTest.php b/core/modules/system/tests/src/Functional/Session/SessionHttpsTest.php index 0b679ad373e5..8b123f0882a7 100644 --- a/core/modules/system/tests/src/Functional/Session/SessionHttpsTest.php +++ b/core/modules/system/tests/src/Functional/Session/SessionHttpsTest.php @@ -254,12 +254,14 @@ protected function getPathFromLocationHeader(ResponseInterface $response, $https /** * Tests that there exists a session with two specific session IDs. * - * @param $sid + * @param string $sid * The insecure session ID to search for. - * @param $assertion_text + * @param string $assertion_text * The text to display when we perform the assertion. + * + * @internal */ - protected function assertSessionIds($sid, $assertion_text) { + protected function assertSessionIds(string $sid, string $assertion_text): void { $this->assertNotEmpty(\Drupal::database()->select('sessions', 's')->fields('s', ['timestamp'])->condition('sid', Crypt::hashBase64($sid))->execute()->fetchField(), $assertion_text); } diff --git a/core/modules/system/tests/src/Functional/Session/SessionTest.php b/core/modules/system/tests/src/Functional/Session/SessionTest.php index b07b8cb55b97..10c8f55b4704 100644 --- a/core/modules/system/tests/src/Functional/Session/SessionTest.php +++ b/core/modules/system/tests/src/Functional/Session/SessionTest.php @@ -372,8 +372,10 @@ public function sessionReset() { /** * Assert whether the SimpleTest browser sent a session cookie. + * + * @internal */ - public function assertSessionCookie($sent) { + public function assertSessionCookie(bool $sent): void { if ($sent) { $this->assertNotEmpty($this->getSessionCookies()->count(), 'Session cookie was sent.'); } @@ -384,8 +386,10 @@ public function assertSessionCookie($sent) { /** * Assert whether $_SESSION is empty at the beginning of the request. + * + * @internal */ - public function assertSessionEmpty($empty) { + public function assertSessionEmpty(bool $empty): void { if ($empty) { $this->assertSession()->responseHeaderEquals('X-Session-Empty', '1'); } diff --git a/core/modules/system/tests/src/Functional/System/ErrorHandlerTest.php b/core/modules/system/tests/src/Functional/System/ErrorHandlerTest.php index 5d97125dd57c..26daf6ec1c9d 100644 --- a/core/modules/system/tests/src/Functional/System/ErrorHandlerTest.php +++ b/core/modules/system/tests/src/Functional/System/ErrorHandlerTest.php @@ -150,16 +150,20 @@ public function testExceptionHandler() { /** * Helper function: assert that the error message is found. + * + * @internal */ - public function assertErrorMessage(array $error) { + public function assertErrorMessage(array $error): void { $message = new FormattableMarkup('%type: @message in %function (line ', $error); $this->assertSession()->responseContains($message); } /** * Helper function: assert that the error message is not found. + * + * @internal */ - public function assertNoErrorMessage(array $error) { + public function assertNoErrorMessage(array $error): void { $message = new FormattableMarkup('%type: @message in %function (line ', $error); $this->assertSession()->responseNotContains($message); } @@ -169,8 +173,10 @@ public function assertNoErrorMessage(array $error) { * * Ensures that no messages div exists, which proves that no messages were * generated by the error handler, not even an empty one. + * + * @internal */ - protected function assertNoMessages() { + protected function assertNoMessages(): void { $this->assertSession()->elementNotExists('xpath', '//div[contains(@class, "messages")]'); } diff --git a/core/modules/system/tests/src/Functional/System/HtaccessTest.php b/core/modules/system/tests/src/Functional/System/HtaccessTest.php index 092f57ac7020..e932fa3b348c 100644 --- a/core/modules/system/tests/src/Functional/System/HtaccessTest.php +++ b/core/modules/system/tests/src/Functional/System/HtaccessTest.php @@ -139,8 +139,10 @@ public function testFileAccess() { * Path to file. Without leading slash. * @param int $response_code * The expected response code. For example: 200, 403 or 404. + * + * @internal */ - protected function assertFileAccess($path, $response_code) { + protected function assertFileAccess(string $path, int $response_code): void { $this->assertFileExists(\Drupal::root() . '/' . $path); $this->drupalGet($path); $this->assertEquals($response_code, $this->getSession()->getStatusCode(), "Response code to $path should be $response_code"); diff --git a/core/modules/system/tests/src/Functional/System/ThemeTest.php b/core/modules/system/tests/src/Functional/System/ThemeTest.php index ca1c94eaf14a..6859bf697ecd 100644 --- a/core/modules/system/tests/src/Functional/System/ThemeTest.php +++ b/core/modules/system/tests/src/Functional/System/ThemeTest.php @@ -509,7 +509,7 @@ public function testThemeSettingsNoLogoNoFavicon() { * @param string $expected_text * The expected incompatibility text. */ - private function assertThemeIncompatibleText($theme_name, $expected_text) { + private function assertThemeIncompatibleText(string $theme_name, string $expected_text): void { $this->assertSession()->elementExists('css', ".theme-info:contains(\"$theme_name\") .incompatible:contains(\"$expected_text\")"); } diff --git a/core/modules/system/tests/src/Functional/Theme/ThemeUiTest.php b/core/modules/system/tests/src/Functional/Theme/ThemeUiTest.php index 39fce07d4c25..98388dbd1462 100644 --- a/core/modules/system/tests/src/Functional/Theme/ThemeUiTest.php +++ b/core/modules/system/tests/src/Functional/Theme/ThemeUiTest.php @@ -285,8 +285,10 @@ public function providerTestThemeInstallWithModuleDependencies() { * The modules listed as being required to install the theme. * @param string $theme_name * The name of the theme. + * + * @internal */ - protected function assertUninstallableTheme(array $expected_requires_list_items, $theme_name) { + protected function assertUninstallableTheme(array $expected_requires_list_items, string $theme_name): void { $theme_container = $this->getSession()->getPage()->find('css', "h3:contains(\"$theme_name\")")->getParent(); $requires_list_items = $theme_container->findAll('css', '.theme-info__requires li'); $this->assertSameSize($expected_requires_list_items, $requires_list_items); diff --git a/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php b/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php index e123f7e05153..d2eab6684343 100644 --- a/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php +++ b/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php @@ -37,8 +37,10 @@ protected function setUp(): void { /** * Checks to see if a value is a Twig template. + * + * @internal */ - public function assertTwigTemplate($value, $message = '') { + public function assertTwigTemplate($value, string $message = ''): void { $this->assertInstanceOf(TemplateWrapper::class, $value, $message); } diff --git a/core/modules/system/tests/src/Functional/Theme/TwigTransTest.php b/core/modules/system/tests/src/Functional/Theme/TwigTransTest.php index cb292abf31d7..35078dc72716 100644 --- a/core/modules/system/tests/src/Functional/Theme/TwigTransTest.php +++ b/core/modules/system/tests/src/Functional/Theme/TwigTransTest.php @@ -123,8 +123,10 @@ public function testEmptyTwigTransTags() { /** * Asserts Twig trans tags. + * + * @internal */ - protected function assertTwigTransTags() { + protected function assertTwigTransTags(): void { // Assert that {% trans "Hello sun." %} is translated correctly. $this->assertSession()->pageTextContains('OH HAI SUNZ'); diff --git a/core/modules/system/tests/src/Functional/UpdateSystem/UpdateScriptTest.php b/core/modules/system/tests/src/Functional/UpdateSystem/UpdateScriptTest.php index c6b31078c247..63286e8fb772 100644 --- a/core/modules/system/tests/src/Functional/UpdateSystem/UpdateScriptTest.php +++ b/core/modules/system/tests/src/Functional/UpdateSystem/UpdateScriptTest.php @@ -803,8 +803,10 @@ public function getSystemSchema() { * The extension type, either 'module' or 'theme'. * @param string $extension_machine_name * The extension machine name. + * + * @internal */ - protected function assertInstalledExtensionConfig($extension_type, $extension_machine_name) { + protected function assertInstalledExtensionConfig(string $extension_type, string $extension_machine_name): void { $extension_config = $this->container->get('config.factory')->getEditable('core.extension'); $this->assertSame(0, $extension_config->get("$extension_type.$extension_machine_name")); } @@ -820,8 +822,10 @@ protected function assertInstalledExtensionConfig($extension_type, $extension_ma * The extension machine name. * * @throws \Behat\Mink\Exception\ResponseTextException + * + * @internal */ - protected function assertUpdateWithNoError($unexpected_error_text, $extension_type, $extension_machine_name) { + protected function assertUpdateWithNoError(string $unexpected_error_text, string $extension_type, string $extension_machine_name): void { $assert_session = $this->assertSession(); $this->drupalGet($this->statusReportUrl); $this->assertSession()->pageTextNotContains($unexpected_error_text); @@ -845,8 +849,10 @@ protected function assertUpdateWithNoError($unexpected_error_text, $extension_ty * * @throws \Behat\Mink\Exception\ExpectationException * @throws \Behat\Mink\Exception\ResponseTextException + * + * @internal */ - protected function assertErrorOnUpdate($expected_error_text, $extension_type, $extension_machine_name) { + protected function assertErrorOnUpdate(string $expected_error_text, string $extension_type, string $extension_machine_name): void { $assert_session = $this->assertSession(); $this->drupalGet($this->statusReportUrl); $this->assertSession()->pageTextContains($expected_error_text); diff --git a/core/modules/system/tests/src/FunctionalJavascript/OffCanvasTest.php b/core/modules/system/tests/src/FunctionalJavascript/OffCanvasTest.php index 348c11addef1..c4f6a047aaac 100644 --- a/core/modules/system/tests/src/FunctionalJavascript/OffCanvasTest.php +++ b/core/modules/system/tests/src/FunctionalJavascript/OffCanvasTest.php @@ -150,8 +150,10 @@ public function testNarrowWidth() { * The index of the link to test. * @param string $position * The position of the dialog to test. + * + * @internal */ - protected function assertOffCanvasDialog($link_index, $position) { + protected function assertOffCanvasDialog(int $link_index, string $position): void { $page = $this->getSession()->getPage(); $web_assert = $this->assertSession(); $link_text = "Open $position panel $link_index"; diff --git a/core/modules/system/tests/src/Kernel/Common/FormElementsRenderTest.php b/core/modules/system/tests/src/Kernel/Common/FormElementsRenderTest.php index 9c8330455629..f5f79c1d2a24 100644 --- a/core/modules/system/tests/src/Kernel/Common/FormElementsRenderTest.php +++ b/core/modules/system/tests/src/Kernel/Common/FormElementsRenderTest.php @@ -139,8 +139,10 @@ public function testDrupalRenderFormElements() { /** * Tests that elements are rendered properly. + * + * @internal */ - protected function assertRenderedElement(array $element, $xpath, array $xpath_args = []) { + protected function assertRenderedElement(array $element, string $xpath, array $xpath_args = []): void { $this->render($element); $xpath = $this->buildXPathQuery($xpath, $xpath_args); diff --git a/core/modules/system/tests/src/Kernel/Common/PageRenderTest.php b/core/modules/system/tests/src/Kernel/Common/PageRenderTest.php index 6c4e263ccf00..a7842b480a87 100644 --- a/core/modules/system/tests/src/Kernel/Common/PageRenderTest.php +++ b/core/modules/system/tests/src/Kernel/Common/PageRenderTest.php @@ -36,8 +36,10 @@ public function testHookPageAlter() { * The module whose invalid logic in its hooks to enable. * @param string $hook * The page render hook to assert expected exceptions for. + * + * @internal */ - public function assertPageRenderHookExceptions($module, $hook) { + public function assertPageRenderHookExceptions(string $module, string $hook): void { $html_renderer = \Drupal::getContainer()->get('main_content_renderer.html'); // Assert a valid hook implementation doesn't trigger an exception. diff --git a/core/modules/system/tests/src/Kernel/Entity/ConfigEntityImportTest.php b/core/modules/system/tests/src/Kernel/Entity/ConfigEntityImportTest.php index 81356bb92264..a970c30257c1 100644 --- a/core/modules/system/tests/src/Kernel/Entity/ConfigEntityImportTest.php +++ b/core/modules/system/tests/src/Kernel/Entity/ConfigEntityImportTest.php @@ -254,8 +254,10 @@ protected function checkSinglePluginConfigSync(EntityWithPluginCollectionInterfa * The original data stored in the config object. * @param array $custom_data * The new data to store in the config object. + * + * @internal */ - public function assertConfigUpdateImport($name, $original_data, $custom_data) { + public function assertConfigUpdateImport(string $name, array $original_data, array $custom_data): void { $this->container->get('config.storage.sync')->write($name, $custom_data); // Verify the active configuration still returns the default values. diff --git a/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php b/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php index ff33361d4f45..8ca75e106582 100644 --- a/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php +++ b/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php @@ -58,10 +58,12 @@ public function testModuleList() { * * @param array $expected_values * The expected values, sorted by weight and module name. - * @param $condition + * @param string $condition * The condition being tested, such as 'After adding a module'. + * + * @internal */ - protected function assertModuleList(array $expected_values, $condition) { + protected function assertModuleList(array $expected_values, string $condition): void { $expected_values = array_values(array_unique($expected_values)); $enabled_modules = array_keys($this->container->get('module_handler')->getModuleList()); $this->assertEquals($expected_values, $enabled_modules, new FormattableMarkup('@condition: extension handler returns correct results', ['@condition' => $condition])); diff --git a/core/modules/system/tests/src/Kernel/Migrate/d7/MigrateMenuTest.php b/core/modules/system/tests/src/Kernel/Migrate/d7/MigrateMenuTest.php index b0cd4ff2a906..d4aac6d578ab 100644 --- a/core/modules/system/tests/src/Kernel/Migrate/d7/MigrateMenuTest.php +++ b/core/modules/system/tests/src/Kernel/Migrate/d7/MigrateMenuTest.php @@ -24,7 +24,7 @@ protected function setUp(): void { /** * Asserts various aspects of a menu. * - * @param $id + * @param string $id * The menu ID. * @param string $language * The menu language. @@ -32,8 +32,10 @@ protected function setUp(): void { * The menu label. * @param $description * The menu description. + * + * @internal */ - protected function assertEntity($id, $language, $label, $description) { + protected function assertEntity(string $id, string $language, string $label, string $description): void { $navigation_menu = Menu::load($id); $this->assertSame($id, $navigation_menu->id()); $this->assertSame($language, $navigation_menu->language()->getId()); diff --git a/core/modules/system/tests/src/Kernel/SecurityAdvisories/SecurityAdvisoriesFetcherTest.php b/core/modules/system/tests/src/Kernel/SecurityAdvisories/SecurityAdvisoriesFetcherTest.php index 294b90dbb281..70a11c4d63b3 100644 --- a/core/modules/system/tests/src/Kernel/SecurityAdvisories/SecurityAdvisoriesFetcherTest.php +++ b/core/modules/system/tests/src/Kernel/SecurityAdvisories/SecurityAdvisoriesFetcherTest.php @@ -730,6 +730,8 @@ protected function setTestFeedResponses(array $responses): void { * * @param string[] $expected_messages * The expected error messages. + * + * @internal */ protected function assertServiceAdvisoryLoggedErrors(array $expected_messages): void { $this->assertSame($expected_messages, $this->logErrorMessages); diff --git a/core/modules/system/tests/src/Kernel/Theme/TwigNamespaceTest.php b/core/modules/system/tests/src/Kernel/Theme/TwigNamespaceTest.php index 40c476f0b5a3..f758ddd287c9 100644 --- a/core/modules/system/tests/src/Kernel/Theme/TwigNamespaceTest.php +++ b/core/modules/system/tests/src/Kernel/Theme/TwigNamespaceTest.php @@ -37,8 +37,10 @@ protected function setUp(): void { /** * Checks to see if a value is a twig template. + * + * @internal */ - public function assertTwigTemplate($value, $message = '') { + public function assertTwigTemplate($value, string $message = ''): void { $this->assertInstanceOf(TemplateWrapper::class, $value, $message); } diff --git a/core/modules/taxonomy/tests/src/Functional/TermAccessTest.php b/core/modules/taxonomy/tests/src/Functional/TermAccessTest.php index 39a4c5d3c877..a07f0bd69c60 100644 --- a/core/modules/taxonomy/tests/src/Functional/TermAccessTest.php +++ b/core/modules/taxonomy/tests/src/Functional/TermAccessTest.php @@ -110,14 +110,16 @@ public function testTermAccess() { * * @param \Drupal\taxonomy\TermInterface $term * A taxonomy term entity. - * @param $access_operation + * @param string $access_operation * The entity operation, e.g. 'view', 'edit', 'delete', etc. * @param bool $access_allowed * Whether the current use has access to the given operation or not. * @param string $access_reason * (optional) The reason of the access result. + * + * @internal */ - protected function assertTermAccess(TermInterface $term, $access_operation, $access_allowed, $access_reason = '') { + protected function assertTermAccess(TermInterface $term, string $access_operation, bool $access_allowed, string $access_reason = ''): void { $access_result = $term->access($access_operation, NULL, TRUE); $this->assertSame($access_allowed, $access_result->isAllowed()); diff --git a/core/modules/taxonomy/tests/src/Functional/TermParentsTest.php b/core/modules/taxonomy/tests/src/Functional/TermParentsTest.php index 88d3033cf942..ef0d06ff245e 100644 --- a/core/modules/taxonomy/tests/src/Functional/TermParentsTest.php +++ b/core/modules/taxonomy/tests/src/Functional/TermParentsTest.php @@ -282,8 +282,10 @@ protected function createTerm($name, array $parent_ids = []) { * @param bool $selected * (optional) Whether or not the option should be selected. Defaults to * FALSE. + * + * @internal */ - protected function assertParentOption($option, $selected = FALSE) { + protected function assertParentOption(string $option, bool $selected = FALSE): void { $option = $this->assertSession()->optionExists('Parent terms', $option); if ($selected) { $this->assertTrue($option->hasAttribute('selected')); @@ -298,8 +300,10 @@ protected function assertParentOption($option, $selected = FALSE) { * * @param \Drupal\taxonomy\TermInterface $term * The term to check. + * + * @internal */ - protected function assertParentsUnchanged(TermInterface $term) { + protected function assertParentsUnchanged(TermInterface $term): void { $saved_term = $this->termStorage->load($term->id()); $expected = $term->get('parent')->getValue(); diff --git a/core/modules/taxonomy/tests/src/Functional/Views/RelationshipNodeTermDataTest.php b/core/modules/taxonomy/tests/src/Functional/Views/RelationshipNodeTermDataTest.php index 61f90cb5013e..e79e77fc7705 100644 --- a/core/modules/taxonomy/tests/src/Functional/Views/RelationshipNodeTermDataTest.php +++ b/core/modules/taxonomy/tests/src/Functional/Views/RelationshipNodeTermDataTest.php @@ -94,8 +94,10 @@ public function testTag() { * The View to check for the term access tag. * @param bool $hasTag * The expected existence of taxonomy_term_access tag. + * + * @internal */ - protected function assertQueriesTermAccessTag(ViewExecutable $view, $hasTag) { + protected function assertQueriesTermAccessTag(ViewExecutable $view, bool $hasTag): void { $main_query = $view->build_info['query']; $count_query = $view->build_info['count_query']; diff --git a/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyFieldFilterTest.php b/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyFieldFilterTest.php index dafa38e2241c..2f47bae8fb72 100644 --- a/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyFieldFilterTest.php +++ b/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyFieldFilterTest.php @@ -146,8 +146,10 @@ public function testFilters() { * that translation should be shown on the given page. * @param string $message * Message suffix to display. + * + * @internal */ - protected function assertPageCounts($path, $counts, $message) { + protected function assertPageCounts(string $path, array $counts, string $message): void { // Get the text of the page. $this->drupalGet($path); $text = $this->getTextContent(); diff --git a/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyTermFilterDepthTest.php b/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyTermFilterDepthTest.php index 79f9829555e8..481a4c69d336 100644 --- a/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyTermFilterDepthTest.php +++ b/core/modules/taxonomy/tests/src/Functional/Views/TaxonomyTermFilterDepthTest.php @@ -137,8 +137,10 @@ public function testTermWithDepthFilter() { * The depth to search. * @param array $expected * The expected views result. + * + * @internal */ - protected function assertTermWithDepthResult($tid, $depth, array $expected) { + protected function assertTermWithDepthResult(int $tid, int $depth, array $expected): void { $this->view->destroy(); $this->view->initDisplay(); $filters = $this->view->displayHandlers->get('default') diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermLocalizedTranslationTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermLocalizedTranslationTest.php index 3b66a94fb445..c2afbe1f336c 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermLocalizedTranslationTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermLocalizedTranslationTest.php @@ -60,9 +60,9 @@ protected function setUp(): void { * The label the migrated entity should have. * @param string $expected_vid * The parent vocabulary the migrated entity should have. - * @param string $expected_description + * @param string|null $expected_description * The description the migrated entity should have. - * @param string $expected_format + * @param string|null $expected_format * The format the migrated entity should have. * @param int $expected_weight * The weight the migrated entity should have. @@ -72,8 +72,10 @@ protected function setUp(): void { * The value the migrated entity field should have. * @param int $expected_term_reference_tid * The term reference ID the migrated entity field should have. + * + * @internal */ - protected function assertEntity($id, $expected_language, $expected_label, $expected_vid, $expected_description = '', $expected_format = NULL, $expected_weight = 0, array $expected_parents = [], $expected_field_integer_value = NULL, $expected_term_reference_tid = NULL) { + protected function assertEntity(int $id, string $expected_language, string $expected_label, string $expected_vid, ?string $expected_description = '', ?string $expected_format = NULL, int $expected_weight = 0, array $expected_parents = [], int $expected_field_integer_value = NULL, int $expected_term_reference_tid = NULL): void { /** @var \Drupal\taxonomy\TermInterface $entity */ $entity = Term::load($id); $this->assertInstanceOf(TermInterface::class, $entity); @@ -82,7 +84,7 @@ protected function assertEntity($id, $expected_language, $expected_label, $expec $this->assertSame($expected_vid, $entity->bundle()); $this->assertSame($expected_description, $entity->getDescription()); $this->assertSame($expected_format, $entity->getFormat()); - $this->assertSame($expected_weight, $entity->getWeight()); + $this->assertSame($expected_weight, (int) $entity->getWeight()); $this->assertHierarchy($expected_vid, $id, $expected_parents); } @@ -95,8 +97,10 @@ protected function assertEntity($id, $expected_language, $expected_label, $expec * ID of the term to check. * @param array $parent_ids * The expected parent term IDs. + * + * @internal */ - protected function assertHierarchy($vid, $tid, array $parent_ids) { + protected function assertHierarchy(string $vid, int $tid, array $parent_ids): void { if (!isset($this->treeData[$vid])) { $tree = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid); $this->treeData[$vid] = []; @@ -114,8 +118,8 @@ protected function assertHierarchy($vid, $tid, array $parent_ids) { * Tests the Drupal 6 i18n localized taxonomy term to Drupal 8 migration. */ public function testTranslatedLocalizedTaxonomyTerms() { - $this->assertEntity(14, 'en', 'Talos IV', 'vocabulary_name_much_longer_th', 'The home of Captain Christopher Pike.', NULL, '0', []); - $this->assertEntity(15, 'en', 'Vulcan', 'vocabulary_name_much_longer_th', NULL, NULL, '0', []); + $this->assertEntity(14, 'en', 'Talos IV', 'vocabulary_name_much_longer_th', 'The home of Captain Christopher Pike.', NULL, 0, []); + $this->assertEntity(15, 'en', 'Vulcan', 'vocabulary_name_much_longer_th', NULL, NULL, 0, []); /** @var \Drupal\taxonomy\TermInterface $entity */ $entity = Term::load(14); diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyTermTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyTermTest.php index e9f7f89f8fd5..39c91d517bba 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyTermTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyTermTest.php @@ -56,7 +56,7 @@ protected function setUp(): void { /** * Validate a migrated term contains the expected values. * - * @param $id + * @param int $id * Entity ID to load and check. * @param string $expected_language * The language code for this term. @@ -64,9 +64,9 @@ protected function setUp(): void { * The label the migrated entity should have. * @param $expected_vid * The parent vocabulary the migrated entity should have. - * @param string $expected_description + * @param string|null $expected_description * The description the migrated entity should have. - * @param string $expected_format + * @param string|null $expected_format * The format the migrated entity should have. * @param int $expected_weight * The weight the migrated entity should have. @@ -78,8 +78,10 @@ protected function setUp(): void { * The term reference id the migrated entity field should have. * @param bool $expected_container_flag * The term should be a container entity. + * + * @internal */ - protected function assertEntity($id, $expected_language, $expected_label, $expected_vid, $expected_description = '', $expected_format = NULL, $expected_weight = 0, array $expected_parents = [], $expected_field_integer_value = NULL, $expected_term_reference_tid = NULL, $expected_container_flag = 0) { + protected function assertEntity(int $id, string $expected_language, string $expected_label, string $expected_vid, ?string $expected_description = '', ?string $expected_format = NULL, int $expected_weight = 0, array $expected_parents = [], int $expected_field_integer_value = NULL, int $expected_term_reference_tid = NULL, bool $expected_container_flag = FALSE): void { /** @var \Drupal\taxonomy\TermInterface $entity */ $entity = Term::load($id); $this->assertInstanceOf(TermInterface::class, $entity); @@ -88,7 +90,7 @@ protected function assertEntity($id, $expected_language, $expected_label, $expec $this->assertEquals($expected_vid, $entity->bundle()); $this->assertEquals($expected_description, $entity->getDescription()); $this->assertEquals($expected_format, $entity->getFormat()); - $this->assertEquals($expected_weight, $entity->getWeight()); + $this->assertEquals($expected_weight, (int) $entity->getWeight()); $this->assertEquals($expected_parents, $this->getParentIDs($id)); $this->assertHierarchy($expected_vid, $id, $expected_parents); if (!is_null($expected_field_integer_value)) { @@ -228,7 +230,7 @@ protected function getParentIDs($tid) { * @param array $parent_ids * The expected parent term IDs. */ - protected function assertHierarchy($vid, $tid, array $parent_ids) { + protected function assertHierarchy(string $vid, int $tid, array $parent_ids): void { if (!isset($this->treeData[$vid])) { $tree = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid); $this->treeData[$vid] = []; diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyTermTranslationTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyTermTranslationTest.php index c85a52f6d1db..bd37bf6e319d 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyTermTranslationTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyTermTranslationTest.php @@ -71,9 +71,9 @@ protected function setUp(): void { * The label the migrated entity should have. * @param string $expected_vid * The parent vocabulary the migrated entity should have. - * @param string $expected_description + * @param string|null $expected_description * The description the migrated entity should have. - * @param string $expected_format + * @param string|null $expected_format * The format the migrated entity should have. * @param int $expected_weight * The weight the migrated entity should have. @@ -83,8 +83,10 @@ protected function setUp(): void { * The value the migrated entity field should have. * @param int $expected_term_reference_tid * The term reference ID the migrated entity field should have. + * + * @internal */ - protected function assertEntity($id, $expected_language, $expected_label, $expected_vid, $expected_description = '', $expected_format = NULL, $expected_weight = 0, array $expected_parents = [], $expected_field_integer_value = NULL, $expected_term_reference_tid = NULL) { + protected function assertEntity(int $id, string $expected_language, string $expected_label, string $expected_vid, ?string $expected_description = '', ?string $expected_format = NULL, int $expected_weight = 0, array $expected_parents = [], int $expected_field_integer_value = NULL, int $expected_term_reference_tid = NULL): void { /** @var \Drupal\taxonomy\TermInterface $entity */ $entity = Term::load($id); $this->assertInstanceOf(TermInterface::class, $entity); @@ -93,7 +95,7 @@ protected function assertEntity($id, $expected_language, $expected_label, $expec $this->assertSame($expected_vid, $entity->bundle()); $this->assertSame($expected_description, $entity->getDescription()); $this->assertSame($expected_format, $entity->getFormat()); - $this->assertSame($expected_weight, $entity->getWeight()); + $this->assertSame($expected_weight, (int) $entity->getWeight()); $this->assertHierarchy($expected_vid, $id, $expected_parents); } @@ -106,8 +108,10 @@ protected function assertEntity($id, $expected_language, $expected_label, $expec * ID of the term to check. * @param array $parent_ids * The expected parent term IDs. + * + * @internal */ - protected function assertHierarchy($vid, $tid, array $parent_ids) { + protected function assertHierarchy(string $vid, int $tid, array $parent_ids): void { if (!isset($this->treeData[$vid])) { $tree = \Drupal::entityTypeManager() ->getStorage('taxonomy_term') diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyVocabularyTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyVocabularyTest.php index ef8d3eda6df3..979d5b5ac1fb 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyVocabularyTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTaxonomyVocabularyTest.php @@ -29,7 +29,7 @@ protected function setUp(): void { /** * Validate a migrated vocabulary contains the expected values. * - * @param $id + * @param string $id * Entity ID to load and check. * @param $expected_label * The label the migrated entity should have. @@ -37,14 +37,16 @@ protected function setUp(): void { * The description the migrated entity should have. * @param $expected_weight * The weight the migrated entity should have. + * + * @internal */ - protected function assertEntity($id, $expected_label, $expected_description, $expected_weight) { + protected function assertEntity(string $id, string $expected_label, string $expected_description, int $expected_weight): void { /** @var \Drupal\taxonomy\VocabularyInterface $entity */ $entity = Vocabulary::load($id); $this->assertInstanceOf(VocabularyInterface::class, $entity); $this->assertSame($expected_label, $entity->label()); $this->assertSame($expected_description, $entity->getDescription()); - $this->assertSame($expected_weight, $entity->get('weight')); + $this->assertSame($expected_weight, (int) $entity->get('weight')); } /** diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTermLocalizedTranslationTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTermLocalizedTranslationTest.php index 5c011bf93680..fb0d80b1b5ac 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTermLocalizedTranslationTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d7/MigrateTermLocalizedTranslationTest.php @@ -68,8 +68,10 @@ protected function setUp(): void { * The value the migrated entity field should have. * @param int $expected_term_reference_tid * The term reference ID the migrated entity field should have. + * + * @internal */ - protected function assertEntity($id, $expected_language, $expected_label, $expected_vid, $expected_description = '', $expected_format = NULL, $expected_weight = 0, array $expected_parents = [], $expected_field_integer_value = NULL, $expected_term_reference_tid = NULL) { + protected function assertEntity(int $id, string $expected_language, string $expected_label, string $expected_vid, string $expected_description = '', string $expected_format = NULL, int $expected_weight = 0, array $expected_parents = [], int $expected_field_integer_value = NULL, int $expected_term_reference_tid = NULL): void { /** @var \Drupal\taxonomy\TermInterface $entity */ $entity = Term::load($id); $this->assertInstanceOf(TermInterface::class, $entity); @@ -78,7 +80,7 @@ protected function assertEntity($id, $expected_language, $expected_label, $expec $this->assertSame($expected_vid, $entity->bundle()); $this->assertSame($expected_description, $entity->getDescription()); $this->assertSame($expected_format, $entity->getFormat()); - $this->assertSame($expected_weight, $entity->getWeight()); + $this->assertSame($expected_weight, (int) $entity->getWeight()); $this->assertHierarchy($expected_vid, $id, $expected_parents); } @@ -91,8 +93,10 @@ protected function assertEntity($id, $expected_language, $expected_label, $expec * ID of the term to check. * @param array $parent_ids * The expected parent term IDs. + * + * @internal */ - protected function assertHierarchy($vid, $tid, array $parent_ids) { + protected function assertHierarchy(string $vid, int $tid, array $parent_ids): void { if (!isset($this->treeData[$vid])) { $tree = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid); $this->treeData[$vid] = []; @@ -110,9 +114,9 @@ protected function assertHierarchy($vid, $tid, array $parent_ids) { * Tests the Drupal 6 i18n localized taxonomy term to Drupal 8 migration. */ public function testTranslatedLocalizedTaxonomyTerms() { - $this->assertEntity(19, 'en', 'Jupiter Station', 'vocablocalized', 'Holographic research.', 'filtered_html', '0', []); - $this->assertEntity(20, 'en', 'DS9', 'vocablocalized', 'Terok Nor', 'filtered_html', '0', []); - $this->assertEntity(25, 'en', 'Emissary', 'vocablocalized2', 'Pilot episode', 'filtered_html', '0', []); + $this->assertEntity(19, 'en', 'Jupiter Station', 'vocablocalized', 'Holographic research.', 'filtered_html', 0, []); + $this->assertEntity(20, 'en', 'DS9', 'vocablocalized', 'Terok Nor', 'filtered_html', 0, []); + $this->assertEntity(25, 'en', 'Emissary', 'vocablocalized2', 'Pilot episode', 'filtered_html', 0, []); /** @var \Drupal\taxonomy\TermInterface $entity */ $entity = Term::load(19); diff --git a/core/modules/taxonomy/tests/src/Kernel/TaxonomyQueryAlterTest.php b/core/modules/taxonomy/tests/src/Kernel/TaxonomyQueryAlterTest.php index 444bb85a86ba..02683a629122 100644 --- a/core/modules/taxonomy/tests/src/Kernel/TaxonomyQueryAlterTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/TaxonomyQueryAlterTest.php @@ -134,8 +134,10 @@ protected function setupQueryTagTestHooks() { * @param int $expected_specific_invocations * The number of times the tag-specific query_alter hooks are expected to * have been invoked. + * + * @internal */ - protected function assertQueryTagTestResult($expected_generic_invocations, $expected_specific_invocations) { + protected function assertQueryTagTestResult(int $expected_generic_invocations, int $expected_specific_invocations): void { $state = $this->container->get('state'); $this->assertEquals($expected_generic_invocations, $state->get('taxonomy_test_query_alter')); $this->assertEquals($expected_specific_invocations, $state->get('taxonomy_test_query_term_access_alter')); diff --git a/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermArgumentDepthTest.php b/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermArgumentDepthTest.php index 1a04055ef579..bd03bb13bc26 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermArgumentDepthTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermArgumentDepthTest.php @@ -178,6 +178,8 @@ public function testTermWithDepthFilter(): void { * The depth to search. * @param bool $break_phrase * Whether to break the argument up into multiple terms. + * + * @internal */ protected function assertTermWithDepthResult(array $expected, $tid, int $depth, bool $break_phrase = FALSE): void { $this->view->destroy(); diff --git a/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermFilterDepthTest.php b/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermFilterDepthTest.php index f679633af8be..51c7c5300984 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermFilterDepthTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyTermFilterDepthTest.php @@ -155,6 +155,8 @@ public function testTermWithDepthFilter(): void { * The term ID or IDs to filter on. * @param int $depth * The depth to search. + * + * @internal */ protected function assertTermWithDepthResult(array $expected, $tid, int $depth): void { $this->view->destroy(); diff --git a/core/modules/text/tests/src/FunctionalJavascript/TextareaWithSummaryTest.php b/core/modules/text/tests/src/FunctionalJavascript/TextareaWithSummaryTest.php index 2c51a91ea498..12f8b9dc2135 100644 --- a/core/modules/text/tests/src/FunctionalJavascript/TextareaWithSummaryTest.php +++ b/core/modules/text/tests/src/FunctionalJavascript/TextareaWithSummaryTest.php @@ -40,8 +40,10 @@ protected function setUp(): void { /** * Helper to test toggling the summary area. + * + * @internal */ - protected function assertSummaryToggle() { + protected function assertSummaryToggle(): void { $this->drupalGet('node/add/page'); $widget = $this->getSession()->getPage()->findById('edit-body-wrapper'); $summary_field = $widget->findField('edit-body-0-summary'); diff --git a/core/modules/text/tests/src/Kernel/TextSummaryTest.php b/core/modules/text/tests/src/Kernel/TextSummaryTest.php index c1e79d241578..5537e74acc0c 100644 --- a/core/modules/text/tests/src/Kernel/TextSummaryTest.php +++ b/core/modules/text/tests/src/Kernel/TextSummaryTest.php @@ -238,8 +238,10 @@ public function testInvalidFilterFormat() { /** * Calls text_summary() and asserts that the expected teaser is returned. + * + * @internal */ - public function assertTextSummary($text, $expected, $format = NULL, $size = NULL) { + public function assertTextSummary(string $text, string $expected, ?string $format = NULL, int $size = NULL): void { $summary = text_summary($text, $format, $size); $this->assertSame($expected, $summary, new FormattableMarkup('<pre style="white-space: pre-wrap">@actual</pre> is identical to <pre style="white-space: pre-wrap">@expected</pre>', ['@actual' => $summary, '@expected' => $expected])); } diff --git a/core/modules/toolbar/tests/src/Functional/ToolbarAdminMenuTest.php b/core/modules/toolbar/tests/src/Functional/ToolbarAdminMenuTest.php index 65975d1e25ba..2b2ef5a3c99c 100644 --- a/core/modules/toolbar/tests/src/Functional/ToolbarAdminMenuTest.php +++ b/core/modules/toolbar/tests/src/Functional/ToolbarAdminMenuTest.php @@ -453,8 +453,10 @@ private function getSubtreesHash() { /** * Asserts the subtrees hash on a fresh page GET is different from the hash * from the previous page GET. + * + * @internal */ - private function assertDifferentHash() { + private function assertDifferentHash(): void { // Request a new page to refresh the drupalSettings object. $this->drupalGet('test-page'); $this->assertSession()->statusCodeEquals(200); diff --git a/core/modules/toolbar/tests/src/Functional/ToolbarCacheContextsTest.php b/core/modules/toolbar/tests/src/Functional/ToolbarCacheContextsTest.php index 5de4c2d8b62d..c7ff8b304f48 100644 --- a/core/modules/toolbar/tests/src/Functional/ToolbarCacheContextsTest.php +++ b/core/modules/toolbar/tests/src/Functional/ToolbarCacheContextsTest.php @@ -107,8 +107,10 @@ public function testToolbarCacheContextsCaller() { * Expected cache contexts for both users. * @param string $message * (optional) A verbose message to output. + * + * @internal */ - protected function assertToolbarCacheContexts(array $cache_contexts, $message = NULL) { + protected function assertToolbarCacheContexts(array $cache_contexts, string $message = NULL): void { // Default cache contexts that should exist on all test cases. $default_cache_contexts = [ 'languages:language_interface', diff --git a/core/modules/tour/tests/src/FunctionalJavascript/TourLegacyTest.php b/core/modules/tour/tests/src/FunctionalJavascript/TourLegacyTest.php index f33a80f5f7d3..eefdc4d52c9d 100644 --- a/core/modules/tour/tests/src/FunctionalJavascript/TourLegacyTest.php +++ b/core/modules/tour/tests/src/FunctionalJavascript/TourLegacyTest.php @@ -92,8 +92,10 @@ public function testTourTipMarkup(string $path, string $theme = NULL) { * The expected position of the nub arrow. * @param string $joyride_content_container_name * For identifying classnames specific to a tip type. + * + * @internal */ - private function assertToolTipMarkup($index, $nub_position, $joyride_content_container_name = 'body') { + private function assertToolTipMarkup(int $index, string $nub_position, string $joyride_content_container_name = 'body'): void { $assert_session = $this->assertSession(); $tip = $assert_session->waitForElementVisible('css', ".joyride-tip-guide[data-index=\"$index\"]"); $this->assertNotNull($tip, 'The tour tip element is present.'); diff --git a/core/modules/tracker/tests/src/Functional/TrackerTest.php b/core/modules/tracker/tests/src/Functional/TrackerTest.php index 4c01a0d06dc1..b3515564535a 100644 --- a/core/modules/tracker/tests/src/Functional/TrackerTest.php +++ b/core/modules/tracker/tests/src/Functional/TrackerTest.php @@ -474,8 +474,10 @@ public function testTrackerAdminUnpublish() { * data-history-node-last-comment-timestamp attribute. * @param bool $library_is_present * Whether the drupal.tracker-history library should be present or not. + * + * @internal */ - public function assertHistoryMetadata($node_id, $node_timestamp, $node_last_comment_timestamp, $library_is_present = TRUE) { + public function assertHistoryMetadata(int $node_id, int $node_timestamp, int $node_last_comment_timestamp, bool $library_is_present = TRUE): void { $settings = $this->getDrupalSettings(); $this->assertSame($library_is_present, isset($settings['ajaxPageState']) && in_array('tracker/history', explode(',', $settings['ajaxPageState']['libraries'])), 'drupal.tracker-history library is present.'); $this->assertCount(1, $this->xpath('//table/tbody/tr/td[@data-history-node-id="' . $node_id . '" and @data-history-node-timestamp="' . $node_timestamp . '"]'), 'Tracker table cell contains the data-history-node-id and data-history-node-timestamp attributes for the node.'); diff --git a/core/modules/update/tests/src/Functional/UpdateContribTest.php b/core/modules/update/tests/src/Functional/UpdateContribTest.php index 3b07f69161d2..30898f0c2d9d 100644 --- a/core/modules/update/tests/src/Functional/UpdateContribTest.php +++ b/core/modules/update/tests/src/Functional/UpdateContribTest.php @@ -871,8 +871,10 @@ public function testNonStandardVersionStrings() { * The expected release title. * @param bool $is_compatible * If the update is compatible with the installed version of Drupal. + * + * @internal */ - protected function assertCoreCompatibilityMessage($version, $expected_range, $expected_release_title, $is_compatible = TRUE) { + protected function assertCoreCompatibilityMessage(string $version, string $expected_range, string $expected_release_title, bool $is_compatible = TRUE): void { $update_element = $this->findUpdateElementByLabel($expected_release_title); $this->assertTrue($update_element->hasLink($version)); $compatibility_details = $update_element->find('css', '.project-update__compatibility-details details'); diff --git a/core/modules/user/tests/src/Functional/RestRegisterUserTest.php b/core/modules/user/tests/src/Functional/RestRegisterUserTest.php index 7bcdf26583cc..302944f924ed 100644 --- a/core/modules/user/tests/src/Functional/RestRegisterUserTest.php +++ b/core/modules/user/tests/src/Functional/RestRegisterUserTest.php @@ -256,7 +256,7 @@ protected function setUpAuthorization($method) { /** * {@inheritdoc} */ - protected function assertNormalizationEdgeCases($method, Url $url, array $request_options) {} + protected function assertNormalizationEdgeCases($method, Url $url, array $request_options): void {} /** * {@inheritdoc} diff --git a/core/modules/user/tests/src/Functional/UserLoginHttpTest.php b/core/modules/user/tests/src/Functional/UserLoginHttpTest.php index 87c68c2c718d..7751707a1398 100644 --- a/core/modules/user/tests/src/Functional/UserLoginHttpTest.php +++ b/core/modules/user/tests/src/Functional/UserLoginHttpTest.php @@ -325,12 +325,14 @@ public function testGlobalLoginFloodControl() { * The response object. * @param int $expected_code * The expected status code. - * @param mixed $expected_body + * @param string $expected_body * The expected response body. + * + * @internal */ - protected function assertHttpResponse(ResponseInterface $response, $expected_code, $expected_body) { + protected function assertHttpResponse(ResponseInterface $response, int $expected_code, string $expected_body): void { $this->assertEquals($expected_code, $response->getStatusCode()); - $this->assertEquals($expected_body, (string) $response->getBody()); + $this->assertEquals($expected_body, $response->getBody()); } /** @@ -344,8 +346,10 @@ protected function assertHttpResponse(ResponseInterface $response, $expected_cod * The expected message encoded in response. * @param string $format * The format that the response is encoded in. + * + * @internal */ - protected function assertHttpResponseWithMessage(ResponseInterface $response, $expected_code, $expected_message, $format = 'json') { + protected function assertHttpResponseWithMessage(ResponseInterface $response, int $expected_code, string $expected_message, string $format = 'json'): void { $this->assertEquals($expected_code, $response->getStatusCode()); $this->assertEquals($expected_message, $this->getResultValue($response, 'message', $format)); } diff --git a/core/modules/user/tests/src/Functional/UserLoginTest.php b/core/modules/user/tests/src/Functional/UserLoginTest.php index 778f1744853c..cbc3b29cbeb4 100644 --- a/core/modules/user/tests/src/Functional/UserLoginTest.php +++ b/core/modules/user/tests/src/Functional/UserLoginTest.php @@ -188,15 +188,16 @@ public function testCookiesNotAccepted() { * * @param \Drupal\user\Entity\User $account * A user object with name and passRaw attributes for the login attempt. - * @param mixed $flood_trigger + * @param string $flood_trigger * (optional) Whether or not to expect that the flood control mechanism * will be triggered. Defaults to NULL. * - Set to 'user' to expect a 'too many failed logins error. - * - Set to any value to expect an error for too many failed logins per IP - * . + * - Set to any value to expect an error for too many failed logins per IP. * - Set to NULL to expect a failed login. + * + * @internal */ - public function assertFailedLogin($account, $flood_trigger = NULL) { + public function assertFailedLogin(User $account, string $flood_trigger = NULL): void { $database = \Drupal::database(); $edit = [ 'name' => $account->getAccountName(), diff --git a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php index 775f2806c1d3..e984c466edd0 100644 --- a/core/modules/user/tests/src/Functional/UserPasswordResetTest.php +++ b/core/modules/user/tests/src/Functional/UserPasswordResetTest.php @@ -486,8 +486,10 @@ public function testUserResetPasswordUserFloodControlIsCleared() { /** * Helper function to make assertions about a valid password reset. + * + * @internal */ - public function assertValidPasswordReset($name) { + public function assertValidPasswordReset(string $name): void { $this->assertSession()->pageTextContains("If $name is a valid account, an email will be sent with instructions to reset your password."); $this->assertMail('to', $this->account->getEmail(), 'Password e-mail sent to user.'); $subject = 'Replacement login information for ' . $this->account->getAccountName() . ' at Drupal'; @@ -499,8 +501,10 @@ public function assertValidPasswordReset($name) { * * @param string $name * The user name. + * + * @internal */ - public function assertNoValidPasswordReset($name) { + public function assertNoValidPasswordReset(string $name): void { // This message is the same as the valid reset for privacy reasons. $this->assertSession()->pageTextContains("If $name is a valid account, an email will be sent with instructions to reset your password."); // The difference is that no email is sent. @@ -509,15 +513,19 @@ public function assertNoValidPasswordReset($name) { /** * Makes assertions about a password reset triggering IP flood control. + * + * @internal */ - public function assertPasswordIpFlood() { + public function assertPasswordIpFlood(): void { $this->assertSession()->pageTextContains('Too many password recovery requests from your IP address. It is temporarily blocked. Try again later or contact the site administrator.'); } /** * Makes assertions about a password reset not triggering IP flood control. + * + * @internal */ - public function assertNoPasswordIpFlood() { + public function assertNoPasswordIpFlood(): void { $this->assertSession()->pageTextNotContains('Too many password recovery requests from your IP address. It is temporarily blocked. Try again later or contact the site administrator.'); } diff --git a/core/modules/user/tests/src/Functional/UserRegistrationTest.php b/core/modules/user/tests/src/Functional/UserRegistrationTest.php index 4575ee9ba8e8..bd4d375b8963 100644 --- a/core/modules/user/tests/src/Functional/UserRegistrationTest.php +++ b/core/modules/user/tests/src/Functional/UserRegistrationTest.php @@ -397,8 +397,10 @@ public function testRegistrationWithUserFields() { /** * Asserts the presence of cache tags on registration form with user fields. + * + * @internal */ - protected function assertRegistrationFormCacheTagsWithUserFields() { + protected function assertRegistrationFormCacheTagsWithUserFields(): void { $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:core.entity_form_display.user.user.register'); $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:field.field.user.user.test_user_field'); $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:field.storage.user.test_user_field'); diff --git a/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserPictureD6FileTest.php b/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserPictureD6FileTest.php index ffeb2442ba7a..d31525e02088 100644 --- a/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserPictureD6FileTest.php +++ b/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserPictureD6FileTest.php @@ -51,12 +51,12 @@ public function testUserPictures() { // Tests the D6 user pictures migration in combination with D6 file. $this->setUpMigratedFiles(); - $this->assertEntity(1, 'image-test.jpg', '1901', 'public://image-test.jpg', 'image/jpeg', '2'); - $this->assertEntity(2, 'image-test.png', '125', 'public://image-test.png', 'image/png', '8'); - $this->assertEntity(3, 'Image1.png', '39325', 'public://image-1.png', 'image/png', '1'); - $this->assertEntity(4, 'Image2.jpg', '1831', 'public://image-2.jpg', 'image/jpeg', '1'); - $this->assertEntity(5, 'Image-test.gif', '183', 'public://image-test.gif', 'image/jpeg', '1'); - $this->assertEntity(6, 'html-1.txt', '24', 'public://html-1.txt', 'text/plain', '1'); + $this->assertEntity(1, 'image-test.jpg', 1901, 'public://image-test.jpg', 'image/jpeg', 2); + $this->assertEntity(2, 'image-test.png', 125, 'public://image-test.png', 'image/png', 8); + $this->assertEntity(3, 'Image1.png', 39325, 'public://image-1.png', 'image/png', 1); + $this->assertEntity(4, 'Image2.jpg', 1831, 'public://image-2.jpg', 'image/jpeg', 1); + $this->assertEntity(5, 'Image-test.gif', 183, 'public://image-test.gif', 'image/jpeg', 1); + $this->assertEntity(6, 'html-1.txt', 24, 'public://html-1.txt', 'text/plain', 1); } /** @@ -74,16 +74,18 @@ public function testUserPictures() { * The expected MIME type. * @param int $uid * The expected file owner ID. + * + * @internal */ - protected function assertEntity($fid, $name, $size, $uri, $type, $uid) { + protected function assertEntity(int $fid, string $name, int $size, string $uri, string $type, int $uid): void { /** @var \Drupal\file\FileInterface $file */ $file = File::load($fid); $this->assertInstanceOf(FileInterface::class, $file); $this->assertSame($name, $file->getFilename()); - $this->assertSame($size, $file->getSize()); + $this->assertSame($size, (int) $file->getSize()); $this->assertSame($uri, $file->getFileUri()); $this->assertSame($type, $file->getMimeType()); - $this->assertSame($uid, $file->getOwnerId()); + $this->assertSame($uid, (int) $file->getOwnerId()); } } diff --git a/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserRoleTest.php b/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserRoleTest.php index cab4de4a5e5f..ea6f946358ae 100644 --- a/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserRoleTest.php +++ b/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserRoleTest.php @@ -33,8 +33,10 @@ protected function setUp(): void { * The original numeric ID of the role in the source database. * @param \Drupal\migrate\Plugin\MigrateIdMapInterface $id_map * The map table plugin. + * + * @internal */ - protected function assertRole($id, array $permissions, $lookupId, MigrateIdMapInterface $id_map) { + protected function assertRole(string $id, array $permissions, int $lookupId, MigrateIdMapInterface $id_map): void { /** @var \Drupal\user\RoleInterface $role */ $role = Role::load($id); $this->assertInstanceOf(RoleInterface::class, $role); @@ -49,8 +51,10 @@ protected function assertRole($id, array $permissions, $lookupId, MigrateIdMapIn * * @param \Drupal\migrate\Plugin\MigrateIdMapInterface $id_map * The map table plugin. + * + * @internal */ - protected function assertRoles(MigrateIdMapInterface $id_map) { + protected function assertRoles(MigrateIdMapInterface $id_map): void { // The permissions for each role are found in the two tables in the Drupal 6 // source database. One is the permission table and the other is the diff --git a/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php b/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php index 9b3495028efe..4d7fcd66b737 100644 --- a/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php +++ b/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php @@ -29,10 +29,12 @@ protected function setUp(): void { * The role ID. * @param string $label * The role's expected label. - * @param int|null $original_rid + * @param int $original_rid * The original (integer) ID of the role, to check permissions. + * + * @internal */ - protected function assertEntity($id, $label, $original_rid) { + protected function assertEntity(string $id, string $label, int $original_rid): void { /** @var \Drupal\user\RoleInterface $entity */ $entity = Role::load($id); $this->assertInstanceOf(RoleInterface::class, $entity); diff --git a/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserTest.php b/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserTest.php index 655b460f47ae..f8c533bc6efd 100644 --- a/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserTest.php +++ b/core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserTest.php @@ -79,24 +79,26 @@ protected function setUp(): void { * The user's initial email address. * @param string[] $roles * Role IDs the user account is expected to have. - * @param int $field_integer + * @param array|null $field_integer * The value of the integer field. * @param int|false $field_file_target_id * (optional) The target ID of the file field. * @param bool $has_picture * (optional) Whether the user is expected to have a picture attached. + * + * @internal */ - protected function assertEntity($id, $label, $mail, $password, $created, $access, $login, $blocked, $entity_langcode, $prefered_langcode, $timezone, $init, $roles, $field_integer, $field_file_target_id = FALSE, $has_picture = FALSE) { + protected function assertEntity(string $id, string $label, string $mail, string $password, int $created, int $access, int $login, bool $blocked, string $entity_langcode, string $prefered_langcode, string $timezone, string $init, array $roles, ?array $field_integer, $field_file_target_id = FALSE, bool $has_picture = FALSE): void { /** @var \Drupal\user\UserInterface $user */ $user = User::load($id); $this->assertInstanceOf(UserInterface::class, $user); $this->assertSame($label, $user->label()); $this->assertSame($mail, $user->getEmail()); $this->assertSame($password, $user->getPassword()); - $this->assertSame($created, $user->getCreatedTime()); - $this->assertSame($access, $user->getLastAccessedTime()); - $this->assertSame($login, $user->getLastLoginTime()); - $this->assertNotSame($blocked, $user->isBlocked()); + $this->assertSame($created, (int) $user->getCreatedTime()); + $this->assertSame($access, (int) $user->getLastAccessedTime()); + $this->assertSame($login, (int) $user->getLastLoginTime()); + $this->assertNotSame($blocked, (bool) $user->isBlocked()); // Ensure the user's langcode, preferred_langcode and // preferred_admin_langcode are valid. diff --git a/core/modules/user/tests/src/Kernel/UserAccountFormFieldsTest.php b/core/modules/user/tests/src/Kernel/UserAccountFormFieldsTest.php index 00c75cd60457..1aabea79a8a5 100644 --- a/core/modules/user/tests/src/Kernel/UserAccountFormFieldsTest.php +++ b/core/modules/user/tests/src/Kernel/UserAccountFormFieldsTest.php @@ -89,8 +89,10 @@ public function testUserEditForm() { * * @param array $elements * A form array section that contains the user account form elements. + * + * @internal */ - protected function assertFieldOrder(array $elements) { + protected function assertFieldOrder(array $elements): void { $name_index = 0; $name_weight = 0; $pass_index = 0; diff --git a/core/modules/user/tests/src/Kernel/UserValidationTest.php b/core/modules/user/tests/src/Kernel/UserValidationTest.php index 73886da53eae..579b8b4be0de 100644 --- a/core/modules/user/tests/src/Kernel/UserValidationTest.php +++ b/core/modules/user/tests/src/Kernel/UserValidationTest.php @@ -198,8 +198,10 @@ public function testValidation() { * (optional) The number of expected violations. Defaults to 1. * @param int $expected_index * (optional) The index at which to expect the violation. Defaults to 0. + * + * @internal */ - protected function assertLengthViolation(EntityInterface $entity, $field_name, $length, $count = 1, $expected_index = 0) { + protected function assertLengthViolation(EntityInterface $entity, string $field_name, int $length, int $count = 1, int $expected_index = 0): void { $violations = $entity->validate(); $this->assertCount($count, $violations, "Violation found when $field_name is too long."); $this->assertEquals("{$field_name}.0.value", $violations[$expected_index]->getPropertyPath()); @@ -214,8 +216,10 @@ protected function assertLengthViolation(EntityInterface $entity, $field_name, $ * The entity object to validate. * @param string $field_name * The name of the field to verify. + * + * @internal */ - protected function assertAllowedValuesViolation(EntityInterface $entity, $field_name) { + protected function assertAllowedValuesViolation(EntityInterface $entity, string $field_name): void { $violations = $entity->validate(); $this->assertCount(1, $violations, "Allowed values violation for $field_name found."); $this->assertEquals($field_name === 'langcode' ? "{$field_name}.0" : "{$field_name}.0.value", $violations[0]->getPropertyPath()); diff --git a/core/modules/user/tests/src/Unit/PermissionHandlerTest.php b/core/modules/user/tests/src/Unit/PermissionHandlerTest.php index 36d9254229dc..369b4f299a24 100644 --- a/core/modules/user/tests/src/Unit/PermissionHandlerTest.php +++ b/core/modules/user/tests/src/Unit/PermissionHandlerTest.php @@ -332,8 +332,10 @@ public function testPermissionsYamlStaticAndCallback() { * * @param array $actual_permissions * The actual permissions + * + * @internal */ - protected function assertPermissions(array $actual_permissions) { + protected function assertPermissions(array $actual_permissions): void { $this->assertCount(4, $actual_permissions); $this->assertEquals('single_description', $actual_permissions['access_module_a']['title']); $this->assertEquals('module_a', $actual_permissions['access_module_a']['provider']); diff --git a/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php b/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php index 2e29bb43e16a..0767c5ca6a50 100644 --- a/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php +++ b/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php @@ -135,8 +135,10 @@ protected function setUp(): void { /** * Asserts correct field access grants for a field. + * + * @internal */ - public function assertFieldAccess($field, $viewer, $target, $view, $edit) { + public function assertFieldAccess(string $field, string $viewer, string $target, bool $view, bool $edit): void { $field_definition = $this->createMock('Drupal\Core\Field\FieldDefinitionInterface'); $field_definition->expects($this->any()) ->method('getName') diff --git a/core/modules/views/tests/src/Functional/Entity/FieldEntityTranslationTest.php b/core/modules/views/tests/src/Functional/Entity/FieldEntityTranslationTest.php index 5a3ed15f306e..c6ef36937125 100644 --- a/core/modules/views/tests/src/Functional/Entity/FieldEntityTranslationTest.php +++ b/core/modules/views/tests/src/Functional/Entity/FieldEntityTranslationTest.php @@ -168,8 +168,10 @@ public function testTranslationRows() { * * @param array $expected * The expected rows of the result. + * + * @internal */ - protected function assertRows($expected = []) { + protected function assertRows(array $expected = []): void { $actual = []; $rows = $this->cssSelect('div.views-row'); foreach ($rows as $row) { diff --git a/core/modules/views/tests/src/Functional/Entity/FieldRenderedEntityTranslationTest.php b/core/modules/views/tests/src/Functional/Entity/FieldRenderedEntityTranslationTest.php index f61145fe9cc7..f6e063f450da 100644 --- a/core/modules/views/tests/src/Functional/Entity/FieldRenderedEntityTranslationTest.php +++ b/core/modules/views/tests/src/Functional/Entity/FieldRenderedEntityTranslationTest.php @@ -287,8 +287,10 @@ public function testTranslationRows() { * * @param array $expected * The expected rows of the result. + * + * @internal */ - protected function assertRows(array $expected = []) { + protected function assertRows(array $expected = []): void { $actual = []; $rows = $this->cssSelect('div.views-row'); foreach ($rows as $row) { diff --git a/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php b/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php index 520db9cadcf9..3baa6f3943f0 100644 --- a/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php +++ b/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php @@ -141,10 +141,10 @@ protected function clickSortLoadIdsFromOutput() { * The value to search for. * @param string $message * The message to display along with the assertion. - * @param string $group - * The type of assertion - examples are "Browser", "PHP". + * + * @internal */ - protected function assertSubString($haystack, $needle, $message = '', $group = 'Other') { + protected function assertSubString(string $haystack, string $needle, string $message = ''): void { $this->assertStringContainsString($needle, $haystack, $message); } @@ -157,10 +157,10 @@ protected function assertSubString($haystack, $needle, $message = '', $group = ' * The value to search for. * @param string $message * The message to display along with the assertion. - * @param string $group - * The type of assertion - examples are "Browser", "PHP". + * + * @internal */ - protected function assertNotSubString($haystack, $needle, $message = '', $group = 'Other') { + protected function assertNotSubString(string $haystack, string $needle, string $message = ''): void { $this->assertStringNotContainsString($needle, $haystack, $message); } diff --git a/core/modules/views/tests/src/Functional/Plugin/DisplayPageWebTest.php b/core/modules/views/tests/src/Functional/Plugin/DisplayPageWebTest.php index 38f371799b45..6fc75547dee1 100644 --- a/core/modules/views/tests/src/Functional/Plugin/DisplayPageWebTest.php +++ b/core/modules/views/tests/src/Functional/Plugin/DisplayPageWebTest.php @@ -152,8 +152,10 @@ public function testPagePaths() { * * @param string $path * Path that will be set as the view page display path. + * + * @internal */ - public function assertPagePath($path) { + public function assertPagePath(string $path): void { $view = Views::getView('test_page_display_path'); $view->initDisplay('page_1'); $view->displayHandlers->get('page_1')->overrideOption('path', $path); diff --git a/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php b/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php index 92381e1da74c..ea733a5b4a30 100644 --- a/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php +++ b/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php @@ -414,8 +414,10 @@ public function testExposedSortAndItemsPerPage() { * * @param int[] $ids * The ids to check. + * + * @internal */ - protected function assertIds(array $ids) { + protected function assertIds(array $ids): void { $elements = $this->cssSelect('div.view-test-exposed-form-sort-items-per-page div.views-row span.field-content'); $actual_ids = []; foreach ($elements as $element) { @@ -492,8 +494,10 @@ public function testExposedFilterPagination() { * * @param array $bundles * Bundles of nodes. + * + * @internal */ - protected function assertNodesExist(array $bundles) { + protected function assertNodesExist(array $bundles): void { foreach ($this->nodes as $node) { if (in_array($node->bundle(), $bundles)) { $this->assertSession()->pageTextContains($node->label()); diff --git a/core/modules/views/tests/src/Functional/SearchIntegrationTest.php b/core/modules/views/tests/src/Functional/SearchIntegrationTest.php index 70dc2b6bb880..569c9ef11b23 100644 --- a/core/modules/views/tests/src/Functional/SearchIntegrationTest.php +++ b/core/modules/views/tests/src/Functional/SearchIntegrationTest.php @@ -144,15 +144,13 @@ public function testSearchIntegration() { * @param string $label * Link label to assert. * - * @return bool - * TRUE if the assertion succeeded. + * @internal */ - protected function assertOneLink($label) { + protected function assertOneLink(string $label): void { $xpath = $this->assertSession()->buildXPathQuery('//a[normalize-space(text())=:label]', [ ':label' => $label, ]); $this->assertSession()->elementsCount('xpath', $xpath, 1); - return TRUE; } } diff --git a/core/modules/views/tests/src/FunctionalJavascript/PaginationAJAXTest.php b/core/modules/views/tests/src/FunctionalJavascript/PaginationAJAXTest.php index ff7f60357ac0..f96b468e3ca1 100644 --- a/core/modules/views/tests/src/FunctionalJavascript/PaginationAJAXTest.php +++ b/core/modules/views/tests/src/FunctionalJavascript/PaginationAJAXTest.php @@ -136,8 +136,10 @@ public function testBasicPagination() { /** * Assert that assets are not loaded twice on a page. + * + * @internal */ - protected function assertNoDuplicateAssetsOnPage() { + protected function assertNoDuplicateAssetsOnPage(): void { /** @var \Behat\Mink\Element\NodeElement[] $scripts */ $scripts = $this->getSession()->getPage()->findAll('xpath', '//script'); $script_src = []; diff --git a/core/modules/views/tests/src/Kernel/CacheableMetadataCalculationTest.php b/core/modules/views/tests/src/Kernel/CacheableMetadataCalculationTest.php index 338223709ab0..fa47eca31b88 100644 --- a/core/modules/views/tests/src/Kernel/CacheableMetadataCalculationTest.php +++ b/core/modules/views/tests/src/Kernel/CacheableMetadataCalculationTest.php @@ -95,8 +95,10 @@ public function testCacheableMetadataCalculation() { * @param bool $expected_result * TRUE if it is expected that the cacheability metadata has been * calculated. FALSE otherwise. + * + * @internal */ - protected function assertCacheableMetadataHasBeenCalculated($expected_result) { + protected function assertCacheableMetadataHasBeenCalculated(bool $expected_result): void { $this->state->resetCache(); $this->assertEquals($expected_result, $this->state->get('views_test_cacheable_metadata_has_been_accessed')); } diff --git a/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataTest.php b/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataTest.php index 6bab4cfdbdec..372a4c4add80 100644 --- a/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataTest.php +++ b/core/modules/views/tests/src/Kernel/Entity/EntityViewsDataTest.php @@ -637,18 +637,22 @@ public function testRevisionTableFields() { * The views data to check. * @param string $field_name * The entity field name. + * + * @internal */ - protected function assertViewsDataField($data, $field_name) { + protected function assertViewsDataField(array $data, string $field_name): void { $this->assertEquals($field_name, $data['entity field']); } /** * Tests views data for a string field. * - * @param $data + * @param array $data * The views data to check. + * + * @internal */ - protected function assertStringField($data) { + protected function assertStringField(array $data): void { $this->assertEquals('field', $data['field']['id']); $this->assertEquals('string', $data['filter']['id']); $this->assertEquals('string', $data['argument']['id']); @@ -658,10 +662,12 @@ protected function assertStringField($data) { /** * Tests views data for a URI field. * - * @param $data + * @param array $data * The views data to check. + * + * @internal */ - protected function assertUriField($data) { + protected function assertUriField(array $data): void { $this->assertEquals('field', $data['field']['id']); $this->assertEquals('string', $data['field']['default_formatter']); $this->assertEquals('string', $data['filter']['id']); @@ -672,12 +678,14 @@ protected function assertUriField($data) { /** * Tests views data for a long text field. * - * @param $data + * @param array $data * The views data for the table this field is in. - * @param $field_name + * @param string $field_name * The name of the field being checked. + * + * @internal */ - protected function assertLongTextField($data, $field_name) { + protected function assertLongTextField(array $data, string $field_name): void { $value_field = $data[$field_name . '__value']; $this->assertEquals('field', $value_field['field']['id']); $this->assertEquals($field_name . '__format', $value_field['field']['format']); @@ -693,8 +701,10 @@ protected function assertLongTextField($data, $field_name) { * * @param array $data * The views data to check. + * + * @internal */ - protected function assertUuidField($data) { + protected function assertUuidField(array $data): void { // @todo Can we provide additional support for UUIDs in views? $this->assertEquals('field', $data['field']['id']); $this->assertFalse($data['field']['click sortable']); @@ -708,8 +718,10 @@ protected function assertUuidField($data) { * * @param array $data * The views data to check. + * + * @internal */ - protected function assertNumericField($data) { + protected function assertNumericField(array $data): void { $this->assertEquals('field', $data['field']['id']); $this->assertEquals('numeric', $data['filter']['id']); $this->assertEquals('numeric', $data['argument']['id']); @@ -721,8 +733,10 @@ protected function assertNumericField($data) { * * @param array $data * The views data to check. + * + * @internal */ - protected function assertLanguageField($data) { + protected function assertLanguageField(array $data): void { $this->assertEquals('field', $data['field']['id']); $this->assertEquals('language', $data['filter']['id']); $this->assertEquals('language', $data['argument']['id']); @@ -731,8 +745,10 @@ protected function assertLanguageField($data) { /** * Tests views data for an entity reference field. + * + * @internal */ - protected function assertEntityReferenceField($data) { + protected function assertEntityReferenceField(array $data): void { $this->assertEquals('field', $data['field']['id']); $this->assertEquals('numeric', $data['filter']['id']); $this->assertEquals('numeric', $data['argument']['id']); @@ -741,8 +757,10 @@ protected function assertEntityReferenceField($data) { /** * Tests views data for a bundle field. + * + * @internal */ - protected function assertBundleField($data) { + protected function assertBundleField(array $data): void { $this->assertEquals('field', $data['field']['id']); $this->assertEquals('bundle', $data['filter']['id']); $this->assertEquals('string', $data['argument']['id']); diff --git a/core/modules/views/tests/src/Kernel/Entity/LatestRevisionFilterTest.php b/core/modules/views/tests/src/Kernel/Entity/LatestRevisionFilterTest.php index 1b47f80b4e47..41606428b747 100644 --- a/core/modules/views/tests/src/Kernel/Entity/LatestRevisionFilterTest.php +++ b/core/modules/views/tests/src/Kernel/Entity/LatestRevisionFilterTest.php @@ -126,8 +126,10 @@ public function testLatestRevisionFilter() { * An executed View. * @param array $not_expected_revision_ids * An array of revision IDs which should not be part of the result set. + * + * @internal */ - protected function assertNotInResultSet(ViewExecutable $view, array $not_expected_revision_ids) { + protected function assertNotInResultSet(ViewExecutable $view, array $not_expected_revision_ids): void { $found_revision_ids = array_filter($view->result, function ($row) use ($not_expected_revision_ids) { return in_array($row->vid, $not_expected_revision_ids); }); diff --git a/core/modules/views/tests/src/Kernel/Entity/RowEntityRenderersTest.php b/core/modules/views/tests/src/Kernel/Entity/RowEntityRenderersTest.php index d373072d09ed..42eaa3b12d77 100644 --- a/core/modules/views/tests/src/Kernel/Entity/RowEntityRenderersTest.php +++ b/core/modules/views/tests/src/Kernel/Entity/RowEntityRenderersTest.php @@ -241,10 +241,10 @@ protected function checkLanguageRenderers($display, $values) { * An array of expected title translation values, one for each result row. * @param string $message * (optional) A message to display with the assertion. - * @param string $group - * (optional) The group this message is in. + * + * @internal */ - protected function assertTranslations($display, $renderer_id, array $expected, $message = '', $group = 'Other') { + protected function assertTranslations(string $display, string $renderer_id, array $expected, string $message = ''): void { $view = Views::getView('test_entity_row_renderers'); $view->storage->invalidateCaches(); $view->setDisplay($display); @@ -267,7 +267,7 @@ protected function assertTranslations($display, $renderer_id, array $expected, $ } } - $this->assertTrue($result, $message, $group); + $this->assertTrue($result, $message); } } diff --git a/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php b/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php index 9c25d3aead6d..b22c6b1c3b3e 100644 --- a/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php +++ b/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php @@ -548,8 +548,10 @@ protected function getUpdatedViewAndDisplay($revision = FALSE) { * * @param string[] $updated_view_ids * An array of view IDs. + * + * @internal */ - protected function assertUpdatedViews($updated_view_ids) { + protected function assertUpdatedViews(array $updated_view_ids): void { $all_view_ids = array_keys($this->entityTypeManager->getStorage('view')->loadMultiple()); $view_save_count = \Drupal::state()->get('views_test_data.view_save_count', []); diff --git a/core/modules/views/tests/src/Kernel/Handler/AreaDisplayLinkTest.php b/core/modules/views/tests/src/Kernel/Handler/AreaDisplayLinkTest.php index 82caa80f19bf..659e1490efb7 100644 --- a/core/modules/views/tests/src/Kernel/Handler/AreaDisplayLinkTest.php +++ b/core/modules/views/tests/src/Kernel/Handler/AreaDisplayLinkTest.php @@ -302,8 +302,10 @@ public function testAreaDisplayLink() { * The view to check. * @param string $display_link_id * The display link ID to check the options for. + * + * @internal */ - protected function assertFormOptions(ViewExecutable $view, $display_link_id) { + protected function assertFormOptions(ViewExecutable $view, string $display_link_id): void { $form = []; $form_state = new FormState(); $view->display_handler->getHandler('header', $display_link_id)->buildOptionsForm($form, $form_state); @@ -319,8 +321,10 @@ protected function assertFormOptions(ViewExecutable $view, $display_link_id) { * The view to check. * @param string $display_id * The display ID to check the links for. + * + * @internal */ - protected function assertRenderedDisplayLinks(ViewExecutable $view, $display_id) { + protected function assertRenderedDisplayLinks(ViewExecutable $view, string $display_id): void { $page_1_active = $display_id === 'page_1' ? ' is-active' : ''; $page_2_active = $display_id === 'page_2' ? ' is-active' : ''; @@ -368,8 +372,10 @@ protected function renderDisplayLink(ViewExecutable $view, $display_link_id) { * * @param \Drupal\views\ViewExecutable $view * The view to check. + * + * @internal */ - protected function assertNoWarningMessages(ViewExecutable $view) { + protected function assertNoWarningMessages(ViewExecutable $view): void { $messenger = $this->container->get('messenger'); $view->validate(); @@ -385,8 +391,10 @@ protected function assertNoWarningMessages(ViewExecutable $view) { * An array of options that should be unequal. * * @throws \Exception + * + * @internal */ - protected function assertWarningMessages(ViewExecutable $view, array $unequal_options) { + protected function assertWarningMessages(ViewExecutable $view, array $unequal_options): void { $messenger = $this->container->get('messenger'); // Create a list of options to check. diff --git a/core/modules/views/tests/src/Kernel/Handler/FieldDateTest.php b/core/modules/views/tests/src/Kernel/Handler/FieldDateTest.php index 5ce5e83c8325..cd584e685983 100644 --- a/core/modules/views/tests/src/Kernel/Handler/FieldDateTest.php +++ b/core/modules/views/tests/src/Kernel/Handler/FieldDateTest.php @@ -3,6 +3,7 @@ namespace Drupal\Tests\views\Kernel\Handler; use Drupal\Tests\views\Kernel\ViewsKernelTestBase; +use Drupal\views\ViewExecutable; use Drupal\views\Views; /** @@ -142,14 +143,16 @@ public function testFieldDate() { /** * Asserts properly formatted display against 'created' field in view. * - * @param mixed $view + * @param \Drupal\views\ViewExecutable $view * View to be tested. * @param array $map * Data map. - * @param null $timezone + * @param string|null $timezone * Optional timezone. + * + * @internal */ - protected function assertRenderedDatesEqual($view, $map, $timezone = NULL) { + protected function assertRenderedDatesEqual(ViewExecutable $view, array $map, ?string $timezone = NULL): void { foreach ($map as $date_format => $expected_result) { $view->field['created']->options['date_format'] = $date_format; if (isset($timezone)) { @@ -167,12 +170,14 @@ protected function assertRenderedDatesEqual($view, $map, $timezone = NULL) { /** * Asserts properly formatted display against 'destroyed' field in view. * - * @param mixed $view + * @param \Drupal\views\ViewExecutable $view * View to be tested. * @param array $map * Data map. + * + * @internal */ - protected function assertRenderedFutureDatesEqual($view, $map) { + protected function assertRenderedFutureDatesEqual(ViewExecutable $view, array $map): void { foreach ($map as $format => $result) { $view->field['destroyed']->options['date_format'] = $format; $view_result = $view->field['destroyed']->advancedRender($view->result[0]); diff --git a/core/modules/views/tests/src/Kernel/Handler/FieldKernelTest.php b/core/modules/views/tests/src/Kernel/Handler/FieldKernelTest.php index 4f910234e9ae..fa37204e0a00 100644 --- a/core/modules/views/tests/src/Kernel/Handler/FieldKernelTest.php +++ b/core/modules/views/tests/src/Kernel/Handler/FieldKernelTest.php @@ -104,13 +104,10 @@ public function testQuery() { * messages: use \Drupal\Component\Render\FormattableMarkup to embed * variables in the message text, not t(). If left blank, a default message * will be displayed. - * @param string $group - * (optional) The group this message is in, which is displayed in a column - * in test output. Use 'Debug' to indicate this is debugging output. Do not - * translate this string. Defaults to 'Other'; most tests do not override - * this default. + * + * @internal */ - protected function assertSubString($haystack, $needle, $message = '', $group = 'Other') { + protected function assertSubString(string $haystack, string $needle, string $message = ''): void { $this->assertStringContainsString($needle, $haystack, $message); } @@ -126,13 +123,10 @@ protected function assertSubString($haystack, $needle, $message = '', $group = ' * messages: use \Drupal\Component\Render\FormattableMarkup to embed * variables in the message text, not t(). If left blank, a default message * will be displayed. - * @param string $group - * (optional) The group this message is in, which is displayed in a column - * in test output. Use 'Debug' to indicate this is debugging output. Do not - * translate this string. Defaults to 'Other'; most tests do not override - * this default. + * + * @internal */ - protected function assertNotSubString($haystack, $needle, $message = '', $group = 'Other') { + protected function assertNotSubString(string $haystack, string $needle, string $message = ''): void { $this->assertStringNotContainsString($needle, $haystack, $message); } diff --git a/core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php b/core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php index 241c65cec516..1c598edcb29e 100644 --- a/core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php +++ b/core/modules/views/tests/src/Kernel/Handler/FieldRenderedEntityTest.php @@ -142,8 +142,10 @@ public function testRenderedEntityWithoutField() { * * @param array $build * The render array + * + * @internal */ - protected function assertCacheabilityMetadata($build) { + protected function assertCacheabilityMetadata(array $build): void { $this->assertEqualsCanonicalizing([ 'config:core.entity_view_display.entity_test.entity_test.foobar', 'config:views.view.test_field_entity_test_rendered', @@ -168,8 +170,10 @@ protected function assertCacheabilityMetadata($build) { * * @param \Drupal\views\Entity\View $storage * The view storage. + * + * @internal */ - protected function assertConfigDependencies(View $storage) { + protected function assertConfigDependencies(View $storage): void { $storage->calculateDependencies(); $this->assertEquals([ 'config' => ['core.entity_view_mode.entity_test.foobar'], diff --git a/core/modules/views/tests/src/Kernel/ModuleTest.php b/core/modules/views/tests/src/Kernel/ModuleTest.php index f59370d62d0f..8113f573d061 100644 --- a/core/modules/views/tests/src/Kernel/ModuleTest.php +++ b/core/modules/views/tests/src/Kernel/ModuleTest.php @@ -8,6 +8,7 @@ use Drupal\views\Plugin\views\field\Broken as BrokenField; use Drupal\views\Plugin\views\filter\Broken as BrokenFilter; use Drupal\views\Plugin\views\filter\Standard; +use Drupal\views\Plugin\views\ViewsHandlerInterface; use Drupal\views\Views; /** @@ -334,8 +335,10 @@ protected function formatViewOptions(array $views = []) { /** * Ensure that a certain handler is an instance of a certain table/field. + * + * @internal */ - public function assertInstanceHandler($handler, $table, $field, $id) { + public function assertInstanceHandler(ViewsHandlerInterface $handler, string $table, string $field, string $id): void { $table_data = $this->container->get('views.views_data')->get($table); $field_data = $table_data[$field][$id]; diff --git a/core/modules/views/tests/src/Kernel/Plugin/StyleGridTest.php b/core/modules/views/tests/src/Kernel/Plugin/StyleGridTest.php index 521ab74ed43e..69f940ed05ed 100644 --- a/core/modules/views/tests/src/Kernel/Plugin/StyleGridTest.php +++ b/core/modules/views/tests/src/Kernel/Plugin/StyleGridTest.php @@ -50,8 +50,10 @@ public function testGrid() { * The alignment of the grid to test. * @param int $columns * The number of columns in the grid to test. + * + * @internal */ - protected function assertGrid(ViewExecutable $view, $alignment, $columns) { + protected function assertGrid(ViewExecutable $view, string $alignment, int $columns): void { $view->setDisplay('default'); $view->initStyle(); $view->initHandlers(); diff --git a/core/modules/views/tests/src/Kernel/PluginInstanceTest.php b/core/modules/views/tests/src/Kernel/PluginInstanceTest.php index 5858ae115f25..315fae720372 100644 --- a/core/modules/views/tests/src/Kernel/PluginInstanceTest.php +++ b/core/modules/views/tests/src/Kernel/PluginInstanceTest.php @@ -93,8 +93,10 @@ public function testPluginInstances() { * * @param bool $test_deprecated * Indicates if deprecated plugins should be tested or skipped. + * + * @internal */ - protected function assertPluginInstances($test_deprecated) { + protected function assertPluginInstances(bool $test_deprecated): void { foreach ($this->definitions as $type => $plugins) { // Get a plugin manager for this type. $manager = $this->container->get("plugin.manager.views.$type"); diff --git a/core/modules/views/tests/src/Kernel/RenderCacheIntegrationTest.php b/core/modules/views/tests/src/Kernel/RenderCacheIntegrationTest.php index ed1fa20e285b..2ed8125a3b3f 100644 --- a/core/modules/views/tests/src/Kernel/RenderCacheIntegrationTest.php +++ b/core/modules/views/tests/src/Kernel/RenderCacheIntegrationTest.php @@ -87,8 +87,10 @@ public function testFieldBasedViewCacheTagsWithCachePluginTime() { * * @param bool $do_assert_views_caches * Whether to check Views' result & output caches. + * + * @internal */ - protected function assertCacheTagsForFieldBasedView($do_assert_views_caches) { + protected function assertCacheTagsForFieldBasedView(bool $do_assert_views_caches): void { $view = Views::getview('entity_test_fields'); // Empty result (no entities yet). @@ -229,8 +231,10 @@ public function testEntityBasedViewCacheTagsWithCachePluginTime() { /** * Tests cache tags on output & result cache items for an entity-based view. + * + * @internal */ - protected function assertCacheTagsForEntityBasedView($do_assert_views_caches) { + protected function assertCacheTagsForEntityBasedView(bool $do_assert_views_caches): void { $view = Views::getview('entity_test_row'); // Empty result (no entities yet). diff --git a/core/modules/views/tests/src/Kernel/ViewExecutableTest.php b/core/modules/views/tests/src/Kernel/ViewExecutableTest.php index 92e4b51d2590..5fa97a3928cf 100644 --- a/core/modules/views/tests/src/Kernel/ViewExecutableTest.php +++ b/core/modules/views/tests/src/Kernel/ViewExecutableTest.php @@ -362,8 +362,10 @@ public function testDestroy() { * * @param \Drupal\views\ViewExecutable $view * The view executable. + * + * @internal */ - protected function assertViewDestroy(ViewExecutable $view) { + protected function assertViewDestroy(ViewExecutable $view): void { $reflection = new \ReflectionClass($view); $defaults = $reflection->getDefaultProperties(); // The storage and user should remain. diff --git a/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php b/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php index f0e3ba9ce91e..c0dff398575f 100644 --- a/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php +++ b/core/modules/views/tests/src/Unit/Controller/ViewAjaxControllerTest.php @@ -437,8 +437,10 @@ protected function getCommands(ViewAjaxResponse $response) { * The response object. * @param int $position * The position where the view content command is expected. + * + * @internal */ - protected function assertViewResultCommand(ViewAjaxResponse $response, $position = 0) { + protected function assertViewResultCommand(ViewAjaxResponse $response, int $position = 0): void { $commands = $this->getCommands($response); $this->assertEquals('insert', $commands[$position]['command']); $this->assertEquals('View result', $commands[$position]['data']); diff --git a/core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php b/core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php index 5cd30b04aed9..219951d15544 100644 --- a/core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php +++ b/core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php @@ -294,19 +294,15 @@ public function testGroupedFilterAdminUiErrors() { * * @param string $message * The assert message. - * @param string $group - * The assertion group. * - * @return bool - * Result of the assertion. + * @internal */ - protected function assertNoGroupedFilterErrors($message = '', $group = 'Other') { + protected function assertNoGroupedFilterErrors(string $message = ''): void { foreach ($this->groupFormUiErrors as $error) { if (empty($message)) { - return $this->assertSession()->responseNotContains($error); + $this->assertSession()->responseNotContains($error); } } - return TRUE; } /** diff --git a/core/modules/views_ui/tests/src/Functional/HandlerTest.php b/core/modules/views_ui/tests/src/Functional/HandlerTest.php index e20089a77c43..e5235989fca6 100644 --- a/core/modules/views_ui/tests/src/Functional/HandlerTest.php +++ b/core/modules/views_ui/tests/src/Functional/HandlerTest.php @@ -294,8 +294,10 @@ public function testErrorMissingHelp() { * The field name. * @param string $entity_type * The entity type to which the field belongs. + * + * @internal */ - public function assertNoDuplicateField($field_name, $entity_type) { + public function assertNoDuplicateField(string $field_name, string $entity_type): void { $elements = $this->xpath('//td[.=:entity_type]/preceding-sibling::td[@class="title" and .=:title]', [':title' => $field_name, ':entity_type' => $entity_type]); $this->assertCount(1, $elements, $field_name . ' appears just once in ' . $entity_type . '.'); } diff --git a/core/modules/views_ui/tests/src/Functional/RearrangeFieldsTest.php b/core/modules/views_ui/tests/src/Functional/RearrangeFieldsTest.php index bd57872746ca..4aea55c68196 100644 --- a/core/modules/views_ui/tests/src/Functional/RearrangeFieldsTest.php +++ b/core/modules/views_ui/tests/src/Functional/RearrangeFieldsTest.php @@ -40,12 +40,14 @@ protected function getViewFields($view_name = 'test_view', $display_id = 'defaul /** * Check if the fields are in the correct order. * - * @param $view_name + * @param string $view_name * The name of the view. - * @param $fields + * @param array $fields * Array of field names. + * + * @internal */ - protected function assertFieldOrder($view_name, $fields) { + protected function assertFieldOrder(string $view_name, array $fields): void { $this->drupalGet('admin/structure/views/nojs/rearrange/' . $view_name . '/default/field'); foreach ($fields as $idx => $field) { diff --git a/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php b/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php index 43eab572b48b..9ca8b80a65e2 100644 --- a/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php +++ b/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php @@ -282,8 +282,10 @@ protected function clickPreviewLinkAJAX(NodeElement $element, $row_count) { * * @param int $row_count * The expected number of rows in the preview. + * + * @internal */ - protected function assertPreviewAJAX($row_count) { + protected function assertPreviewAJAX(int $row_count): void { $elements = $this->getSession()->getPage()->findAll('css', '.view-content .views-row'); $this->assertCount($row_count, $elements, 'Expected items found on page.'); } @@ -297,8 +299,10 @@ protected function assertPreviewAJAX($row_count) { * The class to assert. * @param string $message * (optional) A verbose message to output. + * + * @internal */ - protected function assertClass(NodeElement $element, $class, $message = NULL) { + protected function assertClass(NodeElement $element, string $class, string $message = ''): void { if (!isset($message)) { $message = "Class .$class found."; } diff --git a/core/modules/workspaces/tests/src/Functional/PathWorkspacesTest.php b/core/modules/workspaces/tests/src/Functional/PathWorkspacesTest.php index e97c77820541..8cd3a7163854 100644 --- a/core/modules/workspaces/tests/src/Functional/PathWorkspacesTest.php +++ b/core/modules/workspaces/tests/src/Functional/PathWorkspacesTest.php @@ -305,8 +305,10 @@ public function testPathAliasesWithTranslation() { * * @param string[] $paths * An array of paths to check for. + * + * @internal */ - protected function assertAccessiblePaths(array $paths) { + protected function assertAccessiblePaths(array $paths): void { foreach ($paths as $path) { $this->drupalGet($path); $this->assertSession()->statusCodeEquals(200); @@ -318,8 +320,10 @@ protected function assertAccessiblePaths(array $paths) { * * @param string[] $paths * An array of paths to check for. + * + * @internal */ - protected function assertNotAccessiblePaths(array $paths) { + protected function assertNotAccessiblePaths(array $paths): void { foreach ($paths as $path) { $this->drupalGet($path); $this->assertSession()->statusCodeEquals(404); diff --git a/core/modules/workspaces/tests/src/Kernel/WorkspaceIntegrationTest.php b/core/modules/workspaces/tests/src/Kernel/WorkspaceIntegrationTest.php index dd32a2682b48..3c86921cf603 100644 --- a/core/modules/workspaces/tests/src/Kernel/WorkspaceIntegrationTest.php +++ b/core/modules/workspaces/tests/src/Kernel/WorkspaceIntegrationTest.php @@ -753,8 +753,10 @@ public function testExecuteInWorkspaceContext() { * An array of expected values, as defined in ::testWorkspaces(). * @param string $entity_type_id * The ID of the entity type that is being tested. + * + * @internal */ - protected function assertWorkspaceStatus(array $expected, $entity_type_id) { + protected function assertWorkspaceStatus(array $expected, string $entity_type_id): void { $expected = $this->flattenExpectedValues($expected, $entity_type_id); $entity_keys = $this->entityTypeManager->getDefinition($entity_type_id)->getKeys(); @@ -823,8 +825,10 @@ protected function assertWorkspaceStatus(array $expected, $entity_type_id) { * An array of expected values, as defined in ::testWorkspaces(). * @param string $entity_type_id * The ID of the entity type to check. + * + * @internal */ - protected function assertEntityLoad(array $expected_values, $entity_type_id) { + protected function assertEntityLoad(array $expected_values, string $entity_type_id): void { // Filter the expected values so we can check only the default revisions. $expected_default_revisions = array_filter($expected_values, function ($expected_value) { return $expected_value['default_revision'] === TRUE; @@ -875,8 +879,10 @@ protected function assertEntityLoad(array $expected_values, $entity_type_id) { * An array of expected values, as defined in ::testWorkspaces(). * @param string $entity_type_id * The ID of the entity type to check. + * + * @internal */ - protected function assertEntityRevisionLoad(array $expected_values, $entity_type_id) { + protected function assertEntityRevisionLoad(array $expected_values, string $entity_type_id): void { $entity_keys = $this->entityTypeManager->getDefinition($entity_type_id)->getKeys(); $id_key = $entity_keys['id']; $revision_key = $entity_keys['revision']; @@ -901,8 +907,10 @@ protected function assertEntityRevisionLoad(array $expected_values, $entity_type * An array of expected values, as defined in ::testWorkspaces(). * @param string $entity_type_id * The ID of the entity type to check. + * + * @internal */ - protected function assertEntityQuery(array $expected_values, $entity_type_id) { + protected function assertEntityQuery(array $expected_values, string $entity_type_id): void { $storage = $this->entityTypeManager->getStorage($entity_type_id); $entity_keys = $this->entityTypeManager->getDefinition($entity_type_id)->getKeys(); $id_key = $entity_keys['id']; diff --git a/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/UninstallDefaultContentTest.php b/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/UninstallDefaultContentTest.php index 205575be3a9c..b7235cf77066 100644 --- a/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/UninstallDefaultContentTest.php +++ b/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/UninstallDefaultContentTest.php @@ -85,7 +85,7 @@ public function testReinstall() { * @param \Drupal\Core\Entity\EntityStorageInterface $node_storage * Node storage. */ - protected function assertRecipesImported(EntityStorageInterface $node_storage) { + protected function assertRecipesImported(EntityStorageInterface $node_storage): void { $count = $node_storage->getQuery() ->accessCheck(FALSE) ->condition('type', 'recipe') @@ -104,7 +104,7 @@ protected function assertRecipesImported(EntityStorageInterface $node_storage) { * @param \Drupal\Core\Entity\EntityStorageInterface $node_storage * Node storage. */ - protected function assertArticlesImported(EntityStorageInterface $node_storage) { + protected function assertArticlesImported(EntityStorageInterface $node_storage): void { $count = $node_storage->getQuery() ->accessCheck(FALSE) ->condition('type', 'article') @@ -123,7 +123,7 @@ protected function assertArticlesImported(EntityStorageInterface $node_storage) * @param \Drupal\Core\Entity\EntityStorageInterface $block_storage * Block storage. */ - protected function assertImportedCustomBlock(EntityStorageInterface $block_storage) { + protected function assertImportedCustomBlock(EntityStorageInterface $block_storage): void { $assert = $this->assertSession(); foreach ($this->expectedBlocks() as $block_info) { $this->drupalGet($block_info['path']); diff --git a/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php b/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php index be483fd9c03a..89f6a6a20ead 100644 --- a/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php +++ b/core/profiles/demo_umami/tests/src/Functional/DemoUmamiProfileTest.php @@ -67,7 +67,7 @@ public function testConfig() { * @param \Drupal\Core\Config\StorageInterface $active_config_storage * The active configuration storage. */ - protected function assertDefaultConfig(StorageInterface $default_config_storage, StorageInterface $active_config_storage) { + protected function assertDefaultConfig(StorageInterface $default_config_storage, StorageInterface $active_config_storage): void { /** @var \Drupal\Core\Config\ConfigManagerInterface $config_manager */ $config_manager = $this->container->get('config.manager'); diff --git a/core/profiles/standard/tests/src/FunctionalJavascript/StandardJavascriptTest.php b/core/profiles/standard/tests/src/FunctionalJavascript/StandardJavascriptTest.php index 7a9370a90dcc..cec79deacf50 100644 --- a/core/profiles/standard/tests/src/FunctionalJavascript/StandardJavascriptTest.php +++ b/core/profiles/standard/tests/src/FunctionalJavascript/StandardJavascriptTest.php @@ -50,7 +50,7 @@ public function testBigPipe() { * @param int $expected_count * The expected number of BigPipe placeholders. */ - protected function assertBigPipePlaceholderReplacementCount($expected_count) { + protected function assertBigPipePlaceholderReplacementCount($expected_count): void { $web_assert = $this->assertSession(); $web_assert->waitForElement('css', 'script[data-big-pipe-event="stop"]'); $page = $this->getSession()->getPage(); diff --git a/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php b/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php index 04c5ff9bc007..a80a9482bb8d 100644 --- a/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php +++ b/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php @@ -259,8 +259,10 @@ public function testTemplateCreateProject($project, $package_dir, $docroot_dir) * The expected version. * @param string $dir * The path to the site root. + * + * @internal */ - protected function assertDrupalVersion($expectedVersion, $dir) { + protected function assertDrupalVersion(string $expectedVersion, string $dir): void { $drupal_php_path = $dir . '/core/lib/Drupal.php'; $this->assertFileExists($drupal_php_path); diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php index efeb61676905..87ec2d210874 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php @@ -162,8 +162,10 @@ public function testInsertAjaxResponse() { * Expected result. * @param string $script * Script for additional theming. + * + * @internal */ - public function assertInsert($render_type, $expected, $script = '') { + public function assertInsert(string $render_type, string $expected, string $script = ''): void { // Check insert to block element. $this->drupalGet('ajax-test/insert-block-wrapper'); $this->getSession()->executeScript($script); @@ -192,8 +194,10 @@ public function assertInsert($render_type, $expected, $script = '') { * * @param string $expected * A needle text. + * + * @internal */ - protected function assertWaitPageContains($expected) { + protected function assertWaitPageContains(string $expected): void { $page = $this->getSession()->getPage(); $this->assertTrue($page->waitFor(10, function () use ($page, $expected) { // Clear content from empty styles and "processed" classes after effect. diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/CommandsTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/CommandsTest.php index 11e318551755..5f4b48bf8bd7 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/CommandsTest.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/CommandsTest.php @@ -145,8 +145,10 @@ public function testAjaxCommands() { * * @param string $text * A needle text. + * + * @internal */ - protected function assertWaitPageContains($text) { + protected function assertWaitPageContains(string $text): void { $page = $this->getSession()->getPage(); $page->waitFor(10, function () use ($page, $text) { return stripos($page->getContent(), $text) !== FALSE; diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/MessageCommandTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/MessageCommandTest.php index a0c1d57cbb8b..03c6b3af15b6 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/Ajax/MessageCommandTest.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/Ajax/MessageCommandTest.php @@ -109,8 +109,10 @@ protected function waitForMessageRemoved($message, $selector = '[data-drupal-mes * * @param string $expected_message * The text expected to be present in #drupal-live-announce. + * + * @internal */ - protected function assertAnnounceContains($expected_message) { + protected function assertAnnounceContains(string $expected_message): void { $assert_session = $this->assertSession(); $this->assertNotEmpty($assert_session->waitForElement('css', "#drupal-live-announce:contains('$expected_message')")); } @@ -120,8 +122,10 @@ protected function assertAnnounceContains($expected_message) { * * @param string $expected_message * The text expected to be absent from #drupal-live-announce. + * + * @internal */ - protected function assertAnnounceNotContains($expected_message) { + protected function assertAnnounceNotContains(string $expected_message): void { $assert_session = $this->assertSession(); $this->assertEmpty($assert_session->waitForElement('css', "#drupal-live-announce:contains('$expected_message')", 1000)); } diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Core/JsMessageTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Core/JsMessageTest.php index e52149b74f9a..951330cbd48f 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/Core/JsMessageTest.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/Core/JsMessageTest.php @@ -108,8 +108,10 @@ public function testAddRemoveMessages() { * Expected messages. * @param string $messagesSelector * The css selector for the containing messages element. + * + * @internal */ - protected function assertCurrentMessages(array $expected_messages, $messagesSelector) { + protected function assertCurrentMessages(array $expected_messages, string $messagesSelector): void { $expected_messages = array_values($expected_messages); $current_messages = []; if ($message_divs = $this->getSession()->getPage()->findAll('css', "$messagesSelector .messages")) { diff --git a/core/tests/Drupal/FunctionalJavascriptTests/TableDrag/TableDragTest.php b/core/tests/Drupal/FunctionalJavascriptTests/TableDrag/TableDragTest.php index cf36dc19299f..4003ecf9e69e 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/TableDrag/TableDragTest.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/TableDrag/TableDragTest.php @@ -156,8 +156,10 @@ public function testKeyboardAccessibility() { * @param array|null $structure * The expected table structure. If this isn't specified or equals NULL, * then the expected structure will be set by this method. Defaults to NULL. + * + * @internal */ - protected function assertKeyboardAccessibility($drupal_path = 'tabledrag_test', $structure = NULL) { + protected function assertKeyboardAccessibility(string $drupal_path = 'tabledrag_test', ?array $structure = NULL): void { $expected_table = $structure ?: [ ['id' => 1, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], ['id' => 2, 'weight' => 0, 'parent' => '', 'indentation' => 0, 'changed' => FALSE], @@ -321,8 +323,10 @@ public function testTableDragChangedWarning() { * When any of the given string is not found. * * @todo Remove this and use the WebAssert method when #2817657 is done. + * + * @internal */ - protected function assertOrder(array $items) { + protected function assertOrder(array $items): void { $session = $this->getSession(); $text = $session->getPage()->getHtml(); $strings = []; @@ -484,8 +488,10 @@ public function testNestedDraggableTables() { * @param bool $skip_missing * Whether assertions done on missing elements value may be skipped or not. * Defaults to FALSE. + * + * @internal */ - protected function assertDraggableTable(array $structure, $table_id = 'tabledrag-test-table', $skip_missing = FALSE) { + protected function assertDraggableTable(array $structure, string $table_id = 'tabledrag-test-table', bool $skip_missing = FALSE): void { $rows = $this->getSession()->getPage()->findAll('xpath', "//table[@id='$table_id']/tbody/tr"); $this->assertSession()->elementsCount('xpath', "//table[@id='$table_id']/tbody/tr", count($structure)); @@ -513,8 +519,10 @@ protected function assertDraggableTable(array $structure, $table_id = 'tabledrag * @param bool $skip_missing * Whether assertions done on missing elements value may be skipped or not. * Defaults to FALSE. + * + * @internal */ - protected function assertTableRow(NodeElement $row, $id, $weight, $parent = '', $indentation = 0, $changed = FALSE, $skip_missing = FALSE) { + protected function assertTableRow(NodeElement $row, string $id, int $weight, string $parent = '', int $indentation = 0, ?bool $changed = FALSE, bool $skip_missing = FALSE): void { // Assert that the row position is correct by checking that the id // corresponds. $id_name = "table[$id][id]"; diff --git a/core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php b/core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php index 21b02065b22b..06dde6ce8d09 100644 --- a/core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php +++ b/core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php @@ -282,8 +282,10 @@ public function testLoggerException() { * * @see \Drupal\simpletest\TestBase::prepareEnvironment() * @see \Drupal\Core\DrupalKernel::bootConfiguration() + * + * @internal */ - protected function assertErrorLogged($error_message) { + protected function assertErrorLogged(string $error_message): void { $error_log_filename = DRUPAL_ROOT . '/' . $this->siteDirectory . '/error.log'; $this->assertFileExists($error_log_filename); @@ -310,8 +312,10 @@ protected function assertErrorLogged($error_message) { * * @see \Drupal\simpletest\TestBase::prepareEnvironment() * @see \Drupal\Core\DrupalKernel::bootConfiguration() + * + * @internal */ - protected function assertNoErrorsLogged() { + protected function assertNoErrorsLogged(): void { // Since PHP only creates the error.log file when an actual error is // triggered, it is sufficient to check whether the file exists. $this->assertFileDoesNotExist(DRUPAL_ROOT . '/' . $this->siteDirectory . '/error.log'); diff --git a/core/tests/Drupal/KernelTests/Config/DefaultConfigTest.php b/core/tests/Drupal/KernelTests/Config/DefaultConfigTest.php index d79ea5b0e0be..0de9040330c0 100644 --- a/core/tests/Drupal/KernelTests/Config/DefaultConfigTest.php +++ b/core/tests/Drupal/KernelTests/Config/DefaultConfigTest.php @@ -71,8 +71,10 @@ public function testThemeConfig($theme) { * Extension name. * @param string $type * Extension type, either 'module' or 'theme'. + * + * @internal */ - protected function assertExtensionConfig(string $name, string $type) { + protected function assertExtensionConfig(string $name, string $type): void { // System and user are required in order to be able to install some of the // other modules. Therefore they are put into static::$modules, which though // doesn't install config files, so import those config files explicitly. Do diff --git a/core/tests/Drupal/KernelTests/Core/Ajax/CommandsTest.php b/core/tests/Drupal/KernelTests/Core/Ajax/CommandsTest.php index faf8cadb6fc4..487f3c6cd47b 100644 --- a/core/tests/Drupal/KernelTests/Core/Ajax/CommandsTest.php +++ b/core/tests/Drupal/KernelTests/Core/Ajax/CommandsTest.php @@ -88,14 +88,16 @@ public function testEmptyInsertCommand() { * the actual command contains additional settings that aren't part of * $needle. * - * @param $haystack + * @param array $haystack * An array of rendered Ajax commands returned by the server. - * @param $needle + * @param array $needle * Array of info we're expecting in one of those commands. - * @param $message + * @param string $message * An assertion message. + * + * @internal */ - protected function assertCommand($haystack, $needle, $message) { + protected function assertCommand(array $haystack, array $needle, string $message): void { $found = FALSE; foreach ($haystack as $command) { // If the command has additional settings that we're not testing for, do diff --git a/core/tests/Drupal/KernelTests/Core/Asset/LibraryDiscoveryIntegrationTest.php b/core/tests/Drupal/KernelTests/Core/Asset/LibraryDiscoveryIntegrationTest.php index fd58a786a415..82d9d3c670ba 100644 --- a/core/tests/Drupal/KernelTests/Core/Asset/LibraryDiscoveryIntegrationTest.php +++ b/core/tests/Drupal/KernelTests/Core/Asset/LibraryDiscoveryIntegrationTest.php @@ -262,25 +262,24 @@ protected function activateTheme($theme_name) { * The extension in which the $library is defined. * @param string $library_name * Name of the library. - * @param mixed $sub_key + * @param string $sub_key * The library sub key where the given asset is defined. * @param string $message * (optional) A message to display with the assertion. * - * @return bool - * TRUE if the specified asset is found in the library. + * @internal */ - protected function assertAssetInLibrary($asset, $extension, $library_name, $sub_key, $message = NULL) { + protected function assertAssetInLibrary(string $asset, string $extension, string $library_name, string $sub_key, string $message = NULL): void { if (!isset($message)) { $message = sprintf('Asset %s found in library "%s/%s"', $asset, $extension, $library_name); } $library = $this->libraryDiscovery->getLibraryByName($extension, $library_name); foreach ($library[$sub_key] as $definition) { if ($asset == $definition['data']) { - return TRUE; + return; } } - return $this->fail($message); + $this->fail($message); } /** @@ -292,25 +291,23 @@ protected function assertAssetInLibrary($asset, $extension, $library_name, $sub_ * The extension in which the $library_name is defined. * @param string $library_name * Name of the library. - * @param mixed $sub_key + * @param string $sub_key * The library sub key where the given asset is defined. * @param string $message * (optional) A message to display with the assertion. * - * @return bool - * TRUE if the specified asset is not found in the library. + * @internal */ - protected function assertNoAssetInLibrary($asset, $extension, $library_name, $sub_key, $message = NULL) { + protected function assertNoAssetInLibrary(string $asset, string $extension, string $library_name, string $sub_key, string $message = NULL): void { if (!isset($message)) { $message = sprintf('Asset %s not found in library "%s/%s"', $asset, $extension, $library_name); } $library = $this->libraryDiscovery->getLibraryByName($extension, $library_name); foreach ($library[$sub_key] as $definition) { if ($asset == $definition['data']) { - return $this->fail($message); + $this->fail($message); } } - return TRUE; } } diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigDiffTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigDiffTest.php index 06fda37ec7a9..120cf77de8a6 100644 --- a/core/tests/Drupal/KernelTests/Core/Config/ConfigDiffTest.php +++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigDiffTest.php @@ -151,8 +151,10 @@ public function testCollectionDiff() { * @param mixed $closing * (optional) The closing value of the edit. If not supplied, assertion * is skipped. + * + * @internal */ - protected function assertYamlEdit(array $edits, $field, $type, $orig = NULL, $closing = NULL) { + protected function assertYamlEdit(array $edits, string $field, string $type, $orig = NULL, $closing = NULL): void { $match = FALSE; foreach ($edits as $edit) { // Choose which section to search for the field. diff --git a/core/tests/Drupal/KernelTests/Core/Database/ConnectionUnitTest.php b/core/tests/Drupal/KernelTests/Core/Database/ConnectionUnitTest.php index 67a81adbfbea..9b88592c73a1 100644 --- a/core/tests/Drupal/KernelTests/Core/Database/ConnectionUnitTest.php +++ b/core/tests/Drupal/KernelTests/Core/Database/ConnectionUnitTest.php @@ -95,8 +95,10 @@ protected function getConnectionId() { * * @param int $id * The connection ID to verify. + * + * @internal */ - protected function assertConnection($id) { + protected function assertConnection(int $id): void { $list = $this->monitor->query($this->getQuery()['processlist'])->fetchAllKeyed(0, 0); $this->assertTrue(isset($list[$id]), new FormattableMarkup('Connection ID @id found.', ['@id' => $id])); } @@ -106,8 +108,10 @@ protected function assertConnection($id) { * * @param int $id * The connection ID to verify. + * + * @internal */ - protected function assertNoConnection($id) { + protected function assertNoConnection(int $id): void { $list = $this->monitor->query($this->getQuery()['processlist'])->fetchAllKeyed(0, 0); $this->assertFalse(isset($list[$id]), new FormattableMarkup('Connection ID @id not found.', ['@id' => $id])); } diff --git a/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php b/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php index 039e916a33ab..bf73ba4609c8 100644 --- a/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php +++ b/core/tests/Drupal/KernelTests/Core/Database/SchemaTest.php @@ -672,10 +672,12 @@ public function testSchemaAddFieldDefaultInitial() { * The addition test covers both defining a field of a given specification * when initially creating at table and extending an existing table. * - * @param $field_spec + * @param array $field_spec * The schema specification of the field. + * + * @internal */ - protected function assertFieldAdditionRemoval($field_spec) { + protected function assertFieldAdditionRemoval(array $field_spec): void { // Try creating the field on a new table. $table_name = 'test_table_' . ($this->counter++); $table_spec = [ @@ -737,8 +739,10 @@ protected function assertFieldAdditionRemoval($field_spec) { /** * Asserts that a newly added field has the correct characteristics. + * + * @internal */ - protected function assertFieldCharacteristics($table_name, $field_name, $field_spec) { + protected function assertFieldCharacteristics(string $table_name, string $field_name, array $field_spec): void { // Check that the initial value has been registered. if (isset($field_spec['initial'])) { // There should be no row with a value different then $field_spec['initial']. @@ -1007,14 +1011,16 @@ public function testSchemaChangeFieldDefaultInitial() { /** * Asserts that a field can be changed from one spec to another. * - * @param $old_spec + * @param array $old_spec * The beginning field specification. - * @param $new_spec + * @param array $new_spec * The ending field specification. - * @param $test_data + * @param mixed $test_data * (optional) A test value to insert and test, if specified. + * + * @internal */ - protected function assertFieldChange($old_spec, $new_spec, $test_data = NULL) { + protected function assertFieldChange(array $old_spec, array $new_spec, $test_data = NULL): void { $table_name = 'test_table_' . ($this->counter++); $table_spec = [ 'fields' => [ diff --git a/core/tests/Drupal/KernelTests/Core/Database/TransactionTest.php b/core/tests/Drupal/KernelTests/Core/Database/TransactionTest.php index d55fe82cbdb1..e76618152a62 100644 --- a/core/tests/Drupal/KernelTests/Core/Database/TransactionTest.php +++ b/core/tests/Drupal/KernelTests/Core/Database/TransactionTest.php @@ -316,12 +316,14 @@ protected function cleanUp() { /** * Asserts that a given row is present in the test table. * - * @param $name + * @param string $name * The name of the row. - * @param $message + * @param string $message * The message to log for the assertion. + * + * @internal */ - public function assertRowPresent($name, $message = NULL) { + public function assertRowPresent(string $name, string $message = NULL): void { if (!isset($message)) { $message = new FormattableMarkup('Row %name is present.', ['%name' => $name]); } @@ -332,12 +334,14 @@ public function assertRowPresent($name, $message = NULL) { /** * Asserts that a given row is absent from the test table. * - * @param $name + * @param string $name * The name of the row. - * @param $message + * @param string $message * The message to log for the assertion. + * + * @internal */ - public function assertRowAbsent($name, $message = NULL) { + public function assertRowAbsent(string $name, string $message = NULL): void { if (!isset($message)) { $message = new FormattableMarkup('Row %name is absent.', ['%name' => $name]); } diff --git a/core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php b/core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php index 0e790af4c866..161f3b3edef3 100644 --- a/core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php +++ b/core/tests/Drupal/KernelTests/Core/Datetime/Element/TimezoneTest.php @@ -252,8 +252,10 @@ public function testDatelistTimezonePropertyProcessed() { * The names of the default input elements used by this element type. * * @throws \Exception + * + * @internal */ - protected function assertTimesUnderstoodCorrectly($elementType, array $inputs) { + protected function assertTimesUnderstoodCorrectly(string $elementType, array $inputs): void { $this->elementType = $elementType; // Simulate the form being saved, with the user adding the date for any @@ -326,8 +328,10 @@ protected function assertTimesUnderstoodCorrectly($elementType, array $inputs) { * The element type to test. * * @throws \Exception + * + * @internal */ - public function assertDateTimezonePropertyProcessed($elementType) { + public function assertDateTimezonePropertyProcessed(string $elementType): void { $this->elementType = $elementType; // Simulate form being loaded and default values displayed to user. $form_state = new FormState(); diff --git a/core/tests/Drupal/KernelTests/Core/Entity/BundleConstraintValidatorTest.php b/core/tests/Drupal/KernelTests/Core/Entity/BundleConstraintValidatorTest.php index 3d755a55c160..bee4cd224e07 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/BundleConstraintValidatorTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/BundleConstraintValidatorTest.php @@ -42,8 +42,10 @@ public function testValidation() { * * @param string|array $bundle * Bundle/bundles to use as constraint option. + * + * @internal */ - protected function assertValidation($bundle) { + protected function assertValidation($bundle): void { // Create a typed data definition with a Bundle constraint. $definition = DataDefinition::create('entity_reference') ->addConstraint('Bundle', $bundle); diff --git a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php index 667bae835334..c40a4bebdeb9 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php @@ -726,8 +726,10 @@ public function testLookupKeys() { * * @param array $expected * Array of expected entity IDs. + * + * @internal */ - protected function assertResults($expected) { + protected function assertResults(array $expected): void { $expected_count = count($expected); $this->assertCount($expected_count, $this->queryResults); foreach ($expected as $value) { diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php index 269dc77eb56d..daa74a9aacca 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php @@ -38,8 +38,10 @@ public function setUp(): void { /** * Asserts entity access correctly grants or denies access. + * + * @internal */ - public function assertEntityAccess($ops, AccessibleInterface $object, AccountInterface $account = NULL) { + public function assertEntityAccess(array $ops, AccessibleInterface $object, AccountInterface $account = NULL): void { foreach ($ops as $op => $result) { $message = new FormattableMarkup("Entity access returns @result with operation '@op'.", [ '@result' => !isset($result) ? 'null' : ($result ? 'true' : 'false'), diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php index 268cedd70575..ccc1f537affe 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php @@ -46,8 +46,10 @@ public function testCRUD() { * The entity type to run the tests with. * @param \Drupal\user\UserInterface $user1 * The user to run the tests with. + * + * @internal */ - protected function assertCRUD($entity_type, UserInterface $user1) { + protected function assertCRUD(string $entity_type, UserInterface $user1): void { // Create some test entities. $entity = $this->container->get('entity_type.manager') ->getStorage($entity_type) diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityCrudHookTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityCrudHookTest.php index 6f0ac63ac6b4..a77b0eb5fd92 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityCrudHookTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityCrudHookTest.php @@ -68,10 +68,12 @@ protected function setUp(): void { * Module entity_crud_hook_test implements all core entity CRUD hooks and * stores a message for each in $GLOBALS['entity_crud_hook_test']. * - * @param $messages + * @param array $messages * An array of plain-text messages in the order they should appear. + * + * @internal */ - protected function assertHookMessageOrder($messages) { + protected function assertHookMessageOrder(array $messages): void { $positions = []; foreach ($messages as $message) { // Verify that each message is found and record its position. diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldDefaultValueTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldDefaultValueTest.php index c5e27218c2ab..93d07c4d23ab 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldDefaultValueTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityFieldDefaultValueTest.php @@ -40,8 +40,10 @@ public function testDefaultValues() { * * @param string $entity_type_id * The entity type to run the tests with. + * + * @internal */ - protected function assertDefaultValues($entity_type_id) { + protected function assertDefaultValues(string $entity_type_id): void { $entity = $this->container->get('entity_type.manager') ->getStorage($entity_type_id) ->create(); diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php index 9a50a78fe6aa..275d9274a6a7 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryAggregateTest.php @@ -626,8 +626,10 @@ public function testRepeatedExecution() { * @param bool $sorted * (optiOnal) Whether the array keys of the expected are sorted, defaults to * FALSE. + * + * @internal */ - protected function assertResults($expected, $sorted = FALSE) { + protected function assertResults(array $expected, bool $sorted = FALSE): void { $found = TRUE; $expected_keys = array_keys($expected); foreach ($this->queryResult as $key => $row) { @@ -649,9 +651,11 @@ protected function assertResults($expected, $sorted = FALSE) { * * @param array $expected * An array of the expected results. + * + * @internal */ - protected function assertSortedResults($expected) { - return $this->assertResults($expected, TRUE); + protected function assertSortedResults(array $expected): void { + $this->assertResults($expected, TRUE); } } diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryRelationshipTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryRelationshipTest.php index 54c4484c6ca0..b0983c757764 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryRelationshipTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryRelationshipTest.php @@ -224,8 +224,10 @@ public function testInvalidSpecifier() { * * @param array $expected * A list of indexes in the $this->entities array. + * + * @internal */ - protected function assertResults($expected) { + protected function assertResults(array $expected): void { $expected_count = count($expected); $this->assertCount($expected_count, $this->queryResults); foreach ($expected as $key) { diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php index 176413cf6988..bf35a517f3cb 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php @@ -720,7 +720,10 @@ public function testDelta() { } - protected function assertResult() { + /** + * @internal + */ + protected function assertResult(): void { $assert = []; $expected = func_get_args(); if ($expected && is_array($expected[0])) { @@ -732,16 +735,21 @@ protected function assertResult() { $this->assertSame($assert, $this->queryResults); } - protected function assertRevisionResult($keys, $expected) { + /** + * @internal + */ + protected function assertRevisionResult(array $keys, array $expected): void { $assert = []; foreach ($expected as $key => $binary) { $assert[$keys[$key]] = strval($binary); } $this->assertSame($assert, $this->queryResults); - return $assert; } - protected function assertBundleOrder($order) { + /** + * @internal + */ + protected function assertBundleOrder(string $order): void { // This loop is for bundle1 entities. for ($i = 1; $i <= 15; $i += 2) { $ok = TRUE; diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php index 9258c4acf70e..c3005afd879d 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php @@ -331,10 +331,12 @@ public function testAutocreateApi() { * * @param \Drupal\Core\Entity\EntityInterface $entity * The referencing entity. - * @param $setter_callback + * @param callable $setter_callback * A callback setting the target entity on the referencing entity. + * + * @internal */ - protected function assertUserAutocreate(EntityInterface $entity, $setter_callback) { + protected function assertUserAutocreate(EntityInterface $entity, callable $setter_callback): void { $storage = $this->entityTypeManager->getStorage('user'); $user_id = $this->generateRandomEntityId(); $user = $storage->create(['uid' => $user_id, 'name' => $this->randomString()]); @@ -350,10 +352,12 @@ protected function assertUserAutocreate(EntityInterface $entity, $setter_callbac * * @param \Drupal\Core\Entity\EntityInterface $entity * The referencing entity. - * @param $setter_callback + * @param callable $setter_callback * A callback setting the target entity on the referencing entity. + * + * @internal */ - protected function assertUserRoleAutocreate(EntityInterface $entity, $setter_callback) { + protected function assertUserRoleAutocreate(EntityInterface $entity, callable $setter_callback): void { $storage = $this->entityTypeManager->getStorage('user_role'); $role_id = $this->generateRandomEntityId(TRUE); $role = $storage->create(['id' => $role_id, 'label' => $this->randomString()]); diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityRepositoryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityRepositoryTest.php index 5bebe5d370c0..bd36cad7b0c3 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityRepositoryTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityRepositoryTest.php @@ -300,8 +300,10 @@ protected function doTestLanguageFallback($method_name) { * An entity object or NULL. * @param string $expected_entity_type_id * The expected entity type ID. + * + * @internal */ - protected function assertEntityType($entity, $expected_entity_type_id) { + protected function assertEntityType(?object $entity, string $expected_entity_type_id): void { $this->assertInstanceOf(EntityTest::class, $entity); $this->assertEquals($expected_entity_type_id, $entity->getEntityTypeId()); } diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php index f9b7b328aa37..86f116702b39 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php @@ -35,8 +35,10 @@ public function testCRUD() { * * @param string $entity_type * The entity type to run the tests with. + * + * @internal */ - protected function assertCRUD($entity_type) { + protected function assertCRUD(string $entity_type): void { // Verify that no UUID is auto-generated when passing one for creation. $uuid_service = $this->container->get('uuid'); $uuid = $uuid_service->generate(); diff --git a/core/tests/Drupal/KernelTests/Core/Entity/FieldTranslationSqlStorageTest.php b/core/tests/Drupal/KernelTests/Core/Entity/FieldTranslationSqlStorageTest.php index 3559c03a8941..0cfff0994fac 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/FieldTranslationSqlStorageTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/FieldTranslationSqlStorageTest.php @@ -70,8 +70,10 @@ public function testFieldSqlStorage() { * The entity fields are attached to. * @param string $message * (optional) A message to display with the assertion. + * + * @internal */ - protected function assertFieldStorageLangcode(FieldableEntityInterface $entity, $message = '') { + protected function assertFieldStorageLangcode(FieldableEntityInterface $entity, string $message = ''): void { $status = TRUE; $entity_type = $entity->getEntityTypeId(); $id = $entity->id(); diff --git a/core/tests/Drupal/KernelTests/Core/Entity/FieldableEntityDefinitionUpdateTest.php b/core/tests/Drupal/KernelTests/Core/Entity/FieldableEntityDefinitionUpdateTest.php index 7cb95a4afd83..ffeea5316653 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/FieldableEntityDefinitionUpdateTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/FieldableEntityDefinitionUpdateTest.php @@ -381,8 +381,10 @@ protected function insertData($revisionable, $translatable) { * Whether the entity type was revisionable prior to the update. * @param bool $translatable * Whether the entity type was translatable prior to the update. + * + * @internal */ - protected function assertEntityData($revisionable, $translatable) { + protected function assertEntityData(bool $revisionable, bool $translatable): void { $entities = $this->entityTypeManager->getStorage($this->entityTypeId)->loadMultiple(); $this->assertCount(3, $entities); foreach ($entities as $entity_id => $entity) { @@ -456,8 +458,10 @@ protected function assertEntityData($revisionable, $translatable) { * @param bool $new_base_field * (optional) Whether a new base field was added as part of the update. * Defaults to FALSE. + * + * @internal */ - protected function assertEntityTypeSchema($revisionable, $translatable, $new_base_field = FALSE) { + protected function assertEntityTypeSchema(bool $revisionable, bool $translatable, bool $new_base_field = FALSE): void { // Check whether the 'new_base_field' field has been installed correctly. $field_storage_definition = $this->entityDefinitionUpdateManager->getFieldStorageDefinition('new_base_field', $this->entityTypeId); if ($new_base_field) { @@ -485,8 +489,10 @@ protected function assertEntityTypeSchema($revisionable, $translatable, $new_bas /** * Asserts the revisionable characteristics of an entity type. + * + * @internal */ - protected function assertRevisionable() { + protected function assertRevisionable(): void { /** @var \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type */ $entity_type = $this->entityDefinitionUpdateManager->getEntityType($this->entityTypeId); $this->assertTrue($entity_type->isRevisionable()); @@ -524,8 +530,10 @@ protected function assertRevisionable() { /** * Asserts the translatable characteristics of an entity type. + * + * @internal */ - protected function assertTranslatable() { + protected function assertTranslatable(): void { /** @var \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type */ $entity_type = $this->entityDefinitionUpdateManager->getEntityType($this->entityTypeId); $this->assertTrue($entity_type->isTranslatable()); @@ -553,8 +561,10 @@ protected function assertTranslatable() { /** * Asserts the revisionable / translatable characteristics of an entity type. + * + * @internal */ - protected function assertRevisionableAndTranslatable() { + protected function assertRevisionableAndTranslatable(): void { $this->assertRevisionable(); $this->assertTranslatable(); @@ -599,8 +609,10 @@ protected function assertRevisionableAndTranslatable() { /** * Asserts that an entity type is neither revisionable nor translatable. + * + * @internal */ - protected function assertNonRevisionableAndNonTranslatable() { + protected function assertNonRevisionableAndNonTranslatable(): void { /** @var \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type */ $entity_type = $this->entityDefinitionUpdateManager->getEntityType($this->entityTypeId); $this->assertFalse($entity_type->isRevisionable()); @@ -618,8 +630,10 @@ protected function assertNonRevisionableAndNonTranslatable() { * * @param bool $revisionable * Whether the entity type is revisionable or not. + * + * @internal */ - protected function assertBundleFieldSchema($revisionable) { + protected function assertBundleFieldSchema(bool $revisionable): void { $entity_type_id = 'entity_test_update'; $field_storage_definition = $this->entityFieldManager->getFieldStorageDefinitions($entity_type_id)['new_bundle_field']; $database_schema = $this->database->schema(); @@ -635,8 +649,10 @@ protected function assertBundleFieldSchema($revisionable) { /** * Asserts that the backup tables have been kept after a successful update. + * + * @internal */ - protected function assertBackupTables() { + protected function assertBackupTables(): void { $backups = \Drupal::keyValue('entity.update_backup')->getAll(); $backup = reset($backups); diff --git a/core/tests/Drupal/KernelTests/Core/Entity/RevisionableContentEntityBaseTest.php b/core/tests/Drupal/KernelTests/Core/Entity/RevisionableContentEntityBaseTest.php index bc38a47d66eb..15d56e68d604 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/RevisionableContentEntityBaseTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/RevisionableContentEntityBaseTest.php @@ -166,8 +166,10 @@ public function testWasDefaultRevision() { * The number of items expected to be in revisions related tables. * @param \Drupal\Core\Entity\EntityTypeInterface $definition * The definition and metadata of the entity being tested. + * + * @internal */ - protected function assertItemsTableCount($count, EntityTypeInterface $definition) { + protected function assertItemsTableCount(int $count, EntityTypeInterface $definition): void { $connection = Database::getConnection(); $this->assertEquals(1, (int) $connection->select($definition->getBaseTable())->countQuery()->execute()->fetchField()); $this->assertEquals(1, (int) $connection->select($definition->getDataTable())->countQuery()->execute()->fetchField()); diff --git a/core/tests/Drupal/KernelTests/Core/Field/FieldItemTest.php b/core/tests/Drupal/KernelTests/Core/Field/FieldItemTest.php index 15ab322db081..36f1f9cc8397 100644 --- a/core/tests/Drupal/KernelTests/Core/Field/FieldItemTest.php +++ b/core/tests/Drupal/KernelTests/Core/Field/FieldItemTest.php @@ -83,10 +83,12 @@ public function testSaveWorkflow() { * * @param \Drupal\entity_test\Entity\EntityTest $entity * The test entity. - * @param $expected_value + * @param string $expected_value * The expected field item value. + * + * @internal */ - protected function assertSavedFieldItemValue(EntityTest $entity, $expected_value) { + protected function assertSavedFieldItemValue(EntityTest $entity, string $expected_value): void { $entity->setNewRevision(TRUE); $entity->save(); $base_field_expected_value = str_replace($this->fieldName, 'field_test_item', $expected_value); diff --git a/core/tests/Drupal/KernelTests/Core/File/HtaccessTest.php b/core/tests/Drupal/KernelTests/Core/File/HtaccessTest.php index b9f59efbd8bc..e49ff3b4c39c 100644 --- a/core/tests/Drupal/KernelTests/Core/File/HtaccessTest.php +++ b/core/tests/Drupal/KernelTests/Core/File/HtaccessTest.php @@ -97,8 +97,10 @@ public function testHtaccessSave() { * The URI of the file to check. * @param int $expected * The expected file permissions; e.g., 0444. + * + * @internal */ - protected function assertFilePermissions($uri, $expected) { + protected function assertFilePermissions(string $uri, int $expected): void { $actual = fileperms($uri) & 0777; $this->assertSame($actual, $expected, new FormattableMarkup('@uri file permissions @actual are identical to @expected.', [ '@uri' => $uri, diff --git a/core/tests/Drupal/KernelTests/Core/Menu/MenuTreeStorageTest.php b/core/tests/Drupal/KernelTests/Core/Menu/MenuTreeStorageTest.php index ea400d607a61..0704cec75d24 100644 --- a/core/tests/Drupal/KernelTests/Core/Menu/MenuTreeStorageTest.php +++ b/core/tests/Drupal/KernelTests/Core/Menu/MenuTreeStorageTest.php @@ -412,8 +412,10 @@ protected function moveMenuLink($id, $new_parent) { * An ordered array of the IDs of the menu links that are the parents. * @param array $children * Array of child IDs that are visible (enabled == 1). + * + * @internal */ - protected function assertMenuLink($id, array $expected_properties, array $parents = [], array $children = []) { + protected function assertMenuLink(string $id, array $expected_properties, array $parents = [], array $children = []): void { $query = $this->connection->select('menu_tree'); $query->fields('menu_tree'); $query->condition('id', $id); diff --git a/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php b/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php index b589d0e5f699..73c8c010e7c5 100644 --- a/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php +++ b/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php @@ -34,8 +34,10 @@ protected function setUp(): void { * The expected markup. * @param string $message * Assertion message. + * + * @internal */ - protected function assertElements(array $elements, $expected_html, $message) { + protected function assertElements(array $elements, string $expected_html, string $message): void { $actual_html = (string) \Drupal::service('renderer')->renderRoot($elements); $this->assertSame($expected_html, $actual_html, Html::escape($message)); } diff --git a/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php b/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php index a2c80f893497..95120187bf7d 100644 --- a/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php +++ b/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php @@ -193,8 +193,10 @@ public function testDateTimestamp($input, array $initial, array $transform) { * @see testTimestamp() * @param array $transform * @see testTimestamp() + * + * @internal */ - public function assertDateTimestamp($date, $input, $initial, $transform) { + public function assertDateTimestamp(DateTimePlus $date, string $input, array $initial, array $transform): void { // Check format. $value = $date->format($initial['format']); $this->assertEquals($initial['expected_date'], $value, sprintf("Test new DateTimePlus(%s, %s): should be %s, found %s.", $input, $initial['timezone'], $initial['expected_date'], $value)); diff --git a/core/tests/Drupal/Tests/Component/DrupalComponentTest.php b/core/tests/Drupal/Tests/Component/DrupalComponentTest.php index 9876f7985d39..74cd216fe55c 100644 --- a/core/tests/Drupal/Tests/Component/DrupalComponentTest.php +++ b/core/tests/Drupal/Tests/Component/DrupalComponentTest.php @@ -41,7 +41,7 @@ public function testNoCoreInComponentTests() { * * @dataProvider \Drupal\Tests\Component\DrupalComponentTest::getComponents */ - public function testComponentLicence($component_path) { + public function testComponentLicense($component_path) { $this->assertFileExists($component_path . DIRECTORY_SEPARATOR . 'LICENSE.txt'); $this->assertSame('e84dac1d9fbb5a4a69e38654ce644cea769aa76b', hash_file('sha1', $component_path . DIRECTORY_SEPARATOR . 'LICENSE.txt')); } @@ -90,8 +90,10 @@ protected function findPhpClasses($dir) { * * @param string $class_path * The full path to the class that should be checked. + * + * @internal */ - protected function assertNoCoreUsage($class_path) { + protected function assertNoCoreUsage(string $class_path): void { $contents = file_get_contents($class_path); preg_match_all('/^.*Drupal\\\Core.*$/m', $contents, $matches); $matches = array_filter($matches[0], function ($line) { diff --git a/core/tests/Drupal/Tests/Component/Graph/GraphTest.php b/core/tests/Drupal/Tests/Component/Graph/GraphTest.php index aacd9b59203a..2773d46ba309 100644 --- a/core/tests/Drupal/Tests/Component/Graph/GraphTest.php +++ b/core/tests/Drupal/Tests/Component/Graph/GraphTest.php @@ -103,12 +103,14 @@ protected function normalizeGraph($graph) { /** * Verify expected paths in a graph. * - * @param $graph + * @param array $graph * A graph array processed by \Drupal\Component\Graph\Graph::searchAndSort() - * @param $expected_paths + * @param array $expected_paths * An associative array containing vertices with their expected paths. + * + * @internal */ - protected function assertPaths($graph, $expected_paths) { + protected function assertPaths(array $graph, array $expected_paths): void { foreach ($expected_paths as $vertex => $paths) { // Build an array with keys = $paths and values = TRUE. $expected = array_fill_keys($paths, TRUE); @@ -120,13 +122,15 @@ protected function assertPaths($graph, $expected_paths) { /** * Verify expected reverse paths in a graph. * - * @param $graph + * @param array $graph * A graph array processed by \Drupal\Component\Graph\Graph::searchAndSort() - * @param $expected_reverse_paths + * @param array $expected_reverse_paths * An associative array containing vertices with their expected reverse * paths. + * + * @internal */ - protected function assertReversePaths($graph, $expected_reverse_paths) { + protected function assertReversePaths(array $graph, array $expected_reverse_paths): void { foreach ($expected_reverse_paths as $vertex => $paths) { // Build an array with keys = $paths and values = TRUE. $expected = array_fill_keys($paths, TRUE); @@ -138,12 +142,14 @@ protected function assertReversePaths($graph, $expected_reverse_paths) { /** * Verify expected components in a graph. * - * @param $graph + * @param array $graph * A graph array processed by \Drupal\Component\Graph\Graph::searchAndSort(). - * @param $expected_components + * @param array $expected_components * An array containing of components defined as a list of their vertices. + * + * @internal */ - protected function assertComponents($graph, $expected_components) { + protected function assertComponents(array $graph, array $expected_components): void { $unassigned_vertices = array_fill_keys(array_keys($graph), TRUE); foreach ($expected_components as $component) { $result_components = []; @@ -159,12 +165,14 @@ protected function assertComponents($graph, $expected_components) { /** * Verify expected order in a graph. * - * @param $graph + * @param array $graph * A graph array processed by \Drupal\Component\Graph\Graph::searchAndSort() - * @param $expected_orders + * @param array $expected_orders * An array containing lists of vertices in their expected order. + * + * @internal */ - protected function assertWeights($graph, $expected_orders) { + protected function assertWeights(array $graph, array $expected_orders): void { foreach ($expected_orders as $order) { $previous_vertex = array_shift($order); foreach ($order as $vertex) { diff --git a/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php b/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php index ce8588a6e728..413991ff5e01 100644 --- a/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php +++ b/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php @@ -314,8 +314,10 @@ public function providerSortByTitleProperty() { * Expected comparison function return value. * @param int $result * Actual comparison function return value. + * + * @internal */ - protected function assertBothNegativePositiveOrZero($expected, $result) { + protected function assertBothNegativePositiveOrZero(int $expected, int $result): void { $this->assertIsNumeric($expected); $this->assertIsNumeric($result); $message = "Numbers should be both negative, both positive or both zero. Expected: $expected, actual: $result"; diff --git a/core/tests/Drupal/Tests/Component/Utility/XssTest.php b/core/tests/Drupal/Tests/Component/Utility/XssTest.php index b0c434da5d7a..9ecffc195eca 100644 --- a/core/tests/Drupal/Tests/Component/Utility/XssTest.php +++ b/core/tests/Drupal/Tests/Component/Utility/XssTest.php @@ -594,10 +594,10 @@ public function providerTestFilterXssAdminNotNormalized() { * Lowercase, plain text to look for. * @param string $message * (optional) Message to display if failed. Defaults to an empty string. - * @param string $group - * (optional) The group this message belongs to. Defaults to 'Other'. + * + * @internal */ - protected function assertNormalized($haystack, $needle, $message = '', $group = 'Other') { + protected function assertNormalized(string $haystack, string $needle, string $message = ''): void { $this->assertStringContainsString($needle, strtolower(Html::decodeEntities($haystack)), $message); } @@ -616,10 +616,10 @@ protected function assertNormalized($haystack, $needle, $message = '', $group = * Lowercase, plain text to look for. * @param string $message * (optional) Message to display if failed. Defaults to an empty string. - * @param string $group - * (optional) The group this message belongs to. Defaults to 'Other'. + * + * @internal */ - protected function assertNotNormalized($haystack, $needle, $message = '', $group = 'Other') { + protected function assertNotNormalized(string $haystack, string $needle, string $message = ''): void { $this->assertStringNotContainsString($needle, strtolower(Html::decodeEntities($haystack)), $message); } diff --git a/core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Functional/ScaffoldTest.php b/core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Functional/ScaffoldTest.php index 0fd2cfed5b36..12868c0facea 100644 --- a/core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Functional/ScaffoldTest.php +++ b/core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Functional/ScaffoldTest.php @@ -356,8 +356,10 @@ public function testDrupalDrupalFileWasAppended($fixture_name, $is_link, $scaffo * The path to the System-under-Test's docroot. * @param bool $is_link * Whether or not symlinking is used. + * + * @internal */ - protected function assertDefaultSettingsFromScaffoldOverride($docroot, $is_link) { + protected function assertDefaultSettingsFromScaffoldOverride(string $docroot, bool $is_link): void { $this->assertScaffoldedFile($docroot . '/sites/default/default.settings.php', $is_link, 'scaffolded from the scaffold-override-fixture'); } @@ -366,8 +368,10 @@ protected function assertDefaultSettingsFromScaffoldOverride($docroot, $is_link) * * @param string $docroot * The path to the System-under-Test's docroot. + * + * @internal */ - protected function assertHtaccessExcluded($docroot) { + protected function assertHtaccessExcluded(string $docroot): void { // Ensure that the .htaccess.txt file was not written, as our // top-level composer.json excludes it from the files to scaffold. $this->assertFileDoesNotExist($docroot . '/.htaccess'); @@ -384,8 +388,10 @@ protected function assertHtaccessExcluded($docroot) { * The path to the System-under-Test's docroot. * @param bool $is_link * Whether or not symlinking is used. + * + * @internal */ - protected function assertCommonDrupalAssetsWereScaffolded($docroot, $is_link) { + protected function assertCommonDrupalAssetsWereScaffolded(string $docroot, bool $is_link): void { // Assert scaffold files are written in the correct locations. $this->assertScaffoldedFile($docroot . '/.csslintrc', $is_link, 'Test version of .csslintrc from drupal/core.'); $this->assertScaffoldedFile($docroot . '/.editorconfig', $is_link, 'Test version of .editorconfig from drupal/core.'); @@ -408,8 +414,10 @@ protected function assertCommonDrupalAssetsWereScaffolded($docroot, $is_link) { * Location of the doc root, where autoload.php should be written. * @param bool $relocated_docroot * Whether the document root is relocated or now. + * + * @internal */ - protected function assertAutoloadFileCorrect($docroot, $relocated_docroot = FALSE) { + protected function assertAutoloadFileCorrect(string $docroot, bool $relocated_docroot = FALSE): void { $autoload_path = $docroot . '/autoload.php'; // Ensure that the autoload.php file was written. diff --git a/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php b/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php index 8eef0c87f305..dbe8008b00e9 100644 --- a/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php +++ b/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php @@ -45,7 +45,10 @@ protected function setUp(): void { \Drupal::setContainer($container); } - protected function assertDefaultCacheability(AccessResult $access) { + /** + * @internal + */ + protected function assertDefaultCacheability(AccessResult $access): void { $this->assertSame([], $access->getCacheContexts()); $this->assertSame([], $access->getCacheTags()); $this->assertSame(Cache::PERMANENT, $access->getCacheMaxAge()); diff --git a/core/tests/Drupal/Tests/Core/Common/TagsTest.php b/core/tests/Drupal/Tests/Core/Common/TagsTest.php index 3c3058f9655b..ad2fba9322f3 100644 --- a/core/tests/Drupal/Tests/Core/Common/TagsTest.php +++ b/core/tests/Drupal/Tests/Core/Common/TagsTest.php @@ -43,8 +43,10 @@ public function testImplodeTags() { /** * Helper function: asserts that the ending array of tags is what we wanted. + * + * @internal */ - protected function assertTags($tags) { + protected function assertTags(array $tags): void { $original = $this->validTags; foreach ($tags as $tag) { $key = array_search($tag, $original); diff --git a/core/tests/Drupal/Tests/Core/Config/ConfigTest.php b/core/tests/Drupal/Tests/Core/Config/ConfigTest.php index 0fba72d8fc1b..d7b6ee5f0e80 100644 --- a/core/tests/Drupal/Tests/Core/Config/ConfigTest.php +++ b/core/tests/Drupal/Tests/Core/Config/ConfigTest.php @@ -581,8 +581,10 @@ public function nestedDataProvider() { * * @param array $data * Config data to be checked. + * + * @internal */ - public function assertConfigDataEquals($data) { + public function assertConfigDataEquals(array $data): void { foreach ($data as $key => $value) { $this->assertEquals($value, $this->config->get($key)); } @@ -595,8 +597,10 @@ public function assertConfigDataEquals($data) { * Config data to be checked. * @param bool $apply_overrides * Apply any overrides to the original data. + * + * @internal */ - public function assertOriginalConfigDataEquals($data, $apply_overrides) { + public function assertOriginalConfigDataEquals(array $data, bool $apply_overrides): void { foreach ($data as $key => $value) { $config_value = $this->config->getOriginal($key, $apply_overrides); $this->assertEquals($value, $config_value); @@ -632,8 +636,10 @@ public function testSafeStringHandling() { * The original data. * @param array $overridden_data * The overridden data. + * + * @internal */ - protected function assertOverriddenKeys(array $data, array $overridden_data) { + protected function assertOverriddenKeys(array $data, array $overridden_data): void { if (empty($overridden_data)) { $this->assertFalse($this->config->hasOverrides()); } diff --git a/core/tests/Drupal/Tests/Core/Controller/ControllerResolverTest.php b/core/tests/Drupal/Tests/Core/Controller/ControllerResolverTest.php index b9b63e0b18fe..bbd4f5ce4aee 100644 --- a/core/tests/Drupal/Tests/Core/Controller/ControllerResolverTest.php +++ b/core/tests/Drupal/Tests/Core/Controller/ControllerResolverTest.php @@ -180,10 +180,12 @@ public function testGetControllerFromDefinitionNotCallable() { * @param string|null $class * Either the name of the class the controller represents, or NULL if it is * not an object. - * @param mixed $output + * @param string|null $output * The output expected for this controller. + * + * @internal */ - protected function assertCallableController($controller, $class, $output) { + protected function assertCallableController(callable $controller, ?string $class, ?string $output): void { if ($class) { $this->assertIsObject($controller[0]); $this->assertInstanceOf($class, $controller[0]); diff --git a/core/tests/Drupal/Tests/Core/Entity/Access/EntityFormDisplayAccessControlHandlerTest.php b/core/tests/Drupal/Tests/Core/Entity/Access/EntityFormDisplayAccessControlHandlerTest.php index b262aa898720..154a1b0c618e 100644 --- a/core/tests/Drupal/Tests/Core/Entity/Access/EntityFormDisplayAccessControlHandlerTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/Access/EntityFormDisplayAccessControlHandlerTest.php @@ -202,8 +202,10 @@ protected function setUp(): void { * A list of allowed operations. * @param \Drupal\Core\Session\AccountInterface $user * The account to use for get access. + * + * @internal */ - public function assertAllowOperations(array $allow_operations, AccountInterface $user) { + public function assertAllowOperations(array $allow_operations, AccountInterface $user): void { foreach (['view', 'update', 'delete'] as $operation) { $expected = in_array($operation, $allow_operations); $actual = $this->accessControlHandler->access($this->entity, $operation, $user); diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php index a05fe7cac13a..3ffe645995cc 100644 --- a/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php @@ -484,8 +484,10 @@ public function testConstraintMethods() { * * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type * The entity type. + * + * @internal */ - protected function assertNoPublicProperties(EntityTypeInterface $entity_type) { + protected function assertNoPublicProperties(EntityTypeInterface $entity_type): void { $reflection = new \ReflectionObject($entity_type); $this->assertEmpty($reflection->getProperties(\ReflectionProperty::IS_PUBLIC)); } diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityUrlTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityUrlTest.php index 0084e4ecba1a..865779dc090c 100644 --- a/core/tests/Drupal/Tests/Core/Entity/EntityUrlTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/EntityUrlTest.php @@ -460,8 +460,10 @@ protected function getEntity($class, array $values, array $methods = []) { * Whether or not the URL is expected to have a language option. * @param \Drupal\Core\Url $url * The URL option to make the assertions on. + * + * @internal */ - protected function assertUrl($expected_route_name, array $expected_route_parameters, $entity, $has_language, Url $url) { + protected function assertUrl(string $expected_route_name, array $expected_route_parameters, $entity, bool $has_language, Url $url): void { $this->assertEquals($expected_route_name, $url->getRouteName()); $this->assertEquals($expected_route_parameters, $url->getRouteParameters()); $this->assertEquals($this->entityTypeId, $url->getOption('entity_type')); diff --git a/core/tests/Drupal/Tests/Core/File/FileSystemTest.php b/core/tests/Drupal/Tests/Core/File/FileSystemTest.php index 465c60adb4f7..aa4ec558a8a1 100644 --- a/core/tests/Drupal/Tests/Core/File/FileSystemTest.php +++ b/core/tests/Drupal/Tests/Core/File/FileSystemTest.php @@ -138,8 +138,10 @@ public function providerTestBasename() { * The URI to test. * @param string $message * An optional error message. + * + * @internal */ - protected function assertFilePermissions($expected_mode, $uri, $message = '') { + protected function assertFilePermissions(int $expected_mode, string $uri, string $message = ''): void { // Mask out all but the last three octets. $actual_mode = fileperms($uri) & 0777; diff --git a/core/tests/Drupal/Tests/Core/Form/EventSubscriber/FormAjaxSubscriberTest.php b/core/tests/Drupal/Tests/Core/Form/EventSubscriber/FormAjaxSubscriberTest.php index ee723020f64a..1f51ed6f40a5 100644 --- a/core/tests/Drupal/Tests/Core/Form/EventSubscriber/FormAjaxSubscriberTest.php +++ b/core/tests/Drupal/Tests/Core/Form/EventSubscriber/FormAjaxSubscriberTest.php @@ -51,6 +51,13 @@ class FormAjaxSubscriberTest extends UnitTestCase { */ protected $messenger; + /** + * The event used to derive the response. + * + * @var \Symfony\Component\HttpKernel\Event\ExceptionEvent + */ + protected $event = NULL; + /** * {@inheritdoc} */ @@ -84,9 +91,9 @@ public function testOnException() { ->with($request, $expected_form, $form_state, $commands) ->willReturn($response); - $event = $this->assertResponseFromException($request, $exception, $response); - $this->assertTrue($event->isAllowingCustomResponseCode()); - $this->assertSame(200, $event->getResponse()->getStatusCode()); + $this->assertResponseFromException($request, $exception, $response); + $this->assertTrue($this->event->isAllowingCustomResponseCode()); + $this->assertSame(200, $this->event->getResponse()->getStatusCode()); } /** @@ -109,9 +116,9 @@ public function testOnExceptionNewBuildId() { ->with($request, $expected_form, $form_state, $commands) ->willReturn($response); - $event = $this->assertResponseFromException($request, $exception, $response); - $this->assertTrue($event->isAllowingCustomResponseCode()); - $this->assertSame(200, $event->getResponse()->getStatusCode()); + $this->assertResponseFromException($request, $exception, $response); + $this->assertTrue($this->event->isAllowingCustomResponseCode()); + $this->assertSame(200, $this->event->getResponse()->getStatusCode()); } /** @@ -146,8 +153,8 @@ public function testOnExceptionResponseBuilderException() { ->with($request, $expected_form, $form_state, $commands) ->willThrowException($expected_exception); - $event = $this->assertResponseFromException($request, $exception, NULL); - $this->assertSame($expected_exception, $event->getThrowable()); + $this->assertResponseFromException($request, $exception, NULL); + $this->assertSame($expected_exception, $this->event->getThrowable()); } /** @@ -256,15 +263,13 @@ public function testOnExceptionNestedWrongException() { * @param \Symfony\Component\HttpFoundation\Response|null $expected_response * The response expected to be set on the event. * - * @return \Symfony\Component\HttpKernel\Event\ExceptionEvent - * The event used to derive the response. + * @internal */ - protected function assertResponseFromException(Request $request, \Exception $exception, $expected_response) { - $event = new ExceptionEvent($this->httpKernel, $request, HttpKernelInterface::MASTER_REQUEST, $exception); - $this->subscriber->onException($event); + protected function assertResponseFromException(Request $request, \Exception $exception, ?Response $expected_response): void { + $this->event = new ExceptionEvent($this->httpKernel, $request, HttpKernelInterface::MASTER_REQUEST, $exception); + $this->subscriber->onException($this->event); - $this->assertSame($expected_response, $event->getResponse()); - return $event; + $this->assertSame($expected_response, $this->event->getResponse()); } } diff --git a/core/tests/Drupal/Tests/Core/Plugin/Context/EntityContextDefinitionIsSatisfiedTest.php b/core/tests/Drupal/Tests/Core/Plugin/Context/EntityContextDefinitionIsSatisfiedTest.php index 39d4f5b5f870..7f9a23df2221 100644 --- a/core/tests/Drupal/Tests/Core/Plugin/Context/EntityContextDefinitionIsSatisfiedTest.php +++ b/core/tests/Drupal/Tests/Core/Plugin/Context/EntityContextDefinitionIsSatisfiedTest.php @@ -89,8 +89,10 @@ protected function setUp(): void { * The context definition to check. * @param mixed $value * (optional) The value to set on the context, defaults to NULL. + * + * @internal */ - protected function assertRequirementIsSatisfied($expected, ContextDefinition $requirement, ContextDefinition $definition, $value = NULL) { + protected function assertRequirementIsSatisfied(bool $expected, ContextDefinition $requirement, ContextDefinition $definition, $value = NULL): void { $context = new EntityContext($definition, $value); $this->assertSame($expected, $requirement->isSatisfiedBy($context)); } diff --git a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php index a6626959fa5e..f9006bb3db5e 100644 --- a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php +++ b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php @@ -554,8 +554,10 @@ protected function generatePlaceholderElement() { * rendered. * @param array $expected_data * A render array with the expected values. + * + * @internal */ - protected function assertPlaceholderRenderCache($cid_parts, array $bubbled_cache_contexts, array $expected_data) { + protected function assertPlaceholderRenderCache($cid_parts, array $bubbled_cache_contexts, array $expected_data): void { if ($cid_parts !== FALSE) { if ($bubbled_cache_contexts) { // Verify render cached placeholder. diff --git a/core/tests/Drupal/Tests/Core/Render/RendererTest.php b/core/tests/Drupal/Tests/Core/Render/RendererTest.php index 8938dd44e641..ac69590e8bac 100644 --- a/core/tests/Drupal/Tests/Core/Render/RendererTest.php +++ b/core/tests/Drupal/Tests/Core/Render/RendererTest.php @@ -731,10 +731,12 @@ public function providerAccessValues() { * * @param array $build * A render array with either #access or #access_callback. - * @param bool $access + * @param \Drupal\Core\Access\AccessResultInterface|bool $access * Whether the render array is accessible or not. + * + * @internal */ - protected function assertAccess($build, $access) { + protected function assertAccess(array $build, $access): void { $sensitive_content = $this->randomContextValue(); $build['#markup'] = $sensitive_content; if (($access instanceof AccessResultInterface && $access->isAllowed()) || $access === TRUE) { diff --git a/core/tests/Drupal/Tests/Core/Routing/UrlGeneratorTest.php b/core/tests/Drupal/Tests/Core/Routing/UrlGeneratorTest.php index 108eb7f71649..bd3268d86d96 100644 --- a/core/tests/Drupal/Tests/Core/Routing/UrlGeneratorTest.php +++ b/core/tests/Drupal/Tests/Core/Routing/UrlGeneratorTest.php @@ -529,18 +529,20 @@ public function testGenerateWithPathProcessorChangingQueryParameter() { /** * Asserts \Drupal\Core\Routing\UrlGenerator::generateFromRoute()'s output. * - * @param $route_name + * @param string $route_name * The route name to test. * @param array $route_parameters * The route parameters to test. * @param array $options * The options to test. - * @param $expected_url + * @param string $expected_url * The expected generated URL string. * @param \Drupal\Core\Render\BubbleableMetadata $expected_bubbleable_metadata * The expected generated bubbleable metadata. + * + * @internal */ - protected function assertGenerateFromRoute($route_name, array $route_parameters, array $options, $expected_url, BubbleableMetadata $expected_bubbleable_metadata) { + protected function assertGenerateFromRoute(string $route_name, array $route_parameters, array $options, string $expected_url, BubbleableMetadata $expected_bubbleable_metadata): void { // First, test with $collect_cacheability_metadata set to the default value. $url = $this->generator->generateFromRoute($route_name, $route_parameters, $options); $this->assertSame($expected_url, $url); diff --git a/core/tests/Drupal/Tests/Core/Security/RequestSanitizerTest.php b/core/tests/Drupal/Tests/Core/Security/RequestSanitizerTest.php index 03450142e002..7cfc554cd3ec 100644 --- a/core/tests/Drupal/Tests/Core/Security/RequestSanitizerTest.php +++ b/core/tests/Drupal/Tests/Core/Security/RequestSanitizerTest.php @@ -357,8 +357,10 @@ public function errorHandler($errno, $errstr) { * The error message. * @param int $errno * The severity level of the error. + * + * @internal */ - protected function assertError($errstr, $errno) { + protected function assertError(string $errstr, int $errno): void { foreach ($this->errors as $error) { if ($error['errstr'] === $errstr && $error['errno'] === $errno) { return; diff --git a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php index b48b59668594..c05a4bfbe3ce 100644 --- a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php +++ b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php @@ -382,8 +382,10 @@ public function providerTestAttributeValues() { * The CSS class to check. * @param string $html * The HTML snippet to check. + * + * @internal */ - protected function assertClass($class, $html) { + protected function assertClass(string $class, string $html): void { $xpath = "//*[@class='$class']"; self::assertTrue((bool) $this->getXPathResultCount($xpath, $html)); } @@ -395,8 +397,10 @@ protected function assertClass($class, $html) { * The CSS class to check. * @param string $html * The HTML snippet to check. + * + * @internal */ - protected function assertNoClass($class, $html) { + protected function assertNoClass(string $class, string $html): void { $xpath = "//*[@class='$class']"; self::assertFalse((bool) $this->getXPathResultCount($xpath, $html)); } @@ -408,8 +412,10 @@ protected function assertNoClass($class, $html) { * The CSS ID to check. * @param string $html * The HTML snippet to check. + * + * @internal */ - protected function assertID($id, $html) { + protected function assertID(string $id, string $html): void { $xpath = "//*[@id='$id']"; self::assertTrue((bool) $this->getXPathResultCount($xpath, $html)); } @@ -421,8 +427,10 @@ protected function assertID($id, $html) { * The CSS ID to check. * @param string $html * The HTML snippet to check. + * + * @internal */ - protected function assertNoID($id, $html) { + protected function assertNoID(string $id, string $html): void { $xpath = "//*[@id='$id']"; self::assertFalse((bool) $this->getXPathResultCount($xpath, $html)); } diff --git a/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php b/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php index cc466edd644a..540442693af8 100644 --- a/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php +++ b/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php @@ -650,8 +650,10 @@ public function testGenerateTwice() { * The HTML to check. * @param int $count * How many times the link should be present in the HTML. Defaults to 1. + * + * @internal */ - public static function assertLink(array $properties, MarkupInterface $html, $count = 1) { + public static function assertLink(array $properties, MarkupInterface $html, int $count = 1): void { // Provide default values. $properties += ['attributes' => []]; @@ -686,10 +688,9 @@ public static function assertLink(array $properties, MarkupInterface $html, $cou * @param string $html * The HTML snippet to check. * - * @return int - * The number of results that are found. + * @internal */ - protected function assertNoXPathResults($query, $html) { + protected function assertNoXPathResults(string $query, string $html): void { $document = new \DOMDocument(); $document->loadHTML($html); $xpath = new \DOMXPath($document); -- GitLab From f6ffe6aec6a8050e3f3b3398e9180d6c72002c0f Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 22 Nov 2021 16:44:08 +0000 Subject: [PATCH 53/69] Issue #3250629 by paulocs, longwave: MockBuilder::setMethods is deprecated in PHPUnit8 and removed from PHPUnit10 (cherry picked from commit 588951bbf20cf44fd6bc423dfc00f78147c4b9d4) --- .../tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php b/core/tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php index 192331c99372..f9656cfc5e00 100644 --- a/core/tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php +++ b/core/tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php @@ -103,7 +103,7 @@ public function providerHasContextValue() { */ public function testHasContextValue($has_context_value, $default_value): void { $mock_definition = $this->getMockBuilder('Drupal\Component\Plugin\Context\ContextDefinitionInterface') - ->setMethods(['getDefaultValue']) + ->onlyMethods(['getDefaultValue']) ->getMockForAbstractClass(); $mock_definition->expects($this->atLeastOnce()) -- GitLab From af165d2a372f527a8eeefaf4941f67f209e914f1 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 22 Nov 2021 16:46:38 +0000 Subject: [PATCH 54/69] Issue #3250587 by lauriii, bnjmnm: \Drupal\Tests\ckeditor5\FunctionalJavascript\CKEditor5Test::testEditorFileReferenceIntegration fails on PostgreSQL (cherry picked from commit 40a0e8a2a75fd4e94d0ecf160127d4871247e109) --- .../tests/src/FunctionalJavascript/CKEditor5Test.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php index deb37c9455fb..f68274ddc67b 100644 --- a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php +++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php @@ -381,7 +381,10 @@ public function testEditorFileReferenceIntegration() { $this->assertNotEmpty($image_upload_field = $page->find('css', '.ck-file-dialog-button input[type="file"]')); $image = $this->getTestFiles('image')[0]; $image_upload_field->attachFile($this->container->get('file_system')->realpath($image->uri)); - $assert_session->assertWaitOnAjaxRequest(); + // Wait until preview for the image has rendered to ensure that the image + // upload has completed and the image has been downcast. + // @see https://www.drupal.org/project/drupal/issues/3250587 + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-content img[data-entity-uuid]')); $page->pressButton('Save'); $uploaded_image = File::load(1); -- GitLab From 4b233f806f3d3add5ae4605e913f0908b76bd824 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 22 Nov 2021 16:50:36 +0000 Subject: [PATCH 55/69] Issue #3250482 by quietone, daffie: The docblock of \Drupal\views\Plugin\views\cache\CachePluginBase::cacheSetMaxAge() is wrong (cherry picked from commit 266fe1a75d31eae2fdd5c91e058c250dfba04fdd) --- .../views/src/Plugin/views/cache/CachePluginBase.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php index 8cbb2fd3439f..4fe6c872c406 100644 --- a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php +++ b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php @@ -81,13 +81,14 @@ protected function cacheExpire($type) { } /** - * Determine expiration time in the cache table of the cache type - * or CACHE_PERMANENT if item shouldn't be removed automatically from cache. + * Determine cache expiration time. * - * Plugins must override this to implement expiration in the cache table. + * Plugins must override this to implement expiration in the cache table. The + * default is CACHE_PERMANENT, indicating that the item will not be removed + * automatically from cache. * - * @param $type - * The cache type, either 'query', 'result'. + * @param string $type + * The cache type. */ protected function cacheSetMaxAge($type) { return Cache::PERMANENT; -- GitLab From b2b0f12b0f7c9ac6adb63baae7300963bd8211aa Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 22 Nov 2021 17:07:32 +0000 Subject: [PATCH 56/69] Issue #3247414 by anagomes, Beakerboy: Incorrect docblock types for $statementClass and $statementWrapperClass properties in Connection (cherry picked from commit da17876671ae476b4ab892c032cd88fd648fc25f) --- core/lib/Drupal/Core/Database/Connection.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/lib/Drupal/Core/Database/Connection.php b/core/lib/Drupal/Core/Database/Connection.php index 4f28e5b669a7..67c601d3db0e 100644 --- a/core/lib/Drupal/Core/Database/Connection.php +++ b/core/lib/Drupal/Core/Database/Connection.php @@ -73,7 +73,7 @@ abstract class Connection { /** * The name of the Statement class for this connection. * - * @var string + * @var string|null * * @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Database * drivers should use or extend StatementWrapper instead, and encapsulate @@ -86,7 +86,7 @@ abstract class Connection { /** * The name of the StatementWrapper class for this connection. * - * @var string + * @var string|null */ protected $statementWrapperClass = NULL; -- GitLab From 59d8ab1f0439082de46f840d544e3118e207ef46 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Mon, 22 Nov 2021 17:11:24 +0000 Subject: [PATCH 57/69] Issue #3184619 by neclimdul, quietone: Fix unreachable logic in UrlGenerator::getRoute (cherry picked from commit 3730c17b80906332adb9218d302fc64c8d75e328) --- core/lib/Drupal/Core/Routing/UrlGenerator.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/lib/Drupal/Core/Routing/UrlGenerator.php b/core/lib/Drupal/Core/Routing/UrlGenerator.php index c4276a3d224c..f56736ab267c 100644 --- a/core/lib/Drupal/Core/Routing/UrlGenerator.php +++ b/core/lib/Drupal/Core/Routing/UrlGenerator.php @@ -7,7 +7,6 @@ use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Routing\RequestContext as SymfonyRequestContext; use Symfony\Component\Routing\Route as SymfonyRoute; -use Symfony\Component\Routing\Exception\RouteNotFoundException; use Drupal\Component\Utility\UrlHelper; use Drupal\Core\PathProcessor\OutboundPathProcessorInterface; use Drupal\Core\RouteProcessor\OutboundRouteProcessorInterface; @@ -423,8 +422,8 @@ protected function getRoute($name) { if ($name instanceof SymfonyRoute) { $route = $name; } - elseif (NULL === $route = clone $this->provider->getRouteByName($name)) { - throw new RouteNotFoundException(sprintf('Route "%s" does not exist.', $name)); + else { + $route = clone $this->provider->getRouteByName($name); } return $route; } -- GitLab From d4bf8fb744402ec29d818f9eb90f1f66b78abd45 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Tue, 23 Nov 2021 09:35:28 +0000 Subject: [PATCH 58/69] Issue #3250743 by alexpott, longwave: [PHP 8.1] NumberFieldTest fails --- .../field/tests/src/Functional/Number/NumberFieldTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php b/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php index 98253c179f95..f9ff9fb3e9ab 100644 --- a/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php +++ b/core/modules/field/tests/src/Functional/Number/NumberFieldTest.php @@ -430,7 +430,7 @@ public function testCreateNumberDecimalField() { * * @internal */ - public function assertSetMinimumValue(FieldConfigInterface $field, int $minimum_value): void { + public function assertSetMinimumValue(FieldConfigInterface $field, $minimum_value): void { $field_configuration_url = 'entity_test/structure/entity_test/fields/entity_test.entity_test.' . $field->getName(); // Set the minimum value. -- GitLab From f51543629d6ece1690e5dbf5d52cf59ac52abeae Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Tue, 23 Nov 2021 13:56:41 +0000 Subject: [PATCH 59/69] Issue #3061074 by longwave, cilefen, chr.fritsch, acbramley, jungle, larowlan: egulias/EmailValidator prior to 2.1.22 allows addresses with a space in the domain part (cherry picked from commit b9a61af92ad9e56bcae8391ea5911f8ec635f108) --- composer.lock | 8 +++----- core/composer.json | 2 +- .../Drupal/Tests/Component/Utility/EmailValidatorTest.php | 1 + 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index cb861893d50e..32fdc160be76 100644 --- a/composer.lock +++ b/composer.lock @@ -535,14 +535,14 @@ "dist": { "type": "path", "url": "core", - "reference": "60f96b86b97f28bf6a18f9a7e392f56caea5eba3" + "reference": "a986b9e62a8273bbdb670ac6e8829ff8e69d9cec" }, "require": { "asm89/stack-cors": "^1.1", "composer/semver": "^3.0", "doctrine/annotations": "^1.12", "doctrine/reflection": "^1.1", - "egulias/email-validator": "^2.0", + "egulias/email-validator": "^2.1.22", "ext-date": "*", "ext-dom": "*", "ext-filter": "*", @@ -5521,9 +5521,6 @@ "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" - }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", @@ -6968,6 +6965,7 @@ "type": "github" } ], + "abandoned": true, "time": "2020-11-30T07:30:19+00:00" }, { diff --git a/core/composer.json b/core/composer.json index d83b166ca13d..5d316e470d7e 100644 --- a/core/composer.json +++ b/core/composer.json @@ -40,7 +40,7 @@ "symfony-cmf/routing": "^2.1", "laminas/laminas-feed": "^2.12", "stack/builder": "^1.0", - "egulias/email-validator": "^2.0", + "egulias/email-validator": "^2.1.22", "masterminds/html5": "^2.1", "symfony/psr-http-message-bridge": "^2.0", "laminas/laminas-diactoros": "^2.1", diff --git a/core/tests/Drupal/Tests/Component/Utility/EmailValidatorTest.php b/core/tests/Drupal/Tests/Component/Utility/EmailValidatorTest.php index fc657794b7cd..26318ebe380b 100644 --- a/core/tests/Drupal/Tests/Component/Utility/EmailValidatorTest.php +++ b/core/tests/Drupal/Tests/Component/Utility/EmailValidatorTest.php @@ -25,6 +25,7 @@ public function testIsValid() { $validator = new EmailValidator(); $this->assertTrue($validator->isValid('example@example.com')); $this->assertFalse($validator->isValid('example@example.com@')); + $this->assertFalse($validator->isValid('example@example .com')); } /** -- GitLab From 88adf9c13caf5450c2909c36f0feff7782f96329 Mon Sep 17 00:00:00 2001 From: Lauri Eskola <lauri.eskola@acquia.com> Date: Fri, 19 Nov 2021 16:53:59 +0200 Subject: [PATCH 60/69] Issue #3032275 by alexpott, dww, bendeguz.csirmaz, tedbow: Create a fault-tolerant method for interacting with links and fields in Javascript tests (cherry picked from commit 7ff9cbf0ffe5ad5e48e2610e9924d0f20f474061) --- .../BlockFormMessagesTest.php | 44 ++-------- .../LayoutBuilderDisableInteractionsTest.php | 4 +- .../js-interaction-test-blocker-element.css | 13 +++ .../js_interaction_test.trigger_link.es6.js | 38 ++++++++ .../js/js_interaction_test.trigger_link.js | 28 ++++++ .../js_interaction_test.info.yml | 5 ++ .../js_interaction_test.libraries.yml | 10 +++ .../js_interaction_test.routing.yml | 6 ++ .../src/Controller/JSInteractionTestForm.php | 88 +++++++++++++++++++ .../DrupalSelenium2Driver.php | 80 +++++++++++++++++ .../FunctionalJavascriptTests/JSWebAssert.php | 17 ++++ .../Tests/JSInteractionTest.php | 60 +++++++++++++ 12 files changed, 353 insertions(+), 40 deletions(-) create mode 100644 core/modules/system/tests/modules/js_interaction_test/css/js-interaction-test-blocker-element.css create mode 100644 core/modules/system/tests/modules/js_interaction_test/js/js_interaction_test.trigger_link.es6.js create mode 100644 core/modules/system/tests/modules/js_interaction_test/js/js_interaction_test.trigger_link.js create mode 100644 core/modules/system/tests/modules/js_interaction_test/js_interaction_test.info.yml create mode 100644 core/modules/system/tests/modules/js_interaction_test/js_interaction_test.libraries.yml create mode 100644 core/modules/system/tests/modules/js_interaction_test/js_interaction_test.routing.yml create mode 100644 core/modules/system/tests/modules/js_interaction_test/src/Controller/JSInteractionTestForm.php create mode 100644 core/tests/Drupal/FunctionalJavascriptTests/Tests/JSInteractionTest.php diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php index c5e7c0cb4543..54e7e4e9b43c 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php @@ -2,10 +2,8 @@ namespace Drupal\Tests\layout_builder\FunctionalJavascript; -use Behat\Mink\Element\NodeElement; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; use Drupal\Tests\contextual\FunctionalJavascript\ContextualLinkClickTrait; -use WebDriver\Exception\UnknownError; /** * Tests that messages appear in the off-canvas dialog with configuring blocks. @@ -59,14 +57,14 @@ public function testValidationMessage() { // Enable layout builder. $this->drupalGet($field_ui_prefix . '/display/default'); $this->submitForm(['layout[enabled]' => TRUE], 'Save'); - $this->clickElementWhenClickable($page->findLink('Manage layout')); + $page->findLink('Manage layout')->click(); $assert_session->addressEquals($field_ui_prefix . '/display/default/layout'); - $this->clickElementWhenClickable($page->findLink('Add block')); + $page->findLink('Add block')->click(); $this->assertNotEmpty($assert_session->waitForElementVisible('css', '#drupal-off-canvas .block-categories')); - $this->clickElementWhenClickable($page->findLink('Powered by Drupal')); + $page->findLink('Powered by Drupal')->click(); $this->assertNotEmpty($assert_session->waitForElementVisible('css', '#drupal-off-canvas [name="settings[label]"]')); $page->findField('Title')->setValue(''); - $this->clickElementWhenClickable($page->findButton('Add block')); + $page->findButton('Add block')->click(); $this->assertMessagesDisplayed(); $page->findField('Title')->setValue('New title'); $page->pressButton('Add block'); @@ -76,7 +74,7 @@ public function testValidationMessage() { $assert_session->assertNoElementAfterWait('css', '#drupal-off-canvas'); $assert_session->assertWaitOnAjaxRequest(); $this->drupalGet($this->getUrl()); - $this->clickElementWhenClickable($page->findButton('Save layout')); + $page->findButton('Save layout')->click(); $this->assertNotEmpty($assert_session->waitForElement('css', 'div:contains("The layout has been saved")')); // Ensure that message are displayed when configuring an existing block. @@ -85,7 +83,7 @@ public function testValidationMessage() { $this->clickContextualLink($block_css_locator, 'Configure', TRUE); $this->assertNotEmpty($assert_session->waitForElementVisible('css', '#drupal-off-canvas [name="settings[label]"]')); $page->findField('Title')->setValue(''); - $this->clickElementWhenClickable($page->findButton('Update')); + $page->findButton('Update')->click(); $this->assertMessagesDisplayed(); } @@ -108,34 +106,4 @@ protected function assertMessagesDisplayed(): void { $this->assertGreaterThan(4, count($top_form_elements)); } - /** - * Attempts to click an element until it is in a clickable state. - * - * @param \Behat\Mink\Element\NodeElement $element - * The element to click. - * @param int $timeout - * (Optional) Timeout in milliseconds, defaults to 10000. - * - * @todo Replace this method with general solution for random click() test - * failures in https://www.drupal.org/node/3032275. - */ - protected function clickElementWhenClickable(NodeElement $element, $timeout = 10000) { - $page = $this->getSession()->getPage(); - - $result = $page->waitFor($timeout / 1000, function () use ($element) { - try { - $element->click(); - return TRUE; - } - catch (UnknownError $exception) { - if (strstr($exception->getMessage(), 'not clickable') === FALSE) { - // Rethrow any unexpected UnknownError exceptions. - throw $exception; - } - return NULL; - } - }); - $this->assertTrue($result); - } - } diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderDisableInteractionsTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderDisableInteractionsTest.php index 083b9682a3dc..e83099c1dbc9 100644 --- a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderDisableInteractionsTest.php +++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderDisableInteractionsTest.php @@ -6,6 +6,7 @@ use Drupal\block_content\Entity\BlockContent; use Drupal\block_content\Entity\BlockContentType; use Drupal\Component\Render\FormattableMarkup; +use Drupal\FunctionalJavascriptTests\JSWebAssert; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; use Drupal\Tests\contextual\FunctionalJavascript\ContextualLinkClickTrait; @@ -183,8 +184,7 @@ protected function assertElementUnclickable(NodeElement $element): void { $this->fail(new FormattableMarkup("@tag_name was clickable when it shouldn't have been", ['@tag_name' => $tag_name])); } catch (\Exception $e) { - // cspell:ignore interactable - $this->assertMatchesRegularExpression('/(is not clickable at point|element not interactable)/', $e->getMessage()); + $this->assertTrue(JSWebAssert::isExceptionNotClickable($e)); } } diff --git a/core/modules/system/tests/modules/js_interaction_test/css/js-interaction-test-blocker-element.css b/core/modules/system/tests/modules/js_interaction_test/css/js-interaction-test-blocker-element.css new file mode 100644 index 000000000000..ac0e3e4e3845 --- /dev/null +++ b/core/modules/system/tests/modules/js_interaction_test/css/js-interaction-test-blocker-element.css @@ -0,0 +1,13 @@ +.blocker-element { + /* Position the box over the target. */ + position: relative; + z-index: 1; + top: -30px; + left: -5px; + /* Size the box to cover the target. */ + width: 500px; + height: 40px; + opacity: 0.5; + /* Make the blocker element visible. */ + background-color: black; +} diff --git a/core/modules/system/tests/modules/js_interaction_test/js/js_interaction_test.trigger_link.es6.js b/core/modules/system/tests/modules/js_interaction_test/js/js_interaction_test.trigger_link.es6.js new file mode 100644 index 000000000000..bd47c33c00b6 --- /dev/null +++ b/core/modules/system/tests/modules/js_interaction_test/js/js_interaction_test.trigger_link.es6.js @@ -0,0 +1,38 @@ +/** + * @file + * Testing behavior for JSInteractionTest. + */ + +(({ behaviors }) => { + /** + * @type {Drupal~behavior} + * + * @prop {Drupal~behaviorAttach} attach + * Attaches the click listener on the trigger link. + */ + behaviors.js_interaction_test_trigger_link = { + attach() { + const removeBlockerTrigger = once( + 'remove-blocker-trigger', + '.remove-blocker-trigger', + ).shift(); + removeBlockerTrigger.addEventListener('click', (event) => { + event.preventDefault(); + setTimeout(() => { + document.querySelector('.blocker-element').remove(); + }, 100); + }); + + const enableFieldTrigger = once( + 'enable-field-trigger', + '.enable-field-trigger', + ).shift(); + enableFieldTrigger.addEventListener('click', (event) => { + event.preventDefault(); + setTimeout(() => { + document.querySelector('input[name="target_field"]').disabled = false; + }, 100); + }); + }, + }; +})(Drupal); diff --git a/core/modules/system/tests/modules/js_interaction_test/js/js_interaction_test.trigger_link.js b/core/modules/system/tests/modules/js_interaction_test/js/js_interaction_test.trigger_link.js new file mode 100644 index 000000000000..c6b1618bb300 --- /dev/null +++ b/core/modules/system/tests/modules/js_interaction_test/js/js_interaction_test.trigger_link.js @@ -0,0 +1,28 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (_ref) { + var behaviors = _ref.behaviors; + behaviors.js_interaction_test_trigger_link = { + attach: function attach() { + var removeBlockerTrigger = once('remove-blocker-trigger', '.remove-blocker-trigger').shift(); + removeBlockerTrigger.addEventListener('click', function (event) { + event.preventDefault(); + setTimeout(function () { + document.querySelector('.blocker-element').remove(); + }, 100); + }); + var enableFieldTrigger = once('enable-field-trigger', '.enable-field-trigger').shift(); + enableFieldTrigger.addEventListener('click', function (event) { + event.preventDefault(); + setTimeout(function () { + document.querySelector('input[name="target_field"]').disabled = false; + }, 100); + }); + } + }; +})(Drupal); \ No newline at end of file diff --git a/core/modules/system/tests/modules/js_interaction_test/js_interaction_test.info.yml b/core/modules/system/tests/modules/js_interaction_test/js_interaction_test.info.yml new file mode 100644 index 000000000000..406dee9d6258 --- /dev/null +++ b/core/modules/system/tests/modules/js_interaction_test/js_interaction_test.info.yml @@ -0,0 +1,5 @@ +name: 'JS Interaction Test' +type: module +description: 'Module for testing fault-tolerant interactions in JavaScript tests.' +package: Testing +version: VERSION diff --git a/core/modules/system/tests/modules/js_interaction_test/js_interaction_test.libraries.yml b/core/modules/system/tests/modules/js_interaction_test/js_interaction_test.libraries.yml new file mode 100644 index 000000000000..c6d526a36f50 --- /dev/null +++ b/core/modules/system/tests/modules/js_interaction_test/js_interaction_test.libraries.yml @@ -0,0 +1,10 @@ +js_interaction_test: + version: VERSION + js: + js/js_interaction_test.trigger_link.js: {} + css: + theme: + css/js-interaction-test-blocker-element.css: {} + dependencies: + - core/drupal + - core/once diff --git a/core/modules/system/tests/modules/js_interaction_test/js_interaction_test.routing.yml b/core/modules/system/tests/modules/js_interaction_test/js_interaction_test.routing.yml new file mode 100644 index 000000000000..36f7c119c494 --- /dev/null +++ b/core/modules/system/tests/modules/js_interaction_test/js_interaction_test.routing.yml @@ -0,0 +1,6 @@ +js_interaction_test.js_interaction_test: + path: '/js_interaction_test' + defaults: + _form: '\Drupal\js_interaction_test\Controller\JSInteractionTestForm' + requirements: + _access: 'TRUE' diff --git a/core/modules/system/tests/modules/js_interaction_test/src/Controller/JSInteractionTestForm.php b/core/modules/system/tests/modules/js_interaction_test/src/Controller/JSInteractionTestForm.php new file mode 100644 index 000000000000..1439ec16b4ed --- /dev/null +++ b/core/modules/system/tests/modules/js_interaction_test/src/Controller/JSInteractionTestForm.php @@ -0,0 +1,88 @@ +<?php + +namespace Drupal\js_interaction_test\Controller; + +use Drupal\Core\Form\FormBase; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Url; + +/** + * Controller for testing fault tolerant JavaScript interactions. + */ +class JSInteractionTestForm extends FormBase { + + /** + * @inheritDoc + */ + public function getFormId() { + return __CLASS__; + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + // No-op. + } + + /** + * Creates the test form. + * + * The form provides: + * - A link that is obstructed (blocked) by another element. + * - A link that, when clicked, removes the blocking element after some time. + * - A field that is disabled. + * - A link that, when clicked, enables the field after some time. + * + * @param array $form + * An associative array containing the structure of the form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The current state of the form. + * + * @return array + * The form structure. + */ + public function buildForm(array $form, FormStateInterface $form_state) { + return [ + 'target_link' => [ + '#type' => 'link', + '#url' => Url::fromRoute('<current>'), + '#title' => $this->t('Target link'), + ], + 'blocker_element' => [ + '#type' => 'html_tag', + '#tag' => 'div', + '#attributes' => [ + 'class' => ['blocker-element'], + ], + ], + 'remove_blocker_trigger' => [ + '#type' => 'link', + '#url' => Url::fromRoute('<current>'), + '#title' => $this->t('Remove Blocker Trigger'), + '#attributes' => [ + 'class' => ['remove-blocker-trigger'], + ], + ], + 'target_field' => [ + '#type' => 'textfield', + '#maxlength' => 20, + '#disabled' => TRUE, + ], + 'enable_field_trigger' => [ + '#type' => 'link', + '#url' => Url::fromRoute('<current>'), + '#title' => $this->t('Enable Field Trigger'), + '#attributes' => [ + 'class' => ['enable-field-trigger'], + ], + ], + '#attached' => [ + 'library' => [ + 'js_interaction_test/js_interaction_test', + ], + ], + ]; + } + +} diff --git a/core/tests/Drupal/FunctionalJavascriptTests/DrupalSelenium2Driver.php b/core/tests/Drupal/FunctionalJavascriptTests/DrupalSelenium2Driver.php index 76d1416056a9..a8110451d82f 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/DrupalSelenium2Driver.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/DrupalSelenium2Driver.php @@ -4,6 +4,7 @@ use Behat\Mink\Driver\Selenium2Driver; use Behat\Mink\Exception\DriverException; +use WebDriver\Exception; use WebDriver\Exception\UnknownError; use WebDriver\ServiceFactory; @@ -134,4 +135,83 @@ public function uploadFileAndGetRemoteFilePath($path) { return $remotePath; } + /** + * {@inheritdoc} + */ + public function click($xpath) { + /** @var \Exception $not_clickable_exception */ + $not_clickable_exception = NULL; + $result = $this->waitFor(10, function () use (&$not_clickable_exception, $xpath) { + try { + parent::click($xpath); + return TRUE; + } + catch (Exception $exception) { + if (!JSWebAssert::isExceptionNotClickable($exception)) { + // Rethrow any unexpected exceptions. + throw $exception; + } + $not_clickable_exception = $exception; + return NULL; + } + }); + if ($result !== TRUE) { + throw $not_clickable_exception; + } + } + + /** + * {@inheritdoc} + */ + public function setValue($xpath, $value) { + /** @var \Exception $not_clickable_exception */ + $not_clickable_exception = NULL; + $result = $this->waitFor(10, function () use (&$not_clickable_exception, $xpath, $value) { + try { + parent::setValue($xpath, $value); + return TRUE; + } + catch (Exception $exception) { + if (!JSWebAssert::isExceptionNotClickable($exception) && !str_contains($exception->getMessage(), 'invalid element state')) { + // Rethrow any unexpected exceptions. + throw $exception; + } + $not_clickable_exception = $exception; + return NULL; + } + }); + if ($result !== TRUE) { + throw $not_clickable_exception; + } + } + + /** + * Waits for a callback to return a truthy result and returns it. + * + * @param int|float $timeout + * Maximal allowed waiting time in seconds. + * @param callable $callback + * Callback, which result is both used as waiting condition and returned. + * Will receive reference to `this driver` as first argument. + * + * @return mixed + * The result of the callback. + */ + private function waitFor($timeout, callable $callback) { + $start = microtime(TRUE); + $end = $start + $timeout; + + do { + $result = call_user_func($callback, $this); + + if ($result) { + break; + } + + usleep(10000); + } while (microtime(TRUE) < $end); + + return $result; + } + } diff --git a/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php b/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php index 3cbb7f1ae39b..52b48aaf0b00 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/JSWebAssert.php @@ -8,8 +8,11 @@ use Behat\Mink\Exception\ElementNotFoundException; use Behat\Mink\Exception\UnsupportedDriverActionException; use Drupal\Tests\WebAssert; +use WebDriver\Exception; use WebDriver\Exception\CurlExec; +// cspell:ignore interactable + /** * Defines a class with methods for asserting presence of elements during tests. */ @@ -506,4 +509,18 @@ public function assertNoElementAfterWait($selector_type, $selector, $timeout = 1 throw new ElementHtmlException($message, $this->session->getDriver(), $node); } + /** + * Determines if an exception is due to an element not being clickable. + * + * @param \WebDriver\Exception $exception + * The exception to check. + * + * @return bool + * TRUE if the exception is due to an element not being clickable, + * interactable or visible. + */ + public static function isExceptionNotClickable(Exception $exception): bool { + return (bool) preg_match('/not (clickable|interactable|visible)/', $exception->getMessage()); + } + } diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSInteractionTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSInteractionTest.php new file mode 100644 index 000000000000..80d2286a6df0 --- /dev/null +++ b/core/tests/Drupal/FunctionalJavascriptTests/Tests/JSInteractionTest.php @@ -0,0 +1,60 @@ +<?php + +namespace Drupal\FunctionalJavascriptTests\Tests; + +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; +use WebDriver\Exception; + +/** + * Tests fault tolerant interactions. + * + * @group javascript + */ +class JSInteractionTest extends WebDriverTestBase { + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'js_interaction_test', + ]; + + /** + * Assert an exception is thrown when the blocker element is never removed. + */ + public function testNotClickable() { + $this->expectException(Exception::class); + $this->drupalGet('/js_interaction_test'); + $this->assertSession()->elementExists('named', ['link', 'Target link'])->click(); + } + + /** + * Assert an exception is thrown when the field is never enabled. + */ + public function testFieldValueNotSettable() { + $this->expectException(Exception::class); + $this->drupalGet('/js_interaction_test'); + $this->assertSession()->fieldExists('target_field')->setValue('Test'); + } + + /** + * Assert no exception is thrown when elements become interactive. + */ + public function testElementsInteraction() { + $this->drupalGet('/js_interaction_test'); + // Remove blocking element after 100 ms. + $this->clickLink('Remove Blocker Trigger'); + $this->clickLink('Target link'); + + // Enable field after 100 ms. + $this->clickLink('Enable Field Trigger'); + $this->assertSession()->fieldExists('target_field')->setValue('Test'); + $this->assertSession()->fieldValueEquals('target_field', 'Test'); + } + +} -- GitLab From 2ed1f629f61cba5df497436e099687f26860c9b5 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Wed, 24 Nov 2021 12:27:30 +0000 Subject: [PATCH 61/69] Issue #3251000 by alexpott, andypost: Update dependencies for 9.1.x/9.2.x/9.3.x/9.4.x (cherry picked from commit 1b9983e8d4c2504a8d4265b19edeb264801053cf) --- composer.lock | 270 +++++++++--------- .../Metapackage/CoreRecommended/composer.json | 38 +-- .../PinnedDevDependencies/composer.json | 4 +- .../Template/ComposerProjectTemplatesTest.php | 2 +- 4 files changed, 161 insertions(+), 153 deletions(-) diff --git a/composer.lock b/composer.lock index 32fdc160be76..93c23e965dc1 100644 --- a/composer.lock +++ b/composer.lock @@ -2207,16 +2207,16 @@ }, { "name": "symfony/console", - "version": "v4.4.33", + "version": "v4.4.34", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8dbd23ef7a8884051482183ddee8d9061b5feed0" + "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8dbd23ef7a8884051482183ddee8d9061b5feed0", - "reference": "8dbd23ef7a8884051482183ddee8d9061b5feed0", + "url": "https://api.github.com/repos/symfony/console/zipball/329b3a75cc6b16d435ba1b1a41df54a53382a3f0", + "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0", "shasum": "" }, "require": { @@ -2277,7 +2277,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.33" + "source": "https://github.com/symfony/console/tree/v4.4.34" }, "funding": [ { @@ -2293,7 +2293,7 @@ "type": "tidelift" } ], - "time": "2021-10-25T16:36:08+00:00" + "time": "2021-11-04T12:23:33+00:00" }, { "name": "symfony/debug", @@ -2365,16 +2365,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v4.4.33", + "version": "v4.4.34", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "ad364e599a4059db29c0aa424537e6ba668f54e6" + "reference": "117d7f132ed7efbd535ec947709d49bec1b9d24b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ad364e599a4059db29c0aa424537e6ba668f54e6", - "reference": "ad364e599a4059db29c0aa424537e6ba668f54e6", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/117d7f132ed7efbd535ec947709d49bec1b9d24b", + "reference": "117d7f132ed7efbd535ec947709d49bec1b9d24b", "shasum": "" }, "require": { @@ -2431,7 +2431,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v4.4.33" + "source": "https://github.com/symfony/dependency-injection/tree/v4.4.34" }, "funding": [ { @@ -2447,20 +2447,20 @@ "type": "tidelift" } ], - "time": "2021-10-17T07:04:24+00:00" + "time": "2021-11-15T14:42:25+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", "shasum": "" }, "require": { @@ -2469,7 +2469,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -2498,7 +2498,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" }, "funding": [ { @@ -2514,20 +2514,20 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2021-07-12T14:48:14+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.30", + "version": "v4.4.34", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "51f98f7aa99f00f3b1da6bafe934e67ae6ba6dc5" + "reference": "17785c374645def1e884d8ec49976c156c61db4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/51f98f7aa99f00f3b1da6bafe934e67ae6ba6dc5", - "reference": "51f98f7aa99f00f3b1da6bafe934e67ae6ba6dc5", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/17785c374645def1e884d8ec49976c156c61db4d", + "reference": "17785c374645def1e884d8ec49976c156c61db4d", "shasum": "" }, "require": { @@ -2566,7 +2566,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.30" + "source": "https://github.com/symfony/error-handler/tree/v4.4.34" }, "funding": [ { @@ -2582,20 +2582,20 @@ "type": "tidelift" } ], - "time": "2021-08-27T17:42:48+00:00" + "time": "2021-11-12T14:57:39+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.30", + "version": "v4.4.34", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "2fe81680070043c4c80e7cedceb797e34f377bac" + "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2fe81680070043c4c80e7cedceb797e34f377bac", - "reference": "2fe81680070043c4c80e7cedceb797e34f377bac", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", + "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", "shasum": "" }, "require": { @@ -2650,7 +2650,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.30" + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.34" }, "funding": [ { @@ -2666,20 +2666,20 @@ "type": "tidelift" } ], - "time": "2021-08-04T20:31:23+00:00" + "time": "2021-11-15T14:42:25+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "version": "v1.1.11", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", + "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", "shasum": "" }, "require": { @@ -2692,7 +2692,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "1.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -2729,7 +2729,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.11" }, "funding": [ { @@ -2745,20 +2745,20 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:19:58+00:00" + "time": "2021-03-23T15:25:38+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4" + "reference": "ec82e57b5b714dbb69300d348bd840b345e24166" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ec82e57b5b714dbb69300d348bd840b345e24166", + "reference": "ec82e57b5b714dbb69300d348bd840b345e24166", "shasum": "" }, "require": { @@ -2770,7 +2770,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -2807,7 +2807,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.0" }, "funding": [ { @@ -2823,20 +2823,20 @@ "type": "tidelift" } ], - "time": "2021-04-11T23:07:08+00:00" + "time": "2021-11-03T09:24:47+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.33", + "version": "v4.4.34", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b9a91102f548e0111f4996e8c622fb1d1d479850" + "reference": "f4cbbb6fc428588ce8373802461e7fe84e6809ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b9a91102f548e0111f4996e8c622fb1d1d479850", - "reference": "b9a91102f548e0111f4996e8c622fb1d1d479850", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4cbbb6fc428588ce8373802461e7fe84e6809ab", + "reference": "f4cbbb6fc428588ce8373802461e7fe84e6809ab", "shasum": "" }, "require": { @@ -2875,7 +2875,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.33" + "source": "https://github.com/symfony/http-foundation/tree/v4.4.34" }, "funding": [ { @@ -2891,20 +2891,20 @@ "type": "tidelift" } ], - "time": "2021-10-07T15:31:35+00:00" + "time": "2021-11-04T12:23:33+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.33", + "version": "v4.4.35", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "6f1fcca1154f782796549f4f4e5090bae9525c0e" + "reference": "fb793f1381c34b79a43596a532a6a49bd729c9db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6f1fcca1154f782796549f4f4e5090bae9525c0e", - "reference": "6f1fcca1154f782796549f4f4e5090bae9525c0e", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fb793f1381c34b79a43596a532a6a49bd729c9db", + "reference": "fb793f1381c34b79a43596a532a6a49bd729c9db", "shasum": "" }, "require": { @@ -2979,7 +2979,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.33" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.35" }, "funding": [ { @@ -2995,25 +2995,25 @@ "type": "tidelift" } ], - "time": "2021-10-29T08:14:01+00:00" + "time": "2021-11-24T08:40:10+00:00" }, { "name": "symfony/mime", - "version": "v5.4.0-BETA1", + "version": "v5.4.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "d75d8cd9aa5ad257ed1b958f042c7a2d7cf505d5" + "reference": "d4365000217b67c01acff407573906ff91bcfb34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d75d8cd9aa5ad257ed1b958f042c7a2d7cf505d5", - "reference": "d75d8cd9aa5ad257ed1b958f042c7a2d7cf505d5", + "url": "https://api.github.com/repos/symfony/mime/zipball/d4365000217b67c01acff407573906ff91bcfb34", + "reference": "d4365000217b67c01acff407573906ff91bcfb34", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16" @@ -3062,7 +3062,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.0-BETA1" + "source": "https://github.com/symfony/mime/tree/v5.4.0-RC1" }, "funding": [ { @@ -3078,7 +3078,7 @@ "type": "tidelift" } ], - "time": "2021-11-04T16:48:04+00:00" + "time": "2021-11-23T10:19:22+00:00" }, { "name": "symfony/polyfill-ctype", @@ -3575,16 +3575,16 @@ }, { "name": "symfony/process", - "version": "v4.4.30", + "version": "v4.4.35", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "13d3161ef63a8ec21eeccaaf9a4d7f784a87a97d" + "reference": "c2098705326addae6e6742151dfade47ac71da1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/13d3161ef63a8ec21eeccaaf9a4d7f784a87a97d", - "reference": "13d3161ef63a8ec21eeccaaf9a4d7f784a87a97d", + "url": "https://api.github.com/repos/symfony/process/zipball/c2098705326addae6e6742151dfade47ac71da1b", + "reference": "c2098705326addae6e6742151dfade47ac71da1b", "shasum": "" }, "require": { @@ -3617,7 +3617,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.30" + "source": "https://github.com/symfony/process/tree/v4.4.35" }, "funding": [ { @@ -3633,7 +3633,7 @@ "type": "tidelift" } ], - "time": "2021-08-04T20:31:23+00:00" + "time": "2021-11-22T22:36:24+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -3725,16 +3725,16 @@ }, { "name": "symfony/routing", - "version": "v4.4.30", + "version": "v4.4.34", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "9ddf033927ad9f30ba2bfd167a7b342cafa13e8e" + "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/9ddf033927ad9f30ba2bfd167a7b342cafa13e8e", - "reference": "9ddf033927ad9f30ba2bfd167a7b342cafa13e8e", + "url": "https://api.github.com/repos/symfony/routing/zipball/fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", + "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", "shasum": "" }, "require": { @@ -3794,7 +3794,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.30" + "source": "https://github.com/symfony/routing/tree/v4.4.34" }, "funding": [ { @@ -3810,20 +3810,20 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:41:01+00:00" + "time": "2021-11-04T12:23:33+00:00" }, { "name": "symfony/serializer", - "version": "v4.4.33", + "version": "v4.4.35", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "5cb0dc3028e0f32888fed2d467b7762824fef843" + "reference": "1b2ae02cb1b923987947e013688c51954a80b751" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/5cb0dc3028e0f32888fed2d467b7762824fef843", - "reference": "5cb0dc3028e0f32888fed2d467b7762824fef843", + "url": "https://api.github.com/repos/symfony/serializer/zipball/1b2ae02cb1b923987947e013688c51954a80b751", + "reference": "1b2ae02cb1b923987947e013688c51954a80b751", "shasum": "" }, "require": { @@ -3888,7 +3888,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v4.4.33" + "source": "https://github.com/symfony/serializer/tree/v4.4.35" }, "funding": [ { @@ -3904,25 +3904,29 @@ "type": "tidelift" } ], - "time": "2021-09-27T18:46:41+00:00" + "time": "2021-11-24T08:12:42+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/container": "^1.1" + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -3930,7 +3934,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -3967,7 +3971,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" }, "funding": [ { @@ -3983,20 +3987,20 @@ "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2021-11-04T16:48:04+00:00" }, { "name": "symfony/translation", - "version": "v4.4.32", + "version": "v4.4.34", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "db0ba1e85280d8ff11e38d53c70f8814d4d740f5" + "reference": "26d330720627b234803595ecfc0191eeabc65190" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/db0ba1e85280d8ff11e38d53c70f8814d4d740f5", - "reference": "db0ba1e85280d8ff11e38d53c70f8814d4d740f5", + "url": "https://api.github.com/repos/symfony/translation/zipball/26d330720627b234803595ecfc0191eeabc65190", + "reference": "26d330720627b234803595ecfc0191eeabc65190", "shasum": "" }, "require": { @@ -4056,7 +4060,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.32" + "source": "https://github.com/symfony/translation/tree/v4.4.34" }, "funding": [ { @@ -4072,20 +4076,20 @@ "type": "tidelift" } ], - "time": "2021-08-26T05:57:13+00:00" + "time": "2021-11-04T12:23:33+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95" + "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", + "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", "shasum": "" }, "require": { @@ -4097,7 +4101,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4134,7 +4138,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0" }, "funding": [ { @@ -4150,20 +4154,20 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2021-08-17T14:20:01+00:00" }, { "name": "symfony/validator", - "version": "v4.4.33", + "version": "v4.4.35", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "ff0397aa280de38a631660f5aa8067cfbc519e11" + "reference": "629f420d8350634fd8ed686d4472c1f10044b265" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/ff0397aa280de38a631660f5aa8067cfbc519e11", - "reference": "ff0397aa280de38a631660f5aa8067cfbc519e11", + "url": "https://api.github.com/repos/symfony/validator/zipball/629f420d8350634fd8ed686d4472c1f10044b265", + "reference": "629f420d8350634fd8ed686d4472c1f10044b265", "shasum": "" }, "require": { @@ -4240,7 +4244,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.33" + "source": "https://github.com/symfony/validator/tree/v4.4.35" }, "funding": [ { @@ -4256,11 +4260,11 @@ "type": "tidelift" } ], - "time": "2021-10-28T08:11:47+00:00" + "time": "2021-11-22T21:43:32+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.0-BETA2", + "version": "v5.4.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", @@ -4329,7 +4333,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.0-BETA2" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.0-RC1" }, "funding": [ { @@ -4349,16 +4353,16 @@ }, { "name": "symfony/yaml", - "version": "v4.4.29", + "version": "v4.4.34", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a" + "reference": "2c309e258adeb9970229042be39b360d34986fad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3abcc4db06d4e776825eaa3ed8ad924d5bc7432a", - "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2c309e258adeb9970229042be39b360d34986fad", + "reference": "2c309e258adeb9970229042be39b360d34986fad", "shasum": "" }, "require": { @@ -4400,7 +4404,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.29" + "source": "https://github.com/symfony/yaml/tree/v4.4.34" }, "funding": [ { @@ -4416,7 +4420,7 @@ "type": "tidelift" } ], - "time": "2021-07-27T16:19:30+00:00" + "time": "2021-11-18T18:49:23+00:00" }, { "name": "twig/twig", @@ -4930,23 +4934,24 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.5", + "version": "1.5.6", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "de30328a7af8680efdc03e396aad24befd513200" + "reference": "a30d487169d799745ca7280bc90fdfa693536901" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/de30328a7af8680efdc03e396aad24befd513200", - "reference": "de30328a7af8680efdc03e396aad24befd513200", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a30d487169d799745ca7280bc90fdfa693536901", + "reference": "a30d487169d799745ca7280bc90fdfa693536901", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { @@ -4989,7 +4994,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.5" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.6" }, "funding": [ { @@ -5005,7 +5010,7 @@ "type": "tidelift" } ], - "time": "2020-12-03T16:04:16+00:00" + "time": "2021-11-18T10:14:14+00:00" }, { "name": "composer/xdebug-handler", @@ -5521,6 +5526,9 @@ "require": { "php": "^7.1 || ^8.0" }, + "replace": { + "myclabs/deep-copy": "self.version" + }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", @@ -7708,21 +7716,21 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v5.4.0-BETA2", + "version": "v5.4.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "0f925f6512356879d79954a5442dca83658ae279" + "reference": "abc162ab677ce0e6a2763c4016a2502077f1477c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/0f925f6512356879d79954a5442dca83658ae279", - "reference": "0f925f6512356879d79954a5442dca83658ae279", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/abc162ab677ce0e6a2763c4016a2502077f1477c", + "reference": "abc162ab677ce0e6a2763c4016a2502077f1477c", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/deprecation-contracts": "^2.1" + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "phpunit/phpunit": "<7.5|9.1.2" @@ -7771,7 +7779,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.0-BETA2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.0-RC1" }, "funding": [ { @@ -7787,7 +7795,7 @@ "type": "tidelift" } ], - "time": "2021-11-12T11:42:37+00:00" + "time": "2021-11-23T10:19:22+00:00" }, { "name": "theseer/tokenizer", diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 743923090dd0..b7392b02dad9 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -34,33 +34,33 @@ "ralouphie/getallheaders": "3.0.3", "stack/builder": "v1.0.6", "symfony-cmf/routing": "2.3.4", - "symfony/console": "v4.4.33", + "symfony/console": "v4.4.34", "symfony/debug": "v4.4.31", - "symfony/dependency-injection": "v4.4.33", - "symfony/deprecation-contracts": "v2.4.0", - "symfony/error-handler": "v4.4.30", - "symfony/event-dispatcher": "v4.4.30", - "symfony/event-dispatcher-contracts": "v1.1.9", - "symfony/http-client-contracts": "v2.4.0", - "symfony/http-foundation": "v4.4.33", - "symfony/http-kernel": "v4.4.33", - "symfony/mime": "v5.4.0-BETA1", + "symfony/dependency-injection": "v4.4.34", + "symfony/deprecation-contracts": "v2.5.0", + "symfony/error-handler": "v4.4.34", + "symfony/event-dispatcher": "v4.4.34", + "symfony/event-dispatcher-contracts": "v1.1.11", + "symfony/http-client-contracts": "v2.5.0", + "symfony/http-foundation": "v4.4.34", + "symfony/http-kernel": "v4.4.35", + "symfony/mime": "v5.4.0-RC1", "symfony/polyfill-ctype": "v1.23.0", "symfony/polyfill-iconv": "v1.23.0", "symfony/polyfill-intl-idn": "v1.23.0", "symfony/polyfill-intl-normalizer": "v1.23.0", "symfony/polyfill-mbstring": "v1.23.1", "symfony/polyfill-php80": "v1.23.1", - "symfony/process": "v4.4.30", + "symfony/process": "v4.4.35", "symfony/psr-http-message-bridge": "v2.1.2", - "symfony/routing": "v4.4.30", - "symfony/serializer": "v4.4.33", - "symfony/service-contracts": "v2.4.0", - "symfony/translation": "v4.4.32", - "symfony/translation-contracts": "v2.4.0", - "symfony/validator": "v4.4.33", - "symfony/var-dumper": "v5.4.0-BETA2", - "symfony/yaml": "v4.4.29", + "symfony/routing": "v4.4.34", + "symfony/serializer": "v4.4.35", + "symfony/service-contracts": "v2.5.0", + "symfony/translation": "v4.4.34", + "symfony/translation-contracts": "v2.5.0", + "symfony/validator": "v4.4.35", + "symfony/var-dumper": "v5.4.0-RC1", + "symfony/yaml": "v4.4.34", "twig/twig": "v2.14.7", "typo3/phar-stream-wrapper": "v3.1.7" } diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index a3e1ab67fcfe..56ac0a0800f8 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -13,7 +13,7 @@ "composer/ca-bundle": "1.3.1", "composer/composer": "2.1.12", "composer/metadata-minifier": "1.0.0", - "composer/spdx-licenses": "1.5.5", + "composer/spdx-licenses": "1.5.6", "composer/xdebug-handler": "2.0.2", "doctrine/instantiator": "1.4.0", "drupal/coder": "8.3.13", @@ -58,7 +58,7 @@ "symfony/filesystem": "v4.4.27", "symfony/finder": "v4.4.30", "symfony/lock": "v4.4.33", - "symfony/phpunit-bridge": "v5.4.0-BETA2", + "symfony/phpunit-bridge": "v5.4.0-RC1", "theseer/tokenizer": "1.2.1", "webmozart/assert": "1.10.0" } diff --git a/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php b/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php index a80a9482bb8d..0b5fd13d1ae4 100644 --- a/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php +++ b/core/tests/Drupal/BuildTests/Composer/Template/ComposerProjectTemplatesTest.php @@ -32,7 +32,7 @@ class ComposerProjectTemplatesTest extends BuildTestBase { * * @see https://getcomposer.org/doc/04-schema.md#minimum-stability */ - protected const MINIMUM_STABILITY = 'beta'; + protected const MINIMUM_STABILITY = 'RC'; /** * The order of stability strings from least stable to most stable. -- GitLab From 43e9d14a6b5a159d1653b24eb4627f9fdeb016e6 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Wed, 24 Nov 2021 14:08:17 +0000 Subject: [PATCH 62/69] Drupal 9.3.0-beta3 --- composer.lock | 11 ++++------- composer/Metapackage/CoreRecommended/composer.json | 2 +- .../Metapackage/PinnedDevDependencies/composer.json | 2 +- composer/Template/LegacyProject/composer.json | 2 +- composer/Template/RecommendedProject/composer.json | 2 +- core/lib/Drupal.php | 2 +- 6 files changed, 9 insertions(+), 12 deletions(-) diff --git a/composer.lock b/composer.lock index 93c23e965dc1..b0032b638939 100644 --- a/composer.lock +++ b/composer.lock @@ -531,7 +531,7 @@ }, { "name": "drupal/core", - "version": "9.3.x-dev", + "version": "9.3.0-beta3", "dist": { "type": "path", "url": "core", @@ -788,7 +788,7 @@ }, { "name": "drupal/core-project-message", - "version": "9.3.x-dev", + "version": "9.3.0-beta3", "dist": { "type": "path", "url": "composer/Plugin/ProjectMessage", @@ -821,7 +821,7 @@ }, { "name": "drupal/core-vendor-hardening", - "version": "9.3.x-dev", + "version": "9.3.0-beta3", "dist": { "type": "path", "url": "composer/Plugin/VendorHardening", @@ -7909,9 +7909,6 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { - "drupal/core": 20, - "drupal/core-project-message": 20, - "drupal/core-vendor-hardening": 20, "symfony/phpunit-bridge": 10, "symfony/var-dumper": 10 }, @@ -7922,5 +7919,5 @@ "platform-overrides": { "php": "7.3.0" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.0.0" } diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index b7392b02dad9..f46d9ade2f9a 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-strict": "*" }, "require": { - "drupal/core": "9.3.x-dev", + "drupal/core": "9.3.0-beta3", "asm89/stack-cors": "1.3.0", "composer/semver": "3.2.6", "doctrine/annotations": "1.13.2", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index 56ac0a0800f8..d888a325cf51 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-require-dev": "*" }, "require": { - "drupal/core": "9.3.x-dev", + "drupal/core": "9.3.0-beta3", "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.3.1", diff --git a/composer/Template/LegacyProject/composer.json b/composer/Template/LegacyProject/composer.json index 1b1a2af337ab..afc7c7f0dcf1 100644 --- a/composer/Template/LegacyProject/composer.json +++ b/composer/Template/LegacyProject/composer.json @@ -27,7 +27,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "beta", "prefer-stable": true, "config": { "sort-packages": true diff --git a/composer/Template/RecommendedProject/composer.json b/composer/Template/RecommendedProject/composer.json index 99e9f55f2394..8b2984364d5f 100644 --- a/composer/Template/RecommendedProject/composer.json +++ b/composer/Template/RecommendedProject/composer.json @@ -26,7 +26,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "beta", "prefer-stable": true, "config": { "sort-packages": true diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php index 4ffa6c6f0b0b..c17322d28f1d 100644 --- a/core/lib/Drupal.php +++ b/core/lib/Drupal.php @@ -75,7 +75,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '9.3.0-dev'; + const VERSION = '9.3.0-beta3'; /** * Core API compatibility. -- GitLab From 6c607c1d3c728fac9be19685b270f46cef713e52 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Wed, 24 Nov 2021 14:08:18 +0000 Subject: [PATCH 63/69] Back to dev. --- composer.lock | 11 +++++++---- composer/Metapackage/CoreRecommended/composer.json | 2 +- .../Metapackage/PinnedDevDependencies/composer.json | 2 +- composer/Template/LegacyProject/composer.json | 2 +- composer/Template/RecommendedProject/composer.json | 2 +- core/lib/Drupal.php | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/composer.lock b/composer.lock index b0032b638939..93c23e965dc1 100644 --- a/composer.lock +++ b/composer.lock @@ -531,7 +531,7 @@ }, { "name": "drupal/core", - "version": "9.3.0-beta3", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "core", @@ -788,7 +788,7 @@ }, { "name": "drupal/core-project-message", - "version": "9.3.0-beta3", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "composer/Plugin/ProjectMessage", @@ -821,7 +821,7 @@ }, { "name": "drupal/core-vendor-hardening", - "version": "9.3.0-beta3", + "version": "9.3.x-dev", "dist": { "type": "path", "url": "composer/Plugin/VendorHardening", @@ -7909,6 +7909,9 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { + "drupal/core": 20, + "drupal/core-project-message": 20, + "drupal/core-vendor-hardening": 20, "symfony/phpunit-bridge": 10, "symfony/var-dumper": 10 }, @@ -7919,5 +7922,5 @@ "platform-overrides": { "php": "7.3.0" }, - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index f46d9ade2f9a..b7392b02dad9 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-strict": "*" }, "require": { - "drupal/core": "9.3.0-beta3", + "drupal/core": "9.3.x-dev", "asm89/stack-cors": "1.3.0", "composer/semver": "3.2.6", "doctrine/annotations": "1.13.2", diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index d888a325cf51..56ac0a0800f8 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -7,7 +7,7 @@ "webflo/drupal-core-require-dev": "*" }, "require": { - "drupal/core": "9.3.0-beta3", + "drupal/core": "9.3.x-dev", "behat/mink": "v1.9.0", "behat/mink-selenium2-driver": "v1.5.0", "composer/ca-bundle": "1.3.1", diff --git a/composer/Template/LegacyProject/composer.json b/composer/Template/LegacyProject/composer.json index afc7c7f0dcf1..1b1a2af337ab 100644 --- a/composer/Template/LegacyProject/composer.json +++ b/composer/Template/LegacyProject/composer.json @@ -27,7 +27,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "beta", + "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true diff --git a/composer/Template/RecommendedProject/composer.json b/composer/Template/RecommendedProject/composer.json index 8b2984364d5f..99e9f55f2394 100644 --- a/composer/Template/RecommendedProject/composer.json +++ b/composer/Template/RecommendedProject/composer.json @@ -26,7 +26,7 @@ "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "beta", + "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php index c17322d28f1d..4ffa6c6f0b0b 100644 --- a/core/lib/Drupal.php +++ b/core/lib/Drupal.php @@ -75,7 +75,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '9.3.0-beta3'; + const VERSION = '9.3.0-dev'; /** * Core API compatibility. -- GitLab From 1c12e9b30606e31adc3316b0292656c9eab9faf2 Mon Sep 17 00:00:00 2001 From: Stefanos Petrakis <stefanos.petrakis@gmail.com> Date: Wed, 24 Nov 2021 18:07:56 +0200 Subject: [PATCH 64/69] 3075230-15.patch https://www.drupal.org/project/drupal/issues/3075230#comment-13975596 --- .../LayoutBuilderContentModerationIntegrationTest.php | 1 + core/modules/menu_ui/menu_ui.module | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php b/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php index 70a5b2a33c2f..5af6de2041a5 100644 --- a/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php +++ b/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php @@ -100,6 +100,7 @@ public function testLayoutModeration() { 'title' => 'bar', 'menu_name' => 'main', 'description' => 'view bar', + 'link_enabled' => TRUE, 'parent' => '', ]); diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module index ad49bf10f701..7cc3c3d389e8 100644 --- a/core/modules/menu_ui/menu_ui.module +++ b/core/modules/menu_ui/menu_ui.module @@ -108,8 +108,8 @@ function _menu_ui_node_save(NodeInterface $node, array $values) { 'link' => ['uri' => 'entity:node/' . $node->id()], 'langcode' => $node->language()->getId(), ]); - $entity->enabled->value = 1; } + $entity->enabled->value = $values['link_enabled'] ?? 1; $entity->title->value = trim($values['title']); $entity->description->value = trim($values['description']); $entity->menu_name->value = $values['menu_name']; @@ -174,6 +174,7 @@ function menu_ui_get_menu_link_defaults(NodeInterface $node) { 'menu_name' => $menu_link->getMenuName(), 'parent' => $menu_link->getParentId(), 'weight' => $menu_link->getWeight(), + 'enabled' => $menu_link->isEnabled(), ]; } } @@ -296,6 +297,13 @@ function menu_ui_form_node_form_alter(&$form, FormStateInterface $form_state) { '#description' => t('Menu links with lower weights are displayed before links with higher weights.'), ]; + $form['menu']['link']['link_enabled'] = [ + '#type' => 'checkbox', + '#title' => t('Enabled'), + '#description' => t('A flag for whether the link should be enabled in menus or hidden.'), + '#default_value' => $defaults['enabled'] ?? 1, + ]; + foreach (array_keys($form['actions']) as $action) { if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') { $form['actions'][$action]['#submit'][] = 'menu_ui_form_node_form_submit'; -- GitLab From 8b767b2ca09af72f05759e3beae5efcf83055789 Mon Sep 17 00:00:00 2001 From: Stefanos Petrakis <stefanos.petrakis@gmail.com> Date: Wed, 24 Nov 2021 18:09:42 +0200 Subject: [PATCH 65/69] 3075230-17.patch https://www.drupal.org/project/drupal/issues/3075230#comment-14133737 --- core/modules/menu_ui/menu_ui.module | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module index 7cc3c3d389e8..505162420036 100644 --- a/core/modules/menu_ui/menu_ui.module +++ b/core/modules/menu_ui/menu_ui.module @@ -195,6 +195,7 @@ function menu_ui_get_menu_link_defaults(NodeInterface $node) { 'menu_name' => $menu_name, 'parent' => '', 'weight' => 0, + 'enabled' => $node_type->getThirdPartySetting('menu_ui', 'link', 0) ]; } return $defaults; @@ -397,6 +398,11 @@ function menu_ui_form_node_type_form_alter(&$form, FormStateInterface $form_stat ]; $options_cacheability->applyTo($form['menu']['menu_parent']); + $form['menu']['link_enabled'] = [ + '#type' => 'checkbox', + '#title' => t('Enable menu link (default)'), + '#default_value' => $type->getThirdPartySetting('menu_ui', 'link_enabled', 1), + ]; $form['#validate'][] = 'menu_ui_form_node_type_form_validate'; $form['#entity_builders'][] = 'menu_ui_form_node_type_form_builder'; } @@ -429,6 +435,7 @@ function menu_ui_form_node_type_form_validate(&$form, FormStateInterface $form_s function menu_ui_form_node_type_form_builder($entity_type, NodeTypeInterface $type, &$form, FormStateInterface $form_state) { $type->setThirdPartySetting('menu_ui', 'available_menus', array_values(array_filter($form_state->getValue('menu_options')))); $type->setThirdPartySetting('menu_ui', 'parent', $form_state->getValue('menu_parent')); + $type->setThirdPartySetting('menu_ui', 'link_enabled', $form_state->getValue('link_enabled')); } /** -- GitLab From 092730300e09e4e29982d0f1f51ccf897a43f2f0 Mon Sep 17 00:00:00 2001 From: Stefanos Petrakis <stefanos.petrakis@gmail.com> Date: Wed, 24 Nov 2021 18:39:52 +0200 Subject: [PATCH 66/69] 3075230-29.patch https://www.drupal.org/project/drupal/issues/3075230#comment-14196823 --- ...uilderContentModerationIntegrationTest.php | 1 - .../menu_ui/config/schema/menu_ui.schema.yml | 3 + core/modules/menu_ui/menu_ui.admin.es6.js | 8 ++- core/modules/menu_ui/menu_ui.admin.js | 10 +++- core/modules/menu_ui/menu_ui.module | 2 +- .../MenuUiContentModerationTest.php | 3 + .../tests/src/Functional/MenuUiNodeTest.php | 57 +++++++++++++++++++ 7 files changed, 79 insertions(+), 5 deletions(-) diff --git a/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php b/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php index 5af6de2041a5..70a5b2a33c2f 100644 --- a/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php +++ b/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php @@ -100,7 +100,6 @@ public function testLayoutModeration() { 'title' => 'bar', 'menu_name' => 'main', 'description' => 'view bar', - 'link_enabled' => TRUE, 'parent' => '', ]); diff --git a/core/modules/menu_ui/config/schema/menu_ui.schema.yml b/core/modules/menu_ui/config/schema/menu_ui.schema.yml index 69af435fa1cf..8eec8d13d926 100644 --- a/core/modules/menu_ui/config/schema/menu_ui.schema.yml +++ b/core/modules/menu_ui/config/schema/menu_ui.schema.yml @@ -21,3 +21,6 @@ node.type.*.third_party.menu_ui: parent: type: string label: 'Parent' + link_enabled: + type: boolean + label: 'Enable menu link' diff --git a/core/modules/menu_ui/menu_ui.admin.es6.js b/core/modules/menu_ui/menu_ui.admin.es6.js index 69b0d6843e3a..c46fdfd244e5 100644 --- a/core/modules/menu_ui/menu_ui.admin.es6.js +++ b/core/modules/menu_ui/menu_ui.admin.es6.js @@ -27,13 +27,19 @@ * Function to set the options of the menu parent item dropdown. */ Drupal.menuUiUpdateParentList = function () { - const $menu = $('#edit-menu'); + const $menu = $('#edit-menu-options'); + const $linkEnabled = $('#edit-link-enabled'); const values = []; $menu.find('input:checked').each(function () { // Get the names of all checked menus. values.push(Drupal.checkPlain($(this).val())); }); + // Uncheck and hide link enabled checkbox if no menus selected. + if (values.length === 0) { + $linkEnabled.prop('checked', false); + } + $linkEnabled.closest('div').attr('hidden', values.length === 0); $.ajax({ url: `${window.location.protocol}//${window.location.host}${Drupal.url( diff --git a/core/modules/menu_ui/menu_ui.admin.js b/core/modules/menu_ui/menu_ui.admin.js index 62442f0b2e43..325ceb3f13f0 100644 --- a/core/modules/menu_ui/menu_ui.admin.js +++ b/core/modules/menu_ui/menu_ui.admin.js @@ -19,11 +19,17 @@ }; Drupal.menuUiUpdateParentList = function () { - var $menu = $('#edit-menu'); + const $menu = $('#edit-menu-options'); + const $linkEnabled = $('#edit-link-enabled'); var values = []; $menu.find('input:checked').each(function () { values.push(Drupal.checkPlain($(this).val())); }); + + // Uncheck and hide link enabled checkbox if no menus selected. + if (values.length === 0) { + $linkEnabled.prop('checked', false); + } $.ajax({ url: "".concat(window.location.protocol, "//").concat(window.location.host).concat(Drupal.url('admin/structure/menu/parents')), type: 'POST', @@ -44,4 +50,4 @@ } }); }; -})(jQuery, Drupal); \ No newline at end of file +})(jQuery, Drupal); diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module index 505162420036..8488275484a0 100644 --- a/core/modules/menu_ui/menu_ui.module +++ b/core/modules/menu_ui/menu_ui.module @@ -195,7 +195,7 @@ function menu_ui_get_menu_link_defaults(NodeInterface $node) { 'menu_name' => $menu_name, 'parent' => '', 'weight' => 0, - 'enabled' => $node_type->getThirdPartySetting('menu_ui', 'link', 0) + 'enabled' => $node_type->getThirdPartySetting('menu_ui', 'link_enabled', (int) !empty($menu_name)), ]; } return $defaults; diff --git a/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php index 2491150a6f5a..a1bff3de2a6e 100644 --- a/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php +++ b/core/modules/menu_ui/tests/src/Functional/MenuUiContentModerationTest.php @@ -85,6 +85,7 @@ public function testMenuUiWithPendingRevisions() { // Add a menu link and save a new default (published) revision. $edit = [ 'menu[enabled]' => 1, + 'menu[link_enabled]' => 1, 'menu[title]' => 'Test menu link', 'moderation_state[0][state]' => 'published', ]; @@ -120,6 +121,7 @@ public function testMenuUiWithPendingRevisions() { // Try to delete the menu link and save a new non-default (draft) revision. $edit = [ 'menu[enabled]' => 0, + 'menu[link_enabled]' => 0, 'moderation_state[0][state]' => 'draft', ]; $this->drupalGet('node/' . $node->id() . '/edit'); @@ -170,6 +172,7 @@ public function testMenuUiWithPendingRevisions() { // and ensure it's not immediately published. $edit = [ 'menu[enabled]' => 1, + 'menu[link_enabled]' => 1, 'menu[title]' => 'Second test menu link', 'moderation_state[0][state]' => 'draft', ]; diff --git a/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php index 01efbcf016fe..8e4e4bedcc7c 100644 --- a/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php +++ b/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php @@ -64,6 +64,35 @@ protected function setUp(): void { $this->drupalLogin($this->editor); } + /** + * Test correct configuring of default enabling link setting by content type. + */ + public function testContentTypeLinkEnableConfiguration() { + // Check that unconfigured content type defaults to enabled links. + $this->drupalGet('/node/add/page'); + $this->assertSession()->checkboxChecked('menu[link_enabled]'); + + // Configure menu links to be disabled. + $edit = [ + 'menu_options[main]' => 1, + 'menu_parent' => 'main:', + 'link_enabled' => FALSE, + ]; + $this->drupalGet('admin/structure/types/manage/page'); + $this->submitForm($edit, 'Save content type'); + $this->assertSession()->pageTextContains('The content type Basic page has been updated.'); + $this->drupalGet('/node/add/page'); + $this->assertSession()->checkboxNotChecked('menu[link_enabled]'); + + // Configure menu links to be enabled. + $edit['link_enabled'] = TRUE; + $this->drupalGet('admin/structure/types/manage/page'); + $this->submitForm($edit, 'Save content type'); + $this->assertSession()->pageTextContains('The content type Basic page has been updated.'); + $this->drupalGet('/node/add/page'); + $this->assertSession()->checkboxChecked('menu[link_enabled]'); + } + /** * Tests creating, editing, deleting menu links via node form widget. */ @@ -121,6 +150,7 @@ public function testMenuNodeFormWidget() { 'menu_options[main]' => 1, 'menu_options[tools]' => 1, 'menu_parent' => 'main:', + 'link_enabled' => TRUE, ]; $this->drupalGet('admin/structure/types/manage/page'); $this->submitForm($edit, 'Save content type'); @@ -131,6 +161,7 @@ public function testMenuNodeFormWidget() { 'title[0][value]' => $node_title, 'menu[enabled]' => 1, 'menu[title]' => 'Test preview', + 'menu[link_enabled]' => 1, ]; $this->drupalGet('node/add/page'); $this->submitForm($edit, 'Preview'); @@ -174,6 +205,7 @@ public function testMenuNodeFormWidget() { 'menu[enabled]' => 1, 'menu[title]' => $node_title, 'status[value]' => FALSE, + 'menu[link_enabled]' => 1, ]; $this->drupalGet('node/' . $node->id() . '/edit'); $this->submitForm($edit, 'Save'); @@ -186,13 +218,34 @@ public function testMenuNodeFormWidget() { $this->drupalGet('test-page'); $this->assertSession()->linkExists($node_title, 0, 'Found a menu link with the node published'); + // Assert that link is not enabled / does not exist in the rendered menu + // if link_enabled option is disabled. + $edit['menu[link_enabled]'] = 0; + $this->drupalGet('node/' . $node->id() . '/edit'); + $this->submitForm($edit, 'Save'); + $this->drupalGet('test-page'); + $this->assertSession()->linkNotExists($node_title, 'Found no menu link with the node menu link disabled'); + // If we go to main menu we shall see the disabled menu link. + $this->drupalGet('admin/structure/menu/manage/main'); + $this->assertSession()->checkboxNotChecked("Enable $node_title menu link"); + // Re-enable link via node form and check menu. + $edit['menu[link_enabled]'] = 1; + $this->drupalGet('node/' . $node->id() . '/edit'); + $this->submitForm($edit, 'Save'); + $this->drupalGet('test-page'); + // If we go to main menu we shall see the enabled menu link. + $this->drupalGet('admin/structure/menu/manage/main'); + $this->assertSession()->checkboxChecked("Enable $node_title menu link"); + // Log back in as normal user. $this->drupalLogin($this->editor); + // Edit the node and create a menu link. $edit = [ 'menu[enabled]' => 1, 'menu[title]' => $node_title, 'menu[weight]' => 17, + 'menu[link_enabled]' => 1, ]; $this->drupalGet('node/' . $node->id() . '/edit'); $this->submitForm($edit, 'Save'); @@ -216,6 +269,8 @@ public function testMenuNodeFormWidget() { $link->set('enabled', FALSE); $link->save(); $this->drupalGet($node->toUrl('edit-form')); + // Remove this submission value as it will re-enable menu link on save. + unset($edit['menu[link_enabled]']); $this->submitForm($edit, 'Save'); $link = MenuLinkContent::load($link_id); $this->assertFalse($link->isEnabled(), 'Saving a node with a disabled menu link keeps the menu link disabled.'); @@ -335,6 +390,7 @@ public function testMultilingualMenuNodeFormWidget() { 'menu[enabled]' => 1, 'menu[title]' => $node_title, 'menu[weight]' => 17, + 'menu[link_enabled]' => 1, ]; $options = ['language' => $languages[$langcodes[0]]]; $url = $node->toUrl('edit-form', $options); @@ -346,6 +402,7 @@ public function testMultilingualMenuNodeFormWidget() { 'menu[enabled]' => 1, 'menu[title]' => $translated_node_title, 'menu[weight]' => 17, + 'menu[link_enabled]' => 1, ]; $options = ['language' => $languages[$langcodes[1]]]; $url = $node->toUrl('edit-form', $options); -- GitLab From 49d71738fbf60092a12f498fd3df889b6939ac9d Mon Sep 17 00:00:00 2001 From: Stefanos Petrakis <stefanos.petrakis@gmail.com> Date: Wed, 24 Nov 2021 20:03:02 +0200 Subject: [PATCH 67/69] Fixing ES6 is not updated yarn run build:js -- --file modules/menu_ui/menu_ui.admin.es6.js --- core/modules/menu_ui/menu_ui.admin.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/modules/menu_ui/menu_ui.admin.js b/core/modules/menu_ui/menu_ui.admin.js index 325ceb3f13f0..650cafcb23d5 100644 --- a/core/modules/menu_ui/menu_ui.admin.js +++ b/core/modules/menu_ui/menu_ui.admin.js @@ -19,17 +19,18 @@ }; Drupal.menuUiUpdateParentList = function () { - const $menu = $('#edit-menu-options'); - const $linkEnabled = $('#edit-link-enabled'); + var $menu = $('#edit-menu-options'); + var $linkEnabled = $('#edit-link-enabled'); var values = []; $menu.find('input:checked').each(function () { values.push(Drupal.checkPlain($(this).val())); }); - // Uncheck and hide link enabled checkbox if no menus selected. if (values.length === 0) { $linkEnabled.prop('checked', false); } + + $linkEnabled.closest('div').attr('hidden', values.length === 0); $.ajax({ url: "".concat(window.location.protocol, "//").concat(window.location.host).concat(Drupal.url('admin/structure/menu/parents')), type: 'POST', @@ -50,4 +51,4 @@ } }); }; -})(jQuery, Drupal); +})(jQuery, Drupal); \ No newline at end of file -- GitLab From dcdd2a33ff69cc718dfe5bd572d07677dc9786bb Mon Sep 17 00:00:00 2001 From: Ravi Shankar <ravi.s@opensenselabs.com> Date: Thu, 24 Mar 2022 07:45:02 +0530 Subject: [PATCH 68/69] Removed leading '/' in the URL. --- core/modules/menu_ui/menu_ui.admin.es6.js | 2 +- core/modules/menu_ui/menu_ui.module | 2 +- .../modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/modules/menu_ui/menu_ui.admin.es6.js b/core/modules/menu_ui/menu_ui.admin.es6.js index c46fdfd244e5..bd037d9b5fdd 100644 --- a/core/modules/menu_ui/menu_ui.admin.es6.js +++ b/core/modules/menu_ui/menu_ui.admin.es6.js @@ -35,8 +35,8 @@ // Get the names of all checked menus. values.push(Drupal.checkPlain($(this).val())); }); - // Uncheck and hide link enabled checkbox if no menus selected. if (values.length === 0) { + // Uncheck and hide link enabled checkbox if no menus selected. $linkEnabled.prop('checked', false); } $linkEnabled.closest('div').attr('hidden', values.length === 0); diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module index 8488275484a0..eaf9a3d66345 100644 --- a/core/modules/menu_ui/menu_ui.module +++ b/core/modules/menu_ui/menu_ui.module @@ -301,7 +301,7 @@ function menu_ui_form_node_form_alter(&$form, FormStateInterface $form_state) { $form['menu']['link']['link_enabled'] = [ '#type' => 'checkbox', '#title' => t('Enabled'), - '#description' => t('A flag for whether the link should be enabled in menus or hidden.'), + '#description' => t('A flag for whether the link should be visible in menus or hidden.'), '#default_value' => $defaults['enabled'] ?? 1, ]; diff --git a/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php index 8e4e4bedcc7c..f3d2630487ee 100644 --- a/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php +++ b/core/modules/menu_ui/tests/src/Functional/MenuUiNodeTest.php @@ -69,7 +69,7 @@ protected function setUp(): void { */ public function testContentTypeLinkEnableConfiguration() { // Check that unconfigured content type defaults to enabled links. - $this->drupalGet('/node/add/page'); + $this->drupalGet('node/add/page'); $this->assertSession()->checkboxChecked('menu[link_enabled]'); // Configure menu links to be disabled. @@ -81,7 +81,7 @@ public function testContentTypeLinkEnableConfiguration() { $this->drupalGet('admin/structure/types/manage/page'); $this->submitForm($edit, 'Save content type'); $this->assertSession()->pageTextContains('The content type Basic page has been updated.'); - $this->drupalGet('/node/add/page'); + $this->drupalGet('node/add/page'); $this->assertSession()->checkboxNotChecked('menu[link_enabled]'); // Configure menu links to be enabled. @@ -89,7 +89,7 @@ public function testContentTypeLinkEnableConfiguration() { $this->drupalGet('admin/structure/types/manage/page'); $this->submitForm($edit, 'Save content type'); $this->assertSession()->pageTextContains('The content type Basic page has been updated.'); - $this->drupalGet('/node/add/page'); + $this->drupalGet('node/add/page'); $this->assertSession()->checkboxChecked('menu[link_enabled]'); } -- GitLab From 84af65f3fca355bb9233f2efc57ca0bf1884075d Mon Sep 17 00:00:00 2001 From: Stefanos Petrakis <stefanos.petrakis@gmail.com> Date: Fri, 21 Oct 2022 14:03:34 +0200 Subject: [PATCH 69/69] Adding changes from patch #48 --- .../Functional/LayoutBuilderContentModerationIntegrationTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php b/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php index 70a5b2a33c2f..5af6de2041a5 100644 --- a/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php +++ b/core/modules/content_moderation/tests/src/Functional/LayoutBuilderContentModerationIntegrationTest.php @@ -100,6 +100,7 @@ public function testLayoutModeration() { 'title' => 'bar', 'menu_name' => 'main', 'description' => 'view bar', + 'link_enabled' => TRUE, 'parent' => '', ]); -- GitLab